From e6dd74d298604aa1966fba39dfd114f9fd1db892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 29 Oct 2021 17:25:13 +0200 Subject: [PATCH 1/2] deps: update ICU to 70.1 Refs: https://github.com/unicode-org/icu/releases/tag/release-70-1 --- LICENSE | 32 +- deps/icu-small/LICENSE | 32 +- deps/icu-small/README-FULL-ICU.txt | 5 +- deps/icu-small/source/.clang-format | 4 +- deps/icu-small/source/common/BUILD | 1213 +++ deps/icu-small/source/common/brkeng.cpp | 47 +- deps/icu-small/source/common/brkeng.h | 12 +- deps/icu-small/source/common/brkiter.cpp | 12 +- .../source/common/bytestriebuilder.cpp | 6 +- deps/icu-small/source/common/caniter.cpp | 16 +- .../source/common/characterproperties.cpp | 28 + deps/icu-small/source/common/cmemory.cpp | 2 +- deps/icu-small/source/common/cmemory.h | 2 +- deps/icu-small/source/common/common.rc | 9 +- deps/icu-small/source/common/cstr.cpp | 2 +- deps/icu-small/source/common/cstr.h | 4 +- deps/icu-small/source/common/cstring.cpp | 20 +- deps/icu-small/source/common/cwchar.cpp | 3 +- deps/icu-small/source/common/cwchar.h | 8 +- deps/icu-small/source/common/dictbe.cpp | 126 +- deps/icu-small/source/common/dictbe.h | 30 +- .../source/common/dictionarydata.cpp | 10 +- deps/icu-small/source/common/dictionarydata.h | 12 +- deps/icu-small/source/common/dtintrv.cpp | 11 +- deps/icu-small/source/common/emojiprops.cpp | 220 + deps/icu-small/source/common/emojiprops.h | 90 + deps/icu-small/source/common/filteredbrk.cpp | 79 +- deps/icu-small/source/common/hash.h | 1 + deps/icu-small/source/common/icudataver.cpp | 4 +- deps/icu-small/source/common/icuplug.cpp | 108 +- deps/icu-small/source/common/icuplugimp.h | 10 +- .../source/common/loadednormalizer2impl.cpp | 2 +- .../icu-small/source/common/localebuilder.cpp | 16 +- .../icu-small/source/common/localematcher.cpp | 6 +- deps/icu-small/source/common/localsvc.h | 2 +- deps/icu-small/source/common/locavailable.cpp | 2 +- deps/icu-small/source/common/locbased.h | 2 +- deps/icu-small/source/common/locdispnames.cpp | 32 +- deps/icu-small/source/common/locdspnm.cpp | 68 +- deps/icu-small/source/common/locid.cpp | 106 +- deps/icu-small/source/common/loclikely.cpp | 48 +- deps/icu-small/source/common/locmap.cpp | 10 +- deps/icu-small/source/common/locmap.h | 3 +- deps/icu-small/source/common/locresdata.cpp | 14 +- deps/icu-small/source/common/locutil.cpp | 4 +- deps/icu-small/source/common/lsr.cpp | 2 +- deps/icu-small/source/common/lsr.h | 4 +- deps/icu-small/source/common/lstmbe.cpp | 855 ++ deps/icu-small/source/common/lstmbe.h | 87 + .../source/common/messagepattern.cpp | 10 +- deps/icu-small/source/common/msvcres.h | 6 +- deps/icu-small/source/common/norm2_nfc_data.h | 763 +- deps/icu-small/source/common/normalizer2.cpp | 4 +- .../source/common/normalizer2impl.cpp | 4 +- .../icu-small/source/common/normalizer2impl.h | 4 +- deps/icu-small/source/common/normlzr.cpp | 34 +- deps/icu-small/source/common/pluralmap.cpp | 3 +- deps/icu-small/source/common/pluralmap.h | 4 +- deps/icu-small/source/common/propname_data.h | 1935 ++--- deps/icu-small/source/common/punycode.cpp | 2 +- deps/icu-small/source/common/putil.cpp | 11 +- deps/icu-small/source/common/rbbi.cpp | 23 +- deps/icu-small/source/common/rbbi_cache.cpp | 10 +- deps/icu-small/source/common/rbbi_cache.h | 4 +- deps/icu-small/source/common/rbbicst.pl | 31 +- deps/icu-small/source/common/rbbidata.cpp | 14 +- deps/icu-small/source/common/rbbidata.h | 8 +- deps/icu-small/source/common/rbbinode.cpp | 7 +- deps/icu-small/source/common/rbbinode.h | 15 +- deps/icu-small/source/common/rbbirb.cpp | 2 +- deps/icu-small/source/common/rbbirb.h | 13 +- deps/icu-small/source/common/rbbirpt.h | 160 +- deps/icu-small/source/common/rbbiscan.cpp | 16 +- deps/icu-small/source/common/rbbiscan.h | 4 +- deps/icu-small/source/common/rbbisetb.cpp | 2 +- deps/icu-small/source/common/rbbistbl.cpp | 4 +- deps/icu-small/source/common/rbbitblb.cpp | 51 +- deps/icu-small/source/common/rbbitblb.h | 4 +- deps/icu-small/source/common/resbund.cpp | 4 +- deps/icu-small/source/common/resbund_cnv.cpp | 2 +- deps/icu-small/source/common/ruleiter.h | 12 +- deps/icu-small/source/common/schriter.cpp | 6 +- deps/icu-small/source/common/serv.cpp | 317 +- deps/icu-small/source/common/serv.h | 77 +- deps/icu-small/source/common/servlk.cpp | 2 + deps/icu-small/source/common/servlkf.cpp | 8 +- deps/icu-small/source/common/servloc.h | 91 +- deps/icu-small/source/common/servls.cpp | 18 +- deps/icu-small/source/common/servnotf.cpp | 19 +- deps/icu-small/source/common/servnotf.h | 30 +- deps/icu-small/source/common/servrbf.cpp | 2 + deps/icu-small/source/common/servslkf.cpp | 2 + deps/icu-small/source/common/sharedobject.h | 10 +- deps/icu-small/source/common/sprpimpl.h | 18 +- .../source/common/static_unicode_sets.h | 4 +- .../source/common/stringtriebuilder.cpp | 48 +- deps/icu-small/source/common/uassert.h | 28 +- deps/icu-small/source/common/ubidi.cpp | 6 +- .../source/common/ubidi_props_data.h | 1391 ++-- deps/icu-small/source/common/ubidiln.cpp | 4 +- .../source/common/ubiditransform.cpp | 26 +- deps/icu-small/source/common/ucase.cpp | 6 +- .../source/common/ucase_props_data.h | 1176 +-- deps/icu-small/source/common/uchar.cpp | 2 +- .../source/common/uchar_props_data.h | 7112 +++++++++-------- .../source/common/ucharstriebuilder.cpp | 6 +- deps/icu-small/source/common/uchriter.cpp | 6 +- deps/icu-small/source/common/ucln_cmn.cpp | 2 +- deps/icu-small/source/common/ucln_cmn.h | 1 + deps/icu-small/source/common/ucln_imp.h | 6 +- deps/icu-small/source/common/ucmndata.cpp | 2 +- deps/icu-small/source/common/ucmndata.h | 8 +- deps/icu-small/source/common/ucnv.cpp | 36 +- deps/icu-small/source/common/ucnv2022.cpp | 16 +- deps/icu-small/source/common/ucnv_cnv.h | 10 +- deps/icu-small/source/common/ucnv_err.cpp | 18 +- deps/icu-small/source/common/ucnv_ext.h | 2 +- deps/icu-small/source/common/ucnv_imp.h | 2 +- deps/icu-small/source/common/ucnv_io.cpp | 2 +- deps/icu-small/source/common/ucnv_lmb.cpp | 342 +- deps/icu-small/source/common/ucnv_u16.cpp | 10 +- deps/icu-small/source/common/ucnv_u32.cpp | 18 +- deps/icu-small/source/common/ucnv_u7.cpp | 2 +- deps/icu-small/source/common/ucnv_u8.cpp | 8 +- deps/icu-small/source/common/ucnvhz.cpp | 58 +- deps/icu-small/source/common/ucnvisci.cpp | 40 +- deps/icu-small/source/common/ucnvlat1.cpp | 2 +- deps/icu-small/source/common/ucnvmbcs.cpp | 8 +- deps/icu-small/source/common/ucnvmbcs.h | 10 +- deps/icu-small/source/common/ucnvscsu.cpp | 10 +- deps/icu-small/source/common/ucnvsel.cpp | 8 +- deps/icu-small/source/common/ucol_swp.cpp | 10 +- deps/icu-small/source/common/ucptrie_impl.h | 2 +- deps/icu-small/source/common/ucurr.cpp | 123 +- deps/icu-small/source/common/udata.cpp | 48 +- deps/icu-small/source/common/uelement.h | 11 +- deps/icu-small/source/common/uenum.cpp | 2 +- deps/icu-small/source/common/uenumimp.h | 26 +- deps/icu-small/source/common/uhash.cpp | 4 +- deps/icu-small/source/common/uhash.h | 10 +- deps/icu-small/source/common/uidna.cpp | 152 +- deps/icu-small/source/common/uinvchar.cpp | 5 +- deps/icu-small/source/common/ulist.cpp | 42 +- deps/icu-small/source/common/uloc.cpp | 71 +- deps/icu-small/source/common/uloc_keytype.cpp | 13 +- deps/icu-small/source/common/uloc_tag.cpp | 18 +- deps/icu-small/source/common/ulocimp.h | 76 +- deps/icu-small/source/common/umapfile.cpp | 34 +- deps/icu-small/source/common/umapfile.h | 2 +- deps/icu-small/source/common/umath.cpp | 1 + deps/icu-small/source/common/umutex.h | 2 +- deps/icu-small/source/common/unames.cpp | 10 +- .../source/common/unicode/appendable.h | 10 +- .../icu-small/source/common/unicode/brkiter.h | 8 +- .../source/common/unicode/bytestream.h | 12 +- .../source/common/unicode/bytestriebuilder.h | 40 +- .../icu-small/source/common/unicode/caniter.h | 6 +- .../source/common/unicode/chariter.h | 96 +- deps/icu-small/source/common/unicode/dbbi.h | 2 +- .../icu-small/source/common/unicode/docmain.h | 10 +- .../icu-small/source/common/unicode/dtintrv.h | 38 +- .../icu-small/source/common/unicode/enumset.h | 6 +- .../source/common/unicode/errorcode.h | 2 +- .../source/common/unicode/icudataver.h | 4 +- .../icu-small/source/common/unicode/icuplug.h | 69 +- .../source/common/unicode/localebuilder.h | 6 +- .../source/common/unicode/localematcher.h | 12 +- .../source/common/unicode/localpointer.h | 2 +- deps/icu-small/source/common/unicode/locid.h | 14 +- .../source/common/unicode/messagepattern.h | 8 +- .../icu-small/source/common/unicode/normlzr.h | 12 +- .../source/common/unicode/parseerr.h | 8 +- .../source/common/unicode/parsepos.h | 14 +- .../source/common/unicode/platform.h | 14 +- deps/icu-small/source/common/unicode/putil.h | 12 +- deps/icu-small/source/common/unicode/rbbi.h | 46 +- deps/icu-small/source/common/unicode/rep.h | 14 +- .../icu-small/source/common/unicode/resbund.h | 24 +- .../source/common/unicode/schriter.h | 12 +- .../icu-small/source/common/unicode/strenum.h | 26 +- .../source/common/unicode/stringpiece.h | 8 +- .../source/common/unicode/stringtriebuilder.h | 52 +- .../source/common/unicode/symtable.h | 4 +- deps/icu-small/source/common/unicode/ubidi.h | 21 +- deps/icu-small/source/common/unicode/ubrk.h | 2 +- deps/icu-small/source/common/unicode/ucat.h | 10 +- deps/icu-small/source/common/unicode/uchar.h | 132 +- .../source/common/unicode/ucharstriebuilder.h | 38 +- .../source/common/unicode/uchriter.h | 56 +- deps/icu-small/source/common/unicode/uclean.h | 36 +- deps/icu-small/source/common/unicode/ucnv.h | 11 +- .../icu-small/source/common/unicode/ucnv_cb.h | 54 +- .../source/common/unicode/ucnv_err.h | 62 +- .../icu-small/source/common/unicode/ucnvsel.h | 2 +- .../icu-small/source/common/unicode/uconfig.h | 8 +- .../icu-small/source/common/unicode/ucptrie.h | 2 +- deps/icu-small/source/common/unicode/ucurr.h | 136 +- deps/icu-small/source/common/unicode/udata.h | 32 +- deps/icu-small/source/common/unicode/uenum.h | 8 +- deps/icu-small/source/common/unicode/uidna.h | 66 +- deps/icu-small/source/common/unicode/uiter.h | 2 +- .../source/common/unicode/uldnames.h | 24 +- deps/icu-small/source/common/unicode/uloc.h | 132 +- .../source/common/unicode/umachine.h | 4 +- deps/icu-small/source/common/unicode/umisc.h | 14 +- .../source/common/unicode/umutablecptrie.h | 2 +- .../icu-small/source/common/unicode/unifilt.h | 10 +- .../source/common/unicode/unifunct.h | 8 +- .../source/common/unicode/unimatch.h | 8 +- deps/icu-small/source/common/unicode/uniset.h | 79 +- deps/icu-small/source/common/unicode/unistr.h | 30 +- deps/icu-small/source/common/unicode/unorm.h | 2 +- .../icu-small/source/common/unicode/uobject.h | 26 +- .../icu-small/source/common/unicode/urename.h | 9 + deps/icu-small/source/common/unicode/urep.h | 6 +- deps/icu-small/source/common/unicode/ures.h | 4 +- .../icu-small/source/common/unicode/uscript.h | 13 +- deps/icu-small/source/common/unicode/uset.h | 102 +- .../source/common/unicode/usetiter.h | 68 +- deps/icu-small/source/common/unicode/ushape.h | 76 +- deps/icu-small/source/common/unicode/usprep.h | 26 +- .../icu-small/source/common/unicode/ustring.h | 152 +- deps/icu-small/source/common/unicode/utext.h | 90 +- deps/icu-small/source/common/unicode/utf.h | 4 +- deps/icu-small/source/common/unicode/utf16.h | 4 +- deps/icu-small/source/common/unicode/utf8.h | 4 +- deps/icu-small/source/common/unicode/utrace.h | 20 +- deps/icu-small/source/common/unicode/utypes.h | 24 +- .../icu-small/source/common/unicode/uvernum.h | 10 +- .../source/common/unicode/uversion.h | 2 +- deps/icu-small/source/common/unifiedcache.h | 130 +- deps/icu-small/source/common/uniset.cpp | 125 +- deps/icu-small/source/common/uniset_props.cpp | 12 +- deps/icu-small/source/common/unistr.cpp | 20 +- deps/icu-small/source/common/unistr_props.cpp | 2 +- deps/icu-small/source/common/unistrappender.h | 4 +- deps/icu-small/source/common/unorm.cpp | 8 +- deps/icu-small/source/common/unormimp.h | 2 +- deps/icu-small/source/common/uprops.cpp | 45 +- deps/icu-small/source/common/uprops.h | 16 +- deps/icu-small/source/common/ures_cnv.cpp | 4 +- deps/icu-small/source/common/uresbund.cpp | 1078 +-- deps/icu-small/source/common/uresdata.cpp | 4 +- deps/icu-small/source/common/uresdata.h | 47 +- deps/icu-small/source/common/uresimp.h | 123 +- deps/icu-small/source/common/usc_impl.cpp | 12 +- deps/icu-small/source/common/usc_impl.h | 2 +- .../icu-small/source/common/uscript_props.cpp | 5 + deps/icu-small/source/common/uset.cpp | 47 +- deps/icu-small/source/common/uset_imp.h | 1 + deps/icu-small/source/common/uset_props.cpp | 8 +- deps/icu-small/source/common/usetiter.cpp | 2 +- deps/icu-small/source/common/ushape.cpp | 4 +- deps/icu-small/source/common/usprep.cpp | 122 +- deps/icu-small/source/common/ustack.cpp | 5 +- deps/icu-small/source/common/ustr_cnv.cpp | 8 +- deps/icu-small/source/common/ustr_cnv.h | 4 +- deps/icu-small/source/common/ustr_imp.h | 8 +- .../source/common/ustr_titlecase_brkiter.cpp | 8 +- deps/icu-small/source/common/ustr_wcs.cpp | 130 +- deps/icu-small/source/common/ustrcase.cpp | 2 +- deps/icu-small/source/common/ustrenum.cpp | 10 +- deps/icu-small/source/common/ustrenum.h | 11 +- deps/icu-small/source/common/ustring.cpp | 92 +- deps/icu-small/source/common/ustrtrns.cpp | 36 +- deps/icu-small/source/common/utext.cpp | 14 +- deps/icu-small/source/common/util.cpp | 68 +- deps/icu-small/source/common/util.h | 24 +- deps/icu-small/source/common/util_props.cpp | 3 +- deps/icu-small/source/common/utrace.cpp | 45 +- deps/icu-small/source/common/utracimp.h | 12 +- deps/icu-small/source/common/uts46.cpp | 16 +- deps/icu-small/source/common/uvector.cpp | 243 +- deps/icu-small/source/common/uvector.h | 239 +- deps/icu-small/source/common/uvectr32.cpp | 15 +- deps/icu-small/source/common/uvectr32.h | 16 +- deps/icu-small/source/common/uvectr64.cpp | 15 +- deps/icu-small/source/common/uvectr64.h | 16 +- deps/icu-small/source/common/wintz.cpp | 32 +- deps/icu-small/source/common/wintz.h | 2 +- .../in/{icudt69l.dat.bz2 => icudt70l.dat.bz2} | Bin 10169293 -> 10455040 bytes deps/icu-small/source/i18n/BUILD | 130 + deps/icu-small/source/i18n/alphaindex.cpp | 31 +- deps/icu-small/source/i18n/anytrans.h | 6 +- deps/icu-small/source/i18n/astro.cpp | 32 +- deps/icu-small/source/i18n/astro.h | 4 +- deps/icu-small/source/i18n/basictz.cpp | 156 +- deps/icu-small/source/i18n/brktrans.cpp | 2 +- deps/icu-small/source/i18n/brktrans.h | 8 +- deps/icu-small/source/i18n/buddhcal.cpp | 4 +- deps/icu-small/source/i18n/buddhcal.h | 23 +- deps/icu-small/source/i18n/calendar.cpp | 30 +- deps/icu-small/source/i18n/casetrn.cpp | 4 +- deps/icu-small/source/i18n/casetrn.h | 6 +- deps/icu-small/source/i18n/cecal.cpp | 2 +- deps/icu-small/source/i18n/cecal.h | 8 +- deps/icu-small/source/i18n/chnsecal.cpp | 45 +- deps/icu-small/source/i18n/chnsecal.h | 50 +- deps/icu-small/source/i18n/choicfmt.cpp | 58 +- deps/icu-small/source/i18n/coleitr.cpp | 34 +- deps/icu-small/source/i18n/coll.cpp | 96 +- deps/icu-small/source/i18n/collation.h | 2 +- .../source/i18n/collationbuilder.cpp | 8 +- deps/icu-small/source/i18n/collationbuilder.h | 8 +- .../source/i18n/collationdatabuilder.cpp | 22 +- deps/icu-small/source/i18n/collationfcd.cpp | 106 +- .../source/i18n/collationiterator.cpp | 8 +- .../icu-small/source/i18n/collationiterator.h | 4 +- deps/icu-small/source/i18n/collationkeys.h | 4 +- .../source/i18n/collationsettings.cpp | 12 +- .../icu-small/source/i18n/collationsettings.h | 4 +- .../source/i18n/collationweights.cpp | 2 +- deps/icu-small/source/i18n/collationweights.h | 2 +- deps/icu-small/source/i18n/collunsafe.h | 2 +- deps/icu-small/source/i18n/coptccal.cpp | 4 +- deps/icu-small/source/i18n/coptccal.h | 76 +- deps/icu-small/source/i18n/cpdtrans.cpp | 22 +- deps/icu-small/source/i18n/cpdtrans.h | 14 +- deps/icu-small/source/i18n/csdetect.cpp | 6 +- deps/icu-small/source/i18n/csmatch.cpp | 6 +- deps/icu-small/source/i18n/csmatch.h | 8 +- deps/icu-small/source/i18n/csr2022.cpp | 22 +- deps/icu-small/source/i18n/csr2022.h | 24 +- deps/icu-small/source/i18n/csrecog.cpp | 2 +- deps/icu-small/source/i18n/csrecog.h | 4 +- deps/icu-small/source/i18n/csrmbcs.cpp | 16 +- deps/icu-small/source/i18n/csrmbcs.h | 50 +- deps/icu-small/source/i18n/csrsbcs.cpp | 847 +- deps/icu-small/source/i18n/csrsbcs.h | 118 +- deps/icu-small/source/i18n/csrucode.cpp | 9 +- deps/icu-small/source/i18n/csrucode.h | 28 +- deps/icu-small/source/i18n/csrutf8.cpp | 2 +- deps/icu-small/source/i18n/csrutf8.h | 10 +- deps/icu-small/source/i18n/curramt.cpp | 2 +- deps/icu-small/source/i18n/currfmt.h | 8 +- deps/icu-small/source/i18n/currpinf.cpp | 26 +- deps/icu-small/source/i18n/currunit.cpp | 2 +- deps/icu-small/source/i18n/dangical.cpp | 100 +- deps/icu-small/source/i18n/dangical.h | 17 +- deps/icu-small/source/i18n/datefmt.cpp | 42 +- deps/icu-small/source/i18n/dayperiodrules.cpp | 4 +- deps/icu-small/source/i18n/dcfmtsym.cpp | 38 +- deps/icu-small/source/i18n/decContext.cpp | 1 + deps/icu-small/source/i18n/decContext.h | 2 +- deps/icu-small/source/i18n/decNumber.cpp | 10 +- deps/icu-small/source/i18n/decNumber.h | 2 +- deps/icu-small/source/i18n/decimfmt.cpp | 97 +- .../i18n/double-conversion-bignum-dtoa.cpp | 2 +- .../i18n/double-conversion-double-to-string.h | 6 +- .../i18n/double-conversion-fast-dtoa.cpp | 4 +- .../double-conversion-string-to-double.cpp | 36 + .../i18n/double-conversion-string-to-double.h | 14 +- .../source/i18n/double-conversion-strtod.cpp | 2 +- .../source/i18n/double-conversion-utils.h | 3 +- deps/icu-small/source/i18n/dtfmtsym.cpp | 64 +- deps/icu-small/source/i18n/dtitv_impl.h | 4 +- deps/icu-small/source/i18n/dtitvfmt.cpp | 60 +- deps/icu-small/source/i18n/dtitvinf.cpp | 26 +- deps/icu-small/source/i18n/dtptngen.cpp | 108 +- deps/icu-small/source/i18n/dtptngen_impl.h | 24 +- deps/icu-small/source/i18n/dtrule.cpp | 4 +- deps/icu-small/source/i18n/erarules.cpp | 2 + deps/icu-small/source/i18n/esctrn.h | 6 +- deps/icu-small/source/i18n/ethpccal.cpp | 4 +- deps/icu-small/source/i18n/ethpccal.h | 70 +- deps/icu-small/source/i18n/fmtable.cpp | 64 +- deps/icu-small/source/i18n/fmtableimp.h | 2 +- deps/icu-small/source/i18n/format.cpp | 4 +- .../source/i18n/formatted_string_builder.cpp | 2 +- .../icu-small/source/i18n/formattedval_impl.h | 3 +- .../source/i18n/formattedval_sbimpl.cpp | 21 +- deps/icu-small/source/i18n/formattedvalue.cpp | 4 +- deps/icu-small/source/i18n/fpositer.cpp | 9 +- deps/icu-small/source/i18n/funcrepl.cpp | 2 +- deps/icu-small/source/i18n/funcrepl.h | 14 +- deps/icu-small/source/i18n/gender.cpp | 2 +- deps/icu-small/source/i18n/gregocal.cpp | 92 +- deps/icu-small/source/i18n/gregoimp.cpp | 4 +- deps/icu-small/source/i18n/gregoimp.h | 10 +- deps/icu-small/source/i18n/hebrwcal.cpp | 15 +- deps/icu-small/source/i18n/hebrwcal.h | 103 +- deps/icu-small/source/i18n/i18n.rc | 9 +- deps/icu-small/source/i18n/indiancal.cpp | 25 +- deps/icu-small/source/i18n/indiancal.h | 67 +- deps/icu-small/source/i18n/inputext.cpp | 9 +- deps/icu-small/source/i18n/inputext.h | 8 +- deps/icu-small/source/i18n/islamcal.cpp | 29 +- deps/icu-small/source/i18n/islamcal.h | 105 +- deps/icu-small/source/i18n/japancal.cpp | 6 +- deps/icu-small/source/i18n/japancal.h | 39 +- deps/icu-small/source/i18n/listformatter.cpp | 2 +- deps/icu-small/source/i18n/measfmt.cpp | 16 +- deps/icu-small/source/i18n/measunit.cpp | 108 +- deps/icu-small/source/i18n/measunit_extra.cpp | 112 +- deps/icu-small/source/i18n/measunit_impl.h | 70 +- deps/icu-small/source/i18n/measure.cpp | 6 +- deps/icu-small/source/i18n/msgfmt.cpp | 26 +- deps/icu-small/source/i18n/msgfmt_impl.h | 10 +- deps/icu-small/source/i18n/name2uni.cpp | 6 +- deps/icu-small/source/i18n/name2uni.h | 6 +- deps/icu-small/source/i18n/nfrlist.h | 14 +- deps/icu-small/source/i18n/nfrs.cpp | 24 +- deps/icu-small/source/i18n/nfrs.h | 6 +- deps/icu-small/source/i18n/nfrule.cpp | 18 +- deps/icu-small/source/i18n/nfrule.h | 25 +- deps/icu-small/source/i18n/nfsubs.cpp | 167 +- deps/icu-small/source/i18n/nfsubs.h | 58 +- deps/icu-small/source/i18n/nortrans.h | 6 +- deps/icu-small/source/i18n/nultrans.h | 6 +- .../source/i18n/number_affixutils.cpp | 13 +- .../icu-small/source/i18n/number_asformat.cpp | 2 +- deps/icu-small/source/i18n/number_asformat.h | 2 +- deps/icu-small/source/i18n/number_capi.cpp | 36 +- deps/icu-small/source/i18n/number_compact.cpp | 2 +- .../source/i18n/number_currencysymbols.cpp | 4 +- .../source/i18n/number_decimalquantity.cpp | 19 +- .../source/i18n/number_decimalquantity.h | 15 +- .../source/i18n/number_decimfmtprops.cpp | 4 +- .../source/i18n/number_decimfmtprops.h | 1 + deps/icu-small/source/i18n/number_decnum.h | 7 + deps/icu-small/source/i18n/number_fluent.cpp | 4 + .../source/i18n/number_formatimpl.cpp | 40 +- .../icu-small/source/i18n/number_formatimpl.h | 12 +- .../icu-small/source/i18n/number_grouping.cpp | 2 +- .../source/i18n/number_longnames.cpp | 68 +- deps/icu-small/source/i18n/number_longnames.h | 4 +- deps/icu-small/source/i18n/number_mapper.cpp | 13 +- deps/icu-small/source/i18n/number_mapper.h | 5 + .../icu-small/source/i18n/number_microprops.h | 4 + .../source/i18n/number_modifiers.cpp | 6 +- deps/icu-small/source/i18n/number_modifiers.h | 2 +- .../source/i18n/number_patternmodifier.cpp | 58 +- .../source/i18n/number_patternmodifier.h | 10 +- .../source/i18n/number_patternstring.cpp | 93 +- .../source/i18n/number_patternstring.h | 13 +- .../icu-small/source/i18n/number_rounding.cpp | 11 +- .../source/i18n/number_scientific.cpp | 4 +- .../icu-small/source/i18n/number_scientific.h | 2 +- .../source/i18n/number_skeletons.cpp | 51 +- deps/icu-small/source/i18n/number_skeletons.h | 3 +- deps/icu-small/source/i18n/number_types.h | 22 +- .../source/i18n/number_usageprefs.cpp | 2 +- deps/icu-small/source/i18n/number_utils.cpp | 20 +- deps/icu-small/source/i18n/numfmt.cpp | 24 +- .../source/i18n/numparse_affixes.cpp | 8 +- deps/icu-small/source/i18n/numparse_affixes.h | 2 +- .../source/i18n/numparse_currency.cpp | 2 +- .../source/i18n/numparse_decimal.cpp | 2 +- deps/icu-small/source/i18n/numparse_decimal.h | 2 +- deps/icu-small/source/i18n/numparse_impl.cpp | 2 +- deps/icu-small/source/i18n/numrange_capi.cpp | 8 +- deps/icu-small/source/i18n/numrange_impl.cpp | 51 +- deps/icu-small/source/i18n/numrange_impl.h | 2 +- deps/icu-small/source/i18n/numsys.cpp | 10 +- deps/icu-small/source/i18n/numsys_impl.h | 2 +- deps/icu-small/source/i18n/olsontz.cpp | 20 +- deps/icu-small/source/i18n/olsontz.h | 70 +- deps/icu-small/source/i18n/persncal.cpp | 17 +- deps/icu-small/source/i18n/persncal.h | 91 +- deps/icu-small/source/i18n/plurfmt.cpp | 8 +- deps/icu-small/source/i18n/plurrule.cpp | 56 +- deps/icu-small/source/i18n/plurrule_impl.h | 20 +- deps/icu-small/source/i18n/quant.cpp | 2 +- deps/icu-small/source/i18n/quant.h | 16 +- .../icu-small/source/i18n/quantityformatter.h | 6 +- deps/icu-small/source/i18n/rbnf.cpp | 182 +- deps/icu-small/source/i18n/rbt.cpp | 12 +- deps/icu-small/source/i18n/rbt.h | 14 +- deps/icu-small/source/i18n/rbt_data.cpp | 4 +- deps/icu-small/source/i18n/rbt_pars.cpp | 114 +- deps/icu-small/source/i18n/rbt_pars.h | 12 +- deps/icu-small/source/i18n/rbt_rule.cpp | 22 +- deps/icu-small/source/i18n/rbt_rule.h | 4 +- deps/icu-small/source/i18n/rbt_set.cpp | 20 +- deps/icu-small/source/i18n/rbt_set.h | 4 +- deps/icu-small/source/i18n/rbtz.cpp | 133 +- deps/icu-small/source/i18n/regexcmp.cpp | 181 +- deps/icu-small/source/i18n/regexcmp.h | 8 +- deps/icu-small/source/i18n/regexcst.h | 330 +- deps/icu-small/source/i18n/regexcst.pl | 9 +- deps/icu-small/source/i18n/regeximp.cpp | 5 +- deps/icu-small/source/i18n/regeximp.h | 13 +- deps/icu-small/source/i18n/regexst.cpp | 6 +- deps/icu-small/source/i18n/regexst.h | 3 +- deps/icu-small/source/i18n/region.cpp | 68 +- deps/icu-small/source/i18n/region_impl.h | 10 +- deps/icu-small/source/i18n/reldatefmt.cpp | 6 +- deps/icu-small/source/i18n/reldtfmt.cpp | 22 +- deps/icu-small/source/i18n/reldtfmt.h | 18 +- deps/icu-small/source/i18n/rematch.cpp | 57 +- deps/icu-small/source/i18n/remtrans.h | 6 +- deps/icu-small/source/i18n/repattrn.cpp | 14 +- .../source/i18n/rulebasedcollator.cpp | 40 +- deps/icu-small/source/i18n/scriptset.cpp | 6 +- deps/icu-small/source/i18n/scriptset.h | 4 +- deps/icu-small/source/i18n/search.cpp | 66 +- deps/icu-small/source/i18n/selfmt.cpp | 8 +- deps/icu-small/source/i18n/selfmtimpl.h | 4 +- deps/icu-small/source/i18n/simpletz.cpp | 68 +- deps/icu-small/source/i18n/smpdtfmt.cpp | 82 +- deps/icu-small/source/i18n/smpdtfst.cpp | 6 +- deps/icu-small/source/i18n/smpdtfst.h | 6 +- deps/icu-small/source/i18n/sortkey.cpp | 4 +- deps/icu-small/source/i18n/strmatch.cpp | 12 +- deps/icu-small/source/i18n/strmatch.h | 28 +- deps/icu-small/source/i18n/strrepl.cpp | 2 +- deps/icu-small/source/i18n/strrepl.h | 14 +- deps/icu-small/source/i18n/stsearch.cpp | 44 +- deps/icu-small/source/i18n/taiwncal.cpp | 4 +- deps/icu-small/source/i18n/taiwncal.h | 21 +- deps/icu-small/source/i18n/timezone.cpp | 57 +- deps/icu-small/source/i18n/titletrn.cpp | 4 +- deps/icu-small/source/i18n/titletrn.h | 6 +- deps/icu-small/source/i18n/tmunit.cpp | 30 +- deps/icu-small/source/i18n/tmutamt.cpp | 18 +- deps/icu-small/source/i18n/tmutfmt.cpp | 4 +- deps/icu-small/source/i18n/tolowtrn.cpp | 2 +- deps/icu-small/source/i18n/tolowtrn.h | 4 +- deps/icu-small/source/i18n/toupptrn.h | 4 +- deps/icu-small/source/i18n/translit.cpp | 50 +- deps/icu-small/source/i18n/transreg.cpp | 51 +- deps/icu-small/source/i18n/transreg.h | 18 +- deps/icu-small/source/i18n/tridpars.cpp | 55 +- deps/icu-small/source/i18n/tridpars.h | 4 +- deps/icu-small/source/i18n/tzfmt.cpp | 56 +- deps/icu-small/source/i18n/tzgnames.cpp | 10 +- deps/icu-small/source/i18n/tzgnames.h | 8 +- deps/icu-small/source/i18n/tznames.cpp | 38 +- deps/icu-small/source/i18n/tznames_impl.cpp | 72 +- deps/icu-small/source/i18n/tznames_impl.h | 44 +- deps/icu-small/source/i18n/tzrule.cpp | 39 +- deps/icu-small/source/i18n/tztrans.cpp | 14 +- deps/icu-small/source/i18n/ucal.cpp | 18 +- deps/icu-small/source/i18n/ucln_in.cpp | 1 + deps/icu-small/source/i18n/ucol.cpp | 6 +- deps/icu-small/source/i18n/ucol_res.cpp | 2 +- deps/icu-small/source/i18n/ucol_sit.cpp | 8 +- deps/icu-small/source/i18n/ucoleitr.cpp | 28 +- deps/icu-small/source/i18n/udat.cpp | 68 +- .../source/i18n/uitercollationiterator.h | 33 +- deps/icu-small/source/i18n/ulocdata.cpp | 10 +- deps/icu-small/source/i18n/umsg.cpp | 60 +- deps/icu-small/source/i18n/unesctrn.cpp | 4 +- deps/icu-small/source/i18n/unesctrn.h | 6 +- deps/icu-small/source/i18n/uni2name.cpp | 2 +- deps/icu-small/source/i18n/uni2name.h | 6 +- .../source/i18n/unicode/alphaindex.h | 34 +- deps/icu-small/source/i18n/unicode/basictz.h | 13 +- deps/icu-small/source/i18n/unicode/calendar.h | 10 +- deps/icu-small/source/i18n/unicode/choicfmt.h | 16 +- deps/icu-small/source/i18n/unicode/coleitr.h | 64 +- deps/icu-small/source/i18n/unicode/coll.h | 8 +- deps/icu-small/source/i18n/unicode/curramt.h | 12 +- deps/icu-small/source/i18n/unicode/currpinf.h | 36 +- deps/icu-small/source/i18n/unicode/currunit.h | 8 +- deps/icu-small/source/i18n/unicode/datefmt.h | 52 +- deps/icu-small/source/i18n/unicode/dcfmtsym.h | 22 +- deps/icu-small/source/i18n/unicode/decimfmt.h | 12 +- deps/icu-small/source/i18n/unicode/dtfmtsym.h | 36 +- deps/icu-small/source/i18n/unicode/dtitvfmt.h | 24 +- deps/icu-small/source/i18n/unicode/dtitvinf.h | 15 +- deps/icu-small/source/i18n/unicode/dtptngen.h | 14 +- deps/icu-small/source/i18n/unicode/dtrule.h | 26 +- deps/icu-small/source/i18n/unicode/fieldpos.h | 34 +- deps/icu-small/source/i18n/unicode/fmtable.h | 14 +- deps/icu-small/source/i18n/unicode/format.h | 20 +- .../source/i18n/unicode/formattedvalue.h | 6 +- deps/icu-small/source/i18n/unicode/fpositer.h | 6 +- deps/icu-small/source/i18n/unicode/gender.h | 2 +- deps/icu-small/source/i18n/unicode/gregocal.h | 73 +- .../source/i18n/unicode/listformatter.h | 2 +- deps/icu-small/source/i18n/unicode/measfmt.h | 22 +- deps/icu-small/source/i18n/unicode/measunit.h | 124 +- deps/icu-small/source/i18n/unicode/measure.h | 10 +- deps/icu-small/source/i18n/unicode/msgfmt.h | 24 +- deps/icu-small/source/i18n/unicode/nounit.h | 11 +- .../source/i18n/unicode/numberformatter.h | 26 +- .../i18n/unicode/numberrangeformatter.h | 19 +- deps/icu-small/source/i18n/unicode/numfmt.h | 24 +- deps/icu-small/source/i18n/unicode/numsys.h | 6 +- deps/icu-small/source/i18n/unicode/plurfmt.h | 20 +- deps/icu-small/source/i18n/unicode/plurrule.h | 24 +- deps/icu-small/source/i18n/unicode/rbnf.h | 32 +- deps/icu-small/source/i18n/unicode/rbtz.h | 55 +- deps/icu-small/source/i18n/unicode/regex.h | 90 +- deps/icu-small/source/i18n/unicode/region.h | 50 +- .../source/i18n/unicode/reldatefmt.h | 4 +- .../i18n/unicode/scientificnumberformatter.h | 12 +- deps/icu-small/source/i18n/unicode/search.h | 269 +- deps/icu-small/source/i18n/unicode/selfmt.h | 12 +- deps/icu-small/source/i18n/unicode/simpletz.h | 50 +- deps/icu-small/source/i18n/unicode/smpdtfmt.h | 26 +- deps/icu-small/source/i18n/unicode/sortkey.h | 16 +- deps/icu-small/source/i18n/unicode/stsearch.h | 249 +- deps/icu-small/source/i18n/unicode/tblcoll.h | 60 +- deps/icu-small/source/i18n/unicode/timezone.h | 103 +- deps/icu-small/source/i18n/unicode/tmunit.h | 4 +- deps/icu-small/source/i18n/unicode/tmutamt.h | 38 +- deps/icu-small/source/i18n/unicode/tmutfmt.h | 20 +- deps/icu-small/source/i18n/unicode/translit.h | 18 +- deps/icu-small/source/i18n/unicode/tzfmt.h | 22 +- deps/icu-small/source/i18n/unicode/tznames.h | 4 +- deps/icu-small/source/i18n/unicode/tzrule.h | 68 +- deps/icu-small/source/i18n/unicode/tztrans.h | 10 +- deps/icu-small/source/i18n/unicode/ucal.h | 192 +- deps/icu-small/source/i18n/unicode/ucol.h | 358 +- deps/icu-small/source/i18n/unicode/ucoleitr.h | 78 +- deps/icu-small/source/i18n/unicode/ucsdet.h | 22 +- deps/icu-small/source/i18n/unicode/udat.h | 18 +- .../source/i18n/unicode/udateintervalformat.h | 9 +- deps/icu-small/source/i18n/unicode/udatpg.h | 42 +- .../source/i18n/unicode/uformattable.h | 6 +- .../source/i18n/unicode/uformattedvalue.h | 10 +- .../source/i18n/unicode/ulistformatter.h | 2 +- deps/icu-small/source/i18n/unicode/ulocdata.h | 10 +- deps/icu-small/source/i18n/unicode/umsg.h | 82 +- deps/icu-small/source/i18n/unicode/unirepl.h | 2 +- deps/icu-small/source/i18n/unicode/unum.h | 101 +- .../source/i18n/unicode/unumberformatter.h | 14 +- .../i18n/unicode/unumberrangeformatter.h | 38 +- deps/icu-small/source/i18n/unicode/unumsys.h | 2 +- .../source/i18n/unicode/upluralrules.h | 11 +- deps/icu-small/source/i18n/unicode/uregex.h | 204 +- deps/icu-small/source/i18n/unicode/uregion.h | 28 +- .../source/i18n/unicode/ureldatefmt.h | 4 +- deps/icu-small/source/i18n/unicode/usearch.h | 321 +- deps/icu-small/source/i18n/unicode/uspoof.h | 2 +- deps/icu-small/source/i18n/unicode/utmscale.h | 59 +- deps/icu-small/source/i18n/unicode/utrans.h | 52 +- deps/icu-small/source/i18n/unicode/vtzone.h | 38 +- .../source/i18n/units_complexconverter.cpp | 12 +- .../icu-small/source/i18n/units_converter.cpp | 12 +- deps/icu-small/source/i18n/units_converter.h | 4 +- deps/icu-small/source/i18n/units_data.cpp | 4 +- deps/icu-small/source/i18n/units_router.cpp | 6 +- deps/icu-small/source/i18n/units_router.h | 2 +- deps/icu-small/source/i18n/unum.cpp | 70 +- deps/icu-small/source/i18n/uregex.cpp | 7 +- deps/icu-small/source/i18n/uregexc.cpp | 2 +- deps/icu-small/source/i18n/usearch.cpp | 3007 +------ deps/icu-small/source/i18n/uspoof.cpp | 135 +- deps/icu-small/source/i18n/uspoof_build.cpp | 8 +- deps/icu-small/source/i18n/uspoof_conf.cpp | 9 +- deps/icu-small/source/i18n/uspoof_conf.h | 10 +- deps/icu-small/source/i18n/uspoof_impl.cpp | 18 +- deps/icu-small/source/i18n/uspoof_impl.h | 19 +- deps/icu-small/source/i18n/usrchimp.h | 56 +- .../source/i18n/utf16collationiterator.cpp | 12 +- .../source/i18n/utf16collationiterator.h | 38 +- .../source/i18n/utf8collationiterator.h | 36 +- deps/icu-small/source/i18n/utmscale.cpp | 14 +- deps/icu-small/source/i18n/utrans.cpp | 28 +- deps/icu-small/source/i18n/vtzone.cpp | 121 +- deps/icu-small/source/i18n/vzone.cpp | 6 +- deps/icu-small/source/i18n/vzone.h | 8 +- deps/icu-small/source/i18n/windtfmt.cpp | 5 +- deps/icu-small/source/i18n/windtfmt.h | 2 +- deps/icu-small/source/i18n/winnmfmt.cpp | 4 +- deps/icu-small/source/i18n/winnmfmt.h | 2 +- deps/icu-small/source/i18n/wintzimpl.cpp | 8 +- deps/icu-small/source/i18n/wintzimpl.h | 2 +- deps/icu-small/source/i18n/zonemeta.cpp | 8 +- deps/icu-small/source/i18n/zonemeta.h | 2 +- deps/icu-small/source/i18n/zrule.cpp | 10 +- deps/icu-small/source/i18n/zrule.h | 12 +- deps/icu-small/source/i18n/ztrans.cpp | 2 +- deps/icu-small/source/i18n/ztrans.h | 4 +- deps/icu-small/source/stubdata/BUILD | 23 + deps/icu-small/source/stubdata/stubdata.cpp | 8 +- deps/icu-small/source/tools/escapesrc/cptbl.h | 7 +- .../source/tools/escapesrc/escapesrc.cpp | 16 +- .../source/tools/escapesrc/tblgen.cpp | 8 +- deps/icu-small/source/tools/genrb/derb.cpp | 6 +- deps/icu-small/source/tools/genrb/genrb.cpp | 4 +- deps/icu-small/source/tools/genrb/parse.cpp | 2 +- deps/icu-small/source/tools/genrb/parse.h | 2 +- .../icu-small/source/tools/genrb/prscmnts.cpp | 47 +- deps/icu-small/source/tools/genrb/prscmnts.h | 7 +- deps/icu-small/source/tools/genrb/rbutil.c | 12 +- deps/icu-small/source/tools/genrb/read.c | 14 +- deps/icu-small/source/tools/genrb/reslist.cpp | 14 +- deps/icu-small/source/tools/genrb/reslist.h | 28 +- deps/icu-small/source/tools/genrb/rle.c | 1 + deps/icu-small/source/tools/genrb/rle.h | 2 +- deps/icu-small/source/tools/genrb/ustr.c | 8 +- deps/icu-small/source/tools/genrb/wrtjava.cpp | 4 +- deps/icu-small/source/tools/genrb/wrtxml.cpp | 8 +- .../tools/icuexportdata/icuexportdata.cpp | 295 + .../source/tools/pkgdata/pkgdata.cpp | 66 +- .../icu-small/source/tools/pkgdata/pkgtypes.h | 2 +- deps/icu-small/source/tools/toolutil/BUILD | 126 + .../source/tools/toolutil/dbgutil.cpp | 4 +- .../icu-small/source/tools/toolutil/dbgutil.h | 2 +- .../source/tools/toolutil/filestrm.cpp | 6 +- .../source/tools/toolutil/flagparser.cpp | 4 +- .../icu-small/source/tools/toolutil/package.h | 2 + .../source/tools/toolutil/pkg_genc.cpp | 2 +- .../source/tools/toolutil/pkgitems.cpp | 8 +- .../icu-small/source/tools/toolutil/ppucd.cpp | 11 +- deps/icu-small/source/tools/toolutil/ppucd.h | 7 +- .../source/tools/toolutil/swapimpl.cpp | 112 + .../source/tools/toolutil/toolutil.cpp | 52 +- .../source/tools/toolutil/toolutil.h | 23 +- .../icu-small/source/tools/toolutil/ucbuf.cpp | 42 +- deps/icu-small/source/tools/toolutil/ucbuf.h | 3 +- deps/icu-small/source/tools/toolutil/ucm.h | 1 + .../source/tools/toolutil/ucmstate.cpp | 3 +- .../source/tools/toolutil/unewdata.cpp | 9 +- .../source/tools/toolutil/uoptions.h | 4 +- .../source/tools/toolutil/uparse.cpp | 2 +- .../source/tools/toolutil/writesrc.cpp | 314 +- .../source/tools/toolutil/writesrc.h | 84 +- .../source/tools/toolutil/xmlparser.cpp | 35 +- .../source/tools/toolutil/xmlparser.h | 6 +- tools/icu/current_ver.dep | 4 +- 715 files changed, 21422 insertions(+), 18739 deletions(-) create mode 100644 deps/icu-small/source/common/BUILD create mode 100644 deps/icu-small/source/common/emojiprops.cpp create mode 100644 deps/icu-small/source/common/emojiprops.h create mode 100644 deps/icu-small/source/common/lstmbe.cpp create mode 100644 deps/icu-small/source/common/lstmbe.h rename deps/icu-small/source/data/in/{icudt69l.dat.bz2 => icudt70l.dat.bz2} (55%) create mode 100644 deps/icu-small/source/i18n/BUILD create mode 100644 deps/icu-small/source/stubdata/BUILD create mode 100644 deps/icu-small/source/tools/icuexportdata/icuexportdata.cpp create mode 100644 deps/icu-small/source/tools/toolutil/BUILD diff --git a/LICENSE b/LICENSE index bf864a4b480ad6..18b440eb54658f 100644 --- a/LICENSE +++ b/LICENSE @@ -392,31 +392,29 @@ The externally maintained libraries used by Node.js are: 3. Lao Word Break Dictionary Data (laodict.txt) - # Copyright (c) 2013 International Business Machines Corporation - # and others. All Rights Reserved. + # Copyright (C) 2016 and later: Unicode, Inc. and others. + # License & terms of use: http://www.unicode.org/copyright.html + # Copyright (c) 2015 International Business Machines Corporation + # and others. All Rights Reserved. # - # Project: https://github.com/veer66/lao-dictionary - # Dictionary: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary.txt - # License: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary-LICENSE.txt - # (copied below) + # Project: https://github.com/rober42539/lao-dictionary + # Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt + # License: https://github.com/rober42539/lao-dictionary/LICENSE.txt + # (copied below) # - # This file is derived from the above dictionary, with slight - # modifications. + # This file is derived from the above dictionary version of Nov 22, 2020 # ---------------------------------------------------------------------- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. # All rights reserved. # # Redistribution and use in source and binary forms, with or without - # modification, - # are permitted provided that the following conditions are met: - # - # - # Redistributions of source code must retain the above copyright notice, this - # list of conditions and the following disclaimer. Redistributions in - # binary form must reproduce the above copyright notice, this list of - # conditions and the following disclaimer in the documentation and/or - # other materials provided with the distribution. + # modification, are permitted provided that the following conditions are met: # + # Redistributions of source code must retain the above copyright notice, this + # list of conditions and the following disclaimer. Redistributions in binary + # form must reproduce the above copyright notice, this list of conditions and + # the following disclaimer in the documentation and/or other materials + # provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/deps/icu-small/LICENSE b/deps/icu-small/LICENSE index 5d664a083b986f..970ae074cbf555 100644 --- a/deps/icu-small/LICENSE +++ b/deps/icu-small/LICENSE @@ -281,31 +281,29 @@ property of their respective owners. 3. Lao Word Break Dictionary Data (laodict.txt) - # Copyright (c) 2013 International Business Machines Corporation - # and others. All Rights Reserved. + # Copyright (C) 2016 and later: Unicode, Inc. and others. + # License & terms of use: http://www.unicode.org/copyright.html + # Copyright (c) 2015 International Business Machines Corporation + # and others. All Rights Reserved. # - # Project: https://github.com/veer66/lao-dictionary - # Dictionary: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary.txt - # License: https://github.com/veer66/lao-dictionary/blob/master/Lao-Dictionary-LICENSE.txt - # (copied below) + # Project: https://github.com/rober42539/lao-dictionary + # Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt + # License: https://github.com/rober42539/lao-dictionary/LICENSE.txt + # (copied below) # - # This file is derived from the above dictionary, with slight - # modifications. + # This file is derived from the above dictionary version of Nov 22, 2020 # ---------------------------------------------------------------------- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. # All rights reserved. # # Redistribution and use in source and binary forms, with or without - # modification, - # are permitted provided that the following conditions are met: - # - # - # Redistributions of source code must retain the above copyright notice, this - # list of conditions and the following disclaimer. Redistributions in - # binary form must reproduce the above copyright notice, this list of - # conditions and the following disclaimer in the documentation and/or - # other materials provided with the distribution. + # modification, are permitted provided that the following conditions are met: # + # Redistributions of source code must retain the above copyright notice, this + # list of conditions and the following disclaimer. Redistributions in binary + # form must reproduce the above copyright notice, this list of conditions and + # the following disclaimer in the documentation and/or other materials + # provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT diff --git a/deps/icu-small/README-FULL-ICU.txt b/deps/icu-small/README-FULL-ICU.txt index 2af8c5faf34727..a6afcf4952945e 100644 --- a/deps/icu-small/README-FULL-ICU.txt +++ b/deps/icu-small/README-FULL-ICU.txt @@ -1,8 +1,9 @@ ICU sources - auto generated by shrink-icu-src.py This directory contains the ICU subset used by --with-intl=full-icu -It is a strict subset of ICU 69 source files with the following exception(s): -* deps/icu-small/source/data/in/icudt69l.dat.bz2 : compressed data file +It is a strict subset of ICU 70 source files with the following exception(s): +* deps/icu-small/source/data/in/icudt70l.dat.bz2 : compressed data file To rebuild this directory, see ../../tools/icu/README.md + diff --git a/deps/icu-small/source/.clang-format b/deps/icu-small/source/.clang-format index 06bd4885a10a21..83cbf646a43de1 100644 --- a/deps/icu-small/source/.clang-format +++ b/deps/icu-small/source/.clang-format @@ -6,6 +6,6 @@ Language: Cpp BasedOnStyle: LLVM IndentWidth: 4 ColumnLimit: 105 -AllowShortBlocksOnASingleLine: false -AllowShortIfStatementsOnASingleLine: true +AllowShortBlocksOnASingleLine: false +AllowShortIfStatementsOnASingleLine: true ... diff --git a/deps/icu-small/source/common/BUILD b/deps/icu-small/source/common/BUILD new file mode 100644 index 00000000000000..e385d3b243faeb --- /dev/null +++ b/deps/icu-small/source/common/BUILD @@ -0,0 +1,1213 @@ +# © 2021 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# This file defines Bazel targets for a subset of ICU4C "common" library header and source files. +# The configuration of dependencies among targets is strongly assisted by the +# file in depstest that maintains such information, at +# icu4c/source/test/depstest/dependencies.txt . + +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +package( + default_visibility = ["//visibility:public"], +) + +# When compiling code in the `common` dir, the constant +# `U_COMMON_IMPLEMENTATION` needs to be defined. See +# https://unicode-org.github.io/icu/userguide/howtouseicu#c-with-your-own-build-system . + +# If linker errors occur, then this may be a sign that the dependencies were +# not specified correctly. Use dependencies.txt in depstest for assistance. See +# https://stackoverflow.com/q/66111709/2077918 . + +cc_library( + name = "headers", + hdrs = glob([ + "unicode/*.h", # public + "*.h", # internal + ], + # Instead of using these checked-in files, our Bazel build process + # regenerates them and then uses the new versions. + # Same list of .h files as in icu4c/source/data/unidata/clean.sh. + exclude = ["norm2_nfc_data.h", "propname_data.h", "*_props_data.h"], + ), + # We need to add includes in order to preserve existing source files' + # include directives that use traditional paths, not paths relative to + # Bazel workspace: + # https://stackoverflow.com/a/65635893/2077918 + includes = ["."], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "platform", + srcs = [ + "cmemory.cpp", + "uobject.cpp", + "cstring.cpp", + "cwchar.cpp", + "uinvchar.cpp", + "charstr.cpp", + "unistr.cpp", + "appendable.cpp", + "stringpiece.cpp", + "ustrtrns.cpp", + "ustring.cpp", + "ustrfmt.cpp", + "utf_impl.cpp", + "putil.cpp", + "ucln_cmn.cpp", + "udataswp.cpp", + "umath.cpp", + "umutex.cpp", + "sharedobject.cpp", + "utrace.cpp", + ], + deps = [ + ":headers", + # omit other deps b/c they are sys symbols + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], + linkopts = ["-ldl"], +) + +cc_library( + name = "utrie", + srcs = ["utrie.cpp"], + deps = [":platform"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "utrie2", + srcs = ["utrie2.cpp"], + deps = [":platform"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "utrie2_builder", + srcs = ["utrie2_builder.cpp"], + deps = [ + ":utrie", + ":utrie2", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucptrie", + srcs = ["ucptrie.cpp"], + deps = [":platform"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "umutablecptrie", + srcs = ["umutablecptrie.cpp"], + deps = [":ucptrie"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "bytestrie", + srcs = ["bytestrie.cpp"], + deps = [":platform"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "bytestriebuilder", + srcs = ["bytestriebuilder.cpp"], + deps = [ + ":bytestrie", + ":stringtriebuilder", + ":sort", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "stringtriebuilder", + srcs = ["stringtriebuilder.cpp"], + deps = [ + ":uhash", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uhash", + hdrs = [ + "uhash.h", + ], + srcs = [ + "uhash.cpp", + ], + deps = [ + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "errorcode", + hdrs = [ + ], + srcs = [ + "errorcode.cpp", + ], + includes = ["."], + deps = [ + ":platform", + ":utypes", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "utypes", + srcs = [ + "utypes.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uniset", + srcs = [ + "uniset.cpp", + "unifilt.cpp", + "unisetspan.cpp", + "bmpset.cpp", + "util.cpp", + "unifunct.cpp", + "usetiter.cpp", + ], + includes = ["."], + deps = [ + ":patternprops", + ":uvector", + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "patternprops", + srcs = [ + "patternprops.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "propsvec", + srcs = [ + "propsvec.cpp", + ], + includes = ["."], + deps = [ + ":sort", + ":utrie2_builder", + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "propname", + srcs = [ + "propname.cpp", + "propname_data.h", + ], + includes = ["."], + deps = [ + ":bytestrie", + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +# Note: The cc_library target names "uvector32" and "uvector64" match the +# dependencies.txt group names, but the filenames are "uvectr32.*"/"uvectr64.*". +cc_library( + name = "uvector32", + srcs = [ + "uvectr32.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uvector64", + srcs = [ + "uvectr64.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "sort", + srcs = [ + "uarrsort.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uvector", + srcs = [ + "uvector.cpp", + ], + includes = ["."], + deps = [ + ":platform", + ":sort", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "breakiterator", + srcs = [ + "brkiter.cpp", + "brkeng.cpp", + "dictbe.cpp", + "dictionarydata.cpp", + "filteredbrk.cpp", + "lstmbe.cpp", + "rbbi.cpp", + "rbbi_cache.cpp", + "rbbidata.cpp", + "rbbinode.cpp", + "rbbirb.cpp", + "rbbiscan.cpp", + "rbbisetb.cpp", + "rbbistbl.cpp", + "rbbitblb.cpp", + "ubrk.cpp", + ], + includes = ["."], + deps = [ + ":bytestrie", + ":headers", + ":normlzr", + ":resourcebundle", + ":schriter", + ":service_registration", + ":ucharstrie", + ":ucharstriebuilder", + ":uhash", + ":uniset_core", + ":uniset_props", + ":ustack", + ":utext", + ":utrie2_builder", + ":uvector32", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "bytesinkutil", + srcs = [ + "bytesinkutil.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":bytestream", + ":edits", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "bytestream", + srcs = [ + "bytestream.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "canonical_iterator", + srcs = [ + "caniter.cpp", + ], + deps = [ + ":normalizer2", + ":usetiter", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "characterproperties", + srcs = [ + "characterproperties.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":emojiprops", + ":ucptrie", + ":umutablecptrie", + ":uniset_core", + ":uprops", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "chariter", + srcs = [ + "chariter.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "edits", + srcs = [ + "edits.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":icu_utility", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "filterednormalizer2", + srcs = [ + "filterednormalizer2.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":normalizer2", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "hashtable", + srcs = [ + "uhash_us.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":uhash", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "icu_utility", + srcs = [ + "util.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":patternprops", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "loadednormalizer2", + srcs = [ + "loadednormalizer2impl.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":normalizer2", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "locale_display_names", + srcs = [ + "locdispnames.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":locresdata", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "locresdata", + srcs = [ + "locresdata.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":resourcebundle", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "normlzr", + srcs = [ + "normlzr.cpp", + ], + includes = ["."], + deps = [ + ":filterednormalizer2", + ":headers", + ":schriter", + ":uniset_props", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "parsepos", + srcs = [ + "parsepos.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "resourcebundle", + srcs = [ + "localebuilder.cpp", + "locavailable.cpp", + "locbased.cpp", + "locid.cpp", + "loclikely.cpp", + "locmap.cpp", + "resbund.cpp", + "resource.cpp", + "uloc.cpp", + "uloc_tag.cpp", + "uloc_keytype.cpp", + "uresbund.cpp", + "uresdata.cpp", + "wintz.cpp", + ], + includes = ["."], + deps = [ + ":bytesinkutil", + ":errorcode", + ":headers", + ":propname", + ":sort", + ":stringenumeration", + ":ucol_swp", + ":udata", + ":uhash", + ":uscript_props", + ":uvector", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "schriter", + srcs = [ + "schriter.cpp", + "uchriter.cpp", + ], + includes = ["."], + deps = [ + ":chariter", + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "service_registration", + srcs = [ + "locutil.cpp", + "serv.cpp", + "servlk.cpp", + "servlkf.cpp", + "servls.cpp", + "servnotf.cpp", + "servrbf.cpp", + "servslkf.cpp", + ], + includes = ["."], + deps = [ + ":hashtable", + ":headers", + ":locale_display_names", + ":resourcebundle", + ":uvector", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "stringenumeration", + srcs = [ + "uenum.cpp", + "ustrenum.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ubidi_props", + srcs = [ + "ubidi_props.cpp", + "ubidi_props_data.h", + ], + includes = ["."], + deps = [ + ":headers", + ":utrie2", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucase", + srcs = [ + "ucase.cpp", + "ucase_props_data.h", + ], + includes = ["."], + deps = [ + ":headers", + ":utrie2", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uchar", + srcs = [ + "uchar.cpp", + "uchar_props_data.h", + ], + includes = ["."], + deps = [ + ":headers", + ":utrie2", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "emojiprops", + srcs = [ + "emojiprops.cpp", + "emojiprops.h", + ], + includes = ["."], + deps = [ + ":headers", + ":ucharstrie", + ":ucharstrieiterator", + ":ucptrie", + ":udata", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucharstrie", + srcs = [ + "ucharstrie.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucharstriebuilder", + srcs = [ + "ucharstriebuilder.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":sort", + ":stringtriebuilder", + ":ucharstrie", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucharstrieiterator", + srcs = [ + "ucharstrieiterator.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":ucharstrie", + ":uvector32", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ucol_swp", + srcs = [ + "ucol_swp.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":utrie_swap", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "udata", + srcs = [ + "restrace.cpp", + "ucmndata.cpp", + "udata.cpp", + "udatamem.cpp", + "umapfile.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":icu_utility", + ":platform", + ":uhash", + "//icu4c/source/stubdata", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uiter", + srcs = [ + "uiter.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ulist", + srcs = [ + "ulist.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "unames", + srcs = [ + "unames.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":uchar", + ":udata", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "unifiedcache", + srcs = [ + "unifiedcache.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ":uhash", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uniset_core", + srcs = [ + "bmpset.cpp", + "unifilt.cpp", + "unifunct.cpp", + "uniset.cpp", + "unisetspan.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":icu_utility", + ":patternprops", + ":uvector", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uniset_closure", + srcs = [ + "uniset_closure.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":uniset_core", + ":unistr_case_locale", + ":unistr_titlecase_brkiter", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uniset_props", + srcs = [ + "uniset_props.cpp", + "ruleiter.cpp", + ], + includes = ["."], + deps = [ + ":characterproperties", + ":headers", + ":parsepos", + ":propname", + ":resourcebundle", + ":unames", + ":uniset_core", + ":unistr_case", + ":uprops", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "unistr_case", + srcs = [ + "unistr_case.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":ustring_case", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "unistr_case_locale", + srcs = [ + "unistr_case_locale.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":unistr_case", + ":ustring_case_locale", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "unistr_titlecase_brkiter", + srcs = [ + "unistr_titlecase_brkiter.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":ustr_titlecase_brkiter", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uprops", + srcs = [ + "uprops.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":emojiprops", + ":loadednormalizer2", + ":normalizer2", + ":ubidi_props", + ":ucase", + ":uchar", + ":unistr_case", + ":ustring_case", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uscript_props", + srcs = [ + "uscript_props.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uset", + srcs = [ + "uset.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ":uniset_core", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "uset_props", + srcs = [ + "uset_props.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":uniset_closure", + ":uniset_core", + ":uniset_props", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "usetiter", + srcs = [ + "usetiter.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":platform", + ":uniset_core", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ustack", + srcs = [ + "ustack.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":uvector", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ustr_titlecase_brkiter", + srcs = [ + "ustr_titlecase_brkiter.cpp", + ], + includes = ["."], + deps = [ + ":breakiterator", + ":headers", + ":ucase", + ":ustring_case_locale", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ustring_case", + srcs = [ + "ustrcase.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":ucase", + ":uchar", + ":edits", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "ustring_case_locale", + srcs = [ + "ustrcase_locale.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":resourcebundle", + ":ustring_case", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "utext", + srcs = [ + "utext.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":ucase", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +cc_library( + name = "utrie_swap", + srcs = [ + "utrie_swap.cpp", + ], + includes = ["."], + deps = [ + ":headers", + ":udata", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) + +# This target depends on a header file that contains NFC/NFD normalization data. +# This header file is generated by a script (generate.sh) that invokes the gennorm2 binary. +# See the Unicode update change log (changes.txt). +cc_library( + name = "normalizer2", + srcs = [ + "norm2_nfc_data.h", # generated by gennorm2 + "normalizer2.cpp", + "normalizer2impl.cpp", + ], + includes = ["."], + hdrs = [ + "normalizer2impl.h", + ], + deps = [ + ":headers", + ], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) diff --git a/deps/icu-small/source/common/brkeng.cpp b/deps/icu-small/source/common/brkeng.cpp index 68c74f2359c4a1..52e9c53621dca2 100644 --- a/deps/icu-small/source/common/brkeng.cpp +++ b/deps/icu-small/source/common/brkeng.cpp @@ -25,6 +25,7 @@ #include "brkeng.h" #include "cmemory.h" #include "dictbe.h" +#include "lstmbe.h" #include "charstr.h" #include "dictionarydata.h" #include "mutex.h" @@ -77,8 +78,10 @@ int32_t UnhandledEngine::findBreaks( UText *text, int32_t /* startPos */, int32_t endPos, - UVector32 &/*foundBreaks*/ ) const { - UChar32 c = utext_current32(text); + UVector32 &/*foundBreaks*/, + UErrorCode &status) const { + if (U_FAILURE(status)) return 0; + UChar32 c = utext_current32(text); while((int32_t)utext_getNativeIndex(text) < endPos && fHandled->contains(c)) { utext_next32(text); // TODO: recast loop to work with post-increment operations. c = utext_current32(text); @@ -132,14 +135,13 @@ ICULanguageBreakFactory::getEngineFor(UChar32 c) { static UMutex gBreakEngineMutex; Mutex m(&gBreakEngineMutex); - if (fEngines == NULL) { - UStack *engines = new UStack(_deleteEngine, NULL, status); - if (U_FAILURE(status) || engines == NULL) { + if (fEngines == nullptr) { + LocalPointer engines(new UStack(_deleteEngine, nullptr, status), status); + if (U_FAILURE(status) ) { // Note: no way to return error code to caller. - delete engines; - return NULL; + return nullptr; } - fEngines = engines; + fEngines = engines.orphan(); } else { int32_t i = fEngines->size(); while (--i >= 0) { @@ -149,13 +151,13 @@ ICULanguageBreakFactory::getEngineFor(UChar32 c) { } } } - + // We didn't find an engine. Create one. lbe = loadEngineFor(c); - if (lbe != NULL) { + if (lbe != nullptr) { fEngines->push((void *)lbe, status); } - return lbe; + return U_SUCCESS(status) ? lbe : nullptr; } const LanguageBreakEngine * @@ -163,9 +165,26 @@ ICULanguageBreakFactory::loadEngineFor(UChar32 c) { UErrorCode status = U_ZERO_ERROR; UScriptCode code = uscript_getScript(c, &status); if (U_SUCCESS(status)) { + const LanguageBreakEngine *engine = nullptr; + // Try to use LSTM first + const LSTMData *data = CreateLSTMDataForScript(code, status); + if (U_SUCCESS(status)) { + if (data != nullptr) { + engine = CreateLSTMBreakEngine(code, data, status); + if (U_SUCCESS(status) && engine != nullptr) { + return engine; + } + if (engine != nullptr) { + delete engine; + engine = nullptr; + } else { + DeleteLSTMData(data); + } + } + } + status = U_ZERO_ERROR; // fallback to dictionary based DictionaryMatcher *m = loadDictionaryMatcherFor(code); if (m != NULL) { - const LanguageBreakEngine *engine = NULL; switch(code) { case USCRIPT_THAI: engine = new ThaiBreakEngine(m, status); @@ -224,7 +243,7 @@ ICULanguageBreakFactory::loadEngineFor(UChar32 c) { } DictionaryMatcher * -ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode script) { +ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode script) { UErrorCode status = U_ZERO_ERROR; // open root from brkitr tree. UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, "", &status); @@ -265,7 +284,7 @@ ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode script) { m = new UCharsDictionaryMatcher(characters, file); } if (m == NULL) { - // no matcher exists to take ownership - either we are an invalid + // no matcher exists to take ownership - either we are an invalid // type or memory allocation failed udata_close(file); } diff --git a/deps/icu-small/source/common/brkeng.h b/deps/icu-small/source/common/brkeng.h index 155433b89a86ac..6843f1cc953511 100644 --- a/deps/icu-small/source/common/brkeng.h +++ b/deps/icu-small/source/common/brkeng.h @@ -68,12 +68,14 @@ class LanguageBreakEngine : public UMemory { * @param startPos The start of the run within the supplied text. * @param endPos The end of the run within the supplied text. * @param foundBreaks A Vector of int32_t to receive the breaks. + * @param status Information on any errors encountered. * @return The number of breaks found. */ virtual int32_t findBreaks( UText *text, int32_t startPos, int32_t endPos, - UVector32 &foundBreaks ) const = 0; + UVector32 &foundBreaks, + UErrorCode &status) const = 0; }; @@ -174,7 +176,7 @@ class UnhandledEngine : public LanguageBreakEngine { * @return true if this engine handles the particular character and break * type. */ - virtual UBool handles(UChar32 c) const; + virtual UBool handles(UChar32 c) const override; /** *

Find any breaks within a run in the supplied text.

@@ -185,12 +187,14 @@ class UnhandledEngine : public LanguageBreakEngine { * @param startPos The start of the run within the supplied text. * @param endPos The end of the run within the supplied text. * @param foundBreaks An allocated C array of the breaks found, if any + * @param status Information on any errors encountered. * @return The number of breaks found. */ virtual int32_t findBreaks( UText *text, int32_t startPos, int32_t endPos, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode &status) const override; /** *

Tell the engine to handle a particular character and break type.

@@ -243,7 +247,7 @@ class ICULanguageBreakFactory : public LanguageBreakFactory { * sought. * @return A LanguageBreakEngine with the desired characteristics, or 0. */ - virtual const LanguageBreakEngine *getEngineFor(UChar32 c); + virtual const LanguageBreakEngine *getEngineFor(UChar32 c) override; protected: /** diff --git a/deps/icu-small/source/common/brkiter.cpp b/deps/icu-small/source/common/brkiter.cpp index 7b8bff4b921c78..8b228acf2c384c 100644 --- a/deps/icu-small/source/common/brkiter.cpp +++ b/deps/icu-small/source/common/brkiter.cpp @@ -120,7 +120,7 @@ BreakIterator::buildInstance(const Locale& loc, const char *type, UErrorCode &st // If there is a result, set the valid locale and actual locale, and the kind if (U_SUCCESS(status) && result != NULL) { U_LOCALE_BASED(locBased, *(BreakIterator*)result); - locBased.setLocaleIDs(ures_getLocaleByType(b, ULOC_VALID_LOCALE, &status), + locBased.setLocaleIDs(ures_getLocaleByType(b, ULOC_VALID_LOCALE, &status), actualLocale.data()); } @@ -234,7 +234,7 @@ class ICUBreakIteratorFactory : public ICUResourceBundleFactory { public: virtual ~ICUBreakIteratorFactory(); protected: - virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /*service*/, UErrorCode& status) const { + virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /*service*/, UErrorCode& status) const override { return BreakIterator::makeInstance(loc, kind, status); } }; @@ -254,11 +254,11 @@ class ICUBreakIteratorService : public ICULocaleService { virtual ~ICUBreakIteratorService(); - virtual UObject* cloneInstance(UObject* instance) const { + virtual UObject* cloneInstance(UObject* instance) const override { return ((BreakIterator*)instance)->clone(); } - virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const { + virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const override { LocaleKey& lkey = (LocaleKey&)key; int32_t kind = lkey.kind(); Locale loc; @@ -266,7 +266,7 @@ class ICUBreakIteratorService : public ICULocaleService { return BreakIterator::makeInstance(loc, kind, status); } - virtual UBool isDefault() const { + virtual UBool isDefault() const override { return countFactories() == 1; } }; @@ -300,7 +300,7 @@ static UBool U_CALLCONV breakiterator_cleanup(void) { U_CDECL_END U_NAMESPACE_BEGIN -static void U_CALLCONV +static void U_CALLCONV initService(void) { gService = new ICUBreakIteratorService(); ucln_common_registerCleanup(UCLN_COMMON_BREAKITERATOR, breakiterator_cleanup); diff --git a/deps/icu-small/source/common/bytestriebuilder.cpp b/deps/icu-small/source/common/bytestriebuilder.cpp index 28256f272a74a3..82dad42ca5fb1c 100644 --- a/deps/icu-small/source/common/bytestriebuilder.cpp +++ b/deps/icu-small/source/common/bytestriebuilder.cpp @@ -343,13 +343,13 @@ BytesTrieBuilder::BTLinearMatchNode::BTLinearMatchNode(const char *bytes, int32_ static_cast(hash)*37u + static_cast(ustr_hashCharsN(bytes, len))); } -UBool +bool BytesTrieBuilder::BTLinearMatchNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!LinearMatchNode::operator==(other)) { - return FALSE; + return false; } const BTLinearMatchNode &o=(const BTLinearMatchNode &)other; return 0==uprv_memcmp(s, o.s, length); diff --git a/deps/icu-small/source/common/caniter.cpp b/deps/icu-small/source/common/caniter.cpp index d57c64247fc591..a2083afde3cdb1 100644 --- a/deps/icu-small/source/common/caniter.cpp +++ b/deps/icu-small/source/common/caniter.cpp @@ -208,12 +208,12 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st goto CleanPartialInitialization; } - // i should initialy be the number of code units at the + // i should initially be the number of code units at the // start of the string i = U16_LENGTH(source.char32At(0)); - //int32_t i = 1; + // int32_t i = 1; // find the segments - // This code iterates through the source string and + // This code iterates through the source string and // extracts segments that end up on a codepoint that // doesn't start any decompositions. (Analysis is done // on the NFD form - see above). @@ -241,7 +241,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st for (i = 0; i < current_length; i++) { current[i] = 0; } - // for each segment, get all the combinations that can produce + // for each segment, get all the combinations that can produce // it after NFD normalization for (i = 0; i < pieces_length; ++i) { //if (PROGRESS) printf("SEGMENT\n"); @@ -316,7 +316,7 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros if(U_FAILURE(status)) { return; } - // The upper remove is destructive. The question is do we have to make a copy, or we don't care about the contents + // The upper remove is destructive. The question is do we have to make a copy, or we don't care about the contents // of source at this point. // prefix this character to all of them @@ -493,9 +493,9 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UCh } /** - * See if the decomposition of cp2 is at segment starting at segmentPos - * (with canonical rearrangment!) - * If so, take the remainder, and return the equivalents + * See if the decomposition of cp2 is at segment starting at segmentPos + * (with canonical rearrangement!) + * If so, take the remainder, and return the equivalents */ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) { //Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) { diff --git a/deps/icu-small/source/common/characterproperties.cpp b/deps/icu-small/source/common/characterproperties.cpp index 7b50a4e2051b97..a84996b47c3b89 100644 --- a/deps/icu-small/source/common/characterproperties.cpp +++ b/deps/icu-small/source/common/characterproperties.cpp @@ -14,6 +14,7 @@ #include "unicode/uscript.h" #include "unicode/uset.h" #include "cmemory.h" +#include "emojiprops.h" #include "mutex.h" #include "normalizer2impl.h" #include "uassert.h" @@ -170,6 +171,13 @@ void U_CALLCONV initInclusion(UPropertySource src, UErrorCode &errorCode) { case UPROPS_SRC_VO: uprops_addPropertyStarts((UPropertySource)src, &sa, &errorCode); break; + case UPROPS_SRC_EMOJI: { + const icu::EmojiProps *ep = icu::EmojiProps::getSingleton(errorCode); + if (U_SUCCESS(errorCode)) { + ep->addPropertyStarts(&sa, errorCode); + } + break; + } default: errorCode = U_INTERNAL_PROGRAM_ERROR; break; @@ -268,6 +276,26 @@ UnicodeSet *makeSet(UProperty property, UErrorCode &errorCode) { errorCode = U_MEMORY_ALLOCATION_ERROR; return nullptr; } + if (UCHAR_BASIC_EMOJI <= property && property <= UCHAR_RGI_EMOJI) { + // property of strings + const icu::EmojiProps *ep = icu::EmojiProps::getSingleton(errorCode); + if (U_FAILURE(errorCode)) { return nullptr; } + USetAdder sa = { + (USet *)set.getAlias(), + _set_add, + _set_addRange, + _set_addString, + nullptr, // don't need remove() + nullptr // don't need removeRange() + }; + ep->addStrings(&sa, property, errorCode); + if (property != UCHAR_BASIC_EMOJI && property != UCHAR_RGI_EMOJI) { + // property of _only_ strings + set->freeze(); + return set.orphan(); + } + } + const UnicodeSet *inclusions = icu::CharacterProperties::getInclusionsForProperty(property, errorCode); if (U_FAILURE(errorCode)) { return nullptr; } diff --git a/deps/icu-small/source/common/cmemory.cpp b/deps/icu-small/source/common/cmemory.cpp index 0b7e432c4dee46..663c1411e4cb3b 100644 --- a/deps/icu-small/source/common/cmemory.cpp +++ b/deps/icu-small/source/common/cmemory.cpp @@ -38,7 +38,7 @@ static UMemFreeFn *pFree; #if U_DEBUG && defined(UPRV_MALLOC_COUNT) #include static int n=0; -static long b=0; +static long b=0; #endif U_CAPI void * U_EXPORT2 diff --git a/deps/icu-small/source/common/cmemory.h b/deps/icu-small/source/common/cmemory.h index a925f3df637378..f03b7dcce6b9ab 100644 --- a/deps/icu-small/source/common/cmemory.h +++ b/deps/icu-small/source/common/cmemory.h @@ -150,7 +150,7 @@ uprv_calloc(size_t num, size_t size) U_MALLOC_ATTR U_ALLOC_SIZE_ATTR2(1,2); * Clears any user heap functions from u_setMemoryFunctions() * Does NOT deallocate any remaining allocated memory. */ -U_CFUNC UBool +U_CFUNC UBool cmemory_cleanup(void); /** diff --git a/deps/icu-small/source/common/common.rc b/deps/icu-small/source/common/common.rc index 5c723a27c52820..020abacc0d81fe 100644 --- a/deps/icu-small/source/common/common.rc +++ b/deps/icu-small/source/common/common.rc @@ -18,7 +18,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// +// LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #pragma code_page(1252) @@ -29,17 +29,17 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL // TEXTINCLUDE // -1 TEXTINCLUDE +1 TEXTINCLUDE BEGIN "msvcres.h\0" END -2 TEXTINCLUDE +2 TEXTINCLUDE BEGIN "#include \0" END -3 TEXTINCLUDE +3 TEXTINCLUDE BEGIN "\r\n" "\0" @@ -107,3 +107,4 @@ END ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED + diff --git a/deps/icu-small/source/common/cstr.cpp b/deps/icu-small/source/common/cstr.cpp index 0114434329ad7e..24654f8fc22897 100644 --- a/deps/icu-small/source/common/cstr.cpp +++ b/deps/icu-small/source/common/cstr.cpp @@ -30,7 +30,7 @@ CStr::CStr(const UnicodeString &in) { } #else // No conversion available. Convert any invariant characters; substitute '?' for the rest. - // Note: can't just call u_UCharsToChars() or CharString.appendInvariantChars() on the + // Note: can't just call u_UCharsToChars() or CharString.appendInvariantChars() on the // whole string because they require that the entire input be invariant. char buf[2]; for (int i=0; i=2 && radix<=16); uval = (uint32_t) v; if(v<0 && radix == 10) { /* Only in base 10 do we conside numbers to be signed. */ - uval = (uint32_t)(-v); + uval = (uint32_t)(-v); buffer[length++] = '-'; } - + tbx = sizeof(tbuf)-1; tbuf[tbx] = 0; /* We are generating the digits backwards. Null term the end. */ do { @@ -177,7 +177,7 @@ T_CString_integerToString(char* buffer, int32_t v, int32_t radix) tbuf[--tbx] = (char)(T_CString_itosOffset(digit)); uval = uval / radix; } while (uval != 0); - + /* copy converted number into user buffer */ uprv_strcpy(buffer+length, tbuf+tbx); length += sizeof(tbuf) - tbx -1; @@ -199,15 +199,15 @@ T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix) uint8_t digit; int32_t length = 0; uint64_t uval; - + U_ASSERT(radix>=2 && radix<=16); uval = (uint64_t) v; if(v<0 && radix == 10) { /* Only in base 10 do we conside numbers to be signed. */ - uval = (uint64_t)(-v); + uval = (uint64_t)(-v); buffer[length++] = '-'; } - + tbx = sizeof(tbuf)-1; tbuf[tbx] = 0; /* We are generating the digits backwards. Null term the end. */ do { @@ -215,7 +215,7 @@ T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix) tbuf[--tbx] = (char)(T_CString_itosOffset(digit)); uval = uval / radix; } while (uval != 0); - + /* copy converted number into user buffer */ uprv_strcpy(buffer+length, tbuf+tbx); length += sizeof(tbuf) - tbx -1; @@ -331,7 +331,7 @@ uprv_strndup(const char *src, int32_t n) { dup = uprv_strdup(src); } else { dup = (char*)uprv_malloc(n+1); - if (dup) { + if (dup) { uprv_memcpy(dup, src, n); dup[n] = 0; } diff --git a/deps/icu-small/source/common/cwchar.cpp b/deps/icu-small/source/common/cwchar.cpp index 4fd531114e8df8..20c7d71e0f0769 100644 --- a/deps/icu-small/source/common/cwchar.cpp +++ b/deps/icu-small/source/common/cwchar.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ****************************************************************************** * * Copyright (C) 2001, International Business Machines @@ -52,3 +52,4 @@ U_CAPI size_t uprv_wcslen(const wchar_t *src) { } #endif + diff --git a/deps/icu-small/source/common/cwchar.h b/deps/icu-small/source/common/cwchar.h index 939eb599d69f8f..8fd041a1b9c568 100644 --- a/deps/icu-small/source/common/cwchar.h +++ b/deps/icu-small/source/common/cwchar.h @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ****************************************************************************** * * Copyright (C) 2001, International Business Machines @@ -42,11 +42,11 @@ # define uprv_wcscat wcscat # define uprv_wcslen wcslen #else -U_CAPI wchar_t* U_EXPORT2 +U_CAPI wchar_t* U_EXPORT2 uprv_wcscpy(wchar_t *dst, const wchar_t *src); -U_CAPI wchar_t* U_EXPORT2 +U_CAPI wchar_t* U_EXPORT2 uprv_wcscat(wchar_t *dst, const wchar_t *src); -U_CAPI size_t U_EXPORT2 +U_CAPI size_t U_EXPORT2 uprv_wcslen(const wchar_t *src); #endif diff --git a/deps/icu-small/source/common/dictbe.cpp b/deps/icu-small/source/common/dictbe.cpp index 88533cedcecc83..4d158e3226db28 100644 --- a/deps/icu-small/source/common/dictbe.cpp +++ b/deps/icu-small/source/common/dictbe.cpp @@ -47,7 +47,9 @@ int32_t DictionaryBreakEngine::findBreaks( UText *text, int32_t startPos, int32_t endPos, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status) const { + if (U_FAILURE(status)) return 0; (void)startPos; // TODO: remove this param? int32_t result = 0; @@ -66,9 +68,9 @@ DictionaryBreakEngine::findBreaks( UText *text, } rangeStart = start; rangeEnd = current; - result = divideUpDictionaryRange(text, rangeStart, rangeEnd, foundBreaks); + result = divideUpDictionaryRange(text, rangeStart, rangeEnd, foundBreaks, status); utext_setNativeIndex(text, current); - + return result; } @@ -106,24 +108,24 @@ class PossibleWord { public: PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {} ~PossibleWord() {} - + // Fill the list of candidates if needed, select the longest, and return the number found int32_t candidates( UText *text, DictionaryMatcher *dict, int32_t rangeEnd ); - + // Select the currently marked candidate, point after it in the text, and invalidate self int32_t acceptMarked( UText *text ); - + // Back up from the current candidate to the next shorter one; return TRUE if that exists // and point the text after it UBool backUp( UText *text ); - + // Return the longest prefix this candidate location shares with a dictionary word // Return value is in code points. int32_t longestPrefix() { return prefix; } - + // Mark the current candidate as the one we like void markCurrent() { mark = current; } - + // Get length in code points of the marked word. int32_t markedCPLength() { return cpLengths[mark]; } }; @@ -179,7 +181,7 @@ static const int32_t THAI_ROOT_COMBINE_THRESHOLD = 3; // dictionary word, with a preceding word static const int32_t THAI_PREFIX_COMBINE_THRESHOLD = 3; -// Ellision character +// Elision character static const int32_t THAI_PAIYANNOI = 0x0E2F; // Repeat character @@ -227,7 +229,9 @@ int32_t ThaiBreakEngine::divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status) const { + if (U_FAILURE(status)) return 0; utext_setNativeIndex(text, rangeStart); utext_moveIndex32(text, THAI_MIN_WORD_SPAN); if (utext_getNativeIndex(text) >= rangeEnd) { @@ -240,18 +244,17 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text, int32_t cpWordLength = 0; // Word Length in Code Points. int32_t cuWordLength = 0; // Word length in code units (UText native indexing) int32_t current; - UErrorCode status = U_ZERO_ERROR; PossibleWord words[THAI_LOOKAHEAD]; - + utext_setNativeIndex(text, rangeStart); - + while (U_SUCCESS(status) && (current = (int32_t)utext_getNativeIndex(text)) < rangeEnd) { cpWordLength = 0; cuWordLength = 0; // Look for candidate words at the current position int32_t candidates = words[wordsFound%THAI_LOOKAHEAD].candidates(text, fDictionary, rangeEnd); - + // If we found exactly one, use that if (candidates == 1) { cuWordLength = words[wordsFound % THAI_LOOKAHEAD].acceptMarked(text); @@ -268,12 +271,12 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text, if (words[(wordsFound + 1) % THAI_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) { // Followed by another dictionary word; mark first word as a good candidate words[wordsFound%THAI_LOOKAHEAD].markCurrent(); - + // If we're already at the end of the range, we're done if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) { goto foundBest; } - + // See if any of the possible second words is followed by a third word do { // If we find a third word, stop right away @@ -292,13 +295,13 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text, cpWordLength = words[wordsFound % THAI_LOOKAHEAD].markedCPLength(); wordsFound += 1; } - + // We come here after having either found a word or not. We look ahead to the // next word. If it's not a dictionary word, we will combine it with the word we // just found (if there is one), but only if the preceding word does not exceed // the threshold. // The text iterator should now be positioned at the end of the word we found. - + UChar32 uc = 0; if ((int32_t)utext_getNativeIndex(text) < rangeEnd && cpWordLength < THAI_ROOT_COMBINE_THRESHOLD) { // if it is a dictionary word, do nothing. If it isn't, then if there is @@ -334,12 +337,12 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text, } } } - + // Bump the word count if there wasn't already one if (cuWordLength <= 0) { wordsFound += 1; } - + // Update the length with the passed-over characters cuWordLength += chars; } @@ -348,14 +351,14 @@ ThaiBreakEngine::divideUpDictionaryRange( UText *text, utext_setNativeIndex(text, current+cuWordLength); } } - + // Never stop before a combining mark. int32_t currPos; while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) { utext_next32(text); cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos; } - + // Look ahead for possible suffixes if a dictionary word does not follow. // We do this in code rather than using a rule so that the heuristic // resynch continues to function. For example, one of the suffix characters @@ -465,7 +468,9 @@ int32_t LaoBreakEngine::divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status) const { + if (U_FAILURE(status)) return 0; if ((rangeEnd - rangeStart) < LAO_MIN_WORD_SPAN) { return 0; // Not enough characters for two words } @@ -474,7 +479,6 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, int32_t cpWordLength = 0; int32_t cuWordLength = 0; int32_t current; - UErrorCode status = U_ZERO_ERROR; PossibleWord words[LAO_LOOKAHEAD]; utext_setNativeIndex(text, rangeStart); @@ -485,7 +489,7 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, // Look for candidate words at the current position int32_t candidates = words[wordsFound%LAO_LOOKAHEAD].candidates(text, fDictionary, rangeEnd); - + // If we found exactly one, use that if (candidates == 1) { cuWordLength = words[wordsFound % LAO_LOOKAHEAD].acceptMarked(text); @@ -502,12 +506,12 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, if (words[(wordsFound + 1) % LAO_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) { // Followed by another dictionary word; mark first word as a good candidate words[wordsFound%LAO_LOOKAHEAD].markCurrent(); - + // If we're already at the end of the range, we're done if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) { goto foundBest; } - + // See if any of the possible second words is followed by a third word do { // If we find a third word, stop right away @@ -525,9 +529,9 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, cpWordLength = words[wordsFound % LAO_LOOKAHEAD].markedCPLength(); wordsFound += 1; } - + // We come here after having either found a word or not. We look ahead to the - // next word. If it's not a dictionary word, we will combine it withe the word we + // next word. If it's not a dictionary word, we will combine it with the word we // just found (if there is one), but only if the preceding word does not exceed // the threshold. // The text iterator should now be positioned at the end of the word we found. @@ -563,12 +567,12 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, } } } - + // Bump the word count if there wasn't already one if (cuWordLength <= 0) { wordsFound += 1; } - + // Update the length with the passed-over characters cuWordLength += chars; } @@ -577,14 +581,14 @@ LaoBreakEngine::divideUpDictionaryRange( UText *text, utext_setNativeIndex(text, current + cuWordLength); } } - + // Never stop before a combining mark. int32_t currPos; while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) { utext_next32(text); cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos; } - + // Look ahead for possible suffixes if a dictionary word does not follow. // We do this in code rather than using a rule so that the heuristic // resynch continues to function. For example, one of the suffix characters @@ -657,7 +661,9 @@ int32_t BurmeseBreakEngine::divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status ) const { + if (U_FAILURE(status)) return 0; if ((rangeEnd - rangeStart) < BURMESE_MIN_WORD_SPAN) { return 0; // Not enough characters for two words } @@ -666,7 +672,6 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, int32_t cpWordLength = 0; int32_t cuWordLength = 0; int32_t current; - UErrorCode status = U_ZERO_ERROR; PossibleWord words[BURMESE_LOOKAHEAD]; utext_setNativeIndex(text, rangeStart); @@ -677,7 +682,7 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, // Look for candidate words at the current position int32_t candidates = words[wordsFound%BURMESE_LOOKAHEAD].candidates(text, fDictionary, rangeEnd); - + // If we found exactly one, use that if (candidates == 1) { cuWordLength = words[wordsFound % BURMESE_LOOKAHEAD].acceptMarked(text); @@ -694,12 +699,12 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, if (words[(wordsFound + 1) % BURMESE_LOOKAHEAD].candidates(text, fDictionary, rangeEnd) > 0) { // Followed by another dictionary word; mark first word as a good candidate words[wordsFound%BURMESE_LOOKAHEAD].markCurrent(); - + // If we're already at the end of the range, we're done if ((int32_t)utext_getNativeIndex(text) >= rangeEnd) { goto foundBest; } - + // See if any of the possible second words is followed by a third word do { // If we find a third word, stop right away @@ -717,9 +722,9 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, cpWordLength = words[wordsFound % BURMESE_LOOKAHEAD].markedCPLength(); wordsFound += 1; } - + // We come here after having either found a word or not. We look ahead to the - // next word. If it's not a dictionary word, we will combine it withe the word we + // next word. If it's not a dictionary word, we will combine it with the word we // just found (if there is one), but only if the preceding word does not exceed // the threshold. // The text iterator should now be positioned at the end of the word we found. @@ -755,12 +760,12 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, } } } - + // Bump the word count if there wasn't already one if (cuWordLength <= 0) { wordsFound += 1; } - + // Update the length with the passed-over characters cuWordLength += chars; } @@ -769,14 +774,14 @@ BurmeseBreakEngine::divideUpDictionaryRange( UText *text, utext_setNativeIndex(text, current + cuWordLength); } } - + // Never stop before a combining mark. int32_t currPos; while ((currPos = (int32_t)utext_getNativeIndex(text)) < rangeEnd && fMarkSet.contains(utext_current32(text))) { utext_next32(text); cuWordLength += (int32_t)utext_getNativeIndex(text) - currPos; } - + // Look ahead for possible suffixes if a dictionary word does not follow. // We do this in code rather than using a rule so that the heuristic // resynch continues to function. For example, one of the suffix characters @@ -861,7 +866,9 @@ int32_t KhmerBreakEngine::divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status ) const { + if (U_FAILURE(status)) return 0; if ((rangeEnd - rangeStart) < KHMER_MIN_WORD_SPAN) { return 0; // Not enough characters for two words } @@ -870,7 +877,6 @@ KhmerBreakEngine::divideUpDictionaryRange( UText *text, int32_t cpWordLength = 0; int32_t cuWordLength = 0; int32_t current; - UErrorCode status = U_ZERO_ERROR; PossibleWord words[KHMER_LOOKAHEAD]; utext_setNativeIndex(text, rangeStart); @@ -1024,7 +1030,7 @@ KhmerBreakEngine::divideUpDictionaryRange( UText *text, foundBreaks.push((current+cuWordLength), status); } } - + // Don't return a break for the end of the dictionary range if there is one there. if (foundBreaks.peeki() >= rangeEnd) { (void) foundBreaks.popi(); @@ -1098,7 +1104,7 @@ static inline int32_t utext_i32_flag(int32_t bitIndex) { return (int32_t)1 << bitIndex; } - + /* * @param text A UText representing the text * @param rangeStart The start of the range of dictionary characters @@ -1106,11 +1112,13 @@ static inline int32_t utext_i32_flag(int32_t bitIndex) { * @param foundBreaks vector to receive the break positions * @return The number of breaks found */ -int32_t +int32_t CjkBreakEngine::divideUpDictionaryRange( UText *inText, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const { + UVector32 &foundBreaks, + UErrorCode& status) const { + if (U_FAILURE(status)) return 0; if (rangeStart >= rangeEnd) { return 0; } @@ -1122,9 +1130,6 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, // If NULL then mapping is 1:1 LocalPointer inputMap; - UErrorCode status = U_ZERO_ERROR; - - // if UText has the input string as one contiguous UTF-16 chunk if ((inText->providerProperties & utext_i32_flag(UTEXT_PROVIDER_STABLE_CHUNKS)) && inText->chunkNativeStart <= rangeStart && @@ -1169,7 +1174,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, if (U_FAILURE(status)) { return 0; } - + UnicodeString fragment; UnicodeString normalizedFragment; for (int32_t srcI = 0; srcI < inString.length();) { // Once per normalization chunk @@ -1238,7 +1243,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, } } } - + // bestSnlp[i] is the snlp of the best segmentation of the first i // code points in the range to be matched. UVector32 bestSnlp(numCodePts + 1, status); @@ -1248,7 +1253,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, } - // prev[i] is the index of the last CJK code point in the previous word in + // prev[i] is the index of the last CJK code point in the previous word in // the best segmentation of the first i characters. UVector32 prev(numCodePts + 1, status); for(int32_t i = 0; i <= numCodePts; i++){ @@ -1283,8 +1288,8 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, // Note: lengths is filled with code point lengths // The NULL parameter is the ignored code unit lengths. - // if there are no single character matches found in the dictionary - // starting with this character, treat character as a 1-character word + // if there are no single character matches found in the dictionary + // starting with this character, treat character as a 1-character word // with the highest value possible, i.e. the least likely to occur. // Exclude Korean characters from this treatment, as they should be left // together by default. @@ -1357,7 +1362,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, numBreaks++; } - // Now that we're done, convert positions in t_boundary[] (indices in + // Now that we're done, convert positions in t_boundary[] (indices in // the normalized input string) back to indices in the original input UText // while reversing t_boundary and pushing values to foundBreaks. int32_t prevCPPos = -1; @@ -1391,3 +1396,4 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText, U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ + diff --git a/deps/icu-small/source/common/dictbe.h b/deps/icu-small/source/common/dictbe.h index 246c1dc6935fbd..4e70ed38171e44 100644 --- a/deps/icu-small/source/common/dictbe.h +++ b/deps/icu-small/source/common/dictbe.h @@ -62,7 +62,7 @@ class DictionaryBreakEngine : public LanguageBreakEngine { * @return true if this engine handles the particular character and break * type. */ - virtual UBool handles(UChar32 c) const; + virtual UBool handles(UChar32 c) const override; /** *

Find any breaks within a run in the supplied text.

@@ -73,12 +73,14 @@ class DictionaryBreakEngine : public LanguageBreakEngine { * @param startPos The start of the run within the supplied text. * @param endPos The end of the run within the supplied text. * @param foundBreaks vector of int32_t to receive the break positions + * @param status Information on any errors encountered. * @return The number of breaks found. */ virtual int32_t findBreaks( UText *text, int32_t startPos, int32_t endPos, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status ) const override; protected: @@ -96,12 +98,14 @@ class DictionaryBreakEngine : public LanguageBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const = 0; + UVector32 &foundBreaks, + UErrorCode& status) const = 0; }; @@ -153,12 +157,14 @@ class ThaiBreakEngine : public DictionaryBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status) const override; }; @@ -209,12 +215,14 @@ class LaoBreakEngine : public DictionaryBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status) const override; }; @@ -265,12 +273,14 @@ class BurmeseBreakEngine : public DictionaryBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status) const override; }; @@ -321,12 +331,14 @@ class KhmerBreakEngine : public DictionaryBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status) const override; }; @@ -385,12 +397,14 @@ class CjkBreakEngine : public DictionaryBreakEngine { * @param rangeStart The start of the range of dictionary characters * @param rangeEnd The end of the range of dictionary characters * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. * @return The number of breaks found */ virtual int32_t divideUpDictionaryRange( UText *text, int32_t rangeStart, int32_t rangeEnd, - UVector32 &foundBreaks ) const; + UVector32 &foundBreaks, + UErrorCode& status) const override; }; diff --git a/deps/icu-small/source/common/dictionarydata.cpp b/deps/icu-small/source/common/dictionarydata.cpp index 0efa5874931a07..6e2dbee5b618be 100644 --- a/deps/icu-small/source/common/dictionarydata.cpp +++ b/deps/icu-small/source/common/dictionarydata.cpp @@ -30,7 +30,7 @@ const int32_t DictionaryData::TRANSFORM_NONE = 0; const int32_t DictionaryData::TRANSFORM_TYPE_OFFSET = 0x1000000; const int32_t DictionaryData::TRANSFORM_TYPE_MASK = 0x7f000000; const int32_t DictionaryData::TRANSFORM_OFFSET_MASK = 0x1fffff; - + DictionaryMatcher::~DictionaryMatcher() { } @@ -172,10 +172,10 @@ udict_swap(const UDataSwapper *ds, const void *inData, int32_t length, headerSize = udata_swapDataHeader(ds, inData, length, outData, pErrorCode); if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) return 0; pInfo = (const UDataInfo *)((const char *)inData + 4); - if (!(pInfo->dataFormat[0] == 0x44 && - pInfo->dataFormat[1] == 0x69 && - pInfo->dataFormat[2] == 0x63 && - pInfo->dataFormat[3] == 0x74 && + if (!(pInfo->dataFormat[0] == 0x44 && + pInfo->dataFormat[1] == 0x69 && + pInfo->dataFormat[2] == 0x63 && + pInfo->dataFormat[3] == 0x74 && pInfo->formatVersion[0] == 1)) { udata_printError(ds, "udict_swap(): data format %02x.%02x.%02x.%02x (format version %02x) is not recognized as dictionary data\n", pInfo->dataFormat[0], pInfo->dataFormat[1], pInfo->dataFormat[2], pInfo->dataFormat[3], pInfo->formatVersion[0]); diff --git a/deps/icu-small/source/common/dictionarydata.h b/deps/icu-small/source/common/dictionarydata.h index d86c6dfdbbc71b..e75716f54b9fe1 100644 --- a/deps/icu-small/source/common/dictionarydata.h +++ b/deps/icu-small/source/common/dictionarydata.h @@ -62,7 +62,7 @@ class U_COMMON_API DictionaryData : public UMemory { /** * Wrapper class around generic dictionaries, implementing matches(). * getType() should return a TRIE_TYPE_??? constant from DictionaryData. - * + * * All implementations of this interface must be thread-safe if they are to be used inside of the * dictionary-based break iteration code. */ @@ -107,8 +107,8 @@ class U_COMMON_API UCharsDictionaryMatcher : public DictionaryMatcher { virtual ~UCharsDictionaryMatcher(); virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, - int32_t *prefix) const; - virtual int32_t getType() const; + int32_t *prefix) const override; + virtual int32_t getType() const override; private: const UChar *characters; UDataMemory *file; @@ -125,8 +125,8 @@ class U_COMMON_API BytesDictionaryMatcher : public DictionaryMatcher { virtual ~BytesDictionaryMatcher(); virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit, int32_t *lengths, int32_t *cpLengths, int32_t *values, - int32_t *prefix) const; - virtual int32_t getType() const; + int32_t *prefix) const override; + virtual int32_t getType() const override; private: UChar32 transform(UChar32 c) const; @@ -159,7 +159,7 @@ udict_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *out * Constants are defined in the DictionaryData class. * * For the data structure of BytesTrie & UCharsTrie see - * http://site.icu-project.org/design/struct/tries + * https://icu.unicode.org/design/struct/tries * and the bytestrie.h and ucharstrie.h header files. * * int32_t indexes[indexesLength]; -- indexesLength=indexes[IX_STRING_TRIE_OFFSET]/4; diff --git a/deps/icu-small/source/common/dtintrv.cpp b/deps/icu-small/source/common/dtintrv.cpp index dee637e62c07d4..011ad8136f3bdb 100644 --- a/deps/icu-small/source/common/dtintrv.cpp +++ b/deps/icu-small/source/common/dtintrv.cpp @@ -5,7 +5,7 @@ * others. All Rights Reserved. ******************************************************************************* * -* File DTINTRV.CPP +* File DTINTRV.CPP * ******************************************************************************* */ @@ -34,7 +34,7 @@ DateInterval::~DateInterval(){} DateInterval::DateInterval(const DateInterval& other) : UObject(other) { *this = other; -} +} DateInterval& @@ -47,16 +47,17 @@ DateInterval::operator=(const DateInterval& other) { } -DateInterval* +DateInterval* DateInterval::clone() const { return new DateInterval(*this); } -UBool -DateInterval::operator==(const DateInterval& other) const { +bool +DateInterval::operator==(const DateInterval& other) const { return ( fromDate == other.fromDate && toDate == other.toDate ); } U_NAMESPACE_END + diff --git a/deps/icu-small/source/common/emojiprops.cpp b/deps/icu-small/source/common/emojiprops.cpp new file mode 100644 index 00000000000000..2a05e8602d3c0c --- /dev/null +++ b/deps/icu-small/source/common/emojiprops.cpp @@ -0,0 +1,220 @@ +// © 2021 and later: Unicode, Inc. and others. +// License & terms of use: https://www.unicode.org/copyright.html + +// emojiprops.cpp +// created: 2021sep04 Markus W. Scherer + +#include "unicode/utypes.h" +#include "unicode/uchar.h" +#include "unicode/ucharstrie.h" +#include "unicode/ucptrie.h" +#include "unicode/udata.h" +#include "unicode/ustringtrie.h" +#include "unicode/utf16.h" +#include "emojiprops.h" +#include "ucln.h" +#include "ucln_cmn.h" +#include "umutex.h" +#include "uset_imp.h" + +U_NAMESPACE_BEGIN + +namespace { + +EmojiProps *singleton = nullptr; +icu::UInitOnce emojiInitOnce = U_INITONCE_INITIALIZER; + +UBool U_CALLCONV emojiprops_cleanup() { + delete singleton; + singleton = nullptr; + emojiInitOnce.reset(); + return true; +} + +void U_CALLCONV initSingleton(UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return; } + singleton = new EmojiProps(errorCode); + if (singleton == nullptr) { + errorCode = U_MEMORY_ALLOCATION_ERROR; + } else if (U_FAILURE(errorCode)) { + delete singleton; + singleton = nullptr; + } + ucln_common_registerCleanup(UCLN_COMMON_EMOJIPROPS, emojiprops_cleanup); +} + +// TODO: turn this into a shared helper function +// Requires the major version to match, and then requires at least the minor version. +UBool udata_isAcceptableMajorMinor( + const UDataInfo &info, const UChar *dataFormat, uint8_t major, uint8_t minor) { + return + info.size >= 20 && + info.isBigEndian == U_IS_BIG_ENDIAN && + info.charsetFamily == U_CHARSET_FAMILY && + info.dataFormat[0] == dataFormat[0] && + info.dataFormat[1] == dataFormat[1] && + info.dataFormat[2] == dataFormat[2] && + info.dataFormat[3] == dataFormat[3] && + info.formatVersion[0] == major && + info.formatVersion[1] >= minor; +} + +} // namespace + +EmojiProps::~EmojiProps() { + udata_close(memory); + ucptrie_close(cpTrie); +} + +const EmojiProps * +EmojiProps::getSingleton(UErrorCode &errorCode) { + if (U_FAILURE(errorCode)) { return nullptr; } + umtx_initOnce(emojiInitOnce, &initSingleton, errorCode); + return singleton; +} + +UBool U_CALLCONV +EmojiProps::isAcceptable(void * /*context*/, const char * /*type*/, const char * /*name*/, + const UDataInfo *pInfo) { + return udata_isAcceptableMajorMinor(*pInfo, u"Emoj", 1, 0); +} + +void +EmojiProps::load(UErrorCode &errorCode) { + memory = udata_openChoice(nullptr, "icu", "uemoji", isAcceptable, this, &errorCode); + if (U_FAILURE(errorCode)) { return; } + const uint8_t *inBytes = (const uint8_t *)udata_getMemory(memory); + const int32_t *inIndexes = (const int32_t *)inBytes; + int32_t indexesLength = inIndexes[IX_CPTRIE_OFFSET] / 4; + if (indexesLength <= IX_RGI_EMOJI_ZWJ_SEQUENCE_TRIE_OFFSET) { + errorCode = U_INVALID_FORMAT_ERROR; // Not enough indexes. + return; + } + + int32_t i = IX_CPTRIE_OFFSET; + int32_t offset = inIndexes[i++]; + int32_t nextOffset = inIndexes[i]; + cpTrie = ucptrie_openFromBinary(UCPTRIE_TYPE_FAST, UCPTRIE_VALUE_BITS_8, + inBytes + offset, nextOffset - offset, nullptr, &errorCode); + if (U_FAILURE(errorCode)) { + return; + } + + for (i = IX_BASIC_EMOJI_TRIE_OFFSET; i <= IX_RGI_EMOJI_ZWJ_SEQUENCE_TRIE_OFFSET; ++i) { + offset = inIndexes[i]; + nextOffset = inIndexes[i + 1]; + // Set/leave nullptr if there is no UCharsTrie. + const UChar *p = nextOffset > offset ? (const UChar *)(inBytes + offset) : nullptr; + stringTries[getStringTrieIndex(i)] = p; + } +} + +void +EmojiProps::addPropertyStarts(const USetAdder *sa, UErrorCode & /*errorCode*/) const { + // Add the start code point of each same-value range of the trie. + UChar32 start = 0, end; + uint32_t value; + while ((end = ucptrie_getRange(cpTrie, start, UCPMAP_RANGE_NORMAL, 0, + nullptr, nullptr, &value)) >= 0) { + sa->add(sa->set, start); + start = end + 1; + } +} + +UBool +EmojiProps::hasBinaryProperty(UChar32 c, UProperty which) { + UErrorCode errorCode = U_ZERO_ERROR; + const EmojiProps *ep = getSingleton(errorCode); + return U_SUCCESS(errorCode) && ep->hasBinaryPropertyImpl(c, which); +} + +UBool +EmojiProps::hasBinaryPropertyImpl(UChar32 c, UProperty which) const { + if (which < UCHAR_EMOJI || UCHAR_RGI_EMOJI < which) { + return false; + } + // Note: UCHAR_REGIONAL_INDICATOR is a single, hardcoded range implemented elsewhere. + static constexpr int8_t bitFlags[] = { + BIT_EMOJI, // UCHAR_EMOJI=57 + BIT_EMOJI_PRESENTATION, // UCHAR_EMOJI_PRESENTATION=58 + BIT_EMOJI_MODIFIER, // UCHAR_EMOJI_MODIFIER=59 + BIT_EMOJI_MODIFIER_BASE, // UCHAR_EMOJI_MODIFIER_BASE=60 + BIT_EMOJI_COMPONENT, // UCHAR_EMOJI_COMPONENT=61 + -1, // UCHAR_REGIONAL_INDICATOR=62 + -1, // UCHAR_PREPENDED_CONCATENATION_MARK=63 + BIT_EXTENDED_PICTOGRAPHIC, // UCHAR_EXTENDED_PICTOGRAPHIC=64 + BIT_BASIC_EMOJI, // UCHAR_BASIC_EMOJI=65 + -1, // UCHAR_EMOJI_KEYCAP_SEQUENCE=66 + -1, // UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE=67 + -1, // UCHAR_RGI_EMOJI_FLAG_SEQUENCE=68 + -1, // UCHAR_RGI_EMOJI_TAG_SEQUENCE=69 + -1, // UCHAR_RGI_EMOJI_ZWJ_SEQUENCE=70 + BIT_BASIC_EMOJI, // UCHAR_RGI_EMOJI=71 + }; + int32_t bit = bitFlags[which - UCHAR_EMOJI]; + if (bit < 0) { + return false; // not a property that we support in this function + } + uint8_t bits = UCPTRIE_FAST_GET(cpTrie, UCPTRIE_8, c); + return (bits >> bit) & 1; +} + +UBool +EmojiProps::hasBinaryProperty(const UChar *s, int32_t length, UProperty which) { + UErrorCode errorCode = U_ZERO_ERROR; + const EmojiProps *ep = getSingleton(errorCode); + return U_SUCCESS(errorCode) && ep->hasBinaryPropertyImpl(s, length, which); +} + +UBool +EmojiProps::hasBinaryPropertyImpl(const UChar *s, int32_t length, UProperty which) const { + if (s == nullptr && length != 0) { return false; } + if (length <= 0 && (length == 0 || *s == 0)) { return false; } // empty string + // The caller should have delegated single code points to hasBinaryProperty(c, which). + if (which < UCHAR_BASIC_EMOJI || UCHAR_RGI_EMOJI < which) { + return false; + } + UProperty firstProp = which, lastProp = which; + if (which == UCHAR_RGI_EMOJI) { + // RGI_Emoji is the union of the other emoji properties of strings. + firstProp = UCHAR_BASIC_EMOJI; + lastProp = UCHAR_RGI_EMOJI_ZWJ_SEQUENCE; + } + for (int32_t prop = firstProp; prop <= lastProp; ++prop) { + const UChar *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI]; + if (trieUChars != nullptr) { + UCharsTrie trie(trieUChars); + UStringTrieResult result = trie.next(s, length); + if (USTRINGTRIE_HAS_VALUE(result)) { + return true; + } + } + } + return false; +} + +void +EmojiProps::addStrings(const USetAdder *sa, UProperty which, UErrorCode &errorCode) const { + if (U_FAILURE(errorCode)) { return; } + if (which < UCHAR_BASIC_EMOJI || UCHAR_RGI_EMOJI < which) { + return; + } + UProperty firstProp = which, lastProp = which; + if (which == UCHAR_RGI_EMOJI) { + // RGI_Emoji is the union of the other emoji properties of strings. + firstProp = UCHAR_BASIC_EMOJI; + lastProp = UCHAR_RGI_EMOJI_ZWJ_SEQUENCE; + } + for (int32_t prop = firstProp; prop <= lastProp; ++prop) { + const UChar *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI]; + if (trieUChars != nullptr) { + UCharsTrie::Iterator iter(trieUChars, 0, errorCode); + while (iter.next(errorCode)) { + const UnicodeString &s = iter.getString(); + sa->addString(sa->set, s.getBuffer(), s.length()); + } + } + } +} + +U_NAMESPACE_END diff --git a/deps/icu-small/source/common/emojiprops.h b/deps/icu-small/source/common/emojiprops.h new file mode 100644 index 00000000000000..457847c303ab1a --- /dev/null +++ b/deps/icu-small/source/common/emojiprops.h @@ -0,0 +1,90 @@ +// © 2021 and later: Unicode, Inc. and others. +// License & terms of use: https://www.unicode.org/copyright.html + +// emojiprops.h +// created: 2021sep03 Markus W. Scherer + +#ifndef __EMOJIPROPS_H__ +#define __EMOJIPROPS_H__ + +#include "unicode/utypes.h" +#include "unicode/ucptrie.h" +#include "unicode/udata.h" +#include "unicode/uobject.h" +#include "uset_imp.h" + +U_NAMESPACE_BEGIN + +class EmojiProps : public UMemory { +public: + // @internal + EmojiProps(UErrorCode &errorCode) { load(errorCode); } + ~EmojiProps(); + + static const EmojiProps *getSingleton(UErrorCode &errorCode); + static UBool hasBinaryProperty(UChar32 c, UProperty which); + static UBool hasBinaryProperty(const UChar *s, int32_t length, UProperty which); + + void addPropertyStarts(const USetAdder *sa, UErrorCode &errorCode) const; + void addStrings(const USetAdder *sa, UProperty which, UErrorCode &errorCode) const; + + enum { + // Byte offsets from the start of the data, after the generic header, + // in ascending order. + // UCPTrie=CodePointTrie, follows the indexes + IX_CPTRIE_OFFSET, + IX_RESERVED1, + IX_RESERVED2, + IX_RESERVED3, + + // UCharsTrie=CharsTrie + IX_BASIC_EMOJI_TRIE_OFFSET, + IX_EMOJI_KEYCAP_SEQUENCE_TRIE_OFFSET, + IX_RGI_EMOJI_MODIFIER_SEQUENCE_TRIE_OFFSET, + IX_RGI_EMOJI_FLAG_SEQUENCE_TRIE_OFFSET, + IX_RGI_EMOJI_TAG_SEQUENCE_TRIE_OFFSET, + IX_RGI_EMOJI_ZWJ_SEQUENCE_TRIE_OFFSET, + IX_RESERVED10, + IX_RESERVED11, + IX_RESERVED12, + IX_TOTAL_SIZE, + + // Not initially byte offsets. + IX_RESERVED14, + IX_RESERVED15, + IX_COUNT // 16 + }; + + // Properties in the code point trie. + enum { + // https://www.unicode.org/reports/tr51/#Emoji_Properties + BIT_EMOJI, + BIT_EMOJI_PRESENTATION, + BIT_EMOJI_MODIFIER, + BIT_EMOJI_MODIFIER_BASE, + BIT_EMOJI_COMPONENT, + BIT_EXTENDED_PICTOGRAPHIC, + // https://www.unicode.org/reports/tr51/#Emoji_Sets + BIT_BASIC_EMOJI + }; + +private: + static UBool U_CALLCONV + isAcceptable(void *context, const char *type, const char *name, const UDataInfo *pInfo); + /** Input i: One of the IX_..._TRIE_OFFSET indexes into the data file indexes[] array. */ + static int32_t getStringTrieIndex(int32_t i) { + return i - IX_BASIC_EMOJI_TRIE_OFFSET; + } + + void load(UErrorCode &errorCode); + UBool hasBinaryPropertyImpl(UChar32 c, UProperty which) const; + UBool hasBinaryPropertyImpl(const UChar *s, int32_t length, UProperty which) const; + + UDataMemory *memory = nullptr; + UCPTrie *cpTrie = nullptr; + const UChar *stringTries[6] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }; +}; + +U_NAMESPACE_END + +#endif // __EMOJIPROPS_H__ diff --git a/deps/icu-small/source/common/filteredbrk.cpp b/deps/icu-small/source/common/filteredbrk.cpp index bc9c576223d70e..e4817367a5aa41 100644 --- a/deps/icu-small/source/common/filteredbrk.cpp +++ b/deps/icu-small/source/common/filteredbrk.cpp @@ -49,7 +49,7 @@ static void _fb_trace(const char *m, const UnicodeString *s, UBool b, int32_t d, /** * Used with sortedInsert() */ -static int8_t U_CALLCONV compareUnicodeString(UElement t1, UElement t2) { +static int32_t U_CALLCONV compareUnicodeString(UElement t1, UElement t2) { const UnicodeString &a = *(const UnicodeString*)t1.pointer; const UnicodeString &b = *(const UnicodeString*)t2.pointer; return a.compare(b); @@ -90,7 +90,6 @@ class U_COMMON_API UStringSet : public UVector { } else { sortedInsert(str, compareUnicodeString, status); if(U_FAILURE(status)) { - delete str; return false; } return true; @@ -138,7 +137,7 @@ static const UChar kFULLSTOP = 0x002E; // '.' */ class SimpleFilteredSentenceBreakData : public UMemory { public: - SimpleFilteredSentenceBreakData(UCharsTrie *forwards, UCharsTrie *backwards ) + SimpleFilteredSentenceBreakData(UCharsTrie *forwards, UCharsTrie *backwards ) : fForwardsPartialTrie(forwards), fBackwardsTrie(backwards), refcount(1) { } SimpleFilteredSentenceBreakData *incr() { umtx_atomic_inc(&refcount); @@ -186,37 +185,37 @@ class SimpleFilteredSentenceBreakIterator : public BreakIterator { /* -- cloning and other subclass stuff -- */ virtual BreakIterator * createBufferClone(void * /*stackBuffer*/, int32_t &/*BufferSize*/, - UErrorCode &status) { + UErrorCode &status) override { // for now - always deep clone status = U_SAFECLONE_ALLOCATED_WARNING; return clone(); } - virtual SimpleFilteredSentenceBreakIterator* clone() const { return new SimpleFilteredSentenceBreakIterator(*this); } - virtual UClassID getDynamicClassID(void) const { return NULL; } - virtual UBool operator==(const BreakIterator& o) const { if(this==&o) return true; return false; } + virtual SimpleFilteredSentenceBreakIterator* clone() const override { return new SimpleFilteredSentenceBreakIterator(*this); } + virtual UClassID getDynamicClassID(void) const override { return NULL; } + virtual bool operator==(const BreakIterator& o) const override { if(this==&o) return true; return false; } /* -- text modifying -- */ - virtual void setText(UText *text, UErrorCode &status) { fDelegate->setText(text,status); } - virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) { fDelegate->refreshInputText(input,status); return *this; } - virtual void adoptText(CharacterIterator* it) { fDelegate->adoptText(it); } - virtual void setText(const UnicodeString &text) { fDelegate->setText(text); } + virtual void setText(UText *text, UErrorCode &status) override { fDelegate->setText(text,status); } + virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) override { fDelegate->refreshInputText(input,status); return *this; } + virtual void adoptText(CharacterIterator* it) override { fDelegate->adoptText(it); } + virtual void setText(const UnicodeString &text) override { fDelegate->setText(text); } /* -- other functions that are just delegated -- */ - virtual UText *getUText(UText *fillIn, UErrorCode &status) const { return fDelegate->getUText(fillIn,status); } - virtual CharacterIterator& getText(void) const { return fDelegate->getText(); } + virtual UText *getUText(UText *fillIn, UErrorCode &status) const override { return fDelegate->getUText(fillIn,status); } + virtual CharacterIterator& getText(void) const override { return fDelegate->getText(); } /* -- ITERATION -- */ - virtual int32_t first(void); - virtual int32_t preceding(int32_t offset); - virtual int32_t previous(void); - virtual UBool isBoundary(int32_t offset); - virtual int32_t current(void) const { return fDelegate->current(); } // we keep the delegate current, so this should be correct. + virtual int32_t first(void) override; + virtual int32_t preceding(int32_t offset) override; + virtual int32_t previous(void) override; + virtual UBool isBoundary(int32_t offset) override; + virtual int32_t current(void) const override { return fDelegate->current(); } // we keep the delegate current, so this should be correct. - virtual int32_t next(void); + virtual int32_t next(void) override; - virtual int32_t next(int32_t n); - virtual int32_t following(int32_t offset); - virtual int32_t last(void); + virtual int32_t next(int32_t n) override; + virtual int32_t following(int32_t offset) override; + virtual int32_t last(void) override; private: /** @@ -235,7 +234,7 @@ class SimpleFilteredSentenceBreakIterator : public BreakIterator { int32_t internalPrev(int32_t n); /** * set up the UText with the value of the fDelegate. - * Call this before calling breakExceptionAt. + * Call this before calling breakExceptionAt. * May be able to avoid excess calls */ void resetState(UErrorCode &status); @@ -388,7 +387,7 @@ SimpleFilteredSentenceBreakIterator::internalNext(int32_t n) { default: case kNoExceptionHere: return n; - } + } } return n; } @@ -417,7 +416,7 @@ SimpleFilteredSentenceBreakIterator::internalPrev(int32_t n) { default: case kNoExceptionHere: return n; - } + } } return n; } @@ -460,9 +459,9 @@ UBool SimpleFilteredSentenceBreakIterator::isBoundary(int32_t offset) { default: case kNoExceptionHere: return true; - } + } } - + int32_t SimpleFilteredSentenceBreakIterator::next(int32_t offset) { return internalNext(fDelegate->next(offset)); @@ -488,9 +487,9 @@ class U_COMMON_API SimpleFilteredBreakIteratorBuilder : public FilteredBreakIter virtual ~SimpleFilteredBreakIteratorBuilder(); SimpleFilteredBreakIteratorBuilder(const Locale &fromLocale, UErrorCode &status); SimpleFilteredBreakIteratorBuilder(UErrorCode &status); - virtual UBool suppressBreakAfter(const UnicodeString& exception, UErrorCode& status); - virtual UBool unsuppressBreakAfter(const UnicodeString& exception, UErrorCode& status); - virtual BreakIterator *build(BreakIterator* adoptBreakIterator, UErrorCode& status); + virtual UBool suppressBreakAfter(const UnicodeString& exception, UErrorCode& status) override; + virtual UBool unsuppressBreakAfter(const UnicodeString& exception, UErrorCode& status) override; + virtual BreakIterator *build(BreakIterator* adoptBreakIterator, UErrorCode& status) override; private: UStringSet fSet; }; @@ -499,7 +498,7 @@ SimpleFilteredBreakIteratorBuilder::~SimpleFilteredBreakIteratorBuilder() { } -SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(UErrorCode &status) +SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(UErrorCode &status) : fSet(status) { } @@ -510,16 +509,16 @@ SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(const Loc if(U_SUCCESS(status)) { UErrorCode subStatus = U_ZERO_ERROR; LocalUResourceBundlePointer b(ures_open(U_ICUDATA_BRKITR, fromLocale.getBaseName(), &subStatus)); - if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { - status = subStatus; // copy the failing status + if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { + status = subStatus; // copy the failing status #if FB_DEBUG fprintf(stderr, "open BUNDLE %s : %s, %s\n", fromLocale.getBaseName(), "[exit]", u_errorName(status)); #endif return; // leaves the builder empty, if you try to use it. } LocalUResourceBundlePointer exceptions(ures_getByKeyWithFallback(b.getAlias(), "exceptions", NULL, &subStatus)); - if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { - status = subStatus; // copy the failing status + if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { + status = subStatus; // copy the failing status #if FB_DEBUG fprintf(stderr, "open EXCEPTIONS %s : %s, %s\n", fromLocale.getBaseName(), "[exit]", u_errorName(status)); #endif @@ -533,9 +532,9 @@ SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(const Loc fprintf(stderr, "open SentenceBreak %s => %s, %s\n", fromLocale.getBaseName(), ures_getLocale(breaks.getAlias(), &subsub), u_errorName(subStatus)); } #endif - - if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { - status = subStatus; // copy the failing status + + if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) { + status = subStatus; // copy the failing status #if FB_DEBUG fprintf(stderr, "open %s : %s, %s\n", fromLocale.getBaseName(), "[exit]", u_errorName(status)); #endif @@ -543,7 +542,7 @@ SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(const Loc } LocalUResourceBundlePointer strs; - subStatus = status; // Pick up inherited warning status now + subStatus = status; // Pick up inherited warning status now do { strs.adoptInstead(ures_getNextResource(breaks.getAlias(), strs.orphan(), &subStatus)); if(strs.isValid() && U_SUCCESS(subStatus)) { @@ -600,7 +599,7 @@ SimpleFilteredBreakIteratorBuilder::build(BreakIterator* adoptBreakIterator, UEr int32_t subCount = fSet.size(); UnicodeString *ustrs_ptr = newUnicodeStringArray(subCount); - + LocalArray ustrs(ustrs_ptr); LocalMemory partials; diff --git a/deps/icu-small/source/common/hash.h b/deps/icu-small/source/common/hash.h index 0b0f349999ce82..b927ddb3c365af 100644 --- a/deps/icu-small/source/common/hash.h +++ b/deps/icu-small/source/common/hash.h @@ -264,3 +264,4 @@ inline UBool Hashtable::equals(const Hashtable& that)const{ U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/common/icudataver.cpp b/deps/icu-small/source/common/icudataver.cpp index 6dd3ea1baee607..d31441137416be 100644 --- a/deps/icu-small/source/common/icudataver.cpp +++ b/deps/icu-small/source/common/icudataver.cpp @@ -16,11 +16,11 @@ U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status) { UResourceBundle *icudatares = NULL; - + if (U_FAILURE(*status)) { return; } - + if (dataVersionFillin != NULL) { icudatares = ures_openDirect(NULL, U_ICU_VERSION_BUNDLE , status); if (U_SUCCESS(*status)) { diff --git a/deps/icu-small/source/common/icuplug.cpp b/deps/icu-small/source/common/icuplug.cpp index 944df5465d0dd2..52a0deced6d332 100644 --- a/deps/icu-small/source/common/icuplug.cpp +++ b/deps/icu-small/source/common/icuplug.cpp @@ -45,7 +45,7 @@ using namespace icu; #endif /** - * Internal structure of an ICU plugin. + * Internal structure of an ICU plugin. */ struct UPlugData { @@ -75,21 +75,21 @@ struct UPlugData { * @param listSize the number of entries in the list * @param memberSize the size of one member * @param itemToRemove the item number of the member - * @return the new listsize + * @return the new listsize */ static int32_t uplug_removeEntryAt(void *list, int32_t listSize, int32_t memberSize, int32_t itemToRemove) { uint8_t *bytePtr = (uint8_t *)list; - + /* get rid of some bad cases first */ if(listSize<1) { return listSize; } - + /* is there anything to move? */ if(listSize > itemToRemove+1) { memmove(bytePtr+(itemToRemove*memberSize), bytePtr+((itemToRemove+1)*memberSize), memberSize); } - + return listSize-1; } @@ -98,13 +98,13 @@ static int32_t uplug_removeEntryAt(void *list, int32_t listSize, int32_t memberS #if U_ENABLE_DYLOAD /** - * Library management. Internal. + * Library management. Internal. * @internal */ struct UPlugLibrary; /** - * Library management. Internal. + * Library management. Internal. * @internal */ typedef struct UPlugLibrary { @@ -125,7 +125,7 @@ static int32_t libraryMax = UPLUG_LIBRARY_INITIAL_COUNT; */ static int32_t searchForLibraryName(const char *libName) { int32_t i; - + for(i=0;i=pastPlug) { return NULL; } else { @@ -284,9 +284,9 @@ static void uplug_callPlug(UPlugData *plug, UPlugReason reason, UErrorCode *stat static void uplug_unloadPlug(UPlugData *plug, UErrorCode *status) { - if(plug->awaitingLoad) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/ + if(plug->awaitingLoad) { /* shouldn't happen. Plugin hasn't been loaded yet.*/ *status = U_INTERNAL_PROGRAM_ERROR; - return; + return; } if(U_SUCCESS(plug->pluginStatus)) { /* Don't unload a plug which has a failing load status - means it didn't actually load. */ @@ -295,13 +295,13 @@ static void uplug_unloadPlug(UPlugData *plug, UErrorCode *status) { } static void uplug_queryPlug(UPlugData *plug, UErrorCode *status) { - if(!plug->awaitingLoad || !(plug->level == UPLUG_LEVEL_UNKNOWN) ) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/ + if(!plug->awaitingLoad || !(plug->level == UPLUG_LEVEL_UNKNOWN) ) { /* shouldn't happen. Plugin hasn't been loaded yet.*/ *status = U_INTERNAL_PROGRAM_ERROR; - return; + return; } plug->level = UPLUG_LEVEL_INVALID; uplug_callPlug(plug, UPLUG_REASON_QUERY, status); - if(U_SUCCESS(*status)) { + if(U_SUCCESS(*status)) { if(plug->level == UPLUG_LEVEL_INVALID) { plug->pluginStatus = U_PLUGIN_DIDNT_SET_LEVEL; plug->awaitingLoad = FALSE; @@ -317,7 +317,7 @@ static void uplug_loadPlug(UPlugData *plug, UErrorCode *status) { if(U_FAILURE(*status)) { return; } - if(!plug->awaitingLoad || (plug->level < UPLUG_LEVEL_LOW) ) { /* shouldn't happen. Plugin hasn'tbeen loaded yet.*/ + if(!plug->awaitingLoad || (plug->level < UPLUG_LEVEL_LOW) ) { /* shouldn't happen. Plugin hasn't been loaded yet.*/ *status = U_INTERNAL_PROGRAM_ERROR; return; } @@ -372,17 +372,17 @@ static UPlugData *uplug_allocatePlug(UPlugEntrypoint *entrypoint, const char *co } else { plug->config[0] = 0; } - + if(symName!=NULL) { uprv_strncpy(plug->sym, symName, UPLUG_NAME_MAX); } else { plug->sym[0] = 0; } - + plug->entrypoint = entrypoint; plug->lib = lib; uplug_queryPlug(plug, status); - + return plug; } @@ -421,7 +421,7 @@ uplug_removePlug(UPlugData *plug, UErrorCode *status) { UPlugData *cursor = NULL; UPlugData *plugToRemove = NULL; if(U_FAILURE(*status)) return; - + for(cursor=pluginList;cursor!=NULL;) { if(cursor==plug) { plugToRemove = plug; @@ -430,14 +430,14 @@ uplug_removePlug(UPlugData *plug, UErrorCode *status) { cursor = uplug_nextPlug(cursor); } } - + uplug_doUnloadPlug(plugToRemove, status); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uplug_setPlugNoUnload(UPlugData *data, UBool dontUnload) { data->dontUnload = dontUnload; @@ -508,10 +508,10 @@ uplug_getConfiguration(UPlugData *data) { } U_CAPI UPlugData* U_EXPORT2 -uplug_getPlugInternal(int32_t n) { +uplug_getPlugInternal(int32_t n) { if(n <0 || n >= pluginCount) { return NULL; - } else { + } else { return &(pluginList[n]); } } @@ -526,7 +526,7 @@ uplug_getPlugLoadStatus(UPlugData *plug) { /** - * Initialize a plugin fron an entrypoint and library - but don't load it. + * Initialize a plugin from an entrypoint and library - but don't load it. */ static UPlugData* uplug_initPlugFromEntrypointAndLibrary(UPlugEntrypoint *entrypoint, const char *config, void *lib, const char *sym, UErrorCode *status) { @@ -551,7 +551,7 @@ uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UE #if U_ENABLE_DYLOAD -static UPlugData* +static UPlugData* uplug_initErrorPlug(const char *libName, const char *sym, const char *config, const char *nameOrError, UErrorCode loadStatus, UErrorCode *status) { UPlugData *plug = uplug_allocateEmptyPlug(status); @@ -583,7 +583,7 @@ uplug_initErrorPlug(const char *libName, const char *sym, const char *config, co /** * Fetch a plugin from DLL, and then initialize it from a library- but don't load it. */ -static UPlugData* +static UPlugData* uplug_initPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status) { void *lib = NULL; UPlugData *plug = NULL; @@ -615,7 +615,7 @@ uplug_initPlugFromLibrary(const char *libName, const char *sym, const char *conf } U_CAPI UPlugData* U_EXPORT2 -uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status) { +uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status) { UPlugData *plug = NULL; if(U_FAILURE(*status)) { return NULL; } plug = uplug_initPlugFromLibrary(libName, sym, config, status); @@ -635,7 +635,7 @@ U_CAPI UPlugLevel U_EXPORT2 uplug_getCurrentLevel() { static UBool U_CALLCONV uplug_cleanup(void) { int32_t i; - + UPlugData *pluginToRemove; /* cleanup plugs */ for(i=0;iawaitingLoad = FALSE; - } + } } - } + } for(i=0;iawaitingLoad) { - if(pluginToLoad->level == UPLUG_LEVEL_INVALID) { + if(pluginToLoad->level == UPLUG_LEVEL_INVALID) { pluginToLoad->pluginStatus = U_PLUGIN_DIDNT_SET_LEVEL; } else if(pluginToLoad->level == UPLUG_LEVEL_UNKNOWN) { pluginToLoad->pluginStatus = U_INTERNAL_PROGRAM_ERROR; @@ -697,7 +697,7 @@ static void uplug_loadWaitingPlugs(UErrorCode *status) { pluginToLoad->awaitingLoad = FALSE; } } - + #if UPLUG_TRACE DBG((stderr, " Done Loading Plugs. Level: %d\n", (int32_t)uplug_getCurrentLevel())); #endif @@ -733,7 +733,7 @@ uplug_init(UErrorCode *status) { } if(U_FAILURE(*status)) return; -#if defined(DEFAULT_ICU_PLUGINS) +#if defined(DEFAULT_ICU_PLUGINS) if(plugin_dir.isEmpty()) { plugin_dir.append(DEFAULT_ICU_PLUGINS, -1, *status); } @@ -745,7 +745,7 @@ uplug_init(UErrorCode *status) { if(!plugin_dir.isEmpty()) { FILE *f; - + CharString pluginFile; #ifdef OS390BATCH /* There are potentially a lot of ways to implement a plugin directory on OS390/zOS */ @@ -778,8 +778,8 @@ uplug_init(UErrorCode *status) { #endif return; } - - /* plugin_file is not used for processing - it is only used + + /* plugin_file is not used for processing - it is only used so that uplug_getPluginFile() works (i.e. icuinfo) */ pluginFile.extract(plugin_file, sizeof(plugin_file), *status); @@ -787,7 +787,7 @@ uplug_init(UErrorCode *status) { #if UPLUG_TRACE DBG((stderr, "pluginfile= %s len %d/%d\n", plugin_file, (int)strlen(plugin_file), (int)sizeof(plugin_file))); #endif - + #ifdef __MVS__ if (iscics()) /* 12 Nov 2011 JAM */ { @@ -803,8 +803,8 @@ uplug_init(UErrorCode *status) { char linebuf[1024]; char *p, *libName=NULL, *symName=NULL, *config=NULL; int32_t line = 0; - - + + while(fgets(linebuf,1023,f)) { line++; @@ -830,7 +830,7 @@ uplug_init(UErrorCode *status) { while(*p&&!isspace((int)*p)) { p++; } - + if(*p) { /* has config */ *p=0; ++p; @@ -841,7 +841,7 @@ uplug_init(UErrorCode *status) { config = p; } } - + /* chop whitespace at the end of the config */ if(config!=NULL&&*config!=0) { p = config+strlen(config); @@ -849,9 +849,9 @@ uplug_init(UErrorCode *status) { *p=0; } } - + /* OK, we're good. */ - { + { UErrorCode subStatus = U_ZERO_ERROR; UPlugData *plug = uplug_initPlugFromLibrary(libName, symName, config, &subStatus); if(U_FAILURE(subStatus) && U_SUCCESS(*status)) { @@ -880,3 +880,5 @@ uplug_init(UErrorCode *status) { } #endif + + diff --git a/deps/icu-small/source/common/icuplugimp.h b/deps/icu-small/source/common/icuplugimp.h index 712fdb236fde35..9df309204e7a1d 100644 --- a/deps/icu-small/source/common/icuplugimp.h +++ b/deps/icu-small/source/common/icuplugimp.h @@ -9,7 +9,7 @@ ****************************************************************************** * * FILE NAME : icuplugimp.h -* +* * Internal functions for the ICU plugin system * * Date Name Description @@ -26,7 +26,7 @@ #if UCONFIG_ENABLE_PLUGINS /*========================*/ -/** @{ Library Manipulation +/** @{ Library Manipulation */ /** @@ -65,7 +65,7 @@ uplug_findLibrary(void *lib, UErrorCode *status); */ /** - * Initialize the plugins + * Initialize the plugins * @param status error result * @internal - Internal use only. */ @@ -75,12 +75,12 @@ uplug_init(UErrorCode *status); /** * Get raw plug N * @internal - Internal use only - */ + */ U_CAPI UPlugData* U_EXPORT2 uplug_getPlugInternal(int32_t n); /** - * Get the name of the plugin file. + * Get the name of the plugin file. * @internal - Internal use only. */ U_CAPI const char* U_EXPORT2 diff --git a/deps/icu-small/source/common/loadednormalizer2impl.cpp b/deps/icu-small/source/common/loadednormalizer2impl.cpp index e4b36f1055f15d..905fc1deccb974 100644 --- a/deps/icu-small/source/common/loadednormalizer2impl.cpp +++ b/deps/icu-small/source/common/loadednormalizer2impl.cpp @@ -157,7 +157,7 @@ static void U_CALLCONV initSingletons(const char *what, UErrorCode &errorCode) { } else if (uprv_strcmp(what, "nfkc_cf") == 0) { nfkc_cfSingleton = Norm2AllModes::createInstance(NULL, "nfkc_cf", errorCode); } else { - UPRV_UNREACHABLE; // Unknown singleton + UPRV_UNREACHABLE_EXIT; // Unknown singleton } ucln_common_registerCleanup(UCLN_COMMON_LOADED_NORMALIZER2, uprv_loaded_normalizer2_cleanup); } diff --git a/deps/icu-small/source/common/localebuilder.cpp b/deps/icu-small/source/common/localebuilder.cpp index 1dd8131e5895a5..a5f201e8475b5c 100644 --- a/deps/icu-small/source/common/localebuilder.cpp +++ b/deps/icu-small/source/common/localebuilder.cpp @@ -228,7 +228,7 @@ LocaleBuilder& LocaleBuilder::setExtension(char key, StringPiece value) return *this; } if (extensions_ == nullptr) { - extensions_ = new Locale(); + extensions_ = Locale::getRoot().clone(); if (extensions_ == nullptr) { status_ = U_MEMORY_ALLOCATION_ERROR; return *this; @@ -259,11 +259,11 @@ LocaleBuilder& LocaleBuilder::setUnicodeLocaleKeyword( return *this; } if (extensions_ == nullptr) { - extensions_ = new Locale(); - } - if (extensions_ == nullptr) { - status_ = U_MEMORY_ALLOCATION_ERROR; - return *this; + extensions_ = Locale::getRoot().clone(); + if (extensions_ == nullptr) { + status_ = U_MEMORY_ALLOCATION_ERROR; + return *this; + } } extensions_->setUnicodeKeywordValue(key, type, status_); return *this; @@ -280,7 +280,7 @@ LocaleBuilder& LocaleBuilder::addUnicodeLocaleAttribute( return *this; } if (extensions_ == nullptr) { - extensions_ = new Locale(); + extensions_ = Locale::getRoot().clone(); if (extensions_ == nullptr) { status_ = U_MEMORY_ALLOCATION_ERROR; return *this; @@ -415,7 +415,7 @@ void LocaleBuilder::copyExtensionsFrom(const Locale& src, UErrorCode& errorCode) return; } if (extensions_ == nullptr) { - extensions_ = new Locale(); + extensions_ = Locale::getRoot().clone(); if (extensions_ == nullptr) { status_ = U_MEMORY_ALLOCATION_ERROR; return; diff --git a/deps/icu-small/source/common/localematcher.cpp b/deps/icu-small/source/common/localematcher.cpp index 132aee290e81a8..3d178dfbaf1732 100644 --- a/deps/icu-small/source/common/localematcher.cpp +++ b/deps/icu-small/source/common/localematcher.cpp @@ -187,7 +187,7 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocalesFromListStrin for (int32_t i = 0; i < length; ++i) { Locale *locale = list.orphanLocaleAt(i); if (locale == nullptr) { continue; } - supportedLocales_->addElement(locale, errorCode_); + supportedLocales_->addElementX(locale, errorCode_); if (U_FAILURE(errorCode_)) { delete locale; break; @@ -207,7 +207,7 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::setSupportedLocales(Locale::Iter errorCode_ = U_MEMORY_ALLOCATION_ERROR; break; } - supportedLocales_->addElement(clone, errorCode_); + supportedLocales_->addElementX(clone, errorCode_); if (U_FAILURE(errorCode_)) { delete clone; break; @@ -223,7 +223,7 @@ LocaleMatcher::Builder &LocaleMatcher::Builder::addSupportedLocale(const Locale errorCode_ = U_MEMORY_ALLOCATION_ERROR; return *this; } - supportedLocales_->addElement(clone, errorCode_); + supportedLocales_->addElementX(clone, errorCode_); if (U_FAILURE(errorCode_)) { delete clone; } diff --git a/deps/icu-small/source/common/localsvc.h b/deps/icu-small/source/common/localsvc.h index 0339a44dcd95ec..33640195135bd8 100644 --- a/deps/icu-small/source/common/localsvc.h +++ b/deps/icu-small/source/common/localsvc.h @@ -16,7 +16,7 @@ /** * Prototype for user-supplied service hook. This function is expected to return * a type of factory object specific to the requested service. - * + * * @param what service-specific string identifying the specific user hook * @param status error status * @return a service-specific hook, or NULL on failure. diff --git a/deps/icu-small/source/common/locavailable.cpp b/deps/icu-small/source/common/locavailable.cpp index ad9d2ca8c7bb53..e8ec512e370992 100644 --- a/deps/icu-small/source/common/locavailable.cpp +++ b/deps/icu-small/source/common/locavailable.cpp @@ -64,7 +64,7 @@ U_NAMESPACE_BEGIN void U_CALLCONV locale_available_init() { // This function is a friend of class Locale. // This function is only invoked via umtx_initOnce(). - + // for now, there is a hardcoded list, so just walk through that list and set it up. // Note: this function is a friend of class Locale. availableLocaleListCount = uloc_countAvailable(); diff --git a/deps/icu-small/source/common/locbased.h b/deps/icu-small/source/common/locbased.h index 9163bd11cfe65f..45738863b5ec96 100644 --- a/deps/icu-small/source/common/locbased.h +++ b/deps/icu-small/source/common/locbased.h @@ -88,7 +88,7 @@ class U_COMMON_API LocaleBased : public UMemory { private: char* valid; - + char* actual; }; diff --git a/deps/icu-small/source/common/locdispnames.cpp b/deps/icu-small/source/common/locdispnames.cpp index 3166c76bf5a7fd..c512a0164c22a0 100644 --- a/deps/icu-small/source/common/locdispnames.cpp +++ b/deps/icu-small/source/common/locdispnames.cpp @@ -298,7 +298,7 @@ static const char _kSeparator[] = "separator"; static int32_t _getStringOrCopyKey(const char *path, const char *locale, - const char *tableKey, + const char *tableKey, const char* subTableKey, const char *itemKey, const char *substitute, @@ -316,8 +316,9 @@ _getStringOrCopyKey(const char *path, const char *locale, /* see comment about closing rb near "return item;" in _res_getTableStringWithFallback() */ } } else { + bool isLanguageCode = (uprv_strncmp(tableKey, _kLanguages, 9) == 0); /* Language code should not be a number. If it is, set the error code. */ - if (!uprv_strncmp(tableKey, "Languages", 9) && uprv_strtol(itemKey, NULL, 10)) { + if (isLanguageCode && uprv_strtol(itemKey, NULL, 10)) { *pErrorCode = U_MISSING_RESOURCE_ERROR; } else { /* second-level item, use special fallback */ @@ -327,6 +328,17 @@ _getStringOrCopyKey(const char *path, const char *locale, itemKey, &length, pErrorCode); + if (U_FAILURE(*pErrorCode) && isLanguageCode && itemKey != nullptr) { + // convert itemKey locale code to canonical form and try again, ICU-20870 + *pErrorCode = U_ZERO_ERROR; + Locale canonKey = Locale::createCanonical(itemKey); + s=uloc_getTableStringWithFallback(path, locale, + tableKey, + subTableKey, + canonKey.getName(), + &length, + pErrorCode); + } } } @@ -496,7 +508,7 @@ uloc_getDisplayName(const char *locale, const UChar *pattern; int32_t patLen = 0; int32_t sub0Pos, sub1Pos; - + UChar formatOpenParen = 0x0028; // ( UChar formatReplaceOpenParen = 0x005B; // [ UChar formatCloseParen = 0x0029; // ) @@ -793,9 +805,9 @@ uloc_getDisplayKeyword(const char* keyword, /* pass itemKey=NULL to look for a top-level item */ return _getStringOrCopyKey(U_ICUDATA_LANG, displayLocale, - _kKeys, NULL, - keyword, - keyword, + _kKeys, NULL, + keyword, + keyword, dest, destCapacity, status); @@ -830,8 +842,8 @@ uloc_getDisplayKeywordValue( const char* locale, ulocimp_getKeywordValue(locale, keyword, sink, status); } - /* - * if the keyword is equal to currency .. then to get the display name + /* + * if the keyword is equal to currency .. then to get the display name * we need to do the fallback ourselves */ if(uprv_stricmp(keyword, _kCurrency)==0){ @@ -877,11 +889,11 @@ uloc_getDisplayKeywordValue( const char* locale, } } - + }else{ return _getStringOrCopyKey(U_ICUDATA_LANG, displayLocale, - _kTypes, keyword, + _kTypes, keyword, keywordValue.data(), keywordValue.data(), dest, destCapacity, diff --git a/deps/icu-small/source/common/locdspnm.cpp b/deps/icu-small/source/common/locdspnm.cpp index 43334f51964622..f73cedd72866a0 100644 --- a/deps/icu-small/source/common/locdspnm.cpp +++ b/deps/icu-small/source/common/locdspnm.cpp @@ -313,29 +313,29 @@ class LocaleDisplayNamesImpl : public LocaleDisplayNames { LocaleDisplayNamesImpl(const Locale& locale, UDisplayContext *contexts, int32_t length); virtual ~LocaleDisplayNamesImpl(); - virtual const Locale& getLocale() const; - virtual UDialectHandling getDialectHandling() const; - virtual UDisplayContext getContext(UDisplayContextType type) const; + virtual const Locale& getLocale() const override; + virtual UDialectHandling getDialectHandling() const override; + virtual UDisplayContext getContext(UDisplayContextType type) const override; virtual UnicodeString& localeDisplayName(const Locale& locale, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& localeDisplayName(const char* localeId, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& languageDisplayName(const char* lang, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& scriptDisplayName(const char* script, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& regionDisplayName(const char* region, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& variantDisplayName(const char* variant, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& keyDisplayName(const char* key, - UnicodeString& result) const; + UnicodeString& result) const override; virtual UnicodeString& keyValueDisplayName(const char* key, const char* value, - UnicodeString& result) const; + UnicodeString& result) const override; private: UnicodeString& localeIdName(const char* localeId, UnicodeString& result, bool substitute) const; @@ -407,7 +407,7 @@ struct LocaleDisplayNamesImpl::CapitalizationContextSink : public ResourceSink { virtual ~CapitalizationContextSink(); virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { ResourceTable contexts = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } for (int i = 0; contexts.getKeyAndValue(i, key, value); ++i) { @@ -723,11 +723,25 @@ LocaleDisplayNamesImpl::localeIdName(const char* localeId, return result; } } - if (substitute) { - return langData.get("Languages", localeId, result); - } else { - return langData.getNoFallback("Languages", localeId, result); + langData.getNoFallback("Languages", localeId, result); + if (result.isBogus() && uprv_strchr(localeId, '_') == NULL) { + // Canonicalize lang and try again, ICU-20870 + // (only for language codes without script or region) + Locale canonLocale = Locale::createCanonical(localeId); + const char* canonLocId = canonLocale.getName(); + if (nameLength == UDISPCTX_LENGTH_SHORT) { + langData.getNoFallback("Languages%short", canonLocId, result); + if (!result.isBogus()) { + return result; + } + } + langData.getNoFallback("Languages", canonLocId, result); } + if (result.isBogus() && substitute) { + // use key, this is what langData.get (with fallback) falls back to. + result.setTo(UnicodeString(localeId, -1, US_INV)); // use key ( + } + return result; } UnicodeString& @@ -742,10 +756,22 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang, return adjustForUsageAndContext(kCapContextUsageLanguage, result); } } - if (substitute == UDISPCTX_SUBSTITUTE) { - langData.get("Languages", lang, result); - } else { - langData.getNoFallback("Languages", lang, result); + langData.getNoFallback("Languages", lang, result); + if (result.isBogus()) { + // Canonicalize lang and try again, ICU-20870 + Locale canonLocale = Locale::createCanonical(lang); + const char* canonLocId = canonLocale.getName(); + if (nameLength == UDISPCTX_LENGTH_SHORT) { + langData.getNoFallback("Languages%short", canonLocId, result); + if (!result.isBogus()) { + return adjustForUsageAndContext(kCapContextUsageLanguage, result); + } + } + langData.getNoFallback("Languages", canonLocId, result); + } + if (result.isBogus() && substitute == UDISPCTX_SUBSTITUTE) { + // use key, this is what langData.get (with fallback) falls back to. + result.setTo(UnicodeString(lang, -1, US_INV)); // use key ( } return adjustForUsageAndContext(kCapContextUsageLanguage, result); } diff --git a/deps/icu-small/source/common/locid.cpp b/deps/icu-small/source/common/locid.cpp index 0d506293a99eca..e8859c7048b110 100644 --- a/deps/icu-small/source/common/locid.cpp +++ b/deps/icu-small/source/common/locid.cpp @@ -297,13 +297,12 @@ Locale::Locale( const char * newLanguage, else { UErrorCode status = U_ZERO_ERROR; - int32_t size = 0; int32_t lsize = 0; int32_t csize = 0; int32_t vsize = 0; int32_t ksize = 0; - // Calculate the size of the resulting string. + // Check the sizes of the input strings. // Language if ( newLanguage != NULL ) @@ -313,7 +312,6 @@ Locale::Locale( const char * newLanguage, setToBogus(); return; } - size = lsize; } CharString togo(newLanguage, lsize, status); // start with newLanguage @@ -326,7 +324,6 @@ Locale::Locale( const char * newLanguage, setToBogus(); return; } - size += csize; } // _Variant @@ -350,21 +347,6 @@ Locale::Locale( const char * newLanguage, } } - if( vsize > 0 ) - { - size += vsize; - } - - // Separator rules: - if ( vsize > 0 ) - { - size += 2; // at least: __v - } - else if ( csize > 0 ) - { - size += 1; // at least: _v - } - if ( newKeywords != NULL) { ksize = (int32_t)uprv_strlen(newKeywords); @@ -372,11 +354,9 @@ Locale::Locale( const char * newLanguage, setToBogus(); return; } - size += ksize + 1; } - // NOW we have the full locale string.. - // Now, copy it back. + // We've checked the input sizes, now build up the full locale string.. // newLanguage is already copied @@ -469,14 +449,18 @@ Locale& Locale::operator=(Locale&& other) U_NOEXCEPT { if ((baseName != fullName) && (baseName != fullNameBuffer)) uprv_free(baseName); if (fullName != fullNameBuffer) uprv_free(fullName); - if (other.fullName == other.fullNameBuffer) { + if (other.fullName == other.fullNameBuffer || other.baseName == other.fullNameBuffer) { uprv_strcpy(fullNameBuffer, other.fullNameBuffer); + } + if (other.fullName == other.fullNameBuffer) { fullName = fullNameBuffer; } else { fullName = other.fullName; } - if (other.baseName == other.fullName) { + if (other.baseName == other.fullNameBuffer) { + baseName = fullNameBuffer; + } else if (other.baseName == other.fullName) { baseName = fullName; } else { baseName = other.baseName; @@ -499,7 +483,7 @@ Locale::clone() const { return new Locale(*this); } -UBool +bool Locale::operator==( const Locale& other) const { return (uprv_strcmp(other.fullName, fullName) == 0); @@ -768,7 +752,7 @@ AliasDataBuilder::readLanguageAlias( alias, strings, types, replacementIndexes, length, #if U_DEBUG [](const char* type) { - // Assert the aliasFrom only contains the following possibilties + // Assert the aliasFrom only contains the following possibilities // language_REGION_variant // language_REGION // language_variant @@ -1227,7 +1211,7 @@ AliasReplacer::parseLanguageReplacement( status = U_MEMORY_ALLOCATION_ERROR; return; } - toBeFreed.addElement(str, status); + toBeFreed.addElementX(str, status); char* data = str->data(); replacedLanguage = (const char*) data; char* endOfField = uprv_strchr(data, '_'); @@ -1367,7 +1351,7 @@ AliasReplacer::replaceLanguage( } if (replacedExtensions != nullptr) { // DO NOTHING - // UTS35 does not specifiy what should we do if we have extensions in the + // UTS35 does not specify what should we do if we have extensions in the // replacement. Currently we know only the following 4 "BCP47 LegacyRules" have // extensions in them languageAlias: // i_default => en_x_i_default @@ -1441,7 +1425,7 @@ AliasReplacer::replaceTerritory(UVector& toBeFreed, UErrorCode& status) return false; } replacedRegion = item->data(); - toBeFreed.addElement(item.orphan(), status); + toBeFreed.addElementX(item.orphan(), status); } U_ASSERT(!same(region, replacedRegion)); region = replacedRegion; @@ -1567,6 +1551,7 @@ AliasReplacer::replaceTransformedExtensions( const char* tvalue = uprv_strchr(tkey, '-'); if (tvalue == nullptr) { status = U_ILLEGAL_ARGUMENT_ERROR; + return false; } const char* nextTKey = ultag_getTKeyStart(tvalue); if (nextTKey != nullptr) { @@ -1578,13 +1563,8 @@ AliasReplacer::replaceTransformedExtensions( } tkey = nextTKey; } while (tkey != nullptr); - tfields.sort([](UElement e1, UElement e2) -> int8_t { - // uprv_strcmp return int and in some platform, such as arm64-v8a, - // it may return positive values > 127 which cause the casted value - // of int8_t negative. - int res = uprv_strcmp( - (const char*)e1.pointer, (const char*)e2.pointer); - return (res == 0) ? 0 : ((res > 0) ? 1 : -1); + tfields.sort([](UElement e1, UElement e2) -> int32_t { + return uprv_strcmp((const char*)e1.pointer, (const char*)e2.pointer); }, status); for (int32_t i = 0; i < tfields.size(); i++) { if (output.length() > 0) { @@ -1592,8 +1572,11 @@ AliasReplacer::replaceTransformedExtensions( } const char* tfield = (const char*) tfields.elementAt(i); const char* tvalue = uprv_strchr(tfield, '-'); + if (tvalue == nullptr) { + status = U_ILLEGAL_ARGUMENT_ERROR; + return false; + } // Split the "tkey-tvalue" pair string so that we can canonicalize the tvalue. - U_ASSERT(tvalue != nullptr); *((char*)tvalue++) = '\0'; // NULL terminate tkey output.append(tfield, status).append('-', status); const char* bcpTValue = ulocimp_toBcpType(tfield, tvalue, nullptr, nullptr); @@ -1623,13 +1606,8 @@ AliasReplacer::outputToString( if (!notEmpty(script) && !notEmpty(region)) { out.append(SEP_CHAR, status); } - variants.sort([](UElement e1, UElement e2) -> int8_t { - // uprv_strcmp return int and in some platform, such as arm64-v8a, - // it may return positive values > 127 which cause the casted value - // of int8_t negative. - int res = uprv_strcmp( - (const char*)e1.pointer, (const char*)e2.pointer); - return (res == 0) ? 0 : ((res > 0) ? 1 : -1); + variants.sort([](UElement e1, UElement e2) -> int32_t { + return uprv_strcmp((const char*)e1.pointer, (const char*)e2.pointer); }, status); int32_t variantsStart = out.length(); for (int32_t i = 0; i < variants.size(); i++) { @@ -1681,21 +1659,16 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status while ((end = uprv_strchr(start, SEP_CHAR)) != nullptr && U_SUCCESS(status)) { *end = NULL_CHAR; // null terminate inside variantsBuff - variants.addElement(start, status); + variants.addElementX(start, status); start = end + 1; } - variants.addElement(start, status); + variants.addElementX(start, status); } if (U_FAILURE(status)) { return false; } // Sort the variants - variants.sort([](UElement e1, UElement e2) -> int8_t { - // uprv_strcmp return int and in some platform, such as arm64-v8a, - // it may return positive values > 127 which cause the casted value - // of int8_t negative. - int res = uprv_strcmp( - (const char*)e1.pointer, (const char*)e2.pointer); - return (res == 0) ? 0 : ((res > 0) ? 1 : -1); + variants.sort([](UElement e1, UElement e2) -> int32_t { + return uprv_strcmp((const char*)e1.pointer, (const char*)e2.pointer); }, status); // A changed count to assert when loop too many times. @@ -1737,7 +1710,7 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status } // while(1) if (U_FAILURE(status)) { return false; } - // Nothing changed and we know the order of the vaiants are not change + // Nothing changed and we know the order of the variants are not change // because we have no variant or only one. const char* extensionsStr = locale_getKeywordsStart(locale.getName()); if (changed == 0 && variants.size() <= 1 && extensionsStr == nullptr) { @@ -2445,7 +2418,7 @@ class KeywordEnumeration : public StringEnumeration { public: static UClassID U_EXPORT2 getStaticClassID(void) { return (UClassID)&fgClassID; } - virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); } + virtual UClassID getDynamicClassID(void) const override { return getStaticClassID(); } public: KeywordEnumeration(const char *keys, int32_t keywordLen, int32_t currentIndex, UErrorCode &status) : keywords((char *)&fgClassID), current((char *)&fgClassID), length(0) { @@ -2469,13 +2442,13 @@ class KeywordEnumeration : public StringEnumeration { virtual ~KeywordEnumeration(); - virtual StringEnumeration * clone() const + virtual StringEnumeration * clone() const override { UErrorCode status = U_ZERO_ERROR; return new KeywordEnumeration(keywords, length, (int32_t)(current - keywords), status); } - virtual int32_t count(UErrorCode &/*status*/) const { + virtual int32_t count(UErrorCode &/*status*/) const override { char *kw = keywords; int32_t result = 0; while(*kw) { @@ -2485,7 +2458,7 @@ class KeywordEnumeration : public StringEnumeration { return result; } - virtual const char* next(int32_t* resultLength, UErrorCode& status) { + virtual const char* next(int32_t* resultLength, UErrorCode& status) override { const char* result; int32_t len; if(U_SUCCESS(status) && *current != 0) { @@ -2504,13 +2477,13 @@ class KeywordEnumeration : public StringEnumeration { return result; } - virtual const UnicodeString* snext(UErrorCode& status) { + virtual const UnicodeString* snext(UErrorCode& status) override { int32_t resultLength = 0; const char *s = next(&resultLength, status); return setChars(s, resultLength, status); } - virtual void reset(UErrorCode& /*status*/) { + virtual void reset(UErrorCode& /*status*/) override { current = keywords; } }; @@ -2528,18 +2501,18 @@ class UnicodeKeywordEnumeration : public KeywordEnumeration { using KeywordEnumeration::KeywordEnumeration; virtual ~UnicodeKeywordEnumeration(); - virtual const char* next(int32_t* resultLength, UErrorCode& status) { + virtual const char* next(int32_t* resultLength, UErrorCode& status) override { const char* legacy_key = KeywordEnumeration::next(nullptr, status); - if (U_SUCCESS(status) && legacy_key != nullptr) { + while (U_SUCCESS(status) && legacy_key != nullptr) { const char* key = uloc_toUnicodeLocaleKey(legacy_key); - if (key == nullptr) { - status = U_ILLEGAL_ARGUMENT_ERROR; - } else { + if (key != nullptr) { if (resultLength != nullptr) { *resultLength = static_cast(uprv_strlen(key)); } return key; } + // Not a Unicode keyword, could be a t, x or other, continue to look at the next one. + legacy_key = KeywordEnumeration::next(nullptr, status); } if (resultLength != nullptr) *resultLength = 0; return nullptr; @@ -2696,6 +2669,9 @@ Locale::setKeywordValue(const char* keywordName, const char* keywordValue, UErro if (fullName != fullNameBuffer) { // if full Name is already on the heap, need to free it. uprv_free(fullName); + if (baseName == fullName) { + baseName = newFullName; // baseName should not point to freed memory. + } } fullName = newFullName; status = U_ZERO_ERROR; diff --git a/deps/icu-small/source/common/loclikely.cpp b/deps/icu-small/source/common/loclikely.cpp index 6a34bb42cecf3f..d80096b588e714 100644 --- a/deps/icu-small/source/common/loclikely.cpp +++ b/deps/icu-small/source/common/loclikely.cpp @@ -115,7 +115,7 @@ findLikelySubtags(const char* localeID, * @param tag The tag to add. * @param tagLength The length of the tag. * @param buffer The output buffer. - * @param bufferLength The length of the output buffer. This is an input/ouput parameter. + * @param bufferLength The length of the output buffer. This is an input/output parameter. **/ static void U_CALLCONV appendTag( @@ -148,7 +148,7 @@ appendTag( * to be used when constructing the new tag. If the alternateTags parameter is NULL, or * it contains no language tag, the default tag for the unknown language is used. * - * If the length of the new string exceeds the capacity of the output buffer, + * If the length of the new string exceeds the capacity of the output buffer, * the function copies as many bytes to the output buffer as it can, and returns * the error U_BUFFER_OVERFLOW_ERROR. * @@ -366,7 +366,7 @@ createTagStringWithAlternates( * must be less than or equal to 0. If the lang parameter is an empty string, the * default value for an unknown language is written to the output buffer. * - * If the length of the new string exceeds the capacity of the output buffer, + * If the length of the new string exceeds the capacity of the output buffer, * the function copies as many bytes to the output buffer as it can, and returns * the error U_BUFFER_OVERFLOW_ERROR. * @@ -506,7 +506,7 @@ parseTagString( */ if (_isIDSeparator(*position)) { ++position; - } + } } subtagLength = ulocimp_getCountry(position, &position, *err).extract(region, *regionLength, *err); @@ -1181,13 +1181,13 @@ _uloc_minimizeSubtags(const char* localeID, } } -static UBool +static int32_t do_canonicalize(const char* localeID, char* buffer, int32_t bufferCapacity, UErrorCode* err) { - uloc_canonicalize( + int32_t canonicalizedSize = uloc_canonicalize( localeID, buffer, bufferCapacity, @@ -1195,16 +1195,14 @@ do_canonicalize(const char* localeID, if (*err == U_STRING_NOT_TERMINATED_WARNING || *err == U_BUFFER_OVERFLOW_ERROR) { - *err = U_ILLEGAL_ARGUMENT_ERROR; - - return FALSE; + return canonicalizedSize; } else if (U_FAILURE(*err)) { - return FALSE; + return -1; } else { - return TRUE; + return canonicalizedSize; } } @@ -1241,12 +1239,17 @@ static UBool _ulocimp_addLikelySubtags(const char* localeID, icu::ByteSink& sink, UErrorCode* status) { - char localeBuffer[ULOC_FULLNAME_CAPACITY]; - - if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) { - return _uloc_addLikelySubtags(localeBuffer, sink, status); + PreflightingLocaleIDBuffer localeBuffer; + do { + localeBuffer.requestedCapacity = do_canonicalize(localeID, localeBuffer.getBuffer(), + localeBuffer.getCapacity(), status); + } while (localeBuffer.needToTryAgain(status)); + + if (U_SUCCESS(*status)) { + return _uloc_addLikelySubtags(localeBuffer.getBuffer(), sink, status); + } else { + return FALSE; } - return FALSE; } U_CAPI void U_EXPORT2 @@ -1289,11 +1292,13 @@ U_CAPI void U_EXPORT2 ulocimp_minimizeSubtags(const char* localeID, icu::ByteSink& sink, UErrorCode* status) { - char localeBuffer[ULOC_FULLNAME_CAPACITY]; - - if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) { - _uloc_minimizeSubtags(localeBuffer, sink, status); - } + PreflightingLocaleIDBuffer localeBuffer; + do { + localeBuffer.requestedCapacity = do_canonicalize(localeID, localeBuffer.getBuffer(), + localeBuffer.getCapacity(), status); + } while (localeBuffer.needToTryAgain(status)); + + _uloc_minimizeSubtags(localeBuffer.getBuffer(), sink, status); } // Pairs of (language subtag, + or -) for finding out fast if common languages @@ -1407,3 +1412,4 @@ ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion, uprv_strncpy(region, rgBuf, regionCapacity); return u_terminateChars(region, regionCapacity, rgLen, status); } + diff --git a/deps/icu-small/source/common/locmap.cpp b/deps/icu-small/source/common/locmap.cpp index 515205222a65ac..29a5646385e793 100644 --- a/deps/icu-small/source/common/locmap.cpp +++ b/deps/icu-small/source/common/locmap.cpp @@ -20,7 +20,7 @@ * * Date Name Description * 3/11/97 aliu Fixed off-by-one bug in assignment operator. Added - * setId() method and safety check against + * setId() method and safety check against * MAX_ID_LENGTH. * 04/23/99 stephen Added C wrapper for convertToPosix. * 09/18/00 george Removed the memory leaks. @@ -118,7 +118,7 @@ static const ILcidPosixElement locmap_ ## id [] = // Keep static locale variables inside the function so that // it can be created properly during static init. // -// Note: This table should be updated periodically. Check the [MS-LCID] Windows Language Code Identifier +// Note: This table should be updated periodically. Check the [MS-LCID] Windows Language Code Identifier // (LCID) Reference defined at https://msdn.microsoft.com/en-us/library/cc233965.aspx // // Microsoft is moving away from LCID in favor of locale name as of Vista. This table needs to be @@ -132,7 +132,7 @@ static const ILcidPosixElement locmap_ ## id [] = //////////////////////////////////////////// */ -// TODO: For Windows ideally this table would be a list of exceptions rather than a complete list as +// TODO: For Windows ideally this table would be a list of exceptions rather than a complete list as // LocaleNameToLCID and LCIDToLocaleName provide 90% of these. ILCID_POSIX_ELEMENT_ARRAY(0x0436, af, af_ZA) @@ -524,7 +524,7 @@ ILCID_POSIX_SUBTABLE(nl) { /* The "no" locale split into nb and nn. By default in ICU, "no" is nb.*/ // TODO: Not all of these are needed on Windows, but I don't know how ICU treats preferred ones here. ILCID_POSIX_SUBTABLE(no) { - {0x14, "no"}, /* really nb_NO - actually Windows differentiates between neutral (no region) and specific (with region) */ + {0x14, "no"}, /* really nb_NO - actually Windows differentiates between neutral (no region) and specific (with region) */ {0x7c14, "nb"}, /* really nb */ {0x0414, "nb_NO"}, /* really nb_NO. Keep first in the 414 list. */ {0x0414, "no_NO"}, /* really nb_NO */ @@ -1273,7 +1273,7 @@ uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status) mid = (high+low) >> 1; /*Finds median*/ - if (mid == oldmid) + if (mid == oldmid) break; compVal = uprv_strcmp(langID, gPosixIDmap[mid].regionMaps->posixID); diff --git a/deps/icu-small/source/common/locmap.h b/deps/icu-small/source/common/locmap.h index 492a9413628ffb..e669873a143bfd 100644 --- a/deps/icu-small/source/common/locmap.h +++ b/deps/icu-small/source/common/locmap.h @@ -9,7 +9,7 @@ ****************************************************************************** * * File locmap.h : Locale Mapping Classes -* +* * * Created by: Helena Shih * @@ -37,3 +37,4 @@ U_CAPI uint32_t uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* sta U_CAPI uint32_t uprv_convertToLCID(const char* langID, const char* posixID, UErrorCode* status); #endif /* LOCMAP_H */ + diff --git a/deps/icu-small/source/common/locresdata.cpp b/deps/icu-small/source/common/locresdata.cpp index 69d744306417d5..d1d9a4729f107b 100644 --- a/deps/icu-small/source/common/locresdata.cpp +++ b/deps/icu-small/source/common/locresdata.cpp @@ -83,9 +83,9 @@ uloc_getTableStringWithFallback(const char *path, const char *locale, if(U_FAILURE(errorCode)){ *pErrorCode = errorCode; } - + break;*/ - + ures_getByKeyWithFallback(table.getAlias(), subTableKey, table.getAlias(), &errorCode); } if(U_SUCCESS(errorCode)){ @@ -112,8 +112,8 @@ uloc_getTableStringWithFallback(const char *path, const char *locale, break; } } - - if(U_FAILURE(errorCode)){ + + if(U_FAILURE(errorCode)){ /* still can't figure out ?.. try the fallback mechanism */ int32_t len = 0; @@ -126,9 +126,9 @@ uloc_getTableStringWithFallback(const char *path, const char *locale, *pErrorCode = errorCode; break; } - + u_UCharsToChars(fallbackLocale, explicitFallbackName, len); - + /* guard against recursive fallback */ if(uprv_strcmp(explicitFallbackName, locale)==0){ *pErrorCode = U_INTERNAL_PROGRAM_ERROR; @@ -207,7 +207,7 @@ uloc_getCharacterOrientation(const char* localeId, /** * Get the layout line orientation for the specified locale. - * + * * @param localeID locale name * @param status Error status * @return an enum indicating the layout orientation for lines. diff --git a/deps/icu-small/source/common/locutil.cpp b/deps/icu-small/source/common/locutil.cpp index 74745a37d6d47c..3d9d69ff7ed0e2 100644 --- a/deps/icu-small/source/common/locutil.cpp +++ b/deps/icu-small/source/common/locutil.cpp @@ -33,7 +33,7 @@ static icu::Hashtable * LocaleUtility_cache = NULL; */ /** - * Release all static memory held by Locale Utility. + * Release all static memory held by Locale Utility. */ U_CDECL_BEGIN static UBool U_CALLCONV service_cleanup(void) { @@ -271,3 +271,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/lsr.cpp b/deps/icu-small/source/common/lsr.cpp index b81808f2c4aae1..1f0b69ab0fd101 100644 --- a/deps/icu-small/source/common/lsr.cpp +++ b/deps/icu-small/source/common/lsr.cpp @@ -72,7 +72,7 @@ UBool LSR::isEquivalentTo(const LSR &other) const { (regionIndex > 0 || uprv_strcmp(region, other.region) == 0); } -UBool LSR::operator==(const LSR &other) const { +bool LSR::operator==(const LSR &other) const { return uprv_strcmp(language, other.language) == 0 && uprv_strcmp(script, other.script) == 0 && diff --git a/deps/icu-small/source/common/lsr.h b/deps/icu-small/source/common/lsr.h index a33f855245335e..af993c11d60916 100644 --- a/deps/icu-small/source/common/lsr.h +++ b/deps/icu-small/source/common/lsr.h @@ -65,9 +65,9 @@ struct LSR final : public UMemory { static int32_t indexForRegion(const char *region); UBool isEquivalentTo(const LSR &other) const; - UBool operator==(const LSR &other) const; + bool operator==(const LSR &other) const; - inline UBool operator!=(const LSR &other) const { + inline bool operator!=(const LSR &other) const { return !operator==(other); } diff --git a/deps/icu-small/source/common/lstmbe.cpp b/deps/icu-small/source/common/lstmbe.cpp new file mode 100644 index 00000000000000..3793abceb3fb1c --- /dev/null +++ b/deps/icu-small/source/common/lstmbe.cpp @@ -0,0 +1,855 @@ +// © 2021 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include +#include + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_BREAK_ITERATION + +#include "brkeng.h" +#include "charstr.h" +#include "cmemory.h" +#include "lstmbe.h" +#include "putilimp.h" +#include "uassert.h" +#include "ubrkimpl.h" +#include "uresimp.h" +#include "uvectr32.h" +#include "uvector.h" + +#include "unicode/brkiter.h" +#include "unicode/resbund.h" +#include "unicode/ubrk.h" +#include "unicode/uniset.h" +#include "unicode/ustring.h" +#include "unicode/utf.h" + +U_NAMESPACE_BEGIN + +// Uncomment the following #define to debug. +// #define LSTM_DEBUG 1 +// #define LSTM_VECTORIZER_DEBUG 1 + +/** + * Interface for reading 1D array. + */ +class ReadArray1D { +public: + virtual ~ReadArray1D(); + virtual int32_t d1() const = 0; + virtual float get(int32_t i) const = 0; + +#ifdef LSTM_DEBUG + void print() const { + printf("\n["); + for (int32_t i = 0; i < d1(); i++) { + printf("%0.8e ", get(i)); + if (i % 4 == 3) printf("\n"); + } + printf("]\n"); + } +#endif +}; + +ReadArray1D::~ReadArray1D() +{ +} + +/** + * Interface for reading 2D array. + */ +class ReadArray2D { +public: + virtual ~ReadArray2D(); + virtual int32_t d1() const = 0; + virtual int32_t d2() const = 0; + virtual float get(int32_t i, int32_t j) const = 0; +}; + +ReadArray2D::~ReadArray2D() +{ +} + +/** + * A class to index a float array as a 1D Array without owning the pointer or + * copy the data. + */ +class ConstArray1D : public ReadArray1D { +public: + ConstArray1D() : data_(nullptr), d1_(0) {} + + ConstArray1D(const float* data, int32_t d1) : data_(data), d1_(d1) {} + + virtual ~ConstArray1D(); + + // Init the object, the object does not own the data nor copy. + // It is designed to directly use data from memory mapped resources. + void init(const int32_t* data, int32_t d1) { + U_ASSERT(IEEE_754 == 1); + data_ = reinterpret_cast(data); + d1_ = d1; + } + + // ReadArray1D methods. + virtual int32_t d1() const override { return d1_; } + virtual float get(int32_t i) const override { + U_ASSERT(i < d1_); + return data_[i]; + } + +private: + const float* data_; + int32_t d1_; +}; + +ConstArray1D::~ConstArray1D() +{ +} + +/** + * A class to index a float array as a 2D Array without owning the pointer or + * copy the data. + */ +class ConstArray2D : public ReadArray2D { +public: + ConstArray2D() : data_(nullptr), d1_(0), d2_(0) {} + + ConstArray2D(const float* data, int32_t d1, int32_t d2) + : data_(data), d1_(d1), d2_(d2) {} + + virtual ~ConstArray2D(); + + // Init the object, the object does not own the data nor copy. + // It is designed to directly use data from memory mapped resources. + void init(const int32_t* data, int32_t d1, int32_t d2) { + U_ASSERT(IEEE_754 == 1); + data_ = reinterpret_cast(data); + d1_ = d1; + d2_ = d2; + } + + // ReadArray2D methods. + inline int32_t d1() const override { return d1_; } + inline int32_t d2() const override { return d2_; } + float get(int32_t i, int32_t j) const override { + U_ASSERT(i < d1_); + U_ASSERT(j < d2_); + return data_[i * d2_ + j]; + } + + // Expose the ith row as a ConstArray1D + inline ConstArray1D row(int32_t i) const { + U_ASSERT(i < d1_); + return ConstArray1D(data_ + i * d2_, d2_); + } + +private: + const float* data_; + int32_t d1_; + int32_t d2_; +}; + +ConstArray2D::~ConstArray2D() +{ +} + +/** + * A class to allocate data as a writable 1D array. + * This is the main class implement matrix operation. + */ +class Array1D : public ReadArray1D { +public: + Array1D() : memory_(nullptr), data_(nullptr), d1_(0) {} + Array1D(int32_t d1, UErrorCode &status) + : memory_(uprv_malloc(d1 * sizeof(float))), + data_((float*)memory_), d1_(d1) { + if (U_SUCCESS(status)) { + if (memory_ == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } + clear(); + } + } + + virtual ~Array1D(); + + // A special constructor which does not own the memory but writeable + // as a slice of an array. + Array1D(float* data, int32_t d1) + : memory_(nullptr), data_(data), d1_(d1) {} + + // ReadArray1D methods. + virtual int32_t d1() const override { return d1_; } + virtual float get(int32_t i) const override { + U_ASSERT(i < d1_); + return data_[i]; + } + + // Return the index which point to the max data in the array. + inline int32_t maxIndex() const { + int32_t index = 0; + float max = data_[0]; + for (int32_t i = 1; i < d1_; i++) { + if (data_[i] > max) { + max = data_[i]; + index = i; + } + } + return index; + } + + // Slice part of the array to a new one. + inline Array1D slice(int32_t from, int32_t size) const { + U_ASSERT(from >= 0); + U_ASSERT(from < d1_); + U_ASSERT(from + size <= d1_); + return Array1D(data_ + from, size); + } + + // Add dot product of a 1D array and a 2D array into this one. + inline Array1D& addDotProduct(const ReadArray1D& a, const ReadArray2D& b) { + U_ASSERT(a.d1() == b.d1()); + U_ASSERT(b.d2() == d1()); + for (int32_t i = 0; i < d1(); i++) { + for (int32_t j = 0; j < a.d1(); j++) { + data_[i] += a.get(j) * b.get(j, i); + } + } + return *this; + } + + // Hadamard Product the values of another array of the same size into this one. + inline Array1D& hadamardProduct(const ReadArray1D& a) { + U_ASSERT(a.d1() == d1()); + for (int32_t i = 0; i < d1(); i++) { + data_[i] *= a.get(i); + } + return *this; + } + + // Add the Hadamard Product of two arrays of the same size into this one. + inline Array1D& addHadamardProduct(const ReadArray1D& a, const ReadArray1D& b) { + U_ASSERT(a.d1() == d1()); + U_ASSERT(b.d1() == d1()); + for (int32_t i = 0; i < d1(); i++) { + data_[i] += a.get(i) * b.get(i); + } + return *this; + } + + // Add the values of another array of the same size into this one. + inline Array1D& add(const ReadArray1D& a) { + U_ASSERT(a.d1() == d1()); + for (int32_t i = 0; i < d1(); i++) { + data_[i] += a.get(i); + } + return *this; + } + + // Assign the values of another array of the same size into this one. + inline Array1D& assign(const ReadArray1D& a) { + U_ASSERT(a.d1() == d1()); + for (int32_t i = 0; i < d1(); i++) { + data_[i] = a.get(i); + } + return *this; + } + + // Apply tanh to all the elements in the array. + inline Array1D& tanh() { + return tanh(*this); + } + + // Apply tanh of a and store into this array. + inline Array1D& tanh(const Array1D& a) { + U_ASSERT(a.d1() == d1()); + for (int32_t i = 0; i < d1_; i++) { + data_[i] = std::tanh(a.get(i)); + } + return *this; + } + + // Apply sigmoid to all the elements in the array. + inline Array1D& sigmoid() { + for (int32_t i = 0; i < d1_; i++) { + data_[i] = 1.0f/(1.0f + expf(-data_[i])); + } + return *this; + } + + inline Array1D& clear() { + uprv_memset(data_, 0, d1_ * sizeof(float)); + return *this; + } + +private: + void* memory_; + float* data_; + int32_t d1_; +}; + +Array1D::~Array1D() +{ + uprv_free(memory_); +} + +class Array2D : public ReadArray2D { +public: + Array2D() : memory_(nullptr), data_(nullptr), d1_(0), d2_(0) {} + Array2D(int32_t d1, int32_t d2, UErrorCode &status) + : memory_(uprv_malloc(d1 * d2 * sizeof(float))), + data_((float*)memory_), d1_(d1), d2_(d2) { + if (U_SUCCESS(status)) { + if (memory_ == nullptr) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } + clear(); + } + } + virtual ~Array2D(); + + // ReadArray2D methods. + virtual int32_t d1() const override { return d1_; } + virtual int32_t d2() const override { return d2_; } + virtual float get(int32_t i, int32_t j) const override { + U_ASSERT(i < d1_); + U_ASSERT(j < d2_); + return data_[i * d2_ + j]; + } + + inline Array1D row(int32_t i) const { + U_ASSERT(i < d1_); + return Array1D(data_ + i * d2_, d2_); + } + + inline Array2D& clear() { + uprv_memset(data_, 0, d1_ * d2_ * sizeof(float)); + return *this; + } + +private: + void* memory_; + float* data_; + int32_t d1_; + int32_t d2_; +}; + +Array2D::~Array2D() +{ + uprv_free(memory_); +} + +typedef enum { + BEGIN, + INSIDE, + END, + SINGLE +} LSTMClass; + +typedef enum { + UNKNOWN, + CODE_POINTS, + GRAPHEME_CLUSTER, +} EmbeddingType; + +struct LSTMData : public UMemory { + LSTMData(UResourceBundle* rb, UErrorCode &status); + ~LSTMData(); + UHashtable* fDict; + EmbeddingType fType; + const UChar* fName; + ConstArray2D fEmbedding; + ConstArray2D fForwardW; + ConstArray2D fForwardU; + ConstArray1D fForwardB; + ConstArray2D fBackwardW; + ConstArray2D fBackwardU; + ConstArray1D fBackwardB; + ConstArray2D fOutputW; + ConstArray1D fOutputB; + +private: + UResourceBundle* fBundle; +}; + +LSTMData::LSTMData(UResourceBundle* rb, UErrorCode &status) + : fDict(nullptr), fType(UNKNOWN), fName(nullptr), + fBundle(rb) +{ + if (U_FAILURE(status)) { + return; + } + if (IEEE_754 != 1) { + status = U_UNSUPPORTED_ERROR; + return; + } + LocalUResourceBundlePointer embeddings_res( + ures_getByKey(rb, "embeddings", nullptr, &status)); + int32_t embedding_size = ures_getInt(embeddings_res.getAlias(), &status); + LocalUResourceBundlePointer hunits_res( + ures_getByKey(rb, "hunits", nullptr, &status)); + if (U_FAILURE(status)) return; + int32_t hunits = ures_getInt(hunits_res.getAlias(), &status); + const UChar* type = ures_getStringByKey(rb, "type", nullptr, &status); + if (U_FAILURE(status)) return; + if (u_strCompare(type, -1, u"codepoints", -1, false) == 0) { + fType = CODE_POINTS; + } else if (u_strCompare(type, -1, u"graphclust", -1, false) == 0) { + fType = GRAPHEME_CLUSTER; + } + fName = ures_getStringByKey(rb, "model", nullptr, &status); + LocalUResourceBundlePointer dataRes(ures_getByKey(rb, "data", nullptr, &status)); + if (U_FAILURE(status)) return; + int32_t data_len = 0; + const int32_t* data = ures_getIntVector(dataRes.getAlias(), &data_len, &status); + fDict = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status); + + StackUResourceBundle stackTempBundle; + ResourceDataValue value; + ures_getValueWithFallback(rb, "dict", stackTempBundle.getAlias(), value, status); + ResourceArray stringArray = value.getArray(status); + int32_t num_index = stringArray.getSize(); + if (U_FAILURE(status)) { return; } + + // put dict into hash + int32_t stringLength; + for (int32_t idx = 0; idx < num_index; idx++) { + stringArray.getValue(idx, value); + const UChar* str = value.getString(stringLength, status); + uhash_putiAllowZero(fDict, (void*)str, idx, &status); + if (U_FAILURE(status)) return; +#ifdef LSTM_VECTORIZER_DEBUG + printf("Assign ["); + while (*str != 0x0000) { + printf("U+%04x ", *str); + str++; + } + printf("] map to %d\n", idx-1); +#endif + } + int32_t mat1_size = (num_index + 1) * embedding_size; + int32_t mat2_size = embedding_size * 4 * hunits; + int32_t mat3_size = hunits * 4 * hunits; + int32_t mat4_size = 4 * hunits; + int32_t mat5_size = mat2_size; + int32_t mat6_size = mat3_size; + int32_t mat7_size = mat4_size; + int32_t mat8_size = 2 * hunits * 4; +#if U_DEBUG + int32_t mat9_size = 4; + U_ASSERT(data_len == mat1_size + mat2_size + mat3_size + mat4_size + mat5_size + + mat6_size + mat7_size + mat8_size + mat9_size); +#endif + + fEmbedding.init(data, (num_index + 1), embedding_size); + data += mat1_size; + fForwardW.init(data, embedding_size, 4 * hunits); + data += mat2_size; + fForwardU.init(data, hunits, 4 * hunits); + data += mat3_size; + fForwardB.init(data, 4 * hunits); + data += mat4_size; + fBackwardW.init(data, embedding_size, 4 * hunits); + data += mat5_size; + fBackwardU.init(data, hunits, 4 * hunits); + data += mat6_size; + fBackwardB.init(data, 4 * hunits); + data += mat7_size; + fOutputW.init(data, 2 * hunits, 4); + data += mat8_size; + fOutputB.init(data, 4); +} + +LSTMData::~LSTMData() { + uhash_close(fDict); + ures_close(fBundle); +} + +class Vectorizer : public UMemory { +public: + Vectorizer(UHashtable* dict) : fDict(dict) {} + virtual ~Vectorizer(); + virtual void vectorize(UText *text, int32_t startPos, int32_t endPos, + UVector32 &offsets, UVector32 &indices, + UErrorCode &status) const = 0; +protected: + int32_t stringToIndex(const UChar* str) const { + UBool found = false; + int32_t ret = uhash_getiAndFound(fDict, (const void*)str, &found); + if (!found) { + ret = fDict->count; + } +#ifdef LSTM_VECTORIZER_DEBUG + printf("["); + while (*str != 0x0000) { + printf("U+%04x ", *str); + str++; + } + printf("] map to %d\n", ret); +#endif + return ret; + } + +private: + UHashtable* fDict; +}; + +Vectorizer::~Vectorizer() +{ +} + +class CodePointsVectorizer : public Vectorizer { +public: + CodePointsVectorizer(UHashtable* dict) : Vectorizer(dict) {} + virtual ~CodePointsVectorizer(); + virtual void vectorize(UText *text, int32_t startPos, int32_t endPos, + UVector32 &offsets, UVector32 &indices, + UErrorCode &status) const override; +}; + +CodePointsVectorizer::~CodePointsVectorizer() +{ +} + +void CodePointsVectorizer::vectorize( + UText *text, int32_t startPos, int32_t endPos, + UVector32 &offsets, UVector32 &indices, UErrorCode &status) const +{ + if (offsets.ensureCapacity(endPos - startPos, status) && + indices.ensureCapacity(endPos - startPos, status)) { + if (U_FAILURE(status)) return; + utext_setNativeIndex(text, startPos); + int32_t current; + UChar str[2] = {0, 0}; + while (U_SUCCESS(status) && + (current = (int32_t)utext_getNativeIndex(text)) < endPos) { + // Since the LSTMBreakEngine is currently only accept chars in BMP, + // we can ignore the possibility of hitting supplementary code + // point. + str[0] = (UChar) utext_next32(text); + U_ASSERT(!U_IS_SURROGATE(str[0])); + offsets.addElement(current, status); + indices.addElement(stringToIndex(str), status); + } + } +} + +class GraphemeClusterVectorizer : public Vectorizer { +public: + GraphemeClusterVectorizer(UHashtable* dict) + : Vectorizer(dict) + { + } + virtual ~GraphemeClusterVectorizer(); + virtual void vectorize(UText *text, int32_t startPos, int32_t endPos, + UVector32 &offsets, UVector32 &indices, + UErrorCode &status) const override; +}; + +GraphemeClusterVectorizer::~GraphemeClusterVectorizer() +{ +} + +constexpr int32_t MAX_GRAPHEME_CLSTER_LENGTH = 10; + +void GraphemeClusterVectorizer::vectorize( + UText *text, int32_t startPos, int32_t endPos, + UVector32 &offsets, UVector32 &indices, UErrorCode &status) const +{ + if (U_FAILURE(status)) return; + if (!offsets.ensureCapacity(endPos - startPos, status) || + !indices.ensureCapacity(endPos - startPos, status)) { + return; + } + if (U_FAILURE(status)) return; + LocalPointer graphemeIter(BreakIterator::createCharacterInstance(Locale(), status)); + if (U_FAILURE(status)) return; + graphemeIter->setText(text, status); + if (U_FAILURE(status)) return; + + if (startPos != 0) { + graphemeIter->preceding(startPos); + } + int32_t last = startPos; + int32_t current = startPos; + UChar str[MAX_GRAPHEME_CLSTER_LENGTH]; + while ((current = graphemeIter->next()) != BreakIterator::DONE) { + if (current >= endPos) { + break; + } + if (current > startPos) { + utext_extract(text, last, current, str, MAX_GRAPHEME_CLSTER_LENGTH, &status); + if (U_FAILURE(status)) return; + offsets.addElement(last, status); + indices.addElement(stringToIndex(str), status); + if (U_FAILURE(status)) return; + } + last = current; + } + if (U_FAILURE(status) || last >= endPos) { + return; + } + utext_extract(text, last, endPos, str, MAX_GRAPHEME_CLSTER_LENGTH, &status); + if (U_SUCCESS(status)) { + offsets.addElement(last, status); + indices.addElement(stringToIndex(str), status); + } +} + +// Computing LSTM as stated in +// https://en.wikipedia.org/wiki/Long_short-term_memory#LSTM_with_a_forget_gate +// ifco is temp array allocate outside which does not need to be +// input/output value but could avoid unnecessary memory alloc/free if passing +// in. +void compute( + int32_t hunits, + const ReadArray2D& W, const ReadArray2D& U, const ReadArray1D& b, + const ReadArray1D& x, Array1D& h, Array1D& c, + Array1D& ifco) +{ + // ifco = x * W + h * U + b + ifco.assign(b) + .addDotProduct(x, W) + .addDotProduct(h, U); + + ifco.slice(0*hunits, hunits).sigmoid(); // i: sigmod + ifco.slice(1*hunits, hunits).sigmoid(); // f: sigmoid + ifco.slice(2*hunits, hunits).tanh(); // c_: tanh + ifco.slice(3*hunits, hunits).sigmoid(); // o: sigmod + + c.hadamardProduct(ifco.slice(hunits, hunits)) + .addHadamardProduct(ifco.slice(0, hunits), ifco.slice(2*hunits, hunits)); + + h.tanh(c) + .hadamardProduct(ifco.slice(3*hunits, hunits)); +} + +// Minimum word size +static const int32_t MIN_WORD = 2; + +// Minimum number of characters for two words +static const int32_t MIN_WORD_SPAN = MIN_WORD * 2; + +int32_t +LSTMBreakEngine::divideUpDictionaryRange( UText *text, + int32_t startPos, + int32_t endPos, + UVector32 &foundBreaks, + UErrorCode& status) const { + if (U_FAILURE(status)) return 0; + int32_t beginFoundBreakSize = foundBreaks.size(); + utext_setNativeIndex(text, startPos); + utext_moveIndex32(text, MIN_WORD_SPAN); + if (utext_getNativeIndex(text) >= endPos) { + return 0; // Not enough characters for two words + } + utext_setNativeIndex(text, startPos); + + UVector32 offsets(status); + UVector32 indices(status); + if (U_FAILURE(status)) return 0; + fVectorizer->vectorize(text, startPos, endPos, offsets, indices, status); + if (U_FAILURE(status)) return 0; + int32_t* offsetsBuf = offsets.getBuffer(); + int32_t* indicesBuf = indices.getBuffer(); + + int32_t input_seq_len = indices.size(); + int32_t hunits = fData->fForwardU.d1(); + + // ----- Begin of all the Array memory allocation needed for this function + // Allocate temp array used inside compute() + Array1D ifco(4 * hunits, status); + + Array1D c(hunits, status); + Array1D logp(4, status); + + // TODO: limit size of hBackward. If input_seq_len is too big, we could + // run out of memory. + // Backward LSTM + Array2D hBackward(input_seq_len, hunits, status); + + // Allocate fbRow and slice the internal array in two. + Array1D fbRow(2 * hunits, status); + + // ----- End of all the Array memory allocation needed for this function + if (U_FAILURE(status)) return 0; + + // To save the needed memory usage, the following is different from the + // Python or ICU4X implementation. We first perform the Backward LSTM + // and then merge the iteration of the forward LSTM and the output layer + // together because we only neetdto remember the h[t-1] for Forward LSTM. + for (int32_t i = input_seq_len - 1; i >= 0; i--) { + Array1D hRow = hBackward.row(i); + if (i != input_seq_len - 1) { + hRow.assign(hBackward.row(i+1)); + } +#ifdef LSTM_DEBUG + printf("hRow %d\n", i); + hRow.print(); + printf("indicesBuf[%d] = %d\n", i, indicesBuf[i]); + printf("fData->fEmbedding.row(indicesBuf[%d]):\n", i); + fData->fEmbedding.row(indicesBuf[i]).print(); +#endif // LSTM_DEBUG + compute(hunits, + fData->fBackwardW, fData->fBackwardU, fData->fBackwardB, + fData->fEmbedding.row(indicesBuf[i]), + hRow, c, ifco); + } + + + Array1D forwardRow = fbRow.slice(0, hunits); // point to first half of data in fbRow. + Array1D backwardRow = fbRow.slice(hunits, hunits); // point to second half of data n fbRow. + + // The following iteration merge the forward LSTM and the output layer + // together. + c.clear(); // reuse c since it is the same size. + for (int32_t i = 0; i < input_seq_len; i++) { +#ifdef LSTM_DEBUG + printf("forwardRow %d\n", i); + forwardRow.print(); +#endif // LSTM_DEBUG + // Forward LSTM + // Calculate the result into forwardRow, which point to the data in the first half + // of fbRow. + compute(hunits, + fData->fForwardW, fData->fForwardU, fData->fForwardB, + fData->fEmbedding.row(indicesBuf[i]), + forwardRow, c, ifco); + + // assign the data from hBackward.row(i) to second half of fbRowa. + backwardRow.assign(hBackward.row(i)); + + logp.assign(fData->fOutputB).addDotProduct(fbRow, fData->fOutputW); +#ifdef LSTM_DEBUG + printf("backwardRow %d\n", i); + backwardRow.print(); + printf("logp %d\n", i); + logp.print(); +#endif // LSTM_DEBUG + + // current = argmax(logp) + LSTMClass current = (LSTMClass)logp.maxIndex(); + // BIES logic. + if (current == BEGIN || current == SINGLE) { + if (i != 0) { + foundBreaks.addElement(offsetsBuf[i], status); + if (U_FAILURE(status)) return 0; + } + } + } + return foundBreaks.size() - beginFoundBreakSize; +} + +Vectorizer* createVectorizer(const LSTMData* data, UErrorCode &status) { + if (U_FAILURE(status)) { + return nullptr; + } + switch (data->fType) { + case CODE_POINTS: + return new CodePointsVectorizer(data->fDict); + break; + case GRAPHEME_CLUSTER: + return new GraphemeClusterVectorizer(data->fDict); + break; + default: + break; + } + UPRV_UNREACHABLE_EXIT; +} + +LSTMBreakEngine::LSTMBreakEngine(const LSTMData* data, const UnicodeSet& set, UErrorCode &status) + : DictionaryBreakEngine(), fData(data), fVectorizer(createVectorizer(fData, status)) +{ + if (U_FAILURE(status)) { + fData = nullptr; // If failure, we should not delete fData in destructor because the caller will do so. + return; + } + setCharacters(set); +} + +LSTMBreakEngine::~LSTMBreakEngine() { + delete fData; + delete fVectorizer; +} + +const UChar* LSTMBreakEngine::name() const { + return fData->fName; +} + +UnicodeString defaultLSTM(UScriptCode script, UErrorCode& status) { + // open root from brkitr tree. + UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, "", &status); + b = ures_getByKeyWithFallback(b, "lstm", b, &status); + UnicodeString result = ures_getUnicodeStringByKey(b, uscript_getShortName(script), &status); + ures_close(b); + return result; +} + +U_CAPI const LSTMData* U_EXPORT2 CreateLSTMDataForScript(UScriptCode script, UErrorCode& status) +{ + if (script != USCRIPT_KHMER && script != USCRIPT_LAO && script != USCRIPT_MYANMAR && script != USCRIPT_THAI) { + return nullptr; + } + UnicodeString name = defaultLSTM(script, status); + if (U_FAILURE(status)) return nullptr; + CharString namebuf; + namebuf.appendInvariantChars(name, status).truncate(namebuf.lastIndexOf('.')); + + LocalUResourceBundlePointer rb( + ures_openDirect(U_ICUDATA_BRKITR, namebuf.data(), &status)); + if (U_FAILURE(status)) return nullptr; + + return CreateLSTMData(rb.orphan(), status); +} + +U_CAPI const LSTMData* U_EXPORT2 CreateLSTMData(UResourceBundle* rb, UErrorCode& status) +{ + return new LSTMData(rb, status); +} + +U_CAPI const LanguageBreakEngine* U_EXPORT2 +CreateLSTMBreakEngine(UScriptCode script, const LSTMData* data, UErrorCode& status) +{ + UnicodeString unicodeSetString; + switch(script) { + case USCRIPT_THAI: + unicodeSetString = UnicodeString(u"[[:Thai:]&[:LineBreak=SA:]]"); + break; + case USCRIPT_MYANMAR: + unicodeSetString = UnicodeString(u"[[:Mymr:]&[:LineBreak=SA:]]"); + break; + default: + delete data; + return nullptr; + } + UnicodeSet unicodeSet; + unicodeSet.applyPattern(unicodeSetString, status); + const LanguageBreakEngine* engine = new LSTMBreakEngine(data, unicodeSet, status); + if (U_FAILURE(status) || engine == nullptr) { + if (engine != nullptr) { + delete engine; + } else { + status = U_MEMORY_ALLOCATION_ERROR; + } + return nullptr; + } + return engine; +} + +U_CAPI void U_EXPORT2 DeleteLSTMData(const LSTMData* data) +{ + delete data; +} + +U_CAPI const UChar* U_EXPORT2 LSTMDataName(const LSTMData* data) +{ + return data->fName; +} + +U_NAMESPACE_END + +#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ diff --git a/deps/icu-small/source/common/lstmbe.h b/deps/icu-small/source/common/lstmbe.h new file mode 100644 index 00000000000000..c3f7ecf81540dd --- /dev/null +++ b/deps/icu-small/source/common/lstmbe.h @@ -0,0 +1,87 @@ +// © 2021 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#ifndef LSTMBE_H +#define LSTMBE_H + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_BREAK_ITERATION + +#include "unicode/uniset.h" +#include "unicode/ures.h" +#include "unicode/utext.h" +#include "unicode/utypes.h" + +#include "brkeng.h" +#include "dictbe.h" +#include "uvectr32.h" + +U_NAMESPACE_BEGIN + +class Vectorizer; +struct LSTMData; + +/******************************************************************* + * LSTMBreakEngine + */ + +/** + *

LSTMBreakEngine is a kind of DictionaryBreakEngine that uses a + * LSTM to determine language-specific breaks.

+ * + *

After it is constructed a LSTMBreakEngine may be shared between + * threads without synchronization.

+ */ +class LSTMBreakEngine : public DictionaryBreakEngine { +public: + /** + *

Constructor.

+ */ + LSTMBreakEngine(const LSTMData* data, const UnicodeSet& set, UErrorCode &status); + + /** + *

Virtual destructor.

+ */ + virtual ~LSTMBreakEngine(); + + virtual const UChar* name() const; + +protected: + /** + *

Divide up a range of known dictionary characters handled by this break engine.

+ * + * @param text A UText representing the text + * @param rangeStart The start of the range of dictionary characters + * @param rangeEnd The end of the range of dictionary characters + * @param foundBreaks Output of C array of int32_t break positions, or 0 + * @param status Information on any errors encountered. + * @return The number of breaks found + */ + virtual int32_t divideUpDictionaryRange(UText *text, + int32_t rangeStart, + int32_t rangeEnd, + UVector32 &foundBreaks, + UErrorCode& status) const override; +private: + const LSTMData* fData; + const Vectorizer* fVectorizer; +}; + +U_CAPI const LanguageBreakEngine* U_EXPORT2 CreateLSTMBreakEngine( + UScriptCode script, const LSTMData* data, UErrorCode& status); + +U_CAPI const LSTMData* U_EXPORT2 CreateLSTMData( + UResourceBundle* rb, UErrorCode& status); + +U_CAPI const LSTMData* U_EXPORT2 CreateLSTMDataForScript( + UScriptCode script, UErrorCode& status); + +U_CAPI void U_EXPORT2 DeleteLSTMData(const LSTMData* data); +U_CAPI const UChar* U_EXPORT2 LSTMDataName(const LSTMData* data); + +U_NAMESPACE_END + +#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ + +#endif /* LSTMBE_H */ diff --git a/deps/icu-small/source/common/messagepattern.cpp b/deps/icu-small/source/common/messagepattern.cpp index 2f79780bd2c233..66fd2f4c93b295 100644 --- a/deps/icu-small/source/common/messagepattern.cpp +++ b/deps/icu-small/source/common/messagepattern.cpp @@ -309,10 +309,10 @@ MessagePattern::clear() { numericValuesLength=0; } -UBool +bool MessagePattern::operator==(const MessagePattern &other) const { if(this==&other) { - return TRUE; + return true; } return aposMode==other.aposMode && @@ -387,10 +387,10 @@ MessagePattern::getPluralOffset(int32_t pluralStart) const { // MessagePattern::Part ---------------------------------------------------- *** -UBool +bool MessagePattern::Part::operator==(const Part &other) const { if(this==&other) { - return TRUE; + return true; } return type==other.type && @@ -454,7 +454,7 @@ MessagePattern::parseMessage(int32_t index, int32_t msgStartLength, UChar c=msg.charAt(index++); if(c==u_apos) { if(index==msg.length()) { - // The apostrophe is the last character in the pattern. + // The apostrophe is the last character in the pattern. // Add a Part for auto-quoting. addPart(UMSGPAT_PART_TYPE_INSERT_CHAR, index, 0, u_apos, errorCode); // value=char to be inserted diff --git a/deps/icu-small/source/common/msvcres.h b/deps/icu-small/source/common/msvcres.h index d6581b27ebce51..d71b5ac922ab85 100644 --- a/deps/icu-small/source/common/msvcres.h +++ b/deps/icu-small/source/common/msvcres.h @@ -11,15 +11,15 @@ // /* -These are defined before unicode/uversion.h in order to prevent -STLPort's broken stddef.h from being used when rc.exe parses this file. +These are defined before unicode/uversion.h in order to prevent +STLPort's broken stddef.h from being used when rc.exe parses this file. */ #define _STLP_OUTERMOST_HEADER_ID 0 #define _STLP_WINCE 1 #include "unicode/uversion.h" -#define ICU_WEBSITE "http://icu-project.org" +#define ICU_WEBSITE "https://icu.unicode.org/" #define ICU_COMPANY "The ICU Project" #define ICU_PRODUCT_PREFIX "ICU" #define ICU_PRODUCT "International Components for Unicode" diff --git a/deps/icu-small/source/common/norm2_nfc_data.h b/deps/icu-small/source/common/norm2_nfc_data.h index 455cc0c42850ae..a774868981dbea 100644 --- a/deps/icu-small/source/common/norm2_nfc_data.h +++ b/deps/icu-small/source/common/norm2_nfc_data.h @@ -1,6 +1,5 @@ -// © 2016 and later: Unicode, Inc. and others. +// Copyright (C) 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -// // Copyright (C) 1999-2016, International Business Machines // Corporation and others. All Rights Reserved. // @@ -8,31 +7,30 @@ // // machine-generated by: icu/source/tools/gennorm2/n2builder.cpp - #ifdef INCLUDED_FROM_NORMALIZER2_CPP static const UVersionInfo norm2_nfc_data_formatVersion={4,0,0,0}; -static const UVersionInfo norm2_nfc_data_dataVersion={0xd,0,0,0}; +static const UVersionInfo norm2_nfc_data_dataVersion={0xe,0,0,0}; static const int32_t norm2_nfc_data_indexes[Normalizer2Impl::IX_COUNT]={ -0x50,0x4bac,0x8814,0x8914,0x8914,0x8914,0x8914,0x8914,0xc0,0x300,0xae2,0x29e0,0x3c66,0xfc00,0x1288,0x3b9c, +0x50,0x4c54,0x88bc,0x89bc,0x89bc,0x89bc,0x89bc,0x89bc,0xc0,0x300,0xae2,0x29e0,0x3c66,0xfc00,0x1288,0x3b9c, 0x3c34,0x3c66,0x300,0 }; -static const uint16_t norm2_nfc_data_trieIndex[1746]={ +static const uint16_t norm2_nfc_data_trieIndex[1748]={ 0,0x40,0x7b,0xbb,0xfb,0x13a,0x17a,0x1b2,0x1f2,0x226,0x254,0x226,0x294,0x2d4,0x313,0x353, 0x393,0x3d2,0x40f,0x44e,0x226,0x226,0x488,0x4c8,0x4f8,0x530,0x226,0x570,0x59f,0x5de,0x226,0x5f3, -0x631,0x65f,0x226,0x68c,0x6cc,0x709,0x729,0x768,0x7a7,0x7e4,0x803,0x840,0x729,0x879,0x8a7,0x8e6, -0x226,0x920,0x937,0x977,0x98e,0x9cd,0x226,0xa03,0xa23,0xa5e,0xa6a,0xaa5,0xacd,0xb0a,0xb4a,0xb84, -0xb9f,0x226,0xbda,0x226,0xc1a,0xc39,0xc6f,0xcac,0x226,0x226,0x226,0x226,0x226,0xccf,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xcfb,0x226,0x226,0xd30, -0x226,0x226,0xd4e,0x226,0xd78,0x226,0x226,0x226,0xdb4,0xdd4,0xe14,0xe53,0xe8e,0xece,0xf02,0xf2e, -0x808,0x226,0x226,0xf62,0x226,0x226,0x226,0xfa2,0xfe2,0x1022,0x1062,0x10a2,0x10e2,0x1122,0x1162,0x11a2, -0x11e2,0x226,0x226,0x1212,0x1243,0x226,0x1273,0x12a6,0x12e3,0x1322,0x1362,0x1398,0x13c6,0x226,0x226,0x226, +0x631,0x65f,0x687,0x6bd,0x6fd,0x73a,0x75a,0x799,0x7d8,0x815,0x834,0x871,0x75a,0x8aa,0x8d8,0x917, +0x834,0x951,0x968,0x9a8,0x9bf,0x9fe,0x226,0xa34,0xa54,0xa8f,0xa9b,0xad6,0xafe,0xb3b,0xb7b,0xbb5, +0xbd0,0x226,0xc0b,0x226,0xc4b,0xc6a,0xca0,0xcdd,0x226,0x226,0x226,0x226,0x226,0xd00,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xd2c,0x226,0x226,0xd61, +0x226,0x226,0xd7f,0x226,0xda9,0x226,0x226,0x226,0xde5,0xe05,0xe45,0xe84,0xebf,0xeff,0xf33,0xf5f, +0x839,0x226,0x226,0xf93,0x226,0x226,0x226,0xfd3,0x1013,0x1053,0x1093,0x10d3,0x1113,0x1153,0x1193,0x11d3, +0x1213,0x226,0x226,0x1243,0x1274,0x226,0x12a4,0x12d7,0x1314,0x1353,0x1393,0x13c9,0x13f7,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x13f1,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0xcbd,0x226,0x140e,0x226,0x144e,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x148e,0x14c8,0x1506,0x1546,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1422,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0xcee,0x226,0x143f,0x226,0x147f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x14bf,0x14f9,0x1537,0x1577,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, @@ -61,20 +59,20 @@ static const uint16_t norm2_nfc_data_trieIndex[1746]={ 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1585,0x15c3,0x15e3,0x226,0x226,0x226,0x226, -0x161d,0x226,0x226,0x1645,0x1677,0x16a5,0x80c,0x16b8,0x226,0x226,0x16c8,0x1708,0x226,0x226,0x226,0x1420, -0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750, -0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760, -0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754, -0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748, -0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758, -0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c, -0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c, -0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750, -0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760, -0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754, -0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x175c,0x1748,0x1750,0x1758,0x1760,0x174c,0x1754,0x1794,0x226, -0x17d4,0x180f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x15b6,0x15f4,0x1614,0x226,0x226,0x226,0x226, +0x164e,0x226,0x226,0x1676,0x16a8,0x16d6,0x83d,0x16e9,0x226,0x226,0x16f9,0x1739,0x226,0x226,0x226,0x1451, +0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781, +0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791, +0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785, +0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779, +0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789, +0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d, +0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d, +0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781, +0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791, +0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785, +0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x178d,0x1779,0x1781,0x1789,0x1791,0x177d,0x1785,0x17c5,0x226, +0x1805,0x1840,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, @@ -82,57 +80,57 @@ static const uint16_t norm2_nfc_data_trieIndex[1746]={ 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x184f,0x188f,0x18cf,0x190f,0x194f,0x198f,0x19cf,0x1a0f,0x1a32,0x1a72,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1a92,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x655,0x664,0x67c,0x69b,0x6b0,0x6b0,0x6b0,0x6b4,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x1880,0x18c0,0x1900,0x1940,0x1980,0x19c0,0x1a00,0x1a40,0x1a63,0x1aa3,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ac3,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x657,0x666,0x67e,0x69d,0x6b2,0x6b2,0x6b2,0x6b6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xbda,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xc0b,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x54f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x40c, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ac5,0x226,0x226,0x1ad5,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0xdc6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1ae5,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x15d6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x1aef,0x54f,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7eb,0x226,0x226, -0x9ba,0x226,0x1aff,0x1b0c,0x1b18,0x226,0x226,0x226,0x226,0x414,0x226,0x1b23,0x1b33,0x226,0x226,0x226, -0x7e0,0x226,0x226,0x226,0x226,0x1b43,0x226,0x226,0x226,0x1b4e,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x1b55,0x226,0x226,0x226,0x226,0x1b60,0x1b6f,0x8f6,0x1b7d,0x412,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x1b8b,0x798,0x226,0x226,0x226,0x226,0x226,0x1b9b,0x1baa,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x8d6,0x1bb2,0x1bc2,0x226, -0x226,0x226,0x9ba,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bcc,0x226,0x226,0x226,0x226,0x226, -0x226,0x7e6,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bc9, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bdc, -0x7e0,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x84d,0x226,0x226,0x226,0x7ed,0x7ea, -0x226,0x226,0x226,0x226,0x7e8,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x9ba,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xbd4,0x226,0x226,0x226, -0x226,0x7ea,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x1bec,0x226,0x226,0x226,0xefb,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1af6,0x226,0x226,0x1b06,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0xdf7,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1b16,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1607,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x1b20,0x54f,0x226,0x226,0x1b30,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x81c,0x226,0x226, +0x1b40,0x226,0x1b50,0x1b5d,0x1b69,0x226,0x226,0x226,0x226,0x414,0x226,0x1b74,0x1b84,0x226,0x226,0x226, +0x811,0x226,0x226,0x226,0x226,0x1b94,0x226,0x226,0x226,0x1b9f,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x1ba6,0x226,0x226,0x226,0x226,0x1bb1,0x1bc0,0x927,0x1bce,0x412,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x1bdc,0x7c9,0x226,0x226,0x226,0x226,0x226,0x1bec,0x1bfb,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x907,0x1c03,0x1c13,0x226, +0x226,0x226,0x9eb,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c1d,0x226,0x226,0x226,0x226,0x226, +0x226,0x817,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c1a, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c2d, +0x811,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x87e,0x226,0x226,0x226,0x81e,0x81b, +0x226,0x226,0x226,0x226,0x819,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x9eb,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0xc05,0x226,0x226,0x226, +0x226,0x81b,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x1c3d,0x226,0x226,0x226,0xf2c,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x1bfc,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1bfe, +0x226,0x226,0x226,0x226,0x226,0x1c4d,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c4f, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x1c0d,0x1c1d,0x1c2b,0x1c38,0x226,0x1c44,0x1c52,0x1c62,0x226,0x226, -0x226,0x226,0xcea,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1c72,0x1c7a, -0x1c88,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0xefb,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x4fc,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x1c98,0x226,0x226,0x226,0x226,0x226,0x226,0x1ca4,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x1cb4,0x1cc4,0x1cd4,0x1ce4,0x1cf4,0x1d04,0x1d14,0x1d24,0x1d34,0x1d44,0x1d54, -0x1d64,0x1d74,0x1d84,0x1d94,0x1da4,0x1db4,0x1dc4,0x1dd4,0x1de4,0x1df4,0x1e04,0x1e14,0x1e24,0x1e34,0x1e44,0x1e54, -0x1e64,0x1e74,0x1e84,0x1e94,0x1ea4,0x1eb4,0x1ec4,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x1c5e,0x1c6e,0x1c7c,0x1c89,0x226,0x1c95,0x1ca3,0x1cb3,0x226,0x226, +0x226,0x226,0xd1b,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1cc3,0x1ccb, +0x1cd9,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0xf2c,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x7c9,0x226, +0x226,0x226,0x4fc,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x1ce9,0x226,0x226,0x226,0x226,0x226,0x226,0x1cf5,0x226,0x226,0x226,0x226, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x1d05,0x1d15,0x1d25,0x1d35,0x1d45,0x1d55,0x1d65,0x1d75,0x1d85, +0x1d95,0x1da5,0x1db5,0x1dc5,0x1dd5,0x1de5,0x1df5,0x1e05,0x1e15,0x1e25,0x1e35,0x1e45,0x1e55,0x1e65,0x1e75,0x1e85, +0x1e95,0x1ea5,0x1eb5,0x1ec5,0x1ed5,0x1ee5,0x1ef5,0x1f05,0x1f15,0x226,0x226,0x226,0x226,0x226,0x226,0x226, 0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x226, -0x226,0x226,0x226,0x226,0x226,0x408,0x428,0xc4,0xc4,0xc4,0x448,0x457,0x46d,0x489,0x4a6,0x4c2, -0x4df,0x4fc,0x51b,0x538,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x552,0xc4,0x566,0xc4,0xc4,0xc4,0xc4, +0x226,0x226,0x226,0x226,0x226,0x226,0x226,0x408,0x428,0xc4,0xc4,0xc4,0x448,0x457,0x46d,0x489, +0x4a6,0x4c2,0x4df,0x4fc,0x51b,0x538,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, +0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x552,0xc4,0x566,0xc4,0xc4, 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x586,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0x591,0x5ae,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5ce,0x5e2,0xc4,0xc4,0x5f5, +0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x586,0xc4,0xc4,0xc4, +0xc4,0xc4,0xc4,0xc4,0xc4,0x591,0x5ae,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0x5ce,0x5e4,0xc4, +0xc4,0x5f7,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, 0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4, -0x615,0x635 +0xc4,0xc4,0x617,0x637 }; -static const uint16_t norm2_nfc_data_trieData[7892]={ +static const uint16_t norm2_nfc_data_trieData[7974]={ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, @@ -238,401 +236,406 @@ static const uint16_t norm2_nfc_data_trieData[7892]={ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,0xffb8,0xffb8,0xffb8,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xffb8, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffb8, -0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xfe36,0xfe38,0xfe3a,0xffcc, -0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc, +0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8, +0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1, +0xffb8,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xfe36,0xfe38,0xfe3a, +0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0x864,0x1993,1,1,1,1,1,1,0x868,0x1999,1,0x86c, -0x199f,1,1,1,1,1,1,1,0xfc0e,1,1,1,1,1,1,1, -1,1,1,1,1,1,0xfe12,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,1,1, -1,0x29ec,0x29f2,0x29f8,0x29fe,0x2a04,0x2a0a,0x2a10,0x2a16,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0x864,0x1993,1,1,1,1,1,1,0x868,0x1999,1, +0x86c,0x199f,1,1,1,1,1,1,1,0xfc0e,1,1,1,1,1,1, +1,1,1,1,1,1,1,0xfe12,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,1, +1,1,0x29ec,0x29f2,0x29f8,0x29fe,0x2a04,0x2a0a,0x2a10,0x2a16,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0xfe0e,1,0xfc00,1,1,1,1,1,1,1,0x870, -1,1,1,0x19a5,0x19ab,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00, -1,1,1,1,0x2a1c,0x2a22,1,0x2a28,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0xffcc,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0xfe0e,1,0xfc00,1,1,1,1,1,1,1, +0x870,1,1,1,0x19a5,0x19ab,0xfe12,1,1,1,1,1,1,1,1,1, +0xfc00,1,1,1,1,0x2a1c,0x2a22,1,0x2a28,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0xffcc,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,0x2a2e,1,1,0x2a34,1,1, -1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1, -1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,0x2a3a,0x2a40,0x2a46, -1,1,0x2a4c,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0x2a2e,1,1,0x2a34,1, +1,1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1,1, +1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,0x2a3a,0x2a40, +0x2a46,1,1,0x2a4c,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe0e, -1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -0x878,0x19b1,1,1,0x19b7,0x19bd,0xfe12,1,1,1,1,1,1,1,1,0xfc00, -0xfc00,1,1,1,1,0x2a52,0x2a58,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0x884,1,0x19c3,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,0x878,0x19b1,1,1,0x19b7,0x19bd,0xfe12,1,1,1,1,1,1,1,1, +0xfc00,0xfc00,1,1,1,1,0x2a52,0x2a58,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0xfc00,1,1,1,1,1,1,0x888,0x890,1,1, -0x19c9,0x19cf,0x19d5,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,1,1, +1,1,1,1,1,1,1,1,1,1,0x884,1,0x19c3,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0x894,1,0x19db,1,1,1,1,0xfe12,1,1, -1,1,1,1,1,0xfea8,0xfcb6,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0xfc00,1,1,1,1,1,1,0x888,0x890,1, +1,0x19c9,0x19cf,0x19d5,0xfe12,1,1,1,1,1,1,1,1,1,0xfc00,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x894,1,0x19db,1,1,1,1,0xfe12,1, +1,1,1,1,1,1,0xfea8,0xfcb6,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0xfe0e,1,1,0x898,0x19e1,1,0xfc00,1,1,1,0x89c,0x19e7,0x19ed, -1,0xdca,0x19f5,1,0xfe12,1,1,1,1,1,1,1,0xfc00,0xfc00,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0xfe0e,1,1,0x898,0x19e1,1,0xfc00,1,1,1,0x89c,0x19e7, +0x19ed,1,0xdca,0x19f5,1,0xfe12,1,1,1,1,1,1,1,0xfc00,0xfc00,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1,0xfc00,1,1,1, -1,1,1,0x8a8,0x8b0,1,1,0x19fd,0x1a03,0x1a09,0xfe12,1,1,1,1,1, -1,1,1,1,0xfc00,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0xfc12,1,1, -1,1,0xfc00,1,1,1,1,1,1,1,1,1,0x8b4,0x1a0f,1,0xdd4, -0x1a17,0x1a1f,0xfc00,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1,0xfc00,1,1, +1,1,1,1,0x8a8,0x8b0,1,1,0x19fd,0x1a03,0x1a09,0xfe12,1,1,1,1, +1,1,1,1,1,0xfc00,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0xfece,0xfece,0xfe12,1,1, -1,1,1,1,1,1,0xfed6,0xfed6,0xfed6,0xfed6,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfc12,1, +1,1,1,0xfc00,1,1,1,1,1,1,1,1,1,0x8b4,0x1a0f,1, +0xdd4,0x1a17,0x1a1f,0xfc00,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,0xfece,0xfece,0xfe12,1, +1,1,1,1,1,1,1,0xfed6,0xfed6,0xfed6,0xfed6,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xfeec,0xfeec,0xfe12,1,1,1,1,1,1,1,1,0xfef4,0xfef4,0xfef4, -0xfef4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1, +1,1,1,0xfeec,0xfeec,0xfe12,1,1,1,1,1,1,1,1,0xfef4,0xfef4, +0xfef4,0xfef4,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffb8,1,0xffb8,1,0xffb0,1,1,1,1,1,1,0x2a5f,1,1, -1,1,1,1,1,1,1,0x2a65,1,1,1,1,0x2a6b,1,1,1, -1,0x2a71,1,1,1,1,0x2a77,1,1,1,1,1,1,1,1,1, -1,1,1,0x2a7d,1,1,1,1,1,1,1,0xff02,0xff04,0x3c50,0xff08,0x3c58, -0x2a82,1,0x2a88,1,0xff04,0xff04,0xff04,0xff04,1,1,0xff04,0x3c60,0xffcc,0xffcc,0xfe12,1, -0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x2a8f,1,1, -1,1,1,1,1,1,1,0x2a95,1,1,1,1,0x2a9b,1,1,1, -1,0x2aa1,1,1,1,1,0x2aa7,1,1,1,1,1,1,1,1,1, -1,1,1,0x2aad,1,1,1,1,1,1,0xffb8,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0xffb8,0xffb8,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffb8,1,0xffb8,1,0xffb0,1,1,1,1,1,1,0x2a5f,1, +1,1,1,1,1,1,1,1,0x2a65,1,1,1,1,0x2a6b,1,1, +1,1,0x2a71,1,1,1,1,0x2a77,1,1,1,1,1,1,1,1, +1,1,1,1,0x2a7d,1,1,1,1,1,1,1,0xff02,0xff04,0x3c50,0xff08, +0x3c58,0x2a82,1,0x2a88,1,0xff04,0xff04,0xff04,0xff04,1,1,0xff04,0x3c60,0xffcc,0xffcc,0xfe12, +1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x2a8f,1, +1,1,1,1,1,1,1,1,0x2a95,1,1,1,1,0x2a9b,1,1, +1,1,0x2aa1,1,1,1,1,0x2aa7,1,1,1,1,1,1,1,1, +1,1,1,1,0x2aad,1,1,1,1,1,1,0xffb8,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0x8c0,0x1a25,1,1,1,1,1,1,1,0xfc00,1,1, -1,1,1,1,1,1,0xfe0e,1,0xfe12,0xfe12,1,1,1,1,1,1, -1,1,1,1,1,1,1,0xffb8,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1, +1,1,1,1,1,0x8c0,0x1a25,1,1,1,1,1,1,1,0xfc00,1, +1,1,1,1,1,1,1,0xfe0e,1,0xfe12,0xfe12,1,1,1,1,1, +1,1,1,1,1,1,1,1,0xffb8,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, -0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,1, +1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, -0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,1, +1,1,1,1,1,1,1,1,1,1,1,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, +0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, +0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00,0xfe00, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12, +1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,0xffcc,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xfe12,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0xffc8,1,1,1,1,1,1,1,1, +0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,0xffcc,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,0xffc8,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,0xffbc,0xffcc,0xffb8,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,1,1,0xffb8,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,0xffbc,0xffcc,0xffb8,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc, -0xffcc,0xffb8,1,0xffb8,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,1,1,0xffb8,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, +0xffcc,0xffcc,0xffb8,1,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc, +0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0x8c4,0x1a2b,0x8c8,0x1a31,0x8cc,0x1a37,0x8d0,0x1a3d,0x8d4,0x1a43,1,1,0x8d8, -0x1a49,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xfe0e,0xfc00,1,1,1,1,0x8dc,0x1a4f,0x8e0,0x1a55,0x8e4,0x8e8,0x1a5b,0x1a61, -0x8ec,0x1a67,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x8c4,0x1a2b,0x8c8,0x1a31,0x8cc,0x1a37,0x8d0,0x1a3d,0x8d4,0x1a43,1,1, +0x8d8,0x1a49,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xfe0e,0xfc00,1,1,1,1,0x8dc,0x1a4f,0x8e0,0x1a55,0x8e4,0x8e8,0x1a5b, +0x1a61,0x8ec,0x1a67,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1,1, +1,1,1,1,1,1,1,1,1,1,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,0xfe12,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1,1, -0xfe12,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffcc,0xffcc,0xffcc,1,0xfe02,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,0xffb8,0xffb8, -0xffb8,0xffb8,0xffcc,1,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,1,1,1,1,0xffb8, -1,1,1,1,1,1,0xffcc,1,1,1,0xffcc,0xffcc,1,1,1,1, -1,1,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffd4, -0xffac,0xffb8,0xff94,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0xfe0e,1,1,1,1,1,1,1,1,1,1, +1,0xfe12,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffcc,0xffcc,0xffcc,1,0xfe02,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffcc,0xffcc,0xffb8, +0xffb8,0xffb8,0xffb8,0xffcc,1,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,0xfe02,1,1,1,1, +0xffb8,1,1,1,1,1,1,0xffcc,1,1,1,0xffcc,0xffcc,1,1,1, +1,1,1,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffcc, +0xffd4,0xffac,0xffb8,0xff94,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, 0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffd0,0xffc8,0xffc8,0xffb8,1,0xffcc,0xffd2,0xffb8, -0xffcc,0xffb8,0x1a6c,0x1a72,0x1a78,0x1a7e,0x1a85,0x1a8b,0x1a91,0x1a97,0x1a9f,0x1aa9,0x1ab0,0x1ab6,0x1abc,0x1ac2, -0x1ac8,0x1ace,0x1ad5,0x1adb,0x1ae0,0x1ae6,0x1aee,0x1af8,0x1b02,0x1b0c,0x1b14,0x1b1a,0x1b20,0x1b26,0x1b2f,0x1b39, -0x1b41,0x1b47,0x1b4c,0x1b52,0x1b58,0x1b5e,0x1b64,0x1b6a,0x1b70,0x1b76,0x1b7d,0x1b83,0x1b88,0x1b8e,0x1b94,0x1b9a, -0x1ba2,0x1bac,0x1bb4,0x1bba,0x1bc0,0x1bc6,0x1bcc,0x1bd2,0xdde,0xde8,0x1bda,0x1be4,0x1bec,0x1bf2,0x1bf8,0x1bfe, -0x1c04,0x1c0a,0x1c10,0x1c16,0x1c1d,0x1c23,0x1c28,0x1c2e,0x1c34,0x1c3a,0x1c40,0x1c46,0x1c4c,0x1c52,0x1c5a,0x1c64, -0x1c6e,0x1c78,0x1c82,0x1c8c,0x1c96,0x1ca0,0x1ca9,0x1caf,0x1cb5,0x1cbb,0x1cc0,0x1cc6,0xdf2,0xdfc,0x1cce,0x1cd8, -0x1ce0,0x1ce6,0x1cec,0x1cf2,0xe06,0xe10,0x1cfa,0x1d04,0x1d0e,0x1d18,0x1d22,0x1d2c,0x1d34,0x1d3a,0x1d40,0x1d46, -0x1d4c,0x1d52,0x1d58,0x1d5e,0x1d64,0x1d6a,0x1d70,0x1d76,0x1d7c,0x1d82,0x1d8a,0x1d94,0x1d9e,0x1da8,0x1db0,0x1db6, -0x1dbd,0x1dc3,0x1dc8,0x1dce,0x1dd4,0x1dda,0x1de0,0x1de6,0x1dec,0x1df2,0x1df9,0x1dff,0x1e05,0x1e0b,0x1e11,0x1e17, -0x1e1c,0x1e22,0x1e28,0x1e2e,0x1e35,0x1e3b,0x1e41,0x1e47,0x1e4c,0x1e52,0x1e58,0x1e5e,1,0x1e65,1,1, -1,1,0xe1a,0xe28,0x1e6a,0x1e70,0x1e78,0x1e82,0x1e8c,0x1e96,0x1ea0,0x1eaa,0x1eb4,0x1ebe,0x1ec8,0x1ed2, -0x1edc,0x1ee6,0x1ef0,0x1efa,0x1f04,0x1f0e,0x1f18,0x1f22,0x1f2c,0x1f36,0xe36,0xe40,0x1f3e,0x1f44,0x1f4a,0x1f50, -0x1f58,0x1f62,0x1f6c,0x1f76,0x1f80,0x1f8a,0x1f94,0x1f9e,0x1fa8,0x1fb2,0x1fba,0x1fc0,0x1fc6,0x1fcc,0xe4a,0xe54, -0x1fd2,0x1fd8,0x1fe0,0x1fea,0x1ff4,0x1ffe,0x2008,0x2012,0x201c,0x2026,0x2030,0x203a,0x2044,0x204e,0x2058,0x2062, -0x206c,0x2076,0x2080,0x208a,0x2094,0x209e,0x20a6,0x20ac,0x20b2,0x20b8,0x20c0,0x20ca,0x20d4,0x20de,0x20e8,0x20f2, -0x20fc,0x2106,0x2110,0x211a,0x2122,0x2128,0x212f,0x2135,0x213a,0x2140,0x2146,0x214c,1,1,1,1, -1,1,0xe5e,0xe74,0xe8c,0xe9a,0xea8,0xeb6,0xec4,0xed2,0xede,0xef4,0xf0c,0xf1a,0xf28,0xf36, -0xf44,0xf52,0xf5e,0xf6c,0x2155,0x215f,0x2169,0x2173,1,1,0xf7a,0xf88,0x217d,0x2187,0x2191,0x219b, -1,1,0xf96,0xfac,0xfc4,0xfd2,0xfe0,0xfee,0xffc,0x100a,0x1016,0x102c,0x1044,0x1052,0x1060,0x106e, -0x107c,0x108a,0x1096,0x10a8,0x21a5,0x21af,0x21b9,0x21c3,0x21cd,0x21d7,0x10ba,0x10cc,0x21e1,0x21eb,0x21f5,0x21ff, -0x2209,0x2213,0x10de,0x10ec,0x221d,0x2227,0x2231,0x223b,1,1,0x10fa,0x1108,0x2245,0x224f,0x2259,0x2263, -1,1,0x1116,0x1128,0x226d,0x2277,0x2281,0x228b,0x2295,0x229f,1,0x113a,1,0x22a9,1,0x22b3, -1,0x22bd,0x114c,0x1162,0x117a,0x1188,0x1196,0x11a4,0x11b2,0x11c0,0x11cc,0x11e2,0x11fa,0x1208,0x1216,0x1224, -0x1232,0x1240,0x124c,0x3b9e,0x22c5,0x3ba6,0x1256,0x3bae,0x22cb,0x3bb6,0x22d1,0x3bbe,0x22d7,0x3bc6,0x1260,0x3bce, -1,1,0x22de,0x22e8,0x22f7,0x2307,0x2317,0x2327,0x2337,0x2347,0x2352,0x235c,0x236b,0x237b,0x238b,0x239b, -0x23ab,0x23bb,0x23c6,0x23d0,0x23df,0x23ef,0x23ff,0x240f,0x241f,0x242f,0x243a,0x2444,0x2453,0x2463,0x2473,0x2483, -0x2493,0x24a3,0x24ae,0x24b8,0x24c7,0x24d7,0x24e7,0x24f7,0x2507,0x2517,0x2522,0x252c,0x253b,0x254b,0x255b,0x256b, -0x257b,0x258b,0x2595,0x259b,0x25a3,0x25aa,0x25b3,1,0x126a,0x25bd,0x25c5,0x25cb,0x25d1,0x3bd6,0x25d6,1, -0x2ab2,0x8f0,1,0x25dd,0x25e5,0x25ec,0x25f5,1,0x1274,0x25ff,0x2607,0x3bde,0x260d,0x3be6,0x2612,0x2619, -0x261f,0x2625,0x262b,0x2631,0x2639,0x3bf0,1,1,0x2641,0x2649,0x2651,0x2657,0x265d,0x3bfa,1,0x2663, -0x2669,0x266f,0x2675,0x267b,0x2683,0x3c04,0x268b,0x2691,0x2697,0x269f,0x26a7,0x26ad,0x26b3,0x3c0e,0x26b9,0x26bf, -0x3c16,0x2ab7,1,1,0x26c7,0x26ce,0x26d7,1,0x127e,0x26e1,0x26e9,0x3c1e,0x26ef,0x3c26,0x26f4,0x2abb, -0x8fc,1,0xfa09,0xfa09,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffcc,0xffcc,0xfe02,0xfe02,0xffcc,0xffcc,0xffcc,0xffcc,0xfe02,0xfe02,0xfe02,0xffcc,0xffcc,1, -1,1,1,0xffcc,1,1,1,0xfe02,0xfe02,0xffcc,0xffb8,0xffcc,0xfe02,0xfe02,0xffb8,0xffb8, -0xffb8,0xffb8,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0x2abe,1,1,1,0x2ac2,0x3c2e,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0x908,1,0x90c,1,0x910,1,1,1,1,1,0x26fb,0x2701,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,0x2707,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0x270d,0x2713,0x2719,0x914,1,0x918,1,0x91c,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0x920,0x271f,1,1,1,0x924,0x2725,1,0x928,0x272b, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0x92c,0x2731,0x930,0x2737,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x934, -1,1,1,0x273d,1,0x938,0x2743,0x93c,1,0x2749,0x940,0x274f,1,1,1,0x944, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0x2755,0x948,0x275b,1,0x94c,0x950,1,1,1,1,1,1,1,0x2761, -0x2767,0x276d,0x2773,0x2779,0x954,0x958,0x277f,0x2785,0x95c,0x960,0x278b,0x2791,0x964,0x968,0x96c,0x970, -1,1,0x2797,0x279d,0x974,0x978,0x27a3,0x27a9,0x97c,0x980,0x27af,0x27b5,1,1,1,1, -1,1,1,0x984,0x988,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0x98c,1,1,1,1,1,0x990,0x994,1,0x998,0x27bb,0x27c1, -0x27c7,0x27cd,1,1,0x99c,0x9a0,0x9a4,0x9a8,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0x27d3,0x27d9,0x27df,0x27e5,1,1,1,1, -1,1,0x27eb,0x27f1,0x27f7,0x27fd,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2ac7, -0x2acb,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0x2acf,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1,1, +0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffd0,0xffc8,0xffc8,0xffb8,0xffb4,0xffcc,0xffd2, +0xffb8,0xffcc,0xffb8,0x1a6c,0x1a72,0x1a78,0x1a7e,0x1a85,0x1a8b,0x1a91,0x1a97,0x1a9f,0x1aa9,0x1ab0,0x1ab6,0x1abc, +0x1ac2,0x1ac8,0x1ace,0x1ad5,0x1adb,0x1ae0,0x1ae6,0x1aee,0x1af8,0x1b02,0x1b0c,0x1b14,0x1b1a,0x1b20,0x1b26,0x1b2f, +0x1b39,0x1b41,0x1b47,0x1b4c,0x1b52,0x1b58,0x1b5e,0x1b64,0x1b6a,0x1b70,0x1b76,0x1b7d,0x1b83,0x1b88,0x1b8e,0x1b94, +0x1b9a,0x1ba2,0x1bac,0x1bb4,0x1bba,0x1bc0,0x1bc6,0x1bcc,0x1bd2,0xdde,0xde8,0x1bda,0x1be4,0x1bec,0x1bf2,0x1bf8, +0x1bfe,0x1c04,0x1c0a,0x1c10,0x1c16,0x1c1d,0x1c23,0x1c28,0x1c2e,0x1c34,0x1c3a,0x1c40,0x1c46,0x1c4c,0x1c52,0x1c5a, +0x1c64,0x1c6e,0x1c78,0x1c82,0x1c8c,0x1c96,0x1ca0,0x1ca9,0x1caf,0x1cb5,0x1cbb,0x1cc0,0x1cc6,0xdf2,0xdfc,0x1cce, +0x1cd8,0x1ce0,0x1ce6,0x1cec,0x1cf2,0xe06,0xe10,0x1cfa,0x1d04,0x1d0e,0x1d18,0x1d22,0x1d2c,0x1d34,0x1d3a,0x1d40, +0x1d46,0x1d4c,0x1d52,0x1d58,0x1d5e,0x1d64,0x1d6a,0x1d70,0x1d76,0x1d7c,0x1d82,0x1d8a,0x1d94,0x1d9e,0x1da8,0x1db0, +0x1db6,0x1dbd,0x1dc3,0x1dc8,0x1dce,0x1dd4,0x1dda,0x1de0,0x1de6,0x1dec,0x1df2,0x1df9,0x1dff,0x1e05,0x1e0b,0x1e11, +0x1e17,0x1e1c,0x1e22,0x1e28,0x1e2e,0x1e35,0x1e3b,0x1e41,0x1e47,0x1e4c,0x1e52,0x1e58,0x1e5e,1,0x1e65,1, +1,1,1,0xe1a,0xe28,0x1e6a,0x1e70,0x1e78,0x1e82,0x1e8c,0x1e96,0x1ea0,0x1eaa,0x1eb4,0x1ebe,0x1ec8, +0x1ed2,0x1edc,0x1ee6,0x1ef0,0x1efa,0x1f04,0x1f0e,0x1f18,0x1f22,0x1f2c,0x1f36,0xe36,0xe40,0x1f3e,0x1f44,0x1f4a, +0x1f50,0x1f58,0x1f62,0x1f6c,0x1f76,0x1f80,0x1f8a,0x1f94,0x1f9e,0x1fa8,0x1fb2,0x1fba,0x1fc0,0x1fc6,0x1fcc,0xe4a, +0xe54,0x1fd2,0x1fd8,0x1fe0,0x1fea,0x1ff4,0x1ffe,0x2008,0x2012,0x201c,0x2026,0x2030,0x203a,0x2044,0x204e,0x2058, +0x2062,0x206c,0x2076,0x2080,0x208a,0x2094,0x209e,0x20a6,0x20ac,0x20b2,0x20b8,0x20c0,0x20ca,0x20d4,0x20de,0x20e8, +0x20f2,0x20fc,0x2106,0x2110,0x211a,0x2122,0x2128,0x212f,0x2135,0x213a,0x2140,0x2146,0x214c,1,1,1, +1,1,1,0xe5e,0xe74,0xe8c,0xe9a,0xea8,0xeb6,0xec4,0xed2,0xede,0xef4,0xf0c,0xf1a,0xf28, +0xf36,0xf44,0xf52,0xf5e,0xf6c,0x2155,0x215f,0x2169,0x2173,1,1,0xf7a,0xf88,0x217d,0x2187,0x2191, +0x219b,1,1,0xf96,0xfac,0xfc4,0xfd2,0xfe0,0xfee,0xffc,0x100a,0x1016,0x102c,0x1044,0x1052,0x1060, +0x106e,0x107c,0x108a,0x1096,0x10a8,0x21a5,0x21af,0x21b9,0x21c3,0x21cd,0x21d7,0x10ba,0x10cc,0x21e1,0x21eb,0x21f5, +0x21ff,0x2209,0x2213,0x10de,0x10ec,0x221d,0x2227,0x2231,0x223b,1,1,0x10fa,0x1108,0x2245,0x224f,0x2259, +0x2263,1,1,0x1116,0x1128,0x226d,0x2277,0x2281,0x228b,0x2295,0x229f,1,0x113a,1,0x22a9,1, +0x22b3,1,0x22bd,0x114c,0x1162,0x117a,0x1188,0x1196,0x11a4,0x11b2,0x11c0,0x11cc,0x11e2,0x11fa,0x1208,0x1216, +0x1224,0x1232,0x1240,0x124c,0x3b9e,0x22c5,0x3ba6,0x1256,0x3bae,0x22cb,0x3bb6,0x22d1,0x3bbe,0x22d7,0x3bc6,0x1260, +0x3bce,1,1,0x22de,0x22e8,0x22f7,0x2307,0x2317,0x2327,0x2337,0x2347,0x2352,0x235c,0x236b,0x237b,0x238b, +0x239b,0x23ab,0x23bb,0x23c6,0x23d0,0x23df,0x23ef,0x23ff,0x240f,0x241f,0x242f,0x243a,0x2444,0x2453,0x2463,0x2473, +0x2483,0x2493,0x24a3,0x24ae,0x24b8,0x24c7,0x24d7,0x24e7,0x24f7,0x2507,0x2517,0x2522,0x252c,0x253b,0x254b,0x255b, +0x256b,0x257b,0x258b,0x2595,0x259b,0x25a3,0x25aa,0x25b3,1,0x126a,0x25bd,0x25c5,0x25cb,0x25d1,0x3bd6,0x25d6, +1,0x2ab2,0x8f0,1,0x25dd,0x25e5,0x25ec,0x25f5,1,0x1274,0x25ff,0x2607,0x3bde,0x260d,0x3be6,0x2612, +0x2619,0x261f,0x2625,0x262b,0x2631,0x2639,0x3bf0,1,1,0x2641,0x2649,0x2651,0x2657,0x265d,0x3bfa,1, +0x2663,0x2669,0x266f,0x2675,0x267b,0x2683,0x3c04,0x268b,0x2691,0x2697,0x269f,0x26a7,0x26ad,0x26b3,0x3c0e,0x26b9, +0x26bf,0x3c16,0x2ab7,1,1,0x26c7,0x26ce,0x26d7,1,0x127e,0x26e1,0x26e9,0x3c1e,0x26ef,0x3c26,0x26f4, +0x2abb,0x8fc,1,0xfa09,0xfa09,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffcc,0xffcc,0xfe02,0xfe02,0xffcc,0xffcc,0xffcc,0xffcc,0xfe02,0xfe02,0xfe02,0xffcc,0xffcc, +1,1,1,1,0xffcc,1,1,1,0xfe02,0xfe02,0xffcc,0xffb8,0xffcc,0xfe02,0xfe02,0xffb8, +0xffb8,0xffb8,0xffb8,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0x2abe,1,1,1,0x2ac2,0x3c2e, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x908,1,0x90c,1,0x910,1,1,1,1,1,0x26fb,0x2701, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,0x2707,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x270d,0x2713,0x2719,0x914,1,0x918,1,0x91c,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x920,0x271f,1,1,1,0x924,0x2725,1,0x928, +0x272b,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x92c,0x2731,0x930,0x2737,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0x934,1,1,1,0x273d,1,0x938,0x2743,0x93c,1,0x2749,0x940,0x274f,1,1,1, +0x944,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0x2755,0x948,0x275b,1,0x94c,0x950,1,1,1,1,1,1,1, +0x2761,0x2767,0x276d,0x2773,0x2779,0x954,0x958,0x277f,0x2785,0x95c,0x960,0x278b,0x2791,0x964,0x968,0x96c, +0x970,1,1,0x2797,0x279d,0x974,0x978,0x27a3,0x27a9,0x97c,0x980,0x27af,0x27b5,1,1,1, +1,1,1,1,0x984,0x988,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0x98c,1,1,1,1,1,0x990,0x994,1,0x998,0x27bb, +0x27c1,0x27c7,0x27cd,1,1,0x99c,0x9a0,0x9a4,0x9a8,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,0x27d3,0x27d9,0x27df,0x27e5,1,1,1, +1,1,1,0x27eb,0x27f1,0x27f7,0x27fd,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0x2ac7,0x2acb,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x2acf,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xffcc, 0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0xffb4,0xffc8,0xffd0,0xffbc,0xffc0,0xffc0,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x9ac,1, -1,1,1,0x9b0,0x2803,0x9b4,0x2809,0x9b8,0x280f,0x9bc,0x2815,0x9c0,0x281b,0x9c4,0x2821,0x9c8, -0x2827,0x9cc,0x282d,0x9d0,0x2833,0x9d4,0x2839,0x9d8,0x283f,0x9dc,0x2845,1,0x9e0,0x284b,0x9e4,0x2851, -0x9e8,0x2857,1,1,1,1,1,0x9ec,0x285d,0x2863,0x9f4,0x2869,0x286f,0x9fc,0x2875,0x287b, -0xa04,0x2881,0x2887,0xa0c,0x288d,0x2893,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,0x2899,1,1,1,1,0xfc10, -0xfc10,1,1,0xa14,0x289f,1,1,1,1,1,1,1,0xa18,1,1,1, -1,0xa1c,0x28a5,0xa20,0x28ab,0xa24,0x28b1,0xa28,0x28b7,0xa2c,0x28bd,0xa30,0x28c3,0xa34,0x28c9,0xa38, -0x28cf,0xa3c,0x28d5,0xa40,0x28db,0xa44,0x28e1,0xa48,0x28e7,1,0xa4c,0x28ed,0xa50,0x28f3,0xa54,0x28f9, -1,1,1,1,1,0xa58,0x28ff,0x2905,0xa60,0x290b,0x2911,0xa68,0x2917,0x291d,0xa70,0x2923, -0x2929,0xa78,0x292f,0x2935,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0xa80,0xa84,0xa88,0xa8c,1,0x293b,1,1,0x2941,0x2947,0x294d, -0x2953,1,1,0xa90,0x2959,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xffcc,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,0xffb4,0xffc8,0xffd0,0xffbc,0xffc0,0xffc0,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x9ac, +1,1,1,1,0x9b0,0x2803,0x9b4,0x2809,0x9b8,0x280f,0x9bc,0x2815,0x9c0,0x281b,0x9c4,0x2821, +0x9c8,0x2827,0x9cc,0x282d,0x9d0,0x2833,0x9d4,0x2839,0x9d8,0x283f,0x9dc,0x2845,1,0x9e0,0x284b,0x9e4, +0x2851,0x9e8,0x2857,1,1,1,1,1,0x9ec,0x285d,0x2863,0x9f4,0x2869,0x286f,0x9fc,0x2875, +0x287b,0xa04,0x2881,0x2887,0xa0c,0x288d,0x2893,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0x2899,1,1,1,1, +0xfc10,0xfc10,1,1,0xa14,0x289f,1,1,1,1,1,1,1,0xa18,1,1, +1,1,0xa1c,0x28a5,0xa20,0x28ab,0xa24,0x28b1,0xa28,0x28b7,0xa2c,0x28bd,0xa30,0x28c3,0xa34,0x28c9, +0xa38,0x28cf,0xa3c,0x28d5,0xa40,0x28db,0xa44,0x28e1,0xa48,0x28e7,1,0xa4c,0x28ed,0xa50,0x28f3,0xa54, +0x28f9,1,1,1,1,1,0xa58,0x28ff,0x2905,0xa60,0x290b,0x2911,0xa68,0x2917,0x291d,0xa70, +0x2923,0x2929,0xa78,0x292f,0x2935,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0xa80,0xa84,0xa88,0xa8c,1,0x293b,1,1,0x2941,0x2947, +0x294d,0x2953,1,1,0xa90,0x2959,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1, +1,1,1,1,1,0xffcc,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1, +1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffb8,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1,1, +1,1,1,1,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0xffcc,1,0xffcc,0xffcc,0xffb8,1,1,0xffcc, -0xffcc,1,1,1,1,1,0xffcc,0xffcc,1,0xffcc,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffb8,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,0xfe12,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12,1, -1,1,1,1,1,1,1,1,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,0xffcc,1,0xffcc,0xffcc,0xffb8,1,1, +0xffcc,0xffcc,1,1,1,1,1,0xffcc,0xffcc,1,0xffcc,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12, +1,1,1,1,1,1,1,1,1,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, 0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, -0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, +0x1289,0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, 0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, -0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, -0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289,0x1289, +0x1289,0xae2,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, +0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0xae2,0x1289,0x1289, 0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289, -0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0x3c66,1,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3c66,0x3c66, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0x3c66,1,1,1,1,0x3c66,1,1,1,0x3c66,1,0x3c66,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0x3b97,1,0x2ad5, -0x2ad9,0x2add,0x2ae1,0x2ae5,0x2ae9,0x2aed,0x2af1,0x2af1,0x2af5,0x2af9,0x2afd,0x2b01,0x2b05,0x2b09,0x2b0d,0x2b11, -0x2b15,0x2b19,0x2b1d,0x2b21,0x2b25,0x2b29,0x2b2d,0x2b31,0x2b35,0x2b39,0x2b3d,0x2b41,0x2b45,0x2b49,0x2b4d,0x2b51, -0x2b55,0x2b59,0x2b5d,0x2b61,0x2b65,0x2b69,0x2b6d,0x2b71,0x2b75,0x2b79,0x2b7d,0x2b81,0x2b85,0x2b89,0x2b8d,0x2b91, -0x2b95,0x2b99,0x2b9d,0x2ba1,0x2ba5,0x2ba9,0x2bad,0x2bb1,0x2bb5,0x2bb9,0x2bbd,0x2bc1,0x2bc5,0x2bc9,0x2bcd,0x2bd1, -0x2bd5,0x2bd9,0x2bdd,0x2be1,0x2be5,0x2be9,0x2bed,0x2bf1,0x2bf5,0x2bf9,0x2bfd,0x2c01,0x2c05,0x2c09,0x2c0d,0x2c11, -0x2c15,0x2c19,0x2c1d,0x2c21,0x2c25,0x2c29,0x2c2d,0x2c31,0x2c35,0x2c39,0x2c3d,0x2b21,0x2c41,0x2c45,0x2c49,0x2c4d, -0x2c51,0x2c55,0x2c59,0x2c5d,0x2c61,0x2c65,0x2c69,0x2c6d,0x2c71,0x2c75,0x2c79,0x2c7d,0x2c81,0x2c85,0x2c89,0x2c8d, -0x2c91,0x2c95,0x2c99,0x2c9d,0x2ca1,0x2ca5,0x2ca9,0x2cad,0x2cb1,0x2cb5,0x2cb9,0x2cbd,0x2cc1,0x2cc5,0x2cc9,0x2ccd, -0x2cd1,0x2cd5,0x2cd9,0x2cdd,0x2ce1,0x2ce5,0x2ce9,0x2ced,0x2cf1,0x2cf5,0x2cf9,0x2cfd,0x2d01,0x2d05,0x2d09,0x2d0d, -0x2d11,0x2d15,0x2d19,0x2d1d,0x2d21,0x2d25,0x2d29,0x2d2d,0x2d31,0x2d35,0x2d39,0x2d3d,0x2d41,0x2d45,0x2d49,0x2d4d, -0x2c89,0x2d51,0x2d55,0x2d59,0x2d5d,0x2d61,0x2d65,0x2d69,0x2d6d,0x2c49,0x2d71,0x2d75,0x2d79,0x2d7d,0x2d81,0x2d85, -0x2d89,0x2d8d,0x2d91,0x2d95,0x2d99,0x2d9d,0x2da1,0x2da5,0x2da9,0x2dad,0x2db1,0x2db5,0x2db9,0x2dbd,0x2b21,0x2dc1, -0x2dc5,0x2dc9,0x2dcd,0x2dd1,0x2dd5,0x2dd9,0x2ddd,0x2de1,0x2de5,0x2de9,0x2ded,0x2df1,0x2df5,0x2df9,0x2dfd,0x2e01, -0x2e05,0x2e09,0x2e0d,0x2e11,0x2e15,0x2e19,0x2e1d,0x2e21,0x2e25,0x2e29,0x2c51,0x2e2d,0x2e31,0x2e35,0x2e39,0x2e3d, -0x2e41,0x2e45,0x2e49,0x2e4d,0x2e51,0x2e55,0x2e59,0x2e5d,0x2e61,0x2e65,0x2e69,0x2e6d,0x2e71,0x2e75,0x2e79,0x2e7d, -0x2e81,0x2e85,0x2e89,0x2e8d,0x2e91,0x2e95,0x2e99,0x2e9d,0x2ea1,0x2ea5,0x2ea9,0x2ead,0x2eb1,0x2eb5,0x2eb9,0x2ebd, -0x2ec1,0x2ec5,0x2ec9,0x2ecd,0x2ed1,0x2ed5,0x2ed9,0x2edd,0x2ee1,0x2ee5,0x2ee9,0x2eed,0x2ef1,1,1,0x2ef5, -1,0x2ef9,1,1,0x2efd,0x2f01,0x2f05,0x2f09,0x2f0d,0x2f11,0x2f15,0x2f19,0x2f1d,0x2f21,1,0x2f25, -1,0x2f29,1,1,0x2f2d,0x2f31,1,1,1,0x2f35,0x2f39,0x2f3d,0x2f41,0x2f45,0x2f49,0x2f4d, -0x2f51,0x2f55,0x2f59,0x2f5d,0x2f61,0x2f65,0x2f69,0x2f6d,0x2f71,0x2f75,0x2f79,0x2f7d,0x2f81,0x2f85,0x2f89,0x2f8d, -0x2f91,0x2f95,0x2f99,0x2f9d,0x2fa1,0x2fa5,0x2fa9,0x2fad,0x2fb1,0x2fb5,0x2fb9,0x2fbd,0x2fc1,0x2fc5,0x2fc9,0x2fcd, -0x2fd1,0x2fd5,0x2fd9,0x2fdd,0x2fe1,0x2fe5,0x2d25,0x2fe9,0x2fed,0x2ff1,0x2ff5,0x2ff9,0x2ffd,0x2ffd,0x3001,0x3005, -0x3009,0x300d,0x3011,0x3015,0x3019,0x301d,0x2f2d,0x3021,0x3025,0x3029,0x302d,0x3031,0x3037,1,1,0x303b, -0x303f,0x3043,0x3047,0x304b,0x304f,0x3053,0x3057,0x2f65,0x305b,0x305f,0x3063,0x2ef5,0x3067,0x306b,0x306f,0x3073, -0x3077,0x307b,0x307f,0x3083,0x3087,0x308b,0x308f,0x3093,0x2f89,0x3097,0x2f8d,0x309b,0x309f,0x30a3,0x30a7,0x30ab, -0x2ef9,0x2b75,0x30af,0x30b3,0x30b7,0x2c8d,0x2de9,0x30bb,0x30bf,0x2fa9,0x30c3,0x2fad,0x30c7,0x30cb,0x30cf,0x2f01, -0x30d3,0x30d7,0x30db,0x30df,0x30e3,0x2f05,0x30e7,0x30eb,0x30ef,0x30f3,0x30f7,0x30fb,0x2fe5,0x30ff,0x3103,0x2d25, -0x3107,0x2ff5,0x310b,0x310f,0x3113,0x3117,0x311b,0x3009,0x311f,0x2f29,0x3123,0x300d,0x2c41,0x3127,0x3011,0x312b, -0x3019,0x312f,0x3133,0x3137,0x313b,0x313f,0x3021,0x2f19,0x3143,0x3025,0x3147,0x3029,0x314b,0x2af1,0x314f,0x3155, -0x315b,0x3161,0x3165,0x3169,0x316d,0x3173,0x3179,0x317f,0x3183,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3186, -0xfe34,0x318c,1,1,1,1,1,1,1,1,1,1,0x3192,0x3198,0x31a0,0x31aa, -0x31b2,0x31b8,0x31be,0x31c4,0x31ca,0x31d0,0x31d6,0x31dc,0x31e2,1,0x31e8,0x31ee,0x31f4,0x31fa,0x3200,1, -0x3206,1,0x320c,0x3212,1,0x3218,0x321e,1,0x3224,0x322a,0x3230,0x3236,0x323c,0x3242,0x3248,0x324e, -0x3254,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, -0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffb8,1,0xffcc,1,1,1,1,1,1,1,1,0xffcc,0xfe02,0xffb8, -1,1,1,1,0xfe12,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1, -1,1,1,1,1,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffb8,0xffb8,0xffb8,1, -1,1,1,1,1,1,1,1,0xa94,0x295f,0xa9a,0x2969,1,1,1,1, -1,0xaa0,1,1,1,1,1,0x2973,1,1,1,1,1,1,1,1, -1,0xfe12,0xfc0e,1,1,1,1,1,1,1,0xfc00,1,1,1,1,1, -1,0x297d,0x2987,1,0xaa6,0xaac,0xfe12,0xfe12,1,1,1,1,1,1,1,1, -1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,0xfe0e,1,1, -1,1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,0xfe0e,0xfe12, -1,1,1,1,1,1,1,1,1,1,1,0xfe0e,0xfe0e,1,0xfc00,1, -1,1,1,1,1,1,0xab2,1,1,1,0x2991,0x299b,0xfe12,1,1,1, -1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,0xfe12,1,1, -1,0xfe0e,1,1,1,1,1,1,1,1,1,0xfc00,1,1,1,1, -1,1,1,1,0xabe,0xfc00,0x29a5,0x29af,0xfc00,0x29b9,1,1,0xfe12,0xfe0e,1,1, -1,1,1,1,1,1,1,1,1,1,0xad0,0xad6,0x29c3,0x29cd,1,1, -1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,0xfc00,1,1,1, -1,0xadc,1,1,0x29d7,1,1,1,1,0xfe12,0xfe12,1,0xfe02,0xfe02,0xfe02,0xfe02, -0xfe02,1,1,1,1,1,1,1,1,1,1,1,0xfe0c,0xfe0c,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xfe02,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0x325a,0x3264,0x3278,0x3290,0x32a8, -0x32c0,0x32d8,0xffb0,0xffb0,0xfe02,0xfe02,0xfe02,1,1,1,0xffc4,0xffb0,0xffb0,0xffb0,1,1, -1,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1,0xffcc,0xffcc, -0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x32e6,0x32f0,0x3304, -0x331c,0x3334,0x334c,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1,0xffcc,0xffcc, -0xffcc,0xffcc,0xffcc,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1, -1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e,1, -1,1,1,1,0x335b,0x335f,0x3363,0x3367,0x336d,0x2f4d,0x3371,0x3375,0x3379,0x337d,0x2f51,0x3381, -0x3385,0x3389,0x2f55,0x338f,0x3393,0x3397,0x339b,0x33a1,0x33a5,0x33a9,0x33ad,0x33b3,0x33b7,0x33bb,0x33bf,0x303f, -0x33c3,0x33c9,0x33cd,0x33d1,0x33d5,0x33d9,0x33dd,0x33e1,0x33e5,0x3053,0x2f59,0x2f5d,0x3057,0x33e9,0x33ed,0x2c59, -0x33f1,0x2f61,0x33f5,0x33f9,0x33fd,0x3401,0x3401,0x3401,0x3405,0x340b,0x340f,0x3413,0x3417,0x341d,0x3421,0x3425, -0x3429,0x342d,0x3431,0x3435,0x3439,0x343d,0x3441,0x3445,0x3449,0x344d,0x344d,0x305f,0x3451,0x3455,0x3459,0x345d, -0x2f69,0x3461,0x3465,0x3469,0x2ebd,0x346d,0x3471,0x3475,0x3479,0x347d,0x3481,0x3485,0x3489,0x348d,0x3493,0x3497, -0x349b,0x349f,0x34a3,0x34a7,0x34ab,0x34b1,0x34b7,0x34bb,0x34bf,0x34c3,0x34c7,0x34cb,0x34cf,0x34d3,0x34d7,0x34d7, -0x34db,0x34e1,0x34e5,0x2c49,0x34e9,0x34ed,0x34f3,0x34f7,0x34fb,0x34ff,0x3503,0x3507,0x2f7d,0x350b,0x350f,0x3513, -0x3519,0x351d,0x3523,0x3527,0x352b,0x352f,0x3533,0x3537,0x353b,0x353f,0x3543,0x3547,0x354b,0x354f,0x3555,0x3559, -0x355d,0x3561,0x2b71,0x3565,0x356b,0x356f,0x356f,0x3575,0x3579,0x3579,0x357d,0x3581,0x3587,0x358d,0x3591,0x3595, -0x3599,0x359d,0x35a1,0x35a5,0x35a9,0x35ad,0x35b1,0x2f81,0x35b5,0x35bb,0x35bf,0x35c3,0x308f,0x35c3,0x35c7,0x2f89, -0x35cb,0x35cf,0x35d3,0x35d7,0x2f8d,0x2b05,0x35db,0x35df,0x35e3,0x35e7,0x35eb,0x35ef,0x35f3,0x35f9,0x35fd,0x3601, -0x3605,0x3609,0x360d,0x3613,0x3617,0x361b,0x361f,0x3623,0x3627,0x362b,0x362f,0x3633,0x2f91,0x3637,0x363b,0x3641, -0x3645,0x3649,0x364d,0x2f99,0x3651,0x3655,0x3659,0x365d,0x3661,0x3665,0x3669,0x366d,0x2b75,0x30af,0x3671,0x3675, -0x3679,0x367d,0x3683,0x3687,0x368b,0x368f,0x2f9d,0x3693,0x3699,0x369d,0x36a1,0x3161,0x36a5,0x36a9,0x36ad,0x36b1, -0x36b5,0x36bb,0x36bf,0x36c3,0x36c7,0x36cd,0x36d1,0x36d5,0x36d9,0x2c8d,0x36dd,0x36e1,0x36e7,0x36ed,0x36f3,0x36f7, -0x36fd,0x3701,0x3705,0x3709,0x370d,0x2fa1,0x2de9,0x3711,0x3715,0x3719,0x371d,0x3723,0x3727,0x372b,0x372f,0x30bf, -0x3733,0x3737,0x373d,0x3741,0x3745,0x374b,0x3751,0x3755,0x30c3,0x3759,0x375d,0x3761,0x3765,0x3769,0x376d,0x3771, -0x3777,0x377b,0x3781,0x3785,0x378b,0x30cb,0x378f,0x3793,0x3799,0x379d,0x37a1,0x37a7,0x37ad,0x37b1,0x37b5,0x37b9, -0x37bd,0x37bd,0x37c1,0x37c5,0x30d3,0x37c9,0x37cd,0x37d1,0x37d5,0x37d9,0x37df,0x37e3,0x2c55,0x37e9,0x37ef,0x37f3, -0x37f9,0x37ff,0x3805,0x3809,0x30eb,0x380d,0x3813,0x3819,0x381f,0x3825,0x3829,0x3829,0x30ef,0x3169,0x382d,0x3831, -0x3835,0x3839,0x383f,0x2bbd,0x30f7,0x3843,0x3847,0x2fcd,0x384d,0x3853,0x2f15,0x3859,0x385d,0x2fdd,0x3861,0x3865, -0x3869,0x386f,0x386f,0x3875,0x3879,0x387d,0x3883,0x3887,0x388b,0x388f,0x3895,0x3899,0x389d,0x38a1,0x38a5,0x38a9, -0x38af,0x38b3,0x38b7,0x38bb,0x38bf,0x38c3,0x38c7,0x38cd,0x38d3,0x38d7,0x38dd,0x38e1,0x38e7,0x38eb,0x2ff5,0x38ef, -0x38f5,0x38fb,0x38ff,0x3905,0x3909,0x390f,0x3913,0x3917,0x391b,0x391f,0x3923,0x3927,0x392d,0x3933,0x3939,0x3575, -0x393f,0x3943,0x3947,0x394b,0x394f,0x3953,0x3957,0x395b,0x395f,0x3963,0x3967,0x396b,0x2c9d,0x3971,0x3975,0x3979, -0x397d,0x3981,0x3985,0x3001,0x3989,0x398d,0x3991,0x3995,0x3999,0x399f,0x39a5,0x39ab,0x39af,0x39b3,0x39b7,0x39bb, -0x39c1,0x39c5,0x39cb,0x39cf,0x39d3,0x39d9,0x39df,0x39e3,0x2ba9,0x39e7,0x39eb,0x39ef,0x39f3,0x39f7,0x39fb,0x3113, -0x39ff,0x3a03,0x3a07,0x3a0b,0x3a0f,0x3a13,0x3a17,0x3a1b,0x3a1f,0x3a23,0x3a29,0x3a2d,0x3a31,0x3a35,0x3a39,0x3a3d, -0x3a43,0x3a49,0x3a4d,0x3a51,0x3127,0x312b,0x3a55,0x3a59,0x3a5f,0x3a63,0x3a67,0x3a6b,0x3a6f,0x3a75,0x3a7b,0x3a7f, -0x3a83,0x3a87,0x3a8d,0x312f,0x3a91,0x3a97,0x3a9d,0x3aa1,0x3aa5,0x3aa9,0x3aaf,0x3ab3,0x3ab7,0x3abb,0x3abf,0x3ac3, -0x3ac7,0x3acb,0x3ad1,0x3ad5,0x3ad9,0x3add,0x3ae3,0x3ae7,0x3aeb,0x3aef,0x3af3,0x3af9,0x3aff,0x3b03,0x3b07,0x3b0b, -0x3b11,0x3b15,0x3147,0x3147,0x3b1b,0x3b1f,0x3b25,0x3b29,0x3b2d,0x3b31,0x3b35,0x3b39,0x3b3d,0x3b41,0x314b,0x3b47, -0x3b4b,0x3b4f,0x3b53,0x3b57,0x3b5b,0x3b61,0x3b65,0x3b6b,0x3b71,0x3b77,0x3b7b,0x3b7f,0x3b83,0x3b87,0x3b8b,0x3b8f, -0x3b93,0x3b97,1,1 +0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,0x1289,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0x3c66,1,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,0x3c66,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3c66, +0x3c66,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x3c66,1,1,1,1,0x3c66,1,1,1,0x3c66,1,0x3c66, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x3b97,1, +0x2ad5,0x2ad9,0x2add,0x2ae1,0x2ae5,0x2ae9,0x2aed,0x2af1,0x2af1,0x2af5,0x2af9,0x2afd,0x2b01,0x2b05,0x2b09,0x2b0d, +0x2b11,0x2b15,0x2b19,0x2b1d,0x2b21,0x2b25,0x2b29,0x2b2d,0x2b31,0x2b35,0x2b39,0x2b3d,0x2b41,0x2b45,0x2b49,0x2b4d, +0x2b51,0x2b55,0x2b59,0x2b5d,0x2b61,0x2b65,0x2b69,0x2b6d,0x2b71,0x2b75,0x2b79,0x2b7d,0x2b81,0x2b85,0x2b89,0x2b8d, +0x2b91,0x2b95,0x2b99,0x2b9d,0x2ba1,0x2ba5,0x2ba9,0x2bad,0x2bb1,0x2bb5,0x2bb9,0x2bbd,0x2bc1,0x2bc5,0x2bc9,0x2bcd, +0x2bd1,0x2bd5,0x2bd9,0x2bdd,0x2be1,0x2be5,0x2be9,0x2bed,0x2bf1,0x2bf5,0x2bf9,0x2bfd,0x2c01,0x2c05,0x2c09,0x2c0d, +0x2c11,0x2c15,0x2c19,0x2c1d,0x2c21,0x2c25,0x2c29,0x2c2d,0x2c31,0x2c35,0x2c39,0x2c3d,0x2b21,0x2c41,0x2c45,0x2c49, +0x2c4d,0x2c51,0x2c55,0x2c59,0x2c5d,0x2c61,0x2c65,0x2c69,0x2c6d,0x2c71,0x2c75,0x2c79,0x2c7d,0x2c81,0x2c85,0x2c89, +0x2c8d,0x2c91,0x2c95,0x2c99,0x2c9d,0x2ca1,0x2ca5,0x2ca9,0x2cad,0x2cb1,0x2cb5,0x2cb9,0x2cbd,0x2cc1,0x2cc5,0x2cc9, +0x2ccd,0x2cd1,0x2cd5,0x2cd9,0x2cdd,0x2ce1,0x2ce5,0x2ce9,0x2ced,0x2cf1,0x2cf5,0x2cf9,0x2cfd,0x2d01,0x2d05,0x2d09, +0x2d0d,0x2d11,0x2d15,0x2d19,0x2d1d,0x2d21,0x2d25,0x2d29,0x2d2d,0x2d31,0x2d35,0x2d39,0x2d3d,0x2d41,0x2d45,0x2d49, +0x2d4d,0x2c89,0x2d51,0x2d55,0x2d59,0x2d5d,0x2d61,0x2d65,0x2d69,0x2d6d,0x2c49,0x2d71,0x2d75,0x2d79,0x2d7d,0x2d81, +0x2d85,0x2d89,0x2d8d,0x2d91,0x2d95,0x2d99,0x2d9d,0x2da1,0x2da5,0x2da9,0x2dad,0x2db1,0x2db5,0x2db9,0x2dbd,0x2b21, +0x2dc1,0x2dc5,0x2dc9,0x2dcd,0x2dd1,0x2dd5,0x2dd9,0x2ddd,0x2de1,0x2de5,0x2de9,0x2ded,0x2df1,0x2df5,0x2df9,0x2dfd, +0x2e01,0x2e05,0x2e09,0x2e0d,0x2e11,0x2e15,0x2e19,0x2e1d,0x2e21,0x2e25,0x2e29,0x2c51,0x2e2d,0x2e31,0x2e35,0x2e39, +0x2e3d,0x2e41,0x2e45,0x2e49,0x2e4d,0x2e51,0x2e55,0x2e59,0x2e5d,0x2e61,0x2e65,0x2e69,0x2e6d,0x2e71,0x2e75,0x2e79, +0x2e7d,0x2e81,0x2e85,0x2e89,0x2e8d,0x2e91,0x2e95,0x2e99,0x2e9d,0x2ea1,0x2ea5,0x2ea9,0x2ead,0x2eb1,0x2eb5,0x2eb9, +0x2ebd,0x2ec1,0x2ec5,0x2ec9,0x2ecd,0x2ed1,0x2ed5,0x2ed9,0x2edd,0x2ee1,0x2ee5,0x2ee9,0x2eed,0x2ef1,1,1, +0x2ef5,1,0x2ef9,1,1,0x2efd,0x2f01,0x2f05,0x2f09,0x2f0d,0x2f11,0x2f15,0x2f19,0x2f1d,0x2f21,1, +0x2f25,1,0x2f29,1,1,0x2f2d,0x2f31,1,1,1,0x2f35,0x2f39,0x2f3d,0x2f41,0x2f45,0x2f49, +0x2f4d,0x2f51,0x2f55,0x2f59,0x2f5d,0x2f61,0x2f65,0x2f69,0x2f6d,0x2f71,0x2f75,0x2f79,0x2f7d,0x2f81,0x2f85,0x2f89, +0x2f8d,0x2f91,0x2f95,0x2f99,0x2f9d,0x2fa1,0x2fa5,0x2fa9,0x2fad,0x2fb1,0x2fb5,0x2fb9,0x2fbd,0x2fc1,0x2fc5,0x2fc9, +0x2fcd,0x2fd1,0x2fd5,0x2fd9,0x2fdd,0x2fe1,0x2fe5,0x2d25,0x2fe9,0x2fed,0x2ff1,0x2ff5,0x2ff9,0x2ffd,0x2ffd,0x3001, +0x3005,0x3009,0x300d,0x3011,0x3015,0x3019,0x301d,0x2f2d,0x3021,0x3025,0x3029,0x302d,0x3031,0x3037,1,1, +0x303b,0x303f,0x3043,0x3047,0x304b,0x304f,0x3053,0x3057,0x2f65,0x305b,0x305f,0x3063,0x2ef5,0x3067,0x306b,0x306f, +0x3073,0x3077,0x307b,0x307f,0x3083,0x3087,0x308b,0x308f,0x3093,0x2f89,0x3097,0x2f8d,0x309b,0x309f,0x30a3,0x30a7, +0x30ab,0x2ef9,0x2b75,0x30af,0x30b3,0x30b7,0x2c8d,0x2de9,0x30bb,0x30bf,0x2fa9,0x30c3,0x2fad,0x30c7,0x30cb,0x30cf, +0x2f01,0x30d3,0x30d7,0x30db,0x30df,0x30e3,0x2f05,0x30e7,0x30eb,0x30ef,0x30f3,0x30f7,0x30fb,0x2fe5,0x30ff,0x3103, +0x2d25,0x3107,0x2ff5,0x310b,0x310f,0x3113,0x3117,0x311b,0x3009,0x311f,0x2f29,0x3123,0x300d,0x2c41,0x3127,0x3011, +0x312b,0x3019,0x312f,0x3133,0x3137,0x313b,0x313f,0x3021,0x2f19,0x3143,0x3025,0x3147,0x3029,0x314b,0x2af1,0x314f, +0x3155,0x315b,0x3161,0x3165,0x3169,0x316d,0x3173,0x3179,0x317f,0x3183,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0x3186,0xfe34,0x318c,1,1,1,1,1,1,1,1,1,1,0x3192,0x3198,0x31a0, +0x31aa,0x31b2,0x31b8,0x31be,0x31c4,0x31ca,0x31d0,0x31d6,0x31dc,0x31e2,1,0x31e8,0x31ee,0x31f4,0x31fa,0x3200, +1,0x3206,1,0x320c,0x3212,1,0x3218,0x321e,1,0x3224,0x322a,0x3230,0x3236,0x323c,0x3242,0x3248, +0x324e,0x3254,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, +0xffb8,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffb8,1,0xffcc,1,1,1,1,1,1,1,1,0xffcc,0xfe02, +0xffb8,1,1,1,1,0xfe12,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,1,1, +1,1,1,1,1,1,0xffb8,0xffb8,0xffcc,0xffcc,0xffcc,0xffb8,0xffcc,0xffb8,0xffb8,0xffb8, +1,1,0xffcc,0xffb8,0xffcc,0xffb8,1,1,1,1,1,1,1,1,1,1, +0xfe12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe12, +1,1,1,1,1,1,1,1,1,0xa94,0x295f,0xa9a,0x2969,1,1,1, +1,1,0xaa0,1,1,1,1,1,0x2973,1,1,1,1,1,1,1, +1,1,0xfe12,0xfc0e,1,1,1,1,1,1,1,0xfc00,1,1,1,1, +1,1,0x297d,0x2987,1,0xaa6,0xaac,0xfe12,0xfe12,1,1,1,1,1,1,1, +1,1,1,1,0xfe12,1,1,1,1,1,1,1,1,1,0xfe0e,1, +1,1,1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,0xfe0e, +0xfe12,1,1,1,1,1,1,1,1,1,1,1,0xfe0e,0xfe0e,1,0xfc00, +1,1,1,1,1,1,1,0xab2,1,1,1,0x2991,0x299b,0xfe12,1,1, +1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,0xfe12,1, +1,1,0xfe0e,1,1,1,1,1,1,1,1,1,0xfc00,1,1,1, +1,1,1,1,1,0xabe,0xfc00,0x29a5,0x29af,0xfc00,0x29b9,1,1,0xfe12,0xfe0e,1, +1,1,1,1,1,1,1,1,1,1,1,0xad0,0xad6,0x29c3,0x29cd,1, +1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xfe12,0xfe0e,1,1,1,1,1,1,1,1,0xfc00,1,1, +1,1,0xadc,1,1,0x29d7,1,1,1,1,0xfe12,0xfe12,1,0xfe02,0xfe02,0xfe02, +0xfe02,0xfe02,1,1,1,1,1,1,1,1,1,1,1,0xfe0c,0xfe0c,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,0xfe02,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,0x325a,0x3264,0x3278,0x3290, +0x32a8,0x32c0,0x32d8,0xffb0,0xffb0,0xfe02,0xfe02,0xfe02,1,1,1,0xffc4,0xffb0,0xffb0,0xffb0,1, +1,1,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,1,1,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,0xffb8,0xffb8,1,1,1,1,1,1,1,1,1,1,0xffcc, +0xffcc,0xffcc,0xffcc,1,1,1,1,1,1,1,1,1,1,1,0x32e6,0x32f0, +0x3304,0x331c,0x3334,0x334c,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,1,0xffcc,0xffcc,1,0xffcc, +0xffcc,0xffcc,0xffcc,0xffcc,1,1,1,1,1,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8,0xffb8, +1,1,1,1,1,1,1,1,1,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xffcc,0xfe0e, +1,1,1,1,1,0x335b,0x335f,0x3363,0x3367,0x336d,0x2f4d,0x3371,0x3375,0x3379,0x337d,0x2f51, +0x3381,0x3385,0x3389,0x2f55,0x338f,0x3393,0x3397,0x339b,0x33a1,0x33a5,0x33a9,0x33ad,0x33b3,0x33b7,0x33bb,0x33bf, +0x303f,0x33c3,0x33c9,0x33cd,0x33d1,0x33d5,0x33d9,0x33dd,0x33e1,0x33e5,0x3053,0x2f59,0x2f5d,0x3057,0x33e9,0x33ed, +0x2c59,0x33f1,0x2f61,0x33f5,0x33f9,0x33fd,0x3401,0x3401,0x3401,0x3405,0x340b,0x340f,0x3413,0x3417,0x341d,0x3421, +0x3425,0x3429,0x342d,0x3431,0x3435,0x3439,0x343d,0x3441,0x3445,0x3449,0x344d,0x344d,0x305f,0x3451,0x3455,0x3459, +0x345d,0x2f69,0x3461,0x3465,0x3469,0x2ebd,0x346d,0x3471,0x3475,0x3479,0x347d,0x3481,0x3485,0x3489,0x348d,0x3493, +0x3497,0x349b,0x349f,0x34a3,0x34a7,0x34ab,0x34b1,0x34b7,0x34bb,0x34bf,0x34c3,0x34c7,0x34cb,0x34cf,0x34d3,0x34d7, +0x34d7,0x34db,0x34e1,0x34e5,0x2c49,0x34e9,0x34ed,0x34f3,0x34f7,0x34fb,0x34ff,0x3503,0x3507,0x2f7d,0x350b,0x350f, +0x3513,0x3519,0x351d,0x3523,0x3527,0x352b,0x352f,0x3533,0x3537,0x353b,0x353f,0x3543,0x3547,0x354b,0x354f,0x3555, +0x3559,0x355d,0x3561,0x2b71,0x3565,0x356b,0x356f,0x356f,0x3575,0x3579,0x3579,0x357d,0x3581,0x3587,0x358d,0x3591, +0x3595,0x3599,0x359d,0x35a1,0x35a5,0x35a9,0x35ad,0x35b1,0x2f81,0x35b5,0x35bb,0x35bf,0x35c3,0x308f,0x35c3,0x35c7, +0x2f89,0x35cb,0x35cf,0x35d3,0x35d7,0x2f8d,0x2b05,0x35db,0x35df,0x35e3,0x35e7,0x35eb,0x35ef,0x35f3,0x35f9,0x35fd, +0x3601,0x3605,0x3609,0x360d,0x3613,0x3617,0x361b,0x361f,0x3623,0x3627,0x362b,0x362f,0x3633,0x2f91,0x3637,0x363b, +0x3641,0x3645,0x3649,0x364d,0x2f99,0x3651,0x3655,0x3659,0x365d,0x3661,0x3665,0x3669,0x366d,0x2b75,0x30af,0x3671, +0x3675,0x3679,0x367d,0x3683,0x3687,0x368b,0x368f,0x2f9d,0x3693,0x3699,0x369d,0x36a1,0x3161,0x36a5,0x36a9,0x36ad, +0x36b1,0x36b5,0x36bb,0x36bf,0x36c3,0x36c7,0x36cd,0x36d1,0x36d5,0x36d9,0x2c8d,0x36dd,0x36e1,0x36e7,0x36ed,0x36f3, +0x36f7,0x36fd,0x3701,0x3705,0x3709,0x370d,0x2fa1,0x2de9,0x3711,0x3715,0x3719,0x371d,0x3723,0x3727,0x372b,0x372f, +0x30bf,0x3733,0x3737,0x373d,0x3741,0x3745,0x374b,0x3751,0x3755,0x30c3,0x3759,0x375d,0x3761,0x3765,0x3769,0x376d, +0x3771,0x3777,0x377b,0x3781,0x3785,0x378b,0x30cb,0x378f,0x3793,0x3799,0x379d,0x37a1,0x37a7,0x37ad,0x37b1,0x37b5, +0x37b9,0x37bd,0x37bd,0x37c1,0x37c5,0x30d3,0x37c9,0x37cd,0x37d1,0x37d5,0x37d9,0x37df,0x37e3,0x2c55,0x37e9,0x37ef, +0x37f3,0x37f9,0x37ff,0x3805,0x3809,0x30eb,0x380d,0x3813,0x3819,0x381f,0x3825,0x3829,0x3829,0x30ef,0x3169,0x382d, +0x3831,0x3835,0x3839,0x383f,0x2bbd,0x30f7,0x3843,0x3847,0x2fcd,0x384d,0x3853,0x2f15,0x3859,0x385d,0x2fdd,0x3861, +0x3865,0x3869,0x386f,0x386f,0x3875,0x3879,0x387d,0x3883,0x3887,0x388b,0x388f,0x3895,0x3899,0x389d,0x38a1,0x38a5, +0x38a9,0x38af,0x38b3,0x38b7,0x38bb,0x38bf,0x38c3,0x38c7,0x38cd,0x38d3,0x38d7,0x38dd,0x38e1,0x38e7,0x38eb,0x2ff5, +0x38ef,0x38f5,0x38fb,0x38ff,0x3905,0x3909,0x390f,0x3913,0x3917,0x391b,0x391f,0x3923,0x3927,0x392d,0x3933,0x3939, +0x3575,0x393f,0x3943,0x3947,0x394b,0x394f,0x3953,0x3957,0x395b,0x395f,0x3963,0x3967,0x396b,0x2c9d,0x3971,0x3975, +0x3979,0x397d,0x3981,0x3985,0x3001,0x3989,0x398d,0x3991,0x3995,0x3999,0x399f,0x39a5,0x39ab,0x39af,0x39b3,0x39b7, +0x39bb,0x39c1,0x39c5,0x39cb,0x39cf,0x39d3,0x39d9,0x39df,0x39e3,0x2ba9,0x39e7,0x39eb,0x39ef,0x39f3,0x39f7,0x39fb, +0x3113,0x39ff,0x3a03,0x3a07,0x3a0b,0x3a0f,0x3a13,0x3a17,0x3a1b,0x3a1f,0x3a23,0x3a29,0x3a2d,0x3a31,0x3a35,0x3a39, +0x3a3d,0x3a43,0x3a49,0x3a4d,0x3a51,0x3127,0x312b,0x3a55,0x3a59,0x3a5f,0x3a63,0x3a67,0x3a6b,0x3a6f,0x3a75,0x3a7b, +0x3a7f,0x3a83,0x3a87,0x3a8d,0x312f,0x3a91,0x3a97,0x3a9d,0x3aa1,0x3aa5,0x3aa9,0x3aaf,0x3ab3,0x3ab7,0x3abb,0x3abf, +0x3ac3,0x3ac7,0x3acb,0x3ad1,0x3ad5,0x3ad9,0x3add,0x3ae3,0x3ae7,0x3aeb,0x3aef,0x3af3,0x3af9,0x3aff,0x3b03,0x3b07, +0x3b0b,0x3b11,0x3b15,0x3147,0x3147,0x3b1b,0x3b1f,0x3b25,0x3b29,0x3b2d,0x3b31,0x3b35,0x3b39,0x3b3d,0x3b41,0x314b, +0x3b47,0x3b4b,0x3b4f,0x3b53,0x3b57,0x3b5b,0x3b61,0x3b65,0x3b6b,0x3b71,0x3b77,0x3b7b,0x3b7f,0x3b83,0x3b87,0x3b8b, +0x3b8f,0x3b93,0x3b97,1,1,1 }; static const UCPTrie norm2_nfc_data_trie={ norm2_nfc_data_trieIndex, { norm2_nfc_data_trieData }, - 1746, 7892, + 1748, 7974, 0x2fc00, 0x30, 0, 0, 0, 0, @@ -1128,7 +1131,7 @@ static const uint16_t norm2_nfc_data_extraData[7732]={ }; static const uint8_t norm2_nfc_data_smallFCD[256]={ -0xc0,0xef,3,0x7f,0xdf,0x70,0xcf,0x87,0xc7,0xe6,0x66,0x46,0x64,0x46,0x66,0x5b, +0xc0,0xef,3,0x7f,0xdf,0x70,0xcf,0x87,0xd7,0xe6,0x66,0x46,0x66,0x46,0x66,0x5b, 0x12,0,0,4,0,0,0,0x43,0x20,2,0x69,0xae,0xc2,0xc0,0xff,0xff, 0xc0,0x72,0xbf,0,0,0,0,0,0,0,0x40,0,0x80,0x88,0,0, 0xfe,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/deps/icu-small/source/common/normalizer2.cpp b/deps/icu-small/source/common/normalizer2.cpp index ca5d3aba1a1874..6be7e0b21a2bf9 100644 --- a/deps/icu-small/source/common/normalizer2.cpp +++ b/deps/icu-small/source/common/normalizer2.cpp @@ -293,11 +293,11 @@ U_CDECL_BEGIN static UBool U_CALLCONV uprv_normalizer2_cleanup() { delete noopSingleton; noopSingleton = NULL; - noopInitOnce.reset(); + noopInitOnce.reset(); #if NORM2_HARDCODE_NFC_DATA delete nfcSingleton; nfcSingleton = NULL; - nfcInitOnce.reset(); + nfcInitOnce.reset(); #endif return TRUE; } diff --git a/deps/icu-small/source/common/normalizer2impl.cpp b/deps/icu-small/source/common/normalizer2impl.cpp index c0ad5c69f3e07d..5bfd49e8cb9e2a 100644 --- a/deps/icu-small/source/common/normalizer2impl.cpp +++ b/deps/icu-small/source/common/normalizer2impl.cpp @@ -86,7 +86,7 @@ UChar32 codePointFromValidUTF8(const uint8_t *cpStart, const uint8_t *cpLimit) { case 4: return ((c&7)<<18) | ((cpStart[1]&0x3f)<<12) | ((cpStart[2]&0x3f)<<6) | (cpStart[3]&0x3f); default: - UPRV_UNREACHABLE; // Should not occur. + UPRV_UNREACHABLE_EXIT; // Should not occur. } } @@ -2504,7 +2504,7 @@ void CanonIterData::addToStartSet(UChar32 origin, UChar32 decompLead, UErrorCode UChar32 firstOrigin=(UChar32)(canonValue&CANON_VALUE_MASK); canonValue=(canonValue&~CANON_VALUE_MASK)|CANON_HAS_SET|(uint32_t)canonStartSets.size(); umutablecptrie_set(mutableTrie, decompLead, canonValue, &errorCode); - canonStartSets.addElement(set, errorCode); + canonStartSets.addElementX(set, errorCode); if(firstOrigin!=0) { set->add(firstOrigin); } diff --git a/deps/icu-small/source/common/normalizer2impl.h b/deps/icu-small/source/common/normalizer2impl.h index bdb6767a925c90..7c85448b71bc05 100644 --- a/deps/icu-small/source/common/normalizer2impl.h +++ b/deps/icu-small/source/common/normalizer2impl.h @@ -241,7 +241,7 @@ class U_COMMON_API ReorderingBuffer : public UMemory { * Low-level implementation of the Unicode Normalization Algorithm. * For the data structure and details see the documentation at the end of * this normalizer2impl.h and in the design doc at - * http://site.icu-project.org/design/normalization/custom + * https://icu.unicode.org/design/normalization/custom */ class U_COMMON_API Normalizer2Impl : public UObject { public: @@ -806,7 +806,7 @@ unorm_getFCD16(UChar32 c); * Constants are defined as enum values of the Normalizer2Impl class. * * Many details of the data structures are described in the design doc - * which is at http://site.icu-project.org/design/normalization/custom + * which is at https://icu.unicode.org/design/normalization/custom * * int32_t indexes[indexesLength]; -- indexesLength=indexes[IX_NORM_TRIE_OFFSET]/4; * diff --git a/deps/icu-small/source/common/normlzr.cpp b/deps/icu-small/source/common/normlzr.cpp index 20b9f3df2ffccc..1f4fa151797b13 100644 --- a/deps/icu-small/source/common/normlzr.cpp +++ b/deps/icu-small/source/common/normlzr.cpp @@ -2,7 +2,7 @@ // License & terms of use: http://www.unicode.org/copyright.html /* ************************************************************************* - * COPYRIGHT: + * COPYRIGHT: * Copyright (c) 1996-2012, International Business Machines Corporation and * others. All Rights Reserved. ************************************************************************* @@ -94,7 +94,7 @@ Normalizer::~Normalizer() delete text; } -Normalizer* +Normalizer* Normalizer::clone() const { return new Normalizer(*this); @@ -107,8 +107,8 @@ int32_t Normalizer::hashCode() const { return text->hashCode() + fUMode + fOptions + buffer.hashCode() + bufferPos + currentIndex + nextIndex; } - -UBool Normalizer::operator==(const Normalizer& that) const + +bool Normalizer::operator==(const Normalizer& that) const { return this==&that || @@ -125,9 +125,9 @@ UBool Normalizer::operator==(const Normalizer& that) const //------------------------------------------------------------------------- void U_EXPORT2 -Normalizer::normalize(const UnicodeString& source, +Normalizer::normalize(const UnicodeString& source, UNormalizationMode mode, int32_t options, - UnicodeString& result, + UnicodeString& result, UErrorCode &status) { if(source.isBogus() || U_FAILURE(status)) { result.setToBogus(); @@ -160,17 +160,17 @@ Normalizer::normalize(const UnicodeString& source, } void U_EXPORT2 -Normalizer::compose(const UnicodeString& source, +Normalizer::compose(const UnicodeString& source, UBool compat, int32_t options, - UnicodeString& result, + UnicodeString& result, UErrorCode &status) { normalize(source, compat ? UNORM_NFKC : UNORM_NFC, options, result, status); } void U_EXPORT2 -Normalizer::decompose(const UnicodeString& source, +Normalizer::decompose(const UnicodeString& source, UBool compat, int32_t options, - UnicodeString& result, + UnicodeString& result, UErrorCode &status) { normalize(source, compat ? UNORM_NFKD : UNORM_NFD, options, result, status); } @@ -368,7 +368,7 @@ int32_t Normalizer::endIndex() const { //------------------------------------------------------------------------- void -Normalizer::setMode(UNormalizationMode newMode) +Normalizer::setMode(UNormalizationMode newMode) { fUMode = newMode; init(); @@ -381,8 +381,8 @@ Normalizer::getUMode() const } void -Normalizer::setOption(int32_t option, - UBool value) +Normalizer::setOption(int32_t option, + UBool value) { if (value) { fOptions |= option; @@ -403,7 +403,7 @@ Normalizer::getOption(int32_t option) const * The iteration position is set to the beginning of the input text. */ void -Normalizer::setText(const UnicodeString& newText, +Normalizer::setText(const UnicodeString& newText, UErrorCode &status) { if (U_FAILURE(status)) { @@ -424,8 +424,8 @@ Normalizer::setText(const UnicodeString& newText, * The iteration position is set to the beginning of the string. */ void -Normalizer::setText(const CharacterIterator& newText, - UErrorCode &status) +Normalizer::setText(const CharacterIterator& newText, + UErrorCode &status) { if (U_FAILURE(status)) { return; @@ -463,7 +463,7 @@ Normalizer::setText(ConstChar16Ptr newText, * @param result Receives a copy of the text under iteration. */ void -Normalizer::getText(UnicodeString& result) +Normalizer::getText(UnicodeString& result) { text->getText(result); } diff --git a/deps/icu-small/source/common/pluralmap.cpp b/deps/icu-small/source/common/pluralmap.cpp index a85dd1c979ffef..ec87f0198e19eb 100644 --- a/deps/icu-small/source/common/pluralmap.cpp +++ b/deps/icu-small/source/common/pluralmap.cpp @@ -29,7 +29,7 @@ PluralMapBase::Category PluralMapBase::toCategory(const UnicodeString &pluralForm) { CharString cCategory; UErrorCode status = U_ZERO_ERROR; - cCategory.appendInvariantChars(pluralForm, status); + cCategory.appendInvariantChars(pluralForm, status); return U_FAILURE(status) ? NONE : toCategory(cCategory.data()); } @@ -41,3 +41,4 @@ const char *PluralMapBase::getCategoryName(Category c) { U_NAMESPACE_END + diff --git a/deps/icu-small/source/common/pluralmap.h b/deps/icu-small/source/common/pluralmap.h index 2a14a07af1fcdf..4988fd2699f385 100644 --- a/deps/icu-small/source/common/pluralmap.h +++ b/deps/icu-small/source/common/pluralmap.h @@ -46,7 +46,7 @@ class U_COMMON_API PluralMapBase : public UMemory { /** * Converts a category name such as "zero", "one", "two", "few", "many" - * or "other" to a category enum. Returns NONE for urecongized + * or "other" to a category enum. Returns NONE for unrecognized * category name. */ static Category toCategory(const UnicodeString &categoryName); @@ -62,7 +62,7 @@ class U_COMMON_API PluralMapBase : public UMemory { * A Map of plural categories to values. It maintains ownership of the * values. * - * Type T is the value type. T must provide the followng: + * Type T is the value type. T must provide the following: * 1) Default constructor * 2) Copy constructor * 3) Assignment operator diff --git a/deps/icu-small/source/common/propname_data.h b/deps/icu-small/source/common/propname_data.h index 6f63e9cdd476ce..c98a0f790bdcc5 100644 --- a/deps/icu-small/source/common/propname_data.h +++ b/deps/icu-small/source/common/propname_data.h @@ -1,6 +1,5 @@ -// © 2016 and later: Unicode, Inc. and others. +// Copyright (C) 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -// // Copyright (C) 1999-2016, International Business Machines // Corporation and others. All Rights Reserved. // @@ -8,105 +7,106 @@ // // machine-generated by: icu/tools/unicode/c/genprops/pnamesbuilder.cpp - #ifdef INCLUDED_FROM_PROPNAME_CPP U_NAMESPACE_BEGIN -const int32_t PropNameData::indexes[8]={0x20,0x15b8,0x5048,0xa69a,0xa69a,0xa69a,0x2f,0}; +const int32_t PropNameData::indexes[8]={0x20,0x163c,0x521b,0xab62,0xab62,0xab62,0x31,0}; -const int32_t PropNameData::valueMaps[1382]={ -6,0,0x41,0,0xe3,0x368,0xe3,0x37e,0xe3,0x393,0xe3,0x3a9,0xe3,0x3b4,0xe3,0x3d5, -0xe3,0x3e5,0xe3,0x3f4,0xe3,0x402,0xe3,0x426,0xe3,0x43d,0xe3,0x455,0xe3,0x46c,0xe3,0x47b, -0xe3,0x48a,0xe3,0x49b,0xe3,0x4a9,0xe3,0x4bb,0xe3,0x4d5,0xe3,0x4f0,0xe3,0x505,0xe3,0x522, -0xe3,0x533,0xe3,0x53e,0xe3,0x55d,0xe3,0x573,0xe3,0x584,0xe3,0x594,0xe3,0x5af,0xe3,0x5c8, -0xe3,0x5d9,0xe3,0x5f3,0xe3,0x606,0xe3,0x616,0xe3,0x630,0xe3,0x649,0xe3,0x660,0xe3,0x674, -0xe3,0x68a,0xe3,0x69e,0xe3,0x6b4,0xe3,0x6ce,0xe3,0x6e6,0xe3,0x702,0xe3,0x70a,0xe3,0x712, -0xe3,0x71a,0xe3,0x722,0xe3,0x72b,0xe3,0x738,0xe3,0x74b,0xe3,0x768,0xe3,0x785,0xe3,0x7a2, -0xe3,0x7c0,0xe3,0x7de,0xe3,0x802,0xe3,0x80f,0xe3,0x829,0xe3,0x83e,0xe3,0x859,0xe3,0x870, -0xe3,0x887,0xe3,0x8a9,0xe3,0x1000,0x1019,0x8c8,0x15f,0xae8,0x17a,0x2f11,0xe9,0x2f30,0x2b3,0x306e, -0x2c9,0x30c8,0x2d3,0x3325,0x2f5,0x3c20,0x35f,0x3c90,0x369,0x3f2a,0x398,0x3f68,0x3a0,0x4a5b,0x465,0x4ad9, -0x46f,0x4afe,0x475,0x4b18,0x47b,0x4b39,0x482,0x4b53,0xe9,0x4b78,0xe9,0x4b9e,0x489,0x4c48,0x49f,0x4cc1, -0x4b2,0x4d73,0x4cd,0x4daa,0x4d4,0x4f8a,0x4e8,0x540a,0x510,0x2000,0x2001,0x5469,0x518,0x3000,0x3001,0x54f5, -0,0x4000,0x400e,0x5507,0,0x5510,0,0x552a,0,0x553b,0,0x554c,0,0x5562,0,0x556b, -0,0x5588,0,0x55a6,0,0x55c4,0,0x55e2,0,0x55f8,0,0x560c,0,0x5622,0,0x7000, -0x7001,0x563b,0,0x7d6,0x12,0,1,0x12,0x20,0x7f4,0x4a,0,1,6,7,8, -9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18, -0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b, -0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4, -0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8, -0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188, -0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266, -0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0x995, -1,0,0x17,0x8d7,0x8e8,0x8f9,0x90d,0x924,0x93c,0x94e,0x963,0x97a,0x98f,0x99f,0x9b1,0x9ce, -0x9ea,0x9fc,0xa19,0xa35,0xa51,0xa66,0xa7b,0xa95,0xab0,0xacb,0xb37,1,0,0x135,0xaf3,0xb00, -0xb13,0xb3b,0xb59,0xb77,0xb8f,0xbba,0xbe4,0xbfc,0xc0f,0xc22,0xc31,0xc40,0xc4f,0xc5e,0xc75,0xc86, -0xc99,0xcac,0xcb9,0xcc6,0xcd5,0xce6,0xcfb,0xd0c,0xd17,0xd20,0xd31,0xd42,0xd55,0xd67,0xd7a,0xd8d, -0xdcc,0xdd9,0xde6,0xdf3,0xe08,0xe38,0xe52,0xe73,0xe9e,0xec1,0xf1f,0xf46,0xf61,0xf70,0xf97,0xfbf, -0xfe2,0x1005,0x102f,0x1048,0x1067,0x108a,0x10ae,0x10c1,0x10db,0x1105,0x111d,0x1145,0x116e,0x1181,0x1194,0x11a7, -0x11ce,0x11dd,0x11fd,0x122b,0x1249,0x1277,0x1293,0x12ae,0x12c7,0x12e0,0x1301,0x1331,0x1350,0x1372,0x13a6,0x13d3, -0x1418,0x1439,0x1463,0x1484,0x14ad,0x14c0,0x14f3,0x150a,0x1519,0x152a,0x1555,0x156c,0x159d,0x15cb,0x160e,0x1619, -0x1652,0x1663,0x1674,0x1681,0x1694,0x16ce,0x16f2,0x1716,0x1750,0x1788,0x17b3,0x17cb,0x17f7,0x1823,0x1830,0x183f, -0x185c,0x187e,0x18ac,0x18cc,0x18f3,0x191a,0x1939,0x194c,0x195d,0x196e,0x1993,0x19b8,0x19df,0x1a13,0x1a40,0x1a5e, -0x1a71,0x1a8a,0x1ac3,0x1ad2,0x1af2,0x1b14,0x1b36,0x1b4d,0x1b64,0x1b91,0x1baa,0x1bc3,0x1bf4,0x1c1e,0x1c39,0x1c4c, -0x1c6b,0x1c74,0x1c87,0x1ca5,0x1cc3,0x1cd6,0x1ced,0x1d02,0x1d37,0x1d5b,0x1d70,0x1d7f,0x1d92,0x1db6,0x1dbf,0x1de3, -0x1dfa,0x1e0d,0x1e1c,0x1e27,0x1e48,0x1e60,0x1e6f,0x1e7e,0x1e8d,0x1ea4,0x1eb9,0x1ece,0x1f07,0x1f1a,0x1f36,0x1f41, -0x1f4e,0x1f7c,0x1fa0,0x1fc3,0x1fd6,0x1ff8,0x200b,0x2026,0x2049,0x206c,0x2091,0x20a2,0x20d1,0x20fe,0x2115,0x2130, -0x213f,0x216a,0x21a2,0x21dc,0x220a,0x221b,0x2228,0x224c,0x225b,0x2277,0x2291,0x22ae,0x22e6,0x22fb,0x2328,0x2347, -0x2375,0x2395,0x23c9,0x23d8,0x2402,0x2425,0x2450,0x245b,0x246c,0x2487,0x24ab,0x24b8,0x24cd,0x24f4,0x251f,0x2556, -0x2569,0x257a,0x25aa,0x25bb,0x25ca,0x25df,0x25fd,0x2610,0x2623,0x263a,0x2657,0x2662,0x266b,0x268d,0x26a2,0x26c7, -0x26de,0x2707,0x2722,0x2737,0x2750,0x2771,0x27a6,0x27b7,0x27e8,0x280c,0x281d,0x2836,0x2841,0x286e,0x2890,0x28be, -0x28f1,0x2900,0x2911,0x292e,0x2970,0x2997,0x29a4,0x29b9,0x29dd,0x2a03,0x2a3c,0x2a4d,0x2a71,0x2a7c,0x2a89,0x2a98, -0x2abd,0x2aeb,0x2b07,0x2b24,0x2b31,0x2b42,0x2b60,0x2b83,0x2ba0,0x2bad,0x2bcd,0x2bea,0x2c0b,0x2c34,0x2c45,0x2c64, -0x2c7d,0x2c96,0x2ca7,0x2cf0,0x2d01,0x2d1a,0x2d49,0x2d76,0x2d9b,0x2ddd,0x2df9,0x2e08,0x2e1f,0x2e4d,0x2e66,0x2e8f, -0x2ea9,0x2ee4,0x2f02,0x1e85,1,0,0x12,0x2f47,0x2f57,0x2f6a,0x2f7a,0x2f8a,0x2f99,0x2fa9,0x2fbb,0x2fce, -0x2fe0,0x2ff0,0x3000,0x300f,0x301e,0x302e,0x303b,0x304a,0x305e,0x1f43,1,0,6,0x3083,0x308e,0x309b, -0x30a8,0x30b5,0x30c0,0x1f87,1,0,0x1e,0x30dd,0x30ec,0x3101,0x3116,0x312b,0x313f,0x3150,0x3164,0x3177, -0x3188,0x31a1,0x31b3,0x31c4,0x31d8,0x31eb,0x3203,0x3215,0x3220,0x3230,0x323e,0x3253,0x3268,0x327e,0x3298,0x32ae, -0x32be,0x32d2,0x32e6,0x32f7,0x330f,0x21b2,1,0,0x66,0x3337,0x335a,0x3363,0x3370,0x337b,0x3384,0x338f, -0x3398,0x33b1,0x33b6,0x33bf,0x33dc,0x33e5,0x33f2,0x33fb,0x341f,0x3426,0x342f,0x3442,0x344d,0x3456,0x3461,0x347a, -0x3483,0x3492,0x349d,0x34a6,0x34b1,0x34ba,0x34c1,0x34ca,0x34d5,0x34de,0x34f7,0x3500,0x350d,0x3518,0x3529,0x3534, -0x3549,0x3560,0x3569,0x3572,0x358b,0x3596,0x359f,0x35a8,0x35bf,0x35dc,0x35e7,0x35f8,0x3603,0x360a,0x3617,0x3624, -0x3651,0x3666,0x366f,0x368a,0x36ad,0x36ce,0x36ef,0x3714,0x373b,0x375c,0x377f,0x37a0,0x37c7,0x37e8,0x380d,0x382c, -0x384b,0x386a,0x3887,0x38a8,0x38c9,0x38ec,0x3911,0x3930,0x394f,0x3970,0x3997,0x39bc,0x39db,0x39fc,0x3a1f,0x3a3a, -0x3a53,0x3a6e,0x3a87,0x3aa4,0x3abf,0x3adc,0x3afb,0x3b18,0x3b35,0x3b54,0x3b71,0x3b8c,0x3ba9,0x3bc6,0x3bf9,0x24f7, -1,0,6,0x3c31,0x3c40,0x3c50,0x3c60,0x3c70,0x3c81,0x2555,1,0,0x2b,0x3c9f,0x3cab,0x3cb9, -0x3cc8,0x3cd7,0x3ce7,0x3cf8,0x3d0c,0x3d21,0x3d37,0x3d4a,0x3d5e,0x3d6e,0x3d77,0x3d82,0x3d92,0x3dae,0x3dc0,0x3dce, -0x3ddd,0x3de9,0x3dfe,0x3e12,0x3e25,0x3e33,0x3e47,0x3e55,0x3e5f,0x3e71,0x3e7d,0x3e8b,0x3e9b,0x3ea2,0x3ea9,0x3eb0, -0x3eb7,0x3ebe,0x3ed4,0x3ef5,0x870,0x3f07,0x3f12,0x3f21,0x27ae,1,0,4,0x3f3b,0x3f46,0x3f52,0x3f5c, -0x27d4,1,0,0xc1,0x3f73,0x3f80,0x3f95,0x3fa2,0x3fb1,0x3fbf,0x3fce,0x3fdd,0x3fef,0x3ffe,0x400c,0x401d, -0x402c,0x403b,0x4048,0x4054,0x4063,0x4072,0x407c,0x4089,0x4096,0x40a5,0x40b3,0x40c2,0x40ce,0x40d8,0x40e4,0x40f4, -0x4104,0x4112,0x411e,0x412f,0x413b,0x4147,0x4155,0x4162,0x416e,0x417b,0xd0c,0x4188,0x4196,0x41b0,0x41b9,0x41c7, -0x41d5,0x41e1,0x41f0,0x41fe,0x420c,0x4218,0x4227,0x4235,0x4243,0x4250,0x425f,0x427a,0x4289,0x429a,0x42ab,0x42be, -0x42d0,0x42df,0x42f1,0x4300,0x430c,0x4317,0x1e1c,0x4324,0x432f,0x433a,0x4345,0x4350,0x436b,0x4376,0x4381,0x438c, -0x439f,0x43b3,0x43be,0x43cd,0x43dc,0x43e7,0x43f2,0x43ff,0x440e,0x441c,0x4427,0x4442,0x444c,0x445d,0x446e,0x447d, -0x448e,0x4499,0x44a4,0x44af,0x44ba,0x44c5,0x44d0,0x44db,0x44e5,0x44f0,0x4500,0x450b,0x4519,0x4526,0x4531,0x4540, -0x454d,0x455a,0x4569,0x4576,0x4587,0x4599,0x45a9,0x45b4,0x45c7,0x45de,0x45ec,0x45f9,0x4604,0x4611,0x4622,0x463e, -0x4654,0x465f,0x467c,0x468c,0x469b,0x46a6,0x46b1,0x1f36,0x46bd,0x46c8,0x46e0,0x46f0,0x46ff,0x470d,0x471b,0x4726, -0x4731,0x4745,0x475c,0x4774,0x4784,0x4794,0x47a4,0x47b6,0x47c1,0x47cc,0x47d6,0x47e2,0x47f0,0x4803,0x480f,0x481c, -0x4827,0x4843,0x4850,0x485e,0x4877,0x2836,0x4886,0x2657,0x4893,0x48a1,0x48b3,0x48c1,0x48cd,0x48dd,0x2a71,0x48eb, -0x48f7,0x4902,0x490d,0x4918,0x492c,0x493a,0x4951,0x495d,0x4971,0x497f,0x4991,0x49a7,0x49b5,0x49c7,0x49d5,0x49f2, -0x4a04,0x4a11,0x4a22,0x4a34,0x4a4e,0x31cc,1,0,6,0x4a75,0x4a88,0x4a98,0x4aa6,0x4ab7,0x4ac7,0x3228, -0x12,0,1,0x4af1,0x4af7,0x3235,0x12,0,1,0x4af1,0x4af7,0x3242,1,0,3,0x4af1, -0x4af7,0x4b30,0x3258,1,0,3,0x4af1,0x4af7,0x4b30,0x326e,1,0,0x12,0x4bba,0x4bc4,0x4bd0, -0x4bd7,0x4be2,0x4be7,0x4bee,0x4bf5,0x4bfe,0x4c03,0x4c08,0x4c18,0x870,0x3f07,0x4c24,0x3f12,0x4c34,0x3f21,0x3317, -1,0,0xf,0x4bba,0x4c5b,0x4c65,0x4c6f,0x4c7a,0x3ddd,0x4c84,0x4c90,0x4c98,0x4c9f,0x4ca9,0x4bd0,0x4bd7, -0x4be7,0x4cb3,0x339e,1,0,0x17,0x4bba,0x4cd0,0x4c6f,0x4cdc,0x4ce9,0x4cf7,0x3ddd,0x4d02,0x4bd0,0x4d13, -0x4be7,0x4d22,0x4d30,0x870,0x3ef5,0x4d3c,0x4d4d,0x3f07,0x4c24,0x3f12,0x4c34,0x3f21,0x4d5e,0x34bb,1,0, -3,0x4d91,0x4d99,0x4da1,0x34d4,1,0,0x10,0x4dca,0x4dd1,0x4de0,0x4e01,0x4e24,0x4e2f,0x4e4e,0x4e65, -0x4e72,0x4e7b,0x4e9a,0x4ecd,0x4ee8,0x4f17,0x4f34,0x4f59,0x356d,1,0,0x24,0x4fa8,0x4fb5,0x4fc8,0x4fd5, -0x5002,0x5027,0x503c,0x505b,0x507c,0x50a9,0x50e2,0x5105,0x5128,0x5155,0x518a,0x51b1,0x51da,0x5211,0x5240,0x5261, -0x5286,0x5295,0x52b8,0x52cf,0x52dc,0x52eb,0x5308,0x5321,0x5344,0x5369,0x5382,0x5397,0x53a6,0x53b7,0x53c4,0x53e5, -0x373d,1,0,4,0x5423,0x542e,0x5446,0x545e,0x3779,0x36,1,2,4,8,0xe,0x10, -0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,0x10000, -0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000, -0x30dd,0x30ec,0x3101,0x3116,0x5497,0x312b,0x313f,0x548d,0x3150,0x3164,0x3177,0x54a8,0x3188,0x31a1,0x31b3,0x54bf, -0x31c4,0x31d8,0x31eb,0x54e8,0x3203,0x3215,0x3220,0x3230,0x5484,0x323e,0x3253,0x3268,0x327e,0x3298,0x32ae,0x32be, -0x32d2,0x32e6,0x54de,0x32f7,0x330f,0x54c9 +const int32_t PropNameData::valueMaps[1415]={ +6,0,0x48,0,0xf1,0x368,0xf1,0x37e,0xf1,0x393,0xf1,0x3a9,0xf1,0x3b4,0xf1,0x3d5, +0xf1,0x3e5,0xf1,0x3f4,0xf1,0x402,0xf1,0x426,0xf1,0x43d,0xf1,0x455,0xf1,0x46c,0xf1,0x47b, +0xf1,0x48a,0xf1,0x49b,0xf1,0x4a9,0xf1,0x4bb,0xf1,0x4d5,0xf1,0x4f0,0xf1,0x505,0xf1,0x522, +0xf1,0x533,0xf1,0x53e,0xf1,0x55d,0xf1,0x573,0xf1,0x584,0xf1,0x594,0xf1,0x5af,0xf1,0x5c8, +0xf1,0x5d9,0xf1,0x5f3,0xf1,0x606,0xf1,0x616,0xf1,0x630,0xf1,0x649,0xf1,0x660,0xf1,0x674, +0xf1,0x68a,0xf1,0x69e,0xf1,0x6b4,0xf1,0x6ce,0xf1,0x6e6,0xf1,0x702,0xf1,0x70a,0xf1,0x712, +0xf1,0x71a,0xf1,0x722,0xf1,0x72b,0xf1,0x738,0xf1,0x74b,0xf1,0x768,0xf1,0x785,0xf1,0x7a2, +0xf1,0x7c0,0xf1,0x7de,0xf1,0x802,0xf1,0x80f,0xf1,0x829,0xf1,0x83e,0xf1,0x859,0xf1,0x870, +0xf1,0x887,0xf1,0x8a9,0xf1,0x8c8,0xf1,0x8e1,0xf1,0x90e,0xf1,0x947,0xf1,0x978,0xf1,0x9a7, +0xf1,0x9d6,0xf1,0x1000,0x1019,0x9eb,0x16d,0xc0b,0x188,0x3196,0xf7,0x31b5,0x2cd,0x32f3,0x2e3,0x334d, +0x2ed,0x35aa,0x30f,0x3ed5,0x37b,0x3f45,0x385,0x41df,0x3b4,0x421d,0x3bc,0x4d50,0x486,0x4dce,0x490,0x4df3, +0x496,0x4e0d,0x49c,0x4e2e,0x4a3,0x4e48,0xf7,0x4e6d,0xf7,0x4e93,0x4aa,0x4f3d,0x4c0,0x4fb6,0x4d3,0x5068, +0x4ee,0x509f,0x4f5,0x527f,0x509,0x56ff,0x531,0x2000,0x2001,0x575e,0x539,0x3000,0x3001,0x57ea,0,0x4000, +0x400e,0x57fc,0,0x5805,0,0x581f,0,0x5830,0,0x5841,0,0x5857,0,0x5860,0,0x587d, +0,0x589b,0,0x58b9,0,0x58d7,0,0x58ed,0,0x5901,0,0x5917,0,0x7000,0x7001,0x5930, +0,0x844,0x12,0,1,0x12,0x20,0x862,0x4a,0,1,6,7,8,9,0xa, +0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a, +0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a, +0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8, +0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2, +0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2, +0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f, +0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa03,1,0, +0x17,0x9fa,0xa0b,0xa1c,0xa30,0xa47,0xa5f,0xa71,0xa86,0xa9d,0xab2,0xac2,0xad4,0xaf1,0xb0d,0xb1f, +0xb3c,0xb58,0xb74,0xb89,0xb9e,0xbb8,0xbd3,0xbee,0xba5,1,0,0x141,0xc16,0xc23,0xc36,0xc5e, +0xc7c,0xc9a,0xcb2,0xcdd,0xd07,0xd1f,0xd32,0xd45,0xd54,0xd63,0xd72,0xd81,0xd98,0xda9,0xdbc,0xdcf, +0xddc,0xde9,0xdf8,0xe09,0xe1e,0xe2f,0xe3a,0xe43,0xe54,0xe65,0xe78,0xe8a,0xe9d,0xeb0,0xeef,0xefc, +0xf09,0xf16,0xf2b,0xf5b,0xf75,0xf96,0xfc1,0xfe4,0x1042,0x1069,0x1084,0x1093,0x10ba,0x10e2,0x1105,0x1128, +0x1152,0x116b,0x118a,0x11ad,0x11d1,0x11e4,0x11fe,0x1228,0x1240,0x1268,0x1291,0x12a4,0x12b7,0x12ca,0x12f1,0x1300, +0x1320,0x134e,0x136c,0x139a,0x13b6,0x13d1,0x13ea,0x1403,0x1424,0x1454,0x1473,0x1495,0x14c9,0x14f6,0x153b,0x155c, +0x1586,0x15a7,0x15d0,0x15e3,0x1616,0x162d,0x163c,0x164d,0x1678,0x168f,0x16c0,0x16ee,0x1731,0x173c,0x1775,0x1786, +0x1797,0x17a4,0x17b7,0x17f1,0x1815,0x1839,0x1873,0x18ab,0x18d6,0x18ee,0x191a,0x1946,0x1953,0x1962,0x197f,0x19a1, +0x19cf,0x19ef,0x1a16,0x1a3d,0x1a5c,0x1a6f,0x1a80,0x1a91,0x1ab6,0x1adb,0x1b02,0x1b36,0x1b63,0x1b81,0x1b94,0x1bad, +0x1be6,0x1bf5,0x1c15,0x1c37,0x1c59,0x1c70,0x1c87,0x1cb4,0x1ccd,0x1ce6,0x1d17,0x1d41,0x1d5c,0x1d6f,0x1d8e,0x1d97, +0x1daa,0x1dc8,0x1de6,0x1df9,0x1e10,0x1e25,0x1e5a,0x1e7e,0x1e93,0x1ea2,0x1eb5,0x1ed9,0x1ee2,0x1f06,0x1f1d,0x1f30, +0x1f3f,0x1f4a,0x1f6b,0x1f83,0x1f92,0x1fa1,0x1fb0,0x1fc7,0x1fdc,0x1ff1,0x202a,0x203d,0x2059,0x2064,0x2071,0x209f, +0x20c3,0x20e6,0x20f9,0x211b,0x212e,0x2149,0x216c,0x218f,0x21b4,0x21c5,0x21f4,0x2221,0x2238,0x2253,0x2262,0x228d, +0x22c5,0x22ff,0x232d,0x233e,0x234b,0x236f,0x237e,0x239a,0x23b4,0x23d1,0x2409,0x241e,0x244b,0x246a,0x2498,0x24b8, +0x24ec,0x24fb,0x2525,0x2548,0x2573,0x257e,0x258f,0x25aa,0x25ce,0x25db,0x25f0,0x2617,0x2642,0x2679,0x268c,0x269d, +0x26cd,0x26de,0x26ed,0x2702,0x2720,0x2733,0x2746,0x275d,0x277a,0x2785,0x278e,0x27b0,0x27c5,0x27ea,0x2801,0x282a, +0x2845,0x285a,0x2873,0x2894,0x28c9,0x28da,0x290b,0x292f,0x2940,0x2959,0x2964,0x2991,0x29b3,0x29e1,0x2a14,0x2a23, +0x2a34,0x2a51,0x2a93,0x2aba,0x2ac7,0x2adc,0x2b00,0x2b26,0x2b5f,0x2b70,0x2b94,0x2b9f,0x2bac,0x2bbb,0x2be0,0x2c0e, +0x2c2a,0x2c47,0x2c54,0x2c65,0x2c83,0x2ca6,0x2cc3,0x2cd0,0x2cf0,0x2d0d,0x2d2e,0x2d57,0x2d68,0x2d87,0x2da0,0x2db9, +0x2dca,0x2e13,0x2e24,0x2e3d,0x2e6c,0x2e99,0x2ebe,0x2f00,0x2f1c,0x2f2b,0x2f42,0x2f70,0x2f89,0x2fb2,0x2fcc,0x3007, +0x3025,0x3034,0x3054,0x306f,0x3093,0x30af,0x30cd,0x30eb,0x3102,0x3111,0x311c,0x3159,0x316c,0x1f6b,1,0, +0x12,0x31cc,0x31dc,0x31ef,0x31ff,0x320f,0x321e,0x322e,0x3240,0x3253,0x3265,0x3275,0x3285,0x3294,0x32a3,0x32b3, +0x32c0,0x32cf,0x32e3,0x2029,1,0,6,0x3308,0x3313,0x3320,0x332d,0x333a,0x3345,0x206d,1,0, +0x1e,0x3362,0x3371,0x3386,0x339b,0x33b0,0x33c4,0x33d5,0x33e9,0x33fc,0x340d,0x3426,0x3438,0x3449,0x345d,0x3470, +0x3488,0x349a,0x34a5,0x34b5,0x34c3,0x34d8,0x34ed,0x3503,0x351d,0x3533,0x3543,0x3557,0x356b,0x357c,0x3594,0x2298, +1,0,0x68,0x35bc,0x35df,0x35e8,0x35f5,0x3600,0x3609,0x3614,0x361d,0x3636,0x363b,0x3644,0x3661,0x366a, +0x3677,0x3680,0x36a4,0x36ab,0x36b4,0x36c7,0x36d2,0x36db,0x36e6,0x36ff,0x3708,0x3717,0x3722,0x372b,0x3736,0x373f, +0x3746,0x374f,0x375a,0x3763,0x377c,0x3785,0x3792,0x379d,0x37ae,0x37b9,0x37ce,0x37e5,0x37ee,0x37f7,0x3810,0x381b, +0x3824,0x382d,0x3844,0x3861,0x386c,0x387d,0x3888,0x388f,0x389c,0x38a9,0x38d6,0x38eb,0x38f4,0x390f,0x3932,0x3953, +0x3974,0x3999,0x39c0,0x39e1,0x3a04,0x3a25,0x3a4c,0x3a6d,0x3a92,0x3ab1,0x3ad0,0x3aef,0x3b0c,0x3b2d,0x3b4e,0x3b71, +0x3b96,0x3bb5,0x3bd4,0x3bf5,0x3c1c,0x3c41,0x3c60,0x3c81,0x3ca4,0x3cbf,0x3cd8,0x3cf3,0x3d0c,0x3d29,0x3d44,0x3d61, +0x3d80,0x3d9d,0x3dba,0x3dd9,0x3df6,0x3e11,0x3e2e,0x3e4b,0x3e7e,0x3ea5,0x3eb8,0x25fb,1,0,6,0x3ee6, +0x3ef5,0x3f05,0x3f15,0x3f25,0x3f36,0x2659,1,0,0x2b,0x3f54,0x3f60,0x3f6e,0x3f7d,0x3f8c,0x3f9c,0x3fad, +0x3fc1,0x3fd6,0x3fec,0x3fff,0x4013,0x4023,0x402c,0x4037,0x4047,0x4063,0x4075,0x4083,0x4092,0x409e,0x40b3,0x40c7, +0x40da,0x40e8,0x40fc,0x410a,0x4114,0x4126,0x4132,0x4140,0x4150,0x4157,0x415e,0x4165,0x416c,0x4173,0x4189,0x41aa, +0x870,0x41bc,0x41c7,0x41d6,0x28b2,1,0,4,0x41f0,0x41fb,0x4207,0x4211,0x28d8,1,0,0xc6, +0x4228,0x4235,0x424a,0x4257,0x4266,0x4274,0x4283,0x4292,0x42a4,0x42b3,0x42c1,0x42d2,0x42e1,0x42f0,0x42fd,0x4309, +0x4318,0x4327,0x4331,0x433e,0x434b,0x435a,0x4368,0x4377,0x4383,0x438d,0x4399,0x43a9,0x43b9,0x43c7,0x43d3,0x43e4, +0x43f0,0x43fc,0x440a,0x4417,0x4423,0x4430,0xe2f,0x443d,0x444b,0x4465,0x446e,0x447c,0x448a,0x4496,0x44a5,0x44b3, +0x44c1,0x44cd,0x44dc,0x44ea,0x44f8,0x4505,0x4514,0x452f,0x453e,0x454f,0x4560,0x4573,0x4585,0x4594,0x45a6,0x45b5, +0x45c1,0x45cc,0x1f3f,0x45d9,0x45e4,0x45ef,0x45fa,0x4605,0x4620,0x462b,0x4636,0x4641,0x4654,0x4668,0x4673,0x4682, +0x4691,0x469c,0x46a7,0x46b4,0x46c3,0x46d1,0x46dc,0x46f7,0x4701,0x4712,0x4723,0x4732,0x4743,0x474e,0x4759,0x4764, +0x476f,0x477a,0x4785,0x4790,0x479a,0x47a5,0x47b5,0x47c0,0x47ce,0x47db,0x47e6,0x47f5,0x4802,0x480f,0x481e,0x482b, +0x483c,0x484e,0x485e,0x4869,0x487c,0x4893,0x48a1,0x48ae,0x48b9,0x48c6,0x48d7,0x48f3,0x4909,0x4914,0x4931,0x4941, +0x4950,0x495b,0x4966,0x2059,0x4972,0x497d,0x4995,0x49a5,0x49b4,0x49c2,0x49d0,0x49db,0x49e6,0x49fa,0x4a11,0x4a29, +0x4a39,0x4a49,0x4a59,0x4a6b,0x4a76,0x4a81,0x4a8b,0x4a97,0x4aa5,0x4ab8,0x4ac4,0x4ad1,0x4adc,0x4af8,0x4b05,0x4b13, +0x4b2c,0x2959,0x4b3b,0x277a,0x4b48,0x4b56,0x4b68,0x4b76,0x4b82,0x4b92,0x2b94,0x4ba0,0x4bac,0x4bb7,0x4bc2,0x4bcd, +0x4be1,0x4bef,0x4c06,0x4c12,0x4c26,0x4c34,0x4c46,0x4c5c,0x4c6a,0x4c7c,0x4c8a,0x4ca7,0x4cb9,0x4cc6,0x4cd7,0x4ce9, +0x4d03,0x4d10,0x4d23,0x4d34,0x3111,0x4d41,0x331b,1,0,6,0x4d6a,0x4d7d,0x4d8d,0x4d9b,0x4dac,0x4dbc, +0x3377,0x12,0,1,0x4de6,0x4dec,0x3384,0x12,0,1,0x4de6,0x4dec,0x3391,1,0,3, +0x4de6,0x4dec,0x4e25,0x33a7,1,0,3,0x4de6,0x4dec,0x4e25,0x33bd,1,0,0x12,0x4eaf,0x4eb9, +0x4ec5,0x4ecc,0x4ed7,0x4edc,0x4ee3,0x4eea,0x4ef3,0x4ef8,0x4efd,0x4f0d,0x870,0x41bc,0x4f19,0x41c7,0x4f29,0x41d6, +0x3466,1,0,0xf,0x4eaf,0x4f50,0x4f5a,0x4f64,0x4f6f,0x4092,0x4f79,0x4f85,0x4f8d,0x4f94,0x4f9e,0x4ec5, +0x4ecc,0x4edc,0x4fa8,0x34ed,1,0,0x17,0x4eaf,0x4fc5,0x4f64,0x4fd1,0x4fde,0x4fec,0x4092,0x4ff7,0x4ec5, +0x5008,0x4edc,0x5017,0x5025,0x870,0x41aa,0x5031,0x5042,0x41bc,0x4f19,0x41c7,0x4f29,0x41d6,0x5053,0x360a,1, +0,3,0x5086,0x508e,0x5096,0x3623,1,0,0x10,0x50bf,0x50c6,0x50d5,0x50f6,0x5119,0x5124,0x5143, +0x515a,0x5167,0x5170,0x518f,0x51c2,0x51dd,0x520c,0x5229,0x524e,0x36bc,1,0,0x24,0x529d,0x52aa,0x52bd, +0x52ca,0x52f7,0x531c,0x5331,0x5350,0x5371,0x539e,0x53d7,0x53fa,0x541d,0x544a,0x547f,0x54a6,0x54cf,0x5506,0x5535, +0x5556,0x557b,0x558a,0x55ad,0x55c4,0x55d1,0x55e0,0x55fd,0x5616,0x5639,0x565e,0x5677,0x568c,0x569b,0x56ac,0x56b9, +0x56da,0x388c,1,0,4,0x5718,0x5723,0x573b,0x5753,0x38c8,0x36,1,2,4,8,0xe, +0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000, +0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000, +0x30f80000,0x3362,0x3371,0x3386,0x339b,0x578c,0x33b0,0x33c4,0x5782,0x33d5,0x33e9,0x33fc,0x579d,0x340d,0x3426,0x3438, +0x57b4,0x3449,0x345d,0x3470,0x57dd,0x3488,0x349a,0x34a5,0x34b5,0x5779,0x34c3,0x34d8,0x34ed,0x3503,0x351d,0x3533, +0x3543,0x3557,0x356b,0x57d3,0x357c,0x3594,0x57be }; -const uint8_t PropNameData::bytesTries[14992]={ -0,0x15,0x6d,0xc3,0x78,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78, +const uint8_t PropNameData::bytesTries[15327]={ +0,0x15,0x6d,0xc3,0xc7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78, 1,0x64,0x50,0x69,0x10,0x64,1,0x63,0x30,0x73,0x62,0x13,0x74,0x61,0x72,0x74, 0x63,0x60,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x61,0x13,0x69,0x67,0x69,0x74, 0x81,3,0x61,0x2e,0x65,0x4c,0x6f,0xc3,0x18,0x73,0x69,0x1e,0x72,0x69,0x61,0x74, @@ -139,184 +139,195 @@ const uint8_t PropNameData::bytesTries[14992]={ 0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x11,0xd8,0x40,0xa,0x11,0x63, 0x63,0xc3,0x11,0x11,0x72,0x6d,0x58,0x1e,0x69,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63, 0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,0x1d,0x74,0x6c,0x65,0x63,0x61,0x73,0x65, -0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,0xa,0x6d,0x70,0x6e,0x76,0x70,0xa2, -0xf1,0x71,0xa4,0x43,0x72,2,0x61,0x28,0x65,0x32,0x69,0x9d,0x14,0x64,0x69,0x63, -0x61,0x6c,0x55,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,0x63,0x61, -0x74,0x6f,0x72,0x9d,0x12,0x61,0x74,0x68,0x4f,6,0x6f,0x39,0x6f,0x32,0x74,0xc3, -9,0x75,0x54,0x76,0xd9,0x30,0,0x12,0x6e,0x63,0x68,0x1f,0x61,0x72,0x61,0x63, -0x74,0x65,0x72,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x51,0x14,0x6d,0x65, -0x72,0x69,0x63,1,0x74,0x32,0x76,0x13,0x61,0x6c,0x75,0x65,0xd9,0x30,0,0x12, -0x79,0x70,0x65,0xc3,9,0x61,0xa2,0x77,0x63,0xa2,0x82,0x66,2,0x63,0x98,0x64, -0xa2,0x53,0x6b,1,0x63,0x56,0x64,1,0x69,0x42,0x71,1,0x63,0xc3,0xd,0x75, -0x17,0x69,0x63,0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xd,0x13,0x6e,0x65,0x72,0x74, -0x6d,1,0x69,0x42,0x71,1,0x63,0xc3,0xf,0x75,0x17,0x69,0x63,0x6b,0x63,0x68, -0x65,0x63,0x6b,0xc3,0xf,0x13,0x6e,0x65,0x72,0x74,0x71,1,0x69,0x42,0x71,1, -0x63,0xc3,0xe,0x75,0x17,0x69,0x63,0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xe,0x13, -0x6e,0x65,0x72,0x74,0x6f,1,0x69,0x42,0x71,1,0x63,0xc3,0xc,0x75,0x17,0x69, -0x63,0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xc,0x13,0x6e,0x65,0x72,0x74,0x6b,0xd8, -0x40,5,1,0x31,0xd9,0x40,0xb,0x6d,0x10,0x65,0xd9,0x40,5,0x12,0x68,0x61, -0x72,0x51,2,0x61,0x6c,0x63,0xa2,0x4c,0x72,1,0x65,0x2a,0x69,0x11,0x6e,0x74, -0x7f,0x16,0x70,0x65,0x6e,0x64,0x65,0x64,0x63,0x1f,0x6f,0x6e,0x63,0x61,0x74,0x65, -0x6e,0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x9f,0x10,0x74,2,0x73,0x2c, -0x74,0x30,0x77,0x10,0x73,0x77,0x11,0x79,0x6e,0x75,0x12,0x65,0x72,0x6e,1,0x73, -0x38,0x77,0x18,0x68,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x77,0x14,0x79,0x6e, -0x74,0x61,0x78,0x75,0x10,0x6d,0x9f,1,0x6d,0x3c,0x75,0x1a,0x6f,0x74,0x61,0x74, -0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc1,0xf8, -0x69,0xc1,0x3c,0x69,0xa2,0x6f,0x6a,0xa4,9,0x6c,4,0x62,0xc3,8,0x63,0x8c, -0x65,0x98,0x69,0xa2,0x56,0x6f,2,0x65,0x4b,0x67,0x4c,0x77,0x11,0x65,0x72,0x4c, -0x13,0x63,0x61,0x73,0x65,0x4c,0x16,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40, -4,0x11,0x69,0x63,0x1f,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x65,0x78,0x63,0x65, -0x70,0x74,0x69,0x6f,0x6e,0x4b,0xd8,0x40,4,0x11,0x63,0x63,0xc3,0x10,0x18,0x61, -0x64,0x63,0x61,0x6e,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69, -0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x10,0x16,0x6e,0x65,0x62,0x72, -0x65,0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x5b,0x73,1,0x63,0xd9,0x40, -3,0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0x80, -0x65,0x90,0x73,0x40,1,0x62,0x52,0x74,0x46,1,0x61,0x40,0x72,0x1c,0x69,0x6e, -0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,0x11,0x72,0x74,0x41, -0x44,0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x45, -0x3e,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3f,0x10,0x6f,0x42,0x16,0x67,0x72, -0x61,0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,0x73,0x10,0x63,0xc3,0x17, -0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x63, -0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,0x1f,0x73,0x69,0x74,0x69, -0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x16,0x10,0x63, -0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,0x11,0x69,0x6e,1,0x63, -0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,0x70,0x65,0xc3,7,0x13, -0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x49,0x66, -0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,0x68,0x79,0x13,0x70,0x68, -0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65, -0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,0x69,0x67,0x69,0x74,0x3b, -0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,0x70,0x1f,0x6f,0x73,0x69, -0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x33,2,0x63, -0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,0x65,0x8a,0x6c,0x12,0x69, -0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,3,0x62,0x5e,0x63,0x30, -0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,0x73,0x74,0x65,0x72,0x62, -0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,0x64,0x37,0x12,0x61,0x73, -0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,0x12,0x6d,0xd9,0x20,0, -0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc2,5, -0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0x90,0x62,0xa2,0xbe,0x63,0xa4, -0x30,0x64,0xa4,0xfd,0x65,5,0x6d,0x63,0x6d,0x6e,0x70,0xa2,0x59,0x78,0x10,0x74, -0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,0x6e,0x64,0x65,1,0x64, -0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63, -0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,2,0x63,0x40,0x6d,0x50,0x70, -0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x95,0x17,0x6f,0x6d, -0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x96, -0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,0x73,0x95,0x61,0x30,0x62,0x4e,0x63, -0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,0x74,0x61,0x73,0x69,0x61,0x6e,0x77, -0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,0x65,0x99,3,0x67,0x44,0x68,0x4a, -0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,0x78,0x64,0x69,0x67,0x69,0x74,0x23, -0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,1,0x6e,0x38,0x70,0x11,0x68,0x61, -0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,0x75,0x6d,0x79,4,0x63,0xc3,0, -0x69,0x3e,0x6c,0xa2,0x57,0x6d,0xa2,0x64,0x70,1,0x62,0xd9,0x40,0xd,0x74,0xc3, -0x15,0x11,0x64,0x69,2,0x63,0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64, -0x62,0x72,0x61,0x63,0x6b,0x65,0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3, -0x15,0x24,1,0x6c,0x30,0x6f,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73, -0x73,0xc3,0,0x26,0x14,0x69,0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e, -0x67,0x67,0x6c,0x79,0x70,0x68,0xd9,0x40,1,0x10,0x64,0x27,2,0x61,0x32,0x6b, -0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,0x6e,0x6b,0x7b,0x10,0x67,0xd9,0x40, -1,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,4,0x63,0x30,0x6b, -0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,0x11,0x63,0x66,0x91, -0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,0x44,0x6c,0x6c,0x6e, -0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x89,0x12, -0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,0x64,0x8f,0x14,0x6f, -0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x87, -0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,0x65,0x64,0x91,0x18, -0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,0x70,0x65,0x78,0x33, -0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,0x73,0x10,0x65,3, -0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65, -0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,0x67,0x6e,0x6f,0x72, -0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d, -0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,2,0x10,0x63,0xc3, -2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,0x11,0x73,0x68,0x29, -2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,0x74,0x65,0x64,0x2d, -0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,0x79,0x70,0x65,0xc3, -3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65, -0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,0x61,0x2e,0x15,0x63, -0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,0x42,0x79,0x22,0x11, -0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,0x6f,0x21,0x22,0x12, -0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,0x4c,0x76,1,0x69, -0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,0x14,0x65,0x72,0x6c, -0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,0x6b,0x58,0x6c,0x74, -0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,0x61,0x2f,0x19,0x74, -0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,0x24,0x76,0x31,0x18, -0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,0x12,0x65,0x66,0x74, -0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,0x73,0xa3,0xf0,0x1a, -0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xf0,2,0x61,0xa3, -0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,0x30,0x62,0x13,0x65, -0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,0x12,0x61,0x6e,0x72, -0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,0x62,0xa2,0xd4,0x63, -0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,0x38,0xa2,0x64,0x39, -0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,0x43,0x38,0x45,0x39, -0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,1,0x33,0xa3,0x67, -0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,0x7a,0x39,0xa3,0x81, -0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,0x35,0xa,0x35,0x53, -0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,0x32,0x4d,0x33,0x4f, -0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,0x69,0x30,0x5d,0x31, -0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,0x6c,0xa3,0xe4,0x72, -0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,0x68,0x65,0x64,1, -0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,0x65,0x66,0x74,0xa3, -0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,0x68,0x74,0xa3,0xd8, -0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,0x12,0x6f,0x76,0x65, -0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xe8,0x12,0x65,0x66, -0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,0xa3,0xde,0x12,0x6c, -0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xde,0x12, -0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,0x46,0x73,0xa2,0x48, -0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x33, -0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,0x18,0x67,0x68,0x74, -0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65, -0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x3d, -0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,0x6d,0x65,0x6e,0x74, -0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,0x41,0x6f,0xa2,0x53, -0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,0x65,0x63,0x74,0x69, -0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4d, -0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73, -0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,0x69,0x4d,1,0x6f, -0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61, -0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,0x65,0x75,0x74,0x72, -0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,1,0x65,0x30,0x72, -2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,0x72,0x69,0x67,0x68, -0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65, -0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,0x73,0x6f,0x6c,0x61, -0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,0x72,0x6f,0x70,0x65, -0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,0x69,0x6e,0x61,0x74, -0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,0x70,0x61,0x72,0x61, -0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,0x72,0x73,0x74,0x73, -0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,0x47,0x61,0x4e,0x62, -0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,0x73,0x65,0x70,0x61, -0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,0x13,0x61,0x62,0x69, -0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,0x14,0x65,0x74,0x74, -0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,0x61,0x72,0x79,0x6e, -0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc8,0xc8,0x74,0xc1,0xee,0x77, -0x6a,0x77,0x48,0x79,0x70,0x7a,0x1d,0x61,0x6e,0x61,0x62,0x61,0x7a,0x61,0x72,0x73, -0x71,0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,0x16,0x61,0x6e, -0x67,0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,1,0x65,0x88, -0x69,2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73, -0xa3,0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,0x67,0x72,0x61, -0x6d,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,0x69,0x63,0x61, -0x6c,0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,0x59,0x75,0xa4, -0x35,0x76,2,0x61,0x36,0x65,0x7a,0x73,0xa2,0x6c,0x12,0x73,0x75,0x70,0xa3,0x7d, +0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,0xa,0x6d,0xa2,0x76,0x6e,0xa2,0x78, +0x70,0xa4,0x3e,0x71,0xa4,0x90,0x72,3,0x61,0x2c,0x65,0x36,0x67,0x54,0x69,0x9d, +0x14,0x64,0x69,0x63,0x61,0x6c,0x55,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e, +0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x9d,0x15,0x69,0x65,0x6d,0x6f,0x6a,0x69,0xa2, +0x47,3,0x66,0x44,0x6d,0x5c,0x74,0x7c,0x7a,0x19,0x77,0x6a,0x73,0x65,0x71,0x75, +0x65,0x6e,0x63,0x65,0xa3,0x46,0x1a,0x6c,0x61,0x67,0x73,0x65,0x71,0x75,0x65,0x6e, +0x63,0x65,0xa3,0x44,0x1e,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,0x65,0x71,0x75, +0x65,0x6e,0x63,0x65,0xa3,0x43,0x19,0x61,0x67,0x73,0x65,0x71,0x75,0x65,0x6e,0x63, +0x65,0xa3,0x45,0x12,0x61,0x74,0x68,0x4f,6,0x6f,0x39,0x6f,0x32,0x74,0xc3,9, +0x75,0x54,0x76,0xd9,0x30,0,0x12,0x6e,0x63,0x68,0x1f,0x61,0x72,0x61,0x63,0x74, +0x65,0x72,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x51,0x14,0x6d,0x65,0x72, +0x69,0x63,1,0x74,0x32,0x76,0x13,0x61,0x6c,0x75,0x65,0xd9,0x30,0,0x12,0x79, +0x70,0x65,0xc3,9,0x61,0xa2,0x77,0x63,0xa2,0x82,0x66,2,0x63,0x98,0x64,0xa2, +0x53,0x6b,1,0x63,0x56,0x64,1,0x69,0x42,0x71,1,0x63,0xc3,0xd,0x75,0x17, +0x69,0x63,0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xd,0x13,0x6e,0x65,0x72,0x74,0x6d, +1,0x69,0x42,0x71,1,0x63,0xc3,0xf,0x75,0x17,0x69,0x63,0x6b,0x63,0x68,0x65, +0x63,0x6b,0xc3,0xf,0x13,0x6e,0x65,0x72,0x74,0x71,1,0x69,0x42,0x71,1,0x63, +0xc3,0xe,0x75,0x17,0x69,0x63,0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xe,0x13,0x6e, +0x65,0x72,0x74,0x6f,1,0x69,0x42,0x71,1,0x63,0xc3,0xc,0x75,0x17,0x69,0x63, +0x6b,0x63,0x68,0x65,0x63,0x6b,0xc3,0xc,0x13,0x6e,0x65,0x72,0x74,0x6b,0xd8,0x40, +5,1,0x31,0xd9,0x40,0xb,0x6d,0x10,0x65,0xd9,0x40,5,0x12,0x68,0x61,0x72, +0x51,2,0x61,0x6c,0x63,0xa2,0x4c,0x72,1,0x65,0x2a,0x69,0x11,0x6e,0x74,0x7f, +0x16,0x70,0x65,0x6e,0x64,0x65,0x64,0x63,0x1f,0x6f,0x6e,0x63,0x61,0x74,0x65,0x6e, +0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x9f,0x10,0x74,2,0x73,0x2c,0x74, +0x30,0x77,0x10,0x73,0x77,0x11,0x79,0x6e,0x75,0x12,0x65,0x72,0x6e,1,0x73,0x38, +0x77,0x18,0x68,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x77,0x14,0x79,0x6e,0x74, +0x61,0x78,0x75,0x10,0x6d,0x9f,1,0x6d,0x3c,0x75,0x1a,0x6f,0x74,0x61,0x74,0x69, +0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc1,0xf8,0x69, +0xc1,0x3c,0x69,0xa2,0x6f,0x6a,0xa4,9,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65, +0x98,0x69,0xa2,0x56,0x6f,2,0x65,0x4b,0x67,0x4c,0x77,0x11,0x65,0x72,0x4c,0x13, +0x63,0x61,0x73,0x65,0x4c,0x16,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,4, +0x11,0x69,0x63,0x1f,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x65,0x78,0x63,0x65,0x70, +0x74,0x69,0x6f,0x6e,0x4b,0xd8,0x40,4,0x11,0x63,0x63,0xc3,0x10,0x18,0x61,0x64, +0x63,0x61,0x6e,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e, +0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x10,0x16,0x6e,0x65,0x62,0x72,0x65, +0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x5b,0x73,1,0x63,0xd9,0x40,3, +0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0x80,0x65, +0x90,0x73,0x40,1,0x62,0x52,0x74,0x46,1,0x61,0x40,0x72,0x1c,0x69,0x6e,0x61, +0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,0x11,0x72,0x74,0x41,0x44, +0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x45,0x3e, +0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3f,0x10,0x6f,0x42,0x16,0x67,0x72,0x61, +0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,0x73,0x10,0x63,0xc3,0x17,0x11, +0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x63,0x61, +0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,0x1f,0x73,0x69,0x74,0x69,0x6f, +0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x16,0x10,0x63,0xc3, +0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,0x11,0x69,0x6e,1,0x63,0x4a, +0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,0x70,0x65,0xc3,7,0x13,0x72, +0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x49,0x66,0x86, +0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,0x68,0x79,0x13,0x70,0x68,0x65, +0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x74, +0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,0x69,0x67,0x69,0x74,0x3b,0x10, +0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,0x70,0x1f,0x6f,0x73,0x69,0x74, +0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x33,2,0x63,0xa2, +0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,0x65,0x8a,0x6c,0x12,0x69,0x6e, +0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,3,0x62,0x5e,0x63,0x30,0x65, +0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,0x73,0x74,0x65,0x72,0x62,0x72, +0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,0x64,0x37,0x12,0x61,0x73,0x65, +0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,0x12,0x6d,0xd9,0x20,0,0x1c, +0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc2,5,0x13, +0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,0x62,0xa2,0xd0,0x63,0xa4,0x4f, +0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,0xa2,0x6b,0x78,0x10,0x74,0x30, +1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,0x6e,0x64,0x65,1,0x64,0x24, +0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0xa1, +0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,0x63,0x44,0x6b,0x54,0x6d,0x70, +0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x95,0x17,0x6f, +0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,0x79,0x63,0x61,0x70,0x73,0x65, +0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72, +0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,0x73,0x95,0x61,0x30,0x62,0x4e, +0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,0x74,0x61,0x73,0x69,0x61,0x6e, +0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,0x65,0x99,3,0x67,0x44,0x68, +0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,0x78,0x64,0x69,0x67,0x69,0x74, +0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,1,0x6e,0x38,0x70,0x11,0x68, +0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,0x75,0x6d,0x79,5,0x6c,0x22, +0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,0x74,0xc3,0x15,2,0x61,0x32, +0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,0x6e,0x6b,0x7b,0x10,0x67,0xd9, +0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,0x64,0x69,2,0x63,0x54,0x6d, +0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,0x61,0x63,0x6b,0x65,0x74,0xd8, +0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,1,0x6c,0x30,0x6f,0x14,0x6e, +0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,0,0x26,0x14,0x69,0x72,0x72, +0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,0x6c,0x79,0x70,0x68,0xd9,0x40, +1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,0x6f,0x6a,0x69,0xa3,0x41,6, +0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,4,0x63,0x30,0x6b,0x36,0x6c, +0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,0x11,0x63,0x66,0x91,0x18,0x61, +0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,0x44,0x6c,0x6c,0x6e,0x7e,0x74, +0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x89,0x12,0x61,0x73, +0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,0x64,0x8f,0x14,0x6f,0x6c,0x64, +0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x87,0x1c,0x66, +0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,0x65,0x64,0x91,0x18,0x69,0x74, +0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,0x70,0x65,0x78,0x33,0x61,0x2e, +0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,0x73,0x10,0x65,3,0x64,0x83, +0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x65,0x15, +0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,0x67,0x6e,0x6f,0x72,0x61,0x62, +0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69, +0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,2,0x10,0x63,0xc3,2,3, +0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,0x11,0x73,0x68,0x29,2,0x63, +0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,0x74,0x65,0x64,0x2d,0x1d,0x6f, +0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,0x79,0x70,0x65,0xc3,3,0x15, +0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,0x63,0x6f, +0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,0x61,0x2e,0x15,0x63,0x72,0x69, +0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,0x42,0x79,0x22,0x11,0x65,0x73, +0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,0x6f,0x21,0x22,0x12,0x72,0x75, +0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,0x4c,0x76,1,0x69,0x24,0x72, +0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,0x14,0x65,0x72,0x6c,0x61,0x79, +0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,0x6b,0x58,0x6c,0x74,0x6e,3, +0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,0x61,0x2f,0x19,0x74,0x72,0x65, +0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,0x24,0x76,0x31,0x18,0x6e,0x61, +0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,0x12,0x65,0x66,0x74,0xa3,0xe0, +0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,0x73,0xa3,0xf0,0x1a,0x74,0x61, +0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xf0,2,0x61,0xa3,0xea,0x62, +0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,0x30,0x62,0x13,0x65,0x6c,0x6f, +0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,0x12,0x61,0x6e,0x72,0x2c,0x15, +0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,0x62,0xa2,0xd4,0x63,0x11,0x63, +0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,0x38,0xa2,0x64,0x39,0x10,0x31, +0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,0x43,0x38,0x45,0x39,0x47,0x30, +0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,1,0x33,0xa3,0x67,0x37,0xa3, +0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,0x7a,0x39,0xa3,0x81,0x3a,2, +0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,0x35,0xa,0x35,0x53,0x36,0x55, +0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,0x32,0x4d,0x33,0x4f,0x34,0x51, +6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,0x69,0x30,0x5d,0x31,0x5f,0x32, +0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,0x6c,0xa3,0xe4,0x72,0xa3,0xe8, +0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,0x68,0x65,0x64,1,0x61,0x3e, +0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,0x65,0x66,0x74,0xa3,0xc8,0x13, +0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,0x68,0x74,0xa3,0xd8,0xa2,0xd6, +0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,0x12,0x6f,0x76,0x65,0xa2,0xe6, +1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xe8,0x12,0x65,0x66,0x74,0xa3, +0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,0xa3,0xde,0x12,0x6c,0x6f,0x77, +0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xde,0x12,0x65,0x66, +0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,0x46,0x73,0xa2,0x48,0x77,1, +0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x33,0x22,1, +0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,0x18,0x67,0x68,0x74,0x74,0x6f, +0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72, +0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x3d,0x15,0x73, +0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x65, +0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,0x41,0x6f,0xa2,0x53,0x70,2, +0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f,0x6e, +0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4d,0x14,0x6f, +0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70, +0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,0x69,0x4d,1,0x6f,0x28,0x73, +0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b, +0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,0x65,0x75,0x74,0x72,0x61,0x6c, +0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,1,0x65,0x30,0x72,2,0x65, +0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,0x72,0x69,0x67,0x68,0x74,0x20, +2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x39,0x17, +0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65, +0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,0x72,0x6f,0x70,0x65,0x61,0x6e, +2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,0x69,0x6e,0x61,0x74,0x6f,0x72, +0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,0x70,0x61,0x72,0x61,0x74,0x6f, +0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,0x72,0x73,0x74,0x73,0x74,0x72, +0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,0x47,0x61,0x4e,0x62,0x84,0x63, +1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,0x73,0x65,0x70,0x61,0x72,0x61, +0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,0x13,0x61,0x62,0x69,0x63,1, +0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,0x14,0x65,0x74,0x74,0x65,0x72, +0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,0x61,0x72,0x79,0x6e,0x65,0x75, +0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x14,0x74,0xc2,0x30,0x77,0x89,0x77, +0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,0x61,0x6d,0x65,0x6e,0x6e,0x79, +0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69, +0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61, +0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,0x16,0x61,0x6e,0x67,0x63,0x69, +0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,1,0x65,0x88,0x69,2,0x6a, +0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,0x48,0x12, +0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,0x67,0x72,0x61,0x6d,0x73,0x79, +0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0xa3, +0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,0x65,0x75,0xa4,0x4f,0x76,3, +0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,0x12,0x73,0x75,0x70,0xa3,0x7d, 1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,0x6f,0x6e,0x73,0x65,0x6c,0x65, 0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65, 0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,0x69,0x63,0x61,0x6c,0x66,0x6f, 0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,0x74,0xa2,0xaf,0x16,0x65,0x6e, -0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,4,0x61,0x68,0x65,0xa2,0xad,0x68,0xa2,0xb0, -0x69,0xa2,0xb8,0x72,0x1c,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x61,0x6e,0x64,0x6d, -0x61,0x70,0xa2,0xcf,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xcf,4,0x67, -0x7e,0x69,0xa2,0x41,0x6b,0xa2,0x6a,0x6d,0xa2,0x6c,0x6e,0x12,0x67,0x75,0x74,0xa4, -0x10,1,0x63,0x40,0x73,0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65, -0x6e,0x74,0xa5,0x33,0x18,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11, -2,0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,0x62,0x13,0x61, -0x6e,0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,0x16,0x75,0x61, -0x6e,0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3, -0x7c,0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,0x65,0x74,0xa3, -0xb7,0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,0x70,0xa4,0x2b, -0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,0x67,0x75,0x4b, -0x10,0x61,1,0x61,0x24,0x69,0x53,0x11,0x6e,0x61,0x3d,2,0x62,0x34,0x66,0x3c, -0x72,0x13,0x68,0x75,0x74,0x61,0xa3,0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69, -0x6e,0x61,0x67,0x68,0xa3,0x90,2,0x63,0x82,0x67,0x92,0x6e,0x1f,0x69,0x66,0x69, -0x65,0x64,0x63,0x61,0x6e,0x61,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69, -0x67,0x69,0x6e,0x61,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17, -0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,0xad,0x11,0x61,0x73,0x62,0x12,0x65, -0x78,0x74,0xa3,0xad,0x15,0x61,0x72,0x69,0x74,0x69,0x63,0xa3,0x78,0x70,0xc3,0x4b, +0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,0x6b,0x75,0x71,0x69,0xa5,0x3f, +5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74, +0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73, +0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,0x75,0x74,0x61,0xa3,0xfb,0x13, +0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,0x68,0xa3,0x90,0x11,0x74,0x6f, +0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,1,0x61,0x24,0x69,0x53,0x11, +0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,0xa2,0x72,0x6d,0xa2,0x74,0x6e, +0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,1,0x63,0x40,0x73,0x11,0x75, +0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x33,0x18,0x6f,0x6d, +0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,0x61,0xa5,0x3c,2,0x61,0x2a, +0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,0x62,0x13,0x61,0x6e,0x77,0x61, +0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,0x16,0x75,0x61,0x6e,0x6a,0x69, +0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x7c,0x10,0x65, +0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,0x65,0x74,0xa3,0xb7,0x11,0x72, +0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,0x70,0xa4,0x2b,0x16,0x70,0x6c, +0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,0x67,0x75,0x4b,2,0x63,0x8c, +0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,0x63,0x61,0x6e,0x61,0x64,0x69, +0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x73,0x79,0x6c, +0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64, +0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,0x12,0x65,0x78,0x74,0xa2,0xad, +0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,0x63,0xa3,0x78,0x70,0xc3,0x4b, 0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,0xbe,0x6f,0xa2,0x69,0x70,0xa2, 0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,0x72,0x12,0x69,0x61,0x63,0x3a, 0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x17, @@ -369,683 +380,693 @@ const uint8_t PropNameData::bytesTries[14992]={ 0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,0x63,0xa3,0xa6,0x12,0x73,0x70, 0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,0x6e,0x11,0x69,0x63,0x67,0x10, 0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f, -0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,0xa3,0x6d,0xa2,0xe6,0x6e,0xa8, -0x19,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,0xa2,0x4c,0x74,0x10,0x74,0x1f, +0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,0xa3,0x6d,0xa2,0xf0,0x6e,0xa8, +0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,0xa2,0x4c,0x74,0x10,0x74,0x1f, 0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73, 0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,0x61,0x72,0x1f,0x61,0x63,0x74, 0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x85,1,0x69, 0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,0x64,0x69,0x6e,0x67,0x62,0x61, 0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,0x30,0x6d,0x13,0x61,0x6e,0x79, -0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,0x71,0x67,0xa2,0x71,0x6c,1, -0x63,0xa2,0x62,0x64,5,0x70,0x38,0x70,0x36,0x73,0x56,0x74,0x14,0x75,0x72,0x6b, -0x69,0x63,0xa3,0xbf,0x11,0x65,0x72,1,0x6d,0x2e,0x73,0x12,0x69,0x61,0x6e,0xa3, -0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61, -0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,0x13,0x64,0x69,0x61,0x6e,0xa5,0x22,0x68, -0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e, -0xa3,0xf0,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61, -0x6c,0x69,0x63,0xa3,0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12, -0x68,0x61,0x6d,0x65,6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79, -0x14,0x61,0x6e,0x6d,0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62, -0xa3,0xee,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1, -0x64,0x52,0x6e,0x15,0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4, -0xd,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13, -0x66,0x69,0x65,0x72,1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74, -0x65,0x72,0x73,0xa3,0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3, -0xed,1,0x6c,0x44,0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d, -0x62,0x6f,0x6c,0x73,0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b, -0x65,0xa4,0x4c,0x69,1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2, -0x71,0x73,0x36,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79, -0x6d,0x62,0x6f,0x6c,0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68, -0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c, -0x6c,0x61,0x6e,0x65,0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63, -0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74, -0x69,0x63,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62, -0xa3,0x69,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61, -0x3c,0x70,0x19,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14, -0x72,0x72,0x6f,0x77,0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44, -0x73,0x4e,0x74,0x62,0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73, -0xa5,0x20,0x13,0x63,0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f, -0x6e,0x64,0x69,0xa5,0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65, -0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3, -0x5d,0x16,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65, -0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d, -0x65,0x72,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b, -0x7e,0x6c,0x88,0x6e,1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3, -0xea,0x12,0x61,0x69,0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2, -0xaa,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9, -0x13,0x61,0x73,0x61,0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3, -0x64,0x6c,0x65,0x7e,0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63, -0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15, -0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69, -0x6e,0xa5,0x21,0x17,0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65, -0x78,0x74,0xa2,0xd5,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64, -0x65,0x6b,0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f, -0x5a,0x75,0x64,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63, -0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62, -0x6c,0x6f,0x63,0x6b,0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62, -0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1, -0x61,0xa5,0xe,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,1,0x62,0x38,0x6e, -0x17,0x64,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,0x61,0x65, -0x61,0x6e,0xa3,0xef,0x67,0xc4,0x32,0x6a,0xc1,0xb9,0x6a,0xa2,0xd5,0x6b,0xa2,0xee, -0x6c,4,0x61,0x54,0x65,0xa2,0x61,0x69,0xa2,0x78,0x6f,0xa2,0xb7,0x79,1,0x63, -0x2e,0x64,0x12,0x69,0x61,0x6e,0xa3,0xa9,0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f, -0x55,0x74,0x11,0x69,0x6e,1,0x31,0x82,0x65,0x11,0x78,0x74,4,0x61,0x5c,0x62, -0x29,0x63,0xa3,0x94,0x64,0xa3,0x95,0x65,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,4, -0x61,0x36,0x62,0x29,0x63,0xa3,0x94,0x64,0xa3,0x95,0x65,0xa3,0xe7,0x26,0x18,0x64, -0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,0x12,0x73,0x75,0x70,0x24,0x16, -0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,0x42,0x74,0x1d,0x74,0x65,0x72, -0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x79,0x12,0x63,0x68,0x61, -0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,0xa2,0xb0,0x12,0x73,0x75,0x70, -0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x31,0x11,0x62,0x75,0xa3, -0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,1,0x69,0x38,0x73,0x17,0x79, -0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,0x64,0x65,0x6f,0x67,0x72,0x61, -0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73, -0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0xb5, -0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,1,0x61, -0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,0x6f,0x86,0x75,0x15,0x64,0x61, -0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,0x68,0x74,0x68,0x69,0xa3,0x89, -0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa5, -0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x71,0x12, -0x6a,0x6b,0x69,0xa3,0xe5,3,0x69,0x3a,0x6e,0x42,0x74,0xa2,0x51,0x79,0x13,0x61, -0x68,0x6c,0x69,0xa3,0xa2,0x12,0x74,0x68,0x69,0xa3,0xc1,3,0x61,0x34,0x62,0x76, -0x67,0x7c,0x6e,0x12,0x61,0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2, -0xcb,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,1,0x61, -0xa5,0x13,0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x13,0x11,0x75,0x6e,0xa3,0x42, -0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x97,0x14,0x61, -0x6b,0x61,0x6e,0x61,0x9e,1,0x65,0x4c,0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74, -0x69,0x63,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78, -0x74,0xa3,0x6b,0x67,0xa2,0xb5,0x68,0xa4,0x84,0x69,3,0x64,0x4c,0x6d,0xa2,0x55, -0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,0x2a,0x16,0x65,0x6e,0x73,0x69,0x6f, -0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63, -1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa4,0xb,0x1d,0x61,0x6e, -0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa5,0xb,0x13,0x65, -0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x72,0x61,0x63, -0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d, -0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69, -0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e, -0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,0x11,0x69,0x63,1,0x6e,0x3e,0x73, -0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x1e,0x19,0x75, -0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,4,0x65,0x74,0x6c,0xa2, -0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,0x6a,0x34,0x6e,0x3e,0x72,0x14,0x6d, -0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,0x74,0x69,0x45,0x18,0x6a,0x61,0x6c, -0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,0x6e,0xa2,0x46,0x6f,1,0x6d,0x6e, -0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0x87, -0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x87,0x11,0x78,0x74,0xa4,0x1b,0x14, -0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,0x74,0x72,0x69,0x63,0x73,0x68,0x61, -0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,0xe3,0x14,0x65,0x6e,0x64,0x65,0x64, -0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69, -0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,0x74,0x69,0x63,0xa2,0x88,0x12,0x73, -0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xa,0x13,0x74, -0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,0x11,0x65,0x6b,0x30,1,0x61,0x38, -0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,0x65,0x64,0x6f,0x17,0x6e,0x64,0x63, -0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,0x68,0x61,0xa3,0xe4,2,0x61,0xa2, -0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,0x14,0x61,0x67,0x61,0x6e,0x61,0x9d, -0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73, -0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65, -0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,0x65,0x75,0x73,0x65,0x73,0x75,0x72, -0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,2,0x6c,0x32,0x6e,0x9a,0x74,0x12, -0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,0x58,0x6d,0x70,0x77,0x14,0x69,0x64, -0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x66, -0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x66,0x6f,0x72, -0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,0xa3,0x52,2,0x67,0x34,0x69,0xa2, -0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,0x75,0x6c,0xa2,0x4a,2,0x63,0x3c, -0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,0x4a,0x1f,0x6f, -0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x6a,0x61,0x6d,0x6f,0xa3, -0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,1, -0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79, -0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,0x61,0xa4,5,0x62,0xa6,0x45,0x63, -0xa8,0x1a,0x64,0xac,0xb8,0x65,5,0x6d,0xa2,0x6d,0x86,0x6e,0x96,0x74,0x15,0x68, -0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0x86,0x16, -0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x86,0x11,0x78,0x74,0xa2,0x85,1,0x61, -0xa3,0xc8,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,0x85,0x10,0x61,0xa3,0xc8,0x16,0x6f, -0x74,0x69,0x63,0x6f,0x6e,0x73,0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2, -0x61,0x5a,0x63,0x9e,0x69,0x1c,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63, -0x73,0x75,0x70,0xa2,0xc4,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16, -0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3, -0xc3,0x13,0x72,0x69,0x63,0x73,0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e, -0x74,0xa3,0xc3,0x11,0x6a,0x6b,0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73, -0x61,0x6e,0x64,0x6d,0x6f,0x6e,0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c, -1,0x62,0x30,0x79,0x13,0x6d,0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e, -0xa3,0xe2,0x13,0x72,0x6c,0x79,0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63, -0x75,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61, -0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3, -0xc2,0x1c,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5, -0x24,7,0x6e,0xc0,0xe5,0x6e,0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xd8,0x76,0x14,0x65, -0x73,0x74,0x61,0x6e,0xa3,0xbc,1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1, -0x67,0x34,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65, -0x6b,1,0x6d,0x34,0x6e,0x15,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75, -0x73,0x69,0x63,0xa2,0x7e,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e, -0xa3,0x7e,0x10,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67, -0x6c,0x79,0x70,0x68,0x73,0xa3,0xfe,2,0x61,0x32,0x6d,0xa2,0x71,0x72,0x12,0x6f, -0x77,0x73,0x7d,0x12,0x62,0x69,0x63,0x38,3,0x65,0x4a,0x6d,0x66,0x70,0xa2,0x43, -0x73,0x11,0x75,0x70,0xa2,0x80,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80, -0x11,0x78,0x74,1,0x61,0xa3,0xd2,0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa3,0xd2, -0x12,0x61,0x74,0x68,0xa2,0xd3,0x18,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x61, -0x1f,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c, -0x73,0xa3,0xd3,1,0x66,0x42,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69, -0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,1,0x61,0xa3,0x51,0x62,0xa3,0x55,0x14,0x65, -0x6e,0x69,0x61,0x6e,0x35,0x12,0x63,0x69,0x69,0x23,0x64,0x9e,0x65,0xa2,0x42,0x68, -0xa2,0x4d,0x6c,1,0x63,0x62,0x70,0x17,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x70, -1,0x66,0xa3,0x50,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e, -0x66,0x6f,0x72,0x6d,0x73,0xa3,0x50,0x16,0x68,0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2, -0xd0,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5, -7,0x1a,0x67,0x65,0x61,0x6e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x77,0x11, -0x6f,0x6d,0xa3,0xfd,7,0x6f,0x71,0x6f,0x64,0x72,0xa2,0x41,0x75,0xa2,0x58,0x79, -0x1b,0x7a,0x61,0x6e,0x74,0x69,0x6e,0x65,0x6d,0x75,0x73,0x69,0x63,0xa2,0x5b,0x18, -0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5b,1,0x70,0x34,0x78,0x16, -0x64,0x72,0x61,0x77,0x69,0x6e,0x67,0x89,0x14,0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12, -0x65,0x78,0x74,0xa2,0x43,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0x43,0x10,0x61,1, -0x68,0x40,0x69,0x12,0x6c,0x6c,0x65,0x92,0x17,0x70,0x61,0x74,0x74,0x65,0x72,0x6e, -0x73,0x93,0x11,0x6d,0x69,0xa3,0xc9,1,0x67,0x2c,0x68,0x11,0x69,0x64,0xa3,0x64, -0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x81,0x61,0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52, -0x6c,0x1a,0x6f,0x63,0x6b,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x8b,3,0x6c, -0x34,0x6d,0x40,0x73,0x66,0x74,0x11,0x61,0x6b,0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73, -0x65,0xa3,0x93,0x11,0x75,0x6d,0xa2,0xb1,0x12,0x73,0x75,0x70,0xa2,0xca,0x16,0x70, -0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xca,1,0x69,0x30,0x73,0x13,0x61,0x76,0x61, -0x68,0xa3,0xdd,0x15,0x63,0x6c,0x61,0x74,0x69,0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c, -0x69,0x41,0x16,0x61,0x69,0x6b,0x73,0x75,0x6b,0x69,0xa5,8,5,0x6f,0xc1,0x4c, -0x6f,0xa2,0x55,0x75,0xa4,0x10,0x79,1,0x70,0x9c,0x72,0x14,0x69,0x6c,0x6c,0x69, -0x63,0x32,1,0x65,0x4c,0x73,0x11,0x75,0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d, -0x65,0x6e,0x74,0xa2,0x61,0x12,0x61,0x72,0x79,0xa3,0x61,0x11,0x78,0x74,3,0x61, -0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x65,0x13,0x6e,0x64,0x65,0x64,2,0x61, -0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x1c,0x72,0x69,0x6f,0x74,0x73,0x79,0x6c, -0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2, -0xa0,0x75,0x17,0x6e,0x74,0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75, -0x6d,0x65,0x72,0x61,0x6c,0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15, -0x61,0x74,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64, -0x46,0x68,0x9e,0x6d,0x1d,0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62, -0x6f,0x6c,0x73,0x77,0x1e,0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d, -0x61,0x72,0x6b,0x73,0x2e,2,0x65,0x40,0x66,0xa6,0x41,0x73,0x18,0x75,0x70,0x70, -0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64, -0xa3,0xe0,0x17,0x61,0x6c,0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e, -0x1f,0x69,0x6e,0x64,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d, -0x73,0xa3,0xb2,0x1b,0x74,0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73, -0x83,0x12,0x74,0x69,0x63,0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d, -0x62,0x65,0x72,0x73,0xa3,0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79, -0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2, -0x98,0x16,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70, -0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xe1,0x68, -0xa4,0xb,0x6a,0x10,0x6b,0xa2,0x47,4,0x63,0x8c,0x65,0xa2,0x80,0x72,0xa2,0x98, -0x73,0xa2,0xaa,0x75,0x1f,0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67, -0x72,0x61,0x70,0x68,0x73,0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f, -0x6e,6,0x64,0x6b,0x64,0xa3,0xd1,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e, -0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,0x44,0x64, -0x17,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,0x70,0xa3, -0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,0x64,0x65, -0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,0x6c,0x65, -0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,0x78,0x74, -6,0x64,0xc,0x64,0xa3,0xd1,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x61, -0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x19,0x61,0x64,0x69,0x63,0x61,0x6c,0x73, -0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x95,1,0x74,0x50, -0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63, -0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,0x14,0x72,0x6f,0x6b,0x65,0x73,0xa3,0x82, -2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62, -0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,0x61,0x64,0x69,0x61,0x6e,0x73,0x79,0x6c, -0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,0x69,0x61,0x6e,0xa3,0xa8,2,0x61,0x3a, -0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa5,0x2d,1,0x6b,0x26, -0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,1,0x72,0x38,0x73,0x17,0x73,0x73,0x79, -0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,0x6f,0x6b,0x65,0x65,0x60,0x12,0x73,0x75, -0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xff,3,0x65,0x3e, -0x69,0x7e,0x6f,0xa2,0x69,0x75,0x15,0x70,0x6c,0x6f,0x79,0x61,0x6e,0xa3,0xe1,1, -0x73,0x50,0x76,0x16,0x61,0x6e,0x61,0x67,0x61,0x72,0x69,0x3e,0x12,0x65,0x78,0x74, -0xa2,0xb3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xb3,0x13,0x65,0x72,0x65,0x74,0xa3, -0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5, -0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66, -0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73, -0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67, -0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab, -0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2, -0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33, -2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65, -0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46, -0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11, -0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74, -0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e, -0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e, -0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70, -0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72, -0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61, -0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11, -0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69, -0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17, -0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69, -0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21, -0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74, -0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f, -0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63, -1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70, -0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74, -0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40, -0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23, -0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70, -8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76, -0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f, -0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72, -0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e, -0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c, -0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74, -0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74, -0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75, -0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c, -0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69, -0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74, -0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69, -0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63, -0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c, -0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d, -0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65, -0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74, -0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61, -0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c, -0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f, -0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f, -0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12, -0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75, -0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70, -0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a, -0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61, -0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65, -0x72,0x33,0,0x12,0x6d,0xc2,0x3f,0x73,0xa1,0x73,0x4e,0x74,0xa2,0x56,0x77,0xa2, -0x72,0x79,0xa2,0x73,0x7a,1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69, -0x6e,0x85,5,0x74,0x22,0x74,0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77, +0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,0x7b,0x67,0xa2,0x7b,0x6c,1, +0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,0x5a,0x74,0x88,0x75,0x14,0x79, +0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,0x6d,0x2e,0x73,0x12,0x69,0x61, +0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74, +0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,0x13,0x64,0x69,0x61,0x6e,0xa5, +0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f, +0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xf0,0x17,0x75,0x6e,0x67, +0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,0x6c,0x69,0x63,0xa3,0x58,0x13, +0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,0x68,0x61,0x6d,0x65,6,0x6f, +0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,0x14,0x61,0x6e,0x6d,0x61,0x72, +0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,0xa3,0xee,0x65,0x13,0x6e,0x64, +0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,0x64,0x52,0x6e,0x15,0x67,0x6f, +0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,0xd,0x16,0x70,0x6c,0x65,0x6d, +0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,0x66,0x69,0x65,0x72,1,0x6c, +0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0xa3,0x8a,0x15, +0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,0xed,1,0x6c,0x44,0x73,0x11, +0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5c, +0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,0x65,0xa4,0x4c,0x69,1,0x61, +0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,0x71,0x73,0x36,0x74,0x17,0x65, +0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8f, +0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c, +0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,0x6c,0x61,0x6e,0x65,0x6f,0x75, +0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c, +0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x73,0x79, +0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x15,0x79,0x6d,0x62, +0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,0x3c,0x70,0x19,0x69,0x63,0x74, +0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,0x72,0x72,0x6f,0x77,0x73,0xa3, +0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,0x73,0x4e,0x74,0x62,0x79,0x19, +0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x20,0x13,0x63,0x68,0x65, +0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x14,0x10, +0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73, +0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,0x5d,0x16,0x6d,0x61,0x74,0x69, +0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73, +0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x73,0x79, +0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,0x7e,0x6c,0x88,0x6e,1,0x64, +0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0xea,0x12,0x61,0x69,0x63,0xa3, +0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,0xaa,0x14,0x74,0x69,0x6c,0x65, +0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,0x13,0x61,0x73,0x61,0x72,0xa5, +0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,0x64,0x6c,0x65,0x7e,0x6e,0xa2, +0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72, +0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,0x75,0x72,0x73,0x69,0x76,0x65, +0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa5,0x21,0x17,0x74,0x65, +0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,0x78,0x74,0xa2,0xd5,0x16,0x65, +0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,0x65,0x6b,0x69,0x6b,0x61,0x6b, +0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,0x5a,0x75,0x64,0x79,0x11,0x69, +0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f, +0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,0x6c,0x6f,0x63,0x6b,0x21,1, +0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d, +0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,0x61,0xa5,0xe,0x74,0x14,0x61, +0x69,0x6c,0x75,0x65,0xa3,0x8b,1,0x62,0x38,0x6e,0x17,0x64,0x69,0x6e,0x61,0x67, +0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0xef,0x67,0xc4, +0x43,0x6a,0xc1,0xca,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,0x65,0xa2, +0x6b,0x69,0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,0x61,0x6e, +0xa3,0xa9,0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,0x6e,1, +0x31,0x96,0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,0x66,0xa5, +0x39,0x67,0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,0x64,0xa3, +0x95,0x65,0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,0x63,0xa3, +0x94,0x26,0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,0x12,0x73, +0x75,0x70,0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,0x42,0x74, +0x1d,0x74,0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x79, +0x12,0x63,0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,0xa2,0xb0, +0x12,0x73,0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x31, +0x11,0x62,0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,1,0x69, +0x38,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,0x64,0x65, +0x6f,0x67,0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,0x6f,0x67, +0x61,0x74,0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,0x6e,0x65, +0x73,0x65,0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,0xb4,0x62, +0xa3,0xb9,1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,0x6f,0x86, +0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,0x68,0x74, +0x68,0x69,0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72, +0x69,0x70,0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c, +0x73,0xa3,0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,3,0x69,0x3a,0x6e,0x42,0x74,0xa2, +0x58,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0xa2,0x12,0x74,0x68,0x69,0xa3,0xc1,3, +0x61,0x34,0x62,0x84,0x67,0x8a,0x6e,0x12,0x61,0x64,0x61,0x4d,1,0x65,0x40,0x73, +0x11,0x75,0x70,0xa2,0xcb,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11, +0x78,0x74,2,0x61,0xa5,0x13,0x62,0xa5,0x38,0x65,0x13,0x6e,0x64,0x65,0x64,1, +0x61,0xa5,0x13,0x62,0xa5,0x38,0x11,0x75,0x6e,0xa3,0x42,0x11,0x78,0x69,0x96,0x17, +0x72,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x97,0x14,0x61,0x6b,0x61,0x6e,0x61,0x9e, +1,0x65,0x4c,0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,0x74, +0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x67,0xa2, +0xb5,0x68,0xa4,0x84,0x69,3,0x64,0x4c,0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13, +0x61,0x65,0x78,0x74,0x2a,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63, +0x99,0x65,0x17,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,1,0x64,0x56,0x73,0x15, +0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa4,0xb,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63, +0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa5,0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69, +0x70,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99, +0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba, +1,0x64,0x62,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70, +0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61, +0x76,0x69,0xa3,0xbe,0x11,0x69,0x63,1,0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71, +0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66, +0x6f,0x72,0x6d,0x73,0xa3,0xb2,4,0x65,0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72, +0xa2,0x9e,0x75,2,0x6a,0x34,0x6e,0x3e,0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43, +0x14,0x61,0x72,0x61,0x74,0x69,0x45,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64, +0x69,0xa5,0x1c,1,0x6e,0xa2,0x46,0x6f,1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61, +0x6e,0x5a,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d, +0x65,0x6e,0x74,0xa3,0x87,0x11,0x78,0x74,0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64, +0xa5,0x1b,0x1a,0x65,0x74,0x72,0x69,0x63,0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12, +0x65,0x78,0x74,0xa2,0xe3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72, +0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61, +0x67,0x6f,0x6c,0x69,0x74,0x69,0x63,0xa2,0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16, +0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59, +1,0x61,0x5c,0x65,0x11,0x65,0x6b,0x30,1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e, +0x14,0x65,0x6e,0x64,0x65,0x64,0x6f,0x17,0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63, +0x31,0x13,0x6e,0x74,0x68,0x61,0xa3,0xe4,2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69, +1,0x67,0x30,0x72,0x14,0x61,0x67,0x61,0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a, +0x73,0x18,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c, +0x75,0x19,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69, +0x76,0x1f,0x61,0x74,0x65,0x75,0x73,0x65,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74, +0x65,0x73,0xa3,0x4c,2,0x6c,0x32,0x6e,0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2, +0x10,0x66,2,0x61,0x58,0x6d,0x70,0x77,0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e, +0x64,0x66,0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3, +0x57,0x1a,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13, +0x61,0x72,0x6b,0x73,0xa3,0x52,2,0x67,0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f, +0x6f,0xa3,0x63,0x11,0x75,0x6c,0xa2,0x4a,2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79, +0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69, +0x62,0x69,0x6c,0x69,0x74,0x79,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f, +0x5c,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3, +0xb9,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62, +0x72,0x65,0x77,0x37,0x61,0xa4,0xc,0x62,0xa6,0x53,0x63,0xa8,0x28,0x64,0xac,0xd3, +0x65,5,0x6d,0xa9,0x6d,0x94,0x6e,0xa2,0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69, +0x63,0x5e,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d, +0x65,0x6e,0x74,0xa3,0x86,0x11,0x78,0x74,0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5, +0x37,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37, +0x16,0x6f,0x74,0x69,0x63,0x6f,0x6e,0x73,0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65, +0x64,2,0x61,0x5a,0x63,0x9e,0x69,0x1c,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68, +0x69,0x63,0x73,0x75,0x70,0xa2,0xc4,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3, +0xc4,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75, +0x70,0xa3,0xc3,0x13,0x72,0x69,0x63,0x73,0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d, +0x65,0x6e,0x74,0xa3,0xc3,0x11,0x6a,0x6b,0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65, +0x72,0x73,0x61,0x6e,0x64,0x6d,0x6f,0x6e,0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67, +0x76,0x6c,1,0x62,0x30,0x79,0x13,0x6d,0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73, +0x61,0x6e,0xa3,0xe2,0x13,0x72,0x6c,0x79,0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69, +0x63,0x63,0x75,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74, +0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26, +0x73,0xa3,0xc2,0x1c,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c, +0x73,0xa5,0x24,7,0x6e,0xc0,0xec,0x6e,0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xdf,0x76, +0x14,0x65,0x73,0x74,0x61,0x6e,0xa3,0xbc,1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e, +0x74,1,0x67,0x34,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72, +0x65,0x65,0x6b,1,0x6d,0x34,0x6e,0x15,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f, +0x13,0x75,0x73,0x69,0x63,0xa2,0x7e,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69, +0x6f,0x6e,0xa3,0x7e,0x10,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72, +0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xfe,2,0x61,0x32,0x6d,0xa2,0x78,0x72, +0x12,0x6f,0x77,0x73,0x7d,0x12,0x62,0x69,0x63,0x38,3,0x65,0x4a,0x6d,0x74,0x70, +0xa2,0x4a,0x73,0x11,0x75,0x70,0xa2,0x80,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74, +0xa3,0x80,0x11,0x78,0x74,2,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x65,0x13,0x6e,0x64, +0x65,0x64,1,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x12,0x61,0x74,0x68,0xa2,0xd3,0x18, +0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,0x62,0x65, +0x74,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,0x42,0x72, +0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73, +1,0x61,0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,0x12,0x63, +0x69,0x69,0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,0x62,0x70, +0x17,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,0x1e,0x65, +0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x50, +0x16,0x68,0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,0x62,0x6f, +0x6c,0x73,0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,0x6e,0x6e, +0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,0x6f,0x71, +0x6f,0x64,0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,0x69,0x6e, +0x65,0x6d,0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f, +0x6c,0x73,0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,0x6e,0x67, +0x89,0x14,0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,0x14,0x65, +0x6e,0x64,0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,0x6c,0x65, +0x92,0x17,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,0xa3,0xc9, +1,0x67,0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3, +0x81,0x61,0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,0x65,0x6c, +0x65,0x6d,0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,0x74,0x11, +0x61,0x6b,0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,0x6d,0xa2, +0xb1,0x12,0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3, +0xca,1,0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,0x6c,0x61, +0x74,0x69,0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,0x6b,0x73, +0x75,0x6b,0x69,0xa5,8,5,0x6f,0xc1,0x59,0x6f,0xa2,0x62,0x75,0xa4,0x1d,0x79, +1,0x70,0x9c,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,0x4c,0x73,0x11, +0x75,0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,0x61,0x12,0x61, +0x72,0x79,0xa3,0x61,0x11,0x78,0x74,3,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5, +9,0x65,0x13,0x6e,0x64,0x65,0x64,2,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5, +9,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa5,0x36, +0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x7b,3,0x6d, +0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,0x75,0x17,0x6e,0x74,0x69,0x6e,0x67,0x72,0x6f, +0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa3,0x9a,2,0x62, +0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,0x74,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x14,0x69, +0x6e,0x69,0x6e,0x67,2,0x64,0x46,0x68,0x9e,0x6d,0x1d,0x61,0x72,0x6b,0x73,0x66, +0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x1e,0x69,0x61,0x63,0x72,0x69, +0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,0x72,0x6b,0x73,0x2e,2,0x65,0x40,0x66,0xa6, +0x41,0x73,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x83,0x16,0x78, +0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe0,0x17,0x61,0x6c,0x66,0x6d,0x61,0x72,0x6b, +0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,0x69,0x6e,0x64,0x69,0x63,0x6e,0x75,0x6d,0x62, +0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,0x1b,0x74,0x72,0x6f,0x6c,0x70,0x69, +0x63,0x74,0x75,0x72,0x65,0x73,0x83,0x12,0x74,0x69,0x63,0xa2,0x84,0x1b,0x65,0x70, +0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0xdf,1,0x6e,0x3e,0x72, +0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x75,0x15,0x65, +0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,0x16,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa2, +0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e, +0xa3,0x99,0x61,0xa2,0xe1,0x68,0xa4,0xb,0x6a,0x10,0x6b,0xa2,0x47,4,0x63,0x8c, +0x65,0xa2,0x80,0x72,0xa2,0x98,0x73,0xa2,0xaa,0x75,0x1f,0x6e,0x69,0x66,0x69,0x65, +0x64,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x47,0x18,0x65,0x78, +0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,6,0x64,0x6b,0x64,0xa3,0xd1,0x65,0xa5,0, +0x66,0xa5,0x12,0x67,0xa5,0x2e,0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66, +0x96,0x69,1,0x62,0x44,0x64,0x17,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2, +0x4f,0x12,0x73,0x75,0x70,0xa3,0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1, +0x66,0x54,0x69,0x18,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19, +0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d, +0x73,0xa3,0x53,0x11,0x78,0x74,6,0x64,0xc,0x64,0xa3,0xd1,0x65,0xa5,0,0x66, +0xa5,0x12,0x67,0xa5,0x2e,0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x19,0x61, +0x64,0x69,0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,0x6d,0x65, +0x6e,0x74,0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,0x1d,0x61, +0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,0x14,0x72, +0x6f,0x6b,0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,0x61,0x73, +0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,0x61,0x64, +0x69,0x61,0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,0x69,0x61, +0x6e,0xa3,0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,0x69,0x61, +0x6e,0xa5,0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,1,0x72, +0x38,0x73,0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,0x6f,0x6b, +0x65,0x65,0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e, +0x74,0xa3,0xff,3,0x65,0x3e,0x69,0x7e,0x6f,0xa2,0x69,0x75,0x15,0x70,0x6c,0x6f, +0x79,0x61,0x6e,0xa3,0xe1,1,0x73,0x50,0x76,0x16,0x61,0x6e,0x61,0x67,0x61,0x72, +0x69,0x3e,0x12,0x65,0x78,0x74,0xa2,0xb3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xb3, +0x13,0x65,0x72,0x65,0x74,0xa3,0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73, +0x61,0x6b,0x75,0x72,0x75,0xa5,0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c, +0x73,0x2e,2,0x65,0x30,0x66,0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74, +0xa3,0xe0,0x18,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62, +0x61,0x74,0x73,0x91,1,0x67,0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74, +0x69,0x6c,0x65,0x73,0xa3,0xab,0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a, +0x6e,0x48,0x73,0x7a,0x76,0xa2,0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64, +0x32,0x12,0x69,0x61,0x6c,0x33,2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e, +0x10,0x65,0x21,0x13,0x72,0x65,0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77, +0x35,2,0x6d,0x38,0x71,0x46,0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f, +1,0x61,0x24,0x6c,0x39,0x11,0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72, +0x65,0x3b,0x12,0x65,0x72,0x74,0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65, +0x92,0x66,0x96,0x69,1,0x6e,0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65, +0x64,0x31,0x11,0x69,0x74,0x2e,0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48, +0x6f,0x10,0x6d,0x24,0x12,0x70,0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69, +0x63,0x61,0x6c,0x23,0x13,0x72,0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69, +0x3a,0x6f,0x44,0x72,0x10,0x61,0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e, +0x28,0x11,0x61,0x6c,0x29,0x11,0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e, +0x6e,0x70,0x77,0x2a,0x12,0x69,0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75, +0x6f,0x75,0x73,0x23,0x26,0x17,0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24, +0x17,0x61,0x6c,0x66,0x77,0x69,0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14, +0x75,0x74,0x72,0x61,0x6c,0x21,0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0, +0xfb,0x73,0x6d,0x73,0x3a,0x74,0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d, +0x73,0x39,5,0x6f,0x28,0x6f,0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61, +0x74,0x65,0x45,0x11,0x61,0x63,1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72, +0x6b,0x31,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b, +0x55,0x6d,0x51,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74, +0x65,0x72,0x27,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c, +0x65,0x74,0x74,0x65,0x72,0x23,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21, +0x6e,0x8a,0x6f,0xa2,0x47,0x70,8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72, +0x24,0x73,0x49,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63, +0x4d,0x64,0x47,0x65,0x4b,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70, +0x61,0x72,0x61,0x74,0x6f,0x72,0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e, +0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74, +0x12,0x68,0x65,0x72,3,0x6c,0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62, +0x6f,0x6c,0x57,0x14,0x65,0x74,0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72, +0x37,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e, +0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88, +0x69,0xa2,0x4b,0x6c,0xa2,0x5c,0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d, +0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62, +0x6f,0x6c,0x55,0x14,0x65,0x74,0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d, +0x62,0x6f,0x6c,0x51,1,0x69,0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e, +0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e, +0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f, +0x6e,0x59,6,0x6d,0x18,0x6d,0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77, +0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69, +0x3c,0x6c,0x25,0x19,0x74,0x74,0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a, +0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2, +0x60,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f, +6,0x6e,0x39,0x6e,0x46,0x6f,0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63, +0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10, +0x6e,1,0x6e,0x2c,0x74,0x12,0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72, +0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41, +0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e, +0x4b,2,0x61,0x30,0x65,0x4a,0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70, +0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61, +0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0x33,0,0x13,0x6e,0xc1,0xf,0x74,0x76,0x74, +0x4c,0x76,0x9a,0x77,0xa2,0x48,0x79,0xa2,0x49,0x7a,1,0x61,0x2c,0x68,0x12,0x61, +0x69,0x6e,0x8b,0x11,0x69,0x6e,0x85,2,0x61,0x36,0x65,0x3c,0x68,0x14,0x69,0x6e, +0x79,0x65,0x68,0xa3,0x66,1,0x68,0x71,0x77,0x73,1,0x68,0x28,0x74,0x10,0x68, +0x77,0x16,0x6d,0x61,0x72,0x62,0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d, +0x1a,0x65,0x72,0x74,0x69,0x63,0x61,0x6c,0x74,0x61,0x69,0x6c,0xa3,0x67,0x11,0x61, +0x77,0x79,1,0x65,0x32,0x75,0x11,0x64,0x68,0x80,0x11,0x68,0x65,0x83,0x10,0x68, +0x7a,1,0x62,0x34,0x77,0x16,0x69,0x74,0x68,0x74,0x61,0x69,0x6c,0x7f,0x14,0x61, +0x72,0x72,0x65,0x65,0x7d,0x6e,0xa2,0x4c,0x70,0xa2,0x69,0x71,0xa2,0x69,0x72,0xa2, +0x6f,0x73,5,0x74,0x22,0x74,0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77, 0x61,0x77,0x6f,0x18,0x72,0x61,0x69,0x67,0x68,0x74,0x77,0x61,0x77,0xa3,0x55,0x15, 0x61,0x73,0x68,0x6b,0x61,0x66,0x6d,0x61,0x2e,0x65,0x38,0x68,0x11,0x69,0x6e,0x6b, 0x10,0x64,0x62,0x11,0x68,0x65,0x65,1,0x65,0x2e,0x6d,0x13,0x6b,0x61,0x74,0x68, -0x69,0x10,0x6e,0x67,1,0x61,0x4e,0x65,1,0x68,0x28,0x74,0x10,0x68,0x77,0x16, -0x6d,0x61,0x72,0x62,0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d,1,0x68, -0x71,0x77,0x73,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,0x11,0x64,0x68,0x80,0x11, -0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,0x69,0x74,0x68,0x74,0x61, -0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6d,0x6c,0x6e,0xa4,0x6b,0x70, -0xa4,0x88,0x71,0xa4,0x88,0x72,1,0x65,0x38,0x6f,0x18,0x68,0x69,0x6e,0x67,0x79, -0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,0x73,0x65,0x64,0x70, -0x65,0x61,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,1,0x6c,0xa2,0xe7, -0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,0x76,0x73,0x51,0x73, -0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,0x69,0x6e,0xa3,0x54, -0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,0x11,0x68,0x65,0xa3, -0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,0x74,0x79,0xa3,0x51, -0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,0x4f,0x14,0x61,0x6d, -0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,0x64,0x68,0xa3,0x53, -0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,0x68,0xa3,0x4a,0x11, -0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,0x48,0x12,0x6f,0x70, -0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,0x66,0x6d,0x11,0x65, -0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,0x75,0x14,0x6e,0x64, -0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,0x70,0x68,0xa3,0x43, -0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,0x64,0x50,0x66,0x12, -0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,0x12,0x65,0x70,0x68, -0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,0x6d,0x65,0x64,0x68, -0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,6,0x6e, -0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,0x63,2,0x67,0x2e, -0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,0x61,0xa3,0x5e,0x6e, -0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,0x62,0x62,0x3c,0x6a, -0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,0x5c,0x11,0x68,0x61, -0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,2,0x6f,0x2c,0x75,0x50,0x79, -0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,0x69,0x6e,0x69,0x6e, -0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,0x59,0x10,0x61,1, -0x66,0x5b,0x70,0x10,0x68,0x5d,0x66,0x9a,0x66,0x42,0x67,0x7a,0x68,0x8a,0x6b,0xa2, -0x75,0x6c,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,2,0x61,0x3e,0x65,0x4a, -0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73, -0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,0x10,0x61,1,0x66,0x37,0x6d,0x11, -0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,0x74,0x10,0x68,0x45,0x40, -0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,0x6e,0x1a,0x69,0x66,0x69, -0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,0x70,0x10,0x61,0xa3,0x65, -0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,0x61,0x6f,0x6e,0x68,0x65, -0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,0x6e,0x17,0x6f,0x74,0x74, -0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,0x68,0x49,0x12,0x61,0x70, -0x68,0x89,0x61,0x2e,0x62,0x8a,0x64,0xa2,0x51,0x65,0x31,2,0x66,0x3c,0x69,0x70, -0x6c,1,0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63, -0x61,0x6e,2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68, -0xa3,0x56,0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10, -0x72,0x1f,0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72, -0x65,0x65,0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61, -0x74,0x68,0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56, -0x75,0x21,0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69, -0x67,0x68,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e, -0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26, -0x19,0x65,0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61, -0x6c,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75, -0x73,0x69,0x6e,0x67,0x23,0,0x13,0x6e,0xc0,0xd0,0x73,0x49,0x73,0x48,0x75,0x78, -0x77,0x84,0x78,0x9c,0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63, -0x65,0x59,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,0x57,0x54,0x12,0x61, -0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,0x15,0x6e,0x6b,0x6e, -0x6f,0x77,0x6e,0x21,1,0x6a,0x5d,0x6f,0x17,0x72,0x64,0x6a,0x6f,0x69,0x6e,0x65, -0x72,0x5d,0x10,0x78,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,0x71,0xa2,0x6e, -0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64, -0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,0x46,0x73,0x45, -0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,0x69,0x6e,0x65, -0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,0x48,0x1c,0x65, -0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,1,0x6f,0x3e, -0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4d,0x4a, -0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4b,0x10,0x75, -0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,0x50,0x69,0x86, -0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,0x6f,0x72,0x79, -0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,0x6c,0x6d,0x79, -0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74, -0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,0x6f,0x67,0x72, -0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,0x70,1,0x61, -0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,0x75,0x6d,0x65, -0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,0x43,0x69,0x15, -0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x40,0x62,0x70,0x63,0xa2,0x55,0x65,0xa2, -0xdb,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,2,0x69,0x23,0x6c,0x34,0x6d,0x16, -0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74, -0x69,0x63,0x25,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,0x2d,0x72,0x12,0x65,0x61, -0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x57,0x13, -0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,0x68,0x27,0x13,0x66,0x6f, -0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,0x69,0x72,0x35,1,0x6d, -0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,0x6e,0x74,0x62,0x72,0x65, -0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,0x6c,0x6a,0x61,0x70,0x61, -0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x6b,1,0x62,0x3a,0x70, -0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x51,0x18,0x69,0x6e,0x69, -0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,0x6a,0x6b,0x6c,0x30,0x13, -0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,0x74,0x75,0x61,0x74,0x69, -0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,0x69,0x73,0x69,0x1b,0x72, -0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,0x35,2,0x62,0x3e,0x6d, -0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x37,0x70,0x12, -0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,1,0x64, -0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,0x69,0x63,0x27,0x11,0x6e, -0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,0x25,0x22,0x14,0x63,0x69, -0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x2a,0x74,0xc1,0x6d,0x77,0x96,0x77,0xa2, -0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,0x73,0x34,0x78,0x42,0x79, -0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,0xa3,0xae,0x6d,0xa3,0x81, -0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,0x69,0x58,0x6d,0x11,0x74, -0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,0x1a,0x62,0x61,0x7a,0x61, -0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,0x68,0x23,2,0x61,0x30, -0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,0x72,0x10,0x61,0xa2,0x92, -0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,0x68,0x6f,0xa3,0xbc,0x11, -0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,0xa3,0x65,0x11,0x65,0x6f, -0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,0x7a,0x69,0xa2,0xc0,0x11, -0x64,0x69,0xa3,0xc0,0x74,0x4a,0x75,0xa2,0xba,0x76,1,0x61,0x2c,0x69,0x11,0x73, -0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,5,0x67,0x36,0x67,0x68, -0x68,0x6c,0x69,2,0x62,0x3a,0x66,0x4a,0x72,0x10,0x68,0xa2,0x9e,0x12,0x75,0x74, -0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,0x61,0x6e,0x6f,0x14,0x69,0x6e, -0x61,0x67,0x68,0x99,0x11,0x6c,0x67,0x75,0x10,0x61,1,0x61,0x24,0x69,0x6d,0x6a, -0x11,0x6e,0x61,0x6b,0x61,0x30,0x65,0xa2,0x5b,0x66,0x11,0x6e,0x67,0x99,6,0x6c, -0x21,0x6c,0x32,0x6d,0x38,0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75, -0x97,1,0x69,0x24,0x6c,0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,0x11,0x75,0x74, -0xa3,0x9a,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,0x10,0x69,0xa3,0x99,1, -0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,0x6c,0x6f,0x67,0x75,2, -0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,0x10,0x65,0x89,0x12,0x68, -0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,0x62,0x10,0x75,0x68,0x11, -0x67,0x75,0x69,1,0x67,0x32,0x6e,0x14,0x6b,0x6e,0x6f,0x77,0x6e,0xa3,0x67,0x11, -0x61,0x72,0x8a,0x13,0x69,0x74,0x69,0x63,0x8b,0x71,0xc1,0x13,0x71,0xa2,0xde,0x72, -0xa2,0xe3,0x73,6,0x69,0x8a,0x69,0x72,0x6f,0xa2,0x4c,0x75,0xa2,0x75,0x79,1, -0x6c,0x46,0x72,4,0x63,0x65,0x65,0xa3,0x5f,0x69,0x2c,0x6a,0xa3,0x60,0x6e,0xa3, -0x61,0x11,0x61,0x63,0x65,0x10,0x6f,0x94,0x16,0x74,0x69,0x6e,0x61,0x67,0x72,0x69, -0x95,2,0x64,0x3c,0x67,0x4c,0x6e,1,0x64,0xa3,0x91,0x68,0x62,0x12,0x61,0x6c, -0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,0x68,0x61,0x6d,0xa3,0xa6,0x17,0x6e,0x77,0x72, -0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,2,0x67,0x3a,0x72,0x52,0x79,0x10,0x6f,0xa2, -0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,1,0x64,0x26,0x6f,0xa3,0xb8,0xa2,0xb7,0x12, -0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,0xa2,0x98,0x16,0x73,0x6f,0x6d,0x70,0x65,0x6e, -0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,0x71,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0x71, -0x61,0x5c,0x67,0xa2,0x43,0x68,1,0x61,0x2a,0x72,0x10,0x64,0xa3,0x97,2,0x72, -0x28,0x76,0x30,0x77,0x87,0x12,0x61,0x64,0x61,0xa3,0x97,0x12,0x69,0x61,0x6e,0x87, -2,0x6d,0x40,0x72,0x58,0x75,0x10,0x72,0xa2,0x6f,0x15,0x61,0x73,0x68,0x74,0x72, -0x61,0xa3,0x6f,1,0x61,0x26,0x72,0xa3,0x7e,0x14,0x72,0x69,0x74,0x61,0x6e,0xa3, -0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,0x85,0x11,0x6e,0x77,0xa3,0x70,0x11,0x61,0x61, -1,0x63,0x2f,0x69,0x23,3,0x65,0x3e,0x6a,0x48,0x6f,0x4e,0x75,0x10,0x6e,1, -0x69,0x24,0x72,0x61,0x10,0x63,0x61,0x13,0x6a,0x61,0x6e,0x67,0xa3,0x6e,0x11,0x6e, -0x67,0xa3,0x6e,1,0x68,0x2a,0x72,0x10,0x6f,0xa3,0x5d,0x10,0x67,0xa3,0xb6,0x6e, -0xa2,0x83,0x6f,0xa2,0xf2,0x70,5,0x6c,0x1e,0x6c,0x44,0x72,0x4a,0x73,0x1b,0x61, -0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,0xa3,0x7b,0x11,0x72,0x64, -0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,0x61,0x7c,0x65,0xa2,0x54,0x68,3,0x61,0x3e, -0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x5b,0x10, -0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,0xa3,0x5a,2,0x69,0xa3,0x7a,0x70,0xa3,0x7b, -0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,2,0x68,0x3e,0x6c,0x50,0x75,0x10,0x63,0xa2, -0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,0xa3,0xa5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f, -0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,0x90,0x14,0x79,0x72,0x65,0x6e,0x65,0xa3,0x90, -0x11,0x72,0x6d,0xa3,0x59,6,0x6b,0x36,0x6b,0x56,0x73,0x6e,0x75,0x74,0x79,0x11, -0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d, -0x6f,0x6e,0x67,0xa3,0xba,1,0x67,0x2e,0x6f,0xa2,0x57,0x10,0x6f,0xa3,0x57,0x10, -0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,0x96,0x12,0x73,0x68,0x75,0xa3,0x96,0x61,0x42, -0x62,0x80,0x65,0x10,0x77,1,0x61,0xa3,0xaa,0x74,0x14,0x61,0x69,0x6c,0x75,0x65, -0x97,2,0x62,0x2e,0x6e,0x3c,0x72,0x10,0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65, -0x61,0x6e,0xa3,0x8f,0x10,0x64,0xa2,0xbb,0x16,0x69,0x6e,0x61,0x67,0x61,0x72,0x69, -0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,3,0x67,0x5a,0x6c,0x6c,0x72,0xa2,0x93,0x73, -2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,0x6e,0x79,0x61,0x85,0x11,0x67, -0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,1,0x61,0x2a,0x68,0x11,0x61,0x6d,0x5b,0x10, -0x6d,0x5b,1,0x63,0xa2,0x60,0x64,5,0x70,0x37,0x70,0x36,0x73,0x54,0x74,0x14, -0x75,0x72,0x6b,0x69,0x63,0xa3,0x58,0x11,0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69, -0x61,0x6e,0x9b,0x11,0x69,0x63,0xa3,0x59,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74, -0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3, -0xb8,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69, -0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa3,0x4c,0x14, -0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,0x69,0x6b,0x69, -0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,0x61,0x5f,0x10, -0x68,0xa3,0x58,0x68,0xc3,0xd,0x6b,0xc2,0x24,0x6b,0xa4,0x17,0x6c,0xa4,0xb2,0x6d, -8,0x6f,0x46,0x6f,0x48,0x72,0x74,0x74,0x80,0x75,0x86,0x79,1,0x61,0x28,0x6d, -0x10,0x72,0x59,0x13,0x6e,0x6d,0x61,0x72,0x59,2,0x64,0x2e,0x6e,0x32,0x6f,0x10, -0x6e,0xa3,0x72,0x10,0x69,0xa3,0xa3,0x10,0x67,0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e, -0x57,0x10,0x6f,0xa2,0x95,0x10,0x6f,0xa3,0x95,0x11,0x65,0x69,0xa3,0x73,0x11,0x6c, -0x74,0xa2,0xa4,0x12,0x61,0x6e,0x69,0xa3,0xa4,0x61,0x36,0x65,0xa2,0x67,0x69,0xa2, -0xbd,0x6c,0x11,0x79,0x6d,0x55,6,0x6e,0x38,0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79, -0x10,0x61,0xa3,0x55,1,0x64,0x38,0x69,0xa2,0x79,0x15,0x63,0x68,0x61,0x65,0x61, -0x6e,0xa3,0x79,0xa2,0x54,0x12,0x61,0x69,0x63,0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12, -0x68,0x65,0x6e,0xa3,0xa9,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3, -0xaf,0x68,0x36,0x6b,0x4c,0x6c,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x55,1,0x61, -0x26,0x6a,0xa3,0xa0,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12, -0x73,0x61,0x72,0xa3,0xb4,3,0x64,0x78,0x65,0x94,0x6e,0xa2,0x42,0x72,1,0x63, -0xa3,0x8d,0x6f,0xa2,0x56,0x13,0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69, -0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x56,0x15,0x75,0x72,0x73,0x69, -0x76,0x65,0xa3,0x8d,1,0x65,0x26,0x66,0xa3,0xb5,0x16,0x66,0x61,0x69,0x64,0x72, -0x69,0x6e,0xa3,0xb5,0x17,0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa3,0x73,0x10, -0x64,0xa2,0x8c,0x17,0x65,0x6b,0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61, -0x6f,0xa3,0x5c,6,0x6e,0x1a,0x6e,0x34,0x6f,0x38,0x70,0x3e,0x74,0x11,0x68,0x69, -0xa3,0x78,0x11,0x64,0x61,0x4b,0x11,0x72,0x65,0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a, -0x61,0x30,0x68,0x9a,0x69,0x11,0x74,0x73,0xa3,0xbf,4,0x69,0x3c,0x6c,0x44,0x6e, -0x48,0x74,0x56,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0x4f,0x12,0x74,0x68,0x69,0xa3, -0x78,0x10,0x69,0xa3,0x4f,1,0x61,0x4d,0x6e,0x12,0x61,0x64,0x61,0x4b,0x14,0x61, -0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,0x72,0x61,0x67,0x61,0x6e,0x61, -0x8d,4,0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,0x77,0x61, -0x64,0x69,0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,0x93,0x1d, -0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xbf, -1,0x65,0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,0x69,0xa3, -0x9d,4,0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,0x34,0x64, -0x10,0x69,0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,0x61,0x6e, -0xa3,0x6b,2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,0x51,0x69, -0x24,0x6e,0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,0x11,0x70, -0x63,0xa2,0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,0x10,0x75, -0xa3,0x83,0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,0x65,0x11, -0x61,0x72,1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,0x6e,0x69, -0xa2,0x95,0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,1,0x6d, -0x38,0x76,0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,0x6f,0xa3, -0xad,0x11,0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,0x48,0x75, -0x11,0x6e,0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,0xa3,0x4b, -0x70,0xa3,0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,0x72,0x61, -0x48,0x13,0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,0xa2,0x11, -0x61,0x6e,0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,0xa3,0x4a, -0x75,0x12,0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,0x66,0x69, -0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,0x45,0x11, -0x62,0x72,0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,0x61,0x6c, -0x5d,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3, -0x74,2,0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e, -0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0x7d, -0x13,0x6c,0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,0x69,0x74, -0x65,0x64,0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,0x65,0x82, -0x6c,0x9a,0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,0x72,1, -0x6d,0x24,0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,0x3f,0x13, -0x72,0x61,0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa3, -0xb3,0x10,0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,0x39,0x11, -0x61,0x67,0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,0x74,0x10, -0x68,0x3a,0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,0x61,0x32, -0x65,1,0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,0x74,0x68, -0x61,0xa3,0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,0x70,0x6c, -0xa2,0x87,0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,0x61,0x34, -0x15,0x6e,0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,1,0x61, -0x36,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,0xa3,0xbe, -0x11,0x67,0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,0x67,0x3a, -0x6c,0x72,0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,0x79,2, -0x64,0xa3,0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,0x68,0x69, -0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,0x79,0x10, -0x6d,0xa2,0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,0x73,0x61, -0x6e,0xa3,0x88,0x61,0xa2,0xb4,0x62,0xa4,0x19,0x63,6,0x6f,0x3d,0x6f,0x5a,0x70, -0x76,0x75,0x7a,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,0x73,0xa3,0x44, -0x13,0x6c,0x6c,0x69,0x63,0x31,0x13,0x72,0x69,0x6f,0x74,0x7f,1,0x6d,0x30,0x70, -0x10,0x74,0x2e,0x11,0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,0x11,0x72,0x74,0x7f, -0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,0x65,0x61,0x32,0x68,0xa2,0x41,0x69, -0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,0x50,0x72,0x76,0x75,0x1d,0x63,0x61, -0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0x9f,0x10,0x6d, -0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x72, -0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,0xa2,0x68,0x11,0x61,0x6e,0xa3,0x68, -3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,0x73,0xa3,0xbd,1,0x6b,0x26,0x6d, -0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,0x2c,0x13,0x6f,0x6b,0x65,0x65,0x2d, -0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,0xbd,6,0x68,0x4a,0x68,0x48,0x6e, -0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,0x74,0xa3,0x75,0x13,0x73,0x74,0x61, -0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,0x61,0x74,0x1f,0x6f,0x6c,0x69,0x61, -0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x9c,1,0x61, -0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,0x27,0x13,0x6e,0x69,0x61,0x6e,0x27, -0x10,0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,0x66,0x44,0x67,0x11,0x68,0x62,0xa3, -0x9f,0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,0x10,0x6d,0xa3,0xa7,0x11,0x61,0x6b, -0xa3,0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,0x72,0x66,0x75,1,0x67,0x30,0x68, -1,0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,0x8e,0x13,0x6e,0x65,0x73,0x65,0x8f, -0x11,0x69,0x73,0xa1,0x11,0x70,0x6f,0x2a,0x13,0x6d,0x6f,0x66,0x6f,0x2b,0x10,0x61, -1,0x68,0x2e,0x69,0x7c,0x12,0x6c,0x6c,0x65,0x7d,0xa2,0x41,0x11,0x6d,0x69,0xa3, -0x41,0x61,0x48,0x65,0x9c,0x68,1,0x61,0x2a,0x6b,0x10,0x73,0xa3,0xa8,0x15,0x69, -0x6b,0x73,0x75,0x6b,0x69,0xa3,0xa8,3,0x6c,0x3a,0x6d,0x48,0x73,0x54,0x74,1, -0x61,0x24,0x6b,0x9f,0x10,0x6b,0x9f,0x10,0x69,0x9c,0x13,0x6e,0x65,0x73,0x65,0x9d, -0x10,0x75,0xa2,0x82,0x10,0x6d,0xa3,0x82,0x10,0x73,0xa2,0x86,0x13,0x61,0x76,0x61, -0x68,0xa3,0x86,0x11,0x6e,0x67,0x28,0x12,0x61,0x6c,0x69,0x29,3,0x6c,0x42,0x6e, -0x90,0x74,0xa2,0x46,0x76,0x24,0x17,0x6f,0x77,0x65,0x6c,0x6a,0x61,0x6d,0x6f,0x25, -0x22,1,0x65,0x54,0x76,0x28,1,0x73,0x38,0x74,0x2a,0x17,0x73,0x79,0x6c,0x6c, -0x61,0x62,0x6c,0x65,0x2b,0x16,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x29,0x18,0x61, -0x64,0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x23,1,0x61,0x21,0x6f,0x1a,0x74,0x61, -0x70,0x70,0x6c,0x69,0x63,0x61,0x62,0x6c,0x65,0x21,0x26,0x1a,0x72,0x61,0x69,0x6c, -0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x27,1,0x6e,0x2c,0x79,0x22,0x11,0x65,0x73, -0x23,0x20,0x10,0x6f,0x21,1,0x6e,0x2c,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x10, -0x6f,0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11,0x65,0x73,0x23,0x24,0x13,0x61, -0x79,0x62,0x65,0x25,0x20,0x10,0x6f,0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11, -0x65,0x73,0x23,0x24,0x13,0x61,0x79,0x62,0x65,0x25,0x20,0x10,0x6f,0x21,0xb,0x72, -0x39,0x76,0xc,0x76,0x33,0x78,0x2a,0x7a,0x11,0x77,0x6a,0x43,0x10,0x78,0x21,0x72, -0x28,0x73,0x50,0x74,0x31,1,0x65,0x24,0x69,0x39,0x1e,0x67,0x69,0x6f,0x6e,0x61, -0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x39,1,0x6d,0x35,0x70,0x18, -0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x35,0x6c,0x1f,0x6c,0x3c,0x6f,0x4a, -0x70,1,0x70,0x37,0x72,0x14,0x65,0x70,0x65,0x6e,0x64,0x37,0x28,1,0x66,0x2b, -0x76,0x2c,0x10,0x74,0x2f,0x13,0x74,0x68,0x65,0x72,0x21,0x63,0x4c,0x65,0x64,0x67, -1,0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,0x74,0x65,0x72,0x7a,0x77,0x6a,0x41, -0x10,0x7a,0x41,2,0x6e,0x23,0x6f,0x24,0x72,0x25,0x14,0x6e,0x74,0x72,0x6f,0x6c, -0x23,2,0x62,0x34,0x6d,0x4e,0x78,0x26,0x13,0x74,0x65,0x6e,0x64,0x27,0x3a,1, -0x61,0x24,0x67,0x3d,0x11,0x73,0x65,0x3a,0x12,0x67,0x61,0x7a,0x3d,0x3e,0x16,0x6f, -0x64,0x69,0x66,0x69,0x65,0x72,0x3f,9,0x6e,0x4a,0x6e,0x34,0x6f,0x44,0x73,0x60, -0x75,0x94,0x78,0x10,0x78,0x21,0x10,0x75,0x2a,0x14,0x6d,0x65,0x72,0x69,0x63,0x2b, -1,0x6c,0x2c,0x74,0x12,0x68,0x65,0x72,0x21,0x14,0x65,0x74,0x74,0x65,0x72,0x2d, -3,0x63,0x36,0x65,0x46,0x70,0x31,0x74,0x32,0x12,0x65,0x72,0x6d,0x33,0x3c,0x16, -0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3d,0x2e,0x10,0x70,0x2f,0x10,0x70,0x34,0x12, -0x70,0x65,0x72,0x35,0x61,0x46,0x63,0x52,0x65,0x64,0x66,0x72,0x6c,2,0x65,0x2d, -0x66,0x3b,0x6f,0x28,0x12,0x77,0x65,0x72,0x29,0x10,0x74,0x22,0x12,0x65,0x72,0x6d, -0x23,1,0x6c,0x24,0x72,0x37,0x24,0x12,0x6f,0x73,0x65,0x25,0x10,0x78,0x38,0x13, -0x74,0x65,0x6e,0x64,0x39,0x10,0x6f,0x26,0x13,0x72,0x6d,0x61,0x74,0x27,0,0x10, -0x6c,0x88,0x72,0x40,0x72,0x36,0x73,0x5e,0x77,0x7a,0x78,0x8a,0x7a,0x11,0x77,0x6a, -0x4b,1,0x65,0x24,0x69,0x3b,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64, -0x69,0x63,0x61,0x74,0x6f,0x72,0x3b,1,0x69,0x24,0x71,0x3f,0x18,0x6e,0x67,0x6c, -0x65,0x71,0x75,0x6f,0x74,0x65,0x3f,0x17,0x73,0x65,0x67,0x73,0x70,0x61,0x63,0x65, -0x4d,0x10,0x78,0x21,0x6c,0x36,0x6d,0x3c,0x6e,0x76,0x6f,0x13,0x74,0x68,0x65,0x72, -0x21,1,0x65,0x23,0x66,0x35,3,0x62,0x37,0x69,0x28,0x6c,0x29,0x6e,0x2b,0x10, -0x64,1,0x6c,0x34,0x6e,0x11,0x75,0x6d,0x2a,0x12,0x6c,0x65,0x74,0x37,0x14,0x65, -0x74,0x74,0x65,0x72,0x29,2,0x65,0x36,0x6c,0x39,0x75,0x2c,0x14,0x6d,0x65,0x72, -0x69,0x63,0x2d,0x14,0x77,0x6c,0x69,0x6e,0x65,0x39,0x66,0x3f,0x66,0x40,0x67,0x4e, -0x68,0x70,0x6b,0x10,0x61,0x26,0x15,0x74,0x61,0x6b,0x61,0x6e,0x61,0x27,0x10,0x6f, -0x24,0x13,0x72,0x6d,0x61,0x74,0x25,1,0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66, -0x74,0x65,0x72,0x7a,0x77,0x6a,0x49,0x10,0x7a,0x49,1,0x65,0x24,0x6c,0x3d,0x19, -0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,0x61,0x86,0x63,0x92,0x64, -0x94,0x65,2,0x62,0x44,0x6d,0x5e,0x78,0x2e,0x13,0x74,0x65,0x6e,0x64,0x32,0x15, -0x6e,0x75,0x6d,0x6c,0x65,0x74,0x2f,0x42,1,0x61,0x24,0x67,0x45,0x11,0x73,0x65, -0x42,0x12,0x67,0x61,0x7a,0x45,0x46,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x47, -0x15,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x10,0x72,0x31,1,0x6f,0x24,0x71,0x41, -0x18,0x75,0x62,0x6c,0x65,0x71,0x75,0x6f,0x74,0x65,0x41,2,0x63,0x32,0x6e,0x3c, -0x6f,0x22,0x12,0x70,0x65,0x6e,0x23,0x24,0x13,0x6c,0x6f,0x73,0x65,0x25,0x20,0x12, -0x6f,0x6e,0x65,0x21,6,0x6f,0x65,0x6f,0x4a,0x72,0x5c,0x74,0x64,0x76,0x1d,0x69, -0x73,0x75,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x6c,0x65,0x66,0x74,0x3d,0x18,0x76, -0x65,0x72,0x73,0x74,0x72,0x75,0x63,0x6b,0x2d,0x13,0x69,0x67,0x68,0x74,0x2f,0x11, -0x6f,0x70,0x30,0x12,0x61,0x6e,0x64,2,0x62,0x32,0x6c,0x62,0x72,0x13,0x69,0x67, -0x68,0x74,0x3b,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x32,0x12,0x61,0x6e,0x64,1,0x6c, -0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x35,0x12,0x65,0x66,0x74,0x3f,0x12,0x65,0x66, -0x74,0x36,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,0x39,0x62,0x2c,0x6c,0x5c, -0x6e,0x10,0x61,0x21,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x22,0x12,0x61,0x6e,0x64,1, -0x6c,0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x27,0x12,0x65,0x66,0x74,0x25,0x12,0x65, -0x66,0x74,0x28,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,0x2b,0xd,0x6e,0xaa, -0x72,0x70,0x72,0x92,0x73,0xa2,0x46,0x74,0xa2,0x54,0x76,1,0x69,0x60,0x6f,0x12, -0x77,0x65,0x6c,0x62,1,0x64,0x3a,0x69,0x19,0x6e,0x64,0x65,0x70,0x65,0x6e,0x64, -0x65,0x6e,0x74,0x67,0x17,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x65,1,0x72, -0x2e,0x73,0x13,0x61,0x72,0x67,0x61,0x61,0x12,0x61,0x6d,0x61,0x5f,0x1d,0x65,0x67, -0x69,0x73,0x74,0x65,0x72,0x73,0x68,0x69,0x66,0x74,0x65,0x72,0x57,0x1e,0x79,0x6c, -0x6c,0x61,0x62,0x6c,0x65,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x59,0x12,0x6f, -0x6e,0x65,1,0x6c,0x2c,0x6d,0x12,0x61,0x72,0x6b,0x5d,0x14,0x65,0x74,0x74,0x65, -0x72,0x5b,0x6e,0x3c,0x6f,0x7c,0x70,0x18,0x75,0x72,0x65,0x6b,0x69,0x6c,0x6c,0x65, -0x72,0x55,1,0x6f,0x4c,0x75,1,0x6b,0x3c,0x6d,0x12,0x62,0x65,0x72,0x50,0x15, -0x6a,0x6f,0x69,0x6e,0x65,0x72,0x53,0x11,0x74,0x61,0x4f,0x16,0x6e,0x6a,0x6f,0x69, -0x6e,0x65,0x72,0x4d,0x13,0x74,0x68,0x65,0x72,0x21,0x67,0x3e,0x67,0x4a,0x69,0x64, -0x6a,0x82,0x6d,0x1d,0x6f,0x64,0x69,0x66,0x79,0x69,0x6e,0x67,0x6c,0x65,0x74,0x74, -0x65,0x72,0x4b,0x1c,0x65,0x6d,0x69,0x6e,0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72, -0x6b,0x45,0x1e,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x73,0x74,0x61,0x63,0x6b, -0x65,0x72,0x47,0x14,0x6f,0x69,0x6e,0x65,0x72,0x49,0x61,0xa2,0xba,0x62,0xa2,0xc0, -0x63,1,0x61,0xa2,0xa2,0x6f,0x16,0x6e,0x73,0x6f,0x6e,0x61,0x6e,0x74,0x2a,8, -0x6b,0x67,0x6b,0x48,0x6d,0x52,0x70,0x5c,0x73,0xa2,0x42,0x77,0x19,0x69,0x74,0x68, -0x73,0x74,0x61,0x63,0x6b,0x65,0x72,0x43,0x14,0x69,0x6c,0x6c,0x65,0x72,0x35,0x14, -0x65,0x64,0x69,0x61,0x6c,0x37,1,0x6c,0x52,0x72,0x10,0x65,1,0x63,0x2e,0x66, -0x13,0x69,0x78,0x65,0x64,0x3d,0x19,0x65,0x64,0x69,0x6e,0x67,0x72,0x65,0x70,0x68, -0x61,0x3b,0x18,0x61,0x63,0x65,0x68,0x6f,0x6c,0x64,0x65,0x72,0x39,0x10,0x75,1, -0x62,0x3e,0x63,0x1b,0x63,0x65,0x65,0x64,0x69,0x6e,0x67,0x72,0x65,0x70,0x68,0x61, -0x41,0x15,0x6a,0x6f,0x69,0x6e,0x65,0x64,0x3f,0x64,0x4c,0x66,0x52,0x68,0x5a,0x69, -0x1e,0x6e,0x69,0x74,0x69,0x61,0x6c,0x70,0x6f,0x73,0x74,0x66,0x69,0x78,0x65,0x64, -0x33,0x12,0x65,0x61,0x64,0x2d,0x13,0x69,0x6e,0x61,0x6c,0x2f,0x18,0x65,0x61,0x64, -0x6c,0x65,0x74,0x74,0x65,0x72,0x31,0x1d,0x6e,0x74,0x69,0x6c,0x6c,0x61,0x74,0x69, -0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x29,0x16,0x76,0x61,0x67,0x72,0x61,0x68,0x61,0x23, -1,0x69,0x4a,0x72,0x10,0x61,0x1f,0x68,0x6d,0x69,0x6a,0x6f,0x69,0x6e,0x69,0x6e, -0x67,0x6e,0x75,0x6d,0x62,0x65,0x72,0x27,0x12,0x6e,0x64,0x75,0x25,2,0x72,0x38, -0x74,0x46,0x75,0x26,0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x27,0x20,0x15,0x6f,0x74, -0x61,0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,0x25,0x22,0x18,0x61,0x6e,0x73,0x66, -0x6f,0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,0x15,0x70,0x72,0x69,0x67,0x68,0x74, -0x25,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73, -0x4c,0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,0x70,0,2,0x6c,0xd9,0x20,0, -0x70,0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,0,0,0,7,0x6f,0x3c,0x6f, -0xff,8,0,0,0,0x70,0x3a,0x75,0x6e,0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff, -0xf,0,0,0,0x11,0x61,0x63,1,0x65,0x34,0x69,0x15,0x6e,0x67,0x6d,0x61, -0x72,0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xc3,0, -0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,0,0,0x63,0xff,2,0,0, -0,0x65,0x38,0x6b,0xff,4,0,0,0,0x6d,0xff,1,0,0,0,0x16, -0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,0,0x1d,0x69,0x74,0x6c,0x65,0x63, -0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,1,0x6e,0x40,0x70,0x1c,0x70, -0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x17,0x61,0x73, -0x73,0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30, -0xf8,0,0,9,0x69,0x33,0x69,0xff,0x10,0,0,0,0x6f,0xfd,0x80,0, -0,0x72,0x54,0x73,0xf9,0,0,0x75,0x12,0x6e,0x63,0x74,0xfe,0x30,0xf8,0, -0,0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x30,0xf8,0,0,0x17,0x69,0x76, -0x61,0x74,0x65,0x75,0x73,0x65,0xdd,0,0,0x61,0x48,0x63,0xfd,0x40,0,0, -0x64,0xe9,0,0,0x65,0xfd,0x20,0,0,0x66,0xff,0x20,0,0,0,0x1f, -0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72, -0xd9,0x40,0,0xbe,0,3,0x64,0xa7,0,0x6c,0xab,0,0x6f,0x30,0x75,0x13, -0x6d,0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e, -0x67,0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,0x74,0x12,0x68,0x65,0x72,0xe6,0x80, -1,3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff, -8,0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x61,0x14,0x75,0x6d,0x62,0x65, -0x72,0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80, -0,0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e, -0xf9,0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d, -0xa4,0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64, -0x69,0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff, -4,0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x41,1,0x72,0x3c,0x74,0x16, -0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,0,0,0,0x10,0x6b,0xa5,0xc0, -1,0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,0xdb,0,0,0x1d,0x6e,0x61,0x6c, -0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x20,0,0,0, -0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74, -0x69,0x6f,0x6e,0xff,0x10,0,0,0,0x9c,7,0x6d,0x18,0x6d,0x41,0x6f,0x28, -0x74,0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74, -0x74,0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,0x42,0x6c,0x29,0x13,0x74,0x74,0x65, -0x72,0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,0xab,0,0x1a,0x6e,0x65,0x73,0x65, -0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,0,0x63,0x46,0x64,0xa2,0x96,0x65, -0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6, -0x80,1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,0x73,0xe1,0,0,0x75,0x1b,0x72, -0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,2,0,0,0, -0x22,0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,0,0,1,0x6d,0x62,0x6e,1, -0x6e,0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,0,0x1f,0x65,0x63,0x74,0x6f,0x72, -0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x40,0,0,0x19, -0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9, -0x80,0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74, -0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,0,0x18,0x73,0x65,0x64,0x6c,0x65, -0x74,0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,0x50,0x69,0x12,0x67,0x69,0x74,0xa7, -0,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9, -0,0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0xa7,0 +0x69,0x10,0x6e,0x67,2,0x6f,0x2c,0x75,0x50,0x79,0x10,0x61,0x91,1,0x6a,0x28, +0x6f,0x10,0x6e,0x55,0x1a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x67,0x72,0x6f,0x75,0x70, +0x21,0x10,0x6e,0x57,0x10,0x65,0x59,0x10,0x61,1,0x66,0x5b,0x70,0x10,0x68,0x5d, +1,0x65,0x38,0x6f,0x18,0x68,0x69,0x6e,0x67,0x79,0x61,0x79,0x65,0x68,0x93,1, +0x68,0x5f,0x76,0x16,0x65,0x72,0x73,0x65,0x64,0x70,0x65,0x61,0x67,0xc1,0xc7,0x67, +0xa4,0x52,0x68,0xa4,0x59,0x6b,0xa4,0x99,0x6c,0xa4,0xb2,0x6d,2,0x61,0x2e,0x65, +0xa4,0x3e,0x69,0x10,0x6d,0x53,1,0x6c,0xa2,0xe7,0x6e,0x16,0x69,0x63,0x68,0x61, +0x65,0x61,0x6e,0,0x12,0x6e,0x76,0x73,0x51,0x73,0x3e,0x74,0x5c,0x77,0xa0,0x79, +0xa2,0x42,0x7a,0x13,0x61,0x79,0x69,0x6e,0xa3,0x54,0x10,0x61,1,0x64,0x2e,0x6d, +0x12,0x65,0x6b,0x68,0xa3,0x4c,0x11,0x68,0x65,0xa3,0x4b,3,0x61,0x38,0x65,0x3c, +0x68,0x4a,0x77,0x13,0x65,0x6e,0x74,0x79,0xa3,0x51,0x10,0x77,0xa3,0x4d,1,0x6e, +0xa3,0x4e,0x74,0x10,0x68,0xa3,0x4f,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x50,0x11, +0x61,0x77,0xa3,0x52,0x12,0x6f,0x64,0x68,0xa3,0x53,0x6e,0x3a,0x6f,0x40,0x70,0x46, +0x71,0x4a,0x72,0x12,0x65,0x73,0x68,0xa3,0x4a,0x11,0x75,0x6e,0xa3,0x46,0x11,0x6e, +0x65,0xa3,0x47,0x10,0x65,0xa3,0x48,0x12,0x6f,0x70,0x68,0xa3,0x49,0x67,0x33,0x67, +0x38,0x68,0x40,0x6b,0x5e,0x6c,0x66,0x6d,0x11,0x65,0x6d,0xa3,0x45,0x13,0x69,0x6d, +0x65,0x6c,0xa1,1,0x65,0x32,0x75,0x14,0x6e,0x64,0x72,0x65,0x64,0xa3,0x42,0x11, +0x74,0x68,0xa3,0x41,0x12,0x61,0x70,0x68,0xa3,0x43,0x14,0x61,0x6d,0x65,0x64,0x68, +0xa3,0x44,0x61,0x34,0x62,0x4a,0x64,0x50,0x66,0x12,0x69,0x76,0x65,0x9f,1,0x6c, +0x2a,0x79,0x11,0x69,0x6e,0x97,0x12,0x65,0x70,0x68,0x95,0x12,0x65,0x74,0x68,0x99, +1,0x61,0x30,0x68,0x14,0x61,0x6d,0x65,0x64,0x68,0x9d,0x13,0x6c,0x65,0x74,0x68, +0x9b,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,6,0x6e,0x2c,0x6e,0x34,0x72,0x5e,0x73, +0x62,0x74,0x11,0x74,0x61,0xa3,0x63,2,0x67,0x2e,0x6e,0x32,0x79,0x10,0x61,0xa3, +0x60,0x10,0x61,0xa3,0x5d,1,0x61,0xa3,0x5e,0x6e,0x10,0x61,0xa3,0x5f,0x10,0x61, +0xa3,0x61,0x11,0x73,0x61,0xa3,0x62,0x62,0x3c,0x6a,0x42,0x6c,0x10,0x6c,1,0x61, +0xa3,0x5b,0x6c,0x10,0x61,0xa3,0x5c,0x11,0x68,0x61,0xa3,0x59,0x10,0x61,0xa3,0x5a, +0x11,0x65,0x6d,0x51,0x10,0x61,1,0x66,0x37,0x6d,0x11,0x61,0x6c,0x39,1,0x61, +0x40,0x65,0x3e,1,0x68,0x28,0x74,0x10,0x68,0x45,0x40,0x13,0x67,0x6f,0x61,0x6c, +0x43,2,0x68,0x3b,0x6d,0x5c,0x6e,0x1a,0x69,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e, +0x67,0x79,0x61,1,0x6b,0x2a,0x70,0x10,0x61,0xa3,0x65,0x15,0x69,0x6e,0x6e,0x61, +0x79,0x61,0xa3,0x64,0x1a,0x7a,0x61,0x6f,0x6e,0x68,0x65,0x68,0x67,0x6f,0x61,0x6c, +0x3d,2,0x61,0x3a,0x68,0x44,0x6e,0x17,0x6f,0x74,0x74,0x65,0x64,0x68,0x65,0x68, +0x4b,1,0x66,0x47,0x70,0x10,0x68,0x49,0x12,0x61,0x70,0x68,0x89,0x11,0x61,0x6d, +0x4c,0x12,0x61,0x64,0x68,0x4f,0x61,0x6e,0x62,0xa2,0x54,0x64,0xa2,0x70,0x65,0x31, +0x66,2,0x61,0x3e,0x65,0x4a,0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61, +0x74,0x68,0x35,0x15,0x72,0x73,0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,2, +0x66,0x3c,0x69,0x70,0x6c,1,0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25, +0x14,0x72,0x69,0x63,0x61,0x6e,2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3, +0x58,0x11,0x65,0x68,0xa3,0x56,0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1, +0x65,0x4a,0x75,0x10,0x72,0x1f,0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68, +0x62,0x61,0x72,0x72,0x65,0x65,0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61, +0x6c,0x2c,0x16,0x61,0x74,0x68,0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c, +0x72,0x3e,0x74,0x56,0x75,0x21,0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67, +0x21,0x28,0x1a,0x69,0x67,0x68,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a, +0x19,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40, +0x6a,0x56,0x6c,0x26,0x19,0x65,0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27, +0x24,0x19,0x75,0x61,0x6c,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69, +0x6e,0x63,0x61,0x75,0x73,0x69,0x6e,0x67,0x23,0,0x13,0x6e,0xc0,0xd0,0x73,0x49, +0x73,0x48,0x75,0x78,0x77,0x84,0x78,0x9c,0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73, +0x13,0x70,0x61,0x63,0x65,0x59,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79, +0x57,0x54,0x12,0x61,0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53, +0x15,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x21,1,0x6a,0x5d,0x6f,0x17,0x72,0x64,0x6a, +0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2, +0x50,0x71,0xa2,0x6e,0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61, +0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b, +0x6f,0x46,0x73,0x45,0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74, +0x6c,0x69,0x6e,0x65,0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10, +0x70,0x48,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e, +0x49,1,0x6f,0x3e,0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72, +0x69,0x63,0x4d,0x4a,0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69, +0x63,0x4b,0x10,0x75,0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b, +0x68,0x50,0x69,0x86,0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61, +0x74,0x6f,0x72,0x79,0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65, +0x34,0x6c,0x6d,0x79,0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77, +0x6c,0x65,0x74,0x74,0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18, +0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11, +0x65,0x70,1,0x61,0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78, +0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1, +0x66,0x43,0x69,0x15,0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x40,0x62,0x70,0x63, +0xa2,0x55,0x65,0xa2,0xdb,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,2,0x69,0x23, +0x6c,0x34,0x6d,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x24,0x17,0x70,0x68, +0x61,0x62,0x65,0x74,0x69,0x63,0x25,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,0x2d, +0x72,0x12,0x65,0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,0x6f, +0x6c,0x73,0x57,0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,0x68, +0x27,0x13,0x66,0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,0x69, +0x72,0x35,1,0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,0x6e, +0x74,0x62,0x72,0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,0x6c, +0x6a,0x61,0x70,0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x6b, +1,0x62,0x3a,0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x51, +0x18,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,0x6a, +0x6b,0x6c,0x30,0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,0x74, +0x75,0x61,0x74,0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,0x69, +0x73,0x69,0x1b,0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,0x35, +2,0x62,0x3e,0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,0x6f, +0x6e,0x37,0x70,0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,0x65, +0x72,0x73,1,0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,0x69, +0x63,0x27,0x11,0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,0x25, +0x22,0x14,0x63,0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x60,0x74,0xc1,0x91, +0x77,0x96,0x77,0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,0x73, +0x34,0x78,0x42,0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,0xa3, +0xae,0x6d,0xa3,0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,0x69, +0x58,0x6d,0x11,0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,0x1a, +0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,0x68, +0x23,2,0x61,0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,0x72, +0x10,0x61,0xa2,0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,0x68, +0x6f,0xa3,0xbc,0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,0xa3, +0x65,0x11,0x65,0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,0x7a, +0x69,0xa2,0xc0,0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,0x61, +0x48,0x69,1,0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,0xa3, +0xc5,0x10,0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,0x3e, +0x68,0x34,0x69,0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,0x61, +0x24,0x69,0x6d,0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,0x68, +0xa2,0x9e,0x12,0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,0x61, +0x6e,0x6f,0x14,0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,0x36, +0x65,0xa2,0x65,0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,0x32, +0x6d,0x38,0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,0x69, +0x24,0x6c,0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,0x74, +0xa3,0x9a,0x10,0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,0x10, +0x69,0xa3,0x99,1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,0x6c, +0x6f,0x67,0x75,2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,0x10, +0x65,0x89,0x12,0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,0x62, +0x10,0x75,0x68,0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,0x14, +0x6b,0x6e,0x6f,0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,0x63, +0x8b,0x71,0xc1,0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,0x72, +0x6f,0xa2,0x4c,0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,0xa3, +0x5f,0x69,0x2c,0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,0x94, +0x16,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,1, +0x64,0xa3,0x91,0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,0x68, +0x61,0x6d,0xa3,0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,2, +0x67,0x3a,0x72,0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,1, +0x64,0x26,0x6f,0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,0xa2, +0x98,0x16,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,0x71, +0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,0x61, +0x2a,0x72,0x10,0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,0x64, +0x61,0xa3,0x97,0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,0x72, +0xa2,0x6f,0x15,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,0xa3, +0x7e,0x14,0x72,0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,0x85, +0x11,0x6e,0x77,0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,0x3e, +0x6a,0x48,0x6f,0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,0x13, +0x6a,0x61,0x6e,0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,0x10, +0x6f,0xa3,0x5d,0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa2,0xf2,0x70,5,0x6c, +0x1e,0x6c,0x44,0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c, +0x61,0x76,0x69,0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,0x61, +0x7c,0x65,0xa2,0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,0x6e, +0x69,0x63,0x69,0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,0xa3, +0x5a,2,0x69,0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,2, +0x68,0x3e,0x6c,0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,0xa3, +0xa5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,0x90, +0x14,0x79,0x72,0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,0x36, +0x6b,0x56,0x73,0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70, +0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,0x2e, +0x6f,0xa2,0x57,0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,0x96, +0x12,0x73,0x68,0x75,0xa3,0x96,0x61,0x42,0x62,0x80,0x65,0x10,0x77,1,0x61,0xa3, +0xaa,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0x97,2,0x62,0x2e,0x6e,0x3c,0x72,0x10, +0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,0x64,0xa2,0xbb, +0x16,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4, +0x67,0x3c,0x6c,0x4e,0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2, +1,0x61,0x2a,0x68,0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64, +6,0x70,0x41,0x70,0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72, +0xa3,0xc2,0x11,0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69, +0x63,0xa3,0x59,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62, +0x69,0x61,0x6e,0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b, +0x69,0x63,0xa3,0x58,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72, +0x61,0x62,0x69,0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e, +0xa3,0x4c,0x14,0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12, +0x69,0x6b,0x69,0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79, +0x61,0x5f,0x10,0x68,0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12, +0x6e,0x79,0x61,0x85,0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0xd, +0x6b,0xc2,0x24,0x6b,0xa4,0x17,0x6c,0xa4,0xb2,0x6d,8,0x6f,0x46,0x6f,0x48,0x72, +0x74,0x74,0x80,0x75,0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d, +0x61,0x72,0x59,2,0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3, +0xa3,0x10,0x67,0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10, +0x6f,0xa3,0x95,0x11,0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e, +0x69,0xa3,0xa4,0x61,0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55, +6,0x6e,0x38,0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64, +0x38,0x69,0xa2,0x79,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12, +0x61,0x69,0x63,0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18, +0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c, +0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a, +0x61,0x6e,0x69,0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3, +0x64,0x78,0x65,0x94,0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13, +0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79, +0x70,0x68,0x73,0xa3,0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65, +0x26,0x66,0xa3,0xb5,0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74, +0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b, +0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a, +0x6e,0x34,0x6f,0x38,0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b, +0x11,0x72,0x65,0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x30,0x68,0x9a,0x69,0x11, +0x74,0x73,0xa3,0xbf,4,0x69,0x3c,0x6c,0x44,0x6e,0x48,0x74,0x56,0x79,0x13,0x61, +0x68,0x6c,0x69,0xa3,0x4f,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,0x69,0xa3,0x4f,1, +0x61,0x4d,0x6e,0x12,0x61,0x64,0x61,0x4b,0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19, +0x6f,0x72,0x68,0x69,0x72,0x61,0x67,0x61,0x6e,0x61,0x8d,4,0x61,0x40,0x69,0x52, +0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0x91,0x10,0x72, +0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,0x93,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61, +0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xbf,1,0x65,0x24,0x72,0x4f,0x10, +0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,0x69,0xa3,0x9d,4,0x61,0x5c,0x65,0x90, +0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,0x34,0x64,0x10,0x69,0xa2,0x6c,0x11,0x61, +0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,0x61,0x6e,0xa3,0x6b,2,0x6e,0x42,0x6f, +0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,0x51,0x69,0x24,0x6e,0x53,0x10,0x6e,0x53, +0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,0x11,0x70,0x63,0xa2,0x52,0x11,0x68,0x61, +0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,0x10,0x75,0xa3,0x83,0x10,0x62,0x80,0x10, +0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,0x65,0x11,0x61,0x72,1,0x61,0xa3,0x53, +0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,0x6e,0x69,0xa2,0x95,0x6a,2,0x61,0x30, +0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,1,0x6d,0x38,0x76,0x10,0x61,0xa2,0x4e, +0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,0x6f,0xa3,0xad,0x11,0x61,0x6e,0xa3,0x69, +6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,0x48,0x75,0x11,0x6e,0x67,0xa3,0x4c,0x11, +0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,0xa3,0x4b,0x70,0xa3,0xba,0x11,0x6b,0x74, +0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,0x72,0x61,0x48,0x13,0x67,0x61,0x6e,0x61, +0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,0xa2,0x11,0x61,0x6e,0xa3,0xa2,0x42,6, +0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,0xa3,0x4a,0x75,0x12,0x6e,0x6f,0x6f,0x77, +0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67, +0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,0x45,0x11,0x62,0x72,0x46,0x11,0x65,0x77, +0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,0x61,0x6c,0x5d,0x1c,0x70,0x65,0x72,0x69, +0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0x74,2,0x64,0x66,0x68,0x6a, +0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68, +0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0x7d,0x13,0x6c,0x61,0x76,0x69,0xa3, +0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,0x69,0x74,0x65,0x64,0x23,0x64,0xc1,0xd, +0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,0x65,0x82,0x6c,0x9a,0x6f,0xa2,0x46,0x72, +0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,0x72,1,0x6d,0x24,0x75,0x41,0x13,0x75, +0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,0x3f,0x13,0x72,0x61,0x74,0x69,0x3f,0x18, +0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xb3,0x10,0x6f,1,0x6b,0xa3, +0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,0x39,0x11,0x61,0x67,0x90,0x15,0x6f,0x6c, +0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,0x74,0x10,0x68,0x3a,0x11,0x69,0x63,0x3b, +1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,0x61,0x32,0x65,1,0x65,0x24,0x6b,0x3d, +0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,0x74,0x68,0x61,0xa3,0x89,4,0x65,0x46, +0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,0x70,0x6c,0xa2,0x87,0x13,0x6f,0x79,0x61, +0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,0x61,0x34,0x15,0x6e,0x61,0x67,0x61,0x72, +0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,1,0x61,0x36,0x76,0x16,0x65,0x73,0x61, +0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,0xa3,0xbe,0x11,0x67,0x72,0xa2,0xb2,0x10, +0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,0x67,0x3a,0x6c,0x72,0x74,0x11,0x68,0x69, +0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,0x79,2,0x64,0xa3,0x45,0x68,0xa3,0x46, +0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79, +0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,0x79,0x10,0x6d,0xa2,0xb9,0x12,0x61,0x69, +0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,0x73,0x61,0x6e,0xa3,0x88,0x61,0xa2,0xc9, +0x62,0xa4,0x2e,0x63,6,0x6f,0x52,0x6f,0x76,0x70,0x92,0x75,0xa2,0x41,0x79,1, +0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,0x73,0xa3,0x44,0x13,0x6c,0x6c,0x69,0x63, +0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa3,0xc1, +0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,0x10,0x74,0x2e,0x11,0x69,0x63,0x2f,0x12, +0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,0x10,0x74,0x7f,0x10,0x6e,0xa3,0xc1,0x16, +0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,0x65,0x61,0x32,0x68,0xa2,0x41,0x69,0x11, +0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,0x50,0x72,0x76,0x75,0x1d,0x63,0x61,0x73, +0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0x9f,0x10,0x6d,0xa3, +0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x72,0x69, +0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,0xa2,0x68,0x11,0x61,0x6e,0xa3,0x68,3, +0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,0x73,0xa3,0xbd,1,0x6b,0x26,0x6d,0xa3, +0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,0x2c,0x13,0x6f,0x6b,0x65,0x65,0x2d,0x16, +0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,0xbd,6,0x68,0x4a,0x68,0x48,0x6e,0x4e, +0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,0x74,0xa3,0x75,0x13,0x73,0x74,0x61,0x6e, +0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,0x61,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e, +0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x9c,1,0x61,0x3e, +0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,0x27,0x13,0x6e,0x69,0x61,0x6e,0x27,0x10, +0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,0x66,0x44,0x67,0x11,0x68,0x62,0xa3,0x9f, +0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,0x10,0x6d,0xa3,0xa7,0x11,0x61,0x6b,0xa3, +0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,0x72,0x66,0x75,1,0x67,0x30,0x68,1, +0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,0x8e,0x13,0x6e,0x65,0x73,0x65,0x8f,0x11, +0x69,0x73,0xa1,0x11,0x70,0x6f,0x2a,0x13,0x6d,0x6f,0x66,0x6f,0x2b,0x10,0x61,1, +0x68,0x2e,0x69,0x7c,0x12,0x6c,0x6c,0x65,0x7d,0xa2,0x41,0x11,0x6d,0x69,0xa3,0x41, +0x61,0x48,0x65,0x9c,0x68,1,0x61,0x2a,0x6b,0x10,0x73,0xa3,0xa8,0x15,0x69,0x6b, +0x73,0x75,0x6b,0x69,0xa3,0xa8,3,0x6c,0x3a,0x6d,0x48,0x73,0x54,0x74,1,0x61, +0x24,0x6b,0x9f,0x10,0x6b,0x9f,0x10,0x69,0x9c,0x13,0x6e,0x65,0x73,0x65,0x9d,0x10, +0x75,0xa2,0x82,0x10,0x6d,0xa3,0x82,0x10,0x73,0xa2,0x86,0x13,0x61,0x76,0x61,0x68, +0xa3,0x86,0x11,0x6e,0x67,0x28,0x12,0x61,0x6c,0x69,0x29,3,0x6c,0x42,0x6e,0x90, +0x74,0xa2,0x46,0x76,0x24,0x17,0x6f,0x77,0x65,0x6c,0x6a,0x61,0x6d,0x6f,0x25,0x22, +1,0x65,0x54,0x76,0x28,1,0x73,0x38,0x74,0x2a,0x17,0x73,0x79,0x6c,0x6c,0x61, +0x62,0x6c,0x65,0x2b,0x16,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x29,0x18,0x61,0x64, +0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x23,1,0x61,0x21,0x6f,0x1a,0x74,0x61,0x70, +0x70,0x6c,0x69,0x63,0x61,0x62,0x6c,0x65,0x21,0x26,0x1a,0x72,0x61,0x69,0x6c,0x69, +0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x27,1,0x6e,0x2c,0x79,0x22,0x11,0x65,0x73,0x23, +0x20,0x10,0x6f,0x21,1,0x6e,0x2c,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x10,0x6f, +0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11,0x65,0x73,0x23,0x24,0x13,0x61,0x79, +0x62,0x65,0x25,0x20,0x10,0x6f,0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11,0x65, +0x73,0x23,0x24,0x13,0x61,0x79,0x62,0x65,0x25,0x20,0x10,0x6f,0x21,0xb,0x72,0x39, +0x76,0xc,0x76,0x33,0x78,0x2a,0x7a,0x11,0x77,0x6a,0x43,0x10,0x78,0x21,0x72,0x28, +0x73,0x50,0x74,0x31,1,0x65,0x24,0x69,0x39,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c, +0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x39,1,0x6d,0x35,0x70,0x18,0x61, +0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x35,0x6c,0x1f,0x6c,0x3c,0x6f,0x4a,0x70, +1,0x70,0x37,0x72,0x14,0x65,0x70,0x65,0x6e,0x64,0x37,0x28,1,0x66,0x2b,0x76, +0x2c,0x10,0x74,0x2f,0x13,0x74,0x68,0x65,0x72,0x21,0x63,0x4c,0x65,0x64,0x67,1, +0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,0x74,0x65,0x72,0x7a,0x77,0x6a,0x41,0x10, +0x7a,0x41,2,0x6e,0x23,0x6f,0x24,0x72,0x25,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x23, +2,0x62,0x34,0x6d,0x4e,0x78,0x26,0x13,0x74,0x65,0x6e,0x64,0x27,0x3a,1,0x61, +0x24,0x67,0x3d,0x11,0x73,0x65,0x3a,0x12,0x67,0x61,0x7a,0x3d,0x3e,0x16,0x6f,0x64, +0x69,0x66,0x69,0x65,0x72,0x3f,9,0x6e,0x4a,0x6e,0x34,0x6f,0x44,0x73,0x60,0x75, +0x94,0x78,0x10,0x78,0x21,0x10,0x75,0x2a,0x14,0x6d,0x65,0x72,0x69,0x63,0x2b,1, +0x6c,0x2c,0x74,0x12,0x68,0x65,0x72,0x21,0x14,0x65,0x74,0x74,0x65,0x72,0x2d,3, +0x63,0x36,0x65,0x46,0x70,0x31,0x74,0x32,0x12,0x65,0x72,0x6d,0x33,0x3c,0x16,0x6f, +0x6e,0x74,0x69,0x6e,0x75,0x65,0x3d,0x2e,0x10,0x70,0x2f,0x10,0x70,0x34,0x12,0x70, +0x65,0x72,0x35,0x61,0x46,0x63,0x52,0x65,0x64,0x66,0x72,0x6c,2,0x65,0x2d,0x66, +0x3b,0x6f,0x28,0x12,0x77,0x65,0x72,0x29,0x10,0x74,0x22,0x12,0x65,0x72,0x6d,0x23, +1,0x6c,0x24,0x72,0x37,0x24,0x12,0x6f,0x73,0x65,0x25,0x10,0x78,0x38,0x13,0x74, +0x65,0x6e,0x64,0x39,0x10,0x6f,0x26,0x13,0x72,0x6d,0x61,0x74,0x27,0,0x10,0x6c, +0x88,0x72,0x40,0x72,0x36,0x73,0x5e,0x77,0x7a,0x78,0x8a,0x7a,0x11,0x77,0x6a,0x4b, +1,0x65,0x24,0x69,0x3b,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69, +0x63,0x61,0x74,0x6f,0x72,0x3b,1,0x69,0x24,0x71,0x3f,0x18,0x6e,0x67,0x6c,0x65, +0x71,0x75,0x6f,0x74,0x65,0x3f,0x17,0x73,0x65,0x67,0x73,0x70,0x61,0x63,0x65,0x4d, +0x10,0x78,0x21,0x6c,0x36,0x6d,0x3c,0x6e,0x76,0x6f,0x13,0x74,0x68,0x65,0x72,0x21, +1,0x65,0x23,0x66,0x35,3,0x62,0x37,0x69,0x28,0x6c,0x29,0x6e,0x2b,0x10,0x64, +1,0x6c,0x34,0x6e,0x11,0x75,0x6d,0x2a,0x12,0x6c,0x65,0x74,0x37,0x14,0x65,0x74, +0x74,0x65,0x72,0x29,2,0x65,0x36,0x6c,0x39,0x75,0x2c,0x14,0x6d,0x65,0x72,0x69, +0x63,0x2d,0x14,0x77,0x6c,0x69,0x6e,0x65,0x39,0x66,0x3f,0x66,0x40,0x67,0x4e,0x68, +0x70,0x6b,0x10,0x61,0x26,0x15,0x74,0x61,0x6b,0x61,0x6e,0x61,0x27,0x10,0x6f,0x24, +0x13,0x72,0x6d,0x61,0x74,0x25,1,0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,0x74, +0x65,0x72,0x7a,0x77,0x6a,0x49,0x10,0x7a,0x49,1,0x65,0x24,0x6c,0x3d,0x19,0x62, +0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,0x61,0x86,0x63,0x92,0x64,0x94, +0x65,2,0x62,0x44,0x6d,0x5e,0x78,0x2e,0x13,0x74,0x65,0x6e,0x64,0x32,0x15,0x6e, +0x75,0x6d,0x6c,0x65,0x74,0x2f,0x42,1,0x61,0x24,0x67,0x45,0x11,0x73,0x65,0x42, +0x12,0x67,0x61,0x7a,0x45,0x46,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x47,0x15, +0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x10,0x72,0x31,1,0x6f,0x24,0x71,0x41,0x18, +0x75,0x62,0x6c,0x65,0x71,0x75,0x6f,0x74,0x65,0x41,2,0x63,0x32,0x6e,0x3c,0x6f, +0x22,0x12,0x70,0x65,0x6e,0x23,0x24,0x13,0x6c,0x6f,0x73,0x65,0x25,0x20,0x12,0x6f, +0x6e,0x65,0x21,6,0x6f,0x65,0x6f,0x4a,0x72,0x5c,0x74,0x64,0x76,0x1d,0x69,0x73, +0x75,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x6c,0x65,0x66,0x74,0x3d,0x18,0x76,0x65, +0x72,0x73,0x74,0x72,0x75,0x63,0x6b,0x2d,0x13,0x69,0x67,0x68,0x74,0x2f,0x11,0x6f, +0x70,0x30,0x12,0x61,0x6e,0x64,2,0x62,0x32,0x6c,0x62,0x72,0x13,0x69,0x67,0x68, +0x74,0x3b,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x32,0x12,0x61,0x6e,0x64,1,0x6c,0x2e, +0x72,0x13,0x69,0x67,0x68,0x74,0x35,0x12,0x65,0x66,0x74,0x3f,0x12,0x65,0x66,0x74, +0x36,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,0x39,0x62,0x2c,0x6c,0x5c,0x6e, +0x10,0x61,0x21,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x22,0x12,0x61,0x6e,0x64,1,0x6c, +0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x27,0x12,0x65,0x66,0x74,0x25,0x12,0x65,0x66, +0x74,0x28,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,0x2b,0xd,0x6e,0xaa,0x72, +0x70,0x72,0x92,0x73,0xa2,0x46,0x74,0xa2,0x54,0x76,1,0x69,0x60,0x6f,0x12,0x77, +0x65,0x6c,0x62,1,0x64,0x3a,0x69,0x19,0x6e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65, +0x6e,0x74,0x67,0x17,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x65,1,0x72,0x2e, +0x73,0x13,0x61,0x72,0x67,0x61,0x61,0x12,0x61,0x6d,0x61,0x5f,0x1d,0x65,0x67,0x69, +0x73,0x74,0x65,0x72,0x73,0x68,0x69,0x66,0x74,0x65,0x72,0x57,0x1e,0x79,0x6c,0x6c, +0x61,0x62,0x6c,0x65,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x59,0x12,0x6f,0x6e, +0x65,1,0x6c,0x2c,0x6d,0x12,0x61,0x72,0x6b,0x5d,0x14,0x65,0x74,0x74,0x65,0x72, +0x5b,0x6e,0x3c,0x6f,0x7c,0x70,0x18,0x75,0x72,0x65,0x6b,0x69,0x6c,0x6c,0x65,0x72, +0x55,1,0x6f,0x4c,0x75,1,0x6b,0x3c,0x6d,0x12,0x62,0x65,0x72,0x50,0x15,0x6a, +0x6f,0x69,0x6e,0x65,0x72,0x53,0x11,0x74,0x61,0x4f,0x16,0x6e,0x6a,0x6f,0x69,0x6e, +0x65,0x72,0x4d,0x13,0x74,0x68,0x65,0x72,0x21,0x67,0x3e,0x67,0x4a,0x69,0x64,0x6a, +0x82,0x6d,0x1d,0x6f,0x64,0x69,0x66,0x79,0x69,0x6e,0x67,0x6c,0x65,0x74,0x74,0x65, +0x72,0x4b,0x1c,0x65,0x6d,0x69,0x6e,0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b, +0x45,0x1e,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x73,0x74,0x61,0x63,0x6b,0x65, +0x72,0x47,0x14,0x6f,0x69,0x6e,0x65,0x72,0x49,0x61,0xa2,0xba,0x62,0xa2,0xc0,0x63, +1,0x61,0xa2,0xa2,0x6f,0x16,0x6e,0x73,0x6f,0x6e,0x61,0x6e,0x74,0x2a,8,0x6b, +0x67,0x6b,0x48,0x6d,0x52,0x70,0x5c,0x73,0xa2,0x42,0x77,0x19,0x69,0x74,0x68,0x73, +0x74,0x61,0x63,0x6b,0x65,0x72,0x43,0x14,0x69,0x6c,0x6c,0x65,0x72,0x35,0x14,0x65, +0x64,0x69,0x61,0x6c,0x37,1,0x6c,0x52,0x72,0x10,0x65,1,0x63,0x2e,0x66,0x13, +0x69,0x78,0x65,0x64,0x3d,0x19,0x65,0x64,0x69,0x6e,0x67,0x72,0x65,0x70,0x68,0x61, +0x3b,0x18,0x61,0x63,0x65,0x68,0x6f,0x6c,0x64,0x65,0x72,0x39,0x10,0x75,1,0x62, +0x3e,0x63,0x1b,0x63,0x65,0x65,0x64,0x69,0x6e,0x67,0x72,0x65,0x70,0x68,0x61,0x41, +0x15,0x6a,0x6f,0x69,0x6e,0x65,0x64,0x3f,0x64,0x4c,0x66,0x52,0x68,0x5a,0x69,0x1e, +0x6e,0x69,0x74,0x69,0x61,0x6c,0x70,0x6f,0x73,0x74,0x66,0x69,0x78,0x65,0x64,0x33, +0x12,0x65,0x61,0x64,0x2d,0x13,0x69,0x6e,0x61,0x6c,0x2f,0x18,0x65,0x61,0x64,0x6c, +0x65,0x74,0x74,0x65,0x72,0x31,0x1d,0x6e,0x74,0x69,0x6c,0x6c,0x61,0x74,0x69,0x6f, +0x6e,0x6d,0x61,0x72,0x6b,0x29,0x16,0x76,0x61,0x67,0x72,0x61,0x68,0x61,0x23,1, +0x69,0x4a,0x72,0x10,0x61,0x1f,0x68,0x6d,0x69,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67, +0x6e,0x75,0x6d,0x62,0x65,0x72,0x27,0x12,0x6e,0x64,0x75,0x25,2,0x72,0x38,0x74, +0x46,0x75,0x26,0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x27,0x20,0x15,0x6f,0x74,0x61, +0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,0x25,0x22,0x18,0x61,0x6e,0x73,0x66,0x6f, +0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x25, +0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c, +0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,0x70,0,2,0x6c,0xd9,0x20,0,0x70, +0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,0,0,0,7,0x6f,0x3c,0x6f,0xff, +8,0,0,0,0x70,0x3a,0x75,0x6e,0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf, +0,0,0,0x11,0x61,0x63,1,0x65,0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72, +0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16, +0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,0,0,0x63,0xff,2,0,0,0, +0x65,0x38,0x6b,0xff,4,0,0,0,0x6d,0xff,1,0,0,0,0x16,0x70, +0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61, +0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65, +0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73, +0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8, +0,0,9,0x69,0x33,0x69,0xff,0x10,0,0,0,0x6f,0xfd,0x80,0,0, +0x72,0x54,0x73,0xf9,0,0,0x75,0x12,0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0, +0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x30,0xf8,0,0,0x17,0x69,0x76,0x61, +0x74,0x65,0x75,0x73,0x65,0xdd,0,0,0x61,0x48,0x63,0xfd,0x40,0,0,0x64, +0xe9,0,0,0x65,0xfd,0x20,0,0,0x66,0xff,0x20,0,0,0,0x1f,0x72, +0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9, +0x40,0,0xbe,0,3,0x64,0xa7,0,0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d, +0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67, +0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1, +3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8, +0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72, +0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0, +0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9, +0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4, +0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69, +0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4, +0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68, +0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,0,0,0,0x10,0x6b,0xa5,0xc0,1, +0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70, +0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x20,0,0,0,0x10, +0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69, +0x6f,0x6e,0xff,0x10,0,0,0,0x9c,7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74, +0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74, +0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72, +0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70, +0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b, +0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80, +1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,0x73,0xe1,0,0,0x75,0x1b,0x72,0x72, +0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,2,0,0,0,0x22, +0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,0,0,1,0x6d,0x62,0x6e,1,0x6e, +0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70, +0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62, +0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80, +0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75, +0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74, +0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0, +0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0, +0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,0x72,0xa7,0 }; -const char PropNameData::nameGroups[22098]={ +const char PropNameData::nameGroups[22855]={ 2,'A','l','p','h','a',0,'A','l','p','h','a','b','e','t','i','c',0, 4,'N',0,'N','o',0,'F',0,'F','a','l','s','e',0,4,'Y',0,'Y','e','s',0,'T',0,'T','r','u','e',0, 2,'N','R',0,'N','o','t','_','R','e','o','r','d','e','r','e','d',0, @@ -1138,8 +1159,18 @@ const char PropNameData::nameGroups[22098]={ 2,'R','I',0,'R','e','g','i','o','n','a','l','_','I','n','d','i','c','a','t','o','r',0, 2,'P','C','M',0,'P','r','e','p','e','n','d','e','d','_','C','o','n','c','a','t','e','n','a','t','i','o','n','_','M','a','r', 'k',0,2,'E','x','t','P','i','c','t',0,'E','x','t','e','n','d','e','d','_','P','i','c','t','o','g','r','a','p','h','i','c', -0,2,'b','c',0,'B','i','d','i','_','C','l','a','s','s',0, -2,'L',0,'L','e','f','t','_','T','o','_','R','i','g','h','t',0, +0,2,'B','a','s','i','c','_','E','m','o','j','i',0,'B','a','s','i','c','_','E','m','o','j','i',0, +2,'E','m','o','j','i','_','K','e','y','c','a','p','_','S','e','q','u','e','n','c','e',0,'E','m','o','j','i','_','K','e','y', +'c','a','p','_','S','e','q','u','e','n','c','e',0,2,'R','G','I','_','E','m','o','j','i','_','M','o','d','i','f','i','e','r', +'_','S','e','q','u','e','n','c','e',0,'R','G','I','_','E','m','o','j','i','_','M','o','d','i','f','i','e','r','_','S','e','q', +'u','e','n','c','e',0,2,'R','G','I','_','E','m','o','j','i','_','F','l','a','g','_','S','e','q','u','e','n','c','e',0, +'R','G','I','_','E','m','o','j','i','_','F','l','a','g','_','S','e','q','u','e','n','c','e',0, +2,'R','G','I','_','E','m','o','j','i','_','T','a','g','_','S','e','q','u','e','n','c','e',0, +'R','G','I','_','E','m','o','j','i','_','T','a','g','_','S','e','q','u','e','n','c','e',0, +2,'R','G','I','_','E','m','o','j','i','_','Z','W','J','_','S','e','q','u','e','n','c','e',0, +'R','G','I','_','E','m','o','j','i','_','Z','W','J','_','S','e','q','u','e','n','c','e',0, +2,'R','G','I','_','E','m','o','j','i',0,'R','G','I','_','E','m','o','j','i',0, +2,'b','c',0,'B','i','d','i','_','C','l','a','s','s',0,2,'L',0,'L','e','f','t','_','T','o','_','R','i','g','h','t',0, 2,'R',0,'R','i','g','h','t','_','T','o','_','L','e','f','t',0, 2,'E','N',0,'E','u','r','o','p','e','a','n','_','N','u','m','b','e','r',0, 2,'E','S',0,'E','u','r','o','p','e','a','n','_','S','e','p','a','r','a','t','o','r',0, @@ -1509,9 +1540,22 @@ const char PropNameData::nameGroups[22098]={ 'n','t',0,2,'S','y','m','b','o','l','s','_','F','o','r','_','L','e','g','a','c','y','_','C','o','m','p','u','t','i','n','g', 0,'S','y','m','b','o','l','s','_','F','o','r','_','L','e','g','a','c','y','_','C','o','m','p','u','t','i','n','g',0, 2,'T','a','n','g','u','t','_','S','u','p',0,'T','a','n','g','u','t','_','S','u','p','p','l','e','m','e','n','t',0, -2,'Y','e','z','i','d','i',0,'Y','e','z','i','d','i',0,2,'c','c','c',0,'C','a','n','o','n','i','c','a','l','_','C','o', -'m','b','i','n','i','n','g','_','C','l','a','s','s',0,2,'d','t',0,'D','e','c','o','m','p','o','s','i','t','i','o','n','_', -'T','y','p','e',0,3,'N','o','n','e',0,'N','o','n','e',0,'n','o','n','e',0, +2,'Y','e','z','i','d','i',0,'Y','e','z','i','d','i',0,2,'A','r','a','b','i','c','_','E','x','t','_','B',0, +'A','r','a','b','i','c','_','E','x','t','e','n','d','e','d','_','B',0, +2,'C','y','p','r','o','_','M','i','n','o','a','n',0,'C','y','p','r','o','_','M','i','n','o','a','n',0, +2,'E','t','h','i','o','p','i','c','_','E','x','t','_','B',0,'E','t','h','i','o','p','i','c','_','E','x','t','e','n','d','e', +'d','_','B',0,2,'K','a','n','a','_','E','x','t','_','B',0,'K','a','n','a','_','E','x','t','e','n','d','e','d','_','B',0, +2,'L','a','t','i','n','_','E','x','t','_','F',0,'L','a','t','i','n','_','E','x','t','e','n','d','e','d','_','F',0, +2,'L','a','t','i','n','_','E','x','t','_','G',0,'L','a','t','i','n','_','E','x','t','e','n','d','e','d','_','G',0, +2,'O','l','d','_','U','y','g','h','u','r',0,'O','l','d','_','U','y','g','h','u','r',0, +2,'T','a','n','g','s','a',0,'T','a','n','g','s','a',0,2,'T','o','t','o',0,'T','o','t','o',0, +2,'U','C','A','S','_','E','x','t','_','A',0,'U','n','i','f','i','e','d','_','C','a','n','a','d','i','a','n','_','A','b','o', +'r','i','g','i','n','a','l','_','S','y','l','l','a','b','i','c','s','_','E','x','t','e','n','d','e','d','_','A',0, +2,'V','i','t','h','k','u','q','i',0,'V','i','t','h','k','u','q','i',0, +2,'Z','n','a','m','e','n','n','y','_','M','u','s','i','c',0,'Z','n','a','m','e','n','n','y','_','M','u','s','i','c','a','l', +'_','N','o','t','a','t','i','o','n',0,2,'c','c','c',0,'C','a','n','o','n','i','c','a','l','_','C','o','m','b','i','n','i', +'n','g','_','C','l','a','s','s',0,2,'d','t',0,'D','e','c','o','m','p','o','s','i','t','i','o','n','_','T','y','p','e',0, +3,'N','o','n','e',0,'N','o','n','e',0,'n','o','n','e',0, 3,'C','a','n',0,'C','a','n','o','n','i','c','a','l',0,'c','a','n',0, 3,'C','o','m',0,'C','o','m','p','a','t',0,'c','o','m',0, 3,'E','n','c',0,'C','i','r','c','l','e',0,'e','n','c',0, @@ -1644,7 +1688,9 @@ const char PropNameData::nameGroups[22098]={ 2,'H','a','n','i','f','i','_','R','o','h','i','n','g','y','a','_','K','i','n','n','a','_','Y','a',0, 'H','a','n','i','f','i','_','R','o','h','i','n','g','y','a','_','K','i','n','n','a','_','Y','a',0, 2,'H','a','n','i','f','i','_','R','o','h','i','n','g','y','a','_','P','a',0,'H','a','n','i','f','i','_','R','o','h','i','n', -'g','y','a','_','P','a',0,2,'j','t',0,'J','o','i','n','i','n','g','_','T','y','p','e',0, +'g','y','a','_','P','a',0,2,'T','h','i','n','_','Y','e','h',0,'T','h','i','n','_','Y','e','h',0, +2,'V','e','r','t','i','c','a','l','_','T','a','i','l',0,'V','e','r','t','i','c','a','l','_','T','a','i','l',0, +2,'j','t',0,'J','o','i','n','i','n','g','_','T','y','p','e',0, 2,'U',0,'N','o','n','_','J','o','i','n','i','n','g',0,2,'C',0,'J','o','i','n','_','C','a','u','s','i','n','g',0, 2,'D',0,'D','u','a','l','_','J','o','i','n','i','n','g',0, 2,'L',0,'L','e','f','t','_','J','o','i','n','i','n','g',0, @@ -1795,8 +1841,11 @@ const char PropNameData::nameGroups[22098]={ 2,'W','c','h','o',0,'W','a','n','c','h','o',0,2,'C','h','r','s',0,'C','h','o','r','a','s','m','i','a','n',0, 2,'D','i','a','k',0,'D','i','v','e','s','_','A','k','u','r','u',0, 2,'K','i','t','s',0,'K','h','i','t','a','n','_','S','m','a','l','l','_','S','c','r','i','p','t',0, -2,'Y','e','z','i',0,'Y','e','z','i','d','i',0,2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l', -'e','_','T','y','p','e',0,2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0, +2,'Y','e','z','i',0,'Y','e','z','i','d','i',0,2,'C','p','m','n',0,'C','y','p','r','o','_','M','i','n','o','a','n',0, +2,'O','u','g','r',0,'O','l','d','_','U','y','g','h','u','r',0, +2,'T','n','s','a',0,'T','a','n','g','s','a',0,2,'V','i','t','h',0,'V','i','t','h','k','u','q','i',0, +2,'h','s','t',0,'H','a','n','g','u','l','_','S','y','l','l','a','b','l','e','_','T','y','p','e',0, +2,'N','A',0,'N','o','t','_','A','p','p','l','i','c','a','b','l','e',0, 2,'L',0,'L','e','a','d','i','n','g','_','J','a','m','o',0, 2,'V',0,'V','o','w','e','l','_','J','a','m','o',0,2,'T',0,'T','r','a','i','l','i','n','g','_','J','a','m','o',0, 2,'L','V',0,'L','V','_','S','y','l','l','a','b','l','e',0, diff --git a/deps/icu-small/source/common/punycode.cpp b/deps/icu-small/source/common/punycode.cpp index 94d32a66d7678d..4832938ff7eb51 100644 --- a/deps/icu-small/source/common/punycode.cpp +++ b/deps/icu-small/source/common/punycode.cpp @@ -468,7 +468,7 @@ u_strFromPunycode(const UChar *src, int32_t srcLength, } i+=digit*w; - /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt + /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt t=k-bias; if(tdefaultTZFileSize) { result = FALSE; } else { - /* Store the data from the files in seperate buffers and + /* Store the data from the files in separate buffers and * compare each byte to determine equality. */ if (tzInfo->defaultTZBuffer == NULL) { diff --git a/deps/icu-small/source/common/rbbi.cpp b/deps/icu-small/source/common/rbbi.cpp index b821ca44639369..f65177f232334d 100644 --- a/deps/icu-small/source/common/rbbi.cpp +++ b/deps/icu-small/source/common/rbbi.cpp @@ -262,7 +262,7 @@ RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) { fCharIter = &fSCharIter; if (that.fCharIter != NULL && that.fCharIter != &that.fSCharIter) { - // This is a little bit tricky - it will intially appear that + // This is a little bit tricky - it will initially appear that // this->fCharIter is adopted, even if that->fCharIter was // not adopted. That's ok. fCharIter = that.fCharIter->clone(); @@ -366,16 +366,16 @@ RuleBasedBreakIterator::clone() const { } /** - * Equality operator. Returns TRUE if both BreakIterators are of the + * Equality operator. Returns true if both BreakIterators are of the * same class, have the same behavior, and iterate over the same text. */ -UBool +bool RuleBasedBreakIterator::operator==(const BreakIterator& that) const { if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } if (this == &that) { - return TRUE; + return true; } // The base class BreakIterator carries no state that participates in equality, @@ -388,21 +388,21 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const { // The two break iterators are operating on different text, // or have a different iteration position. // Note that fText's position is always the same as the break iterator's position. - return FALSE; + return false; } if (!(fPosition == that2.fPosition && fRuleStatusIndex == that2.fRuleStatusIndex && fDone == that2.fDone)) { - return FALSE; + return false; } if (that2.fData == fData || (fData != NULL && that2.fData != NULL && *that2.fData == *fData)) { // The two break iterators are using the same rules. - return TRUE; + return true; } - return FALSE; + return false; } /** @@ -671,7 +671,7 @@ int32_t RuleBasedBreakIterator::preceding(int32_t offset) { } /** - * Returns true if the specfied position is a boundary position. As a side + * Returns true if the specified position is a boundary position. As a side * effect, leaves the iterator pointing to the first boundary position at * or after "offset". * @@ -1037,7 +1037,7 @@ int32_t RuleBasedBreakIterator::handleSafePrevious(int32_t fromPosition) { if (state == STOP_STATE) { // This is the normal exit from the lookup state machine. - // Transistion to state zero means we have found a safe point. + // Transition to state zero means we have found a safe point. break; } } @@ -1260,6 +1260,7 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c) { // first. fLanguageBreakEngines->insertElementAt(fUnhandledBreakEngine, 0, status); // If we can't insert it, or creation failed, get rid of it + U_ASSERT(!fLanguageBreakEngines->hasDeleter()); if (U_FAILURE(status)) { delete fUnhandledBreakEngine; fUnhandledBreakEngine = 0; diff --git a/deps/icu-small/source/common/rbbi_cache.cpp b/deps/icu-small/source/common/rbbi_cache.cpp index 44f19d86973d75..6bfe3feca495f6 100644 --- a/deps/icu-small/source/common/rbbi_cache.cpp +++ b/deps/icu-small/source/common/rbbi_cache.cpp @@ -74,7 +74,7 @@ UBool RuleBasedBreakIterator::DictionaryCache::following(int32_t fromPos, int32_ return TRUE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -114,7 +114,7 @@ UBool RuleBasedBreakIterator::DictionaryCache::preceding(int32_t fromPos, int32_ return TRUE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void RuleBasedBreakIterator::DictionaryCache::populateDictionary(int32_t startPos, int32_t endPos, @@ -163,7 +163,7 @@ void RuleBasedBreakIterator::DictionaryCache::populateDictionary(int32_t startPo // Ask the language object if there are any breaks. It will add them to the cache and // leave the text pointer on the other side of its range, ready to search for the next one. if (lbe != NULL) { - foundBreakCount += lbe->findBreaks(text, rangeStart, rangeEnd, fBreaks); + foundBreakCount += lbe->findBreaks(text, rangeStart, rangeEnd, fBreaks, status); } // Reload the loop variables for the next go-round @@ -201,7 +201,7 @@ void RuleBasedBreakIterator::DictionaryCache::populateDictionary(int32_t startPo /* - * BreakCache implemetation + * BreakCache implementation */ RuleBasedBreakIterator::BreakCache::BreakCache(RuleBasedBreakIterator *bi, UErrorCode &status) : @@ -386,7 +386,7 @@ UBool RuleBasedBreakIterator::BreakCache::populateNear(int32_t position, UErrorC // Add following position(s) to the cache. while (fBoundaries[fEndBufIdx] < position) { if (!populateFollowing()) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } fBufIdx = fEndBufIdx; // Set iterator position to the end of the buffer. diff --git a/deps/icu-small/source/common/rbbi_cache.h b/deps/icu-small/source/common/rbbi_cache.h index 8c1fa86e7d1aa1..597312e85c4536 100644 --- a/deps/icu-small/source/common/rbbi_cache.h +++ b/deps/icu-small/source/common/rbbi_cache.h @@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN * * The boundaries are stored in a simple ArrayList (vector), with the * assumption that they will be accessed sequentially. - */ + */ class RuleBasedBreakIterator::DictionaryCache: public UMemory { public: DictionaryCache(RuleBasedBreakIterator *bi, UErrorCode &status); @@ -55,7 +55,7 @@ class RuleBasedBreakIterator::DictionaryCache: public UMemory { RuleBasedBreakIterator *fBI; - + UVector32 fBreaks; // A vector containing the boundaries. int32_t fPositionInCache; // Index in fBreaks of last boundary returned by following() // or preceding(). Optimizes sequential access. diff --git a/deps/icu-small/source/common/rbbicst.pl b/deps/icu-small/source/common/rbbicst.pl index 29f575d7d09357..1a01386c7c101d 100755 --- a/deps/icu-small/source/common/rbbicst.pl +++ b/deps/icu-small/source/common/rbbicst.pl @@ -7,7 +7,7 @@ # and others. All rights reserved. #************************************************************************** # -# rbbicst Compile the RBBI rule paser state table data into initialized C data. +# rbbicst Compile the RBBI rule parser state table data into initialized C data. # Usage: # cd icu/source/common # perl rbbicst.pl < rbbirpt.txt > rbbirpt.h @@ -264,7 +264,7 @@ $n++; } print " \n"; - + # # Emit constants for char class names # @@ -272,8 +272,8 @@ print " static final short kRuleSet_$setName = $charClasses{$setName};\n"; } print "\n\n"; - - + + print " static class RBBIRuleTableElement { \n"; print " short fAction; \n"; print " short fCharClass; \n"; @@ -291,20 +291,20 @@ print " } \n"; print " }; \n"; print " \n"; - - + + print " static RBBIRuleTableElement[] gRuleParseStateTable = { \n "; - print " new RBBIRuleTableElement(doNOP, 0, 0,0, true, null ) // 0 \n"; #output the unused state 0. + print " new RBBIRuleTableElement(doNOP, 0, 0,0, true, null ) // 0 \n"; #output the unused state 0. for ($state=1; $state < $num_states; $state++) { print " , new RBBIRuleTableElement($state_func_name[$state],"; if ($state_literal_chars[$state] ne "") { $c = $state_literal_chars[$state]; - print("'$c', "); + print("'$c', "); }else { print " $charClasses{$state_char_class[$state]},"; } print " $states{$state_dest_state[$state]},"; - + # The push-state field is optional. If omitted, fill field with a zero, which flags # the state machine that there is no push state. if ($state_push_state[$state] eq "") { @@ -313,14 +313,14 @@ print " $states{$state_push_state[$state]},"; } print " $state_flag[$state], "; - + # if this is the first row of the table for this state, put out the state name. if ($stateNames[$state] ne "") { print " \"$stateNames[$state]\") "; } else { print " null ) "; } - + # Put out a comment showing the number (index) of this state row, print " // $state "; print "\n"; @@ -328,7 +328,7 @@ print " };\n"; print "}; \n"; - + } else { @@ -357,7 +357,7 @@ print "U_NAMESPACE_BEGIN\n"; # - # Emit the constants for indicies of Unicode Sets + # Emit the constants for indices of Unicode Sets # Define one constant for each of the character classes encountered. # At the same time, store the index corresponding to the set name back into hash. # @@ -382,7 +382,7 @@ print " rbbiLastAction};\n\n"; # - # Emit the struct definition for transtion table elements. + # Emit the struct definition for transition table elements. # print "//-------------------------------------------------------------------------------\n"; print "//\n"; @@ -454,3 +454,6 @@ print "U_NAMESPACE_END\n"; print "#endif\n"; } + + + diff --git a/deps/icu-small/source/common/rbbidata.cpp b/deps/icu-small/source/common/rbbidata.cpp index f78d9d06689178..6338ed3ed857d3 100644 --- a/deps/icu-small/source/common/rbbidata.cpp +++ b/deps/icu-small/source/common/rbbidata.cpp @@ -170,17 +170,17 @@ RBBIDataWrapper::~RBBIDataWrapper() { // should still be ==. // //----------------------------------------------------------------------------- -UBool RBBIDataWrapper::operator ==(const RBBIDataWrapper &other) const { +bool RBBIDataWrapper::operator ==(const RBBIDataWrapper &other) const { if (fHeader == other.fHeader) { - return TRUE; + return true; } if (fHeader->fLength != other.fHeader->fLength) { - return FALSE; + return false; } if (uprv_memcmp(fHeader, other.fHeader, fHeader->fLength) == 0) { - return TRUE; + return true; } - return FALSE; + return false; } int32_t RBBIDataWrapper::hashCode() { @@ -283,7 +283,7 @@ void RBBIDataWrapper::printData() { printTable("Forward State Transition Table", fForwardTable); printTable("Reverse State Transition Table", fReverseTable); - RBBIDebugPrintf("\nOrignal Rules source:\n"); + RBBIDebugPrintf("\nOriginal Rules source:\n"); for (int32_t c=0; fRuleSource[c] != 0; c++) { RBBIDebugPrintf("%c", fRuleSource[c]); } @@ -345,7 +345,7 @@ ubrk_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *outD // const uint8_t *inBytes =(const uint8_t *)inData+headerSize; RBBIDataHeader *rbbiDH = (RBBIDataHeader *)inBytes; - if (ds->readUInt32(rbbiDH->fMagic) != 0xb1a0 || + if (ds->readUInt32(rbbiDH->fMagic) != 0xb1a0 || !RBBIDataWrapper::isDataVersionAcceptable(rbbiDH->fFormatVersion) || ds->readUInt32(rbbiDH->fLength) < sizeof(RBBIDataHeader)) { udata_printError(ds, "ubrk_swap(): RBBI Data header is invalid.\n"); diff --git a/deps/icu-small/source/common/rbbidata.h b/deps/icu-small/source/common/rbbidata.h index 5d725deba4c262..1bc76d5e5dc95f 100644 --- a/deps/icu-small/source/common/rbbidata.h +++ b/deps/icu-small/source/common/rbbidata.h @@ -61,8 +61,8 @@ U_NAMESPACE_BEGIN // The current RBBI data format version. static const uint8_t RBBI_DATA_FORMAT_VERSION[] = {6, 0, 0, 0}; -/* - * The following structs map exactly onto the raw data from ICU common data file. +/* + * The following structs map exactly onto the raw data from ICU common data file. */ struct RBBIDataHeader { uint32_t fMagic; /* == 0xbla0 */ @@ -171,7 +171,7 @@ class RBBIDataWrapper : public UMemory { void init(const RBBIDataHeader *data, UErrorCode &status); RBBIDataWrapper *addReference(); void removeReference(); - UBool operator ==(const RBBIDataWrapper &other) const; + bool operator ==(const RBBIDataWrapper &other) const; int32_t hashCode(); const UnicodeString &getRuleSourceString() const; void printData(); @@ -184,7 +184,7 @@ class RBBIDataWrapper : public UMemory { const RBBIStateTable *fForwardTable; const RBBIStateTable *fReverseTable; const char *fRuleSource; - const int32_t *fRuleStatusTable; + const int32_t *fRuleStatusTable; /* number of int32_t values in the rule status table. Used to sanity check indexing */ int32_t fStatusMaxIdx; diff --git a/deps/icu-small/source/common/rbbinode.cpp b/deps/icu-small/source/common/rbbinode.cpp index 2181d81acad2f2..27bcd8f8feb849 100644 --- a/deps/icu-small/source/common/rbbinode.cpp +++ b/deps/icu-small/source/common/rbbinode.cpp @@ -266,6 +266,7 @@ void RBBINode::findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &s if (U_FAILURE(status)) { return; } + U_ASSERT(!dest->hasDeleter()); if (fType == kind) { dest->addElement(this, status); } @@ -343,7 +344,7 @@ U_CFUNC void RBBI_DEBUG_printUnicodeString(const UnicodeString &s, int minWidth) void RBBINode::printNodeHeader() { RBBIDebugPrintf(" Address serial type LeftChild RightChild Parent position value\n"); } - + void RBBINode::printTree(const RBBINode *node, UBool printHeading) { if (printHeading) { printNodeHeader(); @@ -351,12 +352,12 @@ void RBBINode::printTree(const RBBINode *node, UBool printHeading) { printNode(node); if (node != NULL) { // Only dump the definition under a variable reference if asked to. - // Unconditinally dump children of all other node types. + // Unconditionally dump children of all other node types. if (node->fType != varRef) { if (node->fLeftChild != NULL) { printTree(node->fLeftChild, FALSE); } - + if (node->fRightChild != NULL) { printTree(node->fRightChild, FALSE); } diff --git a/deps/icu-small/source/common/rbbinode.h b/deps/icu-small/source/common/rbbinode.h index ef4e4ccac7f08e..4ed84d4e073fad 100644 --- a/deps/icu-small/source/common/rbbinode.h +++ b/deps/icu-small/source/common/rbbinode.h @@ -46,21 +46,21 @@ class RBBINode : public UMemory { opLParen }; - enum OpPrecedence { + enum OpPrecedence { precZero, precStart, precLParen, precOpOr, precOpCat }; - + NodeType fType; RBBINode *fParent; RBBINode *fLeftChild; RBBINode *fRightChild; UnicodeSet *fInputSet; // For uset nodes only. OpPrecedence fPrecedence; // For binary ops only. - + UnicodeString fText; // Text corresponding to this node. // May be lazily evaluated when (if) needed // for some node types. @@ -71,7 +71,7 @@ class RBBINode : public UMemory { int fLastPos; // Last position in the rule source string // of any text associated with this node. // If there's a right child, this will be the same - // as that child's last postion. + // as that child's last position. UBool fNullable; // See Aho. int32_t fVal; // For leafChar nodes, the value. @@ -94,7 +94,7 @@ class RBBINode : public UMemory { RBBINode(NodeType t); RBBINode(const RBBINode &other); ~RBBINode(); - + RBBINode *cloneTree(); RBBINode *flattenVariables(); void flattenSets(); @@ -108,7 +108,7 @@ class RBBINode : public UMemory { private: RBBINode &operator = (const RBBINode &other); // No defs. - UBool operator == (const RBBINode &other); // Private, so these functions won't accidently be used. + bool operator == (const RBBINode &other); // Private, so these functions won't accidentally be used. #ifdef RBBI_DEBUG public: @@ -117,10 +117,11 @@ class RBBINode : public UMemory { }; #ifdef RBBI_DEBUG -U_CFUNC void +U_CFUNC void RBBI_DEBUG_printUnicodeString(const UnicodeString &s, int minWidth=0); #endif U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/common/rbbirb.cpp b/deps/icu-small/source/common/rbbirb.cpp index 09c8d3de7e6687..e5c250dfe4056f 100644 --- a/deps/icu-small/source/common/rbbirb.cpp +++ b/deps/icu-small/source/common/rbbirb.cpp @@ -268,7 +268,7 @@ RBBIRuleBuilder::createRuleBasedBreakIterator( const UnicodeString &rules, if (U_FAILURE(status)) { delete This; This = NULL; - } + } else if(This == NULL) { // test for NULL status = U_MEMORY_ALLOCATION_ERROR; } diff --git a/deps/icu-small/source/common/rbbirb.h b/deps/icu-small/source/common/rbbirb.h index 37992daabb0b14..11dbf343ece41b 100644 --- a/deps/icu-small/source/common/rbbirb.h +++ b/deps/icu-small/source/common/rbbirb.h @@ -73,10 +73,10 @@ class RBBISymbolTable : public UMemory, public SymbolTable { public: // API inherited from class SymbolTable - virtual const UnicodeString* lookup(const UnicodeString& s) const; - virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const; + virtual const UnicodeString* lookup(const UnicodeString& s) const override; + virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const override; virtual UnicodeString parseReference(const UnicodeString& text, - ParsePosition& pos, int32_t limit) const; + ParsePosition& pos, int32_t limit) const override; // Additional Functions RBBISymbolTable(RBBIRuleScanner *, const UnicodeString &fRules, UErrorCode &status); @@ -91,7 +91,7 @@ class RBBISymbolTable : public UMemory, public SymbolTable { // A do-nothing inline function for non-debug builds. Member funcs can't be empty // or the call sites won't compile. int32_t fFakeField; - #define rbbiSymtablePrint() fFakeField=0; + #define rbbiSymtablePrint() fFakeField=0; #endif private: @@ -223,7 +223,7 @@ typedef std::pair IntPair; #define RBBIDebugPrintf printf #define RBBIDebugPuts puts #else -#undef RBBIDebugPrintf +#undef RBBIDebugPrintf #define RBBIDebugPuts(arg) #endif @@ -232,3 +232,6 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ #endif + + + diff --git a/deps/icu-small/source/common/rbbirpt.h b/deps/icu-small/source/common/rbbirpt.h index b94c4c25cbfb8c..586953c90c6fa4 100644 --- a/deps/icu-small/source/common/rbbirpt.h +++ b/deps/icu-small/source/common/rbbirpt.h @@ -8,8 +8,8 @@ // It is generated by the Perl script "rbbicst.pl" from // the rule parser state definitions file "rbbirpt.txt". // -// Copyright (C) 2002-2016 International Business Machines Corporation -// and others. All rights reserved. +// Copyright (C) 2002-2016 International Business Machines Corporation +// and others. All rights reserved. // //--------------------------------------------------------------------------------- #ifndef RBBIRPT_H @@ -81,107 +81,107 @@ struct RBBIRuleTableEl { static const struct RBBIRuleTableEl gRuleParseStateTable[] = { {doNOP, 0, 0, 0, TRUE} , {doExprStart, 254, 29, 9, FALSE} // 1 start - , {doNOP, 132, 1,0, TRUE} // 2 - , {doNoChain, 94 /* ^ */, 12, 9, TRUE} // 3 - , {doExprStart, 36 /* $ */, 88, 98, FALSE} // 4 - , {doNOP, 33 /* ! */, 19,0, TRUE} // 5 - , {doNOP, 59 /* ; */, 1,0, TRUE} // 6 - , {doNOP, 252, 0,0, FALSE} // 7 - , {doExprStart, 255, 29, 9, FALSE} // 8 + , {doNOP, 132, 1,0, TRUE} // 2 + , {doNoChain, 94 /* ^ */, 12, 9, TRUE} // 3 + , {doExprStart, 36 /* $ */, 88, 98, FALSE} // 4 + , {doNOP, 33 /* ! */, 19,0, TRUE} // 5 + , {doNOP, 59 /* ; */, 1,0, TRUE} // 6 + , {doNOP, 252, 0,0, FALSE} // 7 + , {doExprStart, 255, 29, 9, FALSE} // 8 , {doEndOfRule, 59 /* ; */, 1,0, TRUE} // 9 break-rule-end - , {doNOP, 132, 9,0, TRUE} // 10 - , {doRuleError, 255, 103,0, FALSE} // 11 + , {doNOP, 132, 9,0, TRUE} // 10 + , {doRuleError, 255, 103,0, FALSE} // 11 , {doExprStart, 254, 29,0, FALSE} // 12 start-after-caret - , {doNOP, 132, 12,0, TRUE} // 13 - , {doRuleError, 94 /* ^ */, 103,0, FALSE} // 14 - , {doExprStart, 36 /* $ */, 88, 37, FALSE} // 15 - , {doRuleError, 59 /* ; */, 103,0, FALSE} // 16 - , {doRuleError, 252, 103,0, FALSE} // 17 - , {doExprStart, 255, 29,0, FALSE} // 18 + , {doNOP, 132, 12,0, TRUE} // 13 + , {doRuleError, 94 /* ^ */, 103,0, FALSE} // 14 + , {doExprStart, 36 /* $ */, 88, 37, FALSE} // 15 + , {doRuleError, 59 /* ; */, 103,0, FALSE} // 16 + , {doRuleError, 252, 103,0, FALSE} // 17 + , {doExprStart, 255, 29,0, FALSE} // 18 , {doNOP, 33 /* ! */, 21,0, TRUE} // 19 rev-option - , {doReverseDir, 255, 28, 9, FALSE} // 20 + , {doReverseDir, 255, 28, 9, FALSE} // 20 , {doOptionStart, 130, 23,0, TRUE} // 21 option-scan1 - , {doRuleError, 255, 103,0, FALSE} // 22 + , {doRuleError, 255, 103,0, FALSE} // 22 , {doNOP, 129, 23,0, TRUE} // 23 option-scan2 - , {doOptionEnd, 255, 25,0, FALSE} // 24 + , {doOptionEnd, 255, 25,0, FALSE} // 24 , {doNOP, 59 /* ; */, 1,0, TRUE} // 25 option-scan3 - , {doNOP, 132, 25,0, TRUE} // 26 - , {doRuleError, 255, 103,0, FALSE} // 27 + , {doNOP, 132, 25,0, TRUE} // 26 + , {doRuleError, 255, 103,0, FALSE} // 27 , {doExprStart, 255, 29, 9, FALSE} // 28 reverse-rule , {doRuleChar, 254, 38,0, TRUE} // 29 term - , {doNOP, 132, 29,0, TRUE} // 30 - , {doRuleChar, 131, 38,0, TRUE} // 31 - , {doNOP, 91 /* [ */, 94, 38, FALSE} // 32 - , {doLParen, 40 /* ( */, 29, 38, TRUE} // 33 - , {doNOP, 36 /* $ */, 88, 37, FALSE} // 34 - , {doDotAny, 46 /* . */, 38,0, TRUE} // 35 - , {doRuleError, 255, 103,0, FALSE} // 36 + , {doNOP, 132, 29,0, TRUE} // 30 + , {doRuleChar, 131, 38,0, TRUE} // 31 + , {doNOP, 91 /* [ */, 94, 38, FALSE} // 32 + , {doLParen, 40 /* ( */, 29, 38, TRUE} // 33 + , {doNOP, 36 /* $ */, 88, 37, FALSE} // 34 + , {doDotAny, 46 /* . */, 38,0, TRUE} // 35 + , {doRuleError, 255, 103,0, FALSE} // 36 , {doCheckVarDef, 255, 38,0, FALSE} // 37 term-var-ref , {doNOP, 132, 38,0, TRUE} // 38 expr-mod - , {doUnaryOpStar, 42 /* * */, 43,0, TRUE} // 39 - , {doUnaryOpPlus, 43 /* + */, 43,0, TRUE} // 40 - , {doUnaryOpQuestion, 63 /* ? */, 43,0, TRUE} // 41 - , {doNOP, 255, 43,0, FALSE} // 42 + , {doUnaryOpStar, 42 /* * */, 43,0, TRUE} // 39 + , {doUnaryOpPlus, 43 /* + */, 43,0, TRUE} // 40 + , {doUnaryOpQuestion, 63 /* ? */, 43,0, TRUE} // 41 + , {doNOP, 255, 43,0, FALSE} // 42 , {doExprCatOperator, 254, 29,0, FALSE} // 43 expr-cont - , {doNOP, 132, 43,0, TRUE} // 44 - , {doExprCatOperator, 131, 29,0, FALSE} // 45 - , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 46 - , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 47 - , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 48 - , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 49 - , {doExprCatOperator, 47 /* / */, 55,0, FALSE} // 50 - , {doExprCatOperator, 123 /* { */, 67,0, TRUE} // 51 - , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 52 - , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 53 - , {doExprFinished, 255, 255,0, FALSE} // 54 + , {doNOP, 132, 43,0, TRUE} // 44 + , {doExprCatOperator, 131, 29,0, FALSE} // 45 + , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 46 + , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 47 + , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 48 + , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 49 + , {doExprCatOperator, 47 /* / */, 55,0, FALSE} // 50 + , {doExprCatOperator, 123 /* { */, 67,0, TRUE} // 51 + , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 52 + , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 53 + , {doExprFinished, 255, 255,0, FALSE} // 54 , {doSlash, 47 /* / */, 57,0, TRUE} // 55 look-ahead - , {doNOP, 255, 103,0, FALSE} // 56 + , {doNOP, 255, 103,0, FALSE} // 56 , {doExprCatOperator, 254, 29,0, FALSE} // 57 expr-cont-no-slash - , {doNOP, 132, 43,0, TRUE} // 58 - , {doExprCatOperator, 131, 29,0, FALSE} // 59 - , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 60 - , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 61 - , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 62 - , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 63 - , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 64 - , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 65 - , {doExprFinished, 255, 255,0, FALSE} // 66 + , {doNOP, 132, 43,0, TRUE} // 58 + , {doExprCatOperator, 131, 29,0, FALSE} // 59 + , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 60 + , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 61 + , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 62 + , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 63 + , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 64 + , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 65 + , {doExprFinished, 255, 255,0, FALSE} // 66 , {doNOP, 132, 67,0, TRUE} // 67 tag-open - , {doStartTagValue, 128, 70,0, FALSE} // 68 - , {doTagExpectedError, 255, 103,0, FALSE} // 69 + , {doStartTagValue, 128, 70,0, FALSE} // 68 + , {doTagExpectedError, 255, 103,0, FALSE} // 69 , {doNOP, 132, 74,0, TRUE} // 70 tag-value - , {doNOP, 125 /* } */, 74,0, FALSE} // 71 - , {doTagDigit, 128, 70,0, TRUE} // 72 - , {doTagExpectedError, 255, 103,0, FALSE} // 73 + , {doNOP, 125 /* } */, 74,0, FALSE} // 71 + , {doTagDigit, 128, 70,0, TRUE} // 72 + , {doTagExpectedError, 255, 103,0, FALSE} // 73 , {doNOP, 132, 74,0, TRUE} // 74 tag-close - , {doTagValue, 125 /* } */, 77,0, TRUE} // 75 - , {doTagExpectedError, 255, 103,0, FALSE} // 76 + , {doTagValue, 125 /* } */, 77,0, TRUE} // 75 + , {doTagExpectedError, 255, 103,0, FALSE} // 76 , {doExprCatOperator, 254, 29,0, FALSE} // 77 expr-cont-no-tag - , {doNOP, 132, 77,0, TRUE} // 78 - , {doExprCatOperator, 131, 29,0, FALSE} // 79 - , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 80 - , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 81 - , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 82 - , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 83 - , {doExprCatOperator, 47 /* / */, 55,0, FALSE} // 84 - , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 85 - , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 86 - , {doExprFinished, 255, 255,0, FALSE} // 87 + , {doNOP, 132, 77,0, TRUE} // 78 + , {doExprCatOperator, 131, 29,0, FALSE} // 79 + , {doExprCatOperator, 91 /* [ */, 29,0, FALSE} // 80 + , {doExprCatOperator, 40 /* ( */, 29,0, FALSE} // 81 + , {doExprCatOperator, 36 /* $ */, 29,0, FALSE} // 82 + , {doExprCatOperator, 46 /* . */, 29,0, FALSE} // 83 + , {doExprCatOperator, 47 /* / */, 55,0, FALSE} // 84 + , {doExprOrOperator, 124 /* | */, 29,0, TRUE} // 85 + , {doExprRParen, 41 /* ) */, 255,0, TRUE} // 86 + , {doExprFinished, 255, 255,0, FALSE} // 87 , {doStartVariableName, 36 /* $ */, 90,0, TRUE} // 88 scan-var-name - , {doNOP, 255, 103,0, FALSE} // 89 + , {doNOP, 255, 103,0, FALSE} // 89 , {doNOP, 130, 92,0, TRUE} // 90 scan-var-start - , {doVariableNameExpectedErr, 255, 103,0, FALSE} // 91 + , {doVariableNameExpectedErr, 255, 103,0, FALSE} // 91 , {doNOP, 129, 92,0, TRUE} // 92 scan-var-body - , {doEndVariableName, 255, 255,0, FALSE} // 93 + , {doEndVariableName, 255, 255,0, FALSE} // 93 , {doScanUnicodeSet, 91 /* [ */, 255,0, TRUE} // 94 scan-unicode-set - , {doScanUnicodeSet, 112 /* p */, 255,0, TRUE} // 95 - , {doScanUnicodeSet, 80 /* P */, 255,0, TRUE} // 96 - , {doNOP, 255, 103,0, FALSE} // 97 + , {doScanUnicodeSet, 112 /* p */, 255,0, TRUE} // 95 + , {doScanUnicodeSet, 80 /* P */, 255,0, TRUE} // 96 + , {doNOP, 255, 103,0, FALSE} // 97 , {doNOP, 132, 98,0, TRUE} // 98 assign-or-rule - , {doStartAssign, 61 /* = */, 29, 101, TRUE} // 99 - , {doNOP, 255, 37, 9, FALSE} // 100 + , {doStartAssign, 61 /* = */, 29, 101, TRUE} // 99 + , {doNOP, 255, 37, 9, FALSE} // 100 , {doEndAssign, 59 /* ; */, 1,0, TRUE} // 101 assign-end - , {doRuleErrorAssignExpr, 255, 103,0, FALSE} // 102 + , {doRuleErrorAssignExpr, 255, 103,0, FALSE} // 102 , {doExit, 255, 103,0, TRUE} // 103 errorDeath }; #ifdef RBBI_DEBUG diff --git a/deps/icu-small/source/common/rbbiscan.cpp b/deps/icu-small/source/common/rbbiscan.cpp index 7838475290b935..1304f7e37e6961 100644 --- a/deps/icu-small/source/common/rbbiscan.cpp +++ b/deps/icu-small/source/common/rbbiscan.cpp @@ -96,7 +96,7 @@ RBBIRuleScanner::RBBIRuleScanner(RBBIRuleBuilder *rb) fLineNum = 1; fCharNum = 0; fLastChar = 0; - + fStateTable = NULL; fStack[0] = 0; fStackPtr = 0; @@ -175,7 +175,7 @@ RBBIRuleScanner::~RBBIRuleScanner() { // Node Stack. // Normally has one entry, which is the entire parse tree for the rules. - // If errors occured, there may be additional subtrees left on the stack. + // If errors occurred, there may be additional subtrees left on the stack. while (fNodeStackPtr > 0) { delete fNodeStack[fNodeStackPtr]; fNodeStackPtr--; @@ -357,7 +357,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action) thisRule->fRuleRoot = TRUE; // Flag if chaining into this rule is wanted. - // + // if (fRB->fChainRules && // If rule chaining is enabled globally via !!chain !fNoChainInRule) { // and no '^' chain-in inhibit was on this rule thisRule->fChainIn = TRUE; @@ -375,7 +375,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action) RBBINode **destRules = (fReverseRule? &fRB->fSafeRevTree : fRB->fDefaultTree); if (*destRules != NULL) { - // This is not the first rule encounted. + // This is not the first rule encountered. // OR previous stuff (from *destRules) // with the current rule expression (on the Node Stack) // with the resulting OR expression going to *destRules @@ -1116,7 +1116,7 @@ void RBBIRuleScanner::parse() { if (U_FAILURE(*fRB->fStatus)) { return; } - + // If there are no forward rules set an error. // if (fRB->fForwardTree == NULL) { @@ -1223,7 +1223,7 @@ void RBBIRuleScanner::scanSet() { // TODO: Get more accurate position of the error from UnicodeSet's return info. // UnicodeSet appears to not be reporting correctly at this time. #ifdef RBBI_DEBUG - RBBIDebugPrintf("UnicodeSet parse postion.ErrorIndex = %d\n", pos.getIndex()); + RBBIDebugPrintf("UnicodeSet parse position.ErrorIndex = %d\n", pos.getIndex()); #endif error(localStatus); delete uset; @@ -1244,7 +1244,7 @@ void RBBIRuleScanner::scanSet() { } - // Advance the RBBI parse postion over the UnicodeSet pattern. + // Advance the RBBI parse position over the UnicodeSet pattern. // Don't just set fScanIndex because the line/char positions maintained // for error reporting would be thrown off. i = pos.getIndex(); @@ -1267,7 +1267,7 @@ void RBBIRuleScanner::scanSet() { fRB->fRules.extractBetween(n->fFirstPos, n->fLastPos, n->fText); // findSetFor() serves several purposes here: // - Adopts storage for the UnicodeSet, will be responsible for deleting. - // - Mantains collection of all sets in use, needed later for establishing + // - Maintains collection of all sets in use, needed later for establishing // character categories for run time engine. // - Eliminates mulitiple instances of the same set. // - Creates a new uset node if necessary (if this isn't a duplicate.) diff --git a/deps/icu-small/source/common/rbbiscan.h b/deps/icu-small/source/common/rbbiscan.h index f3f26214022f56..33fdf033546374 100644 --- a/deps/icu-small/source/common/rbbiscan.h +++ b/deps/icu-small/source/common/rbbiscan.h @@ -34,7 +34,7 @@ class RBBISymbolTable; //-------------------------------------------------------------------------------- // // class RBBIRuleScanner does the lowest level, character-at-a-time -// scanning of break iterator rules. +// scanning of break iterator rules. // // The output of the scanner is parse trees for // the rule expressions and a list of all Unicode Sets @@ -144,7 +144,7 @@ class RBBIRuleScanner : public UMemory { UnicodeSet fRuleSets[10]; // Unicode Sets that are needed during // the scanning of RBBI rules. The - // indicies for these are assigned by the + // indices for these are assigned by the // perl script that builds the state tables. // See rbbirpt.h. diff --git a/deps/icu-small/source/common/rbbisetb.cpp b/deps/icu-small/source/common/rbbisetb.cpp index 2904a3280eaab2..29faeb8c456d72 100644 --- a/deps/icu-small/source/common/rbbisetb.cpp +++ b/deps/icu-small/source/common/rbbisetb.cpp @@ -436,7 +436,7 @@ UBool RBBISetBuilder::sawBOF() const { //------------------------------------------------------------------------ // // getFirstChar Given a runtime RBBI character category, find -// the first UChar32 that is in the set of chars +// the first UChar32 that is in the set of chars // in the category. //------------------------------------------------------------------------ UChar32 RBBISetBuilder::getFirstChar(int32_t category) const { diff --git a/deps/icu-small/source/common/rbbistbl.cpp b/deps/icu-small/source/common/rbbistbl.cpp index d90992290c3e63..627ec1827cd4f9 100644 --- a/deps/icu-small/source/common/rbbistbl.cpp +++ b/deps/icu-small/source/common/rbbistbl.cpp @@ -45,7 +45,7 @@ RBBISymbolTable::RBBISymbolTable(RBBIRuleScanner *rs, const UnicodeString &rules { fHashTable = NULL; fCachedSetLookup = NULL; - + fHashTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, &status); // uhash_open checks status if (U_FAILURE(status)) { @@ -63,7 +63,7 @@ RBBISymbolTable::~RBBISymbolTable() // -// RBBISymbolTable::lookup This function from the abstract symbol table inteface +// RBBISymbolTable::lookup This function from the abstract symbol table interface // looks up a variable name and returns a UnicodeString // containing the substitution text. // diff --git a/deps/icu-small/source/common/rbbitblb.cpp b/deps/icu-small/source/common/rbbitblb.cpp index 4bc8097886929e..a495f17a8783ae 100644 --- a/deps/icu-small/source/common/rbbitblb.cpp +++ b/deps/icu-small/source/common/rbbitblb.cpp @@ -79,7 +79,7 @@ void RBBITableBuilder::buildForwardTable() { // // Walk through the tree, replacing any references to $variables with a copy of the - // parse tree for the substition expression. + // parse tree for the substitution expression. // fTree = fTree->flattenVariables(); #ifdef RBBI_DEBUG @@ -90,11 +90,11 @@ void RBBITableBuilder::buildForwardTable() { #endif // - // If the rules contained any references to {bof} + // If the rules contained any references to {bof} // add a {bof} to the - // tree. Means that all matches must start out with the + // tree. Means that all matches must start out with the // {bof} fake character. - // + // if (fRB->fSetBuilder->sawBOF()) { RBBINode *bofTop = new RBBINode(RBBINode::opCat); RBBINode *bofLeaf = new RBBINode(RBBINode::leafChar); @@ -390,6 +390,7 @@ void RBBITableBuilder::addRuleRootNodes(UVector *dest, RBBINode *node) { if (node == NULL || U_FAILURE(*fStatus)) { return; } + U_ASSERT(!dest->hasDeleter()); if (node->fRuleRoot) { dest->addElement(node, *fStatus); // Note: rules cannot nest. If we found a rule start node, @@ -420,9 +421,9 @@ void RBBITableBuilder::calcChainedFollowPos(RBBINode *tree, RBBINode *endMarkNod } // Collect all leaf nodes that can start matches for rules - // with inbound chaining enabled, which is the union of the + // with inbound chaining enabled, which is the union of the // firstPosition sets from each of the rule root nodes. - + UVector ruleRootNodes(*fStatus); addRuleRootNodes(&ruleRootNodes, tree); @@ -530,7 +531,7 @@ void RBBITableBuilder::bofFixup() { // (excluding the fake bofNode) // We want the nodes that can start a match in the // part labeled "rest of tree" - // + // UVector *matchStartNodes = fTree->fLeftChild->fRightChild->fFirstPosSet; RBBINode *startNode; @@ -546,7 +547,7 @@ void RBBITableBuilder::bofFixup() { // explicitly written into a rule. // Add everything from the followPos set of this node to the // followPos set of the fake bofNode at the start of the tree. - // + // setAdd(bofNode->fFollowPos, startNode->fFollowPos); } } @@ -567,7 +568,7 @@ void RBBITableBuilder::buildStateTable() { } RBBIStateDescriptor *failState; // Set it to NULL to avoid uninitialized warning - RBBIStateDescriptor *initialState = NULL; + RBBIStateDescriptor *initialState = NULL; // // Add a dummy state 0 - the stop state. Not from Aho. int lastInputSymbol = fRB->fSetBuilder->getNumCharCategories() - 1; @@ -644,8 +645,8 @@ void RBBITableBuilder::buildStateTable() { if (U == NULL) { U = new UVector(*fStatus); if (U == NULL) { - *fStatus = U_MEMORY_ALLOCATION_ERROR; - goto ExitBuildSTdeleteall; + *fStatus = U_MEMORY_ALLOCATION_ERROR; + goto ExitBuildSTdeleteall; } } setAdd(U, p->fFollowPos); @@ -675,7 +676,7 @@ void RBBITableBuilder::buildStateTable() { { RBBIStateDescriptor *newState = new RBBIStateDescriptor(lastInputSymbol, fStatus); if (newState == NULL) { - *fStatus = U_MEMORY_ALLOCATION_ERROR; + *fStatus = U_MEMORY_ALLOCATION_ERROR; } if (U_FAILURE(*fStatus)) { goto ExitBuildSTdeleteall; @@ -694,7 +695,7 @@ void RBBITableBuilder::buildStateTable() { } } return; - // delete local pointers only if error occured. + // delete local pointers only if error occurred. ExitBuildSTdeleteall: delete initialState; delete failState; @@ -1042,6 +1043,8 @@ void RBBITableBuilder::sortedAdd(UVector **vector, int32_t val) { // //----------------------------------------------------------------------------- void RBBITableBuilder::setAdd(UVector *dest, UVector *source) { + U_ASSERT(!dest->hasDeleter()); + U_ASSERT(!source->hasDeleter()); int32_t destOriginalSize = dest->size(); int32_t sourceSize = source->size(); int32_t di = 0; @@ -1070,6 +1073,9 @@ void RBBITableBuilder::setAdd(UVector *dest, UVector *source) { (void) source->toArray(sourcePtr); dest->setSize(sourceSize+destOriginalSize, *fStatus); + if (U_FAILURE(*fStatus)) { + return; + } while (sourcePtr < sourceLim && destPtr < destLim) { if (*destPtr == *sourcePtr) { @@ -1431,7 +1437,7 @@ void RBBITableBuilder::exportTable(void *where) { void RBBITableBuilder::buildSafeReverseTable(UErrorCode &status) { // The safe table creation has three steps: - // 1. Identifiy pairs of character classes that are "safe." Safe means that boundaries + // 1. Identify pairs of character classes that are "safe." Safe means that boundaries // following the pair do not depend on context or state before the pair. To test // whether a pair is safe, run it through the main forward state table, starting // from each state. If the the final state is the same, no matter what the starting state, @@ -1445,7 +1451,7 @@ void RBBITableBuilder::buildSafeReverseTable(UErrorCode &status) { // the first of a pair. In each of these rows, the entry for the second character // of a safe pair is set to the stop state (0), indicating that a match was found. // All other table entries are set to the state corresponding the current input - // character, allowing that charcter to be the of a start following pair. + // character, allowing that character to be the of a start following pair. // // Because the safe rules are to be run in reverse, moving backwards in the text, // the first and second pair categories are swapped when building the table. @@ -1490,16 +1496,25 @@ void RBBITableBuilder::buildSafeReverseTable(UErrorCode &status) { // The table as a whole is UVector // Each row is represented by a UnicodeString, being used as a Vector. // Row 0 is the stop state. - // Row 1 is the start sate. + // Row 1 is the start state. // Row 2 and beyond are other states, initially one per char class, but // after initial construction, many of the states will be combined, compacting the table. // The String holds the nextState data only. The four leading fields of a row, fAccepting, // fLookAhead, etc. are not needed for the safe table, and are omitted at this stage of building. U_ASSERT(fSafeTable == nullptr); - fSafeTable = new UVector(uprv_deleteUObject, uhash_compareUnicodeString, numCharClasses + 2, status); + LocalPointer lpSafeTable( + new UVector(uprv_deleteUObject, uhash_compareUnicodeString, numCharClasses + 2, status), status); + if (U_FAILURE(status)) { + return; + } + fSafeTable = lpSafeTable.orphan(); for (int32_t row=0; rowaddElement(new UnicodeString(numCharClasses, 0, numCharClasses+4), status); + LocalPointer lpString(new UnicodeString(numCharClasses, 0, numCharClasses+4), status); + fSafeTable->adoptElement(lpString.orphan(), status); + } + if (U_FAILURE(status)) { + return; } // From the start state, each input char class transitions to the state for that input. diff --git a/deps/icu-small/source/common/rbbitblb.h b/deps/icu-small/source/common/rbbitblb.h index fe3db8d7bf1ae8..38607a819ac1ef 100644 --- a/deps/icu-small/source/common/rbbitblb.h +++ b/deps/icu-small/source/common/rbbitblb.h @@ -69,12 +69,12 @@ class RBBITableBuilder : public UMemory { bool findDuplCharClassFrom(IntPair *categories); /** Remove a column from the state table. Used when two character categories - * have been found equivalent, and merged together, to eliminate the uneeded table column. + * have been found equivalent, and merged together, to eliminate the unneeded table column. */ void removeColumn(int32_t column); /** - * Check for, and remove dupicate states (table rows). + * Check for, and remove duplicate states (table rows). * @return the number of states removed. */ int32_t removeDuplicateStates(); diff --git a/deps/icu-small/source/common/resbund.cpp b/deps/icu-small/source/common/resbund.cpp index 5ec7541b4db636..47c0fe1c6edd13 100644 --- a/deps/icu-small/source/common/resbund.cpp +++ b/deps/icu-small/source/common/resbund.cpp @@ -135,7 +135,7 @@ U_NAMESPACE_BEGIN * so forth, until the chain is exhausted or the tag is found. * * Thread-safety is implemented around caches, both the cache that - * stores all the resouce data, and the cache that stores flags + * stores all the resource data, and the cache that stores flags * indicating whether or not a file has been visited. These caches * delete their storage at static cleanup time, when the process * quits. @@ -206,7 +206,7 @@ ResourceBundle::ResourceBundle(UResourceBundle *res, UErrorCode& err) } } -ResourceBundle::ResourceBundle(const char* path, const Locale& locale, UErrorCode& err) +ResourceBundle::ResourceBundle(const char* path, const Locale& locale, UErrorCode& err) :UObject(), fLocale(NULL) { fResource = ures_open(path, locale.getName(), &err); diff --git a/deps/icu-small/source/common/resbund_cnv.cpp b/deps/icu-small/source/common/resbund_cnv.cpp index ae854fe739cd32..45c0b399bfff45 100644 --- a/deps/icu-small/source/common/resbund_cnv.cpp +++ b/deps/icu-small/source/common/resbund_cnv.cpp @@ -39,7 +39,7 @@ ResourceBundle::ResourceBundle( const UnicodeString& path, constructForLocale(path, Locale::getDefault(), error); } -void +void ResourceBundle::constructForLocale(const UnicodeString& path, const Locale& locale, UErrorCode& error) diff --git a/deps/icu-small/source/common/ruleiter.h b/deps/icu-small/source/common/ruleiter.h index f397f8bccd7817..09af1297842974 100644 --- a/deps/icu-small/source/common/ruleiter.h +++ b/deps/icu-small/source/common/ruleiter.h @@ -39,7 +39,7 @@ class RuleCharacterIterator : public UMemory { private: /** * Text being iterated. - */ + */ const UnicodeString& text; /** @@ -51,7 +51,7 @@ class RuleCharacterIterator : public UMemory { * Symbol table used to parse and dereference variables. May be 0. */ const SymbolTable* sym; - + /** * Current variable expansion, or 0 if none. */ @@ -94,7 +94,7 @@ class RuleCharacterIterator : public UMemory { * position. * @param text the text to be iterated * @param sym the symbol table, or null if there is none. If sym is null, - * then variables will not be deferenced, even if the PARSE_VARIABLES + * then variables will not be dereferenced, even if the PARSE_VARIABLES * option is set. * @param pos upon input, the index of the next character to return. If a * variable has been dereferenced, then pos will not increment as @@ -102,7 +102,7 @@ class RuleCharacterIterator : public UMemory { */ RuleCharacterIterator(const UnicodeString& text, const SymbolTable* sym, ParsePosition& pos); - + /** * Returns true if this iterator has no more characters to return. */ @@ -207,7 +207,7 @@ class RuleCharacterIterator : public UMemory { * representation of this object */ // UnicodeString& toString(UnicodeString& result) const; - + private: /** * Returns the current 32-bit code point without parsing escapes, parsing @@ -215,7 +215,7 @@ class RuleCharacterIterator : public UMemory { * @return the current 32-bit code point */ UChar32 _current() const; - + /** * Advances the position by the given amount. * @param count the number of 16-bit code units to advance past diff --git a/deps/icu-small/source/common/schriter.cpp b/deps/icu-small/source/common/schriter.cpp index 17b68aee9d923a..83b3db4ab0a945 100644 --- a/deps/icu-small/source/common/schriter.cpp +++ b/deps/icu-small/source/common/schriter.cpp @@ -79,10 +79,10 @@ StringCharacterIterator::operator=(const StringCharacterIterator& that) { return *this; } -UBool +bool StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const { if (this == &that) { - return TRUE; + return true; } // do not call UCharCharacterIterator::operator==() @@ -90,7 +90,7 @@ StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const // while we compare UnicodeString objects if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } StringCharacterIterator& realThat = (StringCharacterIterator&)that; diff --git a/deps/icu-small/source/common/serv.cpp b/deps/icu-small/source/common/serv.cpp index 044864b859c7e8..0c54a4dce99225 100644 --- a/deps/icu-small/source/common/serv.cpp +++ b/deps/icu-small/source/common/serv.cpp @@ -8,6 +8,7 @@ */ #include "unicode/utypes.h" +#include "unicode/localpointer.h" #if !UCONFIG_NO_SERVICE @@ -26,60 +27,60 @@ U_NAMESPACE_BEGIN const UChar ICUServiceKey::PREFIX_DELIMITER = 0x002F; /* '/' */ -ICUServiceKey::ICUServiceKey(const UnicodeString& id) +ICUServiceKey::ICUServiceKey(const UnicodeString& id) : _id(id) { } -ICUServiceKey::~ICUServiceKey() +ICUServiceKey::~ICUServiceKey() { } -const UnicodeString& -ICUServiceKey::getID() const +const UnicodeString& +ICUServiceKey::getID() const { return _id; } -UnicodeString& -ICUServiceKey::canonicalID(UnicodeString& result) const +UnicodeString& +ICUServiceKey::canonicalID(UnicodeString& result) const { return result.append(_id); } -UnicodeString& -ICUServiceKey::currentID(UnicodeString& result) const +UnicodeString& +ICUServiceKey::currentID(UnicodeString& result) const { return canonicalID(result); } -UnicodeString& -ICUServiceKey::currentDescriptor(UnicodeString& result) const +UnicodeString& +ICUServiceKey::currentDescriptor(UnicodeString& result) const { prefix(result); result.append(PREFIX_DELIMITER); return currentID(result); } -UBool -ICUServiceKey::fallback() +UBool +ICUServiceKey::fallback() { return FALSE; } -UBool -ICUServiceKey::isFallbackOf(const UnicodeString& id) const +UBool +ICUServiceKey::isFallbackOf(const UnicodeString& id) const { return id == _id; } -UnicodeString& -ICUServiceKey::prefix(UnicodeString& result) const +UnicodeString& +ICUServiceKey::prefix(UnicodeString& result) const { return result; } -UnicodeString& -ICUServiceKey::parsePrefix(UnicodeString& result) +UnicodeString& +ICUServiceKey::parsePrefix(UnicodeString& result) { int32_t n = result.indexOf(PREFIX_DELIMITER); if (n < 0) { @@ -89,8 +90,8 @@ ICUServiceKey::parsePrefix(UnicodeString& result) return result; } -UnicodeString& -ICUServiceKey::parseSuffix(UnicodeString& result) +UnicodeString& +ICUServiceKey::parseSuffix(UnicodeString& result) { int32_t n = result.indexOf(PREFIX_DELIMITER); if (n >= 0) { @@ -100,8 +101,8 @@ ICUServiceKey::parseSuffix(UnicodeString& result) } #ifdef SERVICE_DEBUG -UnicodeString& -ICUServiceKey::debug(UnicodeString& result) const +UnicodeString& +ICUServiceKey::debug(UnicodeString& result) const { debugClass(result); result.append((UnicodeString)" id: "); @@ -109,8 +110,8 @@ ICUServiceKey::debug(UnicodeString& result) const return result; } -UnicodeString& -ICUServiceKey::debugClass(UnicodeString& result) const +UnicodeString& +ICUServiceKey::debugClass(UnicodeString& result) const { return result.append((UnicodeString)"ICUServiceKey"); } @@ -124,30 +125,30 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ICUServiceKey) ICUServiceFactory::~ICUServiceFactory() {} -SimpleFactory::SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible) +SimpleFactory::SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible) : _instance(instanceToAdopt), _id(id), _visible(visible) { } -SimpleFactory::~SimpleFactory() +SimpleFactory::~SimpleFactory() { delete _instance; } -UObject* -SimpleFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const +UObject* +SimpleFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const { if (U_SUCCESS(status)) { UnicodeString temp; if (_id == key.currentID(temp)) { - return service->cloneInstance(_instance); + return service->cloneInstance(_instance); } } return NULL; } -void -SimpleFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const +void +SimpleFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const { if (_visible) { result.put(_id, (void*)this, status); // cast away const @@ -156,8 +157,8 @@ SimpleFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const } } -UnicodeString& -SimpleFactory::getDisplayName(const UnicodeString& id, const Locale& /* locale */, UnicodeString& result) const +UnicodeString& +SimpleFactory::getDisplayName(const UnicodeString& id, const Locale& /* locale */, UnicodeString& result) const { if (_visible && _id == id) { result = _id; @@ -168,8 +169,8 @@ SimpleFactory::getDisplayName(const UnicodeString& id, const Locale& /* locale * } #ifdef SERVICE_DEBUG -UnicodeString& -SimpleFactory::debug(UnicodeString& toAppendTo) const +UnicodeString& +SimpleFactory::debug(UnicodeString& toAppendTo) const { debugClass(toAppendTo); toAppendTo.append((UnicodeString)" id: "); @@ -179,8 +180,8 @@ SimpleFactory::debug(UnicodeString& toAppendTo) const return toAppendTo; } -UnicodeString& -SimpleFactory::debugClass(UnicodeString& toAppendTo) const +UnicodeString& +SimpleFactory::debugClass(UnicodeString& toAppendTo) const { return toAppendTo.append((UnicodeString)"SimpleFactory"); } @@ -217,14 +218,14 @@ class CacheEntry : public UMemory { delete service; } - CacheEntry(const UnicodeString& _actualDescriptor, UObject* _service) + CacheEntry(const UnicodeString& _actualDescriptor, UObject* _service) : refcount(1), actualDescriptor(_actualDescriptor), service(_service) { } /** * Instantiation creates an initial reference, so don't call this * unless you're creating a new pointer to this. Management of - * that pointer will have to know how to deal with refcounts. + * that pointer will have to know how to deal with refcounts. * Return true if the resource has not already been released. */ CacheEntry* ref() { @@ -237,7 +238,7 @@ class CacheEntry : public UMemory { * you're removing pointer to this somewhere. Management of that * pointer will have to know how to deal with refcounts. Once * the refcount drops to zero, the resource is released. Return - * false if the resouce has been released. + * false if the resource has been released. */ CacheEntry* unref() { if ((--refcount) == 0) { @@ -256,20 +257,13 @@ class CacheEntry : public UMemory { } }; -// UObjectDeleter for serviceCache +// Deleter for serviceCache U_CDECL_BEGIN static void U_CALLCONV cacheDeleter(void* obj) { U_NAMESPACE_USE ((CacheEntry*)obj)->unref(); } -/** -* Deleter for UObjects -*/ -static void U_CALLCONV -deleteUObject(void *obj) { - U_NAMESPACE_USE delete (UObject*) obj; -} U_CDECL_END /* @@ -281,8 +275,8 @@ class DNCache : public UMemory { Hashtable cache; const Locale locale; - DNCache(const Locale& _locale) - : cache(), locale(_locale) + DNCache(const Locale& _locale) + : cache(), locale(_locale) { // cache.setKeyDeleter(uprv_deleteUObject); } @@ -293,8 +287,8 @@ class DNCache : public UMemory { ****************************************************************** */ -StringPair* -StringPair::create(const UnicodeString& displayName, +StringPair* +StringPair::create(const UnicodeString& displayName, const UnicodeString& id, UErrorCode& status) { @@ -310,12 +304,12 @@ StringPair::create(const UnicodeString& displayName, return NULL; } -UBool +UBool StringPair::isBogus() const { return displayName.isBogus() || id.isBogus(); } -StringPair::StringPair(const UnicodeString& _displayName, +StringPair::StringPair(const UnicodeString& _displayName, const UnicodeString& _id) : displayName(_displayName) , id(_id) @@ -345,7 +339,7 @@ ICUService::ICUService() { } -ICUService::ICUService(const UnicodeString& newName) +ICUService::ICUService(const UnicodeString& newName) : name(newName) , timestamp(0) , factories(NULL) @@ -365,14 +359,14 @@ ICUService::~ICUService() } } -UObject* -ICUService::get(const UnicodeString& descriptor, UErrorCode& status) const +UObject* +ICUService::get(const UnicodeString& descriptor, UErrorCode& status) const { return get(descriptor, NULL, status); } -UObject* -ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const +UObject* +ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const { UObject* result = NULL; ICUServiceKey* key = createKey(&descriptor, status); @@ -383,8 +377,8 @@ ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UE return result; } -UObject* -ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const +UObject* +ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const { return getKey(key, NULL, status); } @@ -392,8 +386,8 @@ ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const // this is a vector that subclasses of ICUService can override to further customize the result object // before returning it. All other public get functions should call this one. -UObject* -ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const +UObject* +ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const { return getKey(key, actualReturn, NULL, status); } @@ -403,9 +397,9 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& // reentrantly even without knowing the thread. class XMutex : public UMemory { public: - inline XMutex(UMutex *mutex, UBool reentering) + inline XMutex(UMutex *mutex, UBool reentering) : fMutex(mutex) - , fActive(!reentering) + , fActive(!reentering) { if (fActive) umtx_lock(fMutex); } @@ -418,15 +412,9 @@ class XMutex : public UMemory { UBool fActive; }; -struct UVectorDeleter { - UVector* _obj; - UVectorDeleter() : _obj(NULL) {} - ~UVectorDeleter() { delete _obj; } -}; - // called only by factories, treat as private -UObject* -ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUServiceFactory* factory, UErrorCode& status) const +UObject* +ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUServiceFactory* factory, UErrorCode& status) const { if (U_FAILURE(status)) { return NULL; @@ -440,10 +428,10 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer CacheEntry* result = NULL; { - // The factory list can't be modified until we're done, + // The factory list can't be modified until we're done, // otherwise we might update the cache with an invalid result. // The cache has to stay in synch with the factory list. - // ICU doesn't have monitors so we can't use rw locks, so + // ICU doesn't have monitors so we can't use rw locks, so // we single-thread everything using this service, for now. // if factory is not null, we're calling from within the mutex, @@ -454,6 +442,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer if (serviceCache == NULL) { ncthis->serviceCache = new Hashtable(status); if (ncthis->serviceCache == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; return NULL; } if (U_FAILURE(status)) { @@ -464,7 +453,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer } UnicodeString currentDescriptor; - UVectorDeleter cacheDescriptorList; + LocalPointer cacheDescriptorList; UBool putInCache = FALSE; int32_t startIndex = 0; @@ -495,48 +484,50 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer } // first test of cache failed, so we'll have to update - // the cache if we eventually succeed-- that is, if we're + // the cache if we eventually succeed-- that is, if we're // going to update the cache at all. putInCache = TRUE; int32_t index = startIndex; while (index < limit) { ICUServiceFactory* f = (ICUServiceFactory*)factories->elementAt(index++); - UObject* service = f->create(key, this, status); + LocalPointer service(f->create(key, this, status)); if (U_FAILURE(status)) { - delete service; return NULL; } - if (service != NULL) { - result = new CacheEntry(currentDescriptor, service); + if (service.isValid()) { + result = new CacheEntry(currentDescriptor, service.getAlias()); if (result == NULL) { - delete service; status = U_MEMORY_ALLOCATION_ERROR; return NULL; } + service.orphan(); // result now owns service. goto outerEnd; } } - // prepare to load the cache with all additional ids that + // prepare to load the cache with all additional ids that // will resolve to result, assuming we'll succeed. We // don't want to keep querying on an id that's going to // fallback to the one that succeeded, we want to hit the // cache the first time next goaround. - if (cacheDescriptorList._obj == NULL) { - cacheDescriptorList._obj = new UVector(uprv_deleteUObject, NULL, 5, status); + if (cacheDescriptorList.isNull()) { + cacheDescriptorList.adoptInsteadAndCheckErrorCode(new UVector(uprv_deleteUObject, NULL, 5, status), status); if (U_FAILURE(status)) { return NULL; } } - UnicodeString* idToCache = new UnicodeString(currentDescriptor); - if (idToCache == NULL || idToCache->isBogus()) { + + LocalPointer idToCache(new UnicodeString(currentDescriptor), status); + if (U_FAILURE(status)) { + return NULL; + } + if (idToCache->isBogus()) { status = U_MEMORY_ALLOCATION_ERROR; return NULL; } - - cacheDescriptorList._obj->addElement(idToCache, status); + cacheDescriptorList->adoptElement(idToCache.orphan(), status); if (U_FAILURE(status)) { return NULL; } @@ -550,9 +541,9 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer return NULL; } - if (cacheDescriptorList._obj != NULL) { - for (int32_t i = cacheDescriptorList._obj->size(); --i >= 0;) { - UnicodeString* desc = (UnicodeString*)cacheDescriptorList._obj->elementAt(i); + if (cacheDescriptorList.isValid()) { + for (int32_t i = cacheDescriptorList->size(); --i >= 0;) { + UnicodeString* desc = (UnicodeString*)cacheDescriptorList->elementAt(i); serviceCache->put(*desc, result, status); if (U_FAILURE(status)) { @@ -560,7 +551,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer } result->ref(); - cacheDescriptorList._obj->removeElementAt(i); + cacheDescriptorList->removeElementAt(i); } } } @@ -569,8 +560,8 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer // strip null prefix if (result->actualDescriptor.indexOf((UChar)0x2f) == 0) { // U+002f=slash (/) actualReturn->remove(); - actualReturn->append(result->actualDescriptor, - 1, + actualReturn->append(result->actualDescriptor, + 1, result->actualDescriptor.length() - 1); } else { *actualReturn = result->actualDescriptor; @@ -594,25 +585,26 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer return handleDefault(key, actualReturn, status); } -UObject* -ICUService::handleDefault(const ICUServiceKey& /* key */, UnicodeString* /* actualIDReturn */, UErrorCode& /* status */) const +UObject* +ICUService::handleDefault(const ICUServiceKey& /* key */, UnicodeString* /* actualIDReturn */, UErrorCode& /* status */) const { return NULL; } -UVector& +UVector& ICUService::getVisibleIDs(UVector& result, UErrorCode& status) const { return getVisibleIDs(result, NULL, status); } -UVector& -ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorCode& status) const +UVector& +ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorCode& status) const { result.removeAllElements(); if (U_FAILURE(status)) { return result; } + UObjectDeleter *savedDeleter = result.setDeleter(uprv_deleteUObject); { Mutex mutex(&lock); @@ -620,7 +612,7 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC if (map != NULL) { ICUServiceKey* fallbackKey = createKey(matchID, status); - for (int32_t pos = UHASH_FIRST;;) { + for (int32_t pos = UHASH_FIRST; U_SUCCESS(status); ) { const UHashElement* e = map->nextElement(pos); if (e == NULL) { break; @@ -633,17 +625,11 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC } } - UnicodeString* idClone = new UnicodeString(*id); - if (idClone == NULL || idClone->isBogus()) { - delete idClone; + LocalPointer idClone(new UnicodeString(*id), status); + if (U_SUCCESS(status) && idClone->isBogus()) { status = U_MEMORY_ALLOCATION_ERROR; - break; - } - result.addElement(idClone, status); - if (U_FAILURE(status)) { - delete idClone; - break; } + result.adoptElement(idClone.orphan(), status); } delete fallbackKey; } @@ -651,10 +637,11 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC if (U_FAILURE(status)) { result.removeAllElements(); } + result.setDeleter(savedDeleter); return result; } -const Hashtable* +const Hashtable* ICUService::getVisibleIDMap(UErrorCode& status) const { if (U_FAILURE(status)) return NULL; @@ -681,14 +668,14 @@ ICUService::getVisibleIDMap(UErrorCode& status) const { } -UnicodeString& -ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result) const +UnicodeString& +ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result) const { return getDisplayName(id, result, Locale::getDefault()); } -UnicodeString& -ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const Locale& locale) const +UnicodeString& +ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const Locale& locale) const { { UErrorCode status = U_ZERO_ERROR; @@ -721,24 +708,24 @@ ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const return result; } -UVector& -ICUService::getDisplayNames(UVector& result, UErrorCode& status) const +UVector& +ICUService::getDisplayNames(UVector& result, UErrorCode& status) const { return getDisplayNames(result, Locale::getDefault(), NULL, status); } -UVector& -ICUService::getDisplayNames(UVector& result, const Locale& locale, UErrorCode& status) const +UVector& +ICUService::getDisplayNames(UVector& result, const Locale& locale, UErrorCode& status) const { return getDisplayNames(result, locale, NULL, status); } -UVector& -ICUService::getDisplayNames(UVector& result, - const Locale& locale, - const UnicodeString* matchID, - UErrorCode& status) const +UVector& +ICUService::getDisplayNames(UVector& result, + const Locale& locale, + const UnicodeString* matchID, + UErrorCode& status) const { result.removeAllElements(); result.setDeleter(userv_deleteStringPair); @@ -756,7 +743,7 @@ ICUService::getDisplayNames(UVector& result, if (U_FAILURE(status)) { return result; } - ncthis->dnCache = new DNCache(locale); + ncthis->dnCache = new DNCache(locale); if (dnCache == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return result; @@ -789,7 +776,7 @@ ICUService::getDisplayNames(UVector& result, * nextElement(pos) will skip the position at pos and begin the iteration * at the next position, which in this case will be 0. */ - int32_t pos = UHASH_FIRST; + int32_t pos = UHASH_FIRST; const UHashElement *entry = NULL; while ((entry = dnCache->cache.nextElement(pos)) != NULL) { const UnicodeString* id = (const UnicodeString*)entry->value.pointer; @@ -798,7 +785,7 @@ ICUService::getDisplayNames(UVector& result, } const UnicodeString* dn = (const UnicodeString*)entry->key.pointer; StringPair* sp = StringPair::create(*id, *dn, status); - result.addElement(sp, status); + result.adoptElement(sp, status); if (U_FAILURE(status)) { result.removeAllElements(); break; @@ -810,13 +797,13 @@ ICUService::getDisplayNames(UVector& result, } URegistryKey -ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UErrorCode& status) +ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UErrorCode& status) { return registerInstance(objToAdopt, id, TRUE, status); } URegistryKey -ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status) +ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status) { ICUServiceKey* key = createKey(&id, status); if (key != NULL) { @@ -833,7 +820,7 @@ ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UBool return NULL; } -ICUServiceFactory* +ICUServiceFactory* ICUService::createSimpleFactory(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status) { if (U_SUCCESS(status)) { @@ -848,34 +835,36 @@ ICUService::createSimpleFactory(UObject* objToAdopt, const UnicodeString& id, UB URegistryKey ICUService::registerFactory(ICUServiceFactory* factoryToAdopt, UErrorCode& status) { - if (U_SUCCESS(status) && factoryToAdopt != NULL) { + LocalPointerlpFactoryToAdopt(factoryToAdopt); + if (U_FAILURE(status) || factoryToAdopt == nullptr) { + return nullptr; + } + { Mutex mutex(&lock); - if (factories == NULL) { - factories = new UVector(deleteUObject, NULL, status); + if (factories == nullptr) { + LocalPointer lpFactories(new UVector(uprv_deleteUObject, nullptr, status), status); if (U_FAILURE(status)) { - delete factories; - return NULL; + return nullptr; } + factories = lpFactories.orphan(); } - factories->insertElementAt(factoryToAdopt, 0, status); + factories->insertElementAt(lpFactoryToAdopt.orphan(), 0, status); if (U_SUCCESS(status)) { clearCaches(); - } else { - delete factoryToAdopt; - factoryToAdopt = NULL; } - } + } // Close of mutex lock block. - if (factoryToAdopt != NULL) { + if (U_SUCCESS(status)) { notifyChanged(); + return (URegistryKey)factoryToAdopt; + } else { + return nullptr; } - - return (URegistryKey)factoryToAdopt; } -UBool -ICUService::unregister(URegistryKey rkey, UErrorCode& status) +UBool +ICUService::unregister(URegistryKey rkey, UErrorCode& status) { ICUServiceFactory *factory = (ICUServiceFactory*)rkey; UBool result = FALSE; @@ -896,8 +885,8 @@ ICUService::unregister(URegistryKey rkey, UErrorCode& status) return result; } -void -ICUService::reset() +void +ICUService::reset() { { Mutex mutex(&lock); @@ -907,28 +896,28 @@ ICUService::reset() notifyChanged(); } -void -ICUService::reInitializeFactories() +void +ICUService::reInitializeFactories() { if (factories != NULL) { factories->removeAllElements(); } } -UBool -ICUService::isDefault() const +UBool +ICUService::isDefault() const { return countFactories() == 0; } -ICUServiceKey* -ICUService::createKey(const UnicodeString* id, UErrorCode& status) const +ICUServiceKey* +ICUService::createKey(const UnicodeString* id, UErrorCode& status) const { return (U_FAILURE(status) || id == NULL) ? NULL : new ICUServiceKey(*id); } -void -ICUService::clearCaches() +void +ICUService::clearCaches() { // callers synchronize before use ++timestamp; @@ -939,33 +928,33 @@ ICUService::clearCaches() delete serviceCache; serviceCache = NULL; } -void -ICUService::clearServiceCache() +void +ICUService::clearServiceCache() { // callers synchronize before use delete serviceCache; serviceCache = NULL; } -UBool -ICUService::acceptsListener(const EventListener& l) const +UBool +ICUService::acceptsListener(const EventListener& l) const { return dynamic_cast(&l) != NULL; } -void -ICUService::notifyListener(EventListener& l) const +void +ICUService::notifyListener(EventListener& l) const { ((ServiceListener&)l).serviceChanged(*this); } UnicodeString& -ICUService::getName(UnicodeString& result) const +ICUService::getName(UnicodeString& result) const { return result.append(name); } -int32_t -ICUService::countFactories() const +int32_t +ICUService::countFactories() const { return factories == NULL ? 0 : factories->size(); } diff --git a/deps/icu-small/source/common/serv.h b/deps/icu-small/source/common/serv.h index 6a3d1915afdf5a..3bd3d9a9b9ea61 100644 --- a/deps/icu-small/source/common/serv.h +++ b/deps/icu-small/source/common/serv.h @@ -61,16 +61,16 @@ class DNCache; * The descriptor contains an optional prefix, followed by '/' * and the currentID. Factories that handle complex keys, * for example number format factories that generate multiple - * kinds of formatters for the same locale, use the descriptor - * to provide a fully unique identifier for the service object, + * kinds of formatters for the same locale, use the descriptor + * to provide a fully unique identifier for the service object, * while using the currentID (in this case, the locale string), * as the visible IDs that can be localized.

* *

The default implementation of ICUServiceKey has no fallbacks and - * has no custom descriptors.

+ * has no custom descriptors.

*/ class U_COMMON_API ICUServiceKey : public UObject { - private: + private: const UnicodeString _id; protected: @@ -111,7 +111,7 @@ class U_COMMON_API ICUServiceKey : public UObject { * the canonical ID to result. Result is returned as a convenience.

* * @param result the output parameter to which the current id will be appended. - * @return the modified result. + * @return the modified result. */ virtual UnicodeString& currentID(UnicodeString& result) const; @@ -127,7 +127,7 @@ class U_COMMON_API ICUServiceKey : public UObject { * instantiate the service.

* * @param result the output parameter to which the current id will be appended. - * @return the modified result. + * @return the modified result. */ virtual UnicodeString& currentDescriptor(UnicodeString& result) const; @@ -162,10 +162,10 @@ class U_COMMON_API ICUServiceKey : public UObject { /** *

A utility to parse the prefix out of a descriptor string. Only - * the (undelimited) prefix, if any, remains in result. Result is returned as a + * the (undelimited) prefix, if any, remains in result. Result is returned as a * convenience.

* - * @param result an input/output parameter that on entry is a descriptor, and + * @param result an input/output parameter that on entry is a descriptor, and * on exit is the prefix of that descriptor. * @return the modified result. */ @@ -173,10 +173,10 @@ class U_COMMON_API ICUServiceKey : public UObject { /** *

A utility to parse the suffix out of a descriptor string. Only - * the (undelimited) suffix, if any, remains in result. Result is returned as a + * the (undelimited) suffix, if any, remains in result. Result is returned as a * convenience.

* - * @param result an input/output parameter that on entry is a descriptor, and + * @param result an input/output parameter that on entry is a descriptor, and * on exit is the suffix of that descriptor. * @return the modified result. */ @@ -191,7 +191,7 @@ class U_COMMON_API ICUServiceKey : public UObject { /** * UObject RTTI boilerplate. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #ifdef SERVICE_DEBUG public: @@ -254,7 +254,7 @@ class U_COMMON_API ICUServiceFactory : public UObject { /** *

Return, in result, the display name of the id in the provided locale. - * This is an id, not a descriptor. If the id is + * This is an id, not a descriptor. If the id is * not visible, sets result to bogus. If the * incoming result is bogus, it remains bogus. Result is returned as a * convenience. Results are not defined if id is not one supported by this @@ -290,7 +290,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory { public: /** - *

Construct a SimpleFactory that maps a single ID to a single + *

Construct a SimpleFactory that maps a single ID to a single * service instance. If visible is true, the ID will be visible. * The instance must not be NULL. The SimpleFactory will adopt * the instance, which must not be changed subsequent to this call.

@@ -315,16 +315,16 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory { * @param status the error code status. * @return the service object, or NULL if the factory does not support the key. */ - virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const; + virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override; /** - *

This implementation adds a mapping from ID -> this to result if visible is true, + *

This implementation adds a mapping from ID -> this to result if visible is true, * otherwise it removes ID from result.

* * @param result the mapping table to update. * @param status the error code status. */ - virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const; + virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override; /** *

This implementation returns the factory ID if it equals id and visible is true, @@ -336,7 +336,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory { * @param result output parameter to hold the display name. * @return result. */ - virtual UnicodeString& getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const; + virtual UnicodeString& getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const override; public: /** @@ -347,7 +347,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory { /** * UObject RTTI boilerplate. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #ifdef SERVICE_DEBUG public: @@ -363,7 +363,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory { /** *

ServiceListener is the listener that ICUService provides by default. - * ICUService will notifiy this listener when factories are added to + * ICUService will notify this listener when factories are added to * or removed from the service. Subclasses can provide * different listener interfaces that extend EventListener, and modify * acceptsListener and notifyListener as appropriate.

@@ -376,22 +376,22 @@ class U_COMMON_API ServiceListener : public EventListener { *

This method is called when the service changes. At the time of the * call this listener is registered with the service. It must * not modify the notifier in the context of this call.

- * + * * @param service the service that changed. */ virtual void serviceChanged(const ICUService& service) const = 0; - + public: /** * UObject RTTI boilerplate. */ static UClassID U_EXPORT2 getStaticClassID(); - + /** * UObject RTTI boilerplate. */ - virtual UClassID getDynamicClassID() const; - + virtual UClassID getDynamicClassID() const override; + }; /* @@ -422,7 +422,7 @@ class U_COMMON_API StringPair : public UMemory { * @param status the error code status. * @return a StringPair if the creation was successful, otherwise NULL. */ - static StringPair* create(const UnicodeString& displayName, + static StringPair* create(const UnicodeString& displayName, const UnicodeString& id, UErrorCode& status); @@ -521,10 +521,10 @@ class U_COMMON_API StringPair : public UMemory { * subclass of ICUService that uses Locale names as IDs and uses * ICUServiceKeys that implement the standard resource bundle fallback * strategy. Most clients will wish to subclass it instead of - * ICUService.

+ * ICUService.

*/ class U_COMMON_API ICUService : public ICUNotifier { - protected: + protected: /** * Name useful for debugging. */ @@ -631,7 +631,7 @@ class U_COMMON_API ICUService : public ICUNotifier { * has no fallback. If no object is found, the result of handleDefault * is returned.

* - *

Subclasses can override this method to further customize the + *

Subclasses can override this method to further customize the * result before returning it. * * @param key the key. @@ -646,7 +646,7 @@ class U_COMMON_API ICUService : public ICUNotifier { * of a previous getKey call, to determine what previously-registered factories would * have returned. For details, see getKey(ICUServiceKey&, UErrorCode&). Subclasses * should not call it directly, but call through one of the other get functions.

- * + * * @param key the key. * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or NULL. * @param factory the factory making the recursive call. @@ -710,7 +710,7 @@ class U_COMMON_API ICUService : public ICUNotifier { UnicodeString& getDisplayName(const UnicodeString& id, UnicodeString& result, const Locale& locale) const; /** - *

Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that + *

Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that * uses the current default Locale as the locale and NULL for * the matchID.

* @@ -721,7 +721,7 @@ class U_COMMON_API ICUService : public ICUNotifier { UVector& getDisplayNames(UVector& result, UErrorCode& status) const; /** - *

Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that + *

Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that * uses NULL for the matchID.

* * @param result a vector to hold the returned displayName/id StringPairs. @@ -755,8 +755,8 @@ class U_COMMON_API ICUService : public ICUNotifier { * @param status the error code status. * @return the result vector. */ UVector& getDisplayNames(UVector& result, - const Locale& locale, - const UnicodeString* matchID, + const Locale& locale, + const UnicodeString* matchID, UErrorCode& status) const; /** @@ -772,7 +772,7 @@ class U_COMMON_API ICUService : public ICUNotifier { URegistryKey registerInstance(UObject* objToAdopt, const UnicodeString& id, UErrorCode& status); /** - *

Register a service instance with the provided ID. The ID will be + *

Register a service instance with the provided ID. The ID will be * canonicalized. The canonicalized ID will be returned by * getVisibleIDs if visible is true. The service instance will be adopted and * must not be modified subsequent to this call.

@@ -819,7 +819,7 @@ class U_COMMON_API ICUService : public ICUNotifier { * listeners.

* * @param rkey the registry key. - * @param status the error code status. + * @param status the error code status. * @return true if the call successfully unregistered the factory. */ virtual UBool unregister(URegistryKey rkey, UErrorCode& status); @@ -835,7 +835,7 @@ class U_COMMON_API ICUService : public ICUNotifier { /** *

Return true if the service is in its default state.

* - *

The default implementation returns true if there are no + *

The default implementation returns true if there are no * factories registered.

*/ virtual UBool isDefault(void) const; @@ -930,7 +930,7 @@ class U_COMMON_API ICUService : public ICUNotifier { * @param l the listener to test. * @return true if the service accepts the listener. */ - virtual UBool acceptsListener(const EventListener& l) const; + virtual UBool acceptsListener(const EventListener& l) const override; /** *

Notify the listener of a service change.

@@ -941,7 +941,7 @@ class U_COMMON_API ICUService : public ICUNotifier { * * @param l the listener to notify. */ - virtual void notifyListener(EventListener& l) const; + virtual void notifyListener(EventListener& l) const override; /************************************************************************ * Utilities for subclasses. @@ -993,3 +993,4 @@ U_NAMESPACE_END /* ICUSERV_H */ #endif + diff --git a/deps/icu-small/source/common/servlk.cpp b/deps/icu-small/source/common/servlk.cpp index 27b046f1e504f5..538982ca36285c 100644 --- a/deps/icu-small/source/common/servlk.cpp +++ b/deps/icu-small/source/common/servlk.cpp @@ -184,3 +184,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/servlkf.cpp b/deps/icu-small/source/common/servlkf.cpp index 6e46bd2079722a..84f2347cddef0d 100644 --- a/deps/icu-small/source/common/servlkf.cpp +++ b/deps/icu-small/source/common/servlkf.cpp @@ -105,9 +105,9 @@ LocaleKeyFactory::getDisplayName(const UnicodeString& id, const Locale& locale, } UObject* -LocaleKeyFactory::handleCreate(const Locale& /* loc */, - int32_t /* kind */, - const ICUService* /* service */, +LocaleKeyFactory::handleCreate(const Locale& /* loc */, + int32_t /* kind */, + const ICUService* /* service */, UErrorCode& /* status */) const { return NULL; } @@ -148,3 +148,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/servloc.h b/deps/icu-small/source/common/servloc.h index 501989424423ea..29c50a27d1a245 100644 --- a/deps/icu-small/source/common/servloc.h +++ b/deps/icu-small/source/common/servloc.h @@ -60,11 +60,11 @@ class ServiceListener; * *

Canonicalization adjusts the locale string so that the * section before the first understore is in lower case, and the rest - * is in upper case, with no trailing underscores.

+ * is in upper case, with no trailing underscores.

*/ class U_COMMON_API LocaleKey : public ICUServiceKey { - private: + private: int32_t _kind; UnicodeString _primaryID; UnicodeString _fallbackID; @@ -78,15 +78,15 @@ class U_COMMON_API LocaleKey : public ICUServiceKey { /** * Create a LocaleKey with canonical primary and fallback IDs. */ - static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID, + static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID, const UnicodeString* canonicalFallbackID, UErrorCode& status); /** * Create a LocaleKey with canonical primary and fallback IDs. */ - static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID, - const UnicodeString* canonicalFallbackID, + static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID, + const UnicodeString* canonicalFallbackID, int32_t kind, UErrorCode& status); @@ -97,16 +97,16 @@ class U_COMMON_API LocaleKey : public ICUServiceKey { * fallbackID is the current default locale's string in * canonical form. */ - LocaleKey(const UnicodeString& primaryID, - const UnicodeString& canonicalPrimaryID, - const UnicodeString* canonicalFallbackID, + LocaleKey(const UnicodeString& primaryID, + const UnicodeString& canonicalPrimaryID, + const UnicodeString* canonicalFallbackID, int32_t kind); public: /** * Append the prefix associated with the kind, or nothing if the kind is KIND_ANY. */ - virtual UnicodeString& prefix(UnicodeString& result) const; + virtual UnicodeString& prefix(UnicodeString& result) const override; /** * Return the kind code associated with this key. @@ -116,17 +116,17 @@ class U_COMMON_API LocaleKey : public ICUServiceKey { /** * Return the canonicalID. */ - virtual UnicodeString& canonicalID(UnicodeString& result) const; + virtual UnicodeString& canonicalID(UnicodeString& result) const override; /** * Return the currentID. */ - virtual UnicodeString& currentID(UnicodeString& result) const; + virtual UnicodeString& currentID(UnicodeString& result) const override; /** * Return the (canonical) current descriptor, or null if no current id. */ - virtual UnicodeString& currentDescriptor(UnicodeString& result) const; + virtual UnicodeString& currentDescriptor(UnicodeString& result) const override; /** * Convenience method to return the locale corresponding to the (canonical) original ID. @@ -145,23 +145,23 @@ class U_COMMON_API LocaleKey : public ICUServiceKey { *

First falls back through the primary ID, then through * the fallbackID. The final fallback is the empty string, * unless the primary id was the empty string, in which case - * there is no fallback. + * there is no fallback. */ - virtual UBool fallback(); + virtual UBool fallback() override; /** * Return true if a key created from id matches, or would eventually - * fallback to match, the canonical ID of this key. + * fallback to match, the canonical ID of this key. */ - virtual UBool isFallbackOf(const UnicodeString& id) const; - + virtual UBool isFallbackOf(const UnicodeString& id) const override; + public: /** * UObject boilerplate. */ static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Destructor. @@ -183,7 +183,7 @@ class U_COMMON_API LocaleKey : public ICUServiceKey { /** * A subclass of ICUServiceFactory that uses LocaleKeys, and is able to * 'cover' more specific locales with more general locales that it - * supports. + * supports. * *

Coverage may be either of the values VISIBLE or INVISIBLE. * @@ -203,7 +203,7 @@ class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory { enum { /** * Coverage value indicating that the factory makes - * its locales visible, and does not cover more specific + * its locales visible, and does not cover more specific * locales. */ VISIBLE = 0, @@ -238,7 +238,7 @@ class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory { * kind off to handleCreate (which subclasses must implement). */ public: - virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const; + virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override; protected: virtual UBool handlesKey(const ICUServiceKey& key, UErrorCode& status) const; @@ -248,12 +248,12 @@ class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory { * Override of superclass method. This adjusts the result based * on the coverage rule for this factory. */ - virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const; + virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override; /** * Return a localized name for the locale represented by id. */ - virtual UnicodeString& getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const; + virtual UnicodeString& getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const override; protected: /** @@ -263,13 +263,13 @@ class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory { virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const; /** - * Return true if this id is one the factory supports (visible or + * Return true if this id is one the factory supports (visible or * otherwise). */ // virtual UBool isSupportedID(const UnicodeString& id, UErrorCode& status) const; /** - * Return the set of ids that this factory supports (visible or + * Return the set of ids that this factory supports (visible or * otherwise). This can be called often and might need to be * cached if it is expensive to create. */ @@ -281,7 +281,7 @@ class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory { */ static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #ifdef SERVICE_DEBUG public: @@ -306,14 +306,14 @@ class U_COMMON_API SimpleLocaleKeyFactory : public LocaleKeyFactory { const int32_t _kind; public: - SimpleLocaleKeyFactory(UObject* objToAdopt, - const UnicodeString& locale, - int32_t kind, + SimpleLocaleKeyFactory(UObject* objToAdopt, + const UnicodeString& locale, + int32_t kind, int32_t coverage); - SimpleLocaleKeyFactory(UObject* objToAdopt, - const Locale& locale, - int32_t kind, + SimpleLocaleKeyFactory(UObject* objToAdopt, + const Locale& locale, + int32_t kind, int32_t coverage); /** @@ -324,13 +324,13 @@ class U_COMMON_API SimpleLocaleKeyFactory : public LocaleKeyFactory { /** * Override of superclass method. Returns the service object if kind/locale match. Service is not used. */ - virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const; + virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override; /** * Override of superclass method. This adjusts the result based * on the coverage rule for this factory. */ - virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const; + virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override; protected: /** @@ -345,7 +345,7 @@ class U_COMMON_API SimpleLocaleKeyFactory : public LocaleKeyFactory { */ static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #ifdef SERVICE_DEBUG public: @@ -366,7 +366,7 @@ class U_COMMON_API SimpleLocaleKeyFactory : public LocaleKeyFactory { * IDs. Subclasses then override handleCreate to create the actual service * object. The default implementation returns a resource bundle. */ -class U_COMMON_API ICUResourceBundleFactory : public LocaleKeyFactory +class U_COMMON_API ICUResourceBundleFactory : public LocaleKeyFactory { protected: UnicodeString _bundleName; @@ -394,20 +394,20 @@ class U_COMMON_API ICUResourceBundleFactory : public LocaleKeyFactory /** * Return the supported IDs. This is the set of all locale names in ICULocaleData. */ - virtual const Hashtable* getSupportedIDs(UErrorCode& status) const; + virtual const Hashtable* getSupportedIDs(UErrorCode& status) const override; /** * Create the service. The default implementation returns the resource bundle * for the locale, ignoring kind, and service. */ - virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const; + virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const override; public: /** * UObject boilerplate. */ static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #ifdef SERVICE_DEBUG @@ -422,7 +422,7 @@ class U_COMMON_API ICUResourceBundleFactory : public LocaleKeyFactory ****************************************************************** */ -class U_COMMON_API ICULocaleService : public ICUService +class U_COMMON_API ICULocaleService : public ICUService { private: Locale fallbackLocale; @@ -447,7 +447,7 @@ class U_COMMON_API ICULocaleService : public ICUService #if 0 // redeclare because of overload resolution rules? // no, causes ambiguities since both UnicodeString and Locale have constructors that take a const char* - // need some compiler flag to remove warnings + // need some compiler flag to remove warnings UObject* get(const UnicodeString& descriptor, UErrorCode& status) const { return ICUService::get(descriptor, status); } @@ -475,12 +475,12 @@ class U_COMMON_API ICULocaleService : public ICUService * get(Locale, String, Locale[]) with a null kind. */ UObject* get(const Locale& locale, Locale* actualReturn, UErrorCode& status) const; - + /** * Convenience override for callers using locales. This uses * createKey(Locale.toString(), kind) to create a key, calls getKey, and then * if actualReturn is not null, returns the actualResult from - * getKey (stripping any prefix) into a Locale. + * getKey (stripping any prefix) into a Locale. */ UObject* get(const Locale& locale, int32_t kind, Locale* actualReturn, UErrorCode& status) const; @@ -512,7 +512,7 @@ class U_COMMON_API ICULocaleService : public ICUService * We really need a flag that is understood by all compilers that will suppress the warning about * hidden overrides. */ - virtual URegistryKey registerInstance(UObject* objToAdopt, const UnicodeString& locale, UBool visible, UErrorCode& status); + virtual URegistryKey registerInstance(UObject* objToAdopt, const UnicodeString& locale, UBool visible, UErrorCode& status) override; /** * Convenience method for callers using locales. This returns the standard @@ -531,7 +531,7 @@ class U_COMMON_API ICULocaleService : public ICUService /** * Override superclass createKey method. */ - virtual ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const; + virtual ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const override; /** * Additional createKey that takes a kind. @@ -548,3 +548,4 @@ U_NAMESPACE_END /* ICULSERV_H */ #endif + diff --git a/deps/icu-small/source/common/servls.cpp b/deps/icu-small/source/common/servls.cpp index 0c2a73d98e2275..7108afd4a5282b 100644 --- a/deps/icu-small/source/common/servls.cpp +++ b/deps/icu-small/source/common/servls.cpp @@ -92,12 +92,12 @@ ICULocaleService::get(const Locale& locale, int32_t kind, Locale* actualReturn, URegistryKey -ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, +ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, UBool visible, UErrorCode& status) { Locale loc; LocaleUtility::initLocaleFromName(locale, loc); - return registerInstance(objToAdopt, loc, LocaleKey::KIND_ANY, + return registerInstance(objToAdopt, loc, LocaleKey::KIND_ANY, visible ? LocaleKeyFactory::VISIBLE : LocaleKeyFactory::INVISIBLE, status); } @@ -179,7 +179,7 @@ class ServiceEnumeration : public StringEnumeration { length = other._ids.size(); for(i = 0; i < length; ++i) { - _ids.addElement(((UnicodeString *)other._ids.elementAt(i))->clone(), status); + _ids.addElementX(((UnicodeString *)other._ids.elementAt(i))->clone(), status); } if(U_SUCCESS(status)) { @@ -201,7 +201,7 @@ class ServiceEnumeration : public StringEnumeration { virtual ~ServiceEnumeration(); - virtual StringEnumeration *clone() const { + virtual StringEnumeration *clone() const override { UErrorCode status = U_ZERO_ERROR; ServiceEnumeration *cl = new ServiceEnumeration(*this, status); if(U_FAILURE(status)) { @@ -221,18 +221,18 @@ class ServiceEnumeration : public StringEnumeration { return FALSE; } - virtual int32_t count(UErrorCode& status) const { + virtual int32_t count(UErrorCode& status) const override { return upToDate(status) ? _ids.size() : 0; } - virtual const UnicodeString* snext(UErrorCode& status) { + virtual const UnicodeString* snext(UErrorCode& status) override { if (upToDate(status) && (_pos < _ids.size())) { return (const UnicodeString*)_ids[_pos++]; } return NULL; } - virtual void reset(UErrorCode& status) { + virtual void reset(UErrorCode& status) override { if (status == U_ENUM_OUT_OF_SYNC_ERROR) { status = U_ZERO_ERROR; } @@ -245,7 +245,7 @@ class ServiceEnumeration : public StringEnumeration { public: static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; ServiceEnumeration::~ServiceEnumeration() {} @@ -291,3 +291,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/servnotf.cpp b/deps/icu-small/source/common/servnotf.cpp index 435f36b0d00671..342e0d9f24d2a7 100644 --- a/deps/icu-small/source/common/servnotf.cpp +++ b/deps/icu-small/source/common/servnotf.cpp @@ -23,8 +23,8 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EventListener) static UMutex notifyLock; -ICUNotifier::ICUNotifier(void) -: listeners(NULL) +ICUNotifier::ICUNotifier(void) +: listeners(NULL) { } @@ -37,8 +37,8 @@ ICUNotifier::~ICUNotifier(void) { } -void -ICUNotifier::addListener(const EventListener* l, UErrorCode& status) +void +ICUNotifier::addListener(const EventListener* l, UErrorCode& status) { if (U_SUCCESS(status)) { if (l == NULL) { @@ -59,7 +59,7 @@ ICUNotifier::addListener(const EventListener* l, UErrorCode& status) } } - listeners->addElement((void*)l, status); // cast away const + listeners->addElementX((void*)l, status); // cast away const } #ifdef NOTIFIER_DEBUG else { @@ -70,8 +70,8 @@ ICUNotifier::addListener(const EventListener* l, UErrorCode& status) } } -void -ICUNotifier::removeListener(const EventListener *l, UErrorCode& status) +void +ICUNotifier::removeListener(const EventListener *l, UErrorCode& status) { if (U_SUCCESS(status)) { if (l == NULL) { @@ -99,8 +99,8 @@ ICUNotifier::removeListener(const EventListener *l, UErrorCode& status) } } -void -ICUNotifier::notifyChanged(void) +void +ICUNotifier::notifyChanged(void) { if (listeners != NULL) { Mutex lmx(¬ifyLock); @@ -117,3 +117,4 @@ U_NAMESPACE_END /* UCONFIG_NO_SERVICE */ #endif + diff --git a/deps/icu-small/source/common/servnotf.h b/deps/icu-small/source/common/servnotf.h index 340496e85c61fd..e3b2cac32e4e6b 100644 --- a/deps/icu-small/source/common/servnotf.h +++ b/deps/icu-small/source/common/servnotf.h @@ -34,13 +34,13 @@ U_NAMESPACE_END U_NAMESPACE_BEGIN class U_COMMON_API EventListener : public UObject { -public: +public: virtual ~EventListener(); public: static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; public: #ifdef SERVICE_DEBUG @@ -62,54 +62,54 @@ class U_COMMON_API EventListener : public UObject { * eventually dequeues the list and calls notifyListener on each * listener in the list.

* - *

Subclasses override acceptsListener and notifyListener + *

Subclasses override acceptsListener and notifyListener * to add type-safe notification. AcceptsListener should return * true if the listener is of the appropriate type; ICUNotifier * itself will ensure the listener is non-null and that the * identical listener is not already registered with the Notifier. - * NotifyListener should cast the listener to the appropriate + * NotifyListener should cast the listener to the appropriate * type and call the appropriate method on the listener. */ class U_COMMON_API ICUNotifier : public UMemory { private: UVector* listeners; - -public: + +public: ICUNotifier(void); - + virtual ~ICUNotifier(void); - + /** * Add a listener to be notified when notifyChanged is called. * The listener must not be null. AcceptsListener must return * true for the listener. Attempts to concurrently * register the identical listener more than once will be - * silently ignored. + * silently ignored. */ virtual void addListener(const EventListener* l, UErrorCode& status); - + /** * Stop notifying this listener. The listener must * not be null. Attempts to remove a listener that is * not registered will be silently ignored. */ virtual void removeListener(const EventListener* l, UErrorCode& status); - + /** * ICU doesn't spawn its own threads. All listeners are notified in * the thread of the caller. Misbehaved listeners can therefore * indefinitely block the calling thread. Callers should beware of - * deadlock situations. + * deadlock situations. */ virtual void notifyChanged(void); - -protected: + +protected: /** * Subclasses implement this to return true if the listener is * of the appropriate type. */ virtual UBool acceptsListener(const EventListener& l) const = 0; - + /** * Subclasses implement this to notify the listener. */ diff --git a/deps/icu-small/source/common/servrbf.cpp b/deps/icu-small/source/common/servrbf.cpp index 3f143afadf62bb..94279ab3a1513b 100644 --- a/deps/icu-small/source/common/servrbf.cpp +++ b/deps/icu-small/source/common/servrbf.cpp @@ -92,3 +92,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/servslkf.cpp b/deps/icu-small/source/common/servslkf.cpp index 4aa10414a038d3..09154d1b9198e7 100644 --- a/deps/icu-small/source/common/servslkf.cpp +++ b/deps/icu-small/source/common/servslkf.cpp @@ -119,3 +119,5 @@ U_NAMESPACE_END /* !UCONFIG_NO_SERVICE */ #endif + + diff --git a/deps/icu-small/source/common/sharedobject.h b/deps/icu-small/source/common/sharedobject.h index 0565de6608a094..6ccfb27b018baa 100644 --- a/deps/icu-small/source/common/sharedobject.h +++ b/deps/icu-small/source/common/sharedobject.h @@ -78,7 +78,7 @@ class U_COMMON_API SharedObject : public UObject { * Decrements the number of hard references to this object, and * arrange for possible cache-eviction and/or deletion if ref * count goes to zero. Thread-safe. - * + * * Not for use from within the UnifiedCache implementation. */ void removeRef() const; @@ -108,12 +108,12 @@ class U_COMMON_API SharedObject : public UObject { */ void deleteIfZeroRefCount() const; - + /** * Returns a writable version of ptr. * If there is exactly one owner, then ptr itself is returned as a * non-const pointer. - * If there are multiple owners, then ptr is replaced with a + * If there are multiple owners, then ptr is replaced with a * copy-constructed clone, * and that is returned. * Returns NULL if cloning failed. @@ -136,7 +136,7 @@ class U_COMMON_API SharedObject : public UObject { * Makes dest an owner of the object pointed to by src while adjusting * reference counts and deleting the previous object dest pointed to * if necessary. Before this call is made, dest must either be NULL or - * be included in the reference count of the object it points to. + * be included in the reference count of the object it points to. * * T must be a subclass of SharedObject. */ @@ -174,7 +174,7 @@ class U_COMMON_API SharedObject : public UObject { * Reference count, excluding references from within the UnifiedCache implementation. */ mutable u_atomic_int32_t hardRefCount; - + mutable const UnifiedCacheBase *cachePtr; }; diff --git a/deps/icu-small/source/common/sprpimpl.h b/deps/icu-small/source/common/sprpimpl.h index 26de904b1fde5a..ca0bcdb51695cc 100644 --- a/deps/icu-small/source/common/sprpimpl.h +++ b/deps/icu-small/source/common/sprpimpl.h @@ -36,20 +36,20 @@ enum UStringPrepType{ USPREP_UNASSIGNED = 0x0000 , USPREP_MAP = 0x0001 , - USPREP_PROHIBITED = 0x0002 , + USPREP_PROHIBITED = 0x0002 , USPREP_DELETE = 0x0003 , - USPREP_TYPE_LIMIT = 0x0004 + USPREP_TYPE_LIMIT = 0x0004 }; typedef enum UStringPrepType UStringPrepType; #ifdef USPREP_TYPE_NAMES_ARRAY static const char* usprepTypeNames[] ={ - "UNASSIGNED" , - "MAP" , - "PROHIBITED" , + "UNASSIGNED" , + "MAP" , + "PROHIBITED" , "DELETE", - "TYPE_LIMIT" + "TYPE_LIMIT" }; #endif @@ -60,7 +60,7 @@ enum{ enum{ _SPREP_TYPE_THRESHOLD = 0xFFF0, - _SPREP_MAX_INDEX_VALUE = 0x3FBF, /*16139*/ + _SPREP_MAX_INDEX_VALUE = 0x3FBF, /*16139*/ _SPREP_MAX_INDEX_TOP_LENGTH = 0x0003 }; @@ -68,7 +68,7 @@ enum{ enum { _SPREP_INDEX_TRIE_SIZE = 0, /* number of bytes in StringPrep trie */ _SPREP_INDEX_MAPPING_DATA_SIZE = 1, /* The array that contains the mapping */ - _SPREP_NORM_CORRECTNS_LAST_UNI_VERSION = 2, /* The index of Unicode version of last entry in NormalizationCorrections.txt */ + _SPREP_NORM_CORRECTNS_LAST_UNI_VERSION = 2, /* The index of Unicode version of last entry in NormalizationCorrections.txt */ _SPREP_ONE_UCHAR_MAPPING_INDEX_START = 3, /* The starting index of 1 UChar mapping index in the mapping data array */ _SPREP_TWO_UCHARS_MAPPING_INDEX_START = 4, /* The starting index of 2 UChars mapping index in the mapping data array */ _SPREP_THREE_UCHARS_MAPPING_INDEX_START = 5, /* The starting index of 3 UChars mapping index in the mapping data array */ @@ -101,7 +101,7 @@ struct UStringPrepProfile{ * @internal */ U_CAPI void U_EXPORT2 -uprv_syntaxError(const UChar* rules, +uprv_syntaxError(const UChar* rules, int32_t pos, int32_t rulesLen, UParseError* parseError); diff --git a/deps/icu-small/source/common/static_unicode_sets.h b/deps/icu-small/source/common/static_unicode_sets.h index 9d8a5fcddc9953..5d90ce5908de98 100644 --- a/deps/icu-small/source/common/static_unicode_sets.h +++ b/deps/icu-small/source/common/static_unicode_sets.h @@ -83,9 +83,9 @@ enum Key { * * This method is always safe and OK to chain: in the case of a memory or other * error, it returns an empty set from static memory. - * + * * Example: - * + * * UBool hasIgnorables = unisets::get(unisets::DEFAULT_IGNORABLES)->contains(...); * * @param key The desired UnicodeSet according to the enum in this file. diff --git a/deps/icu-small/source/common/stringtriebuilder.cpp b/deps/icu-small/source/common/stringtriebuilder.cpp index 6f9cc2e5c22b55..4d52a88af7499b 100644 --- a/deps/icu-small/source/common/stringtriebuilder.cpp +++ b/deps/icu-small/source/common/stringtriebuilder.cpp @@ -383,7 +383,7 @@ StringTrieBuilder::equalNodes(const void *left, const void *right) { return *(const Node *)left==*(const Node *)right; } -UBool +bool StringTrieBuilder::Node::operator==(const Node &other) const { return this==&other || (typeid(*this)==typeid(other) && hash==other.hash); } @@ -396,13 +396,13 @@ StringTrieBuilder::Node::markRightEdgesFirst(int32_t edgeNumber) { return edgeNumber; } -UBool +bool StringTrieBuilder::FinalValueNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!Node::operator==(other)) { - return FALSE; + return false; } const FinalValueNode &o=(const FinalValueNode &)other; return value==o.value; @@ -413,25 +413,25 @@ StringTrieBuilder::FinalValueNode::write(StringTrieBuilder &builder) { offset=builder.writeValueAndFinal(value, TRUE); } -UBool +bool StringTrieBuilder::ValueNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!Node::operator==(other)) { - return FALSE; + return false; } const ValueNode &o=(const ValueNode &)other; return hasValue==o.hasValue && (!hasValue || value==o.value); } -UBool +bool StringTrieBuilder::IntermediateValueNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!ValueNode::operator==(other)) { - return FALSE; + return false; } const IntermediateValueNode &o=(const IntermediateValueNode &)other; return next==o.next; @@ -451,13 +451,13 @@ StringTrieBuilder::IntermediateValueNode::write(StringTrieBuilder &builder) { offset=builder.writeValueAndFinal(value, FALSE); } -UBool +bool StringTrieBuilder::LinearMatchNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!ValueNode::operator==(other)) { - return FALSE; + return false; } const LinearMatchNode &o=(const LinearMatchNode &)other; return length==o.length && next==o.next; @@ -471,21 +471,21 @@ StringTrieBuilder::LinearMatchNode::markRightEdgesFirst(int32_t edgeNumber) { return edgeNumber; } -UBool +bool StringTrieBuilder::ListBranchNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!Node::operator==(other)) { - return FALSE; + return false; } const ListBranchNode &o=(const ListBranchNode &)other; for(int32_t i=0; i +# define UPRV_UNREACHABLE_ASSERT assert(false) +#elif U_CPLUSPLUS_VERSION +# define UPRV_UNREACHABLE_ASSERT (void)0 +#else +# define UPRV_UNREACHABLE_ASSERT +#endif + +/** + * \def UPRV_UNREACHABLE_EXIT * This macro is used to unconditionally abort if unreachable code is ever executed. * @internal */ -#if defined(UPRV_UNREACHABLE) +#if defined(UPRV_UNREACHABLE_EXIT) // Use the predefined value. #else -# define UPRV_UNREACHABLE abort() +# define UPRV_UNREACHABLE_EXIT abort() #endif #endif diff --git a/deps/icu-small/source/common/ubidi.cpp b/deps/icu-small/source/common/ubidi.cpp index 3ddb45721e25ec..6d27827c504a94 100644 --- a/deps/icu-small/source/common/ubidi.cpp +++ b/deps/icu-small/source/common/ubidi.cpp @@ -2047,7 +2047,7 @@ processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop, break; default: /* we should never get here */ - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } if((addLevel) || (start < start0)) { @@ -2250,7 +2250,7 @@ resolveImplicitLevels(UBiDi *pBiDi, start2=i; break; default: /* we should never get here */ - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } } @@ -2724,7 +2724,7 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length, break; default: /* we should never get here */ - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } /* * If there are no external levels specified and there diff --git a/deps/icu-small/source/common/ubidi_props_data.h b/deps/icu-small/source/common/ubidi_props_data.h index 7a34870bd8003f..aad919fa2ef2cc 100644 --- a/deps/icu-small/source/common/ubidi_props_data.h +++ b/deps/icu-small/source/common/ubidi_props_data.h @@ -1,6 +1,5 @@ -// © 2016 and later: Unicode, Inc. and others. +// Copyright (C) 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -// // Copyright (C) 1999-2016, International Business Machines // Corporation and others. All Rights Reserved. // @@ -8,798 +7,818 @@ // // machine-generated by: icu/tools/unicode/c/genprops/bidipropsbuilder.cpp - #ifdef INCLUDED_FROM_UBIDI_PROPS_C -static const UVersionInfo ubidi_props_dataVersion={0xd,0,0,0}; +static const UVersionInfo ubidi_props_dataVersion={0xe,0,0,0}; -static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x67ec,0x6200,0x28,0x620,0x8c8,0x10ac0,0x10d24,0,0,0,0,0,0,0,0x6502b6}; +static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x6a98,0x64a8,0x28,0x620,0x8cc,0x10ac0,0x10d24,0,0,0,0,0,0,0,0x6702b6}; -static const uint16_t ubidi_props_trieIndex[12536]={ -0x37c,0x384,0x38c,0x394,0x3ac,0x3b4,0x3bc,0x3c4,0x39c,0x3a4,0x39c,0x3a4,0x39c,0x3a4,0x39c,0x3a4, -0x39c,0x3a4,0x39c,0x3a4,0x3ca,0x3d2,0x3da,0x3e2,0x3ea,0x3f2,0x3ee,0x3f6,0x3fe,0x406,0x401,0x409, -0x39c,0x3a4,0x39c,0x3a4,0x411,0x419,0x39c,0x3a4,0x39c,0x3a4,0x39c,0x3a4,0x41f,0x427,0x42f,0x437, -0x43f,0x447,0x44f,0x457,0x45d,0x465,0x46d,0x475,0x47d,0x485,0x48b,0x493,0x49b,0x4a3,0x4ab,0x4b3, -0x4bf,0x4bb,0x4c7,0x4cf,0x431,0x4df,0x4e6,0x4d7,0x4ee,0x4f0,0x4f8,0x500,0x508,0x509,0x511,0x519, -0x521,0x509,0x529,0x52e,0x521,0x509,0x536,0x53e,0x508,0x546,0x54e,0x500,0x556,0x39c,0x55e,0x562, -0x56a,0x56c,0x574,0x57c,0x508,0x584,0x58c,0x500,0x413,0x590,0x511,0x500,0x508,0x39c,0x598,0x39c, -0x39c,0x59e,0x5a6,0x39c,0x39c,0x5aa,0x5b2,0x39c,0x5b6,0x5bd,0x39c,0x5c5,0x5cd,0x5d4,0x555,0x39c, -0x39c,0x5dc,0x5e4,0x5ec,0x5f4,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x5fc,0x39c,0x604,0x39c,0x39c,0x39c, -0x60c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x614,0x39c,0x39c,0x39c,0x61c,0x61c,0x515,0x515,0x39c,0x622,0x62a,0x604, -0x640,0x632,0x632,0x648,0x64f,0x638,0x39c,0x39c,0x39c,0x657,0x65f,0x39c,0x39c,0x39c,0x661,0x669, -0x671,0x39c,0x678,0x680,0x39c,0x688,0x56b,0x39c,0x545,0x690,0x556,0x698,0x413,0x6a0,0x39c,0x6a7, -0x39c,0x6ac,0x39c,0x39c,0x39c,0x39c,0x6b2,0x6ba,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x3ea,0x6c2, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x6ca,0x6d2,0x6d6, -0x6ee,0x6f4,0x6de,0x6e6,0x6fc,0x704,0x708,0x5d7,0x710,0x718,0x720,0x39c,0x728,0x669,0x669,0x669, -0x738,0x740,0x748,0x750,0x755,0x75d,0x765,0x730,0x76d,0x775,0x39c,0x77b,0x782,0x669,0x669,0x669, -0x669,0x582,0x788,0x669,0x790,0x39c,0x39c,0x666,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669, -0x669,0x669,0x669,0x669,0x669,0x798,0x669,0x669,0x669,0x669,0x669,0x79e,0x669,0x669,0x7a6,0x7ae, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x669,0x669,0x669,0x669,0x7be,0x7c6,0x7ce,0x7b6, -0x7de,0x7e6,0x7ee,0x7f5,0x7fc,0x804,0x808,0x7d6,0x669,0x669,0x669,0x810,0x816,0x669,0x669,0x81c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x824,0x39c,0x39c,0x39c,0x82c,0x39c,0x39c,0x39c,0x3ea, -0x834,0x83c,0x840,0x39c,0x848,0x669,0x669,0x66c,0x669,0x669,0x669,0x669,0x669,0x669,0x84f,0x855, -0x865,0x85d,0x39c,0x39c,0x86d,0x60c,0x39c,0x3c3,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x669,0x82b, -0x3d1,0x39c,0x875,0x87d,0x39c,0x885,0x88d,0x39c,0x39c,0x39c,0x39c,0x891,0x39c,0x39c,0x661,0x3c2, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x669,0x669, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x875,0x669,0x582,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x898,0x39c,0x39c,0x89d,0x56c,0x39c,0x39c,0x5b8,0x669,0x660,0x39c,0x39c,0x8a5,0x39c,0x39c,0x39c, -0x8ad,0x8b4,0x632,0x8bc,0x39c,0x39c,0x58e,0x8c4,0x39c,0x8cc,0x8d3,0x39c,0x4ee,0x8d8,0x39c,0x507, -0x39c,0x8e0,0x8e8,0x509,0x39c,0x8ec,0x508,0x8f4,0x39c,0x39c,0x39c,0x8fa,0x39c,0x39c,0x39c,0x901, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x915,0x909,0x90d,0x49b,0x49b,0x49b,0x49b,0x49b, -0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x49b,0x91d,0x49b,0x49b,0x49b,0x49b,0x925,0x929, -0x931,0x939,0x93d,0x945,0x49b,0x49b,0x49b,0x949,0x951,0x38c,0x959,0x961,0x39c,0x39c,0x39c,0x969, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0xe70,0xe70,0xeb0,0xef0,0xe70,0xe70,0xe70,0xe70,0xe70,0xe70,0xf28,0xf68,0xfa8,0xfb8,0xff8,0x1004, -0xe70,0xe70,0x1044,0xe70,0xe70,0xe70,0x107c,0x10bc,0x10fc,0x113c,0x1174,0x11b4,0x11f4,0x122c,0x126c,0x12ac, +static const uint16_t ubidi_props_trieIndex[12876]={ +0x387,0x38f,0x397,0x39f,0x3b7,0x3bf,0x3c7,0x3cf,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af, +0x3a7,0x3af,0x3a7,0x3af,0x3d5,0x3dd,0x3e5,0x3ed,0x3f5,0x3fd,0x3f9,0x401,0x409,0x411,0x40c,0x414, +0x3a7,0x3af,0x3a7,0x3af,0x41c,0x424,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af,0x42a,0x432,0x43a,0x442, +0x44a,0x452,0x45a,0x462,0x468,0x470,0x478,0x480,0x488,0x490,0x496,0x49e,0x4a6,0x4ae,0x4b6,0x4be, +0x4ca,0x4c6,0x4d2,0x4da,0x4e2,0x4f2,0x4f9,0x4ea,0x501,0x503,0x50b,0x513,0x51b,0x51c,0x524,0x52c, +0x534,0x51c,0x53c,0x541,0x534,0x51c,0x549,0x551,0x51b,0x559,0x561,0x513,0x569,0x3a7,0x571,0x575, +0x57d,0x57f,0x587,0x58f,0x51b,0x597,0x59f,0x513,0x41e,0x5a3,0x524,0x513,0x51b,0x3a7,0x5ab,0x3a7, +0x3a7,0x5b1,0x5b9,0x3a7,0x3a7,0x5bd,0x5c5,0x3a7,0x5c9,0x5d0,0x3a7,0x5d8,0x5e0,0x5e7,0x568,0x3a7, +0x3a7,0x5ef,0x5f7,0x5ff,0x607,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x60f,0x3a7,0x617,0x3a7,0x3a7,0x3a7, +0x61f,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x627,0x3a7,0x3a7,0x3a7,0x62f,0x528,0x528,0x528,0x3a7,0x635,0x63d,0x617, +0x653,0x645,0x645,0x65b,0x662,0x64b,0x3a7,0x3a7,0x3a7,0x66a,0x672,0x3a7,0x3a7,0x3a7,0x674,0x67c, +0x684,0x3a7,0x68b,0x693,0x3a7,0x69b,0x4fe,0x3a7,0x558,0x6a3,0x569,0x6ab,0x41e,0x6b3,0x3a7,0x6ba, +0x3a7,0x6bf,0x3a7,0x3a7,0x3a7,0x3a7,0x6c5,0x6cd,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0x3f5, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x6d4,0x6dc,0x6e0, +0x6f8,0x6fe,0x6e8,0x6f0,0x706,0x70e,0x712,0x5ea,0x71a,0x722,0x72a,0x3a7,0x732,0x67c,0x67c,0x67c, +0x742,0x74a,0x752,0x75a,0x75f,0x767,0x76f,0x73a,0x777,0x77f,0x3a7,0x785,0x78c,0x67c,0x67c,0x67c, +0x67c,0x595,0x792,0x67c,0x79a,0x3a7,0x3a7,0x679,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c, +0x67c,0x67c,0x67c,0x67c,0x67c,0x7a2,0x67c,0x67c,0x67c,0x67c,0x67c,0x7a8,0x67c,0x67c,0x7b0,0x7b8, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x67c,0x67c,0x67c,0x67c,0x7c8,0x7d0,0x7d8,0x7c0, +0x7e8,0x7f0,0x7f8,0x7ff,0x806,0x80e,0x812,0x7e0,0x67c,0x67c,0x67c,0x81a,0x820,0x67c,0x67c,0x826, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x82e,0x3a7,0x3a7,0x3a7,0x836,0x3a7,0x3a7,0x3a7,0x3f5, +0x83e,0x846,0x849,0x3a7,0x851,0x67c,0x67c,0x67f,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x858,0x85e, +0x86e,0x866,0x3a7,0x3a7,0x876,0x61f,0x3a7,0x3ce,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x67c,0x835, +0x3dc,0x3a7,0x87e,0x886,0x3a7,0x88e,0x896,0x3a7,0x3a7,0x3a7,0x3a7,0x89a,0x3a7,0x3a7,0x674,0x3cd, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x67c,0x67c, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x87e,0x67c,0x595,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x8a1,0x3a7,0x3a7,0x8a6,0x8ae,0x3a7,0x3a7,0x5cb,0x67c,0x673,0x3a7,0x3a7,0x8b6,0x3a7,0x3a7,0x3a7, +0x8be,0x8c5,0x645,0x8cd,0x3a7,0x3a7,0x5a1,0x8d5,0x3a7,0x8dd,0x8e4,0x3a7,0x501,0x8e9,0x3a7,0x51a, +0x3a7,0x8f1,0x8f9,0x51c,0x3a7,0x8fd,0x51b,0x905,0x3a7,0x3a7,0x3a7,0x90b,0x3a7,0x3a7,0x3a7,0x912, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x926,0x91a,0x91e,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6, +0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x92e,0x936,0x4a6,0x4a6,0x4a6,0x93b,0x93f, +0x947,0x94f,0x953,0x95b,0x4a6,0x4a6,0x4a6,0x95f,0x967,0x397,0x96f,0x977,0x3a7,0x3a7,0x3a7,0x97f, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0xe9c,0xe9c,0xedc,0xf1c,0xe9c,0xe9c,0xe9c,0xe9c,0xe9c,0xe9c,0xf54,0xf94,0xfd4,0xfe4,0x1024,0x1030, +0xe9c,0xe9c,0x1070,0xe9c,0xe9c,0xe9c,0x10a8,0x10e8,0x1128,0x1168,0x11a0,0x11e0,0x1220,0x1258,0x1298,0x12d8, 0xa40,0xa80,0xac0,0xaff,0x1a0,0x1a0,0xb3f,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xb68,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xba8,0x1a0,0x1a0,0xbdd,0xc1d,0xc5d,0xc9d,0xcdd,0xd1d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xba8,0x1a0,0xbce,0xc09,0xc49,0xc89,0xcc9,0xd09,0xd49, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, -0xd9d,0xdad,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, +0xdc9,0xdd9,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, 0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0, -0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd5d, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x971,0x39c,0x669,0x669,0x979,0x60c,0x39c,0x501, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x981,0x39c,0x39c,0x39c,0x988,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x990,0x431,0x431,0x431,0x431,0x431,0x431,0x431, -0x998,0x99c,0x431,0x431,0x431,0x431,0x9ac,0x9a4,0x431,0x9b4,0x431,0x431,0x9bc,0x9c2,0x431,0x431, -0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x9d2,0x9ca,0x431,0x431,0x431,0x431,0x431,0x431, -0x431,0x431,0x431,0x9da,0x431,0x9e2,0x431,0x431,0x431,0x9e6,0x9ed,0x9f3,0x431,0x9f7,0x9ff,0x431, -0x508,0xa07,0xa0e,0xa15,0x413,0xa18,0x39c,0x39c,0x4ee,0xa1f,0x39c,0xa25,0x413,0xa2a,0xa32,0x39c, -0x39c,0xa37,0x39c,0x39c,0x39c,0x39c,0x82c,0xa3f,0x413,0x590,0x56b,0xa46,0x39c,0x39c,0x39c,0x39c, -0x39c,0xa07,0xa4e,0x39c,0x39c,0xa56,0xa5e,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xa62,0xa6a,0x39c, -0x39c,0xa72,0x56b,0xa7a,0x39c,0xa80,0x39c,0x39c,0x5fc,0xa88,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0xa8d,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xa94,0xa9c,0x39c,0x39c,0x39c,0xa9f,0x56b,0xaa7, -0xaab,0xab3,0x39c,0xaba,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0xac1,0x39c,0x39c,0xacf,0xac9,0x39c,0x39c,0x39c,0xad7,0xadf,0x39c,0xae3,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x592,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xaf0,0xaeb,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0xaf8,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xaff, -0x39c,0xb05,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0xa26,0x39c,0xb0b,0x39c,0x39c,0xb13,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x522,0xb1b,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xb22,0xb2a,0xb30,0x39c,0x39c,0x669,0x669,0xb38, -0x39c,0x39c,0x39c,0x39c,0x39c,0x669,0x669,0x83f,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0xb3a,0x39c,0xb41,0x39c,0xb3d,0x39c,0xb44,0x39c,0xb4c,0xb50,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x3ea,0xb58,0x3ea, -0xb5f,0xb66,0xb6e,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xb76,0xb7e,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xb05,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0xb83,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x431,0x431,0x431, -0x431,0x431,0x431,0xb8b,0x431,0xb93,0xb93,0xb9a,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431, -0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431, -0x90d,0x49b,0x49b,0x431,0x431,0x49b,0x49b,0x9f3,0x431,0x431,0x431,0x431,0x431,0x49b,0x49b,0x49b, -0x49b,0x49b,0x49b,0x49b,0xba2,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x431,0x669,0xbaa,0x669, -0x669,0x66c,0xbaf,0xbb3,0x84f,0xbbb,0x3be,0x39c,0xbc1,0x39c,0xbc6,0x39c,0x39c,0x39c,0x39c,0x39c, -0x779,0x39c,0x39c,0x39c,0x39c,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669, -0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669,0x669, -0x669,0x669,0x669,0x66b,0x979,0x669,0x669,0x669,0x66c,0x669,0x669,0xbce,0x66e,0xbaa,0x669,0xbd6, -0x669,0xbde,0xbe3,0x39c,0x39c,0x669,0x669,0x669,0xbeb,0x669,0x669,0x798,0x669,0x669,0x669,0x66c, -0xbf2,0xbfa,0xc00,0xc05,0x39c,0x669,0x669,0x669,0x669,0xc0d,0x669,0x788,0xc15,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xc1c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c, -0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xc1c,0xc2c,0xc24,0xc24, -0xc24,0xc2d,0xc2d,0xc2d,0xc2d,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0xc35,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, -0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0x37b,0x37b,0x37b, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,8,7,8,9,7,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,7,7,7,8, -9,0xa,0xa,4,4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6, -2,2,2,2,2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0xa, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x12, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x12,0x12,0x12,0x12,0x12,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -6,0xa,4,4,4,4,0xa,0xa,0xa,0xa,0,0x900a,0xa,0xb2,0xa,0xa, -4,4,2,2,0xa,0,0xa,0xa,0xa,2,0,0x900a,0xa,0xa,0xa,0xa, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xa,0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x987,0x3a7,0x67c,0x67c,0x98f,0x61f,0x3a7,0x514, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x997,0x3a7,0x3a7,0x3a7,0x99e,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9a6,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c, +0x9ae,0x9b2,0x43c,0x43c,0x43c,0x43c,0x9c2,0x9ba,0x43c,0x9ca,0x43c,0x43c,0x9d2,0x9d8,0x43c,0x43c, +0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9e8,0x9e0,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c, +0x43c,0x43c,0x43c,0x9f0,0x43c,0x9f8,0x43c,0x43c,0x43c,0x9fc,0xa03,0xa09,0xa11,0xa15,0xa1d,0x43c, +0x51b,0xa25,0xa2c,0xa33,0x41e,0xa3b,0x569,0x3a7,0x501,0xa42,0x3a7,0xa48,0x41e,0xa4d,0xa55,0x3a7, +0x3a7,0xa5a,0x3a7,0x3a7,0x3a7,0x3a7,0x836,0xa62,0x41e,0x5a3,0x57e,0xa69,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0xa25,0xa71,0x3a7,0x3a7,0xa79,0xa81,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa85,0xa8d,0x3a7, +0x3a7,0xa95,0x57e,0xa9d,0x3a7,0xaa3,0x3a7,0x3a7,0x60f,0xaab,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0xab0,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xab7,0xabf,0x3a7,0x3a7,0x3a7,0xac2,0x57e,0xaca, +0xace,0xad6,0x3a7,0xadd,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0xae4,0x3a7,0x3a7,0xaf2,0xaec,0x3a7,0x3a7,0x3a7,0xafa,0xb02,0x3a7,0xb06,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x5a5,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb13,0xb0e,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0xb1b,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb22, +0x3a7,0xb28,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0xa49,0x3a7,0xb2e,0x3a7,0x3a7,0xb36,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x535,0xb3e,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xb46,0x500,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0xb4e,0xb56,0xb5c,0x3a7,0xb62,0x67c,0x67c,0xb6a,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x67c,0x67c,0xb72,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb78, +0x3a7,0xb7f,0x3a7,0xb7b,0x3a7,0xb82,0x3a7,0xb8a,0xb8e,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xb96,0x3f5,0xb9d,0xba4,0xbac,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xbb4,0xbbc,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0xb28,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa75,0x3a7, +0xbc1,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0xbc9, +0x43c,0xbd1,0xbd1,0xbd8,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c, +0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x91e,0x4a6,0x4a6,0x43c, +0x43c,0x4a6,0x4a6,0xbe0,0x43c,0x43c,0x43c,0x43c,0x43c,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6, +0xbe8,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x67c,0xbf0,0x67c,0x67c,0x67f,0xbf5,0xbf9, +0x858,0xc01,0x3c9,0x3a7,0xc07,0x3a7,0xc0c,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x783,0x3a7,0x3a7,0x3a7, +0x3a7,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c, +0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0xc14, +0x98f,0x67c,0x67c,0x67c,0x67f,0x67c,0x67c,0xc1c,0xc24,0xbf0,0x67c,0xc2c,0x67c,0xc34,0xc39,0x3a7, +0x3a7,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67f,0xc41,0xc4d,0xc52,0xc5a, +0xc49,0x67c,0x67c,0x67c,0x67c,0xc62,0x67c,0x792,0xc6a,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc71,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7, +0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc71,0xc81,0xc79,0xc79,0xc79,0xc82,0xc82,0xc82, +0xc82,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0xc8a,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82, +0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82, +0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82, +0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82, +0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0xc82,0x386,0x386,0x386,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,8,7,8,9,7,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,7,7,7,8,9,0xa,0xa,4, +4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6,2,2,2,2, +2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa,0xa,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0xa,0xa,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x12,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x12,0x12,0x12,0x12, +0x12,7,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,6,0xa,4,4, +4,4,0xa,0xa,0xa,0xa,0,0x900a,0xa,0xb2,0xa,0xa,4,4,2,2, +0xa,0,0xa,0xa,0xa,2,0,0x900a,0xa,0xa,0xa,0xa,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0, +0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xa,0xa,0,0, -0,0,0,0,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0xa, +0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xa,0xa,0,0,0,0,0,0, +0,0,0xa,0,0,0,0,0,0xa,0xa,0,0xa,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xa,0,0,0,0,0, -0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0, +0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0,0, +0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xa,0,0,0xa,0xa,4,1,0xb1,0xb1,0xb1, +0,0,0xa,0,0,0xa,0xa,4,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,0xb1,1,0xb1,0xb1,1, -0xb1,0xb1,1,0xb1,1,1,1,1,1,1,1,1,1,1,1,1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,0xb1,1,0xb1,0xb1,1,0xb1,0xb1,1,0xb1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5, -5,5,0xa,0xa,0xd,4,4,0xd,6,0xd,0xa,0xa,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0x8ad,0xd,0xd,0xd,0x4d,0xd,0x8d,0x8d, -0x8d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x2d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,5,5,5, -5,5,5,5,5,5,4,5,5,0xd,0x4d,0x4d,0xb1,0x8d,0x8d,0x8d, -0xd,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d, +1,1,1,1,1,1,1,1,5,5,5,5,5,5,0xa,0xa, +0xd,4,4,0xd,6,0xd,0xa,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xd,0x8ad,0xd,0xd,0xd,0x4d,0xd,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d, +0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x2d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x8d,0x4d,0x4d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,5,5,5,5,5,5,5, +5,5,4,5,5,0xd,0x4d,0x4d,0xb1,0x8d,0x8d,0x8d,0xd,0x8d,0x8d,0x8d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, +0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d,0x8d,0xd,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,5,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xb1,0xb1,0xa,0xb1,0xb1, -0xb1,0xb1,0x8d,0x8d,2,2,2,2,2,2,2,2,2,2,0x4d,0x4d, -0x4d,0xd,0xd,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xad,0x8d,0xb1,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d, -0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x4d, -0x8d,0x4d,0x4d,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d, -0x8d,0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0x8d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x8d,0x4d,0x8d, +0x4d,0x4d,0x8d,0x8d,0xd,0x8d,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,0xa,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xb1,0xb1,0xa,0xb1,0xb1,0xb1,0xb1,0x8d,0x8d, +2,2,2,2,2,2,2,2,2,2,0x4d,0x4d,0x4d,0xd,0xd,0x4d, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xad, +0x8d,0xb1,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d, +0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x4d,0x8d,0x4d,0x4d,0x8d, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xd,0xd,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x8d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x8d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d, +0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1, -1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1,1,1,1,1, +1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, -0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -1,1,0xa,0xa,0xa,0xa,0x21,1,1,0xb1,1,1,0xb1,0xb1,0xb1,0xb1, -1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0xb1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0x81,0x41,0x41,0x41, -0x41,0x41,0x81,0x81,0x41,0x81,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, -0x81,0x41,0x81,0x81,0x81,0xb1,0xb1,0xb1,1,1,1,1,0x4d,0xd,0x4d,0x4d, -0x4d,0x4d,0xd,0x8d,0x4d,0x8d,0x8d,0xd,0xd,0xd,0xd,0xd,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xb1,0xb1,5,0xb1, +0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,0xa,0xa, +0xa,0xa,0x21,1,1,0xb1,1,1,0xb1,0xb1,0xb1,0xb1,1,0xb1,0xb1,0xb1, +1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xb1,0xb1, +0xb1,0xb1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0x81,0x41,0x41,0x41,0x41,0x41,0x81,0x81, +0x41,0x81,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x81,0x81, +0x81,0xb1,0xb1,0xb1,1,1,1,1,0x4d,0xd,0x4d,0x4d,0x4d,0x4d,0xd,0x8d, +0x4d,0x8d,0x8d,0xd,0xd,0xd,0xd,0xd,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, +0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x2d,0x2d,0x2d,0x4d,0xd, +0xd,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0xd,5,5,0xd,0xd,0xd,0xd,0xd,0xd, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,5,0xb1,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x8d,0x8d,0x8d,0xd,0x8d,0x4d,0x4d,0x8d,0x8d,0x4d, -0x4d,0xd,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0,0, -0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0,0, -0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x8d,0x8d,0x8d,0xd,0x8d,0x4d,0x4d,0x8d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0,0xb1,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0,0,0,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,4,4,0,0,0,0,0,0,0,4,0,0,0xb1,0, +0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0,0, 0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0, 0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,4, -0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0,0,0xb1, -0xb1,0xb1,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1, -0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, -0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,4,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0xb1,0xb1,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, +0xb1,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0,0xb1,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa, -0xa,4,0xa,0,0,0,0,0,0xb1,0,0,0,0xb1,0,0,0, +0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,4,0xa,0, +0,0,0,0,0xb1,0,0,0,0xb1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, +0,0,0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0,0, +0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xa0, -0,0,0,0,0,0,0xa0,0,0,0,0,0,0xb1,0xb1,0,0, +0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, -0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0,0,4,0,0,0,0,0,0,0,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0,0,0xa0,0,0,0,0, +0,0,0xa0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0,0,4,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0xb1,0x310a,0xf20a, -0x310a,0xf20a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0, -0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, -0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0xb1,0xb1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, +0,0,0,0,0,0xb1,0,0xb1,0,0xb1,0x310a,0xf20a,0x310a,0xf20a,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0, +0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xa,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,0x310a,0xf20a,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,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0, -0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0,0,0,4,0,0xb1,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0,0,0,0,0,0,0,0x310a,0xf20a,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,4, +0,0xb1,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0x40,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x4a,0xa,0xa,0x2a,0xb1,0xb1,0xb1,0x12,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x40,0x40,0x40,0x40,0x40,0xb1,0x40,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0x4a,0xa,0xa,0x2a,0xb1,0xb1,0xb1,0x12,0xb1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0, -0,0xb1,0xb1,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0xb1,0xb1,0, -0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0xb1,0, -0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0xa,0,0,0, -0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x40,0x40,0x40,0x40,0x40,0,0,0,0,0,0,0,0,0xb1,0xb1,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xb1,0xb1,0xb1,0,0,0,0,0xb1, +0xb1,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, +0,0xb1,0xb1,0xb1,0,0,0,0,0xa,0,0,0,0xa,0xa,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0xb1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0xb1,0xb1,0,0,0xb1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0xb1,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0, +0,0,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0xb1,0, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0xb1,0,0,0, -0xb1,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0,0xa,0xa,0xa,0xa,6,0x310a,0xf20a,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0x814,0x815, -0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,2,0,0,0,2,2,2,2, -2,2,3,3,0xa,0x310a,0xf20a,0,9,9,9,9,9,9,9,9, -9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9,7,0x8ab,0x8ae,0x8b0,0x8ac,0x8af,6, -4,4,4,4,4,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa, -2,2,2,2,2,2,2,2,2,2,3,3,0xa,0x310a,0xf20a,0, +0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0xb1,0,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0, +0xb1,0xb1,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, +0,0xb1,0,0,0,0,0,0,0xb1,0,0,0,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xa,0xa,0,0xa,0xa,0xa,0xa,0,0xa,0xa,0,0,0,0,0,0, -0,0,0,0,0xa,0,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa, -0xa,0xa,0xa,0xa,0,0xa,0,0xa,0,0xa,0,0,0,0,4,0, -0,0,0,0,0,0,0,0,0,0,0xa,0xa,0,0,0,0, -0x100a,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0,0xa, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0, +0xa,0xa,0xa,0xa,6,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,9, +0xb2,0xb2,0xb2,0xb2,0xb2,0x12,0x814,0x815,0x813,0x816,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, +2,0,0,0,2,2,2,2,2,2,3,3,0xa,0x310a,0xf20a,0, +9,9,9,9,9,9,9,9,9,9,9,0xb2,0x412,0x432,0x8a0,0x8a1, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0,0,0,0, +9,7,0x8ab,0x8ae,0x8b0,0x8ac,0x8af,6,4,4,4,4,4,0xa,0xa,0xa, +0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2, +2,2,3,3,0xa,0x310a,0xf20a,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0,0xa,0xa,0xa,0xa,0, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0xa,0,0xa,0xa, +0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0,0xa, +0,0xa,0,0,0,0,4,0,0,0,0,0,0,0,0,0, +0,0,0xa,0xa,0,0,0,0,0x100a,0xa,0xa,0xa,0xa,0,0,0, +0,0,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a, +0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x900a,0x900a,0x900a,0x100a,0x900a,0x900a, +0x100a,0x100a,0x900a,0x900a,0x900a,0x900a,0x900a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa, +0x700a,0x700a,0x700a,0xb00a,0xb00a,0xb00a,0xa,0xa,0xa,0x100a,3,4,0xa,0x900a,0x100a,0xa, +0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x900a,0x900a,0x900a,0x900a,0xa,0x900a,0xa,0x100a,0xa, +0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa, +0xa,0x100a,0xa,0x100a,0x300a,0xf00a,0x100a,0x100a,0x100a,0x100a,0x100a,0x900a,0x100a,0x900a,0x100a,0x100a, +0x100a,0x100a,0x100a,0x100a,0x900a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a, +0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a, +0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa, +0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a, +0xa,0xa,0x900a,0x100a,0x900a,0x900a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a, +0x300a,0xf00a,0x300a,0xf00a,0x900a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa, +0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa, -0x300a,0xf00a,0x900a,0x900a,0x900a,0x100a,0x900a,0x900a,0x100a,0x100a,0x900a,0x900a,0x900a,0x900a,0x900a,0x100a, -0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0x700a,0x700a,0x700a,0xb00a,0xb00a,0xb00a,0xa,0xa, -0xa,0x100a,3,4,0xa,0x900a,0x100a,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x900a, -0x900a,0x900a,0x900a,0xa,0x900a,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a, -0x100a,0x100a,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,0x300a,0xf00a,0x100a,0x100a, -0x100a,0x100a,0x100a,0x900a,0x100a,0x900a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x900a,0xa,0xa,0xa, -0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a, -0x100a,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a, -0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a, -0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x900a,0x100a,0x900a,0x900a,0x100a,0x900a, -0x100a,0x100a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x900a,0xa,0xa,0xa, -0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a, -0xf00a,0x900a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a, -0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a, +0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a, +0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa,0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa, +0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x900a,0x300a,0xf00a,0xa, +0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa, +0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa, +0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a, +0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x900a,0x100a,0x100a,0x100a,0x100a, +0x900a,0xa,0x100a,0x900a,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x300a, +0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x100a,0xa,0xa,0xa, +0xa,0xa,0x100a,0x900a,0x900a,0x900a,0x100a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x900a,0xa, +0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0x100a,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a, +0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a, +0x100a,0x100a,0xa,0xa,0x100a,0xa,0x100a,0xa,0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa, +0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0xa, -0x300a,0xf00a,0xa,0x500a,0x100a,0xd00a,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0x300a,0xf00a,0xa, -0xa,0xa,0xa,0xa,0x900a,0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x310a,0xf20a, -0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x100a,0x100a,0x100a,0xa,0xa, -0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x100a,0x100a, -0x300a,0xf00a,0xa,0xa,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a, -0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x710a,0x320a,0xf10a,0xb20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a, -0xf20a,0xa,0xa,0x900a,0x100a,0x100a,0x100a,0x100a,0x900a,0xa,0x100a,0x900a,0x300a,0xf00a,0x100a,0x100a, -0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0x100a,0x300a,0xf00a,0xa,0xa, -0xa,0x100a,0xa,0xa,0xa,0xa,0x100a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa, -0x310a,0xf20a,0x310a,0xf20a,0x100a,0xa,0xa,0xa,0xa,0xa,0x100a,0x900a,0x900a,0x900a,0x100a,0xa, -0xa,0xa,0xa,0xa,0x300a,0xf00a,0x900a,0xa,0xa,0xa,0xa,0x100a,0xa,0xa,0xa,0x300a, -0xf00a,0x300a,0xf00a,0x100a,0xa,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a,0x100a, -0x100a,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0xa,0x100a,0xa,0x100a,0xa, -0xa,0x100a,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa, -0xa,0xa,0xa,0xa,0x300a,0xf00a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a, -0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0x100a,0x100a, -0x100a,0x100a,0xa,0x100a,0x100a,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x100a,0x100a,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0x300a,0xf00a,0xa,0xa,0xa,0xa,0x100a,0x100a,0x100a,0x100a,0xa,0x100a,0x100a,0xa,0xa,0x100a, +0x100a,0xa,0xa,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a, 0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a, -0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a, -0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a, -0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a, -0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0x100a,0xa,0x900a,0xa, +0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x100a,0xa,0xa,0x300a,0xf00a, +0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a, +0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0x300a,0xf00a,0xa, +0xa,0xa,0xa,0xa,0x100a,0xa,0x900a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa,0,0,0,0,0,0xa,0xa,0xa, +0xa,0xa,0xa,0,0,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa, +0xa,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa,0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a, +0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a, +0xf20a,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x900a,0xa, -0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0xb1, -0xb1,0xb1,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0,0,0,0,0xa,0,0,0,0,0,0,0, +0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xa,0,0,0,0,0,0xa,0xa, +0,0,0,0,0,0xa,0xa,0xa,9,0xa,0xa,0xa,0xa,0,0,0, +0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a, +0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, -0xa,0xa,0x300a,0xf00a,0x300a,0xf00a,0xa,0xa,0xa,0x300a,0xf00a,0xa,0x300a,0xf00a,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x300a,0xf00a,0xa,0xa, -0x300a,0xf00a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0xb1,0xb1,0,0,0xa,0,0,0,0,0,0xa,0xa,0,0,0,0, -0,0xa,0xa,0xa,9,0xa,0xa,0xa,0xa,0,0,0,0x310a,0xf20a,0x310a,0xf20a, -0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xa, -0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa, 0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xa,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0,0xa,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0,0,0xb1,0,0,0,0,0xb1, +0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xa,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xb1,0xb1,0,0xa,0xa,0xa,0xa,0xb1,0,0,0, -0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0, -0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, -0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, -0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0, -0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1,0,0,0, -0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,1,1,1,1,1,1,1,1,3,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0xb1,0, +0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0xa,0xa,0xa,0xa, +0xb1,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0, +0,0,0,0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x40,0x40,0x40,0x40,0x40,0x60,0,0xa,0xa,0xa,0xa,0,0,0,0, +0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0xb1,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0, +0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0, +0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb1,0,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0, +0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0, +0xb1,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, +1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0,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,0xb1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0,0,0,0,0,1,0xb1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xa,0xd,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,6,0xa,6,0,0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a, -0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3,0x300a,0xf00a,0xa,0,0xa,4,4,0xa, -0,0,0,0,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xa,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,0xa,6,0, +0xa,6,0xa,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,4,0xa,0xa,3,3, +0x300a,0xf00a,0xa,0,0xa,4,4,0xa,0,0,0,0,0xd,0xd,0xd,0xd, 0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xb2,0,0xa,0xa,4,4,4,0xa,0xa,0x310a,0xf20a,0xa,3, -6,3,6,6,2,2,2,2,2,2,2,2,2,2,6,0xa, -0x500a,0xa,0xd00a,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x510a, -0xa,0xd20a,0xa,0x310a,0xf20a,0xa,0x310a,0xf20a,0xa,0xa,0,0,0,0,0,0, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xb2,0,0xa,0xa,4, +4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6,2,2,2,2, +2,2,2,2,2,2,6,0xa,0x500a,0xa,0xd00a,0xa,0xa,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,4,0xa,0xa,0xa,4,4,0,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa, -0xa,0xa,0x12,0x12,0,0xa,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x510a,0xa,0xd20a,0xa,0x310a,0xf20a,0xa,0x310a,0xf20a, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,0xa,0xa, +0xa,4,4,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0xaa,0xaa,0xaa,0xa,0xa,0x12,0x12,0,0xa,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0,0xb1,2,2,2,2,2,2,2,2,2,2,2, +0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0xb1,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, +2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,0,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0xa, -1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1, +1,1,1,1,1,1,1,0xa,1,0xb1,0xb1,0xb1,1,0xb1,0xb1,1, +1,1,1,1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0xb1,0xb1,0xb1,1,1,1,1,0xb1, -0x41,0x81,1,1,0x81,0xb1,0xb1,1,1,1,1,0x41,0x41,0x41,0x41,0x81, +0xb1,0xb1,0xb1,1,1,1,1,0xb1,0x41,0x81,1,1,0x81,0xb1,0xb1,1, +1,1,1,0x41,0x41,0x41,0x41,0x81,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x81,1,0x81, +1,0x81,0x81,1,1,0x61,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61, +0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -0x41,0x41,0x41,0x41,0x41,0x81,1,0x81,1,0x81,0x81,1,1,0x61,0x81,0x81, -0x81,0x81,0x81,0x41,0x41,0x41,0x41,0x61,0x41,0x41,0x41,0x41,0x41,0x81,0x41,0x41, +1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41, +0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81,0x41,0x81,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,0x81,0x81,0x81,0x81,0x41,0x41,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0x41,0x81,0x41,0x81,0x81,0x81,0x41,0x41,0x41,0x81,0x41,0x41,0x81,0x41,0x81,0x81, -0x41,0x81,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,0x81,0x81,0x81,0x81,0x41,0x41,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0x4d,0x4d,0x8d,0x4d,0xb1,0xb1,0xb1,0xb1, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,5,5,5,5,5,5,5,5, -5,5,0xd,0xd,0xd,0xd,0xd,0xd,0x6d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0x4d,0x8d,0x4d,0xb1,0xb1,0xb1,0xb1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +5,5,5,5,5,5,5,5,5,5,0xd,0xd,0xd,0xd,0xd,0xd, +0x6d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1, -1,1,1,0xb1,0xb1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d, -0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d,0x8d,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0x41,1,0x41,0x41, -0x81,0x81,0x81,1,0x41,0x81,0x81,0x41,0x41,0x81,0x41,0x41,1,0x41,0x81,0x81, -0x41,1,1,1,1,0x81,0x41,0x61,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,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,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0, -0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0xb1,0,0,0,0,0xb1, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, +1,1,1,1,1,1,1,1,1,1,1,0xb1,0xb1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0x4d,0x4d,0x4d,0x8d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, +0x4d,0xd,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x4d,0x4d,0x4d, +0x8d,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xd,0xd,0xd,0xd,0x41,0x41,0x41,0x41,0x81,0x81,0x41,0x41,0x41,0x41,0x41,0x41, +0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0x41,1,0x41,0x41,0x81,0x81,0x81,1,0x41,0x81,0x81,0x41, +0x41,0x81,0x41,0x41,1,0x41,0x81,0x81,0x41,1,1,1,1,0x81,0x41,0x61, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,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,0xb1,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0, +0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0xb1, +0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0xb1,0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0, +0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, +0xb1,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0xb1, +0,0,0,0,0,0,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0, -0,0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0, +0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0, +0,0,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0, +0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0xb1,0,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0,0xb1,0,0,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0,0xb1,0,0,0,0,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, +0,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa0, +0xa0,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0xb1,0,0xb1,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0,0xb1,0,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0, -0,0,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, +0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0xb1, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xa0, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0xb1,0, -0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0,0,0,0xb1,0,0xb1, +0,0,0,0,0,0,0,0,4,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0,0,0,0,0,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xa0,0xa0,0xb1,0xb1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0xa0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0,0, -0,0xb1,0,0xb1,0,0,0,0,0,0,0,0,4,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0, +0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,4,4,4,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0xa0,0xa0,0xa0,0xa0, +0xa0,0xa0,0xa0,0xa0,0xa0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,4,4,4, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0xa,0,0xb1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0, -0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2, +0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xb1, +0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0xb1, 0xb1,0xb1,0,0,0,0,0,0,0,0,0,0xb2,0xb2,0xb2,0xb2,0xb2, 0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1, 0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xa,0xa,0xb1,0xb1,0xb1,0xa,0,0,0,0,0,0,0,0,0,0, +0,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xb1,0xb1,0xb1,0xa,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x100a,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x100a,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x100a,0,0,0,0,0,0,0,0,0,0,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +0,0,0,0,0,0,0,0,0,0,0,0x100a,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0x100a,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0x100a,0,0,0,0, +0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0, -0,0xb1,0,0,0,0,0,0,0,0,0,0,0xb1,0,0,0, +2,2,2,2,2,2,2,2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, +0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0,0,0,0,0,0,0,0,0xb1,0,0,0,0,0,0, +0,0,0,0,0xb1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, +0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0, -0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1, -0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xb1,0xb1,0xb1,0xb1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,1,1,1,1,1,1,1,1,1,0x41,0x41,0x41,0x41, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0,0xb1,0xb1,0,0xb1,0xb1,0xb1,0xb1,0xb1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xb1,0xb1,0xb1,0xb1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,1,1,1,1,1, +1,1,1,1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41, -0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xa1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd, -0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,2,2,2,2, -2,2,2,2,2,2,2,0xa,0xa,0xa,0xa,0xa,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa, +0x41,0x41,0x41,0x41,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xa,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,2,2,2,2,2,2,2,2,2,2,2,0xa, 0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0xa,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0xa,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0,0,0, -0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0, -0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, 0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, +0xa,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0,0xa,0xa,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0,0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa, +0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0, 0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0, 0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, -0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0, +0xa,0xa,0xa,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0,0, +0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0xa,0xa,0xa,0xa, +0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, +2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x12,0x12, +0,0,0x12,0x12,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, -0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2, -0x12,0xb2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0xb2,0xb2,0xb2,0xb2,0x12,0xb2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0,0,0,0 +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0,0,0 }; static const uint32_t ubidi_props_mirrors[40]={ @@ -808,7 +827,7 @@ static const uint32_t ubidi_props_mirrors[40]={ 0x16029b8,0x4029f5,0x1802ade,0x1c02ae3,0x1a02ae4,0x1e02ae5,0xe02aee,0x602bfe }; -static const uint8_t ubidi_props_jgArray[680]={ +static const uint8_t ubidi_props_jgArray[684]={ 0x2d,0,3,3,0x2c,3,0x2d,3,4,0x2a,4,4,0xd,0xd,0xd,6, 6,0x1f,0x1f,0x23,0x23,0x21,0x21,0x28,0x28,1,1,0xb,0xb,0x37,0x37,0x37, 0,9,0x1d,0x13,0x16,0x18,0x1a,0x10,0x2c,0x2d,0x2d,0,0,0,0,0, @@ -846,12 +865,12 @@ static const uint8_t ubidi_props_jgArray[680]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x5d,0x5a,0x60,0x63,0x5e,0x5f,0x59,0x61,0x5b,0x5c,0x62,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,0,0,0,0x66,0,0,0x1a,0xd,0x28,0x28,0xb,0x67,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4,4,0xd,0x28,9,0x1d,0x16,0x18,0x2d,0x2d,0x1f,0x2c,0x39,0,6,0x21, -0xb,0x55,0x1f,1,0x13,0,4,4,4,0x1f,0x2d,0x56,0x58,0x57,4,4, -4,0xd,0xb,1,0x58,0xd,0xd,0x16 +0xb,0x55,0x1f,1,0x13,0x1d,4,4,4,0x1f,0x2d,0x56,0x58,0x57,4,4, +4,0xd,0xb,1,0x58,0xd,0xd,0x16,0xb,0,0,0 }; static const uint8_t ubidi_props_jgArray2[612]={ @@ -904,16 +923,16 @@ static const UBiDiProps ubidi_props_singleton={ ubidi_props_jgArray2, { ubidi_props_trieIndex, - ubidi_props_trieIndex+3568, + ubidi_props_trieIndex+3612, NULL, - 3568, - 8968, + 3612, + 9264, 0x1a0, - 0xe70, + 0xe9c, 0x0, 0x0, 0x110000, - 0x30f4, + 0x3248, NULL, 0, FALSE, FALSE, 0, NULL }, { 2,2,0,0 } diff --git a/deps/icu-small/source/common/ubidiln.cpp b/deps/icu-small/source/common/ubidiln.cpp index 3545f4e111ce78..fea239380a3bca 100644 --- a/deps/icu-small/source/common/ubidiln.cpp +++ b/deps/icu-small/source/common/ubidiln.cpp @@ -31,7 +31,7 @@ * text in a single paragraph or in a line of a single paragraph * which has already been processed according to * the Unicode 6.3 BiDi algorithm as defined in - * http://www.unicode.org/unicode/reports/tr9/ , version 28, + * https://www.unicode.org/reports/tr9/ , version 28, * also described in The Unicode Standard, Version 6.3.0 . * * This means that there is a UBiDi object with a levels @@ -530,7 +530,7 @@ static int32_t getRunFromLogicalIndex(UBiDi *pBiDi, int32_t logicalIndex) { visualStart+=length; } /* we should never get here */ - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } /* diff --git a/deps/icu-small/source/common/ubiditransform.cpp b/deps/icu-small/source/common/ubiditransform.cpp index ab3dcbe14c0cfe..d56bf1518bfa19 100644 --- a/deps/icu-small/source/common/ubiditransform.cpp +++ b/deps/icu-small/source/common/ubiditransform.cpp @@ -118,7 +118,7 @@ ubiditransform_close(UBiDiTransform *pBiDiTransform) /** * Performs Bidi resolution of text. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -135,7 +135,7 @@ action_resolve(UBiDiTransform *pTransform, UErrorCode *pErrorCode) /** * Performs basic reordering of text (Logical -> Visual LTR). - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -155,7 +155,7 @@ action_reorder(UBiDiTransform *pTransform, UErrorCode *pErrorCode) /** * Sets "inverse" mode on the UBiDi object. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -174,7 +174,7 @@ action_setInverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode) /** * Sets "runs only" reordering mode indicating a Logical LTR <-> Logical RTL * transformation. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -191,7 +191,7 @@ action_setRunsOnly(UBiDiTransform *pTransform, UErrorCode *pErrorCode) /** * Performs string reverse. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -212,7 +212,7 @@ action_reverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode) * Applies a new value to the text that serves as input at the current * processing step. This value is identical to the original one when we begin * the processing, but usually changes as the transformation progresses. - * + * * @param pTransform A pointer to the UBiDiTransform structure. * @param newSrc A pointer whose value is to be used as input text. * @param newLength A length of the new text in UChars. @@ -243,12 +243,12 @@ updateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength, } u_strncpy(pTransform->src, newSrc, newLength); pTransform->srcLength = u_terminateUChars(pTransform->src, - pTransform->srcSize, newLength, pErrorCode); + pTransform->srcSize, newLength, pErrorCode); } /** * Calls a lower level shaping function. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param options Shaping options. * @param pErrorCode Pointer to the error code value. @@ -263,7 +263,7 @@ doShape(UBiDiTransform *pTransform, uint32_t options, UErrorCode *pErrorCode) /** * Performs digit and letter shaping. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -293,7 +293,7 @@ action_shapeArabic(UBiDiTransform *pTransform, UErrorCode *pErrorCode) /** * Performs character mirroring. - * + * * @param pTransform Pointer to the UBiDiTransform structure. * @param pErrorCode Pointer to the error code value. * @@ -314,10 +314,10 @@ action_mirror(UBiDiTransform *pTransform, UErrorCode *pErrorCode) } do { UBool isOdd = ubidi_getLevelAt(pTransform->pBidi, i) & 1; - U16_NEXT(pTransform->src, i, pTransform->srcLength, c); + U16_NEXT(pTransform->src, i, pTransform->srcLength, c); U16_APPEND_UNSAFE(pTransform->dest, j, isOdd ? u_charMirror(c) : c); } while (i < pTransform->srcLength); - + *pTransform->pDestLength = pTransform->srcLength; pTransform->reorderingOptions = UBIDI_REORDER_DEFAULT; return TRUE; @@ -416,7 +416,7 @@ resolveBaseDirection(const UChar *text, uint32_t length, /** * Finds a valid ReorderingScheme matching the * caller-defined scheme. - * + * * @return A valid ReorderingScheme object or NULL */ static const ReorderingScheme* diff --git a/deps/icu-small/source/common/ucase.cpp b/deps/icu-small/source/common/ucase.cpp index 7f779441975d23..4aa856507aafb1 100644 --- a/deps/icu-small/source/common/ucase.cpp +++ b/deps/icu-small/source/common/ucase.cpp @@ -351,7 +351,7 @@ strcmpMax(const UChar *s, int32_t length, const UChar *t, int32_t max) { if(max==0 || *t==0) { return 0; /* equal to length of both strings */ } else { - return -max; /* return lengh difference */ + return -max; /* return length difference */ } } @@ -690,7 +690,7 @@ ucase_isCaseSensitive(UChar32 c) { * - The general category of C is * Nonspacing Mark (Mn), or Enclosing Mark (Me), or Format Control (Cf), or * Letter Modifier (Lm), or Symbol Modifier (Sk) - * - C is one of the following characters + * - C is one of the following characters * U+0027 APOSTROPHE * U+00AD SOFT HYPHEN (SHY) * U+2019 RIGHT SINGLE QUOTATION MARK @@ -1542,7 +1542,7 @@ U_CAPI UChar32 U_EXPORT2 u_tolower(UChar32 c) { return ucase_tolower(c); } - + /* Transforms the Unicode character to its upper case equivalent.*/ U_CAPI UChar32 U_EXPORT2 u_toupper(UChar32 c) { diff --git a/deps/icu-small/source/common/ucase_props_data.h b/deps/icu-small/source/common/ucase_props_data.h index aead6d58d1ec9c..8bbf403cdcacd8 100644 --- a/deps/icu-small/source/common/ucase_props_data.h +++ b/deps/icu-small/source/common/ucase_props_data.h @@ -1,6 +1,5 @@ -// © 2016 and later: Unicode, Inc. and others. +// Copyright (C) 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -// // Copyright (C) 1999-2016, International Business Machines // Corporation and others. All Rights Reserved. // @@ -8,148 +7,147 @@ // // machine-generated by: icu/tools/unicode/c/genprops/casepropsbuilder.cpp - #ifdef INCLUDED_FROM_UCASE_CPP -static const UVersionInfo ucase_props_dataVersion={0xd,0,0,0}; +static const UVersionInfo ucase_props_dataVersion={0xe,0,0,0}; -static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x70c2,0x6098,0x683,0x172,0,0,0,0,0,0,0,0,0,0,3}; +static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x7512,0x64e8,0x683,0x172,0,0,0,0,0,0,0,0,0,0,3}; -static const uint16_t ucase_props_trieIndex[12356]={ -0x336,0x33e,0x346,0x34e,0x35c,0x364,0x36c,0x374,0x37c,0x384,0x38b,0x393,0x39b,0x3a3,0x3ab,0x3b3, -0x3b9,0x3c1,0x3c9,0x3d1,0x3d9,0x3e1,0x3e9,0x3f1,0x3f9,0x401,0x409,0x411,0x419,0x421,0x429,0x431, -0x439,0x441,0x449,0x451,0x459,0x461,0x469,0x471,0x46d,0x475,0x47a,0x482,0x489,0x491,0x499,0x4a1, -0x4a9,0x4b1,0x4b9,0x4c1,0x355,0x35d,0x4c6,0x4ce,0x4d3,0x4db,0x4e3,0x4eb,0x4ea,0x4f2,0x4f7,0x4ff, -0x507,0x50e,0x512,0x355,0x355,0x355,0x519,0x521,0x529,0x52b,0x533,0x53b,0x53f,0x540,0x548,0x550, -0x558,0x540,0x560,0x565,0x558,0x540,0x56d,0x575,0x53f,0x57d,0x585,0x58d,0x595,0x355,0x59d,0x355, -0x5a5,0x4ec,0x5ad,0x58d,0x53f,0x57d,0x5b4,0x58d,0x5bc,0x5be,0x548,0x58d,0x53f,0x355,0x5c6,0x355, -0x355,0x5cc,0x5d3,0x355,0x355,0x5d7,0x5df,0x355,0x5e3,0x5ea,0x355,0x5f1,0x5f9,0x600,0x608,0x355, -0x355,0x60d,0x615,0x61d,0x625,0x62d,0x634,0x63c,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x644,0x355,0x355,0x654,0x654,0x64c, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x65c,0x65c,0x54c,0x54c,0x355,0x662,0x66a,0x355, -0x672,0x355,0x67a,0x355,0x681,0x687,0x355,0x355,0x355,0x68f,0x355,0x355,0x355,0x355,0x355,0x355, -0x696,0x355,0x69d,0x6a5,0x355,0x6ad,0x6b5,0x355,0x57c,0x6b8,0x6c0,0x6c6,0x5bc,0x6ce,0x355,0x6d5, -0x355,0x6da,0x355,0x6e0,0x6e8,0x6ec,0x6f4,0x6fc,0x704,0x709,0x70c,0x714,0x724,0x71c,0x734,0x72c, -0x37c,0x73c,0x37c,0x744,0x747,0x37c,0x74f,0x37c,0x757,0x75f,0x767,0x76f,0x777,0x77f,0x787,0x78f, -0x797,0x79e,0x355,0x7a6,0x7ae,0x355,0x7b6,0x7be,0x7c6,0x7ce,0x7d6,0x7de,0x7e6,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x7e9,0x7ef,0x7f5,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x7fd,0x802,0x806,0x80e,0x37c,0x37c,0x37c,0x816,0x81e,0x825,0x355,0x82a,0x355,0x355,0x355,0x832, -0x355,0x677,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x53e,0x83a,0x355,0x355,0x841,0x355,0x355,0x849,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x851,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x6e0,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x857,0x355,0x85f,0x864,0x86c,0x355,0x355,0x874,0x87c,0x884,0x37c,0x889,0x891,0x897,0x89f,0x8a2, -0x8aa,0x8b1,0x355,0x355,0x355,0x355,0x8b8,0x8c0,0x355,0x8c8,0x8cf,0x355,0x529,0x8d4,0x8dc,0x681, -0x355,0x8e2,0x8ea,0x8ee,0x355,0x8f6,0x8fe,0x906,0x355,0x90c,0x910,0x918,0x928,0x920,0x355,0x930, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x938,0x355,0x355,0x355,0x355,0x940,0x5bc,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x945,0x94d,0x951,0x355,0x355,0x355,0x355,0x338,0x33e,0x959,0x961,0x968,0x4ec,0x355,0x355,0x970, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0xd58,0xd58,0xd70,0xdb0,0xdf0,0xe2c,0xe6c,0xeac,0xee4,0xf24,0xf64,0xfa4,0xfe4,0x1024,0x1064,0x10a4, -0x10e4,0x1124,0x1164,0x11a4,0x11b4,0x11e8,0x1224,0x1264,0x12a4,0x12e4,0xd54,0x1318,0x134c,0x138c,0x13a8,0x13dc, -0x9e1,0xa11,0xa51,0xa90,0x188,0x188,0xac8,0x188,0x188,0x188,0x188,0x188,0x188,0xaf1,0x188,0x188, -0x188,0x188,0x188,0x188,0x188,0x188,0x188,0xb31,0x188,0x188,0xb66,0xba5,0xbe5,0xc1f,0xc56,0x188, +static const uint16_t ucase_props_trieIndex[12908]={ +0x354,0x35c,0x364,0x36c,0x37a,0x382,0x38a,0x392,0x39a,0x3a2,0x3a9,0x3b1,0x3b9,0x3c1,0x3c9,0x3d1, +0x3d7,0x3df,0x3e7,0x3ef,0x3f7,0x3ff,0x407,0x40f,0x417,0x41f,0x427,0x42f,0x437,0x43f,0x447,0x44f, +0x457,0x45f,0x467,0x46f,0x477,0x47f,0x487,0x48f,0x48b,0x493,0x498,0x4a0,0x4a7,0x4af,0x4b7,0x4bf, +0x4c7,0x4cf,0x4d7,0x4df,0x373,0x37b,0x4e4,0x4ec,0x4f1,0x4f9,0x501,0x509,0x508,0x510,0x515,0x51d, +0x525,0x52c,0x530,0x373,0x537,0x354,0x547,0x53f,0x54f,0x551,0x559,0x561,0x565,0x566,0x56e,0x576, +0x57e,0x566,0x586,0x58b,0x57e,0x566,0x593,0x59b,0x565,0x5a3,0x5ab,0x5b3,0x5bb,0x373,0x5c3,0x373, +0x5cb,0x5cd,0x5d5,0x5b3,0x565,0x5a3,0x5dc,0x5b3,0x5e4,0x5e6,0x56e,0x5b3,0x565,0x373,0x5ee,0x373, +0x373,0x5f4,0x5fb,0x373,0x373,0x5ff,0x607,0x373,0x60b,0x612,0x373,0x619,0x621,0x628,0x630,0x373, +0x373,0x635,0x63d,0x645,0x64d,0x655,0x65c,0x664,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x66c,0x373,0x373,0x67c,0x67c,0x674, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x684,0x68a,0x572,0x572,0x373,0x690,0x698,0x373, +0x6a0,0x373,0x6a8,0x373,0x6af,0x6b5,0x373,0x373,0x373,0x6bd,0x373,0x373,0x373,0x373,0x373,0x373, +0x6c4,0x373,0x6cb,0x6d3,0x373,0x6db,0x6e3,0x373,0x5a2,0x6e7,0x6ef,0x6f5,0x5e4,0x6fd,0x373,0x704, +0x373,0x709,0x373,0x70f,0x717,0x71b,0x723,0x72b,0x733,0x738,0x73b,0x743,0x753,0x74b,0x763,0x75b, +0x39a,0x76b,0x39a,0x773,0x776,0x39a,0x77e,0x39a,0x786,0x78e,0x796,0x79e,0x7a6,0x7ae,0x7b6,0x7be, +0x7c6,0x7cd,0x373,0x7d5,0x7dd,0x373,0x7e5,0x7ed,0x7f5,0x7fd,0x805,0x80d,0x815,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x818,0x81e,0x824,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x82c,0x830,0x834,0x83c,0x39a,0x39a,0x39a,0x844,0x84c,0x853,0x373,0x858,0x373,0x373,0x373,0x860, +0x373,0x6a5,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x564,0x868,0x373,0x373,0x86f,0x373,0x373,0x877,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x87f,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x70f,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x885,0x373,0x88d,0x892,0x89a,0x373,0x373,0x8a2,0x8aa,0x8b2,0x39a,0x8b7,0x8bf,0x8c5,0x8cc,0x8d3, +0x8db,0x8e2,0x373,0x373,0x373,0x373,0x8e9,0x8f1,0x373,0x8f9,0x900,0x373,0x54f,0x905,0x90d,0x6af, +0x373,0x913,0x91b,0x91f,0x373,0x927,0x92f,0x937,0x373,0x93d,0x941,0x949,0x959,0x951,0x373,0x961, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x969,0x373,0x373,0x373,0x373,0x971,0x54f,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x976,0x97e,0x982,0x373,0x373,0x373,0x373,0x356,0x35c,0x98a,0x992,0x999,0x50a,0x373,0x373,0x9a1, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0xdd0,0xdd0,0xde8,0xe28,0xe68,0xea4,0xee4,0xf24,0xf5c,0xf9c,0xfdc,0x101c,0x105c,0x109c,0x10dc,0x111c, +0x115c,0x119c,0x11dc,0x121c,0x122c,0x1260,0x129c,0x12dc,0x131c,0x135c,0xdcc,0x1390,0x13c4,0x1404,0x1420,0x1454, +0x9e1,0xa1f,0xa5f,0xa9e,0x188,0x188,0xad6,0x188,0x188,0x188,0x188,0x188,0x188,0xaff,0x188,0x188, +0x188,0x188,0x188,0x188,0x188,0xb3f,0x188,0xb7f,0x188,0xba5,0xbe0,0xc1f,0xc5f,0xc99,0xcd0,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, @@ -174,212 +172,222 @@ static const uint16_t ucase_props_trieIndex[12356]={ 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, 0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188, -0xc96,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x977,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x6b5,0x355,0x355,0x355,0x97f,0x355,0x355,0x355, -0x355,0x987,0x98d,0x991,0x355,0x355,0x995,0x999,0x99f,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x9a7,0x9ab,0x355,0x355,0x355,0x355,0x355,0x9b3,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x9bb,0x9bf,0x9c7,0x9cb,0x355,0x9d2,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x9d8,0x355,0x355,0x355,0x355,0x9df,0x355,0x355,0x355,0x355, -0x355,0x53f,0x9e4,0x9eb,0x5bd,0x5bc,0x9ef,0x53c,0x355,0x9f7,0x9fe,0x355,0xa04,0x5bc,0xa09,0xa11, -0x355,0x355,0xa16,0x355,0x355,0x355,0x355,0x338,0xa1e,0x5bc,0x5be,0xa26,0xa2d,0x355,0x355,0x355, -0x355,0x355,0x9e4,0xa35,0x355,0x355,0xa3d,0xa45,0x355,0x355,0x355,0x355,0x355,0x355,0xa49,0xa51, -0x355,0x355,0xa59,0x4b0,0x355,0x355,0xa61,0x355,0x355,0xa67,0xa6f,0x355,0x355,0x355,0x355,0x355, -0x355,0xa74,0x355,0x355,0x355,0xa7c,0xa84,0x355,0x355,0xa8c,0xa94,0x355,0x355,0x355,0xa97,0x6b5, -0xa9f,0xaa3,0xaab,0x355,0xab2,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0xab9,0x355,0x355,0x940,0xac1,0x355,0x355,0x355,0xac7,0xacf,0x355,0xad3,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0xad9,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0xadf,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0xae6,0x355,0xaec,0x57c,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0xa7c,0xa84,0x355,0x355,0x355,0x355,0x355,0x355,0x677,0x355,0xaf2,0x355,0x355, -0xafa,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0xaff,0x57c,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0xb07,0xb0f,0xb15,0x355,0x355,0x355,0x355,0xb1d,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0xb25,0xb2d,0xb32,0xb38,0xb40,0xb48,0xb50,0xb29,0xb58,0xb60, -0xb68,0xb6f,0xb2a,0xb25,0xb2d,0xb28,0xb38,0xb2b,0xb26,0xb77,0xb29,0xb7f,0xb87,0xb8f,0xb96,0xb82, -0xb8a,0xb92,0xb99,0xb85,0xba1,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x87c,0xba9,0x87c,0xbb0,0xbb7,0xbbf,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0xbc7,0xbcf,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0xbd3,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x9d0,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0xbdb,0x355,0xbe3,0xbeb,0xbf2,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0xb21, -0xbfa,0xbfa,0xc00,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x9f9,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x53f,0x87c,0x87c,0x87c,0x355,0x355,0x355,0x355,0x87c,0x87c, -0x87c,0x87c,0x87c,0x87c,0x87c,0xc08,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355,0x355, -0x355,0x355,0x355,0x355,0x355,0x355,0x335,0x335,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0, -0,0,4,0,0,0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0xa,0x5a,0x7a,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0xba,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0,0,0,4,0,4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf9,0xf031,0x149,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x189,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,0,1,0,0,4,0,4, -0,0,0,0,4,0x1c9,0,4,4,0,1,0,0,0,0,0, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1fa,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x5a,0x5a,0x1012,0x1012, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x239, -0xf011,0xf011,0xf011,0xf011,0xf011,0x2d9,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x3c91, +0xd10,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x9a8,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x9b0,0x373,0x373,0x373,0x9b3,0x373,0x373,0x373, +0x373,0x9bb,0x9c1,0x9c5,0x373,0x373,0x9c9,0x9cd,0x9d3,0x373,0x373,0x373,0x9da,0x9de,0x9e6,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x9f6,0x9ee,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x9fe, +0xa02,0x373,0x373,0x373,0x373,0x373,0xa0a,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0xa12,0xa16,0xa1e,0xa22,0x373,0xa29,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0xa2f,0x373,0x373,0x373,0x373,0xa36,0x373,0xa3e,0x373,0x373,0x373,0x565, +0xa40,0xa47,0xa4b,0x5e4,0xa53,0xa5b,0x373,0xa63,0xa6a,0x373,0xa70,0x5e4,0xa75,0xa7d,0x373,0x373, +0xa82,0x373,0x373,0x373,0x373,0x356,0xa8a,0x5e4,0x5e6,0xa92,0xa99,0x373,0x373,0x373,0x373,0x373, +0xa40,0xaa1,0x373,0x373,0xaa9,0xab1,0x373,0x373,0x373,0x373,0x373,0x373,0xab5,0xabd,0x373,0x373, +0xac5,0x4ce,0x373,0x373,0xacd,0x373,0x373,0xad3,0xadb,0x373,0x373,0x373,0x373,0x373,0x373,0xae0, +0x373,0x373,0x373,0xae8,0xaf0,0x373,0x373,0xaf8,0xb00,0x373,0x373,0x373,0xb03,0x9b0,0xb0b,0xb0f, +0xb17,0x373,0xb1e,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xb25, +0x373,0x373,0x971,0xb2d,0x373,0x373,0x373,0xb33,0xb3b,0x373,0xb3f,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0xb45,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xb4b,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0xb52,0x373,0xb58,0x5a2,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0xae8,0xaf0,0x373,0x373,0x373,0x373,0x373,0x373,0x6a5,0x373,0xb5e,0x373,0x373,0xb66,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xb6b,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0xb73,0x5a2,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x8aa,0xb7b,0xb82, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xb89,0xb91,0xb97,0x373,0x373, +0x373,0x373,0xb9f,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0xba7,0xbaf,0xbb4,0xbba,0xbc2,0xbca,0xbd2,0xbab,0xbda,0xbe2,0xbea,0xbf1,0xbac,0xba7,0xbaf,0xbaa, +0xbba,0xbad,0xba8,0xbf9,0xbab,0xc01,0xc09,0xc11,0xc18,0xc04,0xc0c,0xc14,0xc1b,0xc07,0xc23,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x8aa, +0xc2b,0x8aa,0xc32,0xc39,0xc41,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xc51,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xc49, +0xc59,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xc5d,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0xaa5,0x373,0xa27,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xc65, +0x373,0xc6d,0xc75,0xc7c,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xba3,0xc84,0xc84,0xc8a,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0xa65, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x565,0x8aa,0x8aa,0x8aa,0x373,0x373,0x373,0x373,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0x8aa,0xc92, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373,0x373, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,0, +0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, +0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0xa,0x5a,0x7a,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0xba,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0,0,0,4,0, +4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf9,0xf031,0x149,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0x189,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +4,0,1,0,0,4,0,4,0,0,0,0,4,0x1c9,0,4, +4,0,1,0,0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1fa,0x1012,0x1012, +0x1012,0x1012,0x1012,0x1012,0x5a,0x5a,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x239,0xf011,0xf011,0xf011,0xf011,0xf011,0x2d9,0xf011,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x3c91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x31a,0xff91,0x92,0xff91,0x92,0xff91,0x31a,0xffb1, -0x33a,0x389,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92, -0xff91,0x92,0xff91,0x92,0xff91,0x3d9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x31a,0xff91,0x92,0xff91,0x92,0xff91,0x31a,0xffb1,0x33a,0x389,0x92,0xff91,0x92,0xff91,0x92,0xff91, +1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x3d9,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0xc392,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x459,0x6191,0x6912,0x92,0xff91, -0x92,0xff91,0x6712,0x92,0xff91,0x6692,0x6692,0x92,0xff91,1,0x2792,0x6512,0x6592,0x92,0xff91,0x6692, -0x6792,0x3091,0x6992,0x6892,0x92,0xff91,0x5191,1,0x6992,0x6a92,0x4111,0x6b12,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x6d12,0x92,0xff91,0x6d12,1,1,0x92,0xff91,0x6d12,0x92,0xff91,0x6c92,0x6c92,0x92, -0xff91,0x92,0xff91,0x6d92,0x92,0xff91,1,0,0x92,0xff91,1,0x1c11,0,0,0,0, -0x48a,0x4bb,0x4f9,0x52a,0x55b,0x599,0x5ca,0x5fb,0x639,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92, -0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xd891,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x669,0x6ea,0x71b,0x759, -0x92,0xff91,0xcf92,0xe412,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xc392,0x92,0xff91,0x92, +0xff91,0x92,0xff91,0x459,0x6191,0x6912,0x92,0xff91,0x92,0xff91,0x6712,0x92,0xff91,0x6692,0x6692,0x92, +0xff91,1,0x2792,0x6512,0x6592,0x92,0xff91,0x6692,0x6792,0x3091,0x6992,0x6892,0x92,0xff91,0x5191,1, +0x6992,0x6a92,0x4111,0x6b12,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x6d12,0x92,0xff91,0x6d12,1,1, +0x92,0xff91,0x6d12,0x92,0xff91,0x6c92,0x6c92,0x92,0xff91,0x92,0xff91,0x6d92,0x92,0xff91,1,0, +0x92,0xff91,1,0x1c11,0,0,0,0,0x48a,0x4bb,0x4f9,0x52a,0x55b,0x599,0x5ca,0x5fb, +0x639,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92, +0xff91,0xd891,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x669,0x6ea,0x71b,0x759,0x92,0xff91,0xcf92,0xe412,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0xbf12,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,1,1,1,1,1,0x78a,0x92, -0xff91,0xae92,0x7aa,0x7c9,0x7c9,0x92,0xff91,0x9e92,0x2292,0x2392,0x92,0xff91,0x92,0xffb1,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x7e9,0x809,0x829,0x9711,0x9911,1,0x9991,0x9991,1,0x9b11,1,0x9a91, -0x849,1,1,1,0x9991,0x869,1,0x9891,1,0x889,0x8a9,1,0x97b1,0x9691,0x8a9,0x8c9, -0x8e9,1,1,0x9691,1,0x909,0x9591,1,1,0x9511,1,1,1,1,1,1, -1,0x929,1,1,0x9311,1,0x949,0x9311,1,1,1,0x969,0x9311,0xdd91,0x9391,0x9391, -0xdc91,1,1,1,1,1,0x9291,1,0,1,1,1,1,1,1,1, -1,0x989,0x9a9,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,5,5,0x25,5,5,5,5,5,5,4,4,4, -0x14,4,0x14,4,5,5,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,5,5,5,5,5,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,0x54,0x54,0x44,0x44,0x44,0x44,0x44,0x9cc,0x54,0x44,0x54,0x44, -0x54,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64, -0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, -0x64,0x64,0x64,0x64,0x64,0x74,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, -0x64,0x44,0x44,0x44,0x44,0x44,0x54,0x44,0x44,0x9dd,0x44,0x64,0x64,0x64,0x44,0x44, -0x44,0x64,0x64,4,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x44,0x64,0x64,0x64,0x44, -0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x92,0xff91,0x92,0xff91,4,4,0x92,0xff91,0,0,5,0x4111, -0x4111,0x4111,0,0x3a12,0,0,0,0,4,4,0x1312,4,0x1292,0x1292,0x1292,0, -0x2012,0,0x1f92,0x1f92,0xa29,0x1012,0xafa,0x1012,0x1012,0xb3a,0x1012,0x1012,0xb7a,0xbca,0xc1a,0x1012, -0xc5a,0x1012,0x1012,0x1012,0xc9a,0xcda,0,0xd1a,0x1012,0x1012,0xd5a,0x1012,0x1012,0xd9a,0x1012,0x1012, -0xed11,0xed91,0xed91,0xed91,0xdd9,0xf011,0xea9,0xf011,0xf011,0xee9,0xf011,0xf011,0xf29,0xf79,0xfc9,0xf011, -0x1009,0xf011,0xf011,0xf011,0x1049,0x1089,0x10c9,0x10f9,0xf011,0xf011,0x1139,0xf011,0xf011,0x1179,0xf011,0xf011, -0xe011,0xe091,0xe091,0x412,0x11b9,0x11e9,2,2,2,0x1239,0x1269,0xfc11,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xbf12,1,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x1299,0x12c9,0x391,0xc631,0x12fa,0x1349,0,0x92,0xff91,0xfc92,0x92,0xff91, -1,0xbf12,0xbf12,0xbf12,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812, -0x2812,0x2812,0x2812,0x2812,0x1012,0x1012,0x137a,0x1012,0x13ba,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x13fa,0x1012,0x1012,0x143a,0x147a,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x14ca,0x1012, -0x1012,0x1012,0x1012,0x1012,0xf011,0xf011,0x1509,0xf011,0x1549,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0x1589,0xf011,0xf011,0x15c9,0x1609,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x1659,0xf011, -0xf011,0xf011,0xf011,0xf011,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd831,0xd811,0xd831,0xd811,0xd811,0xd811, -0xd811,0xd811,0xd811,0xd811,0x92,0xff91,0x169a,0x16d9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,0x44,0x44,0x44,0x44,4,4,0x92,0xff91, +1,1,1,1,1,1,0x78a,0x92,0xff91,0xae92,0x7aa,0x7c9,0x7c9,0x92,0xff91,0x9e92, +0x2292,0x2392,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x7e9,0x809,0x829,0x9711, +0x9911,1,0x9991,0x9991,1,0x9b11,1,0x9a91,0x849,1,1,1,0x9991,0x869,1,0x9891, +1,0x889,0x8a9,1,0x97b1,0x9691,0x8a9,0x8c9,0x8e9,1,1,0x9691,1,0x909,0x9591,1, +1,0x9511,1,1,1,1,1,1,1,0x929,1,1,0x9311,1,0x949,0x9311, +1,1,1,0x969,0x9311,0xdd91,0x9391,0x9391,0xdc91,1,1,1,1,1,0x9291,1, +0,1,1,1,1,1,1,1,1,0x989,0x9a9,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,5,5,0x25,5, +5,5,5,5,5,4,4,4,0x14,4,0x14,4,5,5,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5, +5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,0x54,0x54,0x44,0x44, +0x44,0x44,0x44,0x9cc,0x54,0x44,0x54,0x44,0x54,0x44,0x44,0x44,0x44,0x44,0x44,0x54, +0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, +0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x74,0x64,0x64, +0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x54,0x44, +0x44,0x9dd,0x44,0x64,0x64,0x64,0x44,0x44,0x44,0x64,0x64,4,0x44,0x44,0x44,0x64, +0x64,0x64,0x64,0x44,0x64,0x64,0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x92,0xff91,0x92,0xff91, +4,4,0x92,0xff91,0,0,5,0x4111,0x4111,0x4111,0,0x3a12,0,0,0,0, +4,4,0x1312,4,0x1292,0x1292,0x1292,0,0x2012,0,0x1f92,0x1f92,0xa29,0x1012,0xafa,0x1012, +0x1012,0xb3a,0x1012,0x1012,0xb7a,0xbca,0xc1a,0x1012,0xc5a,0x1012,0x1012,0x1012,0xc9a,0xcda,0,0xd1a, +0x1012,0x1012,0xd5a,0x1012,0x1012,0xd9a,0x1012,0x1012,0xed11,0xed91,0xed91,0xed91,0xdd9,0xf011,0xea9,0xf011, +0xf011,0xee9,0xf011,0xf011,0xf29,0xf79,0xfc9,0xf011,0x1009,0xf011,0xf011,0xf011,0x1049,0x1089,0x10c9,0x10f9, +0xf011,0xf011,0x1139,0xf011,0xf011,0x1179,0xf011,0xf011,0xe011,0xe091,0xe091,0x412,0x11b9,0x11e9,2,2, +2,0x1239,0x1269,0xfc11,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x1299,0x12c9,0x391,0xc631, +0x12fa,0x1349,0,0x92,0xff91,0xfc92,0x92,0xff91,1,0xbf12,0xbf12,0xbf12,0x2812,0x2812,0x2812,0x2812, +0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x2812,0x1012,0x1012,0x137a,0x1012, +0x13ba,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x13fa,0x1012,0x1012,0x143a,0x147a,0x1012, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x14ca,0x1012,0x1012,0x1012,0x1012,0x1012,0xf011,0xf011,0x1509,0xf011, +0x1549,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x1589,0xf011,0xf011,0x15c9,0x1609,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0x1659,0xf011,0xf011,0xf011,0xf011,0xf011,0xd811,0xd811,0xd811,0xd811, +0xd811,0xd811,0xd831,0xd811,0xd831,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0xd811,0x92,0xff91,0x169a,0x16d9, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44, +0x44,0x44,0x44,0x44,4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x792,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92, -0xff91,0x92,0xff91,0xf891,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x792,0x92,0xff91,0x92, +0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xf891,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, -0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0, -0,4,0,0,0,0,0,4,1,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x1812,0x1812,0x1812, +0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, +0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0,0,4,0,0,0,0,0,4, +1,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, -0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0x1719,1,0,0,0, -0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0x44,0x64,0x64, -0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x44, -0x44,0x64,0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64, -0x64,0x64,0,0x64,0,0x64,0x64,0,0x44,0x64,0,0x64,0,0,0,0, +0xe811,0xe811,0xe811,0x1719,1,0,0,0,0,0,0,0,0,0x64,0x44,0x44, +0x44,0x44,0x64,0x44,0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64, +0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x44,0x64,0x64,0x64,0x64, +0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0x64,0,0x64,0x64,0, +0x44,0x64,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, -0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0, -0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0x64, -0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x44, -0x64,0x44,0x44,0x64,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,4,0,0x44,0x44,0x44,0x44,0x64,0x44,4,4,0x44, -0x44,0,0x64,0x44,0x44,0x64,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,4,0,0x64,0,0, +4,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +4,4,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44, +0x44,0x44,0x44,0x44,0x64,0x64,0x64,0,4,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x64,0x44,0x44, -0x64,0x44,0x44,0x64,0x64,0x64,0x44,0x64,0x64,0x44,0x64,0x44,0x44,0x44,0x64,0x44, -0x64,0x44,0x64,0x44,0x64,0x44,0x44,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +0,0,0,0,0,0,0,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x44, +0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0x64,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,4,0,0x44, +0x44,0x44,0x44,0x64,0x44,4,4,0x44,0x44,0,0x64,0x44,0x44,0x64,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, -4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0, +0,0,0,4,0,0x64,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x44,0x64,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x64,0x44,0x64, +0x64,0x44,0x64,0x44,0x44,0x44,0x64,0x44,0x64,0x44,0x64,0x44,0x64,0x44,0x44,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x44, -4,4,0,0,0,0,4,0,0,0x64,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x44,0x44,0x44,0x44,4,0x44,0x44,0x44,0x44,0x44,4,0x44,0x44,0x44, -4,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0x64,0x64,0x64,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,0x44,4,0x64,0x44,0x44,0x64,0x44,0x44,0x64,0x44,0x44, -0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x44, -0x44,0x44,0x44,0x44,4,4,4,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,0,0x64,0,0,0,0,4,4,4, -4,4,4,4,4,0,0,0,0,0x64,0,0,0,0x44,0x64,0x44, -0x44,4,4,4,0,0,0,0,0,0,0,0,0,0,4,4, -0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x44,4,4,0,0,0,0,4,0, +0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,4,0x44, +0x44,0x44,0x44,0x44,4,0x44,0x44,0x44,4,0x44,0x44,0x44,0x44,0x44,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0x64,0x64,0x64,0,0,0,0, +0,0,0,0,4,0,0,0,0,0,0,0,4,4,0,0, +0,0,0,0,0x44,0x64,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0x44,4,0x64, +0x44,0x44,0x64,0x44,0x44,0x64,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44, +0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x44,0,0,0,0, +0,0,0,0,0,4,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64, +0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,4,4,4,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, +0x64,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0, +0,0x64,0,0,0,0x44,0x64,0x44,0x44,4,4,4,0,0,0,0, +0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0,0, -0,4,4,4,4,0,0,0,0,0,0,0,0,0x64,0,0, +0,0,0,0,0x64,0,0,0,0,4,4,4,4,0,0,0, +0,0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0, -0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x44,0,0,4,4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,4,4,0,0,0,0,4,4,0,0,4,4,0x64,0,0, -0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,4,0,0,0,4,0,0,0,0,0,0, -0,0,0,0,0,4,4,4,4,4,0,4,4,0,0,0, -0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,4, +4,0,0,4,4,0x64,0,0,0,4,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0, +0,4,0,0,0,0,0,0,0,0,0,0,0,4,4,4, +4,4,0,4,4,0,0,0,0,0x64,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, -4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x64,0,0,4,0,4,4,4,4,0,0,0,0,0,0,0, -0,0x64,0,0,0,0,0,0,0,4,4,0,0,0,0,0, -0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x64,0,0,4,0,4,4,4, +4,0,0,0,0,0,0,0,0,0x64,0,0,0,0,0,0, +0,4,4,0,0,0,0,0,0,0,0,0,0,0,4,4, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, -0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,4,4,4,0,4,4, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +0,0,0,0,0,0,0,0,0,0x64,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x64,0,4,4,4,0,0,0,0,0,4,4,4,0,4,4, 4,0x64,0,0,0,0,0,0,0,0x64,0x64,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,0,0,4,0x64,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -424,206 +432,209 @@ static const uint16_t ucase_props_trieIndex[12356]={ 0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a, 0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a,0x201a, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,4,4,0x64,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4, -4,4,4,4,4,4,0,0,0,0,0,0,0,0,4,0, -0,4,4,4,4,4,4,4,4,4,0x64,4,0,0,0,4, -0,0,0,0,0,0x44,0,0,0,0,0,0,0,0,0,0, -0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, +0,0,4,4,0x64,0x60,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,4,0x60,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0, +0,0,0,0,4,4,0,4,4,4,4,4,4,4,0,0, +0,0,0,0,0,0,4,0,0,4,4,4,4,4,4,4, +4,4,0x64,4,0,0,0,4,0,0,0,0,0,0x44,0,0, +0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0, -0,0,0,4,4,0,0,0,0,0,0,0,0,0,4,0, -0,0,0,0,0,0x64,0x44,0x64,0,0,0,0,0,0,0,0, +0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,4,4,4,0,0,0,0,4,4,0,0,0, +0,0,0,0,0,0,4,0,0,0,0,0,0,0x64,0x44,0x64, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x44,0x64,0,0,4,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,4,0,4,4,4,4,4,4,4,0,0x64,0,4,0, +0,4,4,4,4,4,4,4,4,0,0,0,0,0,0,4, +4,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0x64,0,0,0,0, +0,0,0,4,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44, +0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,4,0x64,0x64,0x44,0x44,0x64, +0x64,0x44,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0x44,0x44,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x64,0,4,4,4,4,4,0,4,0,0,0,0,0,4,0, +0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44, -0x64,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,0,4,4,4,4, -4,4,4,0,0x64,0,4,0,0,4,4,4,4,4,4,4, -4,0,0,0,0,0,0,4,4,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0,0,0x64,0,0,0,0,0,0,0,4,0,0,0,0, -0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44, -0x44,0x64,4,0x64,0x64,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x64,0,4,4,4,4,4,0,4,0,0,0, -0,0,4,0,0x60,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x44,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,4,4,4,4,0,0, -4,4,0x60,0x64,4,4,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0x64,0,4,4,0,0, -0,4,0,4,4,4,0x60,0x60,0,0,0,0,0,0,0,0, -0,0,0,0,4,4,4,4,4,4,4,4,0,0,4,0x64, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0, -0x2179,0x21a9,0x21d9,0x2209,0x2239,0x2289,0x22d9,0x2309,0x2339,0,0,0,0,0,0,0, -0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a, -0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0,0,0x236a,0x236a,0x236a, +0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,4,4,4,0,0,4,4,0x60,0x64, +4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x64,0,4,4,0,0,0,4,0,4, +4,4,0x60,0x60,0,0,0,0,0,0,0,0,0,0,0,0, +4,4,4,4,4,4,4,4,0,0,4,0x64,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x44,0x44,0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x64,0x64,0x64, -0x44,0,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0,0,0,0x64,0,0, -0,0,0,0,0x44,0,0,0,0x44,0x44,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +0,0,0,0,4,4,4,4,4,4,0,0,0x2179,0x21a9,0x21d9,0x2209, +0x2239,0x2289,0x22d9,0x2309,0x2339,0,0,0,0,0,0,0,0x236a,0x236a,0x236a,0x236a, +0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a, +0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0x236a,0,0,0x236a,0x236a,0x236a,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0, +0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0x64,0x64,0x64,0x64,0x44,0,0x64,0x64, +0x64,0x64,0x64,0x64,0x64,0,0,0,0,0x64,0,0,0,0,0,0, +0x44,0,0,0,0x44,0x44,0,0,0,0,0,0,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x25,5,5,5,5,5,5,5,5,1,1,1,1,1, -1,1,1,1,1,1,1,1,5,0x2389,1,1,1,0x23a9,1,1, -5,5,5,5,0x25,5,5,5,0x25,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x23c9,1, -1,1,1,1,1,1,0x21,1,1,1,1,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x25,5, +5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1, +1,1,1,1,5,0x2389,1,1,1,0x23a9,1,1,5,5,5,5, +0x25,5,5,5,0x25,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,0x23c9,1,1,1,1,1, +1,1,0x21,1,1,1,1,5,5,5,5,5,0x44,0x44,0x44,0x44, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0,0x44,0x64,0x64,0x44,0x64, -0x44,0x44,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x64, -0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91, +0x44,0x44,0x64,0x64,0x64,0x64,0x64,0x44,0x64,0x64,0x44,0x64,0x44,0x44,0x64,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x44,0x44,0x64,0x64,0x64,0x64,0x44,0x44,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x23ea,0x2429,0x92,0xff91, 0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x23ea,0x2429,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x2469,0x24e9,0x2569,0x25e9,0x2669,0x26e9,1,1,0x271a,1,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x411,0x411,0x411,0x411, -0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411, -0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x411,0x411,0x411,0x411, -0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411, -0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411, -0x411,0x411,0,0,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x2769,0x411,0x27e9,0x411, -0x2899,0x411,0x2949,0x411,0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411, -0x411,0x411,0x411,0x411,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x2511,0x2511,0x2b11,0x2b11, -0x2b11,0x2b11,0x3211,0x3211,0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x29f9,0x2a69,0x2ad9,0x2b49, -0x2bb9,0x2c29,0x2c99,0x2d09,0x2d7b,0x2deb,0x2e5b,0x2ecb,0x2f3b,0x2fab,0x301b,0x308b,0x30f9,0x3169,0x31d9,0x3249, -0x32b9,0x3329,0x3399,0x3409,0x347b,0x34eb,0x355b,0x35cb,0x363b,0x36ab,0x371b,0x378b,0x37f9,0x3869,0x38d9,0x3949, -0x39b9,0x3a29,0x3a99,0x3b09,0x3b7b,0x3beb,0x3c5b,0x3ccb,0x3d3b,0x3dab,0x3e1b,0x3e8b,0x411,0x411,0x3ef9,0x3f79, -0x3fe9,0,0x4069,0x40e9,0xfc12,0xfc12,0xdb12,0xdb12,0x419b,4,0x4209,4,4,4,0x4259,0x42d9, -0x4349,0,0x43c9,0x4449,0xd512,0xd512,0xd512,0xd512,0x44fb,4,4,4,0x411,0x411,0x4569,0x4619, -0,0,0x46e9,0x4769,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4819,0x48c9, -0x4999,0x391,0x4a19,0x4a99,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b49,0x4bc9, -0x4c39,0,0x4cb9,0x4d39,0xc012,0xc012,0xc112,0xc112,0x4deb,4,4,0,0,0,0,0, -0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0, -0,0,0,0,4,4,0,0,0,0,0,0,4,0,0,4, -0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,4,4,4,4,0,4,4, -4,4,4,4,4,4,4,4,0,0x25,0,0,0,0,0,0, -0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44, -0x64,0x64,0x64,0x44,0x44,4,4,4,4,0x44,4,4,4,0x64,0x64,0x44, -0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2, -0,0,1,2,2,2,1,1,2,2,2,1,0,2,0,0, -0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e5a,0, -2,0,0x4e9a,0x4eda,2,2,0,1,2,2,0xe12,2,1,0,0,0, -0,1,0,0,1,1,2,2,0,0,0,0,0,2,1,1, -0x21,0x21,0,0,0,0,0xf211,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812, -0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811, -0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0,0,0,0x92,0xff91,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12, -0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xf311,0xf311,0xf311,0xf311, -0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x2469,0x24e9, +0x2569,0x25e9,0x2669,0x26e9,1,1,0x271a,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xffb1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0,0, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0,0, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0,0,0x2769,0x411,0x27e9,0x411,0x2899,0x411,0x2949,0x411, +0,0xfc12,0,0xfc12,0,0xfc12,0,0xfc12,0x411,0x411,0x411,0x411,0x411,0x411,0x411,0x411, +0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0xfc12,0x2511,0x2511,0x2b11,0x2b11,0x2b11,0x2b11,0x3211,0x3211, +0x4011,0x4011,0x3811,0x3811,0x3f11,0x3f11,0,0,0x29f9,0x2a69,0x2ad9,0x2b49,0x2bb9,0x2c29,0x2c99,0x2d09, +0x2d7b,0x2deb,0x2e5b,0x2ecb,0x2f3b,0x2fab,0x301b,0x308b,0x30f9,0x3169,0x31d9,0x3249,0x32b9,0x3329,0x3399,0x3409, +0x347b,0x34eb,0x355b,0x35cb,0x363b,0x36ab,0x371b,0x378b,0x37f9,0x3869,0x38d9,0x3949,0x39b9,0x3a29,0x3a99,0x3b09, +0x3b7b,0x3beb,0x3c5b,0x3ccb,0x3d3b,0x3dab,0x3e1b,0x3e8b,0x411,0x411,0x3ef9,0x3f79,0x3fe9,0,0x4069,0x40e9, +0xfc12,0xfc12,0xdb12,0xdb12,0x419b,4,0x4209,4,4,4,0x4259,0x42d9,0x4349,0,0x43c9,0x4449, +0xd512,0xd512,0xd512,0xd512,0x44fb,4,4,4,0x411,0x411,0x4569,0x4619,0,0,0x46e9,0x4769, +0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4819,0x48c9,0x4999,0x391,0x4a19,0x4a99, +0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b49,0x4bc9,0x4c39,0,0x4cb9,0x4d39, +0xc012,0xc012,0xc112,0xc112,0x4deb,4,4,0,0,0,0,0,0,0,0,0, +0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0, +4,4,0,0,0,0,0,0,4,0,0,4,0,0,4,4, +4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,4,4,4,4,4,0,4,4,4,4,4,4, +4,4,4,4,0,0x25,0,0,0,0,0,0,0,0,0,0, +0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x44,0x44,0x64,0x64,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x44, +0x44,4,4,4,4,0x44,4,4,4,0x64,0x64,0x44,0x64,0x44,0x64,0x64, +0x64,0x64,0x64,0x64,0x44,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2,0,0,0,0,2,0,0,1,2, +2,2,1,1,2,2,2,1,0,2,0,0,0,2,2,2, +2,2,0,0,0,0,0,0,2,0,0x4e5a,0,2,0,0x4e9a,0x4eda, +2,2,0,1,2,2,0xe12,2,1,0,0,0,0,1,0,0, +1,1,2,2,0,0,0,0,0,2,1,1,0x21,0x21,0,0, +0,0,0xf211,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812, +0x812,0x812,0x812,0x812,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811,0xf811, +0xf811,0xf811,0xf811,0xf811,0,0,0,0x92,0xff91,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12, +0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xd12,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311, +0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0xf311,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, 0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, -0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, 0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, -0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0,0x92,0xff91,0x4f1a,0x4f3a,0x4f5a,0x4f79,0x4f99,0x92, -0xff91,0x92,0xff91,0x92,0xff91,0x4fba,0x4fda,0x4ffa,0x501a,1,0x92,0xff91,1,0x92,0xff91,1, -1,1,1,1,0x25,5,0x503a,0x503a,0x92,0xff91,0x92,0xff91,1,0,0,0, -0,0,0,0x92,0xff91,0x92,0xff91,0x44,0x44,0x44,0x92,0xff91,0,0,0,0, -0,0,0,0,0,0,0,0,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059, +0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811, +0x92,0xff91,0x4f1a,0x4f3a,0x4f5a,0x4f79,0x4f99,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x4fba,0x4fda,0x4ffa, +0x501a,1,0x92,0xff91,1,0x92,0xff91,1,1,1,1,1,0x25,5,0x503a,0x503a, +0x92,0xff91,0x92,0xff91,1,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91,0x44, +0x44,0x44,0x92,0xff91,0,0,0,0,0,0,0,0,0,0,0,0, 0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059, -0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0,0x5059,0,0,0,0, -0,0x5059,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, +0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059, +0x5059,0x5059,0,0x5059,0,0,0,0,0,0x5059,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x64, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0, -0,0,0x64,0x64,0x64,0x64,0x60,0x60,0,4,4,4,4,4,0,0, -0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x64,0x64,4, -4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x507a,0x50b9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44, -4,4,4,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,4, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,5,5,0x44,0x44, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -1,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,5,1,1,1,1,1,1,1,1,0x92,0xff91,0x92, -0xff91,0x50fa,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92, -0xff91,0x511a,1,0,0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x513a,0x515a,0x517a,0x519a,0x513a,1,0x51ba,0x51da,0x51fa,0x521a, -0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0,0x92,0xff91, -0xe812,0x523a,0x525a,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0x92,0xff91,0, -5,5,1,0,0,0,0,0,0,0,4,0,0,0,0x64,0, -0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0, -0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x64,4,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -0,0,0,0,0,0,4,4,4,4,4,0x64,0x64,0x64,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,4,4,4,4,4,4,4,4,4,4,4,0,0x60, +0,0,0,0,0,0,0,0,0,0,0x64,0x64,0x64,0x64,0x60,0x60, +0,4,4,4,4,4,0,0,0,0,0,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0x64,0,0,4,4,4,4,0,0,4,4,0,0, -0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +0,0,0,0,0,0x64,0x64,4,4,4,4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,4,4,4,4,4,4,0,0,4,4,0,0,4,4,0, -0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, -0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x44,0,0x44,0x44,0x64,0,0,0x44, -0x44,0,0,0,0,0,0x44,0x44,0,0x44,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,4,0,0,0,0,0,4,4,0,0x64,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,0x5279,1,1,1,1,1,1,1,4,5,5,5,5, -1,1,1,1,1,1,1,1,1,4,4,4,0,0,0,0, -0x5299,0x52c9,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,0x5419,0x5449,0x5479,0x54a9,0x54d9,0x5509,0x5539,0x5569, -0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,0x5d19,0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09,0x5e39,0x5e69, -0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019,0x6049,0x6079,0x60a9,0x60d9,0x6109,0x6139,0x6169, -0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,0x5719,0x5749,0x5779,0x57a9,0x57d9,0x5809,0x5839,0x5869, -0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19,0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09,0x5b39,0x5b69, -0,0,0,0,0,4,0,0,4,0,0,0,0,0x64,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x6199,0x6219,0x6299,0x6319,0x63c9,0x6479,0x6519,0,0,0,0,0,0,0,0,0, -0,0,0,0x65b9,0x6639,0x66b9,0x6739,0x67b9,0,0,0,0,0,0,0x64,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,0,0,0,4,0,0,0,0,0,0,0,0, -0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x64, -0x64,0x64,0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,4,0,0,4,0,0,0,0,0,0, -0,0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, -0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0, -0,0,4,0,4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, -0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0, +0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x507a,0x50b9, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,4,4,4,0,0x44,0x44,0x44,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0,4,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,5,5,0x44,0x44,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x44,0x44,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,1,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,5,1,1,1, +1,1,1,1,1,0x92,0xff91,0x92,0xff91,0x50fa,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,4,4,4,0x92,0xff91,0x511a,1,0,0x92,0xff91,0x92,0xff91, +0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x513a,0x515a, +0x517a,0x519a,0x513a,1,0x51ba,0x51da,0x51fa,0x521a,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91, +0x92,0xff91,0x92,0xff91,0xe812,0x523a,0x525a,0x92,0xff91,0x92,0xff91,0,0,0,0,0, +0x92,0xff91,0,1,0,1,0x92,0xff91,0x92,0xff91,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, +4,0x92,0xff91,0,5,5,1,0,0,0,0,0,0,0,4,0, +0,0,0x64,0,0,0,0,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0, +0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x64,4,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0,0,0, +0,0,0,4,0,0,0,0,0,0,4,4,4,4,4,0x64, +0x64,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4, +4,4,0,0x60,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0x64,0,0,4,4,4,4,0,0, +4,4,0,0,0x60,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0, +0,0,0,0,0,4,4,4,4,4,4,0,0,4,4,0, +0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,4, +0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x44,0,0x44,0x44, +0x64,0,0,0x44,0x44,0,0,0,0,0,0x44,0x44,0,0x44,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x64,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,4, +4,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x5279,1,1,1,1,1,1,1,4, +5,5,5,5,1,1,1,1,1,1,1,1,1,4,4,4, +0,0,0,0,0x5299,0x52c9,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,0x5419,0x5449,0x5479,0x54a9, +0x54d9,0x5509,0x5539,0x5569,0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,0x5d19,0x5d49,0x5d79,0x5da9, +0x5dd9,0x5e09,0x5e39,0x5e69,0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,0x6019,0x6049,0x6079,0x60a9, +0x60d9,0x6109,0x6139,0x6169,0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,0x5719,0x5749,0x5779,0x57a9, +0x57d9,0x5809,0x5839,0x5869,0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,0x5a19,0x5a49,0x5a79,0x5aa9, +0x5ad9,0x5b09,0x5b39,0x5b69,0,0,0,0,0,4,0,0,4,0,0,0, +0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x6199,0x6219,0x6299,0x6319,0x63c9,0x6479,0x6519,0,0,0,0,0, +0,0,0,0,0,0,0,0x65b9,0x6639,0x66b9,0x6739,0x67b9,0,0,0,0, +0,0,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,0,0,0,4,0,0,0,0, +0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64, +0x64,0x64,0x64,0x64,0x64,0x64,0x44,0x44,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,4,0,0,4,0,0, +0,0,0,0,0,0,0,0,0,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012,0x1012, +0x1012,0x1012,0x1012,0,0,0,4,0,4,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011,0xf011, +0xf011,0xf011,0xf011,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0, +0x64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0x1412,0x1412,0x1412,0x1412, 0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, @@ -633,27 +644,41 @@ static const uint16_t ucase_props_trieIndex[12356]={ 0,0,0,0,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412, 0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0x1412,0,0,0,0,0xec11,0xec11,0xec11,0xec11, 0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11, -0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0,0,0,0,0,4,4,4, -0,4,4,0,0,0,0,0,4,0x64,4,0x44,0,0,0,0, +0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0xec11,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392, +0x1392,0x1392,0x1392,0,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0,0x1392,0x1392,0,0xec91, +0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91, +0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0xec91,0,0xec91,0xec91,0xec91,0xec91,0xec91, +0xec91,0xec91,0,0xec91,0xec91,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,0,0,0,0,0,5,4,4,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,4,4,4,0,4,4,0, +0,0,0,0,4,0x64,4,0x44,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x44,0x64,0x64,0,0,0,0,0x64,0,0,0,0,0,0x44,0x64,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x44,0x64,0x64,0,0,0,0,0x64,0,0,0,0, -0,0x44,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x2012,0x2012,0x2012,0x2012, +0,0,0,0,0,0,0,0,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012, 0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012, -0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0, -0,0,0,0,0,0,0,0,0,0,0,0,0xe011,0xe011,0xe011,0xe011, +0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0x2012,0,0,0,0,0, +0,0,0,0,0,0,0,0,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011, 0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011, -0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44, +0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0xe011,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0x64,0x64,0x44,0x44,0x44,0x64,0x44,0x64,0x64,0x64,0x64,0,0,0, +0,0,0,0,0,0,0,0x44,0x44,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x64,0x64, +0x44,0x44,0x44,0x64,0x44,0x64,0x64,0x64,0x64,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0x44,0x64,0x44,0x64,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, 4,4,0x64,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x64,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0x64,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,4,4,0,0,0x64,0x64,0,0,4,0,0,0x44,0x44,0x44,0, +4,4,4,0,0,0x64,0x64,0,0,4,0,0,0,0,4,0, +0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, 4,4,4,4,0,4,4,4,4,4,4,0x64,0x64,0,0,0, @@ -720,75 +745,82 @@ static const uint16_t ucase_props_trieIndex[12356]={ 0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,0,4,4,0,0,0, 0,0,0,0,0,0,0,0,0x60,0x60,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +0,4,4,4,4,4,4,4,0,4,4,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,4,0x64,0,0,0,0,0, -0,0x60,0x60,0x64,0x64,0x64,0,0,0,0x60,0x60,0x60,0x60,0x60,0x60,4, -4,4,4,4,4,4,4,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0, -0,0x44,0x44,0x44,0x44,0x44,0x64,0x64,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44, -0x44,0x44,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0x44,0x44,0x44,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,4,0x64,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,0,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1, -1,1,1,1,1,1,0x21,0x21,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,1,1,1,1,1,1,1,0,0x21,0x21, -1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +0,0,0,0,0,0,0,0,0,0x60,0x60,0x64,0x64,0x64,0,0, +0,0x60,0x60,0x60,0x60,0x60,0x60,4,4,4,4,4,4,4,4,0x64, +0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0,0x44,0x44,0x44,0x44,0x44,0x64,0x64, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0x44,0x44,0x44,0x44,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44, +0x44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,1,1,1,1,1,1,1,1,0x21,0x21,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,0,2,2, -0,0,2,0,0,2,2,0,0,2,2,2,2,0,2,2, -2,2,2,2,2,2,1,1,1,1,0,1,0,1,0x21,0x21, -1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,1,1,1,1,1,1,1,1,0x21,0x21, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1, +1,1,1,1,1,0,0x21,0x21,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -1,1,1,1,2,2,0,2,2,2,2,0,0,2,2,2, -2,2,2,2,2,0,2,2,2,2,2,2,2,0,1,1, -1,1,1,1,1,1,0x21,0x21,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,2,2,0,2,2,2,2,0, -2,2,2,2,2,0,2,0,0,0,2,2,2,2,2,2, -2,0,1,1,1,1,1,1,1,1,0x21,0x21,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1, +1,1,0x21,0x21,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,2,0,2,2,0,0,2,0,0,2,2,0, +0,2,2,2,2,0,2,2,2,2,2,2,2,2,1,1, +1,1,0,1,0,1,0x21,0x21,1,1,1,1,0,1,1,1, 1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1, +2,2,2,2,2,2,2,2,1,1,1,1,2,2,0,2, +2,2,2,0,0,2,2,2,2,2,2,2,2,0,2,2, +2,2,2,2,2,0,1,1,1,1,1,1,1,1,0x21,0x21, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0,1,1,1,1,1,1,2,2, +2,2,0,2,2,2,2,0,2,2,2,2,2,0,2,0, +0,0,2,2,2,2,2,2,2,0,1,1,1,1,1,1, +1,1,0x21,0x21,1,1,1,1,1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, +2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,0,1,1,1,1,1,1,2,1, +2,2,2,2,1,1,1,1,1,1,0,0,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, +1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,0,1,1,1,1,1,1,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,0, +1,1,1,1,1,1,2,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,0,0,0,0,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,0,0,0,0,0,0,0,0,4,0,0, +0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0x44,0x44,0x44,0x44, +0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0,0x44, +0x44,0x44,0x44,0x44,1,1,1,1,1,1,1,1,1,1,0,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x21,1, +1,1,1,0,0x44,0x44,0,0x44,0x44,0,0x44,0x44,0x44,0x44,0x44,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0, -0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,4,4,4,4,4,0,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,0x44,0x44,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,0x44, -0x44,0,0x44,0x44,0x44,0x44,0x44,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x44,0x44,0x44,0x44, -0x44,0x44,0x44,4,4,4,4,4,4,4,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x64,0x64,0x64,0x64, -0x64,0x64,0x64,0,0,0,0,0,0,0,0,0,0x1112,0x1112,0x1112,0x1112, +0,0,0,0,0x44,0x44,0x44,0x44,0x44,0x44,0x44,4,4,4,4,4, +4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0,0,0,0,0, +0,0,0,0,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112, 0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112, -0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0xef11,0xef11, +0x1112,0x1112,0x1112,0x1112,0x1112,0x1112,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11, 0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11, -0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0xef11,0x44,0x44,0x44,0x44, -0x44,0x44,0x64,4,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, -2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +0xef11,0xef11,0xef11,0xef11,0x44,0x44,0x44,0x44,0x44,0x44,0x64,4,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0 +2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0 }; static const uint16_t ucase_props_exceptions[1667]={ @@ -933,16 +965,16 @@ static const UCaseProps ucase_props_singleton={ ucase_props_unfold, { ucase_props_trieIndex, - ucase_props_trieIndex+3288, + ucase_props_trieIndex+3408, NULL, - 3288, - 9068, + 3408, + 9500, 0x188, - 0xd54, + 0xdcc, 0x0, 0x0, 0xe0800, - 0x3040, + 0x3268, NULL, 0, FALSE, FALSE, 0, NULL }, { 4,0,0,0 } diff --git a/deps/icu-small/source/common/uchar.cpp b/deps/icu-small/source/common/uchar.cpp index f43f9f024a1300..61e9c3d900dad7 100644 --- a/deps/icu-small/source/common/uchar.cpp +++ b/deps/icu-small/source/common/uchar.cpp @@ -14,7 +14,7 @@ * 04/02/97 aliu Creation. * 4/15/99 Madhu Updated all the function definitions for C Implementation * 5/20/99 Madhu Added the function u_getVersion() -* 8/19/1999 srl Upgraded scripts to Unicode3.0 +* 8/19/1999 srl Upgraded scripts to Unicode3.0 * 11/11/1999 weiv added u_isalnum(), cleaned comments * 01/11/2000 helena Renamed u_getVersion to u_getUnicodeVersion. * 06/20/2000 helena OS/400 port changes; mostly typecast. diff --git a/deps/icu-small/source/common/uchar_props_data.h b/deps/icu-small/source/common/uchar_props_data.h index 9a78918204f0e9..c45b9da3fd0f92 100644 --- a/deps/icu-small/source/common/uchar_props_data.h +++ b/deps/icu-small/source/common/uchar_props_data.h @@ -1,6 +1,5 @@ -// © 2016 and later: Unicode, Inc. and others. +// Copyright (C) 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -// // Copyright (C) 1999-2016, International Business Machines // Corporation and others. All Rights Reserved. // @@ -8,149 +7,148 @@ // // machine-generated by: icu/tools/unicode/c/genprops/corepropsbuilder.cpp - #ifdef INCLUDED_FROM_UCHAR_C -static const UVersionInfo dataVersion={0xd,0,0,0}; +static const UVersionInfo dataVersion={0xe,0,0,0}; -static const uint16_t propsTrie_index[22276]={ -0x46d,0x475,0x47d,0x485,0x49d,0x4a5,0x4ad,0x4b5,0x4bd,0x4c5,0x4cb,0x4d3,0x4db,0x4e3,0x4eb,0x4f3, -0x4f9,0x501,0x509,0x511,0x514,0x51c,0x524,0x52c,0x534,0x53c,0x538,0x540,0x548,0x550,0x555,0x55d, -0x565,0x56d,0x571,0x579,0x581,0x589,0x591,0x599,0x595,0x59d,0x5a2,0x5aa,0x5b0,0x5b8,0x5c0,0x5c8, -0x5d0,0x5d8,0x5e0,0x5e8,0x5ed,0x5f5,0x5f8,0x600,0x608,0x610,0x616,0x61e,0x61d,0x625,0x62d,0x635, -0x645,0x63d,0x64d,0x655,0x48d,0x665,0x66b,0x65d,0x67b,0x67d,0x685,0x673,0x695,0x69b,0x6a3,0x68d, -0x6b3,0x6b9,0x6c1,0x6ab,0x6d1,0x6d7,0x6df,0x6c9,0x6ef,0x6f5,0x6fd,0x6e7,0x70d,0x715,0x71d,0x705, -0x72d,0x733,0x73b,0x725,0x74b,0x751,0x759,0x743,0x769,0x76e,0x776,0x761,0x786,0x78d,0x795,0x77e, -0x619,0x79d,0x7a5,0x48d,0x7ad,0x7b4,0x7bc,0x48d,0x7c4,0x7cc,0x7d4,0x7d9,0x7e1,0x7e8,0x7f0,0x48d, -0x5d8,0x7f8,0x800,0x808,0x810,0x565,0x820,0x818,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x828,0x5d8,0x830,0x834,0x83c,0x5d8,0x842,0x5d8,0x848,0x850,0x858,0x565,0x565,0x860, -0x868,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x86d,0x875,0x5d8,0x5d8,0x87d,0x885,0x88d,0x895,0x89d,0x5d8,0x8a5,0x8ad,0x8b5, -0x8c5,0x5d8,0x8cd,0x8cf,0x8d7,0x8bd,0x5d8,0x8da,0x8ee,0x8e2,0x8ea,0x8f6,0x5d8,0x8fe,0x904,0x90c, -0x914,0x5d8,0x924,0x92c,0x934,0x91c,0x944,0x48d,0x94c,0x94f,0x957,0x93c,0x967,0x95f,0x5d8,0x96e, -0x5d8,0x97d,0x976,0x985,0x98d,0x991,0x999,0x9a1,0x50d,0x9a9,0x9ac,0x9b2,0x9b9,0x9ac,0x534,0x9c1, -0x4bd,0x4bd,0x4bd,0x4bd,0x9c9,0x4bd,0x4bd,0x4bd,0x9d9,0x9e1,0x9e9,0x9f1,0x9f9,0x9fd,0xa05,0x9d1, -0xa1d,0xa25,0xa0d,0xa15,0xa2d,0xa35,0xa3d,0xa45,0xa5d,0xa4d,0xa55,0xa65,0xa6d,0xa7c,0xa81,0xa74, -0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa91,0xa99,0x90c,0xa9c,0xaa4,0xaab,0xab0,0xab8, -0x90c,0xabf,0xabe,0xacf,0xad2,0x90c,0x90c,0xac7,0x90c,0x90c,0x90c,0x90c,0x90c,0xae1,0xae9,0xad9, -0x90c,0x90c,0x90c,0xaee,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0xaf4,0xafc,0x90c,0xb04,0xb0b, -0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0xa89,0xa89,0xa89,0xa89,0xb13,0xa89,0xb1a,0xb21, -0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0x90c,0xb29,0xb30,0xb34,0xb3a,0x90c,0x90c,0x90c, -0x565,0xb4a,0xb42,0xb52,0x4bd,0x4bd,0x4bd,0xb5a,0x50d,0xb62,0x5d8,0xb68,0xb78,0xb70,0xb70,0x534, -0xb80,0xb88,0xb90,0x48d,0xb98,0x90c,0x90c,0xb9f,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0xba7,0xbad, -0xbbd,0xbb5,0x619,0x5d8,0xbc5,0x868,0x5d8,0xbcd,0xbd5,0xbd9,0x5d8,0x5d8,0xbde,0x5d8,0x90c,0xbe5, -0xab9,0xbed,0xbf3,0x90c,0xbed,0xbfb,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c, -0xc03,0x5d8,0x5d8,0x5d8,0xc0b,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0xc11,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc16,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x90c,0x90c, -0xc1e,0x5d8,0xc21,0x5d8,0xc29,0xc2f,0xc37,0xc3f,0xc44,0x5d8,0x5d8,0xc48,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc4f,0x5d8,0xc56,0xc5c,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc64,0x5d8,0x5d8,0x5d8,0xc6c,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc6e,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc75,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0xc7c,0x5d8,0x5d8,0x5d8,0xc83,0xc8b,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc90,0x5d8,0x5d8,0xc98,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc9c,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xc9f,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xca2,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0xca8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0xcb0,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0xcb5,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xcba,0x5d8,0x5d8,0x5d8,0xcbf,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0xcc7,0xcce,0xcd2,0x5d8,0x5d8,0x5d8,0xcd9,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x8ce, -0xce7,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0xcdf,0x90c,0xcef,0x985,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0xcf4,0xcfc,0x4bd,0xd0c,0xd04,0x5d8,0x5d8,0xd14,0xd1c,0xd2c,0x4bd,0xd31,0xd39,0xd3f,0xd47,0xd24, -0xd4f,0xd57,0x5d8,0xd5f,0xd6f,0xd72,0xd67,0xd7a,0x62d,0xd82,0xd89,0x8ce,0x67b,0xd99,0xd91,0xda1, -0x5d8,0xda9,0xdb1,0xdb9,0x5d8,0xdc1,0xdc9,0xdd1,0xdd9,0xde1,0xde5,0xded,0x50d,0x50d,0x5d8,0xdf5, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xdfd,0xe09,0xe01, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11, -0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0x5d8,0x5d8,0x5d8,0xe21,0x5d8,0xcda,0xe28,0xe2d, -0x5d8,0x5d8,0x5d8,0xe35,0x5d8,0x5d8,0x8d9,0x48d,0xe4b,0xe3b,0xe43,0x5d8,0x5d8,0xe53,0xe5b,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xe60,0xe68,0x5d8,0xe6c,0x5d8,0xe72,0xe76, -0xe7e,0xe86,0xe8d,0xe95,0x5d8,0x5d8,0x5d8,0xe9b,0xeb3,0x47d,0xebb,0xec3,0xec8,0x8ee,0xea3,0xeab, -0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11, -0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11,0xe11, -0x1234,0x1234,0x1274,0x12b4,0x12f4,0x132c,0x136c,0x13ac,0x13e4,0x1424,0x1450,0x1490,0x14d0,0x14e0,0x1520,0x1554, -0x1594,0x15c4,0x1604,0x1644,0x1654,0x1688,0x16c0,0x1700,0x1740,0x1780,0x17b4,0x17e0,0x1820,0x1858,0x1874,0x18b4, -0xa80,0xac0,0xb00,0xb40,0xb80,0xa40,0xbc0,0xa40,0xbe2,0xa40,0xa40,0xa40,0xa40,0xc22,0x1db,0x1db, -0xc62,0xca2,0xa40,0xa40,0xa40,0xa40,0xce2,0xd02,0xa40,0xa40,0xd42,0xd82,0xdc2,0xe02,0xe42,0xe82, -0xec2,0xef9,0x1db,0x1db,0xf1d,0xf51,0x1db,0xf79,0x1db,0x1db,0x1db,0x1db,0xfa6,0x1db,0x1db,0x1db, -0x1db,0x1db,0x1db,0x1db,0xfba,0x1db,0xff2,0x1032,0x1db,0x103d,0x1db,0x1db,0x1db,0x1073,0xa40,0x10b3, -0x1db,0x1db,0x10f3,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +static const uint16_t propsTrie_index[22688]={ +0x48c,0x494,0x49c,0x4a4,0x4bc,0x4c4,0x4cc,0x4d4,0x4dc,0x4e4,0x4ea,0x4f2,0x4fa,0x502,0x50a,0x512, +0x518,0x520,0x528,0x530,0x533,0x53b,0x543,0x54b,0x553,0x55b,0x557,0x55f,0x567,0x56f,0x574,0x57c, +0x584,0x58c,0x590,0x598,0x5a0,0x5a8,0x5b0,0x5b8,0x5b4,0x5bc,0x5c1,0x5c9,0x5cf,0x5d7,0x5df,0x5e7, +0x5ef,0x5f7,0x5ff,0x607,0x60c,0x614,0x617,0x61f,0x627,0x62f,0x635,0x63d,0x63c,0x644,0x64c,0x654, +0x664,0x65c,0x66c,0x674,0x67a,0x5f7,0x68a,0x682,0x69a,0x69c,0x6a4,0x692,0x6b4,0x6ba,0x6c2,0x6ac, +0x6d2,0x6d8,0x6e0,0x6ca,0x6f0,0x6f6,0x6fe,0x6e8,0x70e,0x714,0x71c,0x706,0x72c,0x734,0x73c,0x724, +0x74c,0x752,0x75a,0x744,0x76a,0x770,0x778,0x762,0x788,0x78d,0x795,0x780,0x7a5,0x7ac,0x7b4,0x79d, +0x638,0x7bc,0x7c4,0x4ac,0x7cc,0x7d3,0x7db,0x4ac,0x7e3,0x7eb,0x7f3,0x7f8,0x800,0x807,0x80f,0x4ac, +0x5f7,0x817,0x81f,0x827,0x82f,0x584,0x83f,0x837,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x847,0x5f7,0x84f,0x853,0x85b,0x5f7,0x861,0x5f7,0x867,0x86f,0x877,0x584,0x584,0x87f, +0x887,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x88c,0x894,0x5f7,0x5f7,0x89c,0x8a4,0x8ac,0x8b4,0x8bc,0x5f7,0x8c4,0x8cc,0x8d4, +0x8e4,0x5f7,0x8ec,0x8ee,0x8f6,0x8dc,0x5f7,0x8f9,0x90d,0x901,0x909,0x915,0x5f7,0x91d,0x923,0x92b, +0x933,0x5f7,0x943,0x94b,0x953,0x93b,0x963,0x4ac,0x96b,0x96e,0x976,0x95b,0x986,0x97e,0x5f7,0x98d, +0x5f7,0x99c,0x995,0x9a4,0x9ac,0x9b0,0x9b8,0x9c0,0x52c,0x9c8,0x9cb,0x9d1,0x9d8,0x9cb,0x553,0x553, +0x4dc,0x4dc,0x4dc,0x4dc,0x9e0,0x4dc,0x4dc,0x4dc,0x9f0,0x9f8,0xa00,0xa08,0xa10,0xa14,0xa1c,0x9e8, +0xa34,0xa3c,0xa24,0xa2c,0xa44,0xa4c,0xa54,0xa5c,0xa74,0xa64,0xa6c,0xa7c,0xa84,0xa93,0xa98,0xa8b, +0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa8,0xab0,0x92b,0xab3,0xabb,0xac2,0xac7,0xacf, +0x92b,0xad6,0xad5,0xae6,0xae9,0x92b,0x92b,0xade,0x92b,0x92b,0x92b,0x92b,0x92b,0xaf8,0xb00,0xaf0, +0x92b,0x92b,0x92b,0xb05,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0xb0b,0xb13,0x92b,0xb1b,0xb22, +0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0xaa0,0xaa0,0xaa0,0xaa0,0xb2a,0xaa0,0xb31,0xb38, +0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0xaa0,0x92b,0xb40,0xb47,0xb4b,0xb51,0x92b,0x92b,0x92b, +0x584,0x58c,0x52c,0xb59,0x4dc,0x4dc,0x4dc,0xb61,0x52c,0xb69,0x5f7,0xb6f,0xb7f,0xb77,0xb77,0x553, +0xb87,0xb8f,0xb97,0x4ac,0xb9f,0x92b,0x92b,0xba6,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0xbae,0xbb4, +0xbc4,0xbbc,0x638,0x5f7,0xbcc,0x887,0x5f7,0xbd4,0xbdc,0xbe0,0x5f7,0x5f7,0xbe5,0x5f7,0x92b,0xbec, +0xad0,0xbf4,0xbfa,0x92b,0xbf4,0xc02,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b, +0xc0a,0x5f7,0x5f7,0x5f7,0xc12,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0xc18,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc1d,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x92b,0x92b, +0xc25,0x5f7,0xc28,0x5f7,0xc30,0xc36,0xc3e,0xc46,0xc4b,0x5f7,0x5f7,0xc4f,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc56,0x5f7,0xc5d,0xc63,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc6b,0x5f7,0x5f7,0x5f7,0xc73,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc75,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc7c,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0xc83,0x5f7,0x5f7,0x5f7,0xc8a,0xc92,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc97,0x5f7,0x5f7,0xc9f,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xca3,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xca6,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xca9,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0xcaf,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0xcb7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0xcbc,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xcc1,0x5f7,0x5f7,0x5f7,0xcc6,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0xcce,0xcd5,0xcd9,0x5f7,0x5f7,0x5f7,0xce0,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0xcee,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0xce6,0x92b,0xcf6,0x9a4,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0xcfb,0xd03,0x4dc,0xd13,0xd0b,0x5f7,0x5f7,0xd1b,0xd23,0xd33,0x4dc,0xd38,0xd40,0xd46,0xd4d,0xd2b, +0xd55,0xd5d,0x5f7,0xd65,0xd75,0xd78,0xd6d,0xd80,0x64c,0xd88,0xd8f,0x8ed,0x69a,0xd9f,0xd97,0xda7, +0x5f7,0xdaf,0xdb7,0xdbf,0x5f7,0xdc7,0xdcf,0xdd7,0xddf,0xde7,0xdeb,0xdf3,0x52c,0x52c,0x5f7,0xdfb, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xe03,0xe0f,0xe07, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17, +0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0x5f7,0x5f7,0x5f7,0xe27,0x5f7,0xce1,0xe2e,0xe33, +0x5f7,0x5f7,0x5f7,0xe3b,0x5f7,0x5f7,0x8f8,0x4ac,0xe51,0xe41,0xe49,0x5f7,0x5f7,0xe59,0xe61,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xe66,0x92f,0x5f7,0xe6e,0x5f7,0xe74,0xe78, +0xe80,0xe88,0xe8f,0xe97,0x5f7,0x5f7,0x5f7,0xe9d,0xeb5,0x49c,0xebd,0xec5,0xeca,0x90d,0xea5,0xead, +0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17, +0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17,0xe17, +0x12b0,0x12b0,0x12f0,0x1330,0x1370,0x13a8,0x13e8,0x1428,0x1460,0x14a0,0x14cc,0x150c,0x154c,0x155c,0x159c,0x15d0, +0x1610,0x1640,0x1680,0x16c0,0x16d0,0x1704,0x173c,0x177c,0x17bc,0x17fc,0x1830,0x185c,0x189c,0x18d4,0x18f0,0x1930, +0xa80,0xac0,0xb00,0xb40,0xb80,0xbab,0xbeb,0xa40,0xc0d,0xa40,0xa40,0xa40,0xa40,0xc4d,0x1db,0x1db, +0xc8d,0xccd,0xa40,0xa40,0xa40,0xcf6,0xd36,0xd56,0xa40,0xd7c,0xdbc,0xdfc,0xe3c,0xe7c,0xebc,0xefc, +0xf3c,0xf73,0x1db,0x1db,0xf97,0xfcb,0x1db,0xff3,0x1db,0x1db,0x1db,0x1db,0x1020,0x1db,0x1db,0x1db, +0x1db,0x1db,0x1db,0x1db,0x1034,0x1db,0x106c,0x10ac,0x1db,0x10b7,0x1db,0x1db,0x1db,0x10ed,0xa40,0x112d, +0x1db,0x1db,0x116d,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, @@ -172,997 +170,1011 @@ static const uint16_t propsTrie_index[22276]={ 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0x1133,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0x11ad,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, 0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, -0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x1173, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x11ed, 0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700, -0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x1173, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0xed0,0xed7,0xedf,0x48d,0x5d8,0x5d8,0x5d8,0xee7,0xef7,0xeef,0xf0e,0xeff,0xf06,0xf16,0xf1a,0xf1e, -0x48d,0x48d,0x48d,0x48d,0x8ce,0x5d8,0xf26,0xf2e,0x5d8,0xf36,0xf3e,0xf42,0xf4a,0x5d8,0xf52,0x48d, -0x565,0x56f,0xf5a,0x5d8,0xf5e,0xf66,0xf76,0xf6e,0x5d8,0xf7e,0x5d8,0xf85,0x48d,0x48d,0x48d,0x48d, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xb78,0x8da,0xe72,0x48d,0x48d,0x48d,0x48d, -0xf95,0xf8d,0xf98,0xfa0,0x8ee,0xfa8,0x48d,0xfb0,0xfb8,0xfc0,0x48d,0x48d,0x5d8,0xfd0,0xfd8,0xfc8, -0xfe8,0xfef,0xfe0,0xff7,0xfff,0x48d,0x100f,0x1007,0x5d8,0x1012,0x101a,0x1022,0x102a,0x1032,0x48d,0x48d, -0x5d8,0x5d8,0x103a,0x48d,0x565,0x1042,0x50d,0x104a,0x5d8,0x1052,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x105a,0x5d8,0x1062,0x48d,0x48d,0x106a,0x1072,0x1079,0x48d,0x48d,0xe68,0x1081,0xb78, -0x1091,0x60e,0x1099,0x1089,0x967,0x10a1,0x10a9,0x10af,0x10c7,0x10b7,0x10bf,0x10cb,0x967,0x10db,0x10d3,0x10e3, -0x10f3,0x10eb,0x48d,0x48d,0x10fa,0x1102,0x630,0x110a,0x111a,0x1120,0x1128,0x1112,0x48d,0x48d,0x48d,0x48d, -0x5d8,0x1130,0x1138,0x1140,0x5d8,0x1148,0x1150,0x48d,0x48d,0x48d,0x48d,0x48d,0x5d8,0x1158,0x1160,0x48d, -0x5d8,0x1168,0x1170,0x1178,0x5d8,0x1188,0x1180,0x48d,0x848,0x1190,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x5d8,0x1198,0x48d,0x48d,0x48d,0x565,0x50d,0x11a0,0x11b0,0x11b6,0x11a8,0x48d,0x48d,0x11c6,0x11ca,0x11be, -0x11e2,0x11d2,0x11da,0x5d8,0x11f2,0x11ea,0x5d8,0x8cf,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x1208,0x120d,0x11fa,0x1202,0x121d,0x1215,0x48d,0x48d,0x122c,0x1230,0x1224,0x1240,0x1238,0x1180,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x1244,0x48d,0x48d,0x48d,0x48d,0x48d,0x124b,0x125b,0x1253, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x8d9,0x48d,0x48d,0x48d, -0x126b,0x1273,0x127b,0x1263,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x1283,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x128b,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x1293,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x8cf,0x8ee,0x129b,0x48d,0x48d,0xe68,0x12a3,0x5d8,0x12b3,0x12bb,0x12c3,0x12ab,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x565,0x50d,0x12cb,0x48d,0x48d,0x48d,0x5d8,0x5d8,0x12d3,0x12d8,0x12de,0x48d, -0x48d,0x12e6,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x12ee,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x8da,0x48d,0x103a,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x8ee,0x48d,0x12f4,0x12fb,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xe01,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x1301,0x1306,0x130e,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0xba7,0x90c,0x1316,0x90c,0x131d,0x1325,0x132b, -0x90c,0x1331,0x90c,0x90c,0x1339,0x48d,0x48d,0x48d,0x48d,0x1341,0x90c,0x90c,0xabb,0x1349,0x48d,0x48d, -0x48d,0x48d,0x1359,0x1360,0x1365,0x136b,0x1373,0x137b,0x1383,0x135d,0x138b,0x1393,0x139b,0x13a0,0x1372,0x1359, -0x1360,0x135c,0x136b,0x13a8,0x135a,0x13ab,0x135d,0x13b3,0x13bb,0x13c3,0x13ca,0x13b6,0x13be,0x13c6,0x13cd,0x13b9, -0x13d5,0x1351,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c, -0x90c,0x90c,0x534,0x13e5,0x534,0x13ec,0x13f3,0x13dd,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x13fa,0x1402,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x5d8,0x1412,0x140a,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x5d8,0x141a,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x1422,0x48d,0x565,0x1432,0x142a,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x143a,0x144a,0x1442,0x48d,0x48d,0x145a,0x1452,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x146a,0x1472,0x147a,0x1482,0x148a,0x1492,0x48d,0x1462,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x90c,0x149a,0x90c,0x90c,0xb9f,0x149f,0x14a3,0xba7,0x14ab,0x90c,0x90c,0x90c,0x90c,0xba9, -0x48d,0x14b3,0x14bb,0x14bf,0x14c7,0x14cf,0x48d,0x48d,0x48d,0x48d,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c, -0x90c,0x14d7,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c, -0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x14df,0x14e7,0x90c,0x90c,0x90c,0xb9f,0x90c,0x90c, -0x14ef,0x14f7,0x149a,0x90c,0x14ff,0x90c,0x1507,0x150c,0x48d,0x48d,0x90c,0x90c,0x90c,0x1514,0x90c,0x90c, -0x151b,0x90c,0x90c,0x90c,0xb9f,0x1520,0x1528,0x152e,0x1533,0x48d,0x90c,0x90c,0x90c,0x90c,0x153b,0x90c, -0xabe,0x117c,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x1543,0x5d8,0x5d8,0x154a,0x5d8,0x5d8,0x5d8,0x1552,0x5d8,0x155a,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0xc80,0x5d8,0x5d8,0x1562,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x156a,0x1572,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0xcbf,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x1579,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x1580,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x1587,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0xf5e,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x158b,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0xf5e,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x1066,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x1590,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x1598,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0xf5e,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8, -0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x5d8,0x655,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x15a8,0x15a0,0x15a0,0x15a0,0x48d,0x48d,0x48d,0x48d,0x534,0x534,0x534,0x534,0x534, -0x534,0x534,0x15b0,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d,0x48d, -0x48d,0x48d,0x48d,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, -0xe19,0xe19,0x15b8,0x46c,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x700,0x11ed, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0xed2,0xed9,0xee1,0x4ac,0x5f7,0x5f7,0x5f7,0xee9,0xef9,0xef1,0xf10,0xf01,0xf08,0xf18,0xf1c,0xf20, +0x4ac,0x4ac,0x4ac,0x4ac,0x8ed,0x5f7,0xf28,0xf30,0x5f7,0xf38,0xf40,0xf44,0xf4c,0x5f7,0xf54,0x4ac, +0x584,0x58e,0xf5c,0x5f7,0xf60,0xf68,0xf78,0xf70,0x5f7,0xf80,0x5f7,0xf87,0xf97,0xf8f,0x4ac,0x4ac, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xb7f,0x8f9,0xf9f,0xfaf,0xfa7,0x4ac,0x4ac, +0xfbf,0xfb7,0xfc2,0xfca,0x90d,0xfd2,0x4ac,0xfda,0xfe2,0xfea,0x4ac,0x4ac,0x5f7,0xffa,0x1002,0xff2, +0x1012,0x1019,0x100a,0x1021,0x1029,0x4ac,0x1039,0x1031,0x5f7,0x103c,0x1044,0x104c,0x1054,0x105c,0x4ac,0x4ac, +0x5f7,0x5f7,0x1064,0x4ac,0x584,0x106c,0x52c,0x1074,0x5f7,0x107c,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x1084,0x5f7,0x108c,0x4ac,0x4ac,0x1094,0x109c,0x10a3,0xfd6,0x10ab,0xfd6,0x10b3,0xb7f, +0x10c3,0x62d,0x10cb,0x10bb,0x986,0x10d3,0x10db,0x10e1,0x10f9,0x10e9,0x10f1,0x10fd,0x986,0x110d,0x1105,0x1115, +0x1125,0x111d,0x4ac,0x4ac,0x112c,0x1134,0x64f,0x113c,0x114c,0x1152,0x115a,0x1144,0x4ac,0x4ac,0x4ac,0x4ac, +0x5f7,0x1162,0x116a,0x1172,0x5f7,0x117a,0x1182,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x118a,0x1192,0x4ac, +0x5f7,0x119a,0x11a2,0x11aa,0x5f7,0x11ba,0x11b2,0x4ac,0x867,0x11c2,0x11ca,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x5f7,0x11d2,0x4ac,0x4ac,0x4ac,0x584,0x52c,0x11da,0x11ea,0x11f0,0x11e2,0x4ac,0x4ac,0x1200,0x1204,0x11f8, +0x121c,0x120c,0x1214,0x5f7,0x122a,0x1224,0x5f7,0x8ee,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x1240,0x1245,0x1232,0x123a,0x1255,0x124d,0x4ac,0x4ac,0x1264,0x1268,0x125c,0x1278,0x1270,0x11b2,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x127c,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x1283,0x1293,0x128b, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x8f8,0x4ac,0x4ac,0x4ac, +0x12a3,0x12ab,0x12b3,0x129b,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x12bb,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0xfd6,0x5f7,0x5f7,0x12c3,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x12cb,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x11ca, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x8ee,0x90d, +0xd9b,0x5f7,0x90d,0x12d3,0x12d8,0x5f7,0x12e8,0x12f0,0x12f8,0x12e0,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x584, +0x52c,0x1300,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x1308,0x130d,0x1313,0x4ac,0x4ac,0x131b,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x1323,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x8f9,0x4ac,0x1064,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x1329,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x1331, +0x1335,0x133c,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xe07,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x5f7,0x1342,0x1347,0x134f,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x553,0x135f,0x1366,0x92b,0x92b,0x92b,0x1357,0x4ac,0x92b,0x92b,0x92b,0x92b, +0x92b,0x92b,0x92b,0xbae,0x92b,0x136d,0x92b,0x1374,0x137c,0x1382,0x92b,0xad5,0x92b,0x92b,0x138a,0x4ac, +0x4ac,0x4ac,0x4ac,0x1392,0x92b,0x92b,0xad2,0x139a,0x4ac,0x4ac,0x4ac,0x4ac,0x13aa,0x13b1,0x13b6,0x13bc, +0x13c4,0x13cc,0x13d4,0x13ae,0x13dc,0x13e4,0x13ec,0x13f1,0x13c3,0x13aa,0x13b1,0x13ad,0x13bc,0x13f9,0x13ab,0x13fc, +0x13ae,0x1404,0x140c,0x1414,0x141b,0x1407,0x140f,0x1417,0x141e,0x140a,0x1426,0x13a2,0x92b,0x92b,0x92b,0x92b, +0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x553,0x1436,0x553,0x143d, +0x1444,0x142e,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x1453,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x144b,0x145b,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x146b,0x1463,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0xfd6,0x1473,0x5f7,0x147b,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x1483,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x148b,0x4ac,0x584,0x149b,0x1493,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x14a3, +0x14b3,0x14ab,0x4ac,0x4ac,0x14c3,0x14bb,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x14d3,0x14db,0x14e3,0x14eb, +0x14f3,0x14fb,0x4ac,0x14cb,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x92b,0x1503,0x92b,0x92b, +0xba6,0x136b,0x150b,0xbae,0x1513,0x92b,0x92b,0x92b,0x92b,0xbb0,0x4ac,0x151b,0x1523,0x1527,0x152f,0x1537, +0x4ac,0x4ac,0x4ac,0x4ac,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x153f,0x92b,0x92b,0x92b,0x92b, +0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b, +0x92b,0x92b,0x1547,0x154f,0x92b,0x92b,0x92b,0xba6,0x92b,0x92b,0x1557,0x155f,0x1503,0x92b,0x1567,0x92b, +0x156f,0x1574,0x4ac,0x4ac,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0x92b,0xba6,0x157c, +0x1588,0x158d,0x1595,0x1584,0x92b,0x92b,0x92b,0x92b,0x159d,0x92b,0xad5,0x11ae,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x15a5,0x5f7,0x5f7,0x15ac, +0x5f7,0x5f7,0x5f7,0x15b4,0x5f7,0x15bc,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xc87,0x5f7,0x5f7,0x15c4, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x15cc,0x15d4,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0xcc6,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x15db,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x15e2,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x15e9,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x4ac,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x8ee,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xf60,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x1090,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x15f1,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x5f7, +0x5f7,0x15f9,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0xf60,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7, +0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x15ff,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x160f,0x1607,0x1607, +0x1607,0x4ac,0x4ac,0x4ac,0x4ac,0x553,0x553,0x553,0x553,0x553,0x553,0x553,0x1617,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac, +0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0x4ac,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f, +0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0x161f,0x48b,0x48b,0x48b, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18, -0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, -0x18,0x18,0x18,0x17,0x17,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x14, -0x17,0x15,0x1a,0x16,0x1a,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0x14, -0x18,0x15,0x18,0xf,0,0,0,0,0,0,0,0,0,0,0,0, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x18,0x18,0x18,0x17, +0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16, +0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, 0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c, -0x18,0x10,0x1b,0x1a,0x1b,0x18,0x34b,0x38b,0x1a,2,0x17,0x17,0x1a,0x30b,5,0x1d, -0x34cb,0x344b,0x3ccb,0x17,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0x18,1,1,1,1, -1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,0x18,2,2,2,2, -2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf, +0xc,0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a, +0x1b,0x18,0x34b,0x38b,0x1a,2,0x17,0x17,0x1a,0x30b,5,0x1d,0x34cb,0x344b,0x3ccb,0x17, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,1, -2,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1, +2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,2,2,1,1,2, -1,2,1,1,2,1,1,1,2,2,1,1,1,1,2,1, -1,2,1,1,1,2,2,2,1,1,2,1,1,2,1,2, -1,2,1,1,2,1,2,2,1,2,1,1,2,1,1,1, -2,1,2,1,1,2,2,5,1,2,2,2,5,5,5,5, -1,3,2,1,3,2,1,3,2,1,2,1,2,1,2,1, -2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,2,1,3,2, -1,2,1,1,1,2,1,2,1,2,1,2,1,2,1,2, +1,1,2,1,2,1,2,2,2,1,1,2,1,2,1,1, +2,1,1,1,2,2,1,1,1,1,2,1,1,2,1,1, +1,2,2,2,1,1,2,1,1,2,1,2,1,2,1,1, +2,1,2,2,1,2,1,1,2,1,1,1,2,1,2,1, +1,2,2,5,1,2,2,2,5,5,5,5,1,3,2,1, +3,2,1,3,2,1,2,1,2,1,2,1,2,1,2,1, +2,1,2,1,2,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,1,2,2,1,3,2,1,2,1,1, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,1, -2,1,1,2,2,1,2,1,1,1,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,2,2,2,2,2,2,1,1,2,1,1,2, +2,1,2,1,1,1,1,2,1,2,1,2,1,2,1,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4, -4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -4,4,4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x1a,0x1a, +0x1a,0x1a,4,4,4,4,4,4,4,4,4,4,4,4,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4, +4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -1,2,1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1, -0,0,0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,0,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,1,2,2,1,1,1,2,2,2,1,2,1,2, +6,6,6,6,6,6,6,6,6,6,6,6,1,2,1,2, +4,0x1a,1,2,0,0,4,2,2,2,0x17,1,0,0,0,0, +0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1,2,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, +1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, +2,2,1,1,1,2,2,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,2,2,2,2,1,2,0x18,1,2,1,1,2, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,1,2,0x18,1,2,1,1,2,2,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,0x1b,6,6,6,6,6,7,7,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,0x1b,6,6,6,6,6,7,7,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,1,2,1,2,1,2,1,2,1,2,1, -2,1,2,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,0,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, -0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2,2,2,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0,0,4,0x17,0x17, +0x17,0x17,0x17,0x17,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,0x17,0x13,0,0,0x1b,0x1b,0x19, -0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +2,2,2,2,2,0x17,0x13,0,0,0x1b,0x1b,0x19,0,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x13,6, -0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0,0,0, +6,6,6,6,6,6,6,6,6,6,0x13,6,0x17,6,6,0x17, +6,6,0x17,6,0,0,0,0,0,0,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5, -5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, -0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,0x1b,0x1b, -6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0,0x17,0x17, +5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,0x17, +0x17,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10,0x10, +0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,0x1b,0x1b,6,6,6,6, +6,6,6,6,6,6,6,0x17,0x10,0x17,0x17,0x17,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5, +5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,5,6,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -4,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,5, -6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6, -6,6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,0x1b,0x1b,5, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10, -5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6,6,6,6,6, +6,4,4,6,6,0x1b,6,6,6,6,5,5,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,0x1b,0x1b,5,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5,6,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,0,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6, -6,6,6,6,6,5,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5, +5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6, +6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, -6,6,6,6,6,6,6,6,4,4,0x1b,0x17,0x17,0x17,4,0, -0,6,0x19,0x19,6,6,6,6,4,6,6,6,4,6,6,6, -6,6,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,6,6,6,6,4,6, -6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6, -0,0,0x17,0,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,6,0x10,6,6,6,6,6,6,6,6,6, +5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, +6,6,6,6,4,4,0x1b,0x17,0x17,0x17,4,0,0,6,0x19,0x19, +6,6,6,6,4,6,6,6,4,6,6,6,6,6,0,0, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,6,6,6,6,4,6,6,6,6,6, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,6,6,6,0,0,0x17,0, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0x1a,5,5,5,5,5,5,0,0x10,0x10,0,0,0,0,0,0, +6,6,6,6,6,6,6,6,6,6,0x10,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5, +6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5, +5,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,5,5,6,6,0x17,0x17,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,4,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,6,6,6,8,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,8,6,5,8,8, +8,6,6,6,6,6,6,6,6,8,8,8,8,6,8,8, +5,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +5,5,0x19,0x19,0x37cb,0x35cb,0x3fcb,0x34cb,0x3ccb,0x94b,0x1b,0x19,5,0x17,6,0, +5,6,8,8,0,5,5,5,5,5,5,5,5,0,0,5, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5, +5,5,0,0,6,5,8,8,8,6,6,6,6,0,0,8, +8,0,0,8,8,6,5,0,0,0,0,0,0,0,0,8, +0,0,0,0,5,5,0,5,0,0,0,0,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,6,5,5,5,6,0x17,0, +0,0,0,0,0,0,0,0,0,6,6,8,0,5,5,5, +5,5,5,0,0,0,0,5,5,0,0,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,6, -6,6,6,6,6,6,6,6,6,6,6,6,5,5,6,6, -0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,4,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,8, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,8, -6,5,8,8,8,6,6,6,6,6,6,6,6,8,8,8, -8,6,8,8,5,6,6,6,6,6,6,6,5,5,5,5, -5,5,5,5,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,5,5,0x19,0x19,0x37cb,0x35cb,0x3fcb,0x34cb,0x3ccb,0x94b,0x1b,0x19, -5,0x17,6,0,5,6,8,8,0,5,5,5,5,5,5,5, -5,0,0,5,5,0,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,0, -0,0,5,5,5,5,0,0,6,5,8,8,8,6,6,6, -6,0,0,8,8,0,0,8,8,6,5,0,0,0,0,0, -0,0,0,8,0,0,0,0,5,5,0,5,0,0,0,0, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,6,5,5, -5,6,0x17,0,0,0,0,0,0,0,0,0,0,6,6,8, -0,5,5,5,5,5,5,0,0,0,0,5,5,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,0,5,5,0,5,5,0,5,5,0,0, -6,0,8,8,8,6,6,0,0,0,0,6,6,0,0,6, -6,6,0,0,0,6,0,0,0,0,0,0,0,5,5,5, -5,0,5,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x17,0x19,0,0,0,0,0,0,0,5,6,6, -6,6,6,6,0,6,6,8,0,5,5,5,5,5,5,5, -5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,5, -0,5,5,5,5,5,0,0,6,5,8,8,8,6,6,6, -6,6,0,6,6,8,0,8,8,6,0,0,5,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,6,6, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x1b,5,0x34cb,0x344b, -0x3ccb,0x37cb,0x35cb,0x3fcb,0,0,0,0,0,0,0,0,0,6,8,8, -0,5,5,5,5,5,5,5,5,0,0,5,5,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0, -6,5,8,6,8,6,6,6,6,0,0,8,8,0,0,8, -8,6,0,0,0,0,0,0,0,6,6,8,0,0,0,0, -5,5,0,5,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0, -0,0,0,0,0,0,6,5,0,5,5,5,5,5,5,0, -0,0,5,5,5,0,5,5,5,5,0,0,0,5,5,0, -5,0,5,5,0,0,0,5,5,0,0,0,5,5,5,0, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,8,8,6,8,8,0,0,0,8,8,8,0,8,8, -8,6,0,0,5,0,0,0,0,0,0,8,0,0,0,0, -0,0,0,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0x17,0x54b,0x58b,0x5cb,0x60b, -0x58b,0x5cb,0x60b,0x1b,6,8,8,8,6,5,5,5,5,5,5,5, -5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,0,5,6,6,6,8,8,8, -8,0,6,6,6,0,6,6,6,6,0,0,0,0,0,0, -0,6,6,0,5,5,5,0,0,0,0,0,5,5,6,6, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,5,5,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,6,8,8, -0x17,5,5,5,5,5,5,5,5,0,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,0,0, -6,5,8,6,8,8,8,8,8,0,6,8,8,0,8,8, -6,6,0,0,0,0,0,0,0,8,8,0,0,0,0,0, -0,0,5,0,5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0x7cb,0x1e4b,0x784b,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,5,5, -5,5,5,5,6,6,8,8,5,5,5,5,5,5,5,5, -5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,6,6,5,8,8,8,6,6,6,6,0,8,8, -8,0,8,8,8,6,5,0x1b,0,0,0,0,5,5,5,8, -0xcc0b,0xca0b,0xcb4b,0xc90b,0x364b,0xc94b,0x350b,5,0,0,0,0,0,0,0x49,0x89, -0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,8,8,0x17,0,0,0, +5,0,5,5,0,5,5,0,5,5,0,0,6,0,8,8, +8,6,6,0,0,0,0,6,6,0,0,6,6,6,0,0, +0,6,0,0,0,0,0,0,0,5,5,5,5,0,5,0, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x17,0x19,0,0,0,0,0,0,0,5,6,6,6,6,6,6, +0,6,6,8,0,5,5,5,5,5,5,5,5,5,0,5, +5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, +5,5,0,0,6,5,8,8,8,6,6,6,6,6,0,6, +6,8,0,8,8,6,0,0,5,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x1b,5,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb, 0,0,0,0,0,0,0,0,0,6,8,8,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, -0,5,0,0,5,5,5,5,5,5,5,0,0,0,6,0, -0,0,0,8,8,8,6,6,6,0,6,0,8,8,8,8, -8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,6,5,5,6,6,6,6,6,6,6,0, -0,0,0,0x19,5,5,5,5,5,5,4,6,6,6,6,6, -6,6,6,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, -0,0,0,0,0,5,5,0,5,0,5,5,5,5,5,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0,5,0,5,5,5,5,5,5,5,5,5, -5,6,5,5,6,6,6,6,6,6,6,6,6,5,0,0, -5,5,5,5,5,0,4,0,6,6,6,6,6,6,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,5,5,5,5, -5,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x1b,0x17,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x344b,0x3c4b,0x444b,0x4c4b,0x544b,0x5c4b, -0x644b,0x6c4b,0x744b,0x2c4b,0x1b,6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8, -5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,8,6,6,6,6,6,0x17,6,6,5,5,5,5, -5,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6, +5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,0,5,5,0,5,5,5,5,5,0,0,6,5,8,6, +8,6,6,6,6,0,0,8,8,0,0,8,8,6,0,0, +0,0,0,0,0,6,6,8,0,0,0,0,5,5,0,5, +0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x7cb,0x1e4b,0x784b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0, +0,0,6,5,0,5,5,5,5,5,5,0,0,0,5,5, +5,0,5,5,5,5,0,0,0,5,5,0,5,0,5,5, +0,0,0,5,5,0,0,0,5,5,5,0,0,0,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,8,8, +6,8,8,0,0,0,8,8,8,0,8,8,8,6,0,0, +5,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0,0,0,0,0,0,0,0x17,0x54b,0x58b,0x5cb,0x60b,0x58b,0x5cb,0x60b,0x1b, +6,8,8,8,6,5,5,5,5,5,5,5,5,0,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,6,5,6,6,6,8,8,8,8,0,6,6, +6,0,6,6,6,6,0,0,0,0,0,0,0,6,6,0, +5,5,5,0,0,5,0,0,5,5,6,6,0,0,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,5,5,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,6,8,8,0x17,5,5,5, +5,5,5,5,5,0,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, +5,5,5,5,0,5,5,5,5,5,0,0,6,5,8,6, +8,8,8,8,8,0,6,8,8,0,8,8,6,6,0,0, +0,0,0,0,0,8,8,0,0,0,0,0,0,5,5,0, +5,5,6,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x7cb,0x1e4b,0x784b,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,5,5,5,5,5,5, +6,6,8,8,5,5,5,5,5,5,5,5,5,0,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, +6,5,8,8,8,6,6,6,6,0,8,8,8,0,8,8, +8,6,5,0x1b,0,0,0,0,5,5,5,8,0xcc0b,0xca0b,0xcb4b,0xc90b, +0x364b,0xc94b,0x350b,5,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189, +0x1c9,0x209,0x249,0x289,0,0,8,8,0x17,0,0,0,0,0,0,0, +0,0,0,0,0,6,8,8,0,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,5,5,5,5,5,5,5,5,5,0,5,0,0, +5,5,5,5,5,5,5,0,0,0,6,0,0,0,0,8, +8,8,6,6,6,0,6,0,8,8,8,8,8,8,8,8, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,6,5,5,6,6,6,6,6,6,6,0,0,0,0,0x19, +5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,0x17, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0,0,0,0, +0,5,5,0,5,0,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0,5,0,5,5,5,5,5,5,5,5,5,5,6,5,5, +6,6,6,6,6,6,6,6,6,5,0,0,5,5,5,5, +5,0,4,0,6,6,6,6,6,6,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,5,5,5,5,5,0x1b,0x1b,0x1b, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b, +0x17,0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0x344b,0x3c4b,0x444b,0x4c4b,0x544b,0x5c4b,0x644b,0x6c4b,0x744b,0x2c4b, +0x1b,6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5, +5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, +0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8, +6,6,6,6,6,0x17,6,6,5,5,5,5,5,6,6,6, +6,6,6,6,6,6,6,6,0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,0,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b, -0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,8,8,6,6,6, -6,8,6,6,6,6,6,6,8,6,6,8,8,6,6,5, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17, -5,5,5,5,5,5,8,8,6,6,5,5,5,5,6,6, -6,5,8,8,8,5,5,8,8,8,8,8,8,8,5,5, -5,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5, -5,5,6,8,8,6,6,8,8,8,8,8,8,6,5,8, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,8,8,8,6,0x1b,0x1b, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,0x17,4,2,2,2, -1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0, +6,6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17, +0x17,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,8,8,6,6,6,6,8,6,6, +6,6,6,6,8,6,6,8,8,6,6,5,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5, +5,5,8,8,6,6,5,5,5,5,6,6,6,5,8,8, +8,5,5,8,8,8,8,8,8,8,5,5,5,6,6,6, +6,5,5,5,5,5,5,5,5,5,5,5,5,5,6,8, +8,6,6,8,8,8,8,8,8,6,5,8,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,8,8,8,6,0x1b,0x1b,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, -5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,0, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, +2,2,2,2,2,2,2,0x17,4,2,2,2,1,1,1,1, +1,1,0,1,0,0,0,0,0,1,0,0,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,0,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,0,5,0,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,0, -5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0, +5,5,5,5,5,5,5,0,0,6,6,6,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b, +0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x788b,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,0,0,2,2,2,2,2,2,0,0,0x13,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,6, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b, -0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x788b,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x1b,0x17,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,0,0,2,2,2,2,2,2,0,0, -0x13,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x1b,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0xc,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x14, -0x15,0,0,0,5,5,5,5,5,5,5,5,5,5,5,0x17, -0x17,0x17,0x98a,0x9ca,0xa0a,5,5,5,5,5,5,5,5,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,5,6,6,6,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,6,0x17,0x17,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,6,6,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,5,5,5,0,6,6,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,6,6,8,6,6,6,6,6, -6,6,8,8,8,8,8,8,8,8,6,8,8,6,6,6, -6,6,6,6,6,6,6,6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19, -5,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,6,5,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6, -6,6,0x10,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,5,5,5,4,5,5,5,5,5,5,5,5, +0xc,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0x14,0x15,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,0x17,0x17,0x17,0x98a,0x9ca, +0xa0a,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5, -5,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0,0,0,0,0,0,0,6,6,6,8,8,8,8,6, -6,8,8,8,0,0,0,0,8,8,6,8,8,8,8,8, -8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17,0x17,0x49,0x89, -0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5,5,5, +5,5,6,6,6,8,0,0,0,0,0,0,0,0,0,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,5,5,5,5,5,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x30b,0,0,0,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +5,5,6,6,8,0x17,0x17,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,6,6,8,8,6,0,0,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17,0x17,0x17,0,0, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6, +5,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5, +5,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,8,6,8,6,6,6,6,6,6,6,0, -6,8,6,8,8,6,6,6,6,6,6,6,6,8,8,8, -8,8,8,6,6,6,6,6,6,6,6,6,6,0,0,6, +5,5,5,5,6,6,8,6,6,6,6,6,6,6,8,8, +8,8,8,8,8,8,6,8,8,6,6,6,6,6,6,6, +6,6,6,6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19,5,6,0,0, 0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,6,5,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6,6,6,0x10,6, 0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6, -6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, -6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -6,6,6,6,8,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -6,8,6,6,6,6,6,8,6,8,8,8,8,8,6,8, -8,5,5,5,5,5,5,5,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17,5,8,6,6, -6,6,8,8,6,6,8,6,6,6,5,5,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,5,6,6,8,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,8, -6,6,8,8,8,6,8,6,6,6,8,8,0,0,0,0, -0,0,0,0,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,5,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,5,5,5,5,5,5,8,8,8,8,8,8,8,8, -6,6,6,6,6,6,6,6,8,8,6,6,0,0,0,0x17, -0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4, -4,4,0x17,0x17,2,2,2,2,2,2,2,2,2,0,0,0, -0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, -0,1,1,1,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0, -0,0,0,0,6,6,6,0x17,6,6,6,6,6,6,6,6, -6,6,6,6,6,8,6,6,6,6,6,6,6,5,5,5, -5,6,5,5,5,5,5,5,6,5,5,8,6,6,5,0, -0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,0,0,0,0,0,0,5,5,5,5,5,6,6,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, +0,0,0,0,6,6,6,8,8,8,8,6,6,8,8,8, +0,0,0,0,8,8,6,8,8,8,8,8,8,6,6,6, +0,0,0,0,0x1b,0,0,0,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189, +0x1c9,0x209,0x249,0x289,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,5,5,5,5,5,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0x30b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,6,6,8,8,6,0,0,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,4,0x17,0x17,0x17,0x17,0x17,0x17,0,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,7,6,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,8,6,8,6,6,6,6,6,6,6,0,6,8,6,8, +8,6,6,6,6,6,6,6,6,8,8,8,8,8,8,6, +6,6,6,6,6,6,6,6,6,0,0,6,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0x17,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6, +8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,6,8,6,6, +6,6,6,8,6,8,8,8,8,8,6,8,8,5,5,5, +5,5,5,5,5,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x17,0x17,0x17,0x17,0x17,0x17,5,8,6,6,6,6,8,8, +6,6,8,6,6,6,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,5,5,5,5,5,5,6,6,8,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,8,6,6,8,8, +8,6,8,6,6,6,8,8,0,0,0,0,0,0,0,0, +0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,5,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5, +5,5,5,5,8,8,8,8,8,8,8,8,6,6,6,6, +6,6,6,6,8,8,6,6,0,0,0,0x17,0x17,0x17,0x17,0x17, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,4,4,4,4,4,4,0x17,0x17, +2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0, +6,6,6,0x17,6,6,6,6,6,6,6,6,6,6,6,6, +6,8,6,6,6,6,6,6,6,5,5,5,5,6,5,5, +5,5,5,5,6,5,5,8,6,6,5,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2, -4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4, -4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6, -6,6,6,6,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,2,2,2,2,2,2, -2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,1, -1,1,0,0,2,2,2,2,2,2,2,2,0,1,0,1, -0,1,0,1,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,0,0,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3, -3,3,3,3,2,2,2,2,2,0,2,2,1,1,1,1, -3,0x1a,2,0x1a,0x1a,0x1a,2,2,2,0,2,2,1,1,1,1, -3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,1,1,1, -0,0x1a,0x1a,0x1a,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x2cb,4,0,0,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18, -0x18,0x14,0x15,4,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10, -0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c, -0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10, -0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17, -0x17,0x17,0x17,0x16,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18, -0x18,0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4, -4,0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2, +2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,2,1,2,2,2,2,2,2,2,2,2,1,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,0x1a,0x1a,0x1a, +0,0,2,2,2,0,2,2,1,1,1,1,3,0x1a,0x1a,0, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,0,0,1,1,1,1,1,1,0,0, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,0,0,1,1,1,1,1,1,0,0, +2,2,2,2,2,2,2,2,0,1,0,1,0,1,0,1, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0, +2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3, +2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3, +2,2,2,2,2,0,2,2,1,1,1,1,3,0x1a,2,0x1a, +0x1a,0x1a,2,2,2,0,2,2,1,1,1,1,3,0x1a,0x1a,0x1a, +2,2,2,2,0,0,2,2,1,1,1,1,0,0x1a,0x1a,0x1a, +0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xc, +0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x2cb,4,0,0,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18,0x18,0x14,0x15,4, +0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10,0x10,0x10,0x10,0x10, +0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c,0x1c,0x1d,0x14,0x1c, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10,0x10,0x10,0x10,0xc, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x16, +0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x18,0x18,0x18,0x14,0x15,0, +4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0, 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, -0x19,0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, -6,7,7,7,7,6,7,7,7,6,6,6,6,6,6,6, -6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1, -1,1,0x1b,2,1,1,1,1,2,5,5,5,5,2,0x1b,0x1b, -2,2,1,1,0x18,0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18, -0x1b,0x1b,2,0x1b,0x358b,0x360b,0x364b,0x348b,0x388b,0x350b,0x390b,0x3d0b,0x410b,0x354b,0x454b,0x35cb, -0x3dcb,0x45cb,0x4dcb,0x58b,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1, -1,1,2,2,1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1, -1,1,0x1b,0x1b,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x7ca,0x80a,0x84a, -0x11ca,0x1e4a,0x980a,0x784a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x7ca,0x80a,0x84a, -0x11ca,0x1e4a,0x980a,0x784a,0x784a,0x984a,0x788a,1,2,0x6ca,0x11ca,0x988a,0x78ca,0x54b,0x1b,0x1b, -0,0,0,0,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x1b,0x1b,0x18,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7, +7,6,7,7,7,6,6,6,6,6,6,6,6,6,6,6, +6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1,1,1,0x1b,2, +1,1,1,1,2,5,5,5,5,2,0x1b,0x1b,2,2,1,1, +0x18,0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b,2,0x1b, +0x358b,0x360b,0x364b,0x348b,0x388b,0x350b,0x390b,0x3d0b,0x410b,0x354b,0x454b,0x35cb,0x3dcb,0x45cb,0x4dcb,0x58b, +0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1,2,2, +1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1,1,1,0x1b,0x1b, +0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x7ca,0x80a,0x84a,0x11ca,0x1e4a,0x980a,0x784a, +0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x7ca,0x80a,0x84a,0x11ca,0x1e4a,0x980a,0x784a, +0x784a,0x984a,0x788a,1,2,0x6ca,0x11ca,0x988a,0x78ca,0x54b,0x1b,0x1b,0,0,0,0, +0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x18,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x18, +0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18, +0x1b,0x1b,0x18,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x1b, +0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18, -0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x2cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b, -0xa4b,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x2cb,0x30b,0x34b,0x38b,0x3cb, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x2cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0xa4b,0x30b,0x34b,0x38b, +0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb, +0x50b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0xa4b,0x30b,0x34b,0x38b,0x3cb, 0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0xa4b, -0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b, -0x98b,0x9cb,0xa0b,0xa4b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, -0x14,0x15,0x14,0x15,0x14,0x15,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb, -0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b, -0x48b,0x4cb,0x50b,0x7cb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14, +0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, +0x14,0x15,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x30b,0x34b,0x38b,0x3cb, +0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18, +0x18,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15, +0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14, 0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14, -0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15, 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x14,0x15,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,1, -2,1,2,1,2,1,1,1,1,2,1,2,2,1,2,2, -2,2,2,2,4,4,1,1,1,2,1,2,2,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,1,2,1,2,6,6,6,1,2,0,0,0,0, -0,0x17,0x17,0x17,0x17,0x344b,0x17,0x17,2,2,2,2,2,2,0,2, -0,0,0,0,0,2,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,4, -0x17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6, -5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0, -5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, -0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17,0x1c,0x1d,0x17,0x17, -0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x17,0x17,4, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x13,0x17,0x17,0x17,0x17, -0x13,0x17,0x14,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x1b,0x1b,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0,0,0,0,0x1b,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,6,6, -6,6,8,8,0x13,4,4,4,4,4,0x1b,0x1b,0x7ca,0xa4a,0xcca,4, -5,0x17,0x1b,0x1b,0xc,0x17,0x17,0x17,0x1b,4,5,0x54a,0x14,0x15,0x14,0x15, -0x14,0x15,0x14,0x15,0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, -0x13,0x14,0x15,0x15,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,0x1a, -0x1a,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x17, -4,4,4,5,0,0,0,0,0,5,5,5,5,5,5,5, +0x1b,0x1b,0x1b,0x1b,1,2,1,1,1,2,2,1,2,1,2,1, +2,1,1,1,1,2,1,2,2,1,2,2,2,2,2,2, +4,4,1,1,1,2,1,2,2,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1, +2,1,2,6,6,6,1,2,0,0,0,0,0,0x17,0x17,0x17, +0x17,0x344b,0x17,0x17,2,2,2,2,2,2,0,2,0,0,0,0, +0,2,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0,0,0,0,0,0,0,4,0x17,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,6,5,5,5,5, +5,5,5,0,5,5,5,5,5,5,5,0,5,5,5,5, +5,5,5,0,5,5,5,5,5,5,5,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x1b,0x1b, +5,5,5,0,0,0,0,0,0,0,0,0,0x17,0x17,0x1c,0x1d, +0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17,0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15, +0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x13,0x17,0x17,0x17,0x17,0x13,0x17,0x14,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x17,0x17, +0x17,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1b,0xa8b,0xacb,0xb0b, -0xb4b,0xb8b,0xbcb,0xc0b,0xc4b,0xc8b,0xccb,0xd0b,0xd4b,0xd8b,0xdcb,0xe0b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xe4b,0xe8b,0xecb, -0xf0b,0xf4b,0xf8b,0xfcb,0x100b,0x104b,0x108b,0x10cb,0x110b,0x114b,0x118b,0x11cb,5,5,5,5, -5,0x685,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x5c5, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0, +0x1b,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,6,6,6,6,8,8, +0x13,4,4,4,4,4,0x1b,0x1b,0x7ca,0xa4a,0xcca,4,5,0x17,0x1b,0x1b, +0xc,0x17,0x17,0x17,0x1b,4,5,0x54a,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15, +0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,0,6,6,0x1a,0x1a,4,4,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x685,5, +5,5,5,5,5,5,5,5,5,5,5,0x17,4,4,4,5, +0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x705,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x585,5,5,0x705,5,5,5,0x7885, -5,0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x785,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x5c5,5,5,5,5,5,5,5,0x685,5,0x645,5,5,5,5,5, +0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1b,0xa8b,0xacb,0xb0b,0xb4b,0xb8b,0xbcb,0xc0b, +0xc4b,0xc8b,0xccb,0xd0b,0xd4b,0xd8b,0xdcb,0xe0b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xe4b,0xe8b,0xecb,0xf0b,0xf4b,0xf8b,0xfcb, +0x100b,0x104b,0x108b,0x10cb,0x110b,0x114b,0x118b,0x11cb,5,5,5,5,5,0x685,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0x7985,0x7c5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0x5c5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0x7845,5,5,5,5, -5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x685,5,5, +5,5,5,5,5,5,5,5,5,5,0x685,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x1e45,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x7985,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x7a85,5, +5,0x705,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x585,5,5,0x705,5,5,5,0x7885,5,0x605,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x5c5,5,0x745,5,0x6c5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x785,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x5c5,5,5,5, +5,5,5,5,0x685,5,0x645,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x7c5,5,0x7845,0xa45,0xcc5,5,5,5,5,5,5,0xf45,5,5,5, +5,5,5,5,5,5,5,0x7985,0x7c5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x605,0x605,0x605,0x605,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0x7845,5,5,5,5,5,5,5,5, +0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x685,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x1e45,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x7985,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x585,5,5,5,5,5,5,5,0x585,5,5, +5,5,5,5,5,5,5,5,5,5,0x7a85,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x585,5,5,5,5,5, +5,5,5,5,5,0x5c5,5,0x745,5,0x6c5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x7c5,5,0x7845, +0xa45,0xcc5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x605,0x605,0x605, +0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x645, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x785,0xa45,5,5,5,5, -5,5,5,5,5,5,5,5,0x585,0x5c5,0x605,5,0x5c5,5,5,5, +5,0x585,5,5,5,5,5,5,5,0x585,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x7c5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x745,5,5,5, +5,5,5,5,5,5,0x585,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x705,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x785,5, +5,5,5,5,5,5,0x785,0xa45,5,5,5,5,5,5,5,5, +5,5,5,5,0x585,0x5c5,0x605,5,0x5c5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1e45,5, -5,5,5,5,5,5,0x645,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x7c5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x745,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x705,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x7885,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x5c5,5,5,5,5,0x5c5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x5c5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,0x7845,5,5, +5,5,5,5,5,5,5,5,5,5,0x785,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x6c5,5, -5,5,5,5,0x1e45,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x1e45,5,5,5,5,5, +5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x7885,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x6c5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x545,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5, +5,5,0x5c5,5,5,5,5,0x5c5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x5c5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x7845,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,4,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,4,0x17,0x17,0x17, +5,5,5,5,5,5,5,5,5,5,0x6c5,5,5,5,5,5, +0x1e45,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x6c5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,0x545,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5, +5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,4,0x17,0x17,0x17,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,2,1,2,1,2,4,4,6,6, -1,2,1,2,1,2,1,2,1,2,1,2,1,2,5,6, -7,7,7,0x17,6,6,6,6,6,6,6,6,6,6,0x17,4, -5,5,5,5,5,5,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x54a, -6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0, +1,2,1,2,1,2,1,2,4,4,6,6,1,2,1,2, +1,2,1,2,1,2,1,2,1,2,5,6,7,7,7,0x17, +6,6,6,6,6,6,6,6,6,6,0x17,4,5,5,5,5, +5,5,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x54a,6,6,0x17,0x17, +0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0x1a,0x1a,0x1a,0x1a, 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,1,2,5,4,4,2,5,5,5,5,5, -0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, -1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1, -2,1,1,2,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1, -2,1,2,5,1,2,1,2,2,2,1,2,1,2,1,2, -1,2,1,2,1,2,1,1,1,1,1,2,1,1,1,1, -1,2,1,2,1,2,1,2,1,2,1,2,0,0,1,2, -1,1,1,1,2,1,2,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,6,5, -5,5,6,5,5,5,5,6,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8, -8,6,6,8,0x1b,0x1b,0x1b,0x1b,6,0,0,0,0x34cb,0x344b,0x3ccb,0x37cb, -0x35cb,0x3fcb,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,8,8,8,8, -6,6,0,0,0,0,0,0,0,0,0x17,0x17,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,8,8,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,8, -8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5, -0x17,0x17,0x17,5,0x17,5,5,6,5,5,5,5,5,5,6,6, -6,6,6,6,6,6,0x17,0x17,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, -6,6,6,6,6,6,8,8,0,0,0,0,0,0,0,0, -0,0,0,0x17,8,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0,4,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,6,8,8,6,6,6,6,8,8, -6,6,8,8,5,5,5,5,5,6,4,5,5,5,5,5, -5,5,5,5,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5, -5,5,5,0,5,5,5,5,5,5,5,5,5,6,6,6, -6,6,6,8,8,6,6,8,8,6,6,0,0,0,0,0, -0,0,0,0,5,5,5,6,5,5,5,5,5,5,5,5, -6,8,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8, -6,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,6,5,6,6,6,5,5,6,6,5,5,5, -5,5,6,6,5,6,5,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, -5,4,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,8, -6,6,8,8,0x17,0x17,5,4,4,8,6,0,0,0,0,0, -0,0,0,0,0,5,5,5,5,5,5,0,0,5,5,5, -5,5,5,0,0,5,5,5,5,5,5,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,0,5,5,5,5, -5,5,5,0,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0x1a, -4,4,4,4,2,2,2,2,2,2,2,2,2,4,0x1a,0x1a, -0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,5,5,5,8,8,6,8,8,6,8,8,0x17, -8,6,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, -0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0, +0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4, +4,1,2,5,4,4,2,5,5,5,5,5,0x1a,0x1a,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2, +1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, +4,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2, +1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1,2,5, +1,2,1,2,2,2,1,2,1,2,1,2,1,2,1,2, +1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2, +1,2,1,2,1,2,1,2,1,1,1,1,2,1,2,0, +0,0,0,0,1,2,0,2,0,2,1,2,1,2,0,0, +0,0,0,0,5,5,6,5,5,5,6,5,5,5,5,6, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,8,8,6,6,8,0x1b,0x1b,0x1b,0x1b, +6,0,0,0,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,0x1b,0x19,0x1b,0,0, 0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0x17,0x17,0x17,0x17,0,0,0,0, +0,0,0,0,8,8,8,8,6,6,0,0,0,0,0,0, +0,0,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,8,8,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0,0,0,0,5,5,5,5,5,5,5,0,0,0,0,5, +5,5,5,5,8,8,8,8,8,8,8,8,8,8,8,8, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,5,5,5,5,5,5,0x17,0x17,0x17,5,0x17,5,5,6, +5,5,5,5,5,5,6,6,6,6,6,6,6,6,0x17,0x17, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,6,6,6,6,6,6,6,6,6,6,6,8,8, +0,0,0,0,0,0,0,0,0,0,0,0x17,8,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, +8,8,6,6,6,6,8,8,6,6,8,8,5,5,5,5, +5,6,4,5,5,5,5,5,5,5,5,5,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,6,6,6,6,6,6,8,8,6,6,8, +8,6,6,0,0,0,0,0,0,0,0,0,5,5,5,6, +5,5,5,5,5,5,5,5,6,8,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0x17,0x17,0x17,0x17,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5, +5,5,5,0x1b,0x1b,0x1b,5,8,6,8,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,6,5,6,6, +6,5,5,6,6,5,5,5,5,5,6,6,5,6,5,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,5,5,4,0x17,0x17,5,5,5,5, +5,5,5,5,5,5,5,8,6,6,8,8,0x17,0x17,5,4, +4,8,6,0,0,0,0,0,0,0,0,0,0,5,5,5, +5,5,5,0,0,5,5,5,5,5,5,0,0,5,5,5, +5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,0,5,5,5,5,5,5,5,0,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,0x1a,4,4,4,4,2,2,2,2, +2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8, +8,6,8,8,6,8,8,0x17,8,6,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, +5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5, +5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0x12,0x12,0x12,0x12, 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, -0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, +0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11, 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, -0x11,0x11,0x11,0x11,5,5,5,5,5,5,5,5,5,5,5,0x605, -5,5,5,5,5,5,5,0x7c5,5,5,5,5,0x5c5,5,5,5, +0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,5,5,5,5, +5,5,5,5,5,5,5,0x605,5,5,5,5,5,5,5,0x7c5, +5,5,5,5,0x5c5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,0x6c5,5,0x6c5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x6c5,5,0x6c5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x7c5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x18,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,5,5,5,5,5,0,5,0,5,5,0,5, -5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2, -2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2, -2,2,2,2,0,0,0,0,0,5,6,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1a,0x1a, -0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x15,0x14, +5,5,5,5,5,5,5,5,5,0x7c5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x18,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,0,5,0,5,5,0,5,5,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,2,2,2,2,2,2,2,0,0,0,0,0, +0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0, +0,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, +0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0x15,0x14,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0x1b, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,0x19,0x1b,0x1b,0x1b, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,0x15,0x17,0,0,0,0,0,0, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +0x17,0x13,0x13,0x16,0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14, +0x15,0x17,0x17,0x14,0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0, +0x17,0x17,0x17,0x17,0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13, +0x18,0x18,0x18,0,0x17,0x19,0x17,0x17,0,0,0,0,5,5,5,5, +5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,0x19,0x1b,0,0,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14, -0x15,0x17,0,0,0,0,0,0,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,0x17,0x13,0x13,0x16,0x16,0x14,0x15,0x14, -0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,0x15,0x17,0x17,0x17, -0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,0x13,0x14,0x15,0x14, -0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,0x17,0x19,0x17,0x17, -0,0,0,0,5,5,5,5,5,0,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,0,0x10,0,0,5,5, +5,0,0,0x10,0,0,5,5,5,5,5,5,0,0,5,5, 5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5, -5,5,5,5,0,0,5,5,5,0,0,0,0x19,0x19,0x18,0x1a, -0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0,0,0,0,0, -0,0,0,0,0,0x10,0x10,0x10,0x1b,0x1b,0,0,0,0x17,0x17,0x17, -0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x18,0x18,0x18,0x17,0x1a,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15, -0x17,0x17,5,5,5,5,5,5,5,5,5,5,4,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4, -5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,5,5,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5, +5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18, +0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10, +0x1b,0x1b,0,0,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18, +0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17, +0x18,0x18,0x18,0x17,0x1a,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0x14, +0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5,5,5,5,5, +5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0,0,0,0,0,0xb00b,0xb80b,0x784b,0x804b, -0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b, -0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0, -0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b, -0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0x7ca,0x7ca,0x7ca,0x7ca, -0x7ca,0xcca,0x11ca,0x11ca,0x11ca,0x11ca,0x1e4a,0x880a,0x980a,0x980a,0x980a,0x980a,0x980a,0x784a,0x984a,0x68a, -0x11ca,0x344b,0x344b,0x388b,0x3ccb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x54b,0x34cb,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x34ca,0x344a,0x58a,0x68a,0x11ca,0x980a,0x984a,0x988a, -0x68a,0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x984a,0x68a,0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x788a,0x988a,0x7ca, -0x58a,0x58a,0x58a,0x5ca,0x5ca,0x5ca,0x5ca,0x68a,0x1b,0,0,0,0,0,0,0, +5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5, +5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, +0,0,0,0,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b, +0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b, +0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b, +0x900b,0x980b,0xa00b,0xa80b,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0xcca,0x11ca,0x11ca,0x11ca,0x11ca,0x1e4a,0x880a, +0x980a,0x980a,0x980a,0x980a,0x980a,0x784a,0x984a,0x68a,0x11ca,0x344b,0x344b,0x388b,0x3ccb,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x54b,0x34cb,0x1b,0x1b,0x1b,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, +0x34ca,0x344a,0x58a,0x68a,0x11ca,0x980a,0x984a,0x988a,0x68a,0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x984a,0x68a, +0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x788a,0x988a,0x7ca,0x58a,0x58a,0x58a,0x5ca,0x5ca,0x5ca,0x5ca,0x68a, +0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,6,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, -0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b, -0xa00b,0xa80b,0xb00b,0xb80b,0,0,0,0,0x58b,0x68b,0x7cb,0x11cb,0,0,0,0, -0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x1bca,5,5,5,5,5,5, -5,5,0xb80a,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6, -6,6,6,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0x17,5,5,5,5,0,0,0,0, -5,5,5,5,5,5,5,5,0x17,0x58a,0x5ca,0x7ca,0xa4a,0x1e4a,0,0, -0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,0,0,0,0,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, -2,2,2,2,2,2,2,2,5,5,5,5,5,5,5,5, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0, -0,0,0,0x17,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,5,5,0,0,0, -5,0,0,5,5,5,5,5,5,5,0,0,5,0,5,5, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,0x17,0x58b,0x5cb,0x60b,0x7cb,0xa4b,0x1e4b,0x784b,0x788b, +5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +6,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b, +0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0,0,0,0, +0x58b,0x68b,0x7cb,0x11cb,0,0,0,0,0,0,0,0,0,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b, -0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x64b,0x68b,0x7cb,0xa4b,0x1e4b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,0x1bca,5,5,5,5,5,5,5,5,0xb80a,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,0,5,5,0,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b, +5,5,5,5,5,5,6,6,6,6,6,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0x58b,0x7cb,0xa4b,0x1e4b,0x5cb,0x60b,0,0,0,0x17, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0x17, +5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5, +0x17,0x58a,0x5ca,0x7ca,0xa4a,0x1e4a,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0x17, -0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x88cb, -0x90cb,0x98cb,0xa0cb,0xa8cb,0xb0cb,0xb8cb,0x36cb,0x354b,0x34cb,0x348b,0x46cb,0x344b,0x4ecb,0x388b,0x3ccb,0x454b, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,2, +5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0,0,0,0,0x5ecb,0x344b,5,5, -0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb, -0,0,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b, -0x30b,0x34b,0x38b,0x3cb,0x7cb,0xa4b,0x1e4b,0x784b,0x344b,0,0,0,0,0,0,0, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0, -5,6,6,6,0,6,6,0,0,0,0,0,6,6,6,6, -5,5,5,5,0,5,5,5,0,5,5,5,5,5,5,5, +0,0,0,0,0,0,0,0,0,0,0,0x17,1,1,1,1, +1,1,1,1,1,1,1,0,1,1,1,1,2,2,0,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2, +2,2,2,2,2,2,0,2,2,0,0,0,1,1,1,1, +1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0, +1,1,0,2,2,2,2,2,2,2,2,2,5,5,5,5, +5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4, +4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,4, +4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,0,5,5,0,0,0,5,0,0,5,5,5,5,5, +5,5,0,0,5,0,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0x17, +0x58b,0x5cb,0x60b,0x7cb,0xa4b,0x1e4b,0x784b,0x788b,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1b, +0x1b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0,0,0,0,0,0,0,0x58b, +0x5cb,0x60b,0x64b,0x64b,0x68b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,0,0, +0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x58b,0x7cb, +0xa4b,0x1e4b,0x5cb,0x60b,0,0,0,0x17,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,0,0,6,6,6,0,0,0,0,6,5,5,5,5, +5,5,0,0,0,0,0,0x17,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b, +0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x88cb,0x90cb,0x98cb,0xa0cb,0xa8cb,0xb0cb,0xb8cb,0x36cb,0x354b, +0x34cb,0x348b,0x46cb,0x344b,0x4ecb,0x388b,0x3ccb,0x454b,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x58b,0x11cb,0x17,5,5,5,5, +0,0,0,0,0x5ecb,0x344b,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b, +0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0,0,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b, +0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0x30b,0x34b,0x38b,0x3cb,0x7cb,0xa4b,0x1e4b,0x784b, +0x344b,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0,0,0,0,0,0,0,5,6,6,6,0,6,6,0, +0,0,0,0,6,6,6,6,5,5,5,5,0,5,5,5, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,0, +0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x58b,0x7cb,0xa4b,5,5,5,5, -5,6,6,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,0x1b,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, -0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0, -0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0, -0,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, -0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0, -0,0,0x58b,0x68b,0x7cb,0x11cb,0x1e4b,0x784b,5,5,5,5,6,6,6,6, -0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb, -0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b, -0xa80b,0xb00b,0xb80b,0x344b,0x34cb,0x348b,0x388b,0,5,5,5,5,5,5,5,5, -5,5,0,6,6,0x13,0,0,5,5,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,0x58b,0x11cb,0x17,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0xccb,0x1e4b,0x344b,5, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6, -6,6,6,6,6,0x58b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0,0, -0,0,0,0,5,5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,6,8,6,8,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0,0,0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb, -0xa4b,0xccb,0xf4b,0x11cb,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,8,8,8,6,6,6,6,8,8,6,6,0x17, -0x17,0x10,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0, -0,0x10,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, -5,5,5,6,6,6,6,6,8,6,6,6,6,6,6,6, -6,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17, -5,8,8,5,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,5, +5,0x58b,0x7cb,0xa4b,5,5,5,5,5,6,6,0,0,0,0,0x58b, +0x68b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,0x1b,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6, -0x17,0x17,5,0,0,0,0,0,0,0,0,0,8,5,5,5, -5,0x17,0x17,0x17,0x17,6,6,6,6,0x17,8,6,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,5,0x17,5,0x17,0x17,0x17,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8, -8,8,6,6,6,6,6,6,6,6,6,8,0,0x58b,0x5cb,0x60b, -0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b, -0x784b,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,8,8,8,6,6,6,8,8, -6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,6,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -5,0,5,5,5,5,0,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, -5,0x17,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6, -6,6,6,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0,5,5,8,8,0,0,6,6, -6,6,6,6,6,0,0,0,6,6,6,6,6,0,0,0, -0,0,0,0,0,0,0,0,6,6,8,8,0,5,5,5, -5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5, -5,0,5,5,0,5,5,5,5,5,0,6,6,5,8,8, -6,8,8,8,8,0,0,8,8,0,0,8,8,8,0,0, -5,0,0,0,0,0,0,8,0,0,0,0,0,5,5,5, +5,5,5,5,5,5,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,8,8,8,6,6,6,6,6,6,6,6, -8,8,6,6,6,8,6,5,5,5,5,0x17,0x17,0x17,0x17,0x17, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0,0x17,6,5, -5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -8,8,8,6,6,6,6,6,6,8,6,8,8,8,8,6, -6,8,6,6,5,5,0x17,5,0,0,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8, -8,8,6,6,6,6,0,0,8,8,8,8,6,6,8,6, -6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,6,6,0,0, +5,5,5,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -8,8,8,6,6,6,6,6,6,6,6,8,8,6,8,6, -6,0x17,0x17,0x17,5,0,0,0,0,0,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0, +5,5,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0,0,0, +0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,6,8,6,8,8, -6,6,6,6,6,6,8,6,5,0,0,0,0,0,0,0, -8,8,6,6,6,6,8,6,6,6,6,6,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0x17,0x17,0x17,0x1b, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,0,0,0,0,0,0,0,0x58b,0x68b,0x7cb,0x11cb,0x1e4b,0x784b, +5,5,5,5,6,6,6,6,0,0,0,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, +0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb, +0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x344b,0x34cb,0x348b,0x388b,0, +5,5,5,5,5,5,5,5,5,5,0,6,6,0x13,0,0, +5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x58b,0x5cb,0x60b, +0x64b,0x68b,0x7cb,0xa4b,0xccb,0x1e4b,0x344b,5,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,6,6,6,6,6,6,6,6,6,6,6,0x58b,0x7cb,0xa4b, +0x1e4b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,5,5,6,6, +6,6,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x144b,0x16cb,0x194b,0x1bcb, +0x1e4b,0x784b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,6,5,5,6, +6,5,0,0,0,0,0,0,0,0,0,6,8,6,8,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6, +6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0x30b,0x34b, +0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6, -6,6,6,6,6,6,6,6,8,6,6,0x17,0,0,0,0, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b, -0x16cb,0x194b,0x1bcb,0,0,0,0,0,0,0,0,0,0,0,0,5, -8,5,8,6,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0, +6,6,6,8,8,6,6,0x17,0x17,0x10,0x17,0x17,0x17,0x17,6,0, +0,0,0,0,0,0,0,0,0,0x10,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0, +0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0, +0,0,0,0,5,5,5,5,5,5,5,6,6,6,6,6, +8,6,6,6,6,6,6,6,6,0,0x49,0x89,0xc9,0x109,0x149,0x189, +0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,6,6,6,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,6,0x17,0x17,5,0,0,0,0,0, +0,0,0,0,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6, +6,0x17,8,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,0x17, +5,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,8,8,8,6,6,6,6,6,6, +6,6,6,8,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b, +0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,6,6,6,8,8,6,8,6,6,0x17,0x17,0x17,0x17, +0x17,0x17,6,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5, +5,5,5,5,5,5,5,5,5,0x17,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,6,6,6,6,6,6,6,6,0,0,0,0,0, 0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0, -5,5,5,5,5,5,5,0,0,5,0,0,5,5,5,5, -5,5,5,5,0,5,5,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,8,8,8,8,8,8,0,8, -8,0,0,6,6,8,6,5,6,5,0x17,5,8,0,0,0, +5,5,8,8,0,0,6,6,6,6,6,6,6,0,0,0, +6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0, +6,6,8,8,0,5,5,5,5,5,5,5,5,0,0,5, +5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,0,5,5,5,5,5,5,5,0,5,5,0,5,5,5, +5,5,0,6,6,5,8,8,6,8,8,8,8,0,0,8, +8,0,0,8,8,8,0,0,5,0,0,0,0,0,0,8, +0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,8,8,8, +6,6,6,6,6,6,6,6,8,8,6,6,6,8,6,5, +5,5,5,0x17,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x17,0x17,0,0x17,6,5,5,5,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,8,8,8,6,6,6,6, -0,0,6,6,8,8,8,8,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6, -6,8,5,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,6, -0,0,0,0,0,0,0,0,5,6,6,6,6,6,6,8, -8,6,6,6,5,5,5,5,5,6,6,6,6,6,6,6, -6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0x17,0x17,0x17,0,0,0,0,0, +5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6, +6,8,6,8,8,8,8,6,6,8,6,6,5,5,0x17,5, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,8,8,8,6,6,6,6,0,0, +8,8,8,8,6,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +5,5,5,5,6,6,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6, +6,6,6,8,8,6,8,6,6,0x17,0x17,0x17,5,0,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, +0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,6,8,6,8,8,6,6,6,6,6,6,8,6, +5,0x17,0,0,0,0,0,0,8,8,6,6,6,6,8,6, +6,6,6,6,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x7cb,0xa4b,0x17,0x17,0x17,0x1b,5,5,5,5,5,5,5,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,8,8,8,6,6,6,6,6,6,6,6,6, +8,6,6,0x17,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0,0,0,0,0, +0,0,0,0,0,0,0,5,8,5,8,6,0x17,0x17,0x17,0, +0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, +0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,0, +0,5,0,0,5,5,5,5,5,5,5,5,0,5,5,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +8,8,8,8,8,8,0,8,8,0,0,6,6,8,6,5, +6,5,0x17,5,8,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,8,8,8,6,6,6,6,0,0,6,6,8,8,8,8, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,6,6,6,6,6,6,8,5,6,6,6,6,0x17, +0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,0,0,0,0,0,0,0,0, +5,6,6,6,6,6,6,8,8,6,6,6,5,5,5,5, +5,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,8, 6,6,0x17,0x17,0x17,5,0x17,0x17,5,0x17,0x17,0x17,0x17,0x17,0,0, 0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, @@ -1201,140 +1213,152 @@ static const uint16_t propsTrie_index[22276]={ 0x68a,0x68a,0x5ca,0x60a,0x58a,0x5ca,0x348a,0x388a,0x454a,0x348a,0x388a,0x35ca,5,5,5,5, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0,0x10,0x10,0x10,0x10, -0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,6, -6,0x17,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x17,0x17,0, 0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6, -6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,4, -0x17,0x1b,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0x249,0x289,0,0x7cb,0x1e4b,0x788b,0x790b,0x798b,0x7a0b,0x7a8b,0,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,0,5,5,5,0x54b,0x58b,0x5cb,0x60b, -0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b, -0x58b,0x5cb,0x60b,0x17,0x17,0x17,0x17,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,0,0,0,0,6,5,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +5,5,5,5,5,5,5,5,5,5,5,0,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0, +6,6,6,6,6,0x17,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b, +4,4,4,4,0x17,0x1b,0,0,0,0,0,0,0,0,0,0, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0x7cb,0x1e4b,0x788b,0x790b,0x798b, +0x7a0b,0x7a8b,0,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,5, +0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b, +0x94b,0x98b,0x9cb,0xa0b,0x58b,0x5cb,0x60b,0x17,0x17,0x17,0x17,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,6, +5,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -0,0,0,0,0,0,0,6,6,6,6,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,0x17,4,6,0,0,0, -0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, +8,8,8,8,0,0,0,0,0,0,0,6,6,6,6,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x17,4, +6,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,4,4,4,4,0,4,4,4,4,4,4,4, +0,4,4,0,5,5,5,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,0,0,0,0,0,0,0,0,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0, -0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10,0,0,0,0, +0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0, +0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b, -0x1b,8,8,8,8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6, -6,6,6,6,6,6,6,0x1b,0x1b,6,6,6,6,6,6,6, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,0,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0, +0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8,8, +8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6, +6,6,6,0x1b,0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,0x1b,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b, -0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0,0,0,0,0,0,0,0, -0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb, -0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x58b,0x5cb,0x60b,0x64b,0x68b,0x58b,0x68b,0,0,0, -0,0,0,0,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, -0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189, -0x1c9,0x209,0x249,0x289,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,2,2,2,2,2,2,2,0,2,2,2,2,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,1,0,1,1,0,0,1,0, -0,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1, -1,1,2,2,2,2,0,2,0,2,2,2,2,2,2,2, -0,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1, -1,0,1,1,1,1,1,1,1,0,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,1,1,0,1,1,1,1,0,1,1,1,1, -1,0,1,0,0,0,1,1,1,1,1,1,1,0,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, +0,0,0,0,0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, +0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0,0,0,0, +0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b, +0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x58b,0x5cb,0x60b,0x64b,0x68b,0x58b, +0x68b,0,0,0,0,0,0,0,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189, +0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89, +0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,2,2,2,2,2,2,2,0,2,2, +2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, -2,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,0x18,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,1,0,1,1, +0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1, +1,1,1,1,1,1,2,2,2,2,0,2,0,2,2,2, +2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,1,1,0,1,1,1,1,0,0,1,1,1, +1,1,1,1,1,0,1,1,1,1,1,1,1,0,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,0x18,2,2,2,2,2,2,1,1, +2,2,2,2,2,2,2,2,1,1,0,1,1,1,1,0, +1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1, +1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,0x18,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,2,2,2,2,2,0x18,2,2, -2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,2,2,2,0x18,2,2,2,2,2,2,1,2, -0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109, -0x149,0x189,0x1c9,0x209,0,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6, -6,6,6,6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,0, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,0,0,6,6,6,6,6,6,6,0,6,6,0,6,6, -6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,5,0x1b,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,5,0,0,0,6,6,6,6,6,6,6,4, -4,4,4,4,4,4,0,0,5,5,5,5,5,5,5,5, -5,5,5,5,6,6,6,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0,0x19,5,5,5,5,5,0,0,0x58b, -0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,6,6,6,6,6,6,6,0, -0,0,0,0,0,0,0,0,2,2,2,2,6,6,6,6, -6,6,6,4,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209, -0x249,0x289,0,0,0,0,0x17,0x17,1,1,2,2,2,2,2,2, +1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, -0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x78cb,0x794b,0x814b,0x58b,0x5cb,0x60b,0x64b,0x68b, -0x6cb,0x70b,0x74b,0x78b,0x1b,0x34cb,0x344b,0x3ccb,0x19,0x58b,0x5cb,0x788b,0x78cb,0,0,0, -0,0,0,0,0,0,0,0,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b, -0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b, -0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b, -0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x1b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb, -0x900b,0xa00b,0x804b,0x788b,0x344b,0x354b,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b, -0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b, -0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0x18,0x18,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,5,5,5,5,0,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,0,5,5,0,5,0,0,5, -0,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, -0,5,0,5,0,0,0,0,0,0,5,0,0,0,0,5, -0,5,0,5,0,5,5,5,0,5,5,0,5,0,0,5, -0,5,0,5,0,5,0,5,0,5,5,0,5,0,0,5, -5,5,5,0,5,5,5,5,5,5,5,0,5,5,5,5, -0,5,5,5,5,0,5,0,5,5,5,5,5,5,5,5, -5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,0,5,5,5,0,5,5,5, -5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +2,2,2,2,2,2,0,0,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,0x18,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,0x18,2,2,2,2, +2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,0x18,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,0x18,2,2,2,2,2,2,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,2,2,2,0x18,2,2,2,2, +2,2,1,2,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289, +0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x1b, +0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,6,6, +6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6, +6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6, +6,6,6,6,6,0,0,6,6,6,6,6,2,2,2,2, +2,2,2,2,2,2,5,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,0,6,6,0,6, +6,0,6,6,6,6,6,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,5,0x1b,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,6, +6,6,6,4,4,4,4,4,4,4,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,6,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +5,5,5,5,5,5,5,5,6,6,6,6,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0x19,5,5,5,5, +5,5,5,0,5,5,5,5,0,5,5,0,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5, +5,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,6,6,6,6, +6,6,6,0,0,0,0,0,0,0,0,0,2,2,2,2, +6,6,6,6,6,6,6,4,0,0,0,0,0x49,0x89,0xc9,0x109, +0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,1,1,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b, +0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x78cb,0x794b,0x814b,0x58b, +0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x1b,0x34cb,0x344b,0x3ccb,0x19,0x58b,0x5cb,0x788b, +0x78cb,0,0,0,0,0,0,0,0,0,0,0,0x16cb,0x194b,0x1bcb,0x1e4b, +0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b, +0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x984b,0xa04b,0xa84b,0xb04b, +0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x1b,0x5cb,0x60b,0x64b,0x68b,0x6cb, +0x70b,0x74b,0x78b,0x7cb,0x900b,0xa00b,0x804b,0x788b,0x344b,0x354b,0,0,0,0x58b,0x5cb,0x60b, +0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b, +0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x18,0x18,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5, +0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,0, +5,0,0,5,0,5,5,5,5,5,5,5,5,5,5,0, +5,5,5,5,0,5,0,5,0,0,0,0,0,0,5,0, +0,0,0,5,0,5,0,5,0,5,5,5,0,5,5,0, +5,0,0,5,0,5,0,5,0,5,0,5,0,5,5,0, +5,0,0,5,5,5,5,0,5,5,5,5,5,5,5,0, +5,5,5,5,0,5,5,5,5,0,5,0,5,5,5,5, +5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,5, +0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x2cb,0x2cb,0x30b,0x34b, 0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x54b,0x54b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, @@ -1351,2181 +1375,2229 @@ static const uint16_t propsTrie_index[22276]={ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, 0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0,0,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0, 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, -0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,0x705,5,5, +0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0, +0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x1b,0x1b,0x1b,5,0x705,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x645,5,5,5, +5,5,5,5,0x645,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,0x645,5,5,5,5,5, +5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x685,5,5,5,5,5,5, +5,0x685,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0xcc5,5,5,5,5, -5,5,5,5,0xf45,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,0xf45,5,5,5,5,5,5,5,5,5,5,5, -5,5,0x6c5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5, +5,5,5,0xcc5,5,5,5,5,5,5,5,5,0xf45,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,0xf45,5,5,5, +5,5,5,5,5,5,5,5,5,5,0x6c5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,0x605,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,0x605,5,5,5, +5,5,5,5,5,5,5,5,5,0x605,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,0x605,5,5,5,5, -5,5,5,5,5,5,5,5,5,0x645,5,5,5,5,5,5, +5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5,5, +5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x785,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,0x785,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, -0,0x10,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0,0x10,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6, +6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0x11,0x11,0x11,0x11, 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, -0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0, -0,0,0,0 +0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0,0,0 }; static const UTrie2 propsTrie={ propsTrie_index, - propsTrie_index+4532, + propsTrie_index+4656, NULL, - 4532, - 17744, + 4656, + 18032, 0xa40, - 0x1234, + 0x12b0, 0x0, 0x0, 0x110000, - 0x5700, + 0x589c, NULL, 0, FALSE, FALSE, 0, NULL }; -static const uint16_t propsVectorsTrie_index[31228]={ -0x4e8,0x4f0,0x4f8,0x500,0x518,0x520,0x528,0x530,0x538,0x540,0x548,0x550,0x558,0x560,0x568,0x570, -0x577,0x57f,0x587,0x58f,0x592,0x59a,0x5a2,0x5aa,0x5b2,0x5ba,0x5c2,0x5ca,0x5d2,0x5da,0x5e2,0x5ea, -0x5f2,0x5fa,0x601,0x609,0x611,0x619,0x621,0x629,0x631,0x639,0x63e,0x646,0x64d,0x655,0x65d,0x665, -0x66d,0x675,0x67d,0x685,0x68c,0x694,0x69c,0x6a4,0x6ac,0x6b4,0x6bc,0x6c4,0x6cc,0x6d4,0x6dc,0x6e4, -0x1a38,0xd5e,0xe35,0x6ec,0x508,0xe9c,0xea4,0x1bf2,0x1300,0x1310,0x12f8,0x1308,0x7c5,0x7cb,0x7d3,0x7db, -0x7e3,0x7e9,0x7f1,0x7f9,0x801,0x807,0x80f,0x817,0x81f,0x825,0x82d,0x835,0x83d,0x845,0x84d,0x854, -0x85c,0x862,0x86a,0x872,0x87a,0x880,0x888,0x890,0x898,0x1318,0x8a0,0x8a8,0x8b0,0x8b7,0x8bf,0x8c7, -0x8cf,0x8d3,0x8db,0x8e2,0x8ea,0x8f2,0x8fa,0x902,0x162c,0x1634,0x90a,0x912,0x91a,0x922,0x92a,0x931, -0x1692,0x1682,0x168a,0x1973,0x197b,0x1328,0x939,0x1320,0x1572,0x1572,0x1574,0x133c,0x133d,0x1330,0x1332,0x1334, -0x169a,0x169c,0x941,0x169c,0x949,0x94e,0x956,0x16a1,0x95c,0x169c,0x962,0x96a,0xc39,0x16a9,0x16a9,0x972, -0x16b9,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba, -0x16ba,0x16ba,0x16ba,0x16b1,0x97a,0x16c2,0x16c2,0x982,0xb59,0xb61,0xb69,0xb71,0x16d2,0x16ca,0x98a,0x992, -0x99a,0x16dc,0x16e4,0x9a2,0x16da,0x9aa,0x1a40,0xd66,0xb79,0xb81,0xb89,0xb8e,0x18e1,0xc6c,0xc73,0x1849, -0xc09,0x1a48,0xd6e,0xd76,0xd7e,0xd86,0xf47,0xf48,0x1939,0x193e,0xca8,0xcb0,0x19af,0x19b7,0x1b11,0xe3d, -0x19bf,0xcf2,0xcfa,0x19c7,0x10f6,0x1196,0xf27,0xd8e,0x1869,0x1851,0x1861,0x1859,0x18f9,0x18f1,0x18b9,0xc19, -0x1345,0x1345,0x1345,0x1345,0x1348,0x1345,0x1345,0x1350,0x9b2,0x1358,0x9b6,0x9be,0x1358,0x9c6,0x9ce,0x9d6, -0x1368,0x1360,0x1370,0x9de,0x9e6,0x1378,0x9ee,0x9f6,0x1380,0x1388,0x1390,0x1398,0x9fe,0x13a0,0x13a7,0x13af, -0x13b7,0x13bf,0x13c7,0x13cf,0x13d7,0x13de,0x13e6,0x13ee,0x13f6,0x13fe,0x1401,0x1403,0x16ec,0x17dc,0x17e2,0x1929, -0x140b,0xa06,0xa0e,0x1525,0x152a,0x152d,0x1535,0x1413,0x153d,0x153d,0x1423,0x141b,0x142b,0x1433,0x143b,0x1443, -0x144b,0x1453,0x145b,0x1463,0x17ea,0x1841,0x1983,0x1ad9,0x1473,0x147a,0x1482,0x148a,0x146b,0x1492,0x17f2,0x17f9, -0x16f4,0x16f4,0x16f4,0x16f4,0x16f4,0x16f4,0x16f4,0x16f4,0x1801,0x1804,0x1801,0x1801,0x180c,0x1813,0x1815,0x181c, -0x1824,0x1828,0x1828,0x182b,0x1828,0x1828,0x1831,0x1828,0x1871,0x1931,0x198b,0xb96,0xb9c,0x1c36,0x1c3e,0x1d15, -0x18d1,0xc49,0xc4d,0x1946,0x18c1,0x18c1,0x18c1,0xc21,0x18c9,0xc41,0x1911,0xc98,0xc29,0xc31,0xc31,0x19cf, -0x1901,0x1993,0xc83,0xc88,0xa16,0x16fc,0x16fc,0xa1e,0x1704,0x1704,0x1704,0x1704,0x1704,0x1704,0xa26,0x6f0, -0x155a,0x157c,0xa2e,0x1584,0xa36,0x158c,0x1594,0x159c,0xa3e,0xa43,0x15a4,0x15ab,0xa48,0x170c,0x1921,0xc11, -0xa50,0x1606,0x160d,0x15b3,0x1615,0x161c,0x15bb,0x15bf,0x15d8,0x15d8,0x15da,0x15c7,0x15cf,0x15cf,0x15d0,0x1624, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714, -0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1714,0x1717,0x1879,0x1879, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2, -0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e2,0x15e9,0x1a30,0x12b5, -0x171f,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725, -0x1725,0x1725,0x1725,0x1725,0xa58,0x172d,0xa60,0x1a50,0x19db,0x19db,0x19db,0x19db,0x19db,0x19db,0x19db,0x19db, -0x19d7,0xd02,0x19eb,0x19e3,0x19ed,0x1a58,0x1a58,0xd96,0x18d9,0x194e,0x19a3,0x19a7,0x199b,0x1b09,0xcb8,0xcbb, -0x1909,0xc90,0x1956,0xcc3,0x19f5,0x19f8,0xd0a,0x1a60,0x1a08,0x1a00,0xd12,0xd9e,0x1a68,0x1a6c,0xda6,0xff0, -0x1a10,0xd1a,0xd22,0x1a74,0x1a84,0x1a7c,0xdae,0xef7,0xe45,0xe4d,0x1c85,0xfa8,0x1d32,0x1d32,0x1a8c,0xdb6, -0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675, -0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677, -0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679, -0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674, -0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676, -0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678, -0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a, -0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675, -0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677, -0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679, -0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674, -0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676, -0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678, -0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a, -0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675, -0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677, -0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679, -0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674, -0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676, -0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678, -0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a, -0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0x167a,0x1674,0x1675,0x1676,0x1677,0x1678,0x1679,0xa68,0xdbe,0xdc1, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c, -0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c,0x164c, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545, -0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x15f1,0x15f1,0x15f1,0x15f1,0x15f1,0x15f1,0x15f1,0x15f1, -0x15f6,0x15fe,0x1839,0x12bd,0x1919,0x1919,0x12c1,0x12c8,0xa70,0xa78,0xa80,0x14b2,0x14b9,0x14c1,0xa88,0x14c9, -0x14fa,0x14fa,0x14a2,0x14aa,0x14d1,0x14f1,0x14f2,0x1502,0x14d9,0x149a,0xa90,0x14e1,0xa98,0x14e9,0xaa0,0xaa4, -0xca0,0x150a,0xaac,0xab4,0x1512,0x1518,0x151d,0xabc,0xacc,0x1562,0x156a,0x154d,0x1552,0xad4,0xadc,0xac4, -0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c, -0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x163c,0x1644,0x1644,0x1644,0x1644, -0x1420,0x1420,0x1460,0x14a0,0x14e0,0x1520,0x1560,0x15a0,0x15dc,0x161c,0x1648,0x1688,0x16c8,0x1708,0x1748,0x1788, -0x17c8,0x1804,0x1844,0x1884,0x18c4,0x18f8,0x1934,0x1974,0x19b4,0x19f4,0x1a30,0x1a70,0x1ab0,0x1af0,0x1b30,0x1b70, -0xa80,0xac0,0xb00,0xb40,0xb80,0xa40,0xe75,0xa40,0xe97,0xa40,0xa40,0xa40,0xa40,0xbc0,0x12dd,0x12dd, -0xed7,0xc00,0xa40,0xa40,0xa40,0xa40,0xf17,0xc2d,0xa40,0xa40,0xc6d,0xcad,0xced,0xd2d,0xe35,0xda5, -0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d,0x121d, -0x121d,0x121d,0x121d,0x121d,0xf57,0x125d,0x1092,0x10d2,0x129d,0x10dd,0x131d,0x131d,0x131d,0xf97,0xfb7,0xff7, -0x135d,0x135d,0x1037,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7, -0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0x1052, +static const uint16_t propsVectorsTrie_index[32060]={ +0x511,0x519,0x521,0x529,0x541,0x549,0x551,0x559,0x561,0x569,0x571,0x579,0x581,0x589,0x591,0x599, +0x5a0,0x5a8,0x5b0,0x5b8,0x5bb,0x5c3,0x5cb,0x5d3,0x5db,0x5e3,0x5eb,0x5f3,0x5fb,0x603,0x60b,0x613, +0x61b,0x623,0x62a,0x632,0x63a,0x642,0x64a,0x652,0x65a,0x662,0x667,0x66f,0x676,0x67e,0x686,0x68e, +0x696,0x69e,0x6a6,0x6ae,0x6b5,0x6bd,0x6c5,0x6cd,0x6d5,0x6dd,0x6e5,0x6ed,0x6f5,0x6fd,0x705,0x70d, +0x1aba,0xd5a,0xe2e,0x1162,0x1299,0x1c7b,0x1e12,0x1c73,0x1367,0x1377,0x135f,0x136f,0x7da,0x7e0,0x7e8,0x7f0, +0x7f8,0x7fe,0x806,0x80e,0x816,0x81c,0x824,0x82c,0x834,0x83a,0x842,0x84a,0x852,0x85a,0x862,0x869, +0x871,0x877,0x87f,0x887,0x88f,0x895,0x89d,0x8a5,0x8ad,0x137f,0x8b5,0x8bd,0x8c5,0x8cc,0x8d4,0x8dc, +0x8e4,0x8e8,0x8f0,0x8f7,0x8ff,0x907,0x90f,0x917,0x169a,0x16a2,0x91f,0x927,0x92f,0x937,0x93f,0x946, +0x1700,0x16f0,0x16f8,0x19f5,0x19fd,0x138f,0x94e,0x1387,0x15e3,0x15e3,0x15e5,0x13a3,0x13a4,0x1397,0x1399,0x139b, +0x1708,0x170a,0x956,0x170a,0x95e,0x963,0x96b,0x170f,0x971,0x170a,0x977,0x97f,0xc3a,0x1717,0x1717,0x987, +0x1727,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728,0x1728, +0x1728,0x1728,0x1728,0x171f,0x98f,0x1730,0x1730,0x997,0xb62,0xb6a,0xb72,0xb7a,0x1740,0x1738,0x99f,0x9a7, +0x9af,0x174a,0x1752,0x9b7,0x1748,0x9bf,0x1ac2,0xd62,0xb82,0xb8a,0xb92,0xb97,0x195b,0xc61,0xc68,0x18b7, +0xc12,0x1aca,0xd6a,0xd72,0xd7a,0xd82,0xf38,0xf3c,0x19bb,0x19c0,0xca0,0xca8,0x1a31,0x1a39,0x1b93,0xe36, +0x1a41,0xcee,0xcf6,0x1a49,0x10e2,0x118a,0xf10,0xd8a,0x18d7,0x18bf,0x18cf,0x18c7,0x1973,0x196b,0x1927,0x19b3, +0x13ac,0x13ac,0x13ac,0x13ac,0x13af,0x13ac,0x13ac,0x13b7,0x9c7,0x13bf,0x9cb,0x9d3,0x13bf,0x9db,0x9e3,0x9eb, +0x13cf,0x13c7,0x13d7,0x9f3,0x9fb,0x13df,0xa03,0xa0b,0x13e7,0x13ef,0x13f7,0x13ff,0xa13,0x1407,0x140e,0x1416, +0x141e,0x1426,0x142e,0x1436,0x143e,0x1445,0x144d,0x1455,0x145d,0x1465,0x1468,0x146a,0x175a,0x184d,0x1853,0x19a3, +0x1472,0xa1b,0xa23,0x1598,0x159d,0x15a0,0x15a6,0x147a,0x15ae,0x15ae,0x148a,0x1482,0x1492,0x149a,0x14a2,0x14aa, +0x14b2,0x14ba,0x14c2,0x14ca,0x185b,0x18af,0x1a05,0x1b5b,0x14da,0x14e0,0x14e8,0x14f0,0x14d2,0x14f8,0x1863,0x186a, +0x1762,0x1762,0x1762,0x1762,0x1762,0x1762,0x1762,0x1762,0x1872,0x1872,0x1872,0x1872,0x187a,0x1881,0x1883,0x188a, +0x1892,0x1896,0x1896,0x1899,0x1896,0x1896,0x189f,0x1896,0x18df,0x19ab,0x1a0d,0xb9f,0xba5,0x1cbf,0x1cc7,0x1d9d, +0x194b,0x193f,0x1943,0x19c8,0x192f,0x192f,0x192f,0xc22,0x1937,0xc42,0x198b,0xc90,0xc2a,0xc32,0xc32,0x1a51, +0x197b,0x1a15,0xc78,0xc80,0xa2b,0x176a,0x176a,0xa33,0x1772,0x1772,0x1772,0x1772,0x1772,0x1772,0xa3b,0x715, +0x15cb,0x15ed,0xa43,0x15f5,0xa4b,0x15fd,0x1605,0x160d,0xa53,0xa58,0x1615,0x161c,0xa5d,0x177a,0x199b,0xc1a, +0xa65,0x1677,0x167e,0x1624,0x1686,0x168a,0x162c,0x1630,0x1649,0x1649,0x164b,0x1638,0x1640,0x1640,0x1641,0x1692, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782, +0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1782,0x1785,0x18e7,0x18e7, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653, +0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x165a,0x1ab2,0x1e7e, +0x178d,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793, +0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793,0x1793, +0x1793,0x1793,0x1793,0x1793,0xa6d,0x179b,0xa75,0x1ad2,0x1a5d,0x1a5d,0x1a5d,0x1a5d,0x1a5d,0x1a5d,0x1a5d,0x1a5d, +0x1a59,0xcfe,0x1a6d,0x1a65,0x1a6f,0x1ada,0x1ada,0xd92,0x1953,0x19d0,0x1a25,0x1a29,0x1a1d,0x1b8b,0xcb0,0xcb7, +0x1983,0xc88,0x19d8,0xcbf,0x1a77,0x1a7a,0xd06,0x1ae2,0x1a8a,0x1a82,0xd0e,0xd9a,0x1aea,0x1aee,0xda2,0xfec, +0x1a92,0xd16,0xd1e,0x1af6,0x1b06,0x1afe,0xdaa,0xee0,0xe3e,0xe46,0x1d0d,0xf9c,0x1dba,0x1dba,0x1b0e,0xdb2, +0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3, +0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5, +0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7, +0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2, +0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4, +0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6, +0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8, +0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3, +0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5, +0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7, +0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2, +0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4, +0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6, +0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8, +0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3, +0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5, +0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7, +0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2, +0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4, +0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6, +0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8, +0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0x16e8,0x16e2,0x16e3,0x16e4,0x16e5,0x16e6,0x16e7,0xa7d,0xdba,0xdbd, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba, +0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba,0x16ba, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6, +0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x15b6,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662, +0x1667,0x166f,0x18a7,0x132c,0x1993,0x1993,0x1330,0x1337,0xa85,0xa8d,0xa95,0x1518,0x151f,0x1527,0xa9d,0x152f, +0x156d,0x156d,0x1500,0x1508,0x1537,0x1564,0x1565,0x1575,0x153f,0x1544,0x154c,0x1554,0xaa5,0x155c,0xaad,0x1510, +0xc98,0x157d,0xab5,0xabd,0x1585,0x158b,0x1590,0xac5,0xad5,0x15d3,0x15db,0x15be,0x15c3,0xadd,0xae5,0xacd, +0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, +0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16b2,0x16b2,0x16b2,0x16b2, +0x14c4,0x14c4,0x1504,0x1544,0x1584,0x15c4,0x1604,0x1644,0x1680,0x16c0,0x16ec,0x172c,0x176c,0x17ac,0x17ec,0x182c, +0x186c,0x18a8,0x18e8,0x1928,0x1968,0x199c,0x19d8,0x1a18,0x1a58,0x1a98,0x1ad4,0x1b14,0x1b54,0x1b94,0x1bd4,0x1c14, +0xe59,0xa80,0xac0,0xb00,0xb40,0xb6b,0xed9,0xa40,0xefb,0xa40,0xa40,0xa40,0xa40,0xbab,0x1381,0x1381, +0xf3b,0xfbb,0xa40,0xa40,0xa40,0xbeb,0xf7b,0xc2b,0xa40,0xc51,0xc91,0xcd1,0xd11,0xd51,0xe99,0xdc9, +0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1,0x12c1, +0x12c1,0x12c1,0x12c1,0x12c1,0xffb,0x1301,0x1136,0x1176,0x1341,0x1181,0x13c1,0x13c1,0x13c1,0x103b,0x105b,0x109b, +0x1401,0x1401,0x10db,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b, +0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x105b,0x10f6, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, 0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, -0xde5,0xdf5,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, -0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd65, -0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d, -0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x111d, -0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd, -0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x11dd,0x115d, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0xba4,0xbab,0xbb3,0xbbb,0x1881,0x1881,0x1881,0xbc3,0xbcb,0xbce,0x18b1,0x18a9,0xc01,0xd2a,0xd2e,0xd32, -0x508,0x508,0x508,0x508,0xd3a,0x1a18,0xd42,0xf3f,0x1735,0xae4,0xaea,0x1000,0xbd6,0x18e9,0xc7b,0x508, -0x174a,0x173d,0x1742,0x1889,0xbde,0xbe6,0x1134,0x113a,0x1c6d,0xf5d,0x1c5d,0x6f8,0x508,0x508,0x508,0x508, -0x1c8d,0x1c8d,0x1c8d,0x1c8d,0x1c8d,0x1c8d,0x1c8d,0x1c8d,0x1c8d,0xfb0,0xfb8,0xfc0,0x508,0x508,0x508,0x508, -0xbee,0xbf1,0xdc9,0x1cd5,0xff8,0x700,0x508,0x1092,0xccb,0xd4a,0x508,0x508,0x1c02,0xeff,0xf07,0x1d1d, -0xc55,0xc5c,0xc64,0x1a94,0x1cb5,0x508,0x1c95,0xfd0,0x1a9c,0xdd1,0xdd9,0xde1,0x1020,0x708,0x508,0x508, -0x1aa4,0x1aa4,0x710,0x508,0x1d4a,0x10aa,0x1d42,0x10b2,0x1e0e,0x11ac,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0xde9,0x1e66,0x1291,0x508,0x508,0x1e2e,0x11d4,0x11db,0x718,0x508,0x71c,0x1248,0x11e3, -0x1b19,0x1b1b,0xe55,0xe5c,0x1aac,0x1ab4,0xdf1,0xf1f,0x1bfa,0xee7,0xeef,0xfc8,0x1c1a,0x1c1e,0x1c26,0x1040, -0xf93,0xf98,0x724,0x508,0x109a,0x10a2,0x1c7d,0xfa0,0xf75,0xf7b,0xf83,0xf8b,0x508,0x508,0x508,0x508, -0x1daa,0x1da2,0x1124,0x112c,0x1cfd,0x1cf5,0x1068,0x508,0x508,0x508,0x508,0x508,0x1ce5,0x1028,0x1030,0x1038, -0x1cad,0x1ca5,0xfe0,0x111c,0x1c2e,0xf2f,0x72c,0x508,0x1078,0x1080,0x508,0x508,0x508,0x508,0x508,0x508, -0x1e06,0x118e,0x734,0x508,0x508,0x1d0d,0x1d05,0x1070,0x1250,0x1256,0x125e,0x508,0x508,0x11eb,0x11ef,0x11f7, -0x1dde,0x1dd6,0x1176,0x1dce,0x1dc6,0x73c,0x1cdd,0x1018,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x10da,0x10df,0x10e7,0x10ee,0x110e,0x1114,0x508,0x508,0x115a,0x115e,0x1166,0x119e,0x11a4,0x744,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x11bc,0x508,0x508,0x508,0x508,0x508,0x748,0x1e4e,0x1238, -0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e, -0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x195e,0x1963,0xcd3,0xcda,0xcda,0xcda, -0x196b,0x196b,0x196b,0xce2,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x1d3a,0x750,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23,0x1b23, -0x1b23,0xe64,0xfe8,0x758,0x508,0x508,0x75c,0xf37,0x1ccd,0x1cc5,0x1008,0x1010,0x764,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x1e26,0x1e1e,0x11cc,0x508,0x508,0x508,0x1c12,0x1c12,0xf0f,0x1c0a,0xf17,0x508,0x508,0x1106, -0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba, -0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dba,0x1dbe,0x1e76,0x1e76,0x1e76,0x1e76,0x1e76,0x1e76,0x1e76,0x1e76, -0x1e76,0x1e76,0x1e76,0x1e76,0x1e76,0x1e76,0x1266,0x126c,0x1286,0x1289,0x1289,0x1289,0x76c,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x1c65,0x1c65,0x1c65, -0xf50,0xf55,0x774,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x1752,0x1752,0x1752, -0x1752,0x1752,0x1752,0x1752,0xaf2,0x1762,0xafa,0x1763,0x175a,0x176b,0x1771,0x1779,0xb02,0x18a1,0x18a1,0x77c, -0x508,0x508,0x508,0x508,0x11c4,0x1891,0x1891,0xbf9,0xcea,0x508,0x508,0x508,0x508,0x17aa,0x17b1,0xb0a, -0x17b4,0xb12,0xb1a,0xb22,0x17ae,0xb2a,0xb32,0xb3a,0x17b3,0x17bb,0x17aa,0x17b1,0x17ad,0x17b4,0x17bc,0x17ab, -0x17b2,0x17ae,0xb41,0x1781,0x1789,0x1790,0x1797,0x1784,0x178c,0x1793,0x179a,0xb49,0x17a2,0x1d62,0x1d62,0x1d62, -0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d62,0x1d52,0x1d55,0x1d52, -0x1d5c,0x10ca,0x784,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x10fe,0x78c,0x508, -0x508,0x508,0x508,0x508,0x508,0x1e46,0x11ff,0x794,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x1e56,0x1240,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x1c9d,0x1c9d,0x1c9d, -0x1c9d,0x1c9d,0x1c9d,0xfd8,0x508,0x1d9a,0x1d92,0x10d2,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x798,0x1e16,0x11b4,0x508,0x508,0x1207,0x1208,0x7a0,0x508,0x508,0x508,0x508,0x508,0xeac,0xeb4,0xebc, -0xec4,0xecc,0xed4,0xedb,0xedf,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x7a4,0x1048,0x1ced,0x104e,0x1ced,0x1056,0x105b,0x1060,0x1060,0x1d72,0x1d82,0x1d8a, -0x10ba,0x1d7a,0x1e36,0x10c2,0x1dee,0x1e3e,0x1e3e,0x117e,0x1186,0x121f,0x1225,0x122a,0x1230,0x1e5e,0x1e5e,0x1e5e, -0x1e5e,0x1274,0x1e5e,0x127a,0x127e,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac, -0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac,0x7ac, -0x7ac,0x7ac,0x7ac,0x7ac,0x7ad,0xb51,0x17c4,0x17c4,0x17c4,0x7b5,0x7b5,0x7b5,0x7b5,0x1899,0x1899,0x1899, -0x1899,0x1899,0x1899,0x1899,0x7bd,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5, -0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5, -0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5, -0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x7b5, -0x7b5,0x7b5,0x7b5,0x7b5,0x7b5,0x1a20,0xd52,0x1a28,0x1a28,0xd56,0xe6c,0xe74,0xe7c,0x1ae9,0x1ad1,0x1af1, -0x1af9,0x1ae1,0xe01,0xe05,0xe0c,0xe14,0xe1b,0xe23,0xe2b,0xe2d,0xe2d,0xe2d,0xe2d,0x1b5a,0x1b62,0x1b5a, -0x1b68,0x1b70,0x1b3b,0x1b78,0x1b80,0x1b5a,0x1b88,0x1b90,0x1b97,0x1b9f,0x1b43,0x1b5a,0x1ba4,0x1b4b,0x1b52,0x1bac, -0x1bb2,0x1c4e,0x1c55,0x1c46,0x1bba,0x1bc2,0x1bca,0x1bd2,0x1cbd,0x1bda,0x1be2,0xe84,0xe8c,0x1b2b,0x1b2b,0x1b2b, -0xe94,0x1c75,0x1c75,0xf65,0xf6d,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc, -0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abe,0x1abc,0x1ac6,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc, -0x1ac9,0x1abc,0x1abc,0x1abc,0x1abc,0x1abc,0xdf9,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25, -0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d2a,0x1d25,0x1d25,0x1d25,0x1088,0x108a,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1142,0x1b33,0x1de6,0x1de6,0x1de6,0x1de6,0x1de6,0x1de6,0x1de6,0x114a, -0x1152,0x1210,0x1217,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x1dfe,0x116e,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x508, -0x508,0x508,0x508,0x508,0x508,0x508,0x508,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x12d0,0x1299,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x12a1,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4, -0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x17d4,0x12d8,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x12a5,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x12ad,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, -0x1299,0x12a5,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x12e0,0x1bea,0x1bea,0x1bea,0x1bea, -0x1bea,0x1bea,0x12e8,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x12f0,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1654,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x165c,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664, -0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x1664,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c, -0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x166c,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc, -0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x17cc,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01, -0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1b01,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a, -0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1d6a,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2, -0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1db2,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6, -0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1df6,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e, -0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x1e6e,0x4e7,0x4e7,0x4e7, -0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2ca,0x2d3,0x2cd,0x2cd,0x2d0,0x2c7,0x2c7, -0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7, -0x7fb,0x7f5,0x7da,0x7d1,0x7c8,0x7c5,0x7bc,0x7d7,0x7c2,0x7ce,0x7d1,0x7ec,0x7e3,0x7d4,0x7f8,0x7cb, -0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7b9,0x7e0,0x7dd,0x7e6,0x7e6,0x7e6,0x7f5, -0x7bc,0x807,0x807,0x807,0x807,0x807,0x807,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, -0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x7c2,0x7c8,0x7ce,0x7f2,0x7b6, -0x7ef,0x804,0x804,0x804,0x804,0x804,0x804,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe, -0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7fe,0x7c2,0x7e9,0x7bf,0x7e6,0x2c7, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2e5,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6, -0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6, -0x2d9,0x651,0x810,0x813,0x657,0x813,0x80d,0x64e,0x645,0x2df,0x663,0x2e2,0x816,0x63c,0x65a,0x80a, -0x654,0x660,0x642,0x642,0x648,0x2dc,0x64e,0x64b,0x645,0x642,0x663,0x2e2,0x63f,0x63f,0x63f,0x651, -0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x66c,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb, -0x66c,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x65d,0x66c,0x2eb,0x2eb,0x2eb,0x2eb,0x2eb,0x66c,0x666, -0x669,0x669,0x2e8,0x2e8,0x2e8,0x2e8,0x666,0x2e8,0x669,0x669,0x669,0x2e8,0x669,0x669,0x2e8,0x2e8, -0x666,0x2e8,0x669,0x669,0x2e8,0x2e8,0x2e8,0x65d,0x666,0x669,0x669,0x2e8,0x669,0x2e8,0x666,0x2e8, -0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee, -0x2f4,0x66f,0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x2ee, -0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x678,0x66f,0x2f7,0x2ee,0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x2ee, -0x2f7,0x66f,0x67b,0x675,0x2f7,0x2ee,0x2f7,0x2ee,0x66f,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x67b, -0x675,0x678,0x66f,0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x672,0x67e,0x678,0x66f,0x2f7,0x672,0x2f7,0x2ee, -0x2f7,0x2ee,0x678,0x66f,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee, -0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x678,0x66f,0x2f7,0x2ee,0x2f7,0x672,0x2f7,0x2ee,0x2f7,0x2ee, -0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2f7,0x2ee,0x2f7,0x2ee,0x2f7,0x2ee,0x2f1, -0x2fa,0x306,0x306,0x2fa,0x306,0x2fa,0x306,0x306,0x2fa,0x306,0x306,0x306,0x2fa,0x2fa,0x306,0x306, -0x306,0x306,0x2fa,0x306,0x306,0x2fa,0x306,0x306,0x306,0x2fa,0x2fa,0x2fa,0x306,0x306,0x2fa,0x306, -0x309,0x2fd,0x306,0x2fa,0x306,0x2fa,0x306,0x306,0x2fa,0x306,0x2fa,0x2fa,0x306,0x2fa,0x306,0x309, -0x2fd,0x306,0x306,0x306,0x2fa,0x306,0x2fa,0x306,0x306,0x2fa,0x2fa,0x303,0x306,0x2fa,0x2fa,0x2fa, -0x303,0x303,0x303,0x303,0x30c,0x30c,0x300,0x30c,0x30c,0x300,0x30c,0x30c,0x300,0x309,0x681,0x309, -0x681,0x309,0x681,0x309,0x681,0x309,0x681,0x309,0x681,0x309,0x681,0x309,0x681,0x2fa,0x309,0x2fd, -0x309,0x2fd,0x309,0x2fd,0x306,0x2fa,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd, -0x2fd,0x30c,0x30c,0x300,0x309,0x2fd,0x9ea,0x9ea,0x9ed,0x9e7,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd, -0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd,0x309,0x2fd, -0x309,0x2fd,0x309,0x2fd,0x9ed,0x9e7,0x9ed,0x9e7,0x9ea,0x9e4,0x9ed,0x9e7,0xbaf,0xcb7,0x9ea,0x9e4, -0x9ea,0x9e4,0x9ed,0x9e7,0x9ed,0x9e7,0x9ed,0x9e7,0x9ed,0x9e7,0x9ed,0x9e7,0x9ed,0x9e7,0x9ed,0x9e7, -0xcb7,0xcb7,0xcb7,0xdb6,0xdb6,0xdb6,0xdb9,0xdb9,0xdb6,0xdb9,0xdb9,0xdb6,0xdb6,0xdb9,0xefa,0xefd, -0xefd,0xefd,0xefd,0xefa,0xefd,0xefa,0xefd,0xefa,0xefd,0xefa,0xefd,0xefa,0x30f,0x684,0x30f,0x30f, -0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x684,0x30f,0x30f, -0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f, -0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x312,0x30f,0x30f,0x30f, -0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f,0x30f, -0x30f,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0xcba,0xcba,0x327,0x327,0x327,0x327,0x327,0x327,0x327,0x327, -0x327,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31e,0x31b,0x31b,0x318,0x318,0x68a,0x318,0x31e,0x68d, -0x321,0x68d,0x68d,0x68d,0x321,0x68d,0x31e,0x31e,0x690,0x324,0x318,0x318,0x318,0x318,0x318,0x318, -0x687,0x687,0x687,0x687,0x315,0x687,0x318,0xb25,0x327,0x327,0x327,0x327,0x327,0x318,0x318,0x318, -0x318,0x318,0x9f9,0x9f9,0x9f6,0x9f3,0x9f6,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd, -0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0xcbd,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693, -0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693, -0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693, -0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693, -0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x696,0x696,0x94b,0x696,0x696,0x94e,0xb28,0xb28, -0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xc6c,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83,0xd83, -0xebe,0xebe,0xebe,0xebe,0xec1,0xd86,0xd86,0xd86,0x699,0x699,0xb2b,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4, -0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xfa8,0xfa5,0xfa8,0xfa5,0x333,0x33c,0xfa8,0xfa5, -9,9,0x342,0xf00,0xf00,0xf00,0x32a,0x14fd,9,9,9,9,0x33f,0x32d,0x351,0x330, -0x351,0x351,0x351,9,0x351,9,0x351,0x351,0x348,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f, -0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,9,0x69f,0x69f,0x69f,0x69f,0x69f, -0x69f,0x69f,0x351,0x351,0x348,0x348,0x348,0x348,0x348,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c, -0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x69c,0x345,0x69c,0x69c,0x69c,0x69c,0x69c, -0x69c,0x69c,0x348,0x348,0x348,0x348,0x348,0xfa8,0x354,0x354,0x357,0x351,0x351,0x354,0x34b,0x9fc, -0xbb8,0xbb5,0x34e,0x9fc,0x34e,0x9fc,0x34e,0x9fc,0x34e,0x9fc,0x339,0x336,0x339,0x336,0x339,0x336, -0x339,0x336,0x339,0x336,0x339,0x336,0x339,0x336,0x354,0x354,0x34b,0x345,0xb67,0xb64,0xbb2,0xcc3, -0xcc0,0xcc6,0xcc3,0xcc0,0xdbc,0xdbf,0xdbf,0xdbf,0xa0b,0x6ab,0x363,0x366,0x363,0x363,0x363,0x366, -0x363,0x363,0x363,0x363,0x366,0xa0b,0x366,0x363,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8, -0x6a8,0x6ab,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8, -0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a8,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2, -0x6a2,0x6a5,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2,0x6a2, -0x6a2,0x6a2,0x6a2,0x6a2,0xa05,0x6a5,0x35d,0x360,0x35d,0x35d,0x35d,0x360,0x35d,0x35d,0x35d,0x35d, -0x360,0xa05,0x360,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d, -0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x366,0x360,0x363,0x35d,0x363,0x35d, -0x363,0x35d,0x363,0x35d,0x363,0x35d,0x35a,0x957,0x95a,0x93c,0x93c,0x114f,0x9ff,0x9ff,0xbbe,0xbbb, -0xa08,0xa02,0xa08,0xa02,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d, -0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d, -0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d,0x363,0x35d, -0x363,0x35d,0x363,0x35d,0x363,0x366,0x360,0x363,0x35d,0xbbe,0xbbb,0x363,0x35d,0xbbe,0xbbb,0x363, -0x35d,0xbbe,0xbbb,0xf03,0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0x363,0x35d,0x366,0x360, -0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360,0x366,0x360,0x366,0x360,0x363,0x35d,0x366,0x360, -0xa0b,0xa05,0x366,0x360,0x366,0x360,0x366,0x360,0x366,0x360,0xdc5,0xdc2,0x366,0x360,0xf06,0xf03, -0xf06,0xf03,0xf06,0xf03,0xc2d,0xc2a,0xc2d,0xc2a,0xc2d,0xc2a,0xc2d,0xc2a,0xc2d,0xc2a,0xc2d,0xc2a, -0xc2d,0xc2a,0xc2d,0xc2a,0xf33,0xf30,0xf33,0xf30,0x1023,0x1020,0x1023,0x1020,0x1023,0x1020,0x1023,0x1020, -0x1023,0x1020,0x1023,0x1020,0x1023,0x1020,0x1023,0x1020,0x1188,0x1185,0x1371,0x136e,0x1536,0x1533,0x1536,0x1533, -0x1536,0x1533,0x1536,0x1533,0xc,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378, -0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0x378,0xc, -0xc,0x37b,0x369,0x369,0x369,0x36f,0x369,0x36c,0x1941,0x372,0x372,0x372,0x372,0x372,0x372,0x372, -0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372, -0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x372,0x375,0x1941,0x37e,0xa0e,0xc, -0xc,0x1500,0x1500,0x141c,0xf,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0xdc8,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e,0x97e, -0x97e,0x97e,0x97e,0x97e,0x381,0x381,0x381,0x381,0x381,0x381,0x381,0x381,0x381,0x381,0xf09,0x381, -0x381,0x381,0x38d,0x381,0x384,0x381,0x381,0x390,0x981,0xdcb,0xdce,0xdcb,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393, -0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0xf, -0xf,0xf,0xf,0x1944,0x393,0x393,0x393,0x38a,0x387,0xf,0xf,0xf,0xf,0xf,0xf,0xf, -0xf,0xf,0xf,0xf,0xcdb,0xcdb,0xcdb,0xcdb,0x141f,0x1503,0xfb1,0xfb1,0xfb1,0xfae,0xfae,0xdd4, -0x8c7,0xcd5,0xcd2,0xcd2,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xcc9,0xfab,0xfab,0xfab,0xfab,0xfab,0x8c4, -0x14fa,0x12,0xdd7,0x8ca,0x1338,0x3ae,0x3b1,0x3b1,0x3b1,0x3b1,0x3b1,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae, -0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xfb4, -0xfb4,0xfb4,0xfb4,0xfb4,0x8cd,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x942, -0x942,0x942,0x942,0x942,0x942,0x942,0x942,0xb5e,0xb5e,0xb5e,0xcc9,0xccf,0xccc,0xdd1,0xdd1,0xdd1, -0xdd1,0xdd1,0xdd1,0x1335,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x3a8,0x3a5, -0x3a2,0x39f,0xbc1,0xbc1,0x93f,0x3ae,0x3ae,0x3ba,0x3ae,0x3b4,0x3b4,0x3b4,0x3b4,0x3ae,0x3ae,0x3ae, -0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae, -0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae, -0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae, -0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xa14,0xa14,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xa14, -0x3b1,0x3ae,0x3b1,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xa14, -0x3ae,0x3ae,0x3ae,0x3b1,0x95d,0x3ae,0x399,0x399,0x399,0x399,0x399,0x399,0x399,0x396,0x39f,0x39c, -0x39c,0x399,0x399,0x399,0x399,0x3b7,0x3b7,0x399,0x399,0x39f,0x39c,0x39c,0x39c,0x399,0xcd8,0xcd8, -0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0x3ab,0xa14,0xa14,0xa14,0xa11,0xa11,0xcd8, -0xa29,0xa29,0xa29,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa23,0xa20,0xa23,0xa20,0x15,0xa2c, -0xa26,0xa17,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26, -0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xa26,0xcde,0xcde,0xcde, -0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d,0xa1d, -0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0xa1a,0x15,0x15,0xcde,0xcde,0xcde, -0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37, -0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0x1035,0x1035, -0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035, -0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32, -0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32, -0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f,0xa2f, -0xa2f,0xbc4,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, -0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e, -0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e, -0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf42,0xf42,0xf42,0xf42,0xf42, -0xf42,0xf42,0xf42,0xf42,0xf51,0xf51,0xf45,0xf45,0xf48,0xf57,0xf54,0x10b,0x10b,0x1968,0x196b,0x196b, -0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x18f9,0x252,0x252,0x252,0x252,0x252, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xb37,0xb37,0xb3a,0xb3a,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0xb37,0x72,0x72,0x72,0x72, -0x15ba,0x15ba,0x15ba,0x15ba,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x15b7, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674,0x1674, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x16ad,0x16ad,0x16ad,0x16ad,0x16ad,0x16ad,0x16ad, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x174,0x174,0x174,0x174,0x174,0x174,0x174, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7, -0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x18e7,0x18ea,0x18ea,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x261,0x261,0x261,0x261,0x261,0x261, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1b1b,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d, -0x17a9,0x17a9,0x17a9,0x17a9,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x1e9,0x1e9,0x1e9,0x1e9,0x1665,0x1665, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1, -0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1713,0x1713,0x1713,0x1713,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0xe2e,0xe2e,0xe2b,0xe2b,0xe2b,0xe2e,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x225,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, +0xe09,0xe19,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40, +0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89, +0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241, +0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x11c1, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281, +0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1201, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0xbf7,0xbfa,0xdc5,0x1d5d,0xff4,0x71d,0x531,0x108e,0xcc7,0xd46,0x531,0x531,0x1c8b,0xee8,0xef0,0x1da5, +0xc4a,0xc51,0xc59,0x1b16,0x1d3d,0x531,0x1d1d,0xfc4,0x1b1e,0xdcd,0xdd5,0xddd,0x101c,0x725,0x531,0x531, +0x1b26,0x1b26,0x72d,0x531,0x1dd2,0x10a6,0x1dca,0x10ae,0x1ebe,0x11a0,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0xde5,0x1f16,0x1291,0x531,0x531,0x1ede,0x11c8,0x11cf,0x11d6,0x12cd,0x12d1,0x1248,0x11de, +0x1b9b,0x1b9d,0xe4e,0xe55,0x1b2e,0x1b36,0xded,0xf08,0x1c83,0xed0,0xed8,0xfbc,0x1ca3,0x1ca7,0x1caf,0x103c, +0xf87,0xf8c,0x735,0x531,0x1096,0x109e,0x1d05,0xf94,0xf69,0xf6f,0xf77,0xf7f,0x531,0x531,0x531,0x531, +0x1e42,0x1e3a,0x1110,0x1118,0x1d85,0x1d7d,0x1064,0x531,0x531,0x531,0x531,0x531,0x1d6d,0x1024,0x102c,0x1034, +0x1d35,0x1d2d,0xfd4,0x1108,0x1cb7,0xf18,0x73d,0x531,0x1074,0x107c,0x745,0x531,0x531,0x531,0x531,0x531, +0x1eb6,0x1182,0x74d,0x531,0x531,0x1d95,0x1d8d,0x106c,0x1250,0x1256,0x125e,0x531,0x531,0x11e6,0x11ea,0x11f2, +0x1e76,0x1e6e,0x116a,0x1e66,0x1e5e,0x115a,0x1d65,0x1014,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x10c6,0x10cb,0x10d3,0x10da,0x10fa,0x1100,0x531,0x531,0x113e,0x1142,0x114a,0x1192,0x1198,0x755,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x11b0,0x531,0x531,0x531,0x531,0x531,0x759,0x1efe,0x1238, +0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0, +0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e5,0xccf,0xcd6,0xcd6,0xcd6, +0x19ed,0x19ed,0x19ed,0xcde,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x1dc2,0x761,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x765,0x1f2e,0x1f2e,0x12a1,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5, +0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0xe5d,0xfdc,0xfe4,0x1f36, +0x12d9,0x12e1,0xf20,0x1d55,0x1d4d,0x1004,0x100c,0x76d,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1ed6,0x1ece,0x11c0, +0x531,0x531,0x531,0x1c9b,0x1c9b,0xef8,0x1c93,0xf00,0x531,0x531,0x10f2,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x771,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1ced,0x1ced,0x1ced,0xf44,0xf49, +0x779,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1f46,0x1301,0x1308,0x1f3e,0x1f3e,0x1f3e,0x781, +0x531,0x17c0,0x17c0,0x17c0,0x17c0,0x17c0,0x17c0,0x17c0,0xafb,0x17d0,0xb03,0x17d1,0x17c8,0x17d9,0x17df,0x17e7, +0xb0b,0x190f,0x190f,0x789,0x531,0x531,0x531,0x531,0x11b8,0x18ff,0x18ff,0xc02,0xce6,0x531,0x531,0x531, +0x531,0x1818,0x181f,0xb13,0x1822,0xb1b,0xb23,0xb2b,0x181c,0xb33,0xb3b,0xb43,0x1821,0x1829,0x1818,0x181f, +0x181b,0x1822,0x182a,0x1819,0x1820,0x181c,0xb4a,0x17ef,0x17f7,0x17fe,0x1805,0x17f2,0x17fa,0x1801,0x1808,0xb52, +0x1810,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea,0x1dea, +0x1dea,0x1dda,0x1ddd,0x1dda,0x1de4,0x10b6,0x791,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x12bd,0x12c5,0x12c5,0x12c5,0x12c5,0x12c5,0x12c5, +0x12c5,0x10ea,0x799,0x531,0x531,0x531,0x531,0x531,0x531,0x1ef6,0x11fa,0x7a1,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x7a5,0x12e9,0x1f06,0x1240,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x12a9,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0x1d25,0xfcc,0x531,0x1e32,0x1e2a,0x10be,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x7ad,0x1ec6,0x11a8,0x531,0x531,0x1202,0x1203,0x7b5,0x531,0x531,0x531,0x531, +0x531,0xe95,0xe9d,0xea5,0xead,0xeb5,0xebd,0xec4,0xec8,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x7b9,0x1044,0x1d75,0x104a,0x1d75,0x1052,0x1057,0x105c, +0x105c,0x1dfa,0x1e1a,0x1e22,0x1e8e,0x1e02,0x1ee6,0x1e0a,0x1e96,0x1eee,0x1eee,0x1172,0x117a,0x121a,0x1220,0x1228, +0x1230,0x1f0e,0x1f0e,0x1f0e,0x1f0e,0x1274,0x1f0e,0x127a,0x127e,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1, +0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1, +0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c1,0x7c2,0xb5a,0x1832,0x1832,0x1832,0x7ca,0x7ca,0x7ca, +0x7ca,0x1907,0x1907,0x1907,0x1907,0x1907,0x1907,0x1907,0x7d2,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca, +0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca, +0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca, +0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca, +0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0xbad,0xbb4,0xbbc,0xbc4,0x18ef,0x18ef,0x18ef, +0xbcc,0xbd4,0xbd7,0x191f,0x1917,0xc0a,0xd26,0xd2a,0xd2e,0x531,0x531,0x531,0x531,0xd36,0x1a9a,0xd3e, +0xf30,0x17a3,0xaed,0xaf3,0xffc,0xbdf,0x1963,0xc70,0x531,0x17b8,0x17ab,0x17b0,0x18f7,0xbe7,0xbef,0x1120, +0x1126,0x1cf5,0xf51,0x1ce5,0xf28,0x12f1,0x12f9,0x531,0x531,0x1d15,0x1d15,0x1d15,0x1d15,0x1d15,0x1d15,0x1d15, +0x1d15,0x1d15,0xfa4,0xfac,0xfb4,0x12b1,0x12b5,0x531,0x531,0x1aa2,0xd4e,0x1aaa,0x1aaa,0xd52,0xe65,0xe6d, +0xe75,0x1b6b,0x1b53,0x1b73,0x1b7b,0x1b63,0xdfd,0xe01,0xe08,0xe10,0xe14,0xe1c,0xe24,0xe26,0xe26,0xe26, +0xe26,0x1bdc,0x1be4,0x1bdc,0x1bea,0x1bf2,0x1bbd,0x1bfa,0x1c02,0x1bdc,0x1c0a,0x1c12,0x1c19,0x1c21,0x1bc5,0x1bdc, +0x1c26,0x1bcd,0x1bd4,0x1c2e,0x1c34,0x1cd6,0x1cdd,0x1ccf,0x1c3b,0x1c43,0x1c4b,0x1c53,0x1d45,0x1c5b,0x1c63,0xe7d, +0xe85,0x1bad,0x1bad,0x1bad,0xe8d,0x1cfd,0x1cfd,0xf59,0xf61,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e, +0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b40,0x1b3e,0x1b48,0x1b3e,0x1b3e, +0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b4b,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0x1b3e,0xdf5,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad, +0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1db2,0x1dad,0x1dad,0x1dad,0x1084,0x1086,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x112e,0x1bb5,0x1e86,0x1e86,0x1e86,0x1e86, +0x1e86,0x1e86,0x1e86,0x1ea6,0x1136,0x120b,0x1212,0x1eae,0x1eae,0x1eae,0x1eae,0x1eae,0x1eae,0x1eae,0x1eae,0x1eae, +0x1eae,0x1eae,0x1152,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52, +0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52,0x1e52, +0x1e52,0x1e52,0x1e56,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26,0x1f26, +0x1f26,0x1266,0x126c,0x1286,0x1289,0x1289,0x1289,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531, +0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x531,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183d,0x1310,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1318,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1845,0x1845,0x1845,0x1845,0x1845, +0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x133f,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x131c,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1324,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310,0x1310, +0x1310,0x1310,0x1310,0x1310,0x1310,0x131c,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1347, +0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x1c6b,0x134f,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1357,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16c2,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16ca,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2, +0x16d2,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da, +0x16da,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a,0x183a, +0x183a,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83,0x1b83, +0x1b83,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2,0x1df2, +0x1df2,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a,0x1e4a, +0x1e4a,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e,0x1e9e, +0x1e9e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e, +0x1f1e,0x510,0x510,0x510,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d6,0x2df,0x2d9, +0x2d9,0x2dc,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3, +0x2d3,0x2d3,0x2d3,0x2d3,0x7cb,0x7c5,0x7aa,0x78f,0x79b,0x798,0x78f,0x7a7,0x795,0x7a1,0x78f,0x7bc, +0x7b3,0x7a4,0x7c8,0x79e,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x7b0,0x7ad, +0x7b6,0x7b6,0x7b6,0x7c5,0x78f,0x7d7,0x7d7,0x7d7,0x7d7,0x7d7,0x7d7,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1, +0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x7d1,0x795, +0x79b,0x7a1,0x7c2,0x789,0x7bf,0x7d4,0x7d4,0x7d4,0x7d4,0x7d4,0x7d4,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce, +0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x7ce,0x795, +0x7b9,0x792,0x7b6,0x2d3,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1845,0x1845,0x231,0x1845,0x1845,0x231,0x1845,0x1845,0x1845,0x1845,0x1845,0x231,0x231,0x231,0x231,0x231, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x1a6d,0x282,0x282,0x282,0x282,0x1a70,0x1a6a, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0x267,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb, -0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285, +0,0,0,0,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2f1,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2, +0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2, +0x2e2,0x2e2,0x2e2,0x2e2,0x2e5,0x63c,0x7e0,0x7e3,0x642,0x7e3,0x7dd,0x636,0x62d,0x2eb,0x64b,0x2ee, +0x7e6,0x624,0x639,0x7da,0x63f,0x648,0x62a,0x62a,0x630,0x2e8,0x636,0x633,0x62d,0x62a,0x64b,0x2ee, +0x627,0x627,0x627,0x63c,0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x654,0x2f7,0x2f7,0x2f7,0x2f7,0x2f7, +0x2f7,0x2f7,0x2f7,0x2f7,0x654,0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x2f7,0x645,0x654,0x2f7,0x2f7,0x2f7, +0x2f7,0x2f7,0x654,0x64e,0x651,0x651,0x2f4,0x2f4,0x2f4,0x2f4,0x64e,0x2f4,0x651,0x651,0x651,0x2f4, +0x651,0x651,0x2f4,0x2f4,0x64e,0x2f4,0x651,0x651,0x2f4,0x2f4,0x2f4,0x645,0x64e,0x651,0x651,0x2f4, +0x651,0x2f4,0x64e,0x2f4,0x303,0x65a,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa, +0x303,0x2fa,0x303,0x2fa,0x300,0x657,0x303,0x65a,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x65a, +0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x660,0x657,0x303,0x2fa,0x303,0x65a, +0x303,0x2fa,0x303,0x2fa,0x303,0x657,0x663,0x65d,0x303,0x2fa,0x303,0x2fa,0x657,0x303,0x2fa,0x303, +0x2fa,0x303,0x2fa,0x663,0x65d,0x660,0x657,0x303,0x65a,0x303,0x2fa,0x303,0x65a,0x666,0x660,0x657, +0x303,0x65a,0x303,0x2fa,0x303,0x2fa,0x660,0x657,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa, +0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x660,0x657,0x303,0x2fa,0x303,0x65a, +0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x2fa,0x303,0x303,0x2fa,0x303, +0x2fa,0x303,0x2fa,0x2fd,0x306,0x312,0x312,0x306,0x312,0x306,0x312,0x312,0x306,0x312,0x312,0x312, +0x306,0x306,0x312,0x312,0x312,0x312,0x306,0x312,0x312,0x306,0x312,0x312,0x312,0x306,0x306,0x306, +0x312,0x312,0x306,0x312,0x315,0x309,0x312,0x306,0x312,0x306,0x312,0x312,0x306,0x312,0x306,0x306, +0x312,0x306,0x312,0x315,0x309,0x312,0x312,0x312,0x306,0x312,0x306,0x312,0x312,0x306,0x306,0x30f, +0x312,0x306,0x306,0x306,0x30f,0x30f,0x30f,0x30f,0x318,0x318,0x30c,0x318,0x318,0x30c,0x318,0x318, +0x30c,0x315,0x669,0x315,0x669,0x315,0x669,0x315,0x669,0x315,0x669,0x315,0x669,0x315,0x669,0x315, +0x669,0x306,0x315,0x309,0x315,0x309,0x315,0x309,0x312,0x306,0x315,0x309,0x315,0x309,0x315,0x309, +0x315,0x309,0x315,0x309,0x309,0x318,0x318,0x30c,0x315,0x309,0x9bd,0x9bd,0x9c0,0x9ba,0x315,0x309, +0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309, +0x315,0x309,0x315,0x309,0x315,0x309,0x315,0x309,0x9c0,0x9ba,0x9c0,0x9ba,0x9bd,0x9b7,0x9c0,0x9ba, +0xb79,0xc72,0x9bd,0x9b7,0x9bd,0x9b7,0x9c0,0x9ba,0x9c0,0x9ba,0x9c0,0x9ba,0x9c0,0x9ba,0x9c0,0x9ba, +0x9c0,0x9ba,0x9c0,0x9ba,0xc72,0xc72,0xc72,0xd6b,0xd6b,0xd6b,0xd6e,0xd6e,0xd6b,0xd6e,0xd6e,0xd6b, +0xd6b,0xd6e,0xeac,0xeaf,0xeaf,0xeaf,0xeaf,0xeac,0xeaf,0xeac,0xeaf,0xeac,0xeaf,0xeac,0xeaf,0xeac, +0x31b,0x66c,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b, +0x31b,0x66c,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b, +0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b, +0x31e,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b,0x31b, +0x31b,0x31b,0x31b,0x31b,0x31b,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0xc75,0xc75,0x333,0x333,0x333,0x333, +0x333,0x333,0x333,0x333,0x333,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x327,0x327,0x324,0x324, +0x672,0x324,0x32a,0x675,0x32d,0x675,0x675,0x675,0x32d,0x675,0x32a,0x32a,0x678,0x330,0x324,0x324, +0x324,0x324,0x324,0x324,0x66f,0x66f,0x66f,0x66f,0x321,0x66f,0x324,0xaef,0x333,0x333,0x333,0x333, +0x333,0x324,0x324,0x324,0x324,0x324,0x9cc,0x9cc,0x9c9,0x9c6,0x9c9,0xc78,0xc78,0xc78,0xc78,0xc78, +0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0xc78,0x67b,0x67b,0x67b,0x67b, +0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b, +0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b, +0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b, +0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67b,0x67e,0x67e,0x91e,0x67e, +0x67e,0x921,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xc2a,0xd35,0xd35,0xd35,0xd35, +0xd35,0xd35,0xd35,0xd35,0xe70,0xe70,0xe70,0xe70,0xe73,0xd38,0xd38,0xd38,0x681,0x681,0xaf5,0xc6f, +0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xf5a,0xf57,0xf5a,0xf57, +0x33f,0x348,0xf5a,0xf57,9,9,0x34e,0xeb2,0xeb2,0xeb2,0x336,0x149d,9,9,9,9, +0x34b,0x339,0x35d,0x33c,0x35d,0x35d,0x35d,9,0x35d,9,0x35d,0x35d,0x354,0x687,0x687,0x687, +0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,0x687,9,0x687, +0x687,0x687,0x687,0x687,0x687,0x687,0x35d,0x35d,0x354,0x354,0x354,0x354,0x354,0x684,0x684,0x684, +0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x684,0x351,0x684, +0x684,0x684,0x684,0x684,0x684,0x684,0x354,0x354,0x354,0x354,0x354,0xf5a,0x360,0x360,0x363,0x35d, +0x35d,0x360,0x357,0x9cf,0xb82,0xb7f,0x35a,0x9cf,0x35a,0x9cf,0x35a,0x9cf,0x35a,0x9cf,0x345,0x342, +0x345,0x342,0x345,0x342,0x345,0x342,0x345,0x342,0x345,0x342,0x345,0x342,0x360,0x360,0x357,0x351, +0xb31,0xb2e,0xb7c,0xc7e,0xc7b,0xc81,0xc7e,0xc7b,0xd71,0xd74,0xd74,0xd74,0x9de,0x693,0x36f,0x372, +0x36f,0x36f,0x36f,0x372,0x36f,0x36f,0x36f,0x36f,0x372,0x9de,0x372,0x36f,0x690,0x690,0x690,0x690, +0x690,0x690,0x690,0x690,0x690,0x693,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690, +0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x690,0x68a,0x68a,0x68a,0x68a, +0x68a,0x68a,0x68a,0x68a,0x68a,0x68d,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a, +0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x9d8,0x68d,0x369,0x36c,0x369,0x369,0x369,0x36c, +0x369,0x369,0x369,0x369,0x36c,0x9d8,0x36c,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369, +0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x372,0x36c, +0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x366,0x92a,0x92d,0x90f,0x90f,0x1101, +0x9d2,0x9d2,0xb88,0xb85,0x9db,0x9d5,0x9db,0x9d5,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369, +0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369, +0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369, +0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x369,0x36f,0x372,0x36c,0x36f,0x369,0xb88,0xb85,0x36f, +0x369,0xb88,0xb85,0x36f,0x369,0xb88,0xb85,0xeb5,0x372,0x36c,0x372,0x36c,0x36f,0x369,0x372,0x36c, +0x36f,0x369,0x372,0x36c,0x372,0x36c,0x372,0x36c,0x36f,0x369,0x372,0x36c,0x372,0x36c,0x372,0x36c, +0x36f,0x369,0x372,0x36c,0x9de,0x9d8,0x372,0x36c,0x372,0x36c,0x372,0x36c,0x372,0x36c,0xd7a,0xd77, +0x372,0x36c,0xeb8,0xeb5,0xeb8,0xeb5,0xeb8,0xeb5,0xbee,0xbeb,0xbee,0xbeb,0xbee,0xbeb,0xbee,0xbeb, +0xbee,0xbeb,0xbee,0xbeb,0xbee,0xbeb,0xbee,0xbeb,0xee5,0xee2,0xee5,0xee2,0xfd5,0xfd2,0xfd5,0xfd2, +0xfd5,0xfd2,0xfd5,0xfd2,0xfd5,0xfd2,0xfd5,0xfd2,0xfd5,0xfd2,0xfd5,0xfd2,0x113a,0x1137,0x1317,0x1314, +0x14d3,0x14d0,0x14d3,0x14d0,0x14d3,0x14d0,0x14d3,0x14d0,0xc,0x384,0x384,0x384,0x384,0x384,0x384,0x384, +0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384,0x384, +0x384,0x384,0x384,0xc,0xc,0x387,0x375,0x375,0x375,0x37b,0x375,0x378,0x18d8,0x37e,0x37e,0x37e, +0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e, +0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x37e,0x381, +0x18d8,0x38a,0x9e1,0xc,0xc,0x14a0,0x14a0,0x13bc,0xf,0x951,0x951,0x951,0x951,0x951,0x951,0x951, +0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0xd7d,0x951,0x951,0x951,0x951,0x951, +0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x951,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d, +0x38d,0x38d,0xebb,0x38d,0x38d,0x38d,0x399,0x38d,0x390,0x38d,0x38d,0x39c,0x954,0xd80,0xd83,0xd80, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f, +0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f,0x39f, +0x39f,0x39f,0x39f,0xf,0xf,0xf,0xf,0x18db,0x39f,0x39f,0x39f,0x396,0x393,0xf,0xf,0xf, +0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc96,0xc96,0xc96,0xc96,0x13bf,0x14a3,0xf63,0xf63, +0xf63,0xf60,0xf60,0xd89,0x897,0xc90,0xc8d,0xc8d,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xf5d,0xf5d, +0xf5d,0xf5d,0xf5d,0x894,0x149a,0x1aeb,0xd8c,0x89a,0x12de,0x3ba,0x3bd,0x3bd,0x3bd,0x3bd,0x3bd,0x3ba, +0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0xf66,0xf66,0xf66,0xf66,0xf66,0x89d,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x915,0x915,0x915,0x915,0x915,0x915,0x915,0x915,0xb28,0xb28,0xb28,0xc84,0xc8a, +0xc87,0xd86,0xd86,0xd86,0xd86,0xd86,0xd86,0x12db,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930, +0x930,0x930,0x3b4,0x3b1,0x3ae,0x3ab,0xb8b,0xb8b,0x912,0x3ba,0x3ba,0x3c6,0x3ba,0x3c0,0x3c0,0x3c0, +0x3c0,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x9e7,0x9e7,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x9e7,0x3bd,0x3ba,0x3bd,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba,0x3ba, +0x3ba,0x3ba,0x3ba,0x9e7,0x3ba,0x3ba,0x3ba,0x3bd,0x933,0x3ba,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5,0x3a5, +0x3a5,0x3a2,0x3ab,0x3a8,0x3a8,0x3a5,0x3a5,0x3a5,0x3a5,0x3c3,0x3c3,0x3a5,0x3a5,0x3ab,0x3a8,0x3a8, +0x3a8,0x3a5,0xc93,0xc93,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x3b7,0x9e7,0x9e7, +0x9e7,0x9e4,0x9e4,0xc93,0x9fc,0x9fc,0x9fc,0x9f6,0x9f6,0x9f6,0x9f6,0x9f6,0x9f6,0x9f6,0x9f6,0x9f3, +0x9f6,0x9f3,0x12,0x9ff,0x9f9,0x9ea,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9, +0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9,0x9f9, +0x9f9,0xc99,0xc99,0xc99,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0,0x9f0, +0x9f0,0x9f0,0x9f0,0x9f0,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x9ed,0x12, +0x12,0xc99,0xc99,0xc99,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9, +0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9, +0xde9,0xde9,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7,0xfe7, +0xfe7,0xfe7,0xfe7,0xfe7,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05, +0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05, +0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa05,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02, +0xa02,0xa02,0xa02,0xa02,0xa02,0xb8e,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, +0x15,0x15,0x15,0x15,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xefd,0xf00,0xf00, +0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00, +0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xef4, +0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xef4,0xf03,0xf03,0xef7,0xef7,0xefa,0xf09,0xf06,0x102, +0x102,0x18ff,0x1902,0x1902,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xb01,0xb01,0xb04,0xb04,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01,0xb01, +0x6f,0x6f,0x6f,0x6f,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1605,0x1605,0x1605,0x1605,0x1605, +0x1605,0x1605,0x1605,0x1605,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x163e,0x163e,0x163e, +0x163e,0x163e,0x163e,0x163e,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x16b,0x16b,0x16b, +0x16b,0x16b,0x16b,0x16b,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5, +0x1c5,0x1c5,0x1c5,0x1c5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1476,0x1476,0x1476,0x1476,0x1476,0x1476,0x1476,0x1476,0x1476,0x1476,0x1aa,0x1aa, +0x1aa,0x1aa,0x1aa,0x1aa,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x204,0x204,0x204,0x204,0x204, +0x204,0x204,0x204,0x204,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c, +0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x194d,0x194d,0x194d,0x194d,0x194d,0x194d,0x194d,0x194d,0x194d,0x194d,0x252,0x252, +0x252,0x252,0x252,0x252,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1aaf,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e, +0x28e,0x28e,0x28e,0x28e,0x1740,0x1740,0x1740,0x1740,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a, +0x20a,0x20a,0x20a,0x20a,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a, +0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2a3,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1, +0x2a3,0x1bb1,0x1bb1,0x2a3,0x16a4,0x16a4,0x16a4,0x16a4,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2, +0x1f2,0x1f2,0x1f2,0x1f2,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8, +0x2b8,0x2b8,0x2b8,0x2b8,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0xde0,0xde0,0xddd,0xddd,0xddd,0xde0,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5, +0xd5,0xd5,0xd5,0xd5,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x216,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758, +0x1758,0x1758,0x1758,0x1758,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x17dc,0x17dc,0x222,0x17dc,0x17dc,0x222,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x222, +0x222,0x222,0x222,0x222,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x273,0x273, +0x273,0x273,0x1a04,0x19fe,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81, +0x1b81,0x1b81,0x1b81,0x1b81,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0x258,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962, +0x1962,0x1962,0x1962,0x1962,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276, +0x276,0x276,0x276,0x276,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x97b,0x97b, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +0,0,0x94e,0x94e,3,3,3,3,3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -3,3,0x97b,0x97b,6,6,6,6,6,6,6,6,6,6,6,6, +3,3,3,3,3,3,0x94e,0x94e,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c, -0xd8c,0xd8c,0xd8c,0xd8c,6,6,6,6,6,6,6,6,6,6,6,6, -6,6,6,6,0x1509,0x3d5,0x3e4,0x3e4,0x1b,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea, -0x3ea,0x1b,0x1b,0x3ea,0x3ea,0x1b,0x1b,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea, -0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x1b,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x1b,0x3ea,0x1b, -0x1b,0x1b,0x3ea,0x3ea,0x3ea,0x3ea,0x1b,0x1b,0x3d8,0xce4,0x3d5,0x3e4,0x3e4,0x3d5,0x3d5,0x3d5, -0x3d5,0x1b,0x1b,0x3e4,0x3e4,0x1b,0x1b,0x3e7,0x3e7,0x3db,0xddd,0x1b,0x1b,0x1b,0x1b,0x1b, -0x1b,0x1b,0x1b,0x3d5,0x1b,0x1b,0x1b,0x1b,0x3ed,0x3ed,0x1b,0x3ed,0x3ea,0x3ea,0x3d5,0x3d5, -0x1b,0x1b,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x3ea,0x3ea,0x3e1,0x3e1, -0x3de,0x3de,0x3de,0x3de,0x3de,0x3e1,0x3de,0x115e,0x18a2,0x189f,0x1947,0x1b,0x1e,0xce7,0x3f0,0xcea, -0x1e,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x1e,0x1e,0x1e,0x1e,0x3fc,0x3fc,0x1e,0x1e,0x3fc, -0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x1e,0x3fc,0x3fc, -0x3fc,0x3fc,0x3fc,0x3fc,0x3fc,0x1e,0x3fc,0x3ff,0x1e,0x3fc,0x3ff,0x1e,0x3fc,0x3fc,0x1e,0x1e, -0x3f3,0x1e,0x3f9,0x3f9,0x3f9,0x3f0,0x3f0,0x1e,0x1e,0x1e,0x1e,0x3f0,0x3f0,0x1e,0x1e,0x3f0, -0x3f0,0x3f6,0x1e,0x1e,0x1e,0xfbd,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x3ff,0x3ff,0x3ff, -0x3fc,0x1e,0x3ff,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x969,0x969,0x969,0x969,0x969,0x969, -0x969,0x969,0x969,0x969,0x3f0,0x3f0,0x3fc,0x3fc,0x3fc,0xfbd,0x194a,0x1e,0x1e,0x1e,0x1e,0x1e, -0x1e,0x1e,0x1e,0x1e,0x21,0x402,0x402,0x40b,0x21,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e, -0xcf3,0x40e,0x21,0x40e,0x40e,0x40e,0x21,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e, -0x40e,0x40e,0x40e,0x40e,0x40e,0x21,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x40e,0x21,0x40e,0x40e, -0x21,0x40e,0x40e,0x40e,0x40e,0x40e,0x21,0x21,0x405,0x40e,0x40b,0x40b,0x40b,0x402,0x402,0x402, -0x402,0x402,0x21,0x402,0x402,0x40b,0x21,0x40b,0x40b,0x408,0x21,0x21,0x40e,0x21,0x21,0x21, -0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x40e,0xcf3,0xced,0xced, -0x21,0x21,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x96c,0x1422,0xcf0,0x21,0x21, -0x21,0x21,0x21,0x21,0x21,0x1725,0x18a5,0x18a5,0x18a5,0x18a8,0x18a8,0x18a8,0x24,0x411,0x420,0x420, -0x24,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x24,0x24,0x426,0x426,0x24,0x24,0x426, -0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x426,0x24,0x426,0x426, -0x426,0x426,0x426,0x426,0x426,0x24,0x426,0x426,0x24,0xcf6,0x426,0x426,0x426,0x426,0x24,0x24, -0x414,0x426,0x411,0x411,0x420,0x411,0x411,0x411,0xfc0,0x24,0x24,0x420,0x423,0x24,0x24,0x423, -0x423,0x417,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x1ab5,0x411,0x411,0x24,0x24,0x24,0x24, -0x429,0x429,0x24,0x426,0x426,0x426,0xfc0,0xfc0,0x24,0x24,0x41d,0x41d,0x41d,0x41d,0x41d,0x41d, -0x41d,0x41d,0x41d,0x41d,0x41a,0xcf6,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x24,0x24,0x24,0x24, -0x24,0x24,0x24,0x24,0x27,0x27,0x42c,0x438,0x27,0x438,0x438,0x438,0x438,0x438,0x438,0x27, -0x27,0x27,0x438,0x438,0x438,0x27,0x438,0x438,0x43b,0x438,0x27,0x27,0x27,0x438,0x438,0x27, -0x438,0x27,0x438,0x438,0x27,0x27,0x27,0x438,0x438,0x27,0x27,0x27,0x438,0x438,0x438,0x27, -0x27,0x27,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0xde0,0x438,0x438,0x438,0x27,0x27, -0x27,0x27,0x42c,0x432,0x42c,0x432,0x432,0x27,0x27,0x27,0x432,0x432,0x432,0x27,0x435,0x435, -0x435,0x42f,0x27,0x27,0xfc3,0x27,0x27,0x27,0x27,0x27,0x27,0x42c,0x27,0x27,0x27,0x27, -0x27,0x27,0x27,0x27,0x27,0x27,0xef7,0x972,0x972,0x972,0x972,0x972,0x972,0x972,0x972,0x972, -0x96f,0x96f,0x96f,0xdb0,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcfc,0xcf9,0x27,0x27,0x27,0x27,0x27, -0x150c,0x44a,0x44a,0x44a,0x194d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x2a,0x44d,0x44d, -0x44d,0x2a,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d, -0x44d,0x2a,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x44d,0x150f,0x44d,0x44d,0x44d, -0x44d,0x44d,0x2a,0x2a,0x2a,0xfcc,0x43e,0x43e,0x43e,0x44a,0x44a,0x44a,0x44a,0x2a,0x43e,0x43e, -0x441,0x2a,0x43e,0x43e,0x43e,0x444,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x43e,0x43e,0x2a, -0xfcc,0xfcc,0x1728,0x2a,0x2a,0x2a,0x2a,0x2a,0x44d,0x44d,0xfc6,0xfc6,0x2a,0x2a,0x447,0x447, -0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x447,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1a19, -0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0xfc9,0x17e5,0x1512,0x456,0x456,0x1950,0x45c,0x45c,0x45c, -0x45c,0x45c,0x45c,0x45c,0x45c,0x2d,0x45c,0x45c,0x45c,0x2d,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c, -0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c,0x2d,0x45c,0x45c,0x45c,0x45c,0x45c,0x45c, -0x45c,0x45c,0x45c,0x45c,0x2d,0x45c,0x45c,0x45c,0x45c,0x45c,0x2d,0x2d,0xcff,0xd02,0x456,0x450, -0x459,0x456,0x450,0x456,0x456,0x2d,0x450,0x459,0x459,0x2d,0x459,0x459,0x450,0x453,0x2d,0x2d, -0x2d,0x2d,0x2d,0x2d,0x2d,0x450,0x450,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x45c,0x2d, -0x45c,0x45c,0xf0f,0xf0f,0x2d,0x2d,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975,0x975, -0x2d,0xf12,0xf12,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, -0x18ab,0x1515,0x468,0x468,0x1ab8,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x30,0x46e,0x46e, -0x46e,0x30,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e, -0x468,0x45f,0x45f,0x45f,0xfcf,0x30,0x468,0x468,0x468,0x30,0x46b,0x46b,0x46b,0x462,0x134a,0x17e8, -0x30,0x30,0x30,0x30,0x17eb,0x17eb,0x17eb,0x45f,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x17e8,0x172b, -0x46e,0x46e,0xfcf,0xfcf,0x30,0x30,0x465,0x465,0x465,0x465,0x465,0x465,0x465,0x465,0x465,0x465, -0xfd2,0xfd2,0xfd2,0xfd2,0xfd2,0xfd2,0x17e8,0x17e8,0x17e8,0xfd5,0xfd8,0xfd8,0xfd8,0xfd8,0xfd8,0xfd8, -0x33,0x1abb,0xa3e,0xa3e,0x33,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44, -0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0x33,0x33,0x33,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44, -0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0x33,0xa44, -0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0x33,0xa44,0x33,0x33,0xa44,0xa44,0xa44,0xa44, -0xa44,0xa44,0xa44,0x33,0x33,0x33,0xa38,0x33,0x33,0x33,0x33,0xa35,0xa3e,0xa3e,0xa35,0xa35, -0xa35,0x33,0xa35,0x33,0xa3e,0xa3e,0xa41,0xa3e,0xa41,0xa41,0xa41,0xa35,0x33,0x33,0x33,0x33, -0x33,0x33,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x33,0x33,0xa3e,0xa3e, -0xa3b,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x489,0x489,0x489, -0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489, -0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x474,0x489,0x486, -0x474,0x474,0x474,0x474,0x474,0x474,0x47a,0x36,0x36,0x36,0x36,0x471,0x48f,0x48f,0x48f,0x48f, -0x48f,0x489,0x48c,0x477,0x477,0x477,0x477,0x477,0x477,0x474,0x477,0x47d,0x483,0x483,0x483,0x483, -0x483,0x483,0x483,0x483,0x483,0x483,0x480,0x480,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, +6,6,6,6,6,6,6,6,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e, +0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,6,6,6,6,6,6,6,6, +6,6,6,6,6,6,6,6,0x14a9,0x3e1,0x3f0,0x3f0,0x18,0x3f6,0x3f6,0x3f6, +0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x18,0x18,0x3f6,0x3f6,0x18,0x18,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6, +0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x18,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6,0x3f6, +0x3f6,0x18,0x3f6,0x18,0x18,0x18,0x3f6,0x3f6,0x3f6,0x3f6,0x18,0x18,0x3e4,0xc9f,0x3e1,0x3f0, +0x3f0,0x3e1,0x3e1,0x3e1,0x3e1,0x18,0x18,0x3f0,0x3f0,0x18,0x18,0x3f3,0x3f3,0x3e7,0xd92,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3e1,0x18,0x18,0x18,0x18,0x3f9,0x3f9,0x18,0x3f9, +0x3f6,0x3f6,0x3e1,0x3e1,0x18,0x18,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939,0x939, +0x3f6,0x3f6,0x3ed,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ed,0x3ea,0x1110,0x1839,0x1836,0x18de,0x18, +0x1b,0xca2,0x3fc,0xca5,0x1b,0x408,0x408,0x408,0x408,0x408,0x408,0x1b,0x1b,0x1b,0x1b,0x408, +0x408,0x1b,0x1b,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x408, +0x408,0x1b,0x408,0x408,0x408,0x408,0x408,0x408,0x408,0x1b,0x408,0x40b,0x1b,0x408,0x40b,0x1b, +0x408,0x408,0x1b,0x1b,0x3ff,0x1b,0x405,0x405,0x405,0x3fc,0x3fc,0x1b,0x1b,0x1b,0x1b,0x3fc, +0x3fc,0x1b,0x1b,0x3fc,0x3fc,0x402,0x1b,0x1b,0x1b,0xf6f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, +0x1b,0x40b,0x40b,0x40b,0x408,0x1b,0x40b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x93c,0x93c, +0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x93c,0x3fc,0x3fc,0x408,0x408,0x408,0xf6f,0x18e1,0x1b, +0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1e,0x40e,0x40e,0x417,0x1e,0x41a,0x41a,0x41a, +0x41a,0x41a,0x41a,0x41a,0xcae,0x41a,0x1e,0x41a,0x41a,0x41a,0x1e,0x41a,0x41a,0x41a,0x41a,0x41a, +0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a,0x1e,0x41a,0x41a,0x41a,0x41a,0x41a,0x41a, +0x41a,0x1e,0x41a,0x41a,0x1e,0x41a,0x41a,0x41a,0x41a,0x41a,0x1e,0x1e,0x411,0x41a,0x417,0x417, +0x417,0x40e,0x40e,0x40e,0x40e,0x40e,0x1e,0x40e,0x40e,0x417,0x1e,0x417,0x417,0x414,0x1e,0x1e, +0x41a,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, +0x41a,0xcae,0xca8,0xca8,0x1e,0x1e,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f, +0x13c2,0xcab,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x16b9,0x183c,0x183c,0x183c,0x183f,0x183f,0x183f, +0x21,0x41d,0x42c,0x42c,0x21,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x21,0x21,0x432, +0x432,0x21,0x21,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x432, +0x432,0x21,0x432,0x432,0x432,0x432,0x432,0x432,0x432,0x21,0x432,0x432,0x21,0xcb1,0x432,0x432, +0x432,0x432,0x21,0x21,0x420,0x432,0x41d,0x41d,0x42c,0x41d,0x41d,0x41d,0xf72,0x21,0x21,0x42c, +0x42f,0x21,0x21,0x42f,0x42f,0x423,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1a49,0x41d,0x41d, +0x21,0x21,0x21,0x21,0x435,0x435,0x21,0x432,0x432,0x432,0xf72,0xf72,0x21,0x21,0x429,0x429, +0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x426,0xcb1,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea, +0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x24,0x438,0x444,0x24,0x444,0x444,0x444, +0x444,0x444,0x444,0x24,0x24,0x24,0x444,0x444,0x444,0x24,0x444,0x444,0x447,0x444,0x24,0x24, +0x24,0x444,0x444,0x24,0x444,0x24,0x444,0x444,0x24,0x24,0x24,0x444,0x444,0x24,0x24,0x24, +0x444,0x444,0x444,0x24,0x24,0x24,0x444,0x444,0x444,0x444,0x444,0x444,0x444,0x444,0xd95,0x444, +0x444,0x444,0x24,0x24,0x24,0x24,0x438,0x43e,0x438,0x43e,0x43e,0x24,0x24,0x24,0x43e,0x43e, +0x43e,0x24,0x441,0x441,0x441,0x43b,0x24,0x24,0xf75,0x24,0x24,0x24,0x24,0x24,0x24,0x438, +0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xea9,0x945,0x945,0x945,0x945,0x945, +0x945,0x945,0x945,0x945,0x942,0x942,0x942,0xd65,0xcb4,0xcb4,0xcb4,0xcb4,0xcb4,0xcb7,0xcb4,0x24, +0x24,0x24,0x24,0x24,0x14ac,0x456,0x456,0x456,0x18e4,0x459,0x459,0x459,0x459,0x459,0x459,0x459, +0x459,0x27,0x459,0x459,0x459,0x27,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459, +0x459,0x459,0x459,0x459,0x459,0x27,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459,0x459, +0x14af,0x459,0x459,0x459,0x459,0x459,0x27,0x27,0x1aee,0xf7e,0x44a,0x44a,0x44a,0x456,0x456,0x456, +0x456,0x27,0x44a,0x44a,0x44d,0x27,0x44a,0x44a,0x44a,0x450,0x27,0x27,0x27,0x27,0x27,0x27, +0x27,0x44a,0x44a,0x27,0xf7e,0xf7e,0x16bc,0x27,0x27,0x1af1,0x27,0x27,0x459,0x459,0xf78,0xf78, +0x27,0x27,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x27,0x27,0x27,0x27, +0x27,0x27,0x27,0x19ad,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0x177c,0x14b2,0x462,0x462, +0x18e7,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x2a,0x468,0x468,0x468,0x2a,0x468,0x468, +0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x2a,0x468,0x468, +0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x2a,0x468,0x468,0x468,0x468,0x468,0x2a,0x2a, +0xcba,0xcbd,0x462,0x45c,0x465,0x462,0x45c,0x462,0x462,0x2a,0x45c,0x465,0x465,0x2a,0x465,0x465, +0x45c,0x45f,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x45c,0x45c,0x2a,0x2a,0x2a,0x2a,0x2a, +0x2a,0x1af4,0x468,0x2a,0x468,0x468,0xec1,0xec1,0x2a,0x2a,0x948,0x948,0x948,0x948,0x948,0x948, +0x948,0x948,0x948,0x948,0x2a,0xec4,0xec4,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a, +0x2a,0x2a,0x2a,0x2a,0x1842,0x14b5,0x474,0x474,0x1a4c,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a, +0x47a,0x2d,0x47a,0x47a,0x47a,0x2d,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a, +0x47a,0x47a,0x47a,0x47a,0x474,0x46b,0x46b,0x46b,0xf81,0x2d,0x474,0x474,0x474,0x2d,0x477,0x477, +0x477,0x46e,0x12f0,0x177f,0x2d,0x2d,0x2d,0x2d,0x1782,0x1782,0x1782,0x46b,0x177f,0x177f,0x177f,0x177f, +0x177f,0x177f,0x177f,0x16bf,0x47a,0x47a,0xf81,0xf81,0x2d,0x2d,0x471,0x471,0x471,0x471,0x471,0x471, +0x471,0x471,0x471,0x471,0xf84,0xf84,0xf84,0xf84,0xf84,0xf84,0x177f,0x177f,0x177f,0xf87,0xf8a,0xf8a, +0xf8a,0xf8a,0xf8a,0xf8a,0x30,0x1a4f,0xa11,0xa11,0x30,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17, +0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x30,0x30,0x30,0xa17,0xa17, +0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17, +0xa17,0xa17,0x30,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x30,0xa17,0x30,0x30, +0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0x30,0x30,0x30,0xa0b,0x30,0x30,0x30,0x30,0xa08, +0xa11,0xa11,0xa08,0xa08,0xa08,0x30,0xa08,0x30,0xa11,0xa11,0xa14,0xa11,0xa14,0xa14,0xa14,0xa08, +0x30,0x30,0x30,0x30,0x30,0x30,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8,0x14b8, +0x30,0x30,0xa11,0xa11,0xa0e,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, +0x33,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495, +0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495,0x495, +0x495,0x480,0x495,0x492,0x480,0x480,0x480,0x480,0x480,0x480,0x486,0x33,0x33,0x33,0x33,0x47d, +0x49b,0x49b,0x49b,0x49b,0x49b,0x495,0x498,0x483,0x483,0x483,0x483,0x483,0x483,0x480,0x483,0x489, +0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x48c,0x48c,0x33,0x33,0x33,0x33, +0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33, +0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x4aa,0x4aa,0x36, +0x4aa,0x36,0x19b3,0x4aa,0x4aa,0x19b3,0x4aa,0x36,0x19b3,0x4aa,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3, +0x4aa,0x4aa,0x4aa,0x4aa,0x19b3,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x19b3,0x4aa,0x4aa,0x4aa, +0x36,0x4aa,0x36,0x4aa,0x19b3,0x19b3,0x4aa,0x4aa,0x19b3,0x4aa,0x4aa,0x4aa,0x4aa,0x49e,0x4aa,0x4a7, +0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x19b0,0x49e,0x49e,0x4aa,0x36,0x36,0x4b3,0x4b3,0x4b3,0x4b3, +0x4b3,0x36,0x4b0,0x36,0x4a1,0x4a1,0x4a1,0x4a1,0x4a1,0x49e,0x36,0x36,0x4a4,0x4a4,0x4a4,0x4a4, +0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x36,0x36,0x4ad,0x4ad,0x13c5,0x13c5,0x36,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, -0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x39,0x49e,0x49e,0x39,0x49e,0x39,0x1a1f,0x49e, -0x49e,0x1a1f,0x49e,0x39,0x1a1f,0x49e,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x49e,0x49e,0x49e,0x49e, -0x1a1f,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x1a1f,0x49e,0x49e,0x49e,0x39,0x49e,0x39,0x49e, -0x1a1f,0x1a1f,0x49e,0x49e,0x1a1f,0x49e,0x49e,0x49e,0x49e,0x492,0x49e,0x49b,0x492,0x492,0x492,0x492, -0x492,0x492,0x1a1c,0x492,0x492,0x49e,0x39,0x39,0x4a7,0x4a7,0x4a7,0x4a7,0x4a7,0x39,0x4a4,0x39, -0x495,0x495,0x495,0x495,0x495,0x492,0x39,0x39,0x498,0x498,0x498,0x498,0x498,0x498,0x498,0x498, -0x498,0x498,0x39,0x39,0x4a1,0x4a1,0x1425,0x1425,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, +0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x98a,0x98a,0x98a,0x98d, +0x98a,0x98a,0x98a,0x98a,0x39,0x98a,0x98a,0x98a,0x98a,0x98d,0x98a,0x98a,0x98a,0x98a,0x98d,0x98a, +0x98a,0x98a,0x98a,0x98d,0x98a,0x98a,0x98a,0x98a,0x98d,0x98a,0x98a,0x98a,0x98a,0x98a,0x98a,0x98a, +0x98a,0x98a,0x98a,0x98a,0x98a,0x98d,0xa26,0xf96,0xf96,0x39,0x39,0x39,0x39,0x957,0x957,0x95a, +0x957,0x95a,0x95a,0x963,0x95a,0x963,0x957,0x957,0x957,0x957,0x957,0x984,0x957,0x95a,0x95d,0x95d, +0x960,0x969,0x95d,0x95d,0x98a,0x98a,0x98a,0x98a,0x12f9,0x12f3,0x12f3,0x12f3,0x957,0x957,0x957,0x95a, +0x957,0x957,0xa1a,0x957,0x39,0x957,0x957,0x957,0x957,0x95a,0x957,0x957,0x957,0x957,0x95a,0x957, +0x957,0x957,0x957,0x95a,0x957,0x957,0x957,0x957,0x95a,0x957,0xa1a,0xa1a,0xa1a,0x957,0x957,0x957, +0x957,0x957,0x957,0x957,0xa1a,0x95a,0xa1a,0xa1a,0xa1a,0x39,0xa23,0xa23,0xa20,0xa20,0xa20,0xa20, +0xa20,0xa20,0xa1d,0xa20,0xa20,0xa20,0xa20,0xa20,0xa20,0x39,0xf8d,0xa20,0xd98,0xd98,0xf90,0xf93, +0xf8d,0x1113,0x1113,0x1113,0x1113,0x12f6,0x12f6,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39, -0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x9b7,0x9b7,0x9b7,0x9ba,0x9b7,0x9b7,0x9b7,0x9b7, -0x3c,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba, -0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7, -0x9b7,0x9ba,0xa53,0xfe4,0xfe4,0x3c,0x3c,0x3c,0x3c,0x984,0x984,0x987,0x984,0x987,0x987,0x990, -0x987,0x990,0x984,0x984,0x984,0x984,0x984,0x9b1,0x984,0x987,0x98a,0x98a,0x98d,0x996,0x98a,0x98a, -0x9b7,0x9b7,0x9b7,0x9b7,0x1353,0x134d,0x134d,0x134d,0x984,0x984,0x984,0x987,0x984,0x984,0xa47,0x984, -0x3c,0x984,0x984,0x984,0x984,0x987,0x984,0x984,0x984,0x984,0x987,0x984,0x984,0x984,0x984,0x987, -0x984,0x984,0x984,0x984,0x987,0x984,0xa47,0xa47,0xa47,0x984,0x984,0x984,0x984,0x984,0x984,0x984, -0xa47,0x987,0xa47,0xa47,0xa47,0x3c,0xa50,0xa50,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4a,0xa4d, -0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0x3c,0xfdb,0xa4d,0xde3,0xde3,0xfde,0xfe1,0xfdb,0x1161,0x1161,0x1161, -0x1161,0x1350,0x1350,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, -0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c, -0x3c,0x3c,0x3c,0x3c,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x3f,0x142b,0x3f,0x3f,0x3f,0x3f, -0x3f,0x142b,0x3f,0x3f,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa, -0x4aa,0x4aa,0x4aa,0x4aa,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2,0xa7d,0x42,0xa7d,0xa7d, -0xa7d,0xa7d,0x42,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0x42,0xa7d,0x42,0xa7d,0xa7d, -0xa7d,0xa7d,0x42,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2,0xa7d,0x42,0xa7d,0xa7d, -0xa7d,0xa7d,0x42,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2,0xa7d,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0x42,0x42, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0x42,0xa7d,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0x42,0x42, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0x42, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2, -0xa7d,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0x42,0x42,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, -0xa7d,0xa7d,0xa7d,0x42,0x42,0x1356,0x1356,0xdec,0xdef,0xa77,0xa80,0xa74,0xa74,0xa74,0xa74,0xa80, -0xa80,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa7a,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, -0xa71,0xa71,0xa71,0xa71,0xa71,0x42,0x42,0x42,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83, -0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0x1731,0x45,0x45, -0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x45,0x45,0xa95,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98, -0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98,0xa98, -0xa98,0xa98,0xa98,0xa92,0xa8f,0x48,0x48,0x48,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9b,0xa9b,0xa9b,0xa9e,0xa9e,0xa9e,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b, -0x151b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xabf,0xabf,0xabf,0xabf,0xabf,0xabf,0xaa1,0xabf, -0xabf,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa7,0xaa4,0xab6,0xab6,0xab9,0xac2, -0xab0,0xaad,0xab6,0xab3,0xac2,0xd05,0x4e,0x4e,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc,0xabc, -0xabc,0xabc,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08, -0xd08,0xd08,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xad1,0xad1,0xb52,0xb55,0xad7,0xb4f,0xad4,0xad1, -0xada,0xae9,0xadd,0xaec,0xaec,0xaec,0xac8,0x51,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0, -0xae0,0xae0,0x51,0x51,0x51,0x51,0x51,0x51,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0x1953,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xae3,0xacb,0x1002,0x51,0x51,0x51,0x51,0x51,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8, -0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x54,0x54, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x54,0x54,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x54,0x4ce,0x54,0x4ce,0x54,0x4ce,0x54,0x4ce,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x54,0x54,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x54,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4c5,0x4cb,0x4c5,0x4c5,0x4c2,0x4cb,0x4cb,0x4cb,0x54,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4c2,0x4c2,0x4c2,0x4cb,0x4cb,0x4cb,0x4cb,0x54,0x54,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x54,0x4c2,0x4c2,0x4c2,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4c2,0x4c2,0x4c2,0x54,0x54,0x4cb,0x4cb,0x4cb,0x54,0x4cb,0x4cb, -0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4c8,0x4c5,0x54,0xbca,0xbcd,0xbcd,0xbcd,0x100b,0x57,0x14f7,0x14f7, -0x14f7,0x14f7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x522,0xbdf,0x5a,0x5a,0x6e1,0x522,0x522,0x522, -0x522,0x522,0x528,0x53a,0x528,0x534,0x52e,0x6e4,0x51f,0x6de,0x6de,0x6de,0x6de,0x51f,0x51f,0x51f, -0x51f,0x51f,0x525,0x537,0x525,0x531,0x52b,0x5a,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0x1359,0x1359,0x1359, -0x1359,0x1359,0x1359,0x1359,0x1359,0x5a,0x5a,0x5a,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, -0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x549,0x549,0x549,0x549,0x549,0x549,0x549,0x549, -0x549,0x549,0x549,0x549,0x549,0x546,0x546,0x546,0x546,0x549,0xafb,0xafe,0xbe5,0xbeb,0xbeb,0xbe8, -0xbe8,0xbe8,0xbe8,0xe01,0xf15,0xf15,0xf15,0xf15,0x114c,0x60,0x60,0x60,0x60,0x60,0x60,0x60, -0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x579,0x579,0x579,0xb07,0xf1e,0x1011,0x1011,0x1011, -0x1011,0x12ab,0x1737,0x1737,0x63,0x63,0x63,0x63,0x70b,0x70b,0x70b,0x70b,0x70e,0x70e,0x70e,0x70e, -0x70e,0x70e,0x585,0x585,0x582,0x582,0x582,0x582,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0xb13,0xb13,0x66, -0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, -0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af,0x5af, -0x5af,0x5af,0x5af,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69, -0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e, -0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e, -0xb2e,0xb2e,0x6c,0xb2e,0xb2e,0xb2e,0xb2e,0xb31,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e, -0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb31,0x6c,0x6c,0x6c,0x6c, -0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34, -0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0x6f,0x6f, -0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x75,0x843,0x83d,0x843,0x83d,0x843,0x83d,0x843, -0x83d,0x843,0x83d,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d, -0x840,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d,0x83d,0x83d,0x83d,0x843,0x83d,0x843,0x83d,0x843, -0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x843,0x83d,0x83d,0x83d,0x83d,0x83d,0x840,0xc93,0xc93,0x75, -0x75,0x954,0x954,0x91e,0x91e,0x846,0x849,0xc90,0x78,0x78,0x78,0x78,0x78,0x85b,0x85b,0x85b, -0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b, -0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x85b,0x113a,0x191a,0x1a01,0x7b,0x85e,0x85e,0x85e, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x7b, -0x927,0x927,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a,0x92a, -0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867, -0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0x867,0xd98,0xd98,0x7e, -0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0x81,0x81,0x81, -0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c, -0xb4c,0xc9c,0xb4c,0xb4c,0xb4c,0xc9c,0xb4c,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, -0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df, -0x9db,0x9db,0x9db,0x9db,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87, -0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254, -0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a, -0x8a,0x8a,0x8a,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x8a,0x8a,0x8a,0x8a,0x8a,0xb1f,0x5fd,0x603, -0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x600,0x603,0x603,0x603,0x603,0x603,0x603, -0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x8a,0x603,0x603,0x603,0x603,0x603,0x8a,0x603,0x8a, -0x603,0x603,0x8a,0x603,0x603,0x8a,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x606, -0x61e,0x618,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618, -0x136b,0x136b,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x8d,0x8d,0x8d,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x61e,0x618, -0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, -0x61b,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x618,0x61b,0x618,0x618,0x61b,0x61b,0x618,0x618, -0x618,0x618,0x618,0x61b,0x618,0x618,0x61b,0x618,0x61b,0x61b,0x61b,0x618,0x61b,0x61b,0x61b,0x61b, -0x8d,0x8d,0x61b,0x61b,0x61b,0x61b,0x618,0x618,0x61b,0x618,0x618,0x618,0x618,0x61b,0x618,0x618, -0x618,0x618,0x618,0x61b,0x61b,0x61b,0x618,0x618,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d, +0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x3c,0x13cb, +0x3c,0x3c,0x3c,0x3c,0x3c,0x13cb,0x3c,0x3c,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6, +0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7, +0xa50,0x3f,0xa50,0xa50,0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0x3f, +0xa50,0x3f,0xa50,0xa50,0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7, +0xa50,0x3f,0xa50,0xa50,0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7,0xa50,0x3f,0xa50,0xa50, +0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0x3f,0xa50,0x3f,0xa50,0xa50, +0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0x3f,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xda7,0xa50,0x3f,0xa50,0xa50,0xa50,0xa50,0x3f,0x3f,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xda7,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0x3f,0x3f,0x12fc,0x12fc,0xda1,0xda4,0xa4a,0xa53,0xa47, +0xa47,0xa47,0xa47,0xa53,0xa53,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa44,0xa44, +0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0xa44,0x3f,0x3f,0x3f,0xa56,0xa56,0xa56,0xa56, +0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, +0xa56,0x16c5,0x42,0x42,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x42,0x42,0xa68,0xa6b,0xa6b,0xa6b, +0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b, +0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa6b,0xa65,0xa62,0x45,0x45,0x45,0xa71,0xa71,0xa71,0xa71, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa6e,0xa6e,0xa6e,0xa71,0xa71,0xa71,0x14bb,0x14bb,0x14bb, +0x14bb,0x14bb,0x14bb,0x14bb,0x14bb,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa92,0xa92,0xa92,0xa92, +0xa92,0xa92,0xa74,0xa92,0xa92,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa77,0xa7a,0xa77, +0xa89,0xa89,0xa8c,0xa95,0xa83,0xa80,0xa89,0xa86,0xa95,0xcc0,0x4b,0x4b,0xa8f,0xa8f,0xa8f,0xa8f, +0xa8f,0xa8f,0xa8f,0xa8f,0xa8f,0xa8f,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xcc3,0xcc3,0xcc3,0xcc3, +0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0xcc3,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xaa4,0xaa4,0xb1c,0xb1f, +0xaaa,0xb19,0xaa7,0xaa4,0xaad,0xabc,0xab0,0xabf,0xabf,0xabf,0xa9b,0x1af7,0xab3,0xab3,0xab3,0xab3, +0xab3,0xab3,0xab3,0xab3,0xab3,0xab3,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0x18ea,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xa9e,0xfb4,0x4e,0x4e,0x4e,0x4e,0x4e,0x116a,0x116a,0x116a,0x116a, +0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x51,0x51,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x51,0x51,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x51,0x4da,0x51,0x4da,0x51,0x4da,0x51,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x4d7,0x51,0x51,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x51,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d1,0x4d7,0x4d1,0x4d1,0x4ce,0x4d7,0x4d7, +0x4d7,0x51,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4ce,0x4ce,0x4ce,0x4d7,0x4d7,0x4d7,0x4d7, +0x51,0x51,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x51,0x4ce,0x4ce,0x4ce,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4ce,0x4ce,0x4ce,0x51,0x51,0x4d7,0x4d7, +0x4d7,0x51,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d4,0x4d1,0x51,0xb94,0xb97,0xb97,0xb97, +0xfbd,0x54,0x1497,0x1497,0x1497,0x1497,0x4e3,0x4e3,0x4e3,0x4e3,0x4e3,0x4e3,0x52e,0xba9,0x57,0x57, +0x6c9,0x52e,0x52e,0x52e,0x52e,0x52e,0x534,0x546,0x534,0x540,0x53a,0x6cc,0x52b,0x6c6,0x6c6,0x6c6, +0x6c6,0x52b,0x52b,0x52b,0x52b,0x52b,0x531,0x543,0x531,0x53d,0x537,0x57,0xdb0,0xdb0,0xdb0,0xdb0, +0xdb0,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x57,0x57,0x57,0x1afa,0x5a,0x5a,0x5a, +0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x555,0x555,0x555,0x555, +0x555,0x555,0x555,0x555,0x555,0x555,0x555,0x555,0x555,0x552,0x552,0x552,0x552,0x555,0xacb,0xacb, +0xbaf,0xbb5,0xbb5,0xbb2,0xbb2,0xbb2,0xbb2,0xdb6,0xec7,0xec7,0xec7,0xec7,0x10fe,0x5d,0x5d,0x5d, +0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x585,0x585,0x585,0xad4, +0xed0,0xfc3,0xfc3,0xfc3,0xfc3,0x125d,0x16cb,0x16cb,0x60,0x60,0x60,0x60,0x6f3,0x6f3,0x6f3,0x6f3, +0x6f3,0x6f3,0x6f3,0x6f3,0x6f3,0x6f3,0x591,0x591,0x58e,0x58e,0x58e,0x58e,0x5b2,0x5b2,0x5b2,0x5b2, +0x5b2,0xadd,0xadd,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63, +0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x5b5,0x5b5,0x5b5,0x5b5, +0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, +0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xaf8,0xaf8,0xaf8,0xaf8, +0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8, +0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0x69,0xaf8,0xaf8,0xaf8,0xaf8,0xafb,0xaf8,0xaf8,0xaf8,0xaf8, +0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xafb, +0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0xafe,0xafe,0xafe,0xafe, +0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe, +0xafe,0xafe,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x72,0x813,0x80d,0x813, +0x80d,0x813,0x80d,0x813,0x80d,0x813,0x80d,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d, +0x810,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d,0x80d,0x80d,0x80d,0x813, +0x80d,0x813,0x80d,0x813,0x80d,0x80d,0x80d,0x80d,0x80d,0x80d,0x813,0x80d,0x80d,0x80d,0x80d,0x80d, +0x810,0xc4e,0xc4e,0x72,0x72,0x927,0x927,0x8ee,0x8ee,0x816,0x819,0xc4b,0x75,0x75,0x75,0x75, +0x75,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b, +0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x10ec,0x18b1,0x1998, +0x78,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e, +0x82e,0x82e,0x82e,0x78,0x8f7,0x8f7,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa,0x8fa, +0x8fa,0x8fa,0x8fa,0x8fa,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837, +0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837,0x837, +0x837,0xd4a,0xd4a,0x7b,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10, +0xb10,0x7e,0x7e,0x7e,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16, +0xb16,0xb16,0xb16,0xb16,0xb16,0xc57,0xb16,0xb16,0xb16,0xc57,0xb16,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191, +0x1191,0x1191,0x1191,0x1191,0x9ae,0x9ae,0x9ae,0x9ae,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84, +0x84,0x84,0x84,0x84,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206, +0x1206,0x1206,0x1206,0x1206,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x5fa,0x87,0x87,0x87,0x87,0x87, +0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x87,0x87,0x87,0x87, +0x87,0xae9,0x5eb,0x5f1,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x5ee,0x5f1,0x5f1, +0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x87,0x5f1,0x5f1,0x5f1,0x5f1, +0x5f1,0x87,0x5f1,0x87,0x5f1,0x5f1,0x87,0x5f1,0x5f1,0x87,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1,0x5f1, +0x5f1,0x5f1,0x5f1,0x5f4,0x606,0x600,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600, +0x603,0x609,0x606,0x600,0x1311,0x1311,0x1afd,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a, +0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x606,0x600,0x603,0x609,0x606,0x600,0x606,0x600,0x606, +0x600,0x606,0x606,0x600,0x600,0x600,0x600,0x603,0x600,0x600,0x603,0x600,0x603,0x603,0x603,0x600, +0x603,0x603,0x603,0x603,0x8a,0x8a,0x603,0x603,0x603,0x603,0x600,0x600,0x603,0x600,0x600,0x600, +0x600,0x603,0x600,0x600,0x600,0x600,0x600,0x603,0x603,0x603,0x600,0x600,0x8a,0x8a,0x8a,0x8a, +0x8a,0x8a,0x8a,0x1afd,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34, +0xb34,0xb34,0xb34,0xb34,0x84f,0x861,0x85e,0x861,0x85e,0xc6c,0xc6c,0xd56,0xd53,0x852,0x852,0x852, +0x852,0x864,0x864,0x864,0x87c,0x87f,0x88e,0x8d,0x882,0x885,0x891,0x891,0x879,0x870,0x86a,0x870, +0x86a,0x870,0x86a,0x86d,0x86d,0x888,0x888,0x88b,0x888,0x888,0x888,0x8d,0x888,0x876,0x873,0x86d, +0x8d,0x8d,0x8d,0x8d,0x612,0x61e,0x612,0xbe8,0x612,0x90,0x612,0x61e,0x612,0x61e,0x612,0x61e, +0x612,0x61e,0x612,0x61e,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618, +0x61e,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x61b, +0x615,0x90,0x90,0x60f,0x750,0x753,0x768,0x76b,0x74a,0x753,0x753,0x96,0x732,0x735,0x735,0x735, +0x735,0x732,0x732,0x96,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0xaec,0xaec,0xaec, +0x9b1,0x72c,0x621,0x621,0x96,0x77a,0x759,0x74a,0x753,0x750,0x74a,0x75c,0x74d,0x747,0x74a,0x768, +0x75f,0x756,0x777,0x74a,0x774,0x774,0x774,0x774,0x774,0x774,0x774,0x774,0x774,0x774,0x765,0x762, +0x768,0x768,0x768,0x77a,0x73b,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, +0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738, +0x738,0x738,0x738,0x96,0x96,0x96,0x738,0x738,0x738,0x738,0x738,0x738,0x96,0x96,0x738,0x738, +0x738,0x738,0x738,0x738,0x96,0x96,0x738,0x738,0x738,0x738,0x738,0x738,0x96,0x96,0x738,0x738, +0x738,0x96,0x96,0x96,0xb37,0xb37,0xb37,0xb37,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99, +0x99,0x184e,0x184e,0x184e,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d, +0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0x9c,0x9c,0x9c,0x9c,0x9c,0x1614,0x1614,0x1614,0x1614, +0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0xb46,0xb46,0xb46,0xb46, +0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, +0xb46,0xb46,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xa2,0xa2,0xfcf,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0x16d1,0x16d1,0x16d1,0x16d1, +0x16d1,0x16d1,0x16d1,0x16d1,0x16d1,0x1b00,0x1b00,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2, +0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xa5,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xa5,0xb6a,0xb6a,0xa5,0xa5,0xb6a,0xa5, +0xa5,0xb6a,0xb6a,0xa5,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb67,0xa5,0xb67,0xa5,0xb67,0xb67,0xb67,0xb67,0xcde,0xb67,0xb67, +0xa5,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb67, +0xb6a,0xb6a,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xa5,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xa5,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xa5,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xa5,0xb6a,0xa5,0xa5,0xa5,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xa5,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xdc8,0xdc8,0xa5,0xa5, 0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, -0x61e,0x61e,0x978,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x615,0x615,0xc24,0xdb3,0x8d,0x8d, -0x87f,0x891,0x88e,0x891,0x88e,0xcb1,0xcb1,0xda4,0xda1,0x882,0x882,0x882,0x882,0x894,0x894,0x894, -0x8ac,0x8af,0x8be,0x90,0x8b2,0x8b5,0x8c1,0x8c1,0x8a9,0x8a0,0x89a,0x8a0,0x89a,0x8a0,0x89a,0x89d, -0x89d,0x8b8,0x8b8,0x8bb,0x8b8,0x8b8,0x8b8,0x90,0x8b8,0x8a6,0x8a3,0x89d,0x90,0x90,0x90,0x90, -0x62a,0x636,0x62a,0xc27,0x62a,0x93,0x62a,0x636,0x62a,0x636,0x62a,0x636,0x62a,0x636,0x62a,0x636, -0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x633, -0x62d,0x633,0x62d,0x630,0x636,0x633,0x62d,0x633,0x62d,0x633,0x62d,0x633,0x62d,0x93,0x93,0x627, -0x77d,0x780,0x795,0x798,0x777,0x780,0x780,0x99,0x75f,0x762,0x762,0x762,0x762,0x75f,0x75f,0x99, -0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0xb22,0xb22,0xb22,0x9de,0x759,0x639,0x639, -0x99,0x7a7,0x786,0x777,0x780,0x77d,0x777,0x789,0x77a,0x774,0x777,0x795,0x78c,0x783,0x7a4,0x777, -0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x7a1,0x792,0x78f,0x795,0x795,0x795,0x7a7, -0x768,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765, -0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x765,0x99, -0x99,0x99,0x765,0x765,0x765,0x765,0x765,0x765,0x99,0x99,0x765,0x765,0x765,0x765,0x765,0x765, -0x99,0x99,0x765,0x765,0x765,0x765,0x765,0x765,0x99,0x99,0x765,0x765,0x765,0x99,0x99,0x99, -0xb6d,0xb6d,0xb6d,0xb6d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x18b7,0x18b7,0x18b7, -0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, -0xb73,0xb73,0xb73,0x9f,0x9f,0x9f,0x9f,0x9f,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683, -0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c, -0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xa2, -0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xa5, -0xa5,0x101d,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, -0x173d,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5, -0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xa8,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xa8,0xba0,0xba0,0xa8,0xa8,0xba0,0xa8,0xa8,0xba0,0xba0,0xa8, -0xa8,0xba0,0xba0,0xba0,0xba0,0xa8,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xb9d,0xb9d, -0xb9d,0xb9d,0xa8,0xb9d,0xa8,0xb9d,0xb9d,0xb9d,0xb9d,0xd29,0xb9d,0xb9d,0xa8,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xa8,0xba0, -0xba0,0xba0,0xba0,0xa8,0xa8,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xa8,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xa8,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xba0,0xba0,0xa8,0xba0,0xba0,0xba0,0xba0,0xa8,0xba0,0xba0,0xba0,0xba0,0xba0,0xa8,0xba0,0xa8, -0xa8,0xa8,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xa8,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xe16,0xe16,0xa8,0xa8,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xf2d,0xf2a, -0xa8,0xa8,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a, -0xb9a,0xb9a,0xb9a,0xb9a,0xab,0xba6,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, -0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab, -0xab,0xab,0xab,0xab,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36, -0xc36,0xae,0xc36,0xc36,0xc36,0xc36,0xc30,0xc30,0xc33,0xae,0xae,0xae,0xae,0xae,0xae,0xae, -0xae,0xae,0xae,0xae,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f, -0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc39,0xc39,0xc3c,0xca5,0xca5,0xb1,0xb1,0xb1,0xb1,0xb1, -0xb1,0xb1,0xb1,0xb1,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45, -0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc42,0xc42,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4, -0xb4,0xb4,0xb4,0xb4,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b,0xc4b, -0xc4b,0xb7,0xc4b,0xc4b,0xc4b,0xb7,0xc48,0xc48,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7, -0xb7,0xb7,0xb7,0xb7,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b, -0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b, -0xd3b,0x1539,0x1539,0xba,0xd2c,0xd2c,0xd2c,0xd38,0xd38,0xd38,0xd38,0xd2c,0xd2c,0xd38,0xd38,0xd38, -0xba,0xba,0xba,0xba,0xd38,0xd38,0xd2c,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd2f,0xd2f,0xd2f, -0xba,0xba,0xba,0xba,0xd32,0xba,0xba,0xba,0xd3e,0xd3e,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35, -0xd35,0xd35,0xd35,0xd35,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41, -0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xbd,0xbd,0xd41,0xd41,0xd41,0xd41,0xd41,0xbd,0xbd,0xbd, -0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0xc0,0xc0,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0xc0,0x1abe,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xc3,0xd68,0xd68,0xd68, -0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68, -0xd68,0xd68,0xd68,0xc3,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68, -0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xc3,0xd68,0xd68,0xc3,0xd68,0xd68,0xd68,0xd68,0xd68, -0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xc3,0xc3,0xd68,0xd68,0xd68,0xd68, -0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xd68,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, -0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3, -0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xd6b,0xd6b,0xd6b,0xd6b, -0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b, -0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xc6,0xc6,0xc6,0xc6,0xc6,0xdad,0xdad,0xdad,0xc9, -0xc9,0xc9,0xc9,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7, -0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xda7,0xc9,0xc9,0xc9,0xdaa, -0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xdaa,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71, -0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71, -0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xcc,0xd6e,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a, -0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a, -0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xd7a,0xcf,0xcf,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77,0xd77, -0xd77,0xd77,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b, -0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd2,0xd2, -0xd7d,0xd2,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d, -0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd7d,0xd2,0xd7d,0xd7d,0xd2,0xd2,0xd2, -0xd7d,0xd2,0xd2,0xd7d,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80, -0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd5,0xd5,0xd5,0xd5,0xd5, -0xd5,0xd5,0xd5,0xd5,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0x153f, -0x153f,0x17f1,0x17f1,0xdb,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119, -0x1acd,0x132,0x132,0x132,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43, -0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe3a,0xe3a,0xe40,0xe40,0xe3a, -0xde,0xde,0xe3d,0xe3d,0x1149,0x1149,0x1149,0x1149,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1, -0xe1,0xe1,0xe1,0xe1,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2,0xca2, -0xca2,0xca2,0xca2,0xca2,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1542,0x1542,0x1542,0x1542,0x1542, -0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x18bd,0x18bd,0x193e,0x18bd,0xe4,0x17f4, -0x1377,0x118b,0xf3c,0xf3c,0xe55,0xe52,0xe55,0xe52,0xe52,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0x1194, -0x1191,0x1194,0x1191,0x118e,0x118e,0x118e,0x1434,0x1431,0xe7,0xe7,0xe7,0xe7,0xe7,0xe4f,0xe4c,0xe4c, -0xe4c,0xe49,0xe4f,0xe4c,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58, -0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xea,0xea,0xea,0xea,0xea, -0xea,0xea,0xea,0xea,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xea,0xe58,0xe58,0xe58,0xe58, -0xe58,0xe58,0xe58,0xea,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xea,0xe58,0xe58,0xe58,0xe58, -0xe58,0xe58,0xe58,0xea,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e, -0xe5e,0xe5e,0xe5e,0xe5e,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xed,0xed, -0xed,0xed,0xed,0xed,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xf0,0x1437,0xf0,0xf0,0xf0,0xf0, -0xf0,0x1437,0xf0,0xf0,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8, -0xeb8,0xeb8,0xeb8,0xeb8,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, -0xe67,0xe67,0xe67,0xf3,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64, -0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64, -0xe64,0xe64,0xe64,0xf3,0xe79,0xe6d,0xe6d,0xe6d,0xf6,0xe6d,0xe6d,0xf6,0xf6,0xf6,0xf6,0xf6, -0xe6d,0xe6d,0xe6d,0xe6d,0xe79,0xe79,0xe79,0xe79,0xf6,0xe79,0xe79,0xe79,0xf6,0xe79,0xe79,0xe79, -0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79, -0xe79,0xe79,0xe79,0xe79,0x195c,0x195c,0xf6,0xf6,0xe6a,0xe6a,0xe6a,0xf6,0xf6,0xf6,0xf6,0xe70, -0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0xe73,0x1959,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, -0xe76,0xe76,0xe76,0xe76,0xe76,0xe76,0xe7c,0xe7c,0xe73,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0x119a,0x119a,0xf9,0xf9,0xf9,0xf9, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe8b,0xe8b,0xe8b,0xe88,0xe88,0xe8b,0xe88,0xe88,0xe88,0xe88,0xe88, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xe85,0xe85,0xe85,0xe85, -0xe85,0xe85,0xe85,0xe85,0xe85,0xe85,0x1197,0xf9,0xf9,0xf9,0xe82,0xe82,0xe91,0xe91,0xe91,0xe91, -0xfc,0xfc,0xfc,0xfc,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe8e,0xe91,0xe91,0xe91, -0xe91,0xe91,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x154e,0x1554,0x1551,0x189c, -0x17f7,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x1962,0x195f,0x1965,0x195f,0x1965,0x1a25,0x1ac1,0x1ac1,0x1ac1,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -0xeb5,0xeb5,0xeb5,0xeb2,0xeb2,0xea9,0xea9,0xeb2,0xeaf,0xeaf,0xeaf,0xeaf,0x1ac4,0x102,0x102,0x102, -0x1314,0x1314,0x1314,0x1317,0x1317,0x1317,0x130e,0x130e,0x1311,0x130e,0x156,0x156,0x156,0x156,0x156,0x156, -0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0x1443,0x1443,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0xebb, -0x137d,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x137a, -0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc75, -0xee8,0xed9,0xed3,0xee5,0xee2,0xedc,0xedc,0xeeb,0xed6,0xedf,0x108,0x108,0x108,0x108,0x108,0x108, -0xf6f,0xf6f,0xf5a,0xf6f,0xf72,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0x10e,0x10e,0x10e,0x10e, -0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf7b,0xf7b,0xf60,0xf66,0xf7b,0xf7b, -0xf63,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d, -0xf5d,0xf5d,0xf5d,0xf5d,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x10e,0x10e,0x10e, -0x111,0x111,0x1a2b,0x1a28,0x1a2b,0x1a2b,0x1a2b,0x1aca,0x1ac7,0x1aca,0x1ac7,0x111,0x111,0x111,0x111,0x111, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xedf,0xedc,0xa5,0xa5,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64, +0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xa8,0xb70,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, +0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8, +0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0xbf7, +0xbf7,0xbf7,0xbf7,0xbf7,0xbf7,0x1b06,0xbf7,0xbf7,0xbf7,0xbf7,0xbf1,0xbf1,0xbf4,0x1b03,0xab,0xab, +0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x1b06,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00, +0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xbfa,0xbfa,0xbfd,0xc60,0xc60,0xae, +0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, +0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc03,0xc03,0xb1,0xb1,0xb1,0xb1, +0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c, +0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xb4,0xc0c,0xc0c,0xc0c,0xb4,0xc09,0xc09,0xb4,0xb4,0xb4,0xb4, +0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0, +0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0xcf0, +0xcf0,0xcf0,0xcf0,0xcf0,0xcf0,0x14d6,0x14d6,0xb7,0xce1,0xce1,0xce1,0xced,0xced,0xced,0xced,0xce1, +0xce1,0xced,0xced,0xced,0xb7,0xb7,0xb7,0xb7,0xced,0xced,0xce1,0xced,0xced,0xced,0xced,0xced, +0xced,0xce4,0xce4,0xce4,0xb7,0xb7,0xb7,0xb7,0xce7,0xb7,0xb7,0xb7,0xcf3,0xcf3,0xcea,0xcea, +0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6, +0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xcf6,0xba,0xba,0xcf6,0xcf6,0xcf6,0xcf6, +0xcf6,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9, +0xbd,0xbd,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0xbd,0x1a52,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a, +0xc0,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a, +0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xc0,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a, +0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xc0,0xd1a,0xd1a,0xc0,0xd1a, +0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xc0,0xc0, +0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xc0,0xc0, +0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, +0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xc3,0xc3,0xc3,0xc3,0xc3, +0xd5c,0xd5c,0xd62,0xc6,0xc6,0xc6,0xc6,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59, +0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59,0xd59, +0xc6,0xc6,0xc6,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd23,0xd23,0xd23,0xd23, +0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23, +0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xc9,0xd20,0xd2c,0xd2c,0xd2c,0xd2c, +0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c, +0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xcc,0xcc,0xd29,0xd29,0xd29,0xd29, +0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x1812,0x1812,0x1812,0x1812, +0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0xd2f,0xd2f,0xd2f,0xd2f, +0xd2f,0xd2f,0xcf,0xcf,0xd2f,0xcf,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f, +0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xcf,0xd2f, +0xd2f,0xcf,0xcf,0xcf,0xd2f,0xcf,0xcf,0xd2f,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32, +0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd2, +0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3, +0xde3,0xde3,0xde3,0x14dc,0x14dc,0x1788,0x1788,0xd8,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb, +0x10cb,0x10cb,0x10cb,0x10cb,0x1a61,0x129,0x129,0x129,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5, +0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdec, +0xdec,0xdf2,0xdf2,0xdec,0xdb,0xdb,0xdef,0xdef,0x10fb,0x10fb,0x10fb,0x10fb,0xde,0xde,0xde,0xde, +0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d, +0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xc5d,0xe07,0xe04,0xe07,0xe04,0xe04,0xdfb,0xdfb,0xdfb, +0xdfb,0xdfb,0xdfb,0x1146,0x1143,0x1146,0x1143,0x1140,0x1140,0x1140,0x13d4,0x13d1,0xe1,0xe1,0xe1,0xe1, +0xe1,0xe01,0xdfe,0xdfe,0xdfe,0xdfb,0xe01,0xdfe,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a, +0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe4, +0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe4, +0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe4,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe4, +0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe4,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10, +0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d, +0xe0d,0xe0d,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xea,0x13d7, +0xea,0xea,0xea,0xea,0xea,0x13d7,0xea,0xea,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a, +0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe2b,0xe1f,0xe1f,0xe1f,0xed,0xe1f,0xe1f,0xed, +0xed,0xed,0xed,0xed,0xe1f,0xe1f,0xe1f,0xe1f,0xe2b,0xe2b,0xe2b,0xe2b,0xed,0xe2b,0xe2b,0xe2b, +0xed,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b, +0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0x18f3,0x18f3,0xed,0xed,0xe1c,0xe1c,0xe1c,0xed, +0xed,0xed,0xed,0xe22,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0x18f0,0xed,0xed,0xed, +0xed,0xed,0xed,0xed,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe2e,0xe2e,0xe25,0xed,0xed,0xed, +0xed,0xed,0xed,0xed,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0x114c,0x114c, +0xf0,0xf0,0xf0,0xf0,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3d,0xe3d,0xe3d,0xe3a,0xe3a,0xe3d,0xe3a, +0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, +0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0x1149,0xf0,0xf0,0xf0,0xe34,0xe34, +0xe43,0xe43,0xe43,0xe43,0xf3,0xf3,0xf3,0xf3,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43, +0xe40,0xe43,0xe43,0xe43,0xe43,0xe43,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3, +0x14eb,0x14f1,0x14ee,0x1833,0x178e,0x1857,0x1857,0x1857,0x1857,0x1857,0x18f9,0x18f6,0x18fc,0x18f6,0x18fc,0x19b9, +0x1a55,0x1a55,0x1a55,0x1b18,0x1b18,0x1b12,0x1b0f,0x1b12,0x1b0f,0x1b12,0x1b0f,0x1b12,0x1b0f,0x1b15,0xf6,0xf6, +0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, +0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6, +0xe67,0xe67,0xe67,0xe64,0xe64,0xe5b,0xe5b,0xe64,0xe61,0xe61,0xe61,0xe61,0x1a58,0xf9,0xf9,0xf9, +0x12ba,0x12ba,0x12ba,0x12bd,0x12bd,0x12bd,0x12b4,0x12b4,0x12b7,0x12b4,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d, +0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0x13e3,0x13e3,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xe6d, +0x1323,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x1320, +0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30,0xc30, +0xe9a,0xe8b,0xe85,0xe97,0xe94,0xe8e,0xe8e,0xe9d,0xe88,0xe91,0xff,0xff,0xff,0xff,0xff,0xff, +0xf21,0xf21,0xf0c,0xf21,0xf24,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0x1b1b,0x105,0x105,0x105, +0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf1b,0xf2d,0xf2d,0xf12,0xf18,0xf2d,0xf2d, +0xf15,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f, +0xf0f,0xf0f,0xf0f,0xf0f,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0x1b1e,0x1b1e,0x105, +0x1b27,0x1b21,0x19bf,0x19bc,0x19bf,0x19bf,0x19bf,0x1a5e,0x1a5b,0x1a5e,0x1a5b,0x108,0x108,0x108,0x108,0x108, +0x1b27,0x1b21,0x108,0x1b21,0x108,0x1b21,0x1b27,0x1b21,0x1b27,0x1b21,0x108,0x108,0x108,0x108,0x108,0x108, +0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x1b24,0x1b24, +0x1b24,0x1a5e,0x1a5b,0x14fa,0x13ec,0x13ec,0x1326,0x1026,0x1026,0x1026,0x1026,0x1026,0xf3c,0xf3c,0xf3c,0xf3c, +0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c, +0xf39,0xf39,0xf3f,0xf3f,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0xf48,0xf48,0xf48,0xf48, +0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48,0xf48, +0xf48,0xf48,0xf42,0xf42,0xf42,0xf42,0x1155,0x1155,0x10e,0x10e,0x10e,0xf45,0x1500,0x1500,0x1500,0x1500, +0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500, +0x1500,0x1500,0x1500,0x1500,0x1500,0x16e0,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111, 0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111, -0x111,0x1aca,0x1ac7,0x155d,0x144c,0x144c,0x1380,0x1074,0x1074,0x1074,0x1074,0x1074,0xf8a,0xf8a,0xf8a,0xf8a, -0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a, -0xf87,0xf87,0xf8d,0xf8d,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0xf96,0xf96,0xf96,0xf96, -0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96, -0xf96,0xf96,0xf90,0xf90,0xf90,0xf90,0x11a3,0x11a3,0x117,0x117,0x117,0xf93,0x1563,0x1563,0x1563,0x1563, -0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563, -0x1563,0x1563,0x1563,0x1563,0x1563,0x174c,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a, -0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a, -0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0xf9f,0xf9f,0xf9f,0x1569,0x1569,0x1569,0x1569,0x1569, -0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x1569,0x11d,0xf9c,0xf9c,0xf9c,0xf9c,0x1566,0x11d,0x11d,0x11d, -0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2, -0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0xfa2,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974, -0x1974,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x109b,0x109b,0x109b,0x109b,0x1098,0x1098,0x1098,0x1098, -0x1098,0x1098,0x1098,0x1098,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1089,0x1098,0x1098,0x108f,0x108c, -0x123,0x123,0x123,0x109e,0x109e,0x1092,0x1092,0x1092,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095, -0x1095,0x1095,0x123,0x123,0x123,0x109b,0x109b,0x109b,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1, -0x10a1,0x10a1,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, -0x10b6,0x10b6,0x10b9,0x10b9,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126, -0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10e0,0x10e0,0x10e0,0x10e0,0x10da,0x17fd,0x129,0x129, -0x129,0x129,0x129,0x129,0x129,0x129,0x10e6,0x10e6,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd, -0x10dd,0x10dd,0x129,0x129,0x129,0x129,0x129,0x129,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x10f8, -0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10fe,0x1101,0x12c,0x12c,0x12c,0x12c, -0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x12c,0x10fb,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113, -0x1113,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1110,0x1110,0x1107,0x1107,0x1110,0x1110,0x1107,0x1107,0x12f, -0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x1113,0x1113,0x1113,0x1107,0x1113,0x1113,0x1113,0x1113, -0x1113,0x1113,0x1113,0x1113,0x1107,0x1110,0x12f,0x12f,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d,0x110d, -0x110d,0x110d,0x12f,0x12f,0x110a,0x1116,0x1116,0x1116,0x1575,0x132,0x132,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132, -0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c, -0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c,0x111c, -0x111c,0x111c,0x111c,0x111c,0x111c,0x111f,0x135,0x135,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122, -0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122,0x1122, -0x1122,0x1122,0x1122,0x1122,0x1122,0x138,0x138,0x138,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b, -0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b, -0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b,0x112b, -0x112b,0x112b,0x13e,0x13e,0x13e,0x13e,0x13e,0x1128,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e, -0x112e,0x112e,0x112e,0x112e,0x141,0x141,0x141,0x141,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131, -0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x144,0x144,0x144,0x144, -0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x144,0x11a9,0x11a9,0x11a9,0x11a9,0x11b2,0x11a9,0x11a9,0x11a9, -0x11b2,0x11a9,0x11a9,0x11a9,0x11a9,0x11a6,0x147,0x147,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11af,0x11b5, -0x11af,0x11b5,0x11af,0x11af,0x11af,0x11b5,0x11b5,0x147,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8, -0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x14a,0x14a, -0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3, -0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d0,0x11bb,0x11d0, -0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x14d,0x11c4,0x11cd,0x11bb,0x11cd,0x11cd,0x11bb,0x11bb,0x11bb, -0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11bb,0x11bb,0x11c1,0x11c1,0x11c1, -0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x14d,0x14d,0x11be,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca, -0x11ca,0x11ca,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca, -0x11ca,0x11ca,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11c7,0x11d6, -0x11d9,0x11d9,0x11d9,0x11d9,0x11c7,0x11c7,0x14d,0x14d,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0, -0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15bd,0x1adf,0x1329,0x1302,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320, -0x1320,0x1308,0x1305,0x12fc,0x12fc,0x1326,0x12fc,0x12fc,0x12fc,0x12fc,0x130b,0x14eb,0x14f1,0x14ee,0x14ee,0x193b, -0x1716,0x1716,0x1aac,0x150,0x150,0x150,0x150,0x150,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee, -0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11e5,0x11e5,0x11e8,0x11f1,0x11eb,0x11eb,0x11eb,0x11f1, -0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea, -0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x12ea, -0x12ea,0x12ea,0x12ea,0x12ea,0x12ea,0x159,0x159,0x159,0x120f,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1206, -0x1215,0x1215,0x1203,0x1203,0x1203,0x1203,0x15c,0x131a,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209, -0x1209,0x1209,0x15c,0x15c,0x15c,0x15c,0x1203,0x1203,0x1233,0x1227,0x1233,0x15f,0x15f,0x15f,0x15f,0x15f, -0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f,0x15f, -0x15f,0x15f,0x15f,0x1230,0x1230,0x1236,0x122a,0x122d,0x124b,0x124b,0x124b,0x1245,0x1245,0x123c,0x1245,0x1245, -0x123c,0x1245,0x1245,0x124e,0x1248,0x123f,0x162,0x162,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242, -0x1242,0x1242,0x162,0x162,0x162,0x162,0x162,0x162,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x1254,0x165, -0x165,0x165,0x165,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, -0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, -0x165,0x165,0x165,0x165,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d, -0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x168,0x125a,0x1257,0x1257,0x1257,0x1257, -0x1257,0x1257,0x1257,0x1257,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c, -0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x16b,0x16b,0x16b,0x1266,0x1269,0x1269, -0x1269,0x1269,0x1269,0x1269,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272, -0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x16e,0x16e,0x126f,0x126f,0x126f,0x126f, -0x126f,0x126f,0x126f,0x126f,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278, -0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x171,0x171,0x171,0x171,0x171,0x1275,0x1275,0x1275,0x1275, -0x1275,0x1275,0x1275,0x1275,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e,0x127e, -0x127e,0x127e,0x127e,0x177,0x1299,0x1299,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, -0x17a,0x197d,0x17a,0x17a,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca, -0x14ca,0x14ca,0x14ca,0x14ca,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f, -0x129f,0x129f,0x129f,0x17d,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a52,0x1a4c,0x279,0x279,0x279, -0x279,0x279,0x279,0x279,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e, -0x187e,0x1ad0,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180, -0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180, -0x180,0x180,0x180,0x180,0x180,0x180,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c, -0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c, -0x12f6,0x13f5,0x13f2,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183, -0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f3,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0, -0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f0,0x12f3,0x12f0,0x12f0,0x13f5,0x13f5, -0x13f5,0x13f5,0x13f5,0x13f2,0x13f5,0x13f5,0x13f5,0x1881,0x183,0x183,0x183,0x183,0x12ed,0x12ed,0x12ed,0x12ed, -0x12ed,0x12ed,0x12ed,0x12ed,0x12ed,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1419,0x1419,0x183,0x183, -0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1920,0x1920,0x1920,0x1920, -0x1920,0x1920,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183, -0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183, -0x183,0x183,0x183,0x183,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395, -0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x138f,0x138f,0x138f, -0x186,0x186,0x1392,0x186,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x1398,0x13a1,0x139b,0x139b,0x13a1,0x13a1, -0x13a1,0x139b,0x13a1,0x139b,0x139b,0x139b,0x13a4,0x13a4,0x189,0x189,0x189,0x189,0x189,0x189,0x189,0x189, -0x139e,0x139e,0x139e,0x139e,0x18c,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x18c,0x18c,0x13aa,0x13aa,0x13aa, -0x13aa,0x13aa,0x13aa,0x18c,0x18c,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x18c,0x18c,0x18c,0x18c,0x18c, -0x18c,0x18c,0x18c,0x18c,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x18c,0x13aa,0x13aa,0x13aa,0x13aa, -0x13aa,0x13aa,0x13aa,0x18c,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d, -0x161d,0x161d,0x161d,0x161d,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13b0,0x13c2,0x13c2,0x13b6,0x13b6,0x13b6, -0x13b6,0x13b6,0x18f,0x18f,0x18f,0x18f,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3, -0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9, -0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x1584, -0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5, -0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x192,0x192,0x192,0x192,0x192,0x192,0x192, -0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x195, -0x195,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1587, -0x195,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13fe, -0x195,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8, -0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587, -0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195, -0x1413,0x1410,0x1410,0x1410,0x1410,0x1410,0x159c,0x159c,0x159c,0x159c,0x159c,0x159f,0x170d,0x159f,0x159f,0x159f, -0x17d9,0x188a,0x188a,0x18c3,0x18c3,0x1a8e,0x1b39,0x1b39,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198, -0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x159c,0x159c,0x159c,0x159f,0x159c,0x170a,0x170a,0x198,0x198,0x198, -0x159f,0x159c,0x159c,0x159f,0x188a,0x188a,0x188a,0x1926,0x1926,0x1a07,0x1a8e,0x1b39,0x1b39,0x198,0x198,0x198, -0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb, -0x13cb,0x13cb,0x13cb,0x13cb,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b, -0x1467,0x15a5,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x15a5,0x15a5,0x15a5, -0x15a5,0x15a5,0x15a5,0x175e,0x175e,0x19e,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1ad3,0x1ad3, -0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x1ad3,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e, -0x19e,0x19e,0x19e,0x1983,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806,0x1806, -0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d, -0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d, -0x1a1,0x146d,0x146d,0x1a1,0x146d,0x1a1,0x1a1,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d, -0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x1a1,0x1a1,0x1a1, -0x1a1,0x1a1,0x146d,0x1a1,0x1a1,0x1a1,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x146d,0x146d,0x146d, -0x1a1,0x146d,0x146d,0x1a1,0x146d,0x1a1,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x146d,0x1a1,0x146d, -0x1a1,0x146d,0x146d,0x1a1,0x146d,0x1a1,0x1a1,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d, -0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x1a1, -0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x146d, -0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x1a1,0x1a1,0x1a1,0x1a1, -0x1a1,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x146d,0x1a1,0x146d,0x146d,0x146d,0x146d,0x146d, -0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x1a1,0x1a1,0x1a1,0x1a1, -0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1, -0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x146a,0x146a,0x1a1,0x1a1, -0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1482,0x1482,0x1482,0x1482, -0x1482,0x1482,0x1482,0x1470,0x1470,0x1470,0x1470,0x1470,0x147f,0x1470,0x1473,0x1473,0x1470,0x1470,0x1470,0x1476, -0x1476,0x1a4,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x1479,0x1485,0x1485,0x1485, -0x1989,0x1986,0x1986,0x1ad6,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x162f,0x162f,0x162f,0x162f, -0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x1491,0x1491,0x1491,0x1491, -0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x148e,0x1488,0x1488,0x148e,0x148e,0x1497,0x1497,0x1491,0x1494, -0x1494,0x148e,0x148b,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x149a,0x149a,0x149a,0x149a, -0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a, -0x149a,0x149a,0x149a,0x149a,0x1aa,0x1aa,0x1aa,0x1aa,0x1761,0x1761,0x149a,0x149a,0x1761,0x1761,0x1761,0x1761, -0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1aa,0x1aa,0x1761,0x1761, -0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x14a6,0x14a6,0x14a6,0x14a6, -0x14a6,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1ad,0x1ad,0x1ad,0x1ad,0x1a31,0x14a6,0x14a3,0x14a3,0x14a3, -0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x1a34,0x1a34,0x1a34,0x1a34, -0x1a34,0x1a34,0x1a34,0x1a34,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x14a0,0x14a0,0x14a0,0x14a0,0x14a9, -0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14a9,0x14ca,0x14ca,0x14ca,0x14ca, -0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x14c7,0x14c7,0x14c7,0x14c7, -0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x14c7,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x14cd,0x14cd,0x14cd,0x14cd, -0x14cd,0x14cd,0x14cd,0x14cd,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1323,0x1320,0x1323,0x12ff, -0x1320,0x1326,0x1326,0x1329,0x1326,0x1329,0x132c,0x1320,0x1329,0x1329,0x1320,0x1320,0x14df,0x14df,0x14df,0x14df, -0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14d0,0x14d9,0x14d0,0x14d9,0x14d9,0x14d0,0x14d0,0x14d0,0x14d0, -0x14d0,0x14d0,0x14dc,0x14d3,0x1a3a,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x15b1,0x15b1,0x15b1,0x15b1, -0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x1b9,0x1b9,0x15ae,0x15ae,0x15ae,0x15ae, -0x15ae,0x15b4,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1719,0x1710,0x1710,0x1710, -0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710, -0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1710,0x1bf,0x1bf,0x1bf,0x1bf,0x1adf,0x1c2,0x1c2,0x1c2, -0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2, -0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2, -0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5, -0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1c5,0x1c5,0x1c5, -0x1c5,0x1c5,0x1c5,0x1c5,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x1c5,0x1c5, -0x15c9,0x15c3,0x15c6,0x15cf,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x1c8,0x1c8,0x1c8,0x1c8, -0x1c8,0x1c8,0x1c8,0x1c8,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba, -0x15ba,0x15ba,0x15ba,0x15ba,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5, -0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x198c,0x198c,0x198c,0x198c,0x1cb,0x1cb,0x1cb, -0x1cb,0x1cb,0x1cb,0x1cb,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91,0x1a91, -0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb, -0x1cb,0x1cb,0x1cb,0x1cb,0x1776,0x171c,0x15de,0x1722,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7, -0x15e7,0x1ce,0x1ce,0x15e7,0x15e7,0x1ce,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7, -0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x1ce,0x15e7,0x15e7, -0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x1ce,0x1a16,0x171f,0x15e7,0x15d8,0x15de,0x15d8,0x15de,0x15de,0x15de, -0x15de,0x1ce,0x1ce,0x15de,0x15de,0x1ce,0x1ce,0x15e1,0x15e1,0x15e4,0x1ce,0x1ce,0x1779,0x1ce,0x1ce,0x1ce, -0x1ce,0x1ce,0x1ce,0x15d8,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x15ea,0x15e7,0x15e7,0x15e7,0x15e7,0x15de,0x15de, -0x1ce,0x1ce,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x1ce,0x1ce,0x1ce,0x15db,0x15db,0x15db,0x15db, -0x15db,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x15ff,0x15ff,0x15ff,0x15ff, -0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x1d1,0x15ff, -0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15f9,0x15f9,0x15f9,0x15ed, -0x15ed,0x15ed,0x15f9,0x15f9,0x15ed,0x15fc,0x15f0,0x15ed,0x1602,0x1602,0x15f6,0x1602,0x1602,0x15f3,0x180c,0x1d1, -0x1611,0x1611,0x1611,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1608,0x160b,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4, -0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4, -0x177c,0x177c,0x177c,0x177c,0x161d,0x161a,0x1a3d,0x1a3d,0x1ae5,0x1ae8,0x1ae2,0x1ae2,0x1d7,0x1d7,0x1d7,0x1d7, -0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, -0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, -0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f, -0x162f,0x162f,0x162f,0x1626,0x1629,0x162c,0x162f,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd, -0x163e,0x163e,0x163e,0x163e,0x163e,0x1632,0x1632,0x1e0,0x1e0,0x1e0,0x1e0,0x1635,0x1635,0x1635,0x1635,0x1635, -0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x1638,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0, -0x1647,0x1647,0x1647,0x1647,0x1647,0x1e3,0x1e3,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644, -0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3, -0x164a,0x165c,0x165c,0x1650,0x1659,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, -0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1653,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, -0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662, -0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1662,0x1e9, -0x166e,0x166e,0x166e,0x166e,0x166e,0x1668,0x1671,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e,0x166e, -0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x166e,0x166e,0x166e,0x166e,0x166e,0x1ec, -0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677, -0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1ef, -0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683, -0x1683,0x1683,0x1683,0x1683,0x1683,0x1683,0x1680,0x1680,0x1680,0x1680,0x1680,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2, -0x169b,0x169b,0x169e,0x169e,0x16a1,0x1692,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5, -0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1f5,0x1692,0x1692,0x1692,0x1692,0x1692, -0x1692,0x1692,0x1f5,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b, -0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x169b,0x169b,0x169b, -0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, -0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8, -0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3, -0x16b3,0x16b3,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x16b0,0x16b0,0x16b0,0x16b0,0x1fb,0x1fb,0x1fb, -0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16b6, -0x16c8,0x16c8,0x16b6,0x16b6,0x16b6,0x16b6,0x201,0x201,0x16c8,0x16c8,0x16cb,0x16cb,0x16b6,0x16b6,0x16c8,0x16bc, -0x16b9,0x16bf,0x16d1,0x16d1,0x16c2,0x16c2,0x16c5,0x16c5,0x16c5,0x16d1,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785, -0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1782,0x1782,0x1782,0x1782,0x177f,0x177f,0x201,0x201, -0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201, -0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201, -0x204,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4, -0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204, -0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x207,0x207,0x207,0x207, -0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x16d7,0x16d7,0x207,0x207,0x207,0x207,0x207,0x207,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x207,0x207,0x1aeb,0x1aeb,0x207,0x207, -0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207, +0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0xf51,0xf51,0xf51,0x1506,0x1506,0x1506,0x1506,0x1506, +0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x1506,0x114,0xf4e,0xf4e,0xf4e,0xf4e,0x1503,0x114,0x114,0x114, +0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54, +0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0xf54,0x190b,0x190b,0x190b,0x190b,0x190b,0x190b, +0x190b,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x104d,0x104d,0x104d,0x104d,0x104a,0x104a,0x104a,0x104a, +0x104a,0x104a,0x104a,0x104a,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x103b,0x104a,0x104a,0x1041,0x103e, +0x11a,0x11a,0x11a,0x1050,0x1050,0x1044,0x1044,0x1044,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047, +0x1047,0x1047,0x11a,0x11a,0x11a,0x104d,0x104d,0x104d,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053, +0x1053,0x1053,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068, +0x1068,0x1068,0x106b,0x106b,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d, +0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x1092,0x1092,0x1092,0x1092,0x108c,0x1794,0x120,0x120, +0x120,0x120,0x120,0x120,0x120,0x120,0x1098,0x1098,0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x108f,0x108f, +0x108f,0x108f,0x120,0x120,0x120,0x120,0x120,0x120,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10aa, +0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10b0,0x10b3,0x123,0x123,0x123,0x123, +0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x10ad,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5, +0x10c5,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10c2,0x10c2,0x10b9,0x10b9,0x10c2,0x10c2,0x10b9,0x10b9,0x126, +0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10c5,0x10c5,0x10c5,0x10b9,0x10c5,0x10c5,0x10c5,0x10c5, +0x10c5,0x10c5,0x10c5,0x10c5,0x10b9,0x10c2,0x126,0x126,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf, +0x10bf,0x10bf,0x126,0x126,0x10bc,0x10c8,0x10c8,0x10c8,0x1512,0x129,0x129,0x129,0x129,0x129,0x129,0x129, +0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129, +0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce, +0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce, +0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10d1,0x12c,0x12c,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4, +0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4, +0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x12f,0x12f,0x12f,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7, +0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x132,0x132,0x132,0x132,0x132,0x132,0x132, +0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd, +0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd, +0x10dd,0x10dd,0x135,0x135,0x135,0x135,0x135,0x10da,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0, +0x10e0,0x10e0,0x10e0,0x10e0,0x138,0x138,0x138,0x138,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3, +0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x13b,0x13b,0x13b,0x13b, +0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x115b,0x115b,0x115b,0x115b,0x1164,0x115b,0x115b,0x115b, +0x1164,0x115b,0x115b,0x115b,0x115b,0x1158,0x13e,0x13e,0x1161,0x1161,0x1161,0x1161,0x1161,0x1161,0x1161,0x1167, +0x1161,0x1167,0x1161,0x1161,0x1161,0x1167,0x1167,0x13e,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a, +0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x141,0x141, +0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1182,0x116d,0x1182, +0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d,0x144,0x1176,0x117f,0x116d,0x117f,0x117f,0x116d,0x116d,0x116d, +0x116d,0x116d,0x116d,0x116d,0x116d,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x116d,0x116d,0x1173,0x1173,0x1173, +0x1173,0x1173,0x1173,0x1173,0x1173,0x144,0x144,0x1170,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c, +0x117c,0x117c,0x144,0x144,0x144,0x144,0x144,0x144,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c,0x117c, +0x117c,0x117c,0x144,0x144,0x144,0x144,0x144,0x144,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1188, +0x118b,0x118b,0x118b,0x118b,0x1179,0x1179,0x144,0x144,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551, +0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x154e,0x1a73,0x12cf,0x12a8,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6, +0x12c6,0x12ae,0x12ab,0x12a2,0x12a2,0x12cc,0x12a2,0x12a2,0x12a2,0x12a2,0x12b1,0x148b,0x1491,0x148e,0x148e,0x18d2, +0x16a7,0x16a7,0x1a40,0x147,0x147,0x147,0x147,0x147,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x1197,0x1197,0x119a,0x11a3,0x119d,0x119d,0x119d,0x11a3, +0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293, +0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293, +0x1293,0x1293,0x1293,0x1293,0x1293,0x150,0x150,0x150,0x11c1,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b8, +0x11c7,0x11c7,0x11b5,0x11b5,0x11b5,0x11b5,0x153,0x12c3,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb, +0x11bb,0x11bb,0x153,0x153,0x153,0x153,0x11b5,0x11b5,0x11e5,0x11d9,0x11e5,0x156,0x156,0x156,0x156,0x156, +0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156, +0x156,0x156,0x156,0x11e2,0x11e2,0x11e8,0x11dc,0x11df,0x11fd,0x11fd,0x11fd,0x11f7,0x11f7,0x11ee,0x11f7,0x11f7, +0x11ee,0x11f7,0x11f7,0x1200,0x11fa,0x11f1,0x159,0x159,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4, +0x11f4,0x11f4,0x159,0x159,0x159,0x159,0x159,0x159,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x1206,0x15c, +0x15c,0x15c,0x15c,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203, +0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203,0x1203, +0x15c,0x15c,0x15c,0x15c,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f, +0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x15f,0x120c,0x1209,0x1209,0x1209,0x1209, +0x1209,0x1209,0x1209,0x1209,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e, +0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x162,0x162,0x162,0x1218,0x121b,0x121b, +0x121b,0x121b,0x121b,0x121b,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224, +0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x165,0x165,0x1221,0x1221,0x1221,0x1221, +0x1221,0x1221,0x1221,0x1221,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a, +0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x168,0x168,0x168,0x168,0x168,0x1227,0x1227,0x1227,0x1227, +0x1227,0x1227,0x1227,0x1227,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, +0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, +0x1230,0x1230,0x1230,0x16e,0x124b,0x124b,0x1b2a,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171, +0x171,0x1914,0x171,0x171,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a, +0x146a,0x146a,0x146a,0x146a,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, +0x1251,0x1251,0x1251,0x174,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3,0x19e3,0x19e6,0x19e0,0x26a,0x26a,0x26a, +0x26a,0x26a,0x26a,0x26a,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1815, +0x1815,0x1a64,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177, +0x177,0x177,0x177,0x177,0x177,0x177,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332, +0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332,0x1332, +0x129c,0x1395,0x1395,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299,0x1299, +0x1299,0x1299,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1818,0x17a,0x17a,0x17a,0x17a, +0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x1296,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x13b9,0x13b9,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a, +0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b, +0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b,0x133b, +0x133b,0x1335,0x1335,0x1335,0x17d,0x17d,0x1338,0x17d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x133e,0x1347, +0x1341,0x1341,0x1347,0x1347,0x1347,0x1341,0x1347,0x1341,0x1341,0x1341,0x134a,0x134a,0x180,0x180,0x180,0x180, +0x180,0x180,0x180,0x180,0x1344,0x1344,0x1344,0x1344,0x183,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x183, +0x183,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x183,0x183,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x183, +0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x183, +0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x1350,0x183,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae, +0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1356,0x1368, +0x1368,0x135c,0x135c,0x135c,0x135c,0x135c,0x186,0x186,0x186,0x186,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359, +0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x1359,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f, +0x135f,0x135f,0x135f,0x135f,0x1b30,0x1b33,0x1b33,0x1b2d,0x1b2d,0x1b33,0x186,0x186,0x186,0x186,0x186,0x186, +0x186,0x186,0x186,0x1521,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b, +0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x189,0x189,0x189, +0x189,0x189,0x189,0x189,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x18c,0x18c,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x1524,0x18c,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x139e,0x18c,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e,0x136e, +0x136e,0x136e,0x136e,0x136e,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524, +0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x1524,0x18c,0x18c,0x18c,0x18c,0x18c,0x18c, +0x18c,0x18c,0x18c,0x18c,0x13b3,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530, +0x169e,0x1530,0x1530,0x1530,0x1770,0x1821,0x1821,0x185a,0x185a,0x1a22,0x1acd,0x1acd,0x18f,0x18f,0x18f,0x18f, +0x18f,0x1b9c,0x1b9c,0x1b9c,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x1530,0x169b, +0x169b,0x18f,0x18f,0x18f,0x1530,0x1530,0x1530,0x1530,0x1821,0x1821,0x1821,0x18bd,0x18bd,0x199e,0x1a22,0x1acd, +0x1acd,0x18f,0x18f,0x18f,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371, +0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192, +0x192,0x192,0x192,0x192,0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d, +0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d, +0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x195,0x140d,0x195,0x195,0x140d,0x195,0x140d,0x140d,0x140d, +0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x195,0x140d, +0x195,0x195,0x195,0x195,0x195,0x195,0x140d,0x195,0x195,0x195,0x195,0x140d,0x195,0x140d,0x195,0x140d, +0x195,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x195,0x140d,0x195,0x195,0x140d,0x195,0x140d,0x195,0x140d, +0x195,0x140d,0x195,0x140d,0x195,0x140d,0x140d,0x195,0x140d,0x195,0x195,0x140d,0x140d,0x140d,0x140d,0x195, +0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x140d, +0x140d,0x195,0x140d,0x195,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x195,0x140d, +0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d, +0x195,0x195,0x195,0x195,0x195,0x140d,0x140d,0x140d,0x195,0x140d,0x140d,0x140d,0x140d,0x140d,0x195,0x140d, +0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d,0x140d, +0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195, +0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195, +0x140a,0x140a,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195, +0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1410,0x1410,0x1410,0x1410,0x1410,0x141f,0x1410,0x1413,0x1413, +0x1410,0x1410,0x1410,0x1416,0x1416,0x198,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c, +0x1419,0x1425,0x1425,0x1425,0x1920,0x191d,0x191d,0x1a6a,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198, +0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0, +0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x1431,0x142e,0x1428,0x1428,0x142e,0x142e, +0x1437,0x1437,0x1431,0x1434,0x1434,0x142e,0x142b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b,0x19b, +0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a, +0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x143a,0x19e,0x19e,0x19e,0x19e,0x16f5,0x16f5,0x143a,0x143a, +0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5, +0x19e,0x19e,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5, +0x1446,0x1446,0x1446,0x1446,0x1446,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1a1,0x1a1,0x1a1,0x1a1,0x19c5, +0x1446,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x19c8,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1440, +0x1440,0x1440,0x1440,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449,0x1449, +0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x146a,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4, +0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4, +0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x146d,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7, +0x12c9,0x12c6,0x12c9,0x12a5,0x12c6,0x12cc,0x12cc,0x12cf,0x12cc,0x12cf,0x12d2,0x12c6,0x12cf,0x12cf,0x12c6,0x12c6, +0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x1470,0x1479,0x1470,0x1479,0x1479, +0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x147c,0x1473,0x19ce,0x1b3f,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa, +0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1ad,0x1ad, +0x153f,0x153f,0x153f,0x153f,0x153f,0x1545,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad, +0x154b,0x154b,0x154b,0x154b,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1548, +0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x2b5,0x1b8a,0x1b8a,0x1b8a,0x1b8a, +0x16aa,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1, +0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x1b3,0x1b3,0x1b3,0x1b3, +0x1a73,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b45,0x1b42,0x1b42,0x1b42,0x1b6, +0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6, +0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6, +0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9, +0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x1b9,0x1b9,0x1b9, +0x1b9,0x1b9,0x1b9,0x1b9,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x1b9,0x1b9, +0x155a,0x1554,0x1557,0x1560,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1bc,0x1bc,0x1bc,0x1bc, +0x1bc,0x1bc,0x1bc,0x1bc,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b, +0x154b,0x154b,0x154b,0x154b,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566, +0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1923,0x1923,0x1923,0x1923,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0x1bf,0x1bf,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25, +0x1bf,0x1bf,0x1bf,0x1bf,0x1b9f,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf, +0x1bf,0x1bf,0x1bf,0x1bf,0x170a,0x16ad,0x156f,0x16b3,0x1c2,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578, +0x1578,0x1c2,0x1c2,0x1578,0x1578,0x1c2,0x1c2,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578, +0x1578,0x1578,0x1578,0x1578,0x1578,0x1c2,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1c2,0x1578,0x1578, +0x1c2,0x1578,0x1578,0x1578,0x1578,0x1578,0x1c2,0x19aa,0x16b0,0x1578,0x1569,0x156f,0x1569,0x156f,0x156f,0x156f, +0x156f,0x1c2,0x1c2,0x156f,0x156f,0x1c2,0x1c2,0x1572,0x1572,0x1575,0x1c2,0x1c2,0x170d,0x1c2,0x1c2,0x1c2, +0x1c2,0x1c2,0x1c2,0x1569,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x157b,0x1578,0x1578,0x1578,0x1578,0x156f,0x156f, +0x1c2,0x1c2,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1c2,0x1c2,0x1c2,0x156c,0x156c,0x156c,0x156c, +0x156c,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1590,0x1590,0x1590,0x1590, +0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1c5,0x1590, +0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x158a,0x158a,0x158a,0x157e, +0x157e,0x157e,0x158a,0x158a,0x157e,0x158d,0x1581,0x157e,0x1593,0x1593,0x1587,0x1593,0x1593,0x1584,0x17a3,0x1c5, +0x15a2,0x15a2,0x15a2,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1599,0x159c,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x159f,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8, +0x1710,0x1710,0x1710,0x1710,0x15ae,0x15ab,0x19d1,0x19d1,0x1a79,0x1a7c,0x1a76,0x1a76,0x1cb,0x1cb,0x1cb,0x1cb, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce, +0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce, +0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0, +0x15c0,0x15c0,0x15c0,0x15b7,0x15ba,0x15bd,0x15c0,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1, +0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15c3,0x15c3,0x1d4,0x1d4,0x1d4,0x1d4,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6, +0x15cc,0x15cc,0x16b6,0x15cc,0x15cc,0x15cc,0x15c9,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4, +0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x1d7,0x1d7,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5, +0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7, +0x15db,0x15ed,0x15ed,0x15e1,0x15ea,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, +0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x15e4,0x1da,0x1da,0x1da,0x1da,0x1da,0x1da, +0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3, +0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1dd, +0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x1dd,0x1dd,0x1dd,0x1dd,0x15f6,0x15f6, +0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b, +0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15f9,0x1602,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff, +0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15ff,0x15ff,0x15ff,0x15ff,0x15ff,0x1e0, +0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608, +0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1608,0x1e3, +0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, +0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1611,0x1611,0x1611,0x1611,0x1611,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6, +0x162c,0x162c,0x162f,0x162f,0x1632,0x1623,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9, +0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1e9,0x1623,0x1623,0x1623,0x1623,0x1623, +0x1623,0x1623,0x1e9,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x162c,0x162c,0x162c, +0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b, +0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec, +0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644,0x1644, +0x1644,0x1644,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1641,0x1641,0x1641,0x1641,0x1ef,0x1ef,0x1ef, +0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x1647, +0x1659,0x1659,0x1647,0x1647,0x1647,0x1647,0x1f5,0x1f5,0x1659,0x1659,0x165c,0x165c,0x1647,0x1647,0x1659,0x164d, +0x164a,0x1650,0x1662,0x1662,0x1653,0x1653,0x1656,0x1656,0x1656,0x1662,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719, +0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1719,0x1716,0x1716,0x1716,0x1716,0x1713,0x1713,0x1f5,0x1f5, +0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5, +0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5, +0x1f8,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665, +0x1665,0x1665,0x1665,0x1665,0x1665,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8, +0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1fb,0x1fb,0x1fb,0x1fb, +0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1668,0x1668,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1fb,0x1fb,0x1a7f,0x1a7f,0x1fb,0x1fb, +0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb, +0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb, +0x166b,0x167a,0x1671,0x166e,0x1680,0x1680,0x1674,0x1680,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe, +0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe, +0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1683,0x1683,0x1683,0x1683,0x1683,0x1683, +0x1683,0x1683,0x1683,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x168c, +0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e, +0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x172e,0x1926,0x204,0x204,0x171c,0x171c,0x171c, +0x1728,0x1728,0x171c,0x171c,0x171c,0x171c,0x172b,0x171c,0x171c,0x171c,0x171c,0x171f,0x204,0x204,0x204,0x204, +0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1725,0x1722,0x1722,0x1731,0x1731,0x1731,0x1722, +0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207, 0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207, -0x16da,0x16e9,0x16e0,0x16dd,0x16ef,0x16ef,0x16e3,0x16ef,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a, -0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x16e6,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a, -0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2, -0x16f2,0x16f2,0x16f2,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x16fb, -0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797, -0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x198f,0x210,0x210,0x1788,0x1788,0x1788, -0x1794,0x1794,0x1788,0x1788,0x1788,0x1788,0x1794,0x1788,0x1788,0x1788,0x1788,0x178b,0x210,0x210,0x210,0x210, -0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x1791,0x178e,0x178e,0x179a,0x179a,0x179a,0x178e, -0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213, -0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213, -0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af, -0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x219,0x17af,0x17af,0x219,0x219, -0x219,0x219,0x219,0x17ac,0x17ac,0x17ac,0x17ac,0x17ac,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x21c, -0x17b2,0x21c,0x17b2,0x17b2,0x17b2,0x17b2,0x21c,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2, -0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x21c,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2, -0x17b2,0x17b5,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be, -0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x21f,0x21f,0x21f,0x21f,0x21f, -0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x21f,0x21f,0x21f,0x21f,0x21f, -0x21f,0x21f,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929, -0x1929,0x1929,0x1929,0x1929,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a94,0x1b3c,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1b3f, -0x1b3c,0x222,0x1a0a,0x1a94,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x17df,0x1a0a,0x1a0a,0x1a94,0x1a94,0x1a94,0x1a94,0x1a94, -0x1a94,0x1a94,0x1a94,0x1b3c,0x222,0x1a97,0x1a97,0x1a97,0x1929,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x192c, -0x192c,0x192c,0x192c,0x192c,0x192c,0x192c,0x1929,0x1929,0x17c4,0x17c4,0x17c4,0x17c4,0x17c1,0x17c4,0x17c4,0x17c7, -0x17ca,0x17c7,0x17c7,0x17c4,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225, -0x225,0x225,0x225,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x1821,0x1821,0x1821,0x1821,0x1818,0x1818,0x1818,0x1812, -0x1815,0x1815,0x1815,0x1a40,0x228,0x228,0x228,0x228,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e,0x181e, -0x181e,0x181e,0x228,0x228,0x228,0x228,0x181b,0x181b,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c, -0x183c,0x22b,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c, -0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x183c,0x1839,0x1827,0x1827,0x1827,0x1827, -0x1827,0x1827,0x1827,0x22b,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1839,0x182a,0x183c,0x183f,0x183f,0x1833, -0x1830,0x1830,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x1836,0x1836,0x1836,0x1836, -0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, -0x182d,0x182d,0x182d,0x182d,0x182d,0x22b,0x22b,0x22b,0x184b,0x184e,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854, -0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842, -0x1842,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad, -0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x231, -0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845, -0x1845,0x231,0x231,0x1845,0x1845,0x1845,0x1845,0x1845,0x1893,0x192f,0x1a9a,0x1a9d,0x1b45,0x234,0x234,0x234, -0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1b42,0x1b42,0x234,0x234,0x234,0x234,0x234,0x234, -0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854, -0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x1854,0x237,0x237,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848, -0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x237,0x1851,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848, -0x1848,0x1851,0x1848,0x1848,0x1851,0x1848,0x1848,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237, -0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x1857,0x23a,0x23a,0x23a, -0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a, -0x186f,0x186f,0x1860,0x185a,0x185a,0x186f,0x185d,0x1872,0x1872,0x1872,0x1872,0x1875,0x1875,0x1869,0x1866,0x1863, -0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x1aee,0x1869,0x23d,0x1863,0x1992,0x1a43, -0x1af1,0x1af1,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d, -0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d, -0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b, -0x187b,0x187b,0x187b,0x187b,0x240,0x240,0x240,0x240,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878, -0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878,0x1878, -0x1878,0x1878,0x1878,0x1878,0x240,0x240,0x240,0x240,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896, -0x1896,0x1896,0x1896,0x1896,0x1896,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0,0x1aa0, -0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935, -0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935, -0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x1935,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246, -0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288, -0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x249, -0x18d5,0x18d5,0x249,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5, -0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x249, -0x249,0x249,0x18c9,0x249,0x18c9,0x18c9,0x249,0x18c9,0x18c9,0x18c9,0x18cc,0x18c9,0x18cf,0x18cf,0x18d8,0x18c9, -0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2, -0x18d2,0x18d2,0x249,0x249,0x249,0x249,0x249,0x249,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938, -0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938, -0x1938,0x1938,0x1938,0x1938,0x24c,0x24c,0x24c,0x24c,0x1905,0x1908,0x1917,0x1917,0x1908,0x190b,0x1905,0x1902, -0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x18f0,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18ed, -0x18ed,0x18db,0x18db,0x18db,0x18f0,0x18f0,0x18f0,0x18f0,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49, -0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x258,0x258,0x258,0x258, -0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998, -0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x258,0x258,0x1aa9,0x1aa9,0x1aa9,0x1aa9,0x1b4b,0x28b,0x28b,0x28b, -0x1aa9,0x1aa9,0x1aa9,0x28b,0x28b,0x28b,0x28b,0x28b,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa, -0x19aa,0x19aa,0x19aa,0x19aa,0x19a7,0x19a7,0x19a7,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b, -0x19a7,0x19a1,0x199e,0x19a4,0x25b,0x25b,0x25b,0x25b,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad, -0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad, -0x19ad,0x19ad,0x19ad,0x25e,0x25e,0x19ad,0x19ad,0x19ad,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x261,0x19bc, -0x19bc,0x261,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc, -0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19bc,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x261, -0x19b0,0x19b0,0x261,0x19b9,0x19b9,0x19b0,0x19b9,0x19b3,0x19bc,0x261,0x261,0x261,0x261,0x261,0x261,0x261, -0x19c5,0x19c5,0x19c8,0x19c8,0x19bf,0x19bf,0x19bf,0x19bf,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264, -0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x19c2,0x264,0x264,0x264,0x264,0x264,0x264, -0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19ce,0x19cb,0x19cb,0x19cb, -0x19ce,0x19cb,0x19cb,0x19cb,0x19cb,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267, -0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7,0x19d7, -0x19d7,0x19d7,0x19d7,0x19d1,0x19d1,0x19d4,0x19d4,0x19da,0x19da,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a, -0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd, -0x19dd,0x19dd,0x19dd,0x19dd,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d, -0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0, -0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e0,0x19e3,0x19ec,0x19e0,0x19e0,0x270,0x270,0x270,0x270,0x270, -0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19f2,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273, -0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb, -0x19fb,0x19fb,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f8,0x19f8,0x19f8, -0x19f8,0x19fe,0x19fe,0x19fe,0x19fe,0x19fe,0x276,0x276,0x276,0x276,0x276,0x276,0x1a55,0x1a55,0x1a55,0x1a55, -0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55,0x1a55, -0x1a55,0x1a55,0x1a55,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a64,0x1a64,0x1a64,0x1a64, -0x1a64,0x1a64,0x1a64,0x1a64,0x27f,0x27f,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64, -0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a64,0x1a61,0x1a61,0x1a61, -0x1a58,0x1a58,0x1a58,0x1a58,0x27f,0x27f,0x1a58,0x1a58,0x1a61,0x1a61,0x1a61,0x1a61,0x1a5b,0x1a64,0x1a5e,0x1a64, -0x1a61,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f, -0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x1a70,0x1a70,0x1a70,0x1a70, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x282,0x282,0x282,0x1a67,0x1a67,0x1a67,0x1a67, -0x1a67,0x1a67,0x1a67,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a73,0x1a73,0x282,0x282,0x285,0x1a76,0x1a76,0x1a76, -0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76, -0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x1a76,0x285,0x285, -0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288, -0x1aa3,0x1aa3,0x1aa3,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288, -0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1938,0x1938,0x1938,0x1938, -0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1aa9,0x1aa9,0x1aa9,0x1b4b, -0x1b4b,0x1b4b,0x1b4b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1aa9,0x1aa9,0x1aa9,0x1aa9, -0x1aa9,0x1aa9,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x28b,0x28b,0x28b, -0x28b,0x28b,0x28b,0x28b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x28b,0x28b,0x28b,0x28b,0x28b, -0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x28b, +0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746, +0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x20d,0x1746,0x1746,0x20d,0x20d, +0x20d,0x20d,0x20d,0x1743,0x1743,0x1743,0x1743,0x1743,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x210, +0x1749,0x210,0x1749,0x1749,0x1749,0x1749,0x210,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749, +0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x210,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749,0x1749, +0x1749,0x174c,0x210,0x210,0x210,0x210,0x210,0x210,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755, +0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x213,0x213,0x213,0x213,0x213, +0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752, +0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x213,0x213,0x213,0x213,0x213, +0x213,0x213,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x175b,0x175b,0x175b,0x175b,0x1758,0x175b,0x175b,0x175e, +0x1761,0x175e,0x175e,0x175b,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216, +0x216,0x216,0x216,0x1758,0x1758,0x1758,0x1758,0x1758,0x17b8,0x17b8,0x17b8,0x17b8,0x17af,0x17af,0x17af,0x17a9, +0x17ac,0x17ac,0x17ac,0x19d4,0x219,0x219,0x219,0x219,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5,0x17b5, +0x17b5,0x17b5,0x219,0x219,0x219,0x219,0x17b2,0x17b2,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x21c,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, +0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3,0x17d0,0x17be,0x17be,0x17be,0x17be, +0x17be,0x17be,0x17be,0x21c,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17d0,0x17c1,0x17d3,0x17d6,0x17d6,0x17ca, +0x17c7,0x17c7,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x21c,0x17cd,0x17cd,0x17cd,0x17cd, +0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4, +0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x21c,0x21c,0x21c,0x17e2,0x17e5,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb, +0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9, +0x17d9,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944, +0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x222, +0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc, +0x17dc,0x222,0x222,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x182a,0x18c6,0x1a2e,0x1a31,0x1ad9,0x225,0x225,0x225, +0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x1ad6,0x1ad6,0x225,0x225,0x225,0x225,0x225,0x225, +0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb, +0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x228,0x228,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df, +0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x228,0x17e8,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df, +0x17df,0x17e8,0x17df,0x17df,0x17e8,0x17df,0x17df,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228, +0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x22b,0x22b,0x22b, +0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b, +0x1806,0x1806,0x17f7,0x17f1,0x17f1,0x1806,0x17f4,0x1809,0x1809,0x1809,0x1809,0x180c,0x180c,0x1800,0x17fd,0x17fa, +0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1a82,0x1800,0x22e,0x17fa,0x1929,0x19d7, +0x1a85,0x1a85,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e, +0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e, +0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812, +0x1812,0x1812,0x1812,0x1812,0x231,0x231,0x231,0x231,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f, +0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f, +0x180f,0x180f,0x180f,0x180f,0x231,0x231,0x231,0x231,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x19a7,0x19a7,0x19a7,0x19a7,0x19a7,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34,0x1a34, +0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x1ba8,0x1ba8,0x1ba8,0x237,0x237,0x237,0x237,0x237, +0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x237,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279, +0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x23a, +0x186c,0x186c,0x23a,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c, +0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x186c,0x1860,0x1860,0x1860,0x1860,0x1860,0x1860,0x23a, +0x23a,0x23a,0x1860,0x23a,0x1860,0x1860,0x23a,0x1860,0x1860,0x1860,0x1863,0x1860,0x1866,0x1866,0x186f,0x1860, +0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869,0x1869, +0x1869,0x1869,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x23d,0x23d,0x23d,0x23d,0x187e,0x1881,0x1881,0x240,0x240,0x240,0x240,0x240, +0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84, +0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1890,0x1890,0x1890,0x1890,0x1890,0x1890,0x1890,0x1890, +0x1890,0x1890,0x1890,0x243,0x243,0x243,0x243,0x243,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51, +0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x189c,0x189f,0x18ae,0x18ae,0x189f,0x18a2,0x189c,0x1899, +0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x1887,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1884, +0x1884,0x1872,0x1872,0x1872,0x1887,0x1887,0x1887,0x1887,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd, +0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x249,0x249,0x249,0x249, +0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x192f, +0x192f,0x192f,0x192f,0x192f,0x192f,0x192f,0x249,0x249,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1adf,0x27c,0x27c,0x27c, +0x1a3d,0x1a3d,0x1a3d,0x1bab,0x1bab,0x27c,0x27c,0x27c,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941, +0x1941,0x1941,0x1941,0x1941,0x193e,0x193e,0x193e,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932, +0x193e,0x1938,0x1935,0x193b,0x24c,0x24c,0x24c,0x24c,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944, +0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944, +0x1944,0x1944,0x1944,0x24f,0x24f,0x1944,0x1944,0x1944,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x252,0x1953, +0x1953,0x252,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953, +0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1950,0x1950,0x1950,0x1950,0x1950,0x252, +0x1947,0x1947,0x252,0x1950,0x1950,0x1947,0x1950,0x194a,0x1953,0x252,0x252,0x252,0x252,0x252,0x252,0x252, +0x195c,0x195c,0x195f,0x195f,0x1956,0x1956,0x1956,0x1956,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255, +0x1959,0x1959,0x1959,0x1959,0x1959,0x1959,0x1959,0x1959,0x1959,0x1959,0x255,0x255,0x255,0x255,0x255,0x255, +0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1965,0x1962,0x1962,0x1962, +0x1965,0x1962,0x1962,0x1962,0x1962,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258, +0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e, +0x196e,0x196e,0x196e,0x1968,0x1968,0x196b,0x196b,0x1971,0x1971,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b, +0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974, +0x1974,0x1974,0x1974,0x1974,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e, +0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977, +0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x1977,0x197a,0x1983,0x1977,0x1977,0x261,0x261,0x261,0x261,0x261, +0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1989,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264, +0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992, +0x1992,0x1992,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198c,0x198f,0x198f,0x198f, +0x198f,0x1995,0x1995,0x1995,0x1995,0x1995,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267, +0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72, +0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x1b72,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9, +0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x26d, +0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8, +0x270,0x270,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8, +0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f8,0x19f5,0x19f5,0x19f5,0x19ec,0x19ec,0x19ec,0x19ec, +0x270,0x270,0x19ec,0x19ec,0x19f5,0x19f5,0x19f5,0x19f5,0x19ef,0x19f8,0x19f2,0x19f8,0x19f5,0x270,0x270,0x270, +0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270, +0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04, +0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x273,0x273,0x273,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x1a04, +0x1a04,0x1a04,0x1a04,0x1a04,0x1a07,0x1a07,0x273,0x273,0x276,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a, +0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a, +0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x276,0x276,0x279,0x279,0x279,0x279, +0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a37,0x1a37,0x1a37,0x279, +0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a3a,0x1a3a,0x1a3a,0x1a3a, +0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x1a3d,0x1a3d,0x1a3d,0x1adf,0x1adf,0x1adf,0x1adf,0x27c, +0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1a3d,0x1adf,0x1adf, +0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1bab,0x1bab,0x1bab,0x1bab,0x27c,0x27c,0x27c, +0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1bab,0x1bab,0x1bab,0x1bab,0x27c,0x27c,0x27c,0x27c,0x27c, +0x1adf,0x1adf,0x1adf,0x1bae,0x1bae,0x1bae,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c, +0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1adf,0x1bab,0x1bab,0x1bab,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c, +0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c, +0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c, +0x1a13,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d, +0x1a0d,0x1a0d,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x1a10, +0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a16,0x1a16,0x1a16,0x1a16, +0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x282,0x282,0x282,0x282,0x282,0x1a19, +0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x285,0x285,0x285,0x285, +0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285, +0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x288,0x288,0x1aa6,0x288,0x288,0x1aa6,0x1aa6,0x1aa6,0x1aa6, +0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x288,0x1aa6,0x1aa6,0x288,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6, +0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1aa6,0x1a8e,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x288,0x1a9d, +0x1aa0,0x288,0x288,0x1a8e,0x1a8e,0x1aa3,0x1a94,0x1aa9,0x1a9d,0x1aa9,0x1a9d,0x1a91,0x1aac,0x1a97,0x1aac,0x288, +0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a, +0x1a9a,0x1a9a,0x288,0x288,0x288,0x288,0x288,0x288,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5, +0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x28b,0x28b, 0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b, 0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b, -0x1a7f,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79, -0x1a79,0x1a79,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x1a7c, -0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a82,0x1a82,0x1a82,0x1a82, -0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x1a88,0x291,0x291,0x291,0x291,0x291,0x1a85, -0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x294,0x294,0x294,0x294, +0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2, +0x1ab2,0x1ab2,0x1ab2,0x291,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2, +0x1ab2,0x1ab2,0x1ab2,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291, +0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x1ab5,0x1ab5,0x1ab5,0x1ab5,0x1ab5,0x1ab5,0x1ab5,0x1ab5, +0x1ab5,0x1ab5,0x291,0x291,0x291,0x291,0x291,0x291,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8, +0x1ae8,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294, 0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294, -0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x297,0x297,0x1b12,0x297,0x297,0x1b12,0x1b12,0x1b12,0x1b12, -0x1b12,0x1b12,0x1b12,0x1b12,0x297,0x1b12,0x1b12,0x297,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12, -0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1b12,0x1afa,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x297,0x1b09, -0x1b0c,0x297,0x297,0x1afa,0x1afa,0x1b0f,0x1b00,0x1b15,0x1b09,0x1b15,0x1b09,0x1afd,0x1b18,0x1b03,0x1b18,0x297, -0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06, -0x1b06,0x1b06,0x297,0x297,0x297,0x297,0x297,0x297,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51, -0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x29a,0x29a, -0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a, -0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a, -0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, -0x1b1e,0x1b1e,0x1b1e,0x2a0,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, -0x1b1e,0x1b1e,0x1b1e,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0, -0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21, -0x1b21,0x1b21,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x2a0,0x1b54,0x1b54,0x1b54,0x1b54,0x1b54,0x1b54,0x1b54,0x1b54, -0x1b54,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3, -0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3, -0x2a3,0x2a3,0x2a3,0x2a3,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x2a6,0x1b24, -0x1b24,0x1b27,0x2a6,0x2a6,0x1b2a,0x1b2a,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6, -0x2a6,0x2a6,0x2a6,0x2a6,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, -0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, -0x2a9,0x2a9,0x2a9,0x2a9,0x1932,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1, -0x2c1,0x2c1,0x2c1,0x2c1,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, +0x294,0x294,0x294,0x294,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x297,0x1ab8, +0x1ab8,0x1abb,0x297,0x297,0x1abe,0x1abe,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297, +0x297,0x297,0x297,0x297,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b4e,0x1b51,0x1b51,0x1b51, +0x1b51,0x1b51,0x1b51,0x29a,0x1b54,0x1b54,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x1b4b,0x1b4b,0x1b4b,0x1b4b, +0x1b4b,0x1b4b,0x1b4b,0x1b4b,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a, +0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b57,0x1b57,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d,0x29d, +0x29d,0x29d,0x29d,0x29d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x2a0,0x1b5d,0x1b5d,0x1b5d,0x1b5d, +0x2a0,0x1b5d,0x1b5d,0x2a0,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d, +0x1b5d,0x1b5d,0x1b5d,0x2a0,0x1b60,0x1b66,0x1b66,0x1b63,0x1b63,0x1b63,0x2a6,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63, +0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63, +0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x2a6,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x2a6, +0x2a6,0x2a6,0x2a6,0x2a6,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b6c,0x1b69, +0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69, +0x1b69,0x1b69,0x1b69,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, 0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, -0x2a9,0x2a9,0x97b,0x97b,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x2c4, -0x2c4,0x2c4,0x2c4,0x2c4,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9, -0x2a9,0x2a9,0x2a9,0x2a9,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x1a04, -0x1a04,0x1a04,0x1a04,0x1a04,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33,0x1b33, -0x1b33,0x2ac,0x2ac,0x2ac,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0x12e4, -0x12e4,0x12e4,0x2af,0x2af,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, -0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0x2af,0x2af, -0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af, -0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x2b2,0x2b2, -0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac, -0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0x2b5,0x2b5, -0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9, -0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8, -0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416, -0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x2bb,0x2bb, -0x17dc,0x17dc,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be, -0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932, -0x3cc,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3c0,0x3cc,0x3cc,0x3cc,0x3cc,0x3c6,0x1158,0x133e, -0x3cf,0x945,0x948,0x3bd,0x3bd,0x1155,0x133b,0x133b,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2,0x3d2, -0x1155,0x3c0,0x3c0,0x3cc,0xce1,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf, -0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf, -0x3cf,0x3cf,0x3c0,0x3c0,0x8d0,0x8d3,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963,0x963, -0x3c9,0xfba,0xfb7,0x1341,0x1341,0x1341,0x1341,0x1341,0x1506,0x115b,0x115b,0xf0c,0xf0c,0xdda,0xf0c,0xf0c, -0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3d2,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf, -0x3cf,0x3d2,0x3cf,0x3cf,0x3d2,0x3cf,0x3cf,0x3cf,0x3cf,0x3cf,0x133b,0x133e,0x3c3,0x3cf,0x3cc,0x3cc, -0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x1347,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e, -0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x46e,0x1347,0x18ae,0x18ae,0xfd8,0x45f,0x468, -0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa, -0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0xbc7,0xbc7,0xde6,0xde6,0x8d6,0xde9,0x1428,0x1428,0x1428, -0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad, -0x4b3,0x4b3,0x4b3,0x1170,0x1170,0x1170,0x1170,0x1170,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0, -0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0, -0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x116d,0x116d,0x116d,0x116d,0x116d,0x116d, -0x4b6,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3, -0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3, -0x4b3,0x4b3,0x4b3,0x4b3,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9, -0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9, -0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4bc,0x9bd,0x1005,0x1005,0x1008,0x1005, -0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9, -0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x4bf,0x4b9,0x1008,0x1005,0x1008,0x1005,0x1008,0x1005, -0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce, -0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce, -0x6ae,0x6ae,0x6b1,0x4e9,0x6bd,0x6ba,0x6ba,0x6b7,0x513,0x513,0x4d1,0x4d1,0x4d1,0x4d1,0x4d1,0xb58, -0x6c0,0x4f5,0x6d8,0x6db,0x50a,0x6c0,0x4f8,0x4f8,0x4e9,0x504,0x504,0x6ae,0x510,0x50d,0x6b4,0x4e3, -0x4da,0x4da,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0x4e0,0x4dd,0x4dd,0x4dd,0x4d4,0x51c,0x519,0x516,0x516, -0x6cc,0x4fe,0x4fb,0x6c9,0x6c6,0x6c3,0x6d5,0x4ec,0x6d2,0x6d2,0x501,0x504,0x6cf,0x6cf,0x501,0x504, -0x4e6,0x4e9,0x4e9,0x4e9,0x507,0x4f2,0x4ef,0xbdc,0xaf2,0xaf5,0xaef,0xaef,0xaef,0xaef,0xbd3,0xbd3, -0xbd3,0xbd3,0xbd9,0xd0e,0xd0b,0xdf5,0xdf8,0xbd6,0xdf8,0xdf8,0xdf8,0xdf8,0xdf5,0xdf8,0xdf8,0xbd0, -0x540,0x540,0x540,0x540,0x540,0x540,0x540,0x53d,0x543,0x75c,0x540,0x9c0,0x9e1,0xaf8,0xaf8,0xaf8, -0xbe2,0xbe2,0xdfe,0xdfe,0xdfe,0xdfe,0x1179,0x117c,0x117c,0x135c,0x14f4,0x151e,0x1521,0x1521,0x1734,0x18b1, -0x54f,0x54f,0x567,0x6ea,0x54c,0x6e7,0x54f,0x564,0x54c,0x6ea,0x55e,0x567,0x567,0x567,0x55e,0x55e, -0x567,0x567,0x567,0x6f3,0x54c,0x567,0x6ed,0x54c,0x55b,0x567,0x567,0x567,0x567,0x567,0x54c,0x54c, -0x552,0x6e7,0x6f0,0x54c,0x567,0x54c,0x6f6,0x54c,0x567,0x555,0x56d,0x6f9,0x567,0x567,0x558,0x55e, -0x567,0x567,0x56a,0x567,0x55e,0x561,0x561,0x561,0x561,0xb04,0xb01,0xd11,0xe07,0xbf7,0xbfa,0xbfa, -0xbf4,0xbf1,0xbf1,0xbf1,0xbf1,0xbfa,0xbf7,0xbf7,0xbf7,0xbf7,0xbee,0xbf1,0xe04,0xf18,0xf1b,0x100e, -0x117f,0x117f,0x117f,0x6ff,0x6fc,0x570,0x573,0x573,0x573,0x573,0x573,0x6fc,0x6ff,0x6ff,0x6fc,0x573, -0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x57c,0x57c,0x57c,0x57c, -0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x576,0x576,0x576,0x576,0x576,0x576, -0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x57f,0x588,0x588,0x582,0x582,0x582,0x585,0x57f, -0x582,0x582,0x57f,0x57f,0x57f,0x57f,0x582,0x582,0x708,0x708,0x57f,0x57f,0x582,0x582,0x582,0x582, -0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x585,0x585,0x585,0x582,0x582,0x70b,0x582, -0x70b,0x582,0x582,0x582,0x582,0x582,0x582,0x582,0x57f,0x582,0x57f,0x57f,0x57f,0x57f,0x57f,0x57f, -0x582,0x582,0x57f,0x708,0x57f,0x57f,0x57f,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a, -0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0xbfd,0x711,0x58b,0x711,0x711, -0x58e,0x58b,0x58b,0x711,0x711,0x58e,0x58b,0x711,0x58e,0x58b,0x58b,0x711,0x58b,0x711,0x59a,0x597, -0x58b,0x711,0x58b,0x58b,0x58b,0x58b,0x711,0x58b,0x58b,0x711,0x711,0x711,0x711,0x58b,0x58b,0x711, -0x58e,0x711,0x58e,0x711,0x711,0x711,0x711,0x711,0x717,0x591,0x711,0x591,0x591,0x58b,0x58b,0x58b, -0x711,0x711,0x711,0x711,0x58b,0x58b,0x58b,0x58b,0x711,0x711,0x58b,0x58b,0x58b,0x58e,0x58b,0x58b, -0x58e,0x58b,0x58b,0x58e,0x711,0x58e,0x58b,0x58b,0x711,0x58b,0x58b,0x58b,0x58b,0x58b,0x711,0x58b, -0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x714,0x711,0x58e,0x58b, -0x711,0x711,0x711,0x711,0x58b,0x58b,0x711,0x711,0x58b,0x58e,0x714,0x714,0x58e,0x58e,0x58b,0x58b, -0x58e,0x58e,0x58b,0x58b,0x58e,0x58e,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58e,0x58e,0x711,0x711, -0x58e,0x58e,0x711,0x711,0x58e,0x58e,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b, -0x58b,0x711,0x58b,0x58b,0x58b,0x711,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x711,0x58b,0x58b, -0x58b,0x58b,0x58b,0x58b,0x58e,0x58e,0x58e,0x58e,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b, -0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x711,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b, -0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b, -0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58e,0x58e,0x58e,0x58e,0x58b,0x58b,0x58b,0x58b, -0x58b,0x58b,0x58e,0x58e,0x58e,0x58e,0x58b,0x594,0x58b,0x58b,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00, -0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0xc00,0x59d,0xb0d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d, -0x5a9,0x5a6,0x5a9,0x5a6,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x71a,0x59d,0x59d,0x59d,0x59d,0x59d, -0x59d,0x59d,0x81f,0x81f,0x59d,0x59d,0x59d,0x59d,0x5a3,0x5a3,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d, -0x5a0,0x825,0x822,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d, -0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d, -0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0xb0d,0xc06,0xb0d,0xb0d,0xb0d,0x5ac,0x5ac,0x5ac,0x5ac, -0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac, -0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x5ac,0x723,0x723,0x723,0x723, -0x723,0x723,0x723,0x723,0x723,0x723,0x5b2,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f, -0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xd89,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x5b5,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x5b8,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x5b8,0x5b8,0x5b8,0x5b8,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72f,0x72f,0x72f,0x72f, -0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x72f,0x5bb,0x5bb,0x72f,0x72f, -0x72f,0x72f,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0x735,0x735,0x5be,0x732, -0x732,0x732,0x732,0x732,0x732,0x732,0x5c1,0x5c1,0x5be,0x5be,0x5c4,0x5c4,0x5c4,0x5c4,0x735,0x735, -0x5c4,0x5c4,0x738,0x735,0x5be,0x5be,0x5be,0x5be,0x735,0x735,0x5c4,0x5c4,0x738,0x735,0x5be,0x5be, -0x5be,0x5be,0x735,0x735,0x732,0x5be,0x5c4,0x735,0x5be,0x5be,0x732,0x735,0x735,0x735,0x5c4,0x5c4, -0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x735,0x732, -0x735,0x732,0x5be,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5be,0x5be,0x732,0xb16,0xb16,0xb16,0xb16, -0xb16,0xb16,0xb16,0xb16,0xc0c,0xc0c,0xc0c,0xc0f,0xc0f,0xc8a,0xc8a,0xc0c,0x5d3,0x5d3,0x5d3,0x5d3, -0x5d0,0x74a,0x747,0x5ca,0x5ca,0x73b,0x5ca,0x5ca,0x5ca,0x5ca,0x741,0x73b,0x5ca,0x5d0,0x5ca,0x5c7, -0xd92,0xd92,0xc15,0xc15,0xe13,0xb19,0x5cd,0x5cd,0x73e,0x5d6,0x73e,0x5cd,0x5d0,0x5ca,0x5d0,0x5d0, -0x5ca,0x5ca,0x5d0,0x5ca,0x5ca,0x5ca,0x5d0,0x5ca,0x5ca,0x5ca,0x5d0,0x5d0,0x5ca,0x5ca,0x5ca,0x5ca, -0x5ca,0x5ca,0x5ca,0x5ca,0x5d0,0x5d3,0x5d3,0x5cd,0x5ca,0x5ca,0x5ca,0x5ca,0x74d,0x5ca,0x74d,0x5ca, -0x5ca,0x5ca,0x5ca,0x5ca,0x828,0x828,0x828,0x828,0x828,0x828,0x828,0x828,0x828,0x828,0x828,0x828, -0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5d0,0x74d,0x74a,0x5d9,0x74d, -0x73b,0x741,0x5d0,0x73b,0x744,0x73b,0x73b,0x5ca,0x73b,0x74a,0x5d9,0x74a,0xb19,0xb19,0xc18,0xc18, -0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc1b,0xc18,0xc18,0xe10,0xec7,0x5dc,0x5dc,0x5dc,0x5dc, -0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc,0x5dc, -0x5df,0x13e6,0x13e6,0x13e6,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x152a,0x5eb,0x5f4,0x5eb, -0x5eb,0x13e6,0x5df,0x5df,0x5f4,0x5f4,0x13e9,0x13e9,0x5f7,0x5f7,0x5e8,0x5ee,0x5e8,0x5e8,0x5ee,0x5df, -0x5ee,0x5df,0x5ee,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5ee,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df, -0x13e6,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5ee,0x5ee,0x5df,0x5df,0x5df, -0x5df,0x5df,0x5df,0x5df,0x5df,0x753,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5ee,0x5df,0x5df,0x5ee, -0x5df,0x5df,0x5df,0x5df,0x13e6,0x5df,0x13e6,0x5df,0x5df,0x5df,0x5df,0x13e6,0x13e6,0x13e6,0x5df,0x12de, -0x5df,0x5df,0x5df,0x5e5,0x5e5,0x5e5,0x5e5,0x1368,0x1368,0x5df,0x5e2,0x5f1,0x5f4,0x5e8,0x5e8,0x5e8, -0xc21,0xc1e,0xc21,0xc1e,0xc21,0xc1e,0xc21,0xc1e,0xc21,0xc1e,0xc21,0xc1e,0xc21,0xc1e,0x750,0x750, -0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x5df,0x5ee,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df, -0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x13e6,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df, -0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x5df,0x13e6,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x621,0x621,0x621,0x621, -0x621,0x621,0x621,0x621,0x618,0x61e,0x60f,0x612,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x615,0x615,0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618, -0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618, -0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x618, -0x61e,0x618,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61b,0x621,0x61e,0x618, -0x61b,0x621,0x61e,0x618,0x61e,0x618,0x61b,0x621,0x61e,0x618,0x61e,0x618,0x61b,0x621,0x61e,0x618, -0x61b,0x621,0x61e,0x618,0x61e,0x618,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b, -0x136b,0x136b,0x136b,0x136b,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61b,0x621,0x61b,0x621,0x61e,0x618, -0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61e,0x618,0x61b,0x61e,0x618,0x61b, -0x61e,0x618,0x61b,0x621,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x61b, -0x61b,0x61b,0x61b,0x61b,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x61b,0x61b,0x618,0x61b,0x618,0x61b,0x618,0x618,0x61b,0x618,0x618,0x61b, -0x618,0x61b,0x618,0x618,0x61b,0x618,0x61b,0x61b,0x618,0x618,0x618,0x61b,0x618,0x618,0x618,0x618, -0x618,0x61b,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618, -0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x61b,0x61b,0x618,0x618,0x61b,0x618,0x61b,0x618, -0x618,0x618,0x618,0x618,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b, -0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b, -0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x61b,0x621,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621, -0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x621,0x61e,0x61e,0x61e, -0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x61e,0x624,0x624,0x624,0x624,0x101a,0x101a,0x101a,0x152d, -0x152d,0x152d,0x152d,0x152d,0x152d,0x152d,0x173a,0x173a,0x885,0x88b,0x88b,0x897,0x897,0x888,0x87f,0x888, -0x87f,0x888,0x87f,0x888,0x87f,0x888,0x87f,0x888,0x633,0x633,0x62d,0x633,0x62d,0x633,0x62d,0x633, -0x62d,0x633,0x62d,0x630,0x636,0x633,0x62d,0x633,0x62d,0x630,0x636,0x633,0x62d,0x633,0x62d,0x630, -0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x633,0x62d,0x633,0x62d,0x633, -0x62d,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630, -0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630,0x636,0x633,0x62d,0x630, -0x636,0x633,0x62d,0x630,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720, -0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d, -0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d, -0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x726,0x726,0x729,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726,0x726, -0x726,0x726,0x726,0x726,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723, -0x723,0x723,0x723,0x723,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c,0x72c, -0x72c,0x72c,0x72c,0x72c,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756, -0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756,0x756, -0x756,0x756,0x756,0x756,0xc78,0x8e8,0x8e2,0x8df,0x8e5,0x8dc,0x76b,0x76e,0x76e,0x76e,0x76e,0x76e, -0x76e,0x76e,0x76e,0x76e,0x8ee,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b, -0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x76b, -0x76b,0x76b,0x76b,0x76b,0x76b,0x76b,0x8eb,0x8eb,0x771,0x8fd,0x900,0x906,0x82b,0x837,0x91b,0x834, -0x8f4,0x8f1,0x8f4,0x8f1,0x8fa,0x8f7,0x8fa,0x8f7,0x8f4,0x8f1,0x831,0x906,0x8f4,0x8f1,0x8f4,0x8f1, -0x8f4,0x8f1,0x8f4,0x8f1,0x909,0x912,0x90f,0x90f,0x777,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7b3,0x7ad, -0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad,0x7ad, -0x7ad,0x7ad,0x7ad,0x77a,0x795,0x774,0x79b,0x79e,0x798,0x7b0,0x7b0,0x7b0,0x7b0,0x7b0,0x7b0,0x7aa, -0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa,0x7aa, -0x7aa,0x7aa,0x7aa,0x77a,0x795,0x774,0x795,0xc7b,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819, -0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819, -0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x819,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x81c, -0x831,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x834,0x951,0x951,0x951,0x951,0x83a,0x83a, -0x90c,0x918,0x918,0x918,0x918,0x915,0x82e,0x903,0xb3d,0xb3d,0xb3d,0xc8d,0xcab,0xca8,0xb5b,0x8d9, -0x840,0x83d,0x840,0x843,0x83d,0x840,0x83d,0x840,0x83d,0x840,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d, -0x840,0x840,0x83d,0x840,0x840,0x83d,0x840,0x840,0x83d,0x840,0x840,0x83d,0x840,0x840,0x83d,0x83d, -0xcae,0x852,0x84c,0x852,0x84c,0x852,0x84c,0x852,0x84c,0x852,0x84c,0x84c,0x84f,0x84c,0x84f,0x84c, -0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c, -0x84f,0x84c,0x84f,0x852,0x84c,0x84f,0x84c,0x84f,0x84c,0x84f,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c, -0x84f,0x84f,0x84c,0x84f,0x84f,0x84c,0x84f,0x84f,0x84c,0x84f,0x84f,0x84c,0x84f,0x84f,0x84c,0x84c, -0x84c,0x84c,0x84c,0x852,0x84c,0x852,0x84c,0x852,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x852,0x84c, -0x84c,0x84c,0x84c,0x84c,0x84f,0x852,0x852,0x84f,0x84f,0x84f,0x84f,0x921,0x924,0x855,0x858,0xc96, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, -0x861,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e, -0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x85e,0x86a,0x86a,0x86a,0x86a, -0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a, -0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0x86a,0xd9b,0xd9b,0xeca,0x864,0x92d,0x92d,0x92d,0x92d, -0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0xd95,0xd95,0xd95,0xd95,0x86d,0x86d,0x86d,0x86d, -0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d, -0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x86d,0x1ab2,0x936,0x936,0x936,0x936, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x870,0x870,0x870, -0x870,0x870,0x870,0xd9e,0xd9e,0xd9e,0xd9e,0x939,0x939,0x939,0x939,0x939,0x870,0x870,0x870,0x870, -0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870, -0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0x870,0xd9e,0xd9e, -0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873, -0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873,0x873, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876, -0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876, -0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0x876,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd, -0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd,0xecd, -0x113d,0x113d,0x113d,0x113d,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x87c,0x87c,0x879,0x87c,0x879,0x87c,0x87c,0x879,0x879,0x879, -0x879,0x879,0x879,0x879,0x879,0x879,0x879,0x87c,0x879,0x87c,0x879,0x87c,0x87c,0x879,0x879,0x87c, -0x87c,0x87c,0x879,0x879,0x879,0x879,0x14e5,0x14e5,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f, -0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d, -0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d, -0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x92d,0x131d,0x131d,0x131d,0x131d,0x12bd,0x12bd,0x12bd,0x12bd, -0x12bd,0x12bd,0x12bd,0x12bd,0xd95,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99, -0xc99,0xc99,0xc99,0xc99,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930, -0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x933,0x930,0x933,0x930,0x930, -0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930,0x930, -0x930,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99,0xc99, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936, -0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0xd9e, -0x9b7,0x999,0x999,0x999,0x999,0x993,0x999,0x999,0x9ab,0x999,0x999,0x996,0x9a2,0x9a8,0x9a8,0x9a8, -0x9a8,0x9a8,0x9ab,0x993,0x99f,0x993,0x993,0x993,0x98a,0x98a,0x993,0x993,0x993,0x993,0x993,0x993, -0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x993,0x993,0x993,0x993,0x993,0x993, -0x993,0x993,0x993,0x993,0x996,0x98a,0x993,0x98a,0x993,0x98a,0x9a5,0x99c,0x9a5,0x99c,0x9b4,0x9b4, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3,0x9c3, -0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, -0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6,0x9c6, -0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, -0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9,0x9c9, -0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2, -0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9cc,0x9cc, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9cf,0x9cf, -0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2, -0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2,0x9d2, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5, -0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5, -0x9d8,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db, -0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9d8,0x9db,0x9db,0x9db, -0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db, -0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0x9db,0xa68,0xa68,0xfff,0xa68,0xa68,0xa68,0xa6b,0xa68, -0xfff,0xa68,0xa68,0xff6,0xa62,0xa56,0xa56,0xa56,0xa56,0xa65,0xa56,0xfe7,0xfe7,0xfe7,0xa56,0xa59, -0xa62,0xa5c,0xfed,0xff9,0xff9,0xfe7,0xfe7,0xfff,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61,0xb61, -0xb61,0xb61,0xa6e,0xa6e,0xa5f,0xa5f,0xa5f,0xa5f,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa65,0xa65, -0xa56,0xa56,0xfff,0xfff,0xfff,0xfff,0xfe7,0xfe7,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68, -0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68, -0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xdf2, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, -0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, -0xa7d,0xa7d,0xa7d,0xdf2,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d, -0xa7d,0xa7d,0xa7d,0xa7d,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83, -0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83, -0xa83,0xa83,0xa83,0xa83,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89, -0xa89,0xa86,0xa8c,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0x1176,0x1176,0x1176,0x1176,0x1176, -0x1176,0x1176,0x1176,0x1176,0x1173,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89, -0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89, -0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e, -0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xa9e,0xac2,0xac2,0xac2,0xac5,0xac5,0xac2,0xac2,0xac2, -0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xaaa,0xaaa,0xabf,0xaa1, -0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xabf,0xabf,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2, -0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2, -0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xac2,0xae3,0xae3,0xae3,0xae3,0xae3,0xace,0xace,0xae3, -0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xae3,0xae3,0xae3,0xae6,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3,0xae3, -0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb10,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d, -0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xc06,0xc06,0xc06,0xc06,0xc06, -0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c, -0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c, -0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e, -0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e,0xb2e, -0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34, +0x2a9,0x2a9,0x2a9,0x2a9,0x1b72,0x1b72,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b75,0x1b75,0x1b75,0x1b75,0x2ac,0x2ac, +0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac, +0x2ac,0x2ac,0x2ac,0x2ac,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, +0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b, +0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b, +0x1b7b,0x1b7b,0x1b7b,0x2af,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x1b78,0x2af,0x2af, +0x2af,0x2af,0x2af,0x2af,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542, +0x1542,0x1542,0x1542,0x1542,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81, +0x1b81,0x1b81,0x1b7e,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2, +0x2b2,0x2b2,0x2b2,0x2b2,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x2b5, +0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x2b5,0x1b8a,0x1b8a,0x2b5,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87, +0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2b5,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87, +0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2b5,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2b5,0x1b87, +0x1b87,0x2b5,0x2b5,0x2b5,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90, +0x1b90,0x1b90,0x2b8,0x2b8,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90, +0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8, +0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d, +0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb, +0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb, +0x18c9,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd, +0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb, +0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x94e,0x94e, +0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0, +0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb, +0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x128d,0x128d,0x128d,0x2be,0x2be, +0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82, +0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be, +0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be, +0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0xb76,0xb76,0xb76,0xb76, +0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, +0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0x2c1,0x2c1,0x129f,0x129f,0x129f,0x129f, +0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f, +0x129f,0x1b99,0x1b99,0x1b99,0x1b99,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x13b6,0x13b6,0x13b6,0x13b6, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x2c7,0x2c7,0x1773,0x1773,0x2ca,0x2ca, +0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x3d8,0x3cc,0x3cc,0x3cc, +0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3d8,0x3d8,0x3d8,0x3d8,0x3d2,0x110a,0x12e4,0x3db,0x918,0x91b,0x3c9, +0x3c9,0x1107,0x12e1,0x12e1,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x3de,0x1107,0x3cc,0x3cc,0x3d8, +0xc9c,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db, +0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3cc,0x3cc, +0x8a0,0x8a3,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x936,0x3d5,0xf6c,0xf69,0x12e7, +0x12e7,0x12e7,0x12e7,0x12e7,0x14a6,0x110d,0x110d,0xebe,0xebe,0xd8f,0xebe,0xebe,0x3db,0x3db,0x3db,0x3db, +0x3db,0x3db,0x3db,0x3db,0x3db,0x3de,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3de,0x3db,0x3db, +0x3de,0x3db,0x3db,0x3db,0x3db,0x3db,0x12e1,0x12e4,0x3cf,0x3db,0x3d8,0x3d8,0x47a,0x47a,0x47a,0x47a, +0x47a,0x47a,0x47a,0x47a,0x47a,0x12ed,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x47a, +0x47a,0x47a,0x47a,0x47a,0x47a,0x47a,0x12ed,0x1845,0x1845,0xf8a,0x46b,0x474,0x4b6,0x4b6,0x4b6,0x4b6, +0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6,0x4b6, +0x4b6,0x4b6,0x4b6,0xb91,0xb91,0xd9b,0xd9b,0x8a6,0xd9e,0x13c8,0x13c8,0x13c8,0x4b9,0x4b9,0x4b9,0x4b9, +0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9, +0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4bf,0x4bf,0x4bf,0x1122, +0x1122,0x1122,0x1122,0x1122,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc, +0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc, +0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x4bc,0x111f,0x111f,0x111f,0x111f,0x111f,0x111f,0x4c2,0x4bf,0x4bf,0x4bf, +0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, +0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf, +0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5, +0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5, +0x4cb,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c8,0x990,0xfb7,0xfb7,0xfba,0xfb7,0x4cb,0x4c5,0x4cb,0x4c5, +0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5, +0x4cb,0x4c5,0x4cb,0x4c5,0x4cb,0x4c5,0xfba,0xfb7,0xfba,0xfb7,0xfba,0xfb7,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4d7,0x4d7,0x4d7,0x4d7, +0x4d7,0x4d7,0x4d7,0x4d7,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x4da,0x696,0x696,0x699,0x4f5, +0x6a5,0x6a2,0x6a2,0x69f,0x51f,0x51f,0x4dd,0x4dd,0x4dd,0x4dd,0x4dd,0xb22,0x6a8,0x501,0x6c0,0x6c3, +0x516,0x6a8,0x504,0x504,0x4f5,0x510,0x510,0x696,0x51c,0x519,0x69c,0x4ef,0x4e6,0x4e6,0x4e9,0x4e9, +0x4e9,0x4e9,0x4e9,0x4ec,0x4e9,0x4e9,0x4e9,0x4e0,0x528,0x525,0x522,0x522,0x6b4,0x50a,0x507,0x6b1, +0x6ae,0x6ab,0x6bd,0x4f8,0x6ba,0x6ba,0x50d,0x510,0x6b7,0x6b7,0x50d,0x510,0x4f2,0x4f5,0x4f5,0x4f5, +0x513,0x4fe,0x4fb,0xba6,0xac5,0xac5,0xac2,0xac2,0xac2,0xac2,0xb9d,0xb9d,0xb9d,0xb9d,0xba3,0xcc9, +0xcc6,0xdaa,0xdad,0xba0,0xdad,0xdad,0xdad,0xdad,0xdaa,0xdad,0xdad,0xb9a,0x54c,0x54c,0x54c,0x54c, +0x54c,0x54c,0x54c,0x549,0x54f,0x72f,0x54c,0x993,0x9b4,0xac8,0xac8,0xac8,0xbac,0xbac,0xdb3,0xdb3, +0xdb3,0xdb3,0x112b,0x112e,0x112e,0x1302,0x1494,0x14be,0x14c1,0x14c1,0x16c8,0x1848,0x55b,0x55b,0x573,0x6d5, +0x558,0x6cf,0x55b,0x570,0x558,0x6d5,0x56a,0x573,0x573,0x573,0x56a,0x56a,0x573,0x573,0x573,0x6db, +0x558,0x573,0x6d8,0x558,0x567,0x573,0x573,0x573,0x573,0x573,0x558,0x558,0x55e,0x6cf,0x6d2,0x558, +0x573,0x558,0x6de,0x558,0x573,0x561,0x579,0x6e1,0x573,0x573,0x564,0x56a,0x573,0x573,0x576,0x573, +0x56a,0x56d,0x56d,0x56d,0x56d,0xad1,0xace,0xccc,0xdbc,0xbc1,0xbc4,0xbc4,0xbbe,0xbbb,0xbbb,0xbbb, +0xbbb,0xbc4,0xbc1,0xbc1,0xbc1,0xbc1,0xbb8,0xbbb,0xdb9,0xeca,0xecd,0xfc0,0x1131,0x1131,0x1131,0x6e7, +0x6e4,0x57c,0x57f,0x57f,0x57f,0x57f,0x57f,0x6e4,0x6e7,0x6e7,0x6e4,0x57f,0x6ed,0x6ed,0x6ed,0x6ed, +0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x6ed,0x588,0x588,0x588,0x588,0x6ea,0x6ea,0x6ea,0x6ea, +0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x6ea,0x582,0x582,0x582,0x582,0x582,0x582,0x58e,0x58e,0x58e,0x58e, +0x58e,0x58e,0x58e,0x58e,0x58b,0x58e,0x58e,0x58e,0x58e,0x58e,0x591,0x58b,0x58e,0x58e,0x58b,0x58b, +0x58b,0x58b,0x58e,0x58e,0x6f0,0x6f0,0x58b,0x58b,0x58e,0x58e,0x58e,0x58e,0x58e,0x58e,0x58e,0x58e, +0x58e,0x58e,0x58e,0x58e,0x58e,0x591,0x591,0x591,0x58e,0x58e,0x6f3,0x58e,0x6f3,0x58e,0x58e,0x58e, +0x58e,0x58e,0x58e,0x58e,0x58b,0x58e,0x58b,0x58b,0x58b,0x58b,0x58b,0x58b,0x58e,0x58e,0x58b,0x6f0, +0x58b,0x58b,0x58b,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xad7,0xbc7,0xbc7,0xbc7,0xbc7, +0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0xbc7,0x6f6,0x594,0x6f6,0x6f6,0x597,0x594,0x594,0x6f6, +0x6f6,0x597,0x594,0x6f6,0x597,0x594,0x594,0x6f6,0x594,0x6f6,0x5a3,0x5a0,0x594,0x6f6,0x594,0x594, +0x594,0x594,0x6f6,0x594,0x594,0x6f6,0x6f6,0x6f6,0x6f6,0x594,0x594,0x6f6,0x597,0x6f6,0x597,0x6f6, +0x6f6,0x6f6,0x6f6,0x6f6,0x6fc,0x59a,0x6f6,0x59a,0x59a,0x594,0x594,0x594,0x6f6,0x6f6,0x6f6,0x6f6, +0x594,0x594,0x594,0x594,0x6f6,0x6f6,0x594,0x594,0x594,0x597,0x594,0x594,0x597,0x594,0x594,0x597, +0x6f6,0x597,0x594,0x594,0x6f6,0x594,0x594,0x594,0x594,0x594,0x6f6,0x594,0x594,0x594,0x594,0x594, +0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x6f9,0x6f6,0x597,0x594,0x6f6,0x6f6,0x6f6,0x6f6, +0x594,0x594,0x6f6,0x6f6,0x594,0x597,0x6f9,0x6f9,0x597,0x597,0x594,0x594,0x597,0x597,0x594,0x594, +0x597,0x597,0x594,0x594,0x594,0x594,0x594,0x594,0x597,0x597,0x6f6,0x6f6,0x597,0x597,0x6f6,0x6f6, +0x597,0x597,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x6f6,0x594,0x594, +0x594,0x6f6,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x6f6,0x594,0x594,0x594,0x594,0x594,0x594, +0x597,0x597,0x597,0x597,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594, +0x594,0x594,0x594,0x6f6,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594, +0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594,0x594, +0x594,0x594,0x594,0x594,0x597,0x597,0x597,0x597,0x594,0x594,0x594,0x594,0x594,0x594,0x597,0x597, +0x597,0x597,0x594,0x59d,0x594,0x594,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca,0xbca, +0xbca,0xbca,0xbca,0xbca,0x5a6,0xada,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5af,0x5ac,0x5af,0x5ac, +0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x6ff,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x7ef,0x7ef, +0x5a6,0x5a6,0x5a6,0x5a6,0x5a9,0x5a9,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x7f5,0x7f2,0x5a6, +0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6, +0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6,0x5a6, +0x5a6,0x5a6,0x5a6,0xada,0xbd0,0xada,0xada,0xada,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2, +0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2, +0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x5b2,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x708, +0x708,0x708,0x5b8,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d, +0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xd3b,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e, +0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x5bb,0x5be,0x5be,0x5be, +0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x5be,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e, +0x70e,0x70e,0x70e,0x70e,0x5be,0x5be,0x5be,0x5be,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e, +0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711, +0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x5c1,0x5c1,0x711,0x711,0x711,0x711,0xbd3,0xbd3, +0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0xbd3,0x717,0x717,0x5c4,0x714,0x714,0x714,0x714,0x714, +0x714,0x714,0x5c4,0x5c4,0x5c4,0x5c4,0x5c7,0x5c7,0x5c7,0x5c7,0x717,0x717,0x5c7,0x5c7,0x717,0x717, +0x5c4,0x5c4,0x5c4,0x5c4,0x717,0x717,0x5c7,0x5c7,0x717,0x717,0x5c4,0x5c4,0x5c4,0x5c4,0x717,0x717, +0x714,0x5c4,0x5c7,0x717,0x5c4,0x5c4,0x714,0x717,0x717,0x717,0x5c7,0x5c7,0x5c4,0x5c4,0x5c4,0x5c4, +0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x717,0x714,0x717,0x714,0x5c4,0x5c7, +0x5c7,0x5c7,0x5c7,0x5c7,0x5c7,0x5c4,0x5c4,0x714,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0,0xae0, +0xbd6,0xbd6,0xbd6,0xbd6,0xbd6,0xc45,0xc45,0xbd6,0x5cd,0x5cd,0x5cd,0x5cd,0x5ca,0x720,0x720,0x5ca, +0x5ca,0x71a,0x5ca,0x5ca,0x5ca,0x5ca,0x71a,0x71a,0x5ca,0x5ca,0x5ca,0x5ca,0xd44,0xd44,0xbd9,0xbd9, +0xdc5,0xae3,0x5cd,0x5cd,0x71d,0x5d0,0x71d,0x5cd,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca, +0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca, +0x5ca,0x5cd,0x5cd,0x5cd,0x5ca,0x5ca,0x5ca,0x5ca,0x720,0x5ca,0x720,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca, +0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x5ca,0x5ca,0x5ca,0x5ca, +0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x5ca,0x720,0x720,0x5d3,0x720,0x71a,0x71a,0x5ca,0x71a, +0x71d,0x71a,0x71a,0x5ca,0x71a,0x720,0x5d3,0x720,0xae3,0xae3,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc, +0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xdc2,0xe79,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6, +0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d9,0x1389,0x1389,0x1389, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x14c7,0x5df,0x5df,0x5df,0x5df,0x1389,0x5d9,0x5d9, +0x5df,0x5df,0x138c,0x138c,0x5e5,0x5e5,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x1389,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x726,0x5d9,0x5d9, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x1389,0x5d9,0x1389,0x5d9, +0x5d9,0x5d9,0x5d9,0x1389,0x1389,0x1389,0x5d9,0x1287,0x5d9,0x5d9,0x5d9,0x5e2,0x5e2,0x5e2,0x5e2,0x130e, +0x130e,0x5d9,0x5dc,0x5dc,0x5df,0x5d9,0x5d9,0x5d9,0xbe2,0xbdf,0xbe2,0xbdf,0xbe2,0xbdf,0xbe2,0xbdf, +0xbe2,0xbdf,0xbe2,0xbdf,0xbe2,0xbdf,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x723, +0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9, +0x1389,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x1389, +0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606, +0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x5fd,0x5fd, +0x5fd,0x5fd,0x5fd,0x5fd,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, 0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34,0xb34, -0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40, -0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0x13ec,0x13ec,0x13ec,0x1b2d,0x1b2d,0x1b2d,0x1b2d,0x1b2d, +0x606,0x606,0x94b,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x5fd,0x5fd,0xbe5,0xd68,0x1afd,0x1afd, +0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600, +0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600, +0x606,0x600,0x606,0x600,0x606,0x600,0x606,0x600,0x606,0x600,0x606,0x600,0x603,0x609,0x606,0x600, +0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x606,0x600,0x603,0x609, +0x606,0x600,0x606,0x600,0x603,0x609,0x606,0x600,0x603,0x609,0x606,0x600,0x606,0x600,0x1311,0x1311, +0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x606,0x600,0x606,0x600, +0x606,0x600,0x603,0x609,0x603,0x609,0x606,0x600,0x606,0x600,0x606,0x600,0x606,0x600,0x606,0x600, +0x606,0x600,0x606,0x600,0x603,0x606,0x600,0x603,0x606,0x600,0x603,0x609,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x606,0x606,0x606,0x606, +0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x603,0x603,0x603, +0x603,0x603,0x603,0x603,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x600,0x606,0x909,0x90c, +0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd,0x1afd, +0x603,0x600,0x603,0x603,0x603,0x603,0x603,0x603,0x600,0x603,0x600,0x600,0x603,0x603,0x600,0x600, +0x603,0x603,0x600,0x603,0x600,0x603,0x600,0x600,0x603,0x600,0x600,0x603,0x600,0x603,0x600,0x600, +0x603,0x600,0x603,0x603,0x600,0x600,0x600,0x603,0x600,0x600,0x600,0x600,0x600,0x603,0x600,0x600, +0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600, +0x600,0x600,0x600,0x600,0x603,0x603,0x600,0x600,0x603,0x600,0x603,0x600,0x600,0x600,0x600,0x600, +0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603, +0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603,0x603, +0x603,0x603,0x603,0x609,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606, +0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606, +0x606,0x606,0x606,0x606,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609, +0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x606,0x606,0x606,0x606,0x606,0x606,0x606, +0x606,0x606,0x606,0x606,0x60c,0x60c,0x60c,0x60c,0xfcc,0xfcc,0xfcc,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca, +0x14ca,0x14ca,0x16ce,0x16ce,0x855,0x85b,0x85b,0x867,0x867,0x858,0x84f,0x858,0x84f,0x858,0x84f,0x858, +0x84f,0x858,0x84f,0x858,0x61b,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x618, +0x61e,0x61b,0x615,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618, +0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x61b,0x615,0x618, +0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618, +0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618,0x61e,0x61b,0x615,0x618, +0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705,0x705, +0x705,0x705,0x705,0x705,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702, +0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702, +0x702,0x702,0x702,0x702,0x702,0x702,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b, +0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x70b,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x708, +0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x708,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e, +0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e, +0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x70e,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729, +0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729, +0x729,0x729,0x729,0x729,0x729,0x729,0x729,0x729,0xc33,0x8b8,0x8b2,0x8af,0x8b5,0x8ac,0x73e,0x741, +0x741,0x741,0x741,0x741,0x741,0x741,0x741,0x741,0x8be,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e, +0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e, +0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x73e,0x8bb,0x8bb,0x744,0x8cd,0x8d0,0x8d6, +0x7fb,0x807,0x8eb,0x804,0x8c4,0x8c1,0x8c4,0x8c1,0x8ca,0x8c7,0x8ca,0x8c7,0x8c4,0x8c1,0x801,0x8d6, +0x8c4,0x8c1,0x8c4,0x8c1,0x8c4,0x8c1,0x8c4,0x8c1,0x8dc,0x8e2,0x8df,0x8df,0x74a,0x786,0x786,0x786, +0x786,0x786,0x786,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x780, +0x780,0x780,0x780,0x780,0x780,0x780,0x780,0x74d,0x768,0x747,0x76e,0x771,0x76b,0x783,0x783,0x783, +0x783,0x783,0x783,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d, +0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x77d,0x74d,0x768,0x747,0x768,0xc36,0x7e9,0x7e9,0x7e9,0x7e9, +0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9, +0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x7e9,0x1281,0x1281, +0x1281,0x1281,0x1281,0x7ec,0x801,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x804,0x924,0x924, +0x924,0x924,0x80a,0x80a,0x8d9,0x8e8,0x8e8,0x8e8,0x8e8,0x8e5,0x7fe,0x8d3,0xb07,0xb07,0xb07,0xc48, +0xc66,0xc63,0xb25,0x8a9,0x810,0x80d,0x810,0x813,0x80d,0x810,0x80d,0x810,0x80d,0x810,0x80d,0x80d, +0x80d,0x80d,0x80d,0x80d,0x810,0x810,0x80d,0x810,0x810,0x80d,0x810,0x810,0x80d,0x810,0x810,0x80d, +0x810,0x810,0x80d,0x80d,0xc69,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c, +0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c, +0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x822,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81c, +0x81c,0x81c,0x81c,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c, +0x81f,0x81f,0x81c,0x81c,0x81c,0x81c,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81c,0x81c, +0x81c,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,0x81f,0x822,0x822,0x81f,0x81f,0x81f,0x81f,0x8f1, +0x8f4,0x825,0x828,0xc51,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e, +0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e, +0x82e,0x82e,0x82e,0x82e,0x831,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e, +0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e,0x82e, +0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a, +0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0xd4d,0xd4d,0xe7c,0x834, +0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0xd47,0xd47,0xd47,0xd47, +0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d, +0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x1a46, +0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903, +0x903,0x840,0x840,0x840,0x840,0x840,0x840,0xd50,0xd50,0xd50,0xd50,0x906,0x906,0x906,0x906,0x906, +0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840, +0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840,0x840, +0x840,0x840,0xd50,0xd50,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843, +0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843,0x843, +0x843,0x843,0x843,0x843,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x846,0x846,0x846,0x846, +0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846, +0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0xe7f,0xe7f, +0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f, +0xe7f,0xe7f,0xe7f,0xe7f,0x10ef,0x10ef,0x10ef,0x10ef,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849, +0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849, +0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x84c,0x84c,0x849,0x84c,0x849,0x84c, +0x84c,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x84c,0x849,0x84c,0x849,0x84c, +0x84c,0x849,0x849,0x84c,0x84c,0x84c,0x849,0x849,0x849,0x849,0x1485,0x1485,0xc5a,0xc5a,0xc5a,0xc5a, +0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0x8fd,0x8fd,0x8fd,0x8fd, +0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd, +0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x8fd,0x12c0,0x12c0,0x12c0,0x12c0, +0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0xd47,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, +0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900, +0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900, +0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0x900,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, +0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903, +0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903,0x903, +0x903,0x903,0x903,0x903,0x903,0x903,0x903,0xd50,0x98a,0x96c,0x96c,0x96c,0x96c,0x966,0x96c,0x96c, +0x97e,0x96c,0x96c,0x969,0x975,0x97b,0x97b,0x97b,0x97b,0x97b,0x97e,0x966,0x972,0x966,0x966,0x966, +0x95d,0x95d,0x966,0x966,0x966,0x966,0x966,0x966,0x981,0x981,0x981,0x981,0x981,0x981,0x981,0x981, +0x981,0x981,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0x969,0x95d,0x966,0x95d, +0x966,0x95d,0x978,0x96f,0x978,0x96f,0x987,0x987,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996, +0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996, +0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x996,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999, +0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999, +0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x999,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c, +0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c, +0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5, +0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5, +0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x99f,0x99f,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8, +0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8, +0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a2,0x9a2,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5, +0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5, +0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a5,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8, +0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8, +0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae, +0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae, +0x9ae,0x9ae,0x9ae,0x9ae,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae, +0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae, +0xa3b,0xa3b,0xfb1,0xa3b,0xa3b,0xa3b,0xa3e,0xa3b,0xfb1,0xa3b,0xa3b,0xfa8,0xa35,0xa29,0xa29,0xa29, +0xa29,0xa38,0xa29,0xf99,0xf99,0xf99,0xa29,0xa2c,0xa35,0xa2f,0xf9f,0xfab,0xfab,0xf99,0xf99,0xfb1, +0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xa41,0xa41,0xa32,0xa32,0xa32,0xa32, +0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa38,0xa38,0xa29,0xa29,0xfb1,0xfb1,0xfb1,0xfb1,0xf99,0xf99, +0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b, +0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b,0xa3b, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xda7,0xa50,0xa50,0xa50,0xa50, +0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa50,0xa56,0xa56,0xa56,0xa56, +0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56, +0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa5c,0xa5c,0xa5c,0xa5c, +0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa59,0xa5f,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c, +0xa5c,0xa5c,0xa5c,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1128,0x1125,0xa5c,0xa5c,0xa5c, +0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c, +0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c,0xa5c, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, +0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71,0xa71, +0xa95,0xa95,0xa95,0xa98,0xa98,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95, +0xa95,0xa95,0xa95,0xa95,0xa7d,0xa7d,0xa92,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa74,0xa92,0xa92, +0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95, +0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95,0xa95, +0xab6,0xab6,0xab6,0xab6,0xab6,0xaa1,0xaa1,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab9,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6, +0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xab6,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada, +0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada,0xada, +0xada,0xada,0xada,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6, +0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6, +0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xae6,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8, +0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8, +0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe, +0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe, +0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xafe,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a, +0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a, +0x138f,0x138f,0x138f,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d, +0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d, +0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4, +0x1ac4,0x1ac4,0x1ac4,0x1ac4,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10, +0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb13,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10, +0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10, +0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb16,0xb16,0xc57,0xc57, +0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16, +0xc57,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb16,0xb3a,0xb3a,0xb3a,0xb3a, +0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a, +0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0xb3a,0x14cd,0xb43,0xb43,0xb43,0xb43, +0xb43,0xb43,0xcdb,0xcdb,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40, +0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xcd8,0xcd8, +0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26, 0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43, 0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43,0xb43, -0xb43,0xb43,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0x1b30,0xb46,0xb46,0xb46,0xb46, 0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, -0xb46,0xb49,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, 0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46, -0xb46,0xb46,0xb46,0xb46,0xb4c,0xb4c,0xc9c,0xc9c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c, -0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xc9c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c, -0xb4c,0xb4c,0xb4c,0xb4c,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70, -0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70, -0xb70,0xb70,0xb70,0x1530,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xd26,0xd26,0xb76,0xb76,0xb76,0xb76, +0xb55,0xb55,0xb55,0xb55,0xb55,0xb4c,0xb58,0xb5e,0xb5e,0xb5e,0xb52,0xb52,0xb52,0xb5b,0xb4f,0xb4f, +0xb4f,0xb4f,0xb4f,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb55,0xb55,0xb5e,0xb5e,0xb5e,0xb52,0xb52,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb5e,0xb5e,0xb5e,0xb5e,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52, +0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0x16d1,0x16d1,0xb6a,0xb61,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb61,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb61,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64, +0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a, +0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67, +0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d, +0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d, +0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb6d,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, +0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73, +0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0xb73,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca, +0x1aca,0x1aca,0x1b96,0x1b96,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, 0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76, -0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xd23,0xd23,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79, -0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c, -0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c, -0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb82,0xb8e,0xb94, -0xb94,0xb94,0xb88,0xb88,0xb88,0xb91,0xb85,0xb85,0xb85,0xb85,0xb85,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f, -0xb7f,0xb7f,0xb7f,0xb94,0xb94,0xb94,0xb94,0xb94,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb8b,0xb8b,0xb94,0xb94,0xb94,0xb88, -0xb88,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb94,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb94,0xb94, -0xb94,0xb94,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb8b, -0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88, -0xb88,0xb88,0x173d,0x173d,0xba0,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb97, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xb97, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xb97,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a, -0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a, -0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xb9a,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0,0xba0, -0xba0,0xba0,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d, -0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xb9d,0xba0,0xba0,0xba0,0xba0, -0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3, -0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3,0xba3, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9, -0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9,0xba9, -0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac, -0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac,0xbac, -0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc06, -0xc06,0xc06,0xc06,0xc06,0xc06,0xc06,0xc03,0xc06,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03, -0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xc03,0xd14,0xd17,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a, -0xe0a,0xe0a,0xe0a,0xe0a,0xf24,0xf24,0xf24,0xf24,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc12,0xc12, -0xc12,0xc12,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1d,0xd1d,0xe10,0xec4,0xe10,0xe10,0xe10,0xe10, -0xe0d,0xe10,0xe0d,0xe10,0xe10,0x1014,0x12ae,0x12ae,0xe19,0xe19,0xe19,0xe19,0xe19,0xe1f,0xe1c,0xf36, -0xf36,0xf36,0xf36,0x142e,0x1026,0x142e,0x1374,0x1374,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e, -0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc4e,0xc81,0xc7e,0xc81,0xc7e,0xc81,0xc7e, -0x1137,0x1134,0x102c,0x1029,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51,0xc51, -0xc51,0xc51,0xc51,0xc51,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, -0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, -0xc54,0xc54,0xc54,0xc54,0xc57,0xc57,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54,0xc54, -0xc5a,0xc5a,0xc5a,0xc60,0xc5d,0xc87,0xc84,0xc60,0xc5d,0xc60,0xc5d,0xc60,0xc5d,0xc60,0xc5d,0xc60, -0xc5d,0xc60,0xc5d,0xc60,0xc5d,0xc60,0xc5d,0xc60,0xc5d,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc60,0xc5d,0xc60,0xc5d, +0xb76,0xb76,0xb76,0xb76,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0, +0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbd0,0xbcd,0xbd0,0xbcd,0xbcd,0xbcd,0xbcd, +0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xbcd,0xccf,0xcd2,0xdbf,0xdbf,0xdbf, +0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xdbf,0xed6,0xed6,0xed6,0xed6,0xbdc,0xbdc,0xbdc,0xbdc, +0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xdc2,0xe76, +0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xfc6,0x1260,0x1260,0xdcb,0xdcb,0xdcb,0xdcb, +0xdcb,0xdd1,0xdce,0xee8,0xee8,0xee8,0xee8,0x13ce,0xfd8,0x13ce,0x131a,0x131a,0xc0f,0xc0f,0xc0f,0xc0f, +0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc0f,0xc3c,0xc39, +0xc3c,0xc39,0xc3c,0xc39,0x10e9,0x10e6,0xfde,0xfdb,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12, +0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15, +0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15, +0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc18,0xc18,0xc18,0xc1e,0xc1b,0xc42,0xc3f,0xc1e, +0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e,0xc1b,0xc1e, +0xc1b,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18, +0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18, +0xc18,0xc18,0xc18,0xc18,0xc1e,0xc1b,0xc1e,0xc1b,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18, +0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18, +0xc18,0xc18,0xc18,0xc18,0xc1e,0xc1b,0xc18,0xc18,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21, +0xc21,0xc21,0xc21,0xc21,0xc27,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21, +0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21, +0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc27,0xc27,0xc27,0xc21,0xc21,0xc21,0xc21,0xc21, +0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21, +0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc24,0xc21,0xc21,0xc21,0xc5a,0xc5a,0xc5a,0xc5a, 0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a, -0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc60,0xc5d,0xc5a,0xc5a, -0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc69,0xc63,0xc63,0xc63, -0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63, -0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63, -0xc69,0xc69,0xc69,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63, -0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63,0xc63, -0xc66,0xc63,0xc63,0xc63,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f, -0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f,0xc9f, -0xc9f,0xc9f,0xc9f,0xc9f,0xd20,0xd8f,0xe0d,0xe0d,0xe0d,0xe0d,0xe0d,0xe10,0xe0d,0xe0d,0xec4,0xec4, -0xe0d,0xe0d,0xe0d,0xe0d,0xe10,0xe10,0xf27,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014,0x1014, -0x1014,0x12db,0x12db,0x12b1,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44, -0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44, -0xd44,0xd44,0xd44,0xd44,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd47, -0xd5c,0xd5c,0xd5c,0xd56,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd56, -0xd5c,0xd5c,0xd5c,0xd5c,0xd50,0xd50,0xd59,0xd59,0xd59,0xd59,0xd4d,0xd4d,0xd4d,0xd4d,0xd4d,0xd53, -0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe25,0xe25,0xe25, -0xe25,0xe25,0xe25,0xe25,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c, -0xd5c,0xd5c,0xd56,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c,0xd5c, -0xd5c,0xd50,0xd50,0xd50,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53, -0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53, -0xd53,0xd53,0xd53,0xd53,0xd5f,0xd5f,0xd5f,0xd5f,0xd5f,0xd62,0xd62,0xd62,0xd5f,0xd5f,0xd5f,0xd5f, -0xd5f,0xd5f,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0x1140, -0x1140,0x102f,0x102f,0x102f,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65, -0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65,0xd65, -0xd65,0xd65,0xd65,0xd65,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b, -0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b, -0xd6b,0xd6b,0xd6b,0xd6b,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74, -0xd74,0xd74,0xd74,0xd74,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80, -0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80,0xd80, -0xd80,0xd80,0xd80,0xd80,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c, -0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c,0xd8c, -0xd8c,0xd8c,0xd8c,0xd8c,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e, -0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e, -0xe2e,0xe2e,0xe2e,0xe2e,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34, -0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31, -0xe31,0xe31,0xe31,0xe31,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34, -0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34,0xe34, -0xe34,0xe34,0xe34,0xe34,0xef4,0xef4,0xe46,0xe46,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0x103b, -0x103b,0x103b,0x103b,0x103b,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038, -0x1038,0x1038,0x1038,0x1038,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52, -0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52,0xe55,0xe52, -0xe55,0xe52,0xe55,0xe52,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61, -0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61, -0xe61,0xe61,0xe61,0xe61,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, -0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, -0xe67,0xe67,0xe67,0xe67,0xeee,0xeee,0xeee,0xeee,0xeee,0xeee,0xeee,0xeee,0xe7f,0xe7f,0xe7f,0xe7f, -0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xf3f,0xf3f,0xf3f,0xf3f,0x103e, -0x103e,0x103e,0x103e,0x103e,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, -0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88,0xe88, -0xe88,0xe88,0xe88,0xe88,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, -0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91, -0xe91,0xe91,0xe91,0xe91,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a, -0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a,0xe9a, -0xe9a,0xe9a,0xe9a,0xe94,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97, -0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe9a, -0xe9a,0xe9a,0xe9a,0xe9a,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3, -0xea3,0xea3,0xea0,0xea0,0xea0,0xea0,0xea0,0xea0,0xea0,0xea0,0xe9d,0xea6,0x104a,0x1044,0x1053,0x1041, -0xea3,0xea3,0x1041,0x1041,0xeb5,0xeb5,0xea9,0xeb5,0xeb5,0xeb5,0xeac,0xeb5,0xeb5,0xeb5,0xeb5,0xea9, -0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5, -0xeb5,0xeb5,0xeb5,0xeb5,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8, -0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8, -0xeb8,0xeb8,0xeb8,0xeb8,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, -0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0,0xed0, -0xed0,0xed0,0xed0,0xed0,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1,0xef1, -0xef1,0xef1,0xef1,0xef1,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149,0x1149, -0x1149,0x1149,0x1149,0x1149,0xf24,0xf24,0xf24,0xf21,0xf21,0xf21,0xf21,0xf21,0x1182,0x13dd,0x13dd,0x13dd, -0x13dd,0x135f,0x135f,0x135f,0x13e0,0x1362,0x1362,0x13e0,0x1524,0x1524,0x1524,0x1524,0x1527,0x1527,0x1527,0x17ee, -0x17ee,0x17ee,0x17ee,0x18b4,0xf39,0xf39,0xf39,0xf39,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f, -0x102f,0x102f,0x102f,0x102f,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032, -0x1032,0x1032,0x1032,0x1032,0xf5a,0xf5a,0xf5a,0xf5a,0xf6c,0xf75,0xf78,0xf75,0xf78,0xf75,0xf78,0xf75, -0xf78,0xf75,0xf78,0xf75,0xf75,0xf75,0xf78,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75, -0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf75,0xf5d,0xf5a,0xf5a,0xf5a, -0xf5a,0xf5a,0xf5a,0xf6f,0xf5a,0xf6f,0xf6c,0xf6c,0xf81,0xf7e,0xf81,0xf81,0xf81,0xf7e,0xf7e,0xf81, -0xf7e,0xf81,0xf7e,0xf81,0xf7e,0x1065,0x1065,0x1065,0x11a0,0x105c,0x1065,0x105c,0xf7e,0xf81,0xf7e,0xf7e, -0x105c,0x105c,0x105c,0x105c,0x105f,0x1062,0x11a0,0x11a0,0xf84,0xf84,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e, -0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x106e,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e, -0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a, -0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a, -0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf8a,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99, -0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99, -0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0x1563,0x1563,0x1563,0x1563,0x1563, -0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0xf9f,0xf9f,0xf9f,0xf9f, -0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f, -0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xfe7,0xfff,0xff6,0xffc, -0xffc,0xfff,0xfff,0xff6,0xff6,0xffc,0xffc,0xffc,0xffc,0xffc,0xfff,0xfff,0xfff,0xfe7,0xfe7,0xfe7, -0xfe7,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfe7,0xff6, -0xff9,0xfe7,0xfe7,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xfea,0xfff,0xffc,0xff3,0xff3,0xff3,0xff3, -0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0x116a,0x116a,0x1167,0x1164,0xff0,0xff0,0x1017,0x1017,0x1017,0x1017, -0x12db,0x12db,0x12b1,0x12b1,0x12b7,0x12ae,0x12ae,0x12ae,0x12ae,0x12b1,0x13e3,0x12b7,0x12b1,0x12b7,0x12ae,0x12b7, -0x12db,0x12ae,0x12ae,0x12ae,0x12b1,0x12b1,0x12ae,0x12ae,0x12b1,0x12ae,0x12ae,0x12b1,0x1032,0x1032,0x1032,0x1032, -0x1032,0x102f,0x102f,0x1032,0x1032,0x1032,0x1032,0x1032,0x1032,0x153c,0x153c,0x153c,0x1140,0x102f,0x102f,0x102f, -0x102f,0x12e7,0x12c0,0x12c0,0x12c0,0x12c0,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x1050,0x1050,0x104d,0x1047, -0x104d,0x1047,0x104d,0x1047,0x104d,0x1047,0x1044,0x1044,0x1044,0x1044,0x1059,0x1056,0x1044,0x119d,0x143a,0x143d, -0x143d,0x143a,0x143a,0x143a,0x143a,0x143a,0x1440,0x1440,0x1557,0x154b,0x154b,0x1548,0x1077,0x106e,0x1077,0x106e, -0x1077,0x106e,0x1077,0x106e,0x106b,0x1068,0x1068,0x1077,0x106e,0x1383,0x1380,0x1746,0x1383,0x1380,0x1449,0x1446, -0x155a,0x155a,0x1560,0x155a,0x1560,0x155a,0x1560,0x155a,0x1560,0x155a,0x1560,0x155a,0x1077,0x106e,0x1077,0x106e, -0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e, -0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x106e,0x1071,0x106e,0x106e,0x106e, -0x106e,0x106e,0x106e,0x106e,0x106e,0x1077,0x106e,0x1077,0x106e,0x1077,0x1077,0x106e,0x107a,0x107a,0x1080,0x1086, -0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086, -0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1086,0x1080,0x107a,0x107a, -0x107a,0x107a,0x1080,0x1080,0x107a,0x107a,0x1083,0x1452,0x144f,0x144f,0x1086,0x1086,0x107d,0x107d,0x107d,0x107d, -0x107d,0x107d,0x107d,0x107d,0x107d,0x107d,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x109b,0x109b,0x109b,0x109b, -0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b, -0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x109b,0x10a4,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4, -0x10a4,0x10a4,0x10a4,0x10a4,0x10a7,0x10a7,0x10a7,0x10aa,0x10a7,0x10a7,0x10ad,0x10ad,0x10b0,0x10b0,0x10b0,0x10b0, -0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0, -0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b9,0x10b9,0x10b9,0x10b9, -0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10bc,0x10b3,0x10c2,0x10bf,0x10b9,0x10b9,0x10b9,0x10b9, -0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9, -0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x1389,0x1386,0x10d4,0x10ce, -0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d1,0x1152,0x10c5,0x10c5,0x10c5,0x10cb, -0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x10c8,0x10c8,0x10cb,0x10d7,0x10d4,0x10ce,0x10d4,0x10ce, -0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce, -0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x10d4,0x10ce,0x156f,0x156c,0x156f,0x156c, -0x1572,0x1572,0x174f,0x1458,0x10e0,0x10e0,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3, +0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xc5a,0xcd5,0xd41,0xdc2,0xdc2, +0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xe76,0xe76,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xdc2,0xed9,0xfc6, +0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0x1284,0x1284,0x1263,0xcf9,0xcf9,0xcf9,0xcf9, +0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9, +0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xcf9,0xd08,0xd08,0xd08,0xd08, +0xd08,0xd08,0xcff,0xcff,0xcff,0xcff,0xcff,0xcfc,0xd11,0xd11,0xd11,0xd0b,0xd11,0xd11,0xd11,0xd11, +0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd0b,0xd11,0xd11,0xd11,0xd11,0xd05,0xd05,0xd0e,0xd0e, +0xd0e,0xd0e,0xd02,0xd02,0xd02,0xd02,0xd02,0xd08,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7, +0xdd7,0xdd7,0xdd7,0xdd7,0xdd4,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xd11,0xd11,0xd11,0xd11, +0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd0b,0xd11,0xd11,0xd11,0xd11,0xd11, +0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd11,0xd05,0xd05,0xd05,0xd08,0xd08,0xd08,0xd08, +0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08, +0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd14,0xd14,0xd14,0xd14, +0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xd14,0xdda,0xdda,0xdda,0xdda,0xdda,0xdda, +0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0xeeb,0x10f2,0x10f2,0xfe1,0xfe1,0xfe1,0xd17,0xd17,0xd17,0xd17, +0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17, +0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd17,0xd1d,0xd1d,0xd1d,0xd1d, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d, +0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd26,0xd26,0xd26,0xd26, +0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26, +0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd32,0xd32,0xd32,0xd32, +0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32, +0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd3e,0xd3e,0xd3e,0xd3e, +0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e, +0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xde0,0xde0,0xde0,0xde0, +0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0, +0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde0,0xde6,0xde6,0xde6,0xde6, +0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6, +0xde6,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde3,0xde6,0xde6,0xde6,0xde6, +0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6, +0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xde6,0xea6,0xea6,0xdf8,0xdf8, +0xeee,0xeee,0xeee,0xeee,0xeee,0xeee,0xeee,0xfed,0xfed,0xfed,0xfed,0xfed,0xfea,0xfea,0xfea,0xfea, +0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xfea,0xe07,0xe04,0xe07,0xe04, +0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04, +0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe07,0xe04,0xe13,0xe13,0xe13,0xe13, +0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13, +0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe13,0xe19,0xe19,0xe19,0xe19, +0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0x1b0c,0xe16,0xe16,0xe16,0xe16, +0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16, +0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0xe16,0x1b09,0xe19,0xe19,0xe19,0xe19, +0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19, +0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xe19,0xea0,0xea0,0xea0,0xea0, +0xea0,0xea0,0xea0,0xea0,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31,0xe31, +0xe31,0xe31,0xe31,0xef1,0xef1,0xef1,0xef1,0xff0,0xff0,0xff0,0xff0,0xff0,0xe3a,0xe3a,0xe3a,0xe3a, +0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a, +0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe43,0xe43,0xe43,0xe43, +0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43, +0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe4c,0xe4c,0xe4c,0xe4c, +0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c, +0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe46,0xe49,0xe49,0xe49,0xe49, +0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49, +0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe55,0xe55,0xe55,0xe55, +0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe52,0xe52,0xe52,0xe52,0xe52,0xe52, +0xe52,0xe52,0xe4f,0xe58,0xffc,0xff6,0x1005,0xff3,0xe55,0xe55,0xff3,0xff3,0xe67,0xe67,0xe5b,0xe67, +0xe67,0xe67,0xe5e,0xe67,0xe67,0xe67,0xe67,0xe5b,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67, +0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe6a,0xe6a,0xe6a,0xe6a, +0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a, +0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe82,0xe82,0xe82,0xe82, +0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82, +0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xe82,0xea3,0xea3,0xea3,0xea3, +0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0xea3,0x10fb,0x10fb,0x10fb,0x10fb, +0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0xed6,0xed6,0xed6,0xed3, +0xed3,0xed3,0xed3,0xed3,0x1134,0x1380,0x1380,0x1380,0x1380,0x1305,0x1305,0x1305,0x1383,0x1308,0x1308,0x1383, +0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x14c4,0x1785,0x1785,0x1785,0x1785,0x184b,0xeeb,0xeeb,0xeeb,0xeeb, +0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe1,0xfe4,0xfe4,0xfe4,0xfe4, +0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfea,0xfea,0xfea,0xfea, +0xfea,0xfea,0xfea,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df, +0x14df,0x14e2,0x1854,0x1854,0x18d5,0x1854,0x1bb4,0x178b,0x131d,0x113d,0xeee,0xeee,0xf0c,0xf0c,0xf0c,0xf0c, +0xf1e,0xf27,0xf2a,0xf27,0xf2a,0xf27,0xf2a,0xf27,0xf2a,0xf27,0xf2a,0xf27,0xf27,0xf27,0xf2a,0xf27, +0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27,0xf27, +0xf27,0xf27,0xf27,0xf27,0xf0f,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf0c,0xf21,0xf0c,0xf21,0xf1e,0xf1e, +0xf33,0xf30,0xf33,0xf33,0xf33,0xf30,0xf30,0xf33,0xf30,0xf33,0xf30,0xf33,0xf30,0x1017,0x1017,0x1017, +0x1152,0x100e,0x1017,0x100e,0xf30,0xf33,0xf30,0xf30,0x100e,0x100e,0x100e,0x100e,0x1011,0x1014,0x1152,0x1152, +0xf36,0xf36,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020, +0x1020,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020, +0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c, +0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c, +0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b, +0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b,0xf4b, +0xf4b,0xf4b,0xf4b,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500,0x1500, +0x1500,0x1500,0x1500,0x1500,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51, +0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51, +0xf51,0xf51,0xf51,0xf51,0xf99,0xfb1,0xfa8,0xfae,0xfae,0xfb1,0xfb1,0xfa8,0xfa8,0xfae,0xfae,0xfae, +0xfae,0xfae,0xfb1,0xfb1,0xfb1,0xf99,0xf99,0xf99,0xf99,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1, +0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xfb1,0xf99,0xfa8,0xfab,0xf99,0xf99,0xfae,0xfae,0xfae,0xfae,0xfae, +0xfae,0xf9c,0xfb1,0xfae,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0xfa5,0x111c,0x111c, +0x1119,0x1116,0xfa2,0xfa2,0xfc9,0xfc9,0xfc9,0xfc9,0x1284,0x1284,0x1263,0x1263,0x1263,0x1260,0x1260,0x1260, +0x1260,0x1263,0x1386,0x1263,0x1263,0x1263,0x1260,0x1263,0x1284,0x1260,0x1260,0x1260,0x1263,0x1263,0x1260,0x1260, +0x1263,0x1260,0x1260,0x1263,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4,0xfe1,0xfe1,0xfe4,0xfe4,0xfe4,0xfe4,0xfe4, +0xfe4,0x14d9,0x14d9,0x14d9,0x10f2,0xfe1,0xfe1,0xfe1,0xfe1,0x1290,0x126c,0x126c,0x126c,0x126c,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x1002,0x1002,0xfff,0xff9,0xfff,0xff9,0xfff,0xff9,0xfff,0xff9,0xff6,0xff6, +0xff6,0xff6,0x100b,0x1008,0xff6,0x114f,0x13da,0x13dd,0x13dd,0x13da,0x13da,0x13da,0x13da,0x13da,0x13e0,0x13e0, +0x14f4,0x14e8,0x14e8,0x14e5,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x101d,0x101a,0x101a,0x1029, +0x1020,0x1329,0x1326,0x16da,0x1329,0x1326,0x13e9,0x13e6,0x14f7,0x14f7,0x14fd,0x14f7,0x14fd,0x14f7,0x14fd,0x14f7, +0x14fd,0x14f7,0x14fd,0x14f7,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020, +0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020,0x1029,0x1020, +0x1029,0x1020,0x1029,0x1020,0x1023,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1020,0x1029,0x1020,0x1029, +0x1020,0x1029,0x1029,0x1020,0x102c,0x102c,0x1032,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038, +0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038, +0x1038,0x1038,0x1038,0x1038,0x1038,0x1032,0x102c,0x102c,0x102c,0x102c,0x1032,0x1032,0x102c,0x102c,0x1035,0x13f2, +0x13ef,0x13ef,0x1038,0x1038,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x102f,0x13f5,0x13f5, +0x13f5,0x13f5,0x13f5,0x13f5,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d, +0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d, +0x104d,0x104d,0x104d,0x104d,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056, +0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1056,0x1059,0x1059,0x1059,0x105c, +0x1059,0x1059,0x105f,0x105f,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062, +0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062, +0x1062,0x1062,0x1062,0x1062,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b, +0x106e,0x1065,0x1074,0x1071,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b, +0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b, +0x106b,0x106b,0x106b,0x106b,0x132f,0x132c,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080, +0x1086,0x1080,0x1083,0x1104,0x1077,0x1077,0x1077,0x107d,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8,0x13f8, +0x107a,0x107a,0x107d,0x1089,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080, +0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080,0x1086,0x1080, +0x1086,0x1080,0x1086,0x1080,0x150c,0x1509,0x150c,0x1509,0x150f,0x150f,0x16e3,0x13f8,0x1092,0x1092,0x1095,0x1095, +0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095, +0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1095,0x1092,0x1092,0x1092,0x1092, +0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x1092,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x109b,0x109b, +0x109b,0x109b,0x109b,0x109e,0x109e,0x109e,0x10f8,0x10a7,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6, +0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1, +0x10a1,0x10a1,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4, +0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5, +0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5, +0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10c5,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7, +0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7, +0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10e0,0x10e0,0x10e0,0x10e0,0x10f5,0x10e0,0x10e0,0x10e0, +0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0, +0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3, 0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3, -0x10e3,0x10e3,0x10e3,0x10e3,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0, -0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10ec,0x10ec,0x10ec,0x1146,0x10f5, -0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104,0x1104, -0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2, -0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2, -0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113, -0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125,0x1125, -0x112e,0x112e,0x112e,0x112e,0x1143,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e, -0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e,0x112e, -0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131, -0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131,0x1131, -0x113d,0x113d,0x113d,0x113d,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x12e1,0x14e2,0x17cd,0x17cd,0x17cd, -0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d, -0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2, -0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11b2,0x11a9,0x11a9,0x11ac,0x11ac,0x11b2,0x11a9,0x11a9,0x11a9,0x11a9,0x11a9, -0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8, -0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8,0x11b8, -0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3, -0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3,0x11d3, -0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df, -0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11dc,0x11e2, -0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee, -0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee,0x11ee, -0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4,0x11f4, -0x11f4,0x132f,0x11fa,0x1332,0x11fa,0x11fa,0x11fa,0x11fa,0x11f7,0x11f7,0x11f7,0x11fa,0x1752,0x1755,0x197a,0x1977, -0x11fd,0x11fd,0x11fd,0x120c,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212, -0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212, -0x1212,0x1212,0x1212,0x1200,0x120c,0x120c,0x11fd,0x11fd,0x11fd,0x11fd,0x120c,0x120c,0x11fd,0x11fd,0x120c,0x120c, +0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10ef,0x10ef,0x10ef,0x10ef,0x128a,0x128a,0x128a,0x128a, +0x128a,0x128a,0x128a,0x128a,0x1482,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x18b4,0x18b4, +0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164, +0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x1164,0x115b,0x115b, +0x115e,0x115e,0x1164,0x115b,0x115b,0x115b,0x115b,0x115b,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a, +0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a, +0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x116a,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185, +0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191, +0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191, +0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x118e,0x1194,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0, +0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6, +0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x12d5,0x11ac,0x12d8,0x11ac,0x11ac,0x11ac,0x11ac, +0x11a9,0x11a9,0x11a9,0x11ac,0x16e6,0x16e9,0x1911,0x190e,0x11af,0x11af,0x11af,0x11be,0x11c4,0x11c4,0x11c4,0x11c4, +0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4, +0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11c4,0x11b2,0x11be,0x11be,0x11af,0x11af, +0x11af,0x11af,0x11be,0x11be,0x11af,0x11af,0x11be,0x11be,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0, +0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d3,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11ca, +0x11ca,0x11ca,0x11d0,0x11cd,0x1515,0x1518,0x151b,0x151b,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2, +0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11d6,0x11e2,0x11d6,0x11d6,0x11d6,0x11eb,0x11eb,0x11d6, +0x11d6,0x11eb,0x11e2,0x11eb,0x11eb,0x11e2,0x11d6,0x11d9,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2, +0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2, +0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd, +0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd, +0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215, +0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215,0x1215, +0x1215,0x1215,0x1215,0x1215,0x1215,0x1212,0x1212,0x1212,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e, 0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e, -0x1221,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x1218,0x1218,0x1218,0x121e,0x121b,0x1578,0x157b,0x157e,0x157e, -0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, -0x1224,0x1230,0x1224,0x1224,0x1224,0x1239,0x1239,0x1224,0x1224,0x1239,0x1230,0x1239,0x1239,0x1230,0x1224,0x1227, -0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, -0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230, -0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b, -0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b, -0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263, -0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1260,0x1260,0x1260, -0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c, -0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c,0x126c, -0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b, -0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b,0x127b, -0x1281,0x1281,0x1290,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293, -0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1296,0x1293,0x1296,0x1293,0x1293,0x1293, -0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1293,0x1296,0x1293,0x1293,0x1293,0x1293, -0x1290,0x1290,0x1290,0x1284,0x1284,0x1284,0x1284,0x1290,0x1290,0x128a,0x1287,0x128d,0x128d,0x129c,0x1299,0x1299, -0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f, +0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d, +0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d, +0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x122d,0x1233,0x1233,0x1242,0x1245,0x1245,0x1245,0x1245,0x1245, +0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245, +0x1245,0x1245,0x1248,0x1245,0x1248,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245, +0x1245,0x1245,0x1245,0x1248,0x1245,0x1245,0x1245,0x1245,0x1242,0x1242,0x1242,0x1236,0x1236,0x1236,0x1236,0x1242, +0x1242,0x123c,0x1239,0x123f,0x123f,0x124e,0x124b,0x124b,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, +0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, +0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1257,0x1257,0x1257,0x1254,0x1254,0x1254,0x1251,0x1251, +0x1251,0x1251,0x1254,0x1251,0x1251,0x1251,0x1257,0x1254,0x1257,0x1254,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, +0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251,0x1251, +0x1251,0x1251,0x1251,0x1251,0x1251,0x1257,0x1254,0x1254,0x1251,0x1251,0x1251,0x1251,0x1272,0x1272,0x1272,0x1272, +0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1275,0x1275,0x1275,0x125a,0x1917,0x137d,0x127e,0x137d,0x137d, +0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x127e,0x137d,0x127e,0x1263,0x1263,0x130b,0x1260, +0x130b,0x130b,0x130b,0x130b,0x1260,0x1260,0x1284,0x1260,0x1260,0x1260,0x1260,0x1260,0x1260,0x1263,0x1284,0x1284, +0x1263,0x1284,0x1260,0x1263,0x1263,0x1266,0x1284,0x1260,0x1260,0x1284,0x1263,0x1263,0x137a,0x137a,0x137a,0x137a, +0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x126f,0x126f,0x126f,0x126f,0x1392,0x1374,0x1278,0x1392,0x1392,0x1392, +0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1392,0x1815,0x1815,0x1815,0x1815,0x1815,0x1272,0x1272,0x1272,0x1272, +0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x151e,0x151e,0x1a64,0x1a64,0x1a64,0x1272,0x1272,0x1272,0x1272, +0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x1272,0x137d,0x137d,0x127e,0x137d, +0x137d,0x137d,0x127e,0x137d,0x137d,0x137d,0x1278,0x1278,0x1278,0x1278,0x1278,0x1377,0x137a,0x137a,0x137a,0x137a, +0x137a,0x137a,0x137a,0x127b,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x127b,0x137a,0x137a,0x137a,0x137a, +0x137a,0x137a,0x137a,0x137a,0x137a,0x137a,0x13fb,0x13fb,0x19c2,0x1a64,0x1a64,0x1a64,0x137a,0x137a,0x137a,0x137a, +0x137a,0x137a,0x137a,0x137a,0x137a,0x127b,0x137a,0x127b,0x127b,0x137a,0x137a,0x127b,0x129f,0x129f,0x129f,0x129f, 0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f, -0x12a5,0x12a5,0x12a5,0x12a2,0x12a2,0x12a2,0x129f,0x129f,0x129f,0x129f,0x12a2,0x129f,0x129f,0x129f,0x12a5,0x12a2, -0x12a5,0x12a2,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f, -0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x12a5,0x12a2,0x12a2, -0x129f,0x129f,0x129f,0x129f,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c9, -0x12c9,0x12c9,0x12a8,0x1980,0x13d7,0x12d2,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7,0x13d7, -0x13d7,0x12d2,0x13d7,0x12d2,0x12b1,0x12b1,0x1365,0x12ae,0x1365,0x1365,0x1365,0x1365,0x12ae,0x12b4,0x12db,0x12ae, -0x12ae,0x12ae,0x12ae,0x12ae,0x12b4,0x12b7,0x12db,0x12db,0x12b7,0x12db,0x12ae,0x12b7,0x12b7,0x12ba,0x12db,0x12ae, -0x12ae,0x12db,0x12b1,0x12b1,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x12c3,0x12c3, -0x12c3,0x12c3,0x13ef,0x13ce,0x12cc,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x13ef,0x187e, -0x187e,0x187e,0x187e,0x187e,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x1581, -0x1581,0x1ad0,0x1ad0,0x1ad0,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6,0x12c6, -0x12c6,0x12c6,0x12c6,0x12c6,0x13d7,0x13d7,0x12d2,0x13d7,0x13d7,0x13d7,0x12d2,0x13d7,0x13d7,0x13d7,0x12cc,0x12cc, -0x12cc,0x12cc,0x12cc,0x13d1,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x12cf,0x13d4,0x13d4,0x13d4,0x13d4, -0x13d4,0x13d4,0x13d4,0x12cf,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x145b,0x145b, -0x1a2e,0x1ad0,0x1ad0,0x1ad0,0x13da,0x13da,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x13d4,0x12cf,0x13d4,0x12cf, -0x12cf,0x13d4,0x13da,0x12d5,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9, -0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9, -0x12f9,0x12f9,0x12f9,0x12f9,0x1383,0x1380,0x1383,0x1380,0x1383,0x1380,0x1383,0x1380,0x1383,0x1380,0x1449,0x1560, -0x1560,0x1560,0x17fa,0x196e,0x1560,0x1560,0x1749,0x1749,0x1749,0x1743,0x1749,0x1743,0x1971,0x196e,0x1a2b,0x1a28, -0x1a2b,0x1a28,0x1a2b,0x1a28,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7, -0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7, -0x13a7,0x13a7,0x13a7,0x13a7,0x13bc,0x13ad,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf, -0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf, -0x13bf,0x13bf,0x13bf,0x13bf,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13c5,0x13c5,0x13c5,0x13c5, -0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5, -0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13cb,0x13cb,0x13cb,0x13cb, -0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb, -0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13fb,0x13f8,0x1923,0x1923, -0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923, -0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1401,0x1401,0x1404,0x1404,0x1404,0x1404,0x1404,0x1401,0x1404,0x1404,0x1404,0x1401,0x1404,0x1401,0x1404, -0x1401,0x1404,0x1404,0x1404,0x1404,0x1404,0x1407,0x1404,0x1404,0x1404,0x1404,0x1401,0x1404,0x1401,0x1401,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1401,0x1401,0x1401,0x1401, -0x1401,0x1401,0x1401,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401, -0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x158a,0x158a,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1596,0x1590,0x1590,0x1596,0x1596,0x1596,0x1596, -0x1596,0x1596,0x1596,0x1596,0x1596,0x17d0,0x17d0,0x17d0,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1596,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1596,0x17d0,0x17d0, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1407,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1590,0x1590,0x1596,0x1596,0x1590,0x1596,0x1596,0x1596,0x158d,0x158d,0x1596,0x1596, -0x1404,0x1404,0x1407,0x1407,0x1407,0x1701,0x1404,0x1407,0x1404,0x1404,0x1407,0x1599,0x1599,0x1596,0x1596,0x17d0, -0x17d0,0x17d0,0x17d0,0x17d0,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1590,0x1590,0x1596,0x1701,0x1596,0x1590,0x1596,0x17d0,0x17d0,0x17d0,0x17d3,0x17d3,0x17d3,0x17d3,0x17d3, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1596, -0x1404,0x1596,0x1407,0x1407,0x1404,0x1404,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407, -0x1407,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407, -0x1407,0x1407,0x1407,0x1407,0x1407,0x1404,0x1404,0x1404,0x1407,0x1404,0x1404,0x1404,0x1404,0x1407,0x1407,0x1407, -0x1404,0x1407,0x1407,0x1407,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1407,0x1404,0x1407,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1701,0x1404,0x1404,0x1404,0x1404,0x1596,0x1590,0x17d0, -0x145e,0x145e,0x145e,0x145e,0x158a,0x158a,0x158d,0x158d,0x158d,0x1593,0x1596,0x17d0,0x17d0,0x17d0,0x17d0,0x1758, -0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404, -0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1596,0x1596,0x1590,0x1590,0x1596,0x1599,0x1599,0x1596,0x1596, -0x1596,0x1596,0x1887,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1596,0x1590,0x1596,0x1590,0x1590,0x1590,0x1590, -0x1596,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1596,0x1590,0x1590,0x1590,0x1596,0x158d,0x158d,0x158d,0x158d, -0x158d,0x158d,0x1596,0x1404,0x1404,0x1404,0x1404,0x1404,0x14e8,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a, -0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x14e8,0x140a,0x140a,0x140a,0x14e8,0x140a,0x14e8, -0x140a,0x14e8,0x140a,0x14e8,0x140a,0x140a,0x140a,0x14e8,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x14e8,0x14e8, -0x140a,0x140a,0x140a,0x140a,0x14e8,0x140a,0x14e8,0x14e8,0x140a,0x140a,0x140a,0x140a,0x14e8,0x140a,0x140a,0x140a, -0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x1707,0x1707,0x17d6,0x17d6,0x140d,0x140d,0x140d, -0x140a,0x140a,0x140a,0x140d,0x140d,0x140d,0x140d,0x140d,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686, -0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410, -0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410, -0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1413,0x1410,0x1410,0x1410,0x1410, -0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1413,0x1413,0x1413,0x1410, -0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416, -0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416, -0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1803,0x1803,0x1800,0x175b,0x1464,0x1464,0x1464,0x1464, -0x1464,0x1464,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464, -0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x15a2,0x1470,0x1470,0x1470,0x1482,0x1482,0x1482,0x1482,0x1482, -0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482, -0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d, -0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d, -0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x149d,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3, -0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3, -0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x14a3,0x1a34,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6, -0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6, -0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14a6,0x14ac,0x14ac,0x14b8,0x14be,0x14be,0x14be,0x14be,0x14be, -0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be, -0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14be,0x14b8,0x14b8,0x14b8,0x14ac,0x14ac, -0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14ac,0x14b8,0x14bb,0x14be,0x14c1,0x14c1,0x14be,0x14c4,0x14c4,0x14af, -0x14b2,0x1764,0x1767,0x1767,0x1767,0x15ab,0x1adc,0x1ad9,0x14b5,0x14b5,0x14b5,0x14b5,0x14b5,0x14b5,0x14b5,0x14b5, -0x14b5,0x14b5,0x15a8,0x176d,0x1770,0x176a,0x1773,0x1773,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df, -0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df, -0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x153c,0x1956,0x1956,0x1956,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c, -0x153c,0x1a22,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x18ba,0x1956,0x1956,0x1956,0x1956,0x1956, -0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1590,0x1590,0x1596,0x1596,0x1596,0x1590,0x1590,0x1590, -0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1596,0x1596,0x1596,0x158d,0x158d,0x158d,0x158d, -0x158d,0x158d,0x158d,0x158d,0x1596,0x1596,0x1596,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1596, -0x1590,0x1590,0x1596,0x1596,0x1596,0x1596,0x1590,0x1590,0x1599,0x1590,0x1590,0x1590,0x1590,0x1704,0x1704,0x1590, -0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1884,0x1596,0x1590,0x1590,0x1596,0x1590,0x1590,0x1590, -0x1590,0x1590,0x1590,0x1590,0x1590,0x1596,0x1596,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590,0x1590, -0x1596,0x1590,0x1590,0x1590,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba, -0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba,0x15ba, -0x15ba,0x15ba,0x15ba,0x15ba,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc, -0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc,0x15cc, -0x15cc,0x15cc,0x15cc,0x15cc,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2, -0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2, -0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5, -0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5, -0x15d5,0x15d5,0x15d5,0x15d5,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614, -0x1614,0x1614,0x1614,0x1605,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d, -0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1617, -0x1620,0x1620,0x1620,0x1620,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623,0x1623, -0x1623,0x1623,0x1623,0x1623,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x1635,0x163e,0x163e,0x163e, -0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e, -0x163e,0x163e,0x163e,0x163e,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647, -0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647, -0x1647,0x1647,0x1647,0x1647,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x1656, -0x1656,0x164a,0x1656,0x164d,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659, -0x1659,0x1659,0x1659,0x1659,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d, -0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d,0x167d, -0x167d,0x167a,0x167a,0x167a,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686, -0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x168c,0x168c,0x168c,0x1689,0x1689,0x1689, -0x1686,0x1686,0x1686,0x1686,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b, -0x169b,0x169b,0x169b,0x169b,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x16a1,0x16a1,0x1695,0x1692,0x1692, -0x1692,0x1692,0x1692,0x1692,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b, -0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b, -0x169b,0x169b,0x169b,0x169b,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7, -0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4, -0x16a4,0x16a4,0x16a4,0x16a4,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, -0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa, -0x16aa,0x16aa,0x16aa,0x16aa,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce, -0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce,0x16ce, -0x16ce,0x16ce,0x16ce,0x16ce,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7,0x16d7, -0x16d7,0x16d7,0x16d7,0x16d7,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef, -0x16ef,0x16ef,0x16ef,0x16ef,0x16da,0x16e9,0x16e9,0x16da,0x16da,0x16da,0x16da,0x16da,0x16da,0x16e9,0x16da,0x16ec, -0x16ec,0x16da,0x16ec,0x16da,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef, -0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef,0x16ef, -0x16ef,0x16ef,0x16ef,0x16ef,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8, -0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8,0x16f8, -0x16f8,0x16f8,0x16f8,0x16f8,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe, -0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe,0x16fe, -0x16fe,0x16fe,0x16fe,0x16fe,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956, -0x1740,0x1740,0x1740,0x1740,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956, -0x1956,0x1956,0x1956,0x1a22,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761, -0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761, -0x1761,0x1761,0x1761,0x1761,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d, -0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d, -0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x17a3,0x17a0,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d, -0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6, -0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6, -0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a6,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9, -0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9, -0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17a9,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, +0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x129f,0x1329,0x1326,0x1329,0x1326, +0x1329,0x1326,0x1329,0x1326,0x1329,0x1326,0x13e9,0x14fd,0x14fd,0x14fd,0x1791,0x1905,0x14fd,0x14fd,0x16dd,0x16dd, +0x16dd,0x16d7,0x16dd,0x16d7,0x1908,0x1905,0x19bf,0x19bc,0x19bf,0x19bc,0x19bf,0x19bc,0x134d,0x134d,0x134d,0x134d, +0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d, +0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x1362,0x1353,0x1362,0x1365, +0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365, +0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1353,0x1353,0x1353,0x1353, +0x1353,0x1353,0x1353,0x1353,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b, +0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b, +0x136b,0x136b,0x136b,0x136b,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371, +0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371, +0x1371,0x1371,0x1371,0x1371,0x139b,0x1398,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba, +0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba, +0x18ba,0x18ba,0x18ba,0x18ba,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a1,0x13a4,0x13a4,0x13a4,0x13a1,0x13a4,0x13a1,0x13a4,0x13a1,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a7,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a1,0x13a4,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1, +0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1527,0x1527, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x1767,0x1767,0x1767, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x1767,0x1767,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a7,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x1527,0x1527,0x152a,0x152a,0x13a4,0x13a4,0x13a7,0x13a7,0x13a7,0x1692,0x13a4,0x13a7, +0x13a4,0x13a4,0x13a7,0x152d,0x152d,0x152a,0x152a,0x1767,0x1767,0x1767,0x1767,0x1767,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x152a,0x152a,0x1692,0x152a,0x152a,0x152a, +0x1767,0x1767,0x1767,0x176a,0x176a,0x176a,0x176a,0x176a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x13a4,0x152a,0x13a7,0x13a7,0x13a4,0x13a4,0x13a7,0x13a7, +0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7, +0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a4,0x13a4,0x13a4, +0x13a7,0x13a4,0x13a4,0x13a4,0x13a4,0x13a7,0x13a7,0x13a7,0x13a4,0x13a7,0x13a7,0x13a7,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a7,0x13a4,0x13a7,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x1692,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x152a,0x1767,0x13fe,0x13fe,0x13fe,0x13fe,0x1527,0x1527,0x1527,0x1527, +0x1527,0x1527,0x152a,0x1767,0x1767,0x1767,0x1767,0x16ec,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4, +0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152d,0x152d,0x152a,0x152a,0x152a,0x152a,0x181e,0x152a,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x152a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x1488,0x13aa,0x13aa,0x13aa, +0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x1488,0x13aa,0x13aa, +0x13aa,0x1488,0x13aa,0x1488,0x13aa,0x1488,0x13aa,0x1488,0x13aa,0x13aa,0x13aa,0x1488,0x13aa,0x13aa,0x13aa,0x13aa, +0x13aa,0x13aa,0x1488,0x1488,0x13aa,0x13aa,0x13aa,0x13aa,0x1488,0x13aa,0x1488,0x1488,0x13aa,0x13aa,0x13aa,0x13aa, +0x1488,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x13aa,0x1698,0x1698,0x176d, +0x176d,0x13ad,0x13ad,0x13ad,0x13aa,0x13aa,0x13aa,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x1617,0x1617,0x1617,0x1617, +0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x13b0,0x13b0,0x13b0,0x13b0, +0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0, +0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b3, +0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0, +0x13b3,0x13b3,0x13b3,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b6,0x13b6,0x13b6,0x13b6, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6, +0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x179a,0x179a,0x1797,0x16ef, +0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1401,0x1401,0x1401,0x1401,0x1401,0x1401,0x1404,0x1404,0x1404,0x1404, +0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1404,0x1533,0x1407,0x1536,0x1407,0x1407, +0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x16f2, +0x16f2,0x1b39,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x1a67,0x1a67,0x1410,0x1410,0x1410,0x1422, +0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422, +0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x143d,0x143d,0x143d,0x143d, +0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d, +0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443, +0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x19c8,0x1446,0x1446,0x1446,0x1446, +0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446, +0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x1446,0x144c,0x144c,0x1458,0x145e, +0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e, +0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x1458, +0x1458,0x1458,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1458,0x145b,0x145e,0x1461,0x1461, +0x145e,0x1464,0x1464,0x144f,0x1452,0x16f8,0x16fb,0x16fb,0x16fb,0x153c,0x1a70,0x1a6d,0x1455,0x1455,0x1455,0x1455, +0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1539,0x1701,0x1704,0x16fe,0x1707,0x1707,0x147f,0x147f,0x147f,0x147f, +0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f, +0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x18ed,0x18ed,0x18ed,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9, +0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x19b6,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x14d9,0x1851,0x18ed, +0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x1527,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152d,0x152a,0x152a,0x152a,0x152a,0x1695,0x1695,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x181b,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a,0x152a, +0x152a,0x152a,0x152a,0x152a,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b, +0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b, +0x154b,0x154b,0x154b,0x154b,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d, +0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d, +0x155d,0x155d,0x155d,0x155d,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563, +0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563, +0x1563,0x1563,0x1563,0x1563,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566, +0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566, +0x1566,0x1566,0x1566,0x1566,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5,0x15a5, +0x15a5,0x15a5,0x15a5,0x1596,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae, +0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15ae,0x15a8, +0x15b1,0x15b1,0x15b1,0x15b1,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4,0x15b4, +0x15b4,0x15b4,0x15b4,0x15b4,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15c6,0x15cf,0x15cf,0x15cf, +0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf, +0x15cf,0x15cf,0x15cf,0x15cf,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8, +0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8, +0x15d8,0x15d8,0x15d8,0x15d8,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea, +0x15ea,0x15ea,0x15ea,0x15ea,0x15e7,0x15e7,0x15e7,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15db,0x15e7, +0x15e7,0x15db,0x15e7,0x15de,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea, +0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea, +0x15ea,0x15ea,0x15ea,0x15ea,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e, +0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x160e, +0x160e,0x160b,0x160b,0x160b,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617, +0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x1617,0x161d,0x161d,0x161d,0x161a,0x161a,0x161a, +0x1617,0x1617,0x1617,0x1617,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1632,0x1632,0x1626,0x1623,0x1623, +0x1623,0x1623,0x1623,0x1623,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c,0x162c, +0x162c,0x162c,0x162c,0x162c,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638, +0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1635,0x1635,0x1635,0x1635,0x1635, +0x1635,0x1635,0x1635,0x1635,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b, +0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x163b, +0x163b,0x163b,0x163b,0x163b,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f, +0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f, +0x165f,0x165f,0x165f,0x165f,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668,0x1668, +0x1668,0x1668,0x1668,0x1668,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680, +0x1680,0x1680,0x1680,0x1680,0x166b,0x167a,0x167a,0x166b,0x166b,0x166b,0x166b,0x166b,0x166b,0x167a,0x166b,0x167d, +0x167d,0x166b,0x167d,0x166b,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680, +0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680, +0x1680,0x1680,0x1680,0x1680,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689, +0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689, +0x1689,0x1689,0x1689,0x1689,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f, +0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f,0x168f, +0x168f,0x168f,0x168f,0x168f,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed, +0x16d4,0x16d4,0x16d4,0x16d4,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed, +0x18ed,0x18ed,0x18ed,0x19b6,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5, +0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5,0x16f5, +0x16f5,0x16f5,0x16f5,0x16f5,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734, +0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734, +0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x173a,0x1737,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734, +0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x1734,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d, +0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x173d,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740, +0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740, +0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752, +0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752, +0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755, +0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755, +0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758, +0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758, +0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x175b,0x175b,0x175b,0x175b,0x1758, +0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x175b,0x175b,0x175b, +0x175b,0x175b,0x175b,0x175b,0x175b,0x1758,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b, +0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b, +0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773, +0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773, +0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d,0x185d, +0x185d,0x185d,0x185d,0x185d,0x1ad3,0x1a28,0x1a28,0x1a2b,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776, +0x1779,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x18c3,0x1776,0x1776,0x1776,0x1776,0x1776,0x1824,0x1824,0x1824, +0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0, +0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x1776,0x19a1,0x19a1,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28, +0x1a28,0x1a28,0x1a28,0x1ad0,0x1ba2,0x1a2b,0x1a2b,0x1a2b,0x18c0,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c0,0x18c0,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67,0x1a67, +0x1b39,0x1b3c,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x1b36,0x191a,0x179d,0x179d,0x179d,0x179d, +0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x179d,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1827,0x1824, +0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x1827,0x18c3,0x18c3,0x1827,0x1827,0x1827,0x1827,0x1827, +0x1827,0x1827,0x1824,0x17a6,0x1827,0x1827,0x1827,0x1a28,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x17a6,0x1824, +0x1824,0x1824,0x1824,0x1824,0x18c0,0x19a1,0x19a1,0x19a1,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824, +0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x18c0,0x17bb,0x17bb,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8, +0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8, +0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17b8,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, 0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb, -0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be, -0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be, -0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1, -0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1, -0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c4,0x17c4,0x17c4,0x17c4,0x17c1, -0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c4,0x17c4,0x17c4, -0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c1,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4, -0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4, -0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17c4,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc, -0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc, -0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6, -0x18c6,0x18c6,0x18c6,0x18c6,0x1b3f,0x1a94,0x1a94,0x1a97,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df, -0x17e2,0x1890,0x1890,0x1890,0x1890,0x1890,0x1890,0x192c,0x17df,0x17df,0x17df,0x17df,0x17df,0x188d,0x188d,0x188d, -0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929, -0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1890,0x188d, -0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1890,0x192c,0x192c,0x1890,0x1890,0x1890,0x1890,0x1890, -0x1890,0x1890,0x188d,0x180f,0x1890,0x1890,0x1890,0x1a94,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x180f,0x188d, -0x188d,0x188d,0x188d,0x188d,0x1929,0x1a0a,0x1a0a,0x1a0a,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d, -0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1929,0x1824,0x1824,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821, -0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821, -0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824, -0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824, -0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872, -0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x186f,0x186f,0x186f, -0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x185a,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872, -0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872, -0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896, -0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896, -0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899, -0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899, -0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48, -0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x18f0,0x18f0,0x18f0,0x18f0,0x1a46,0x1a46,0x18f3,0x18f3, -0x18f3,0x18f3,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18ed, -0x18de,0x18e1,0x18e4,0x18f6,0x18f6,0x1995,0x18e7,0x18e7,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0, -0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0, -0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911, -0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x18fc,0x1902,0x18ff,0x18ff,0x18ff, -0x18ff,0x190e,0x1914,0x18ff,0x18ff,0x18ff,0x18ff,0x190b,0x1911,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff, -0x18ff,0x18ff,0x18ff,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911, -0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1911,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923, -0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923, -0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1923,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1929,0x1a0a, -0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a, -0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932, -0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932, -0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1932,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938, -0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938, -0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x1938,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa, -0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa, -0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5, -0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5, -0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb, -0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb, -0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6, -0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6, -0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e6,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9, -0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9, -0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19e9,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2, -0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19f2, -0x19f2,0x19f2,0x19f2,0x19f2,0x19f2,0x19ef,0x19ef,0x19ef,0x1a0a,0x1a0a,0x1a0a,0x1b3c,0x1b3c,0x1a94,0x1a94,0x1a94, -0x1a94,0x1a94,0x1a94,0x1b3c,0x1b3c,0x1b3c,0x1a94,0x1a94,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0a,0x1a10,0x1a10,0x1a0a, -0x1a10,0x1a10,0x1a94,0x1a97,0x1a94,0x1a94,0x1a94,0x1a94,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49, -0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49, -0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70, -0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a70,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79, -0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1aaf,0x1aaf,0x1a79,0x1aaf,0x1a79,0x1a79,0x1a79,0x1a79, -0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a7f,0x1a7f,0x1a7f,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, -0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b, -0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, -0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e, -0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b1e,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a, -0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a, -0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b2a,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e, -0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e, -0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b4e,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51, -0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51, -0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0x1b51,0,0,0,0 +0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x17bb,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809, +0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1806,0x1806,0x1806, +0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809, +0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809, +0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x1809,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d, +0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x182d,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830, +0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830, +0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc, +0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1887,0x1887,0x1887,0x1887,0x19da,0x19da,0x188a,0x188a, +0x188a,0x188a,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x1884, +0x1875,0x1878,0x187b,0x188d,0x188d,0x192c,0x187e,0x187e,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887, +0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887, +0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x1887,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8, +0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x1893,0x1899,0x1896,0x1896,0x1896, +0x1896,0x18a5,0x18ab,0x1896,0x1896,0x1896,0x1896,0x18a2,0x18a8,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896,0x1896, +0x1896,0x1896,0x1896,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8, +0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4,0x18b4, +0x18b4,0x18b4,0x18b4,0x199b,0x199b,0x199b,0x199b,0x199b,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7, +0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1b93,0x1b93,0x1b93,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba, +0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba, +0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0, +0x18c0,0x18c0,0x18c0,0x18c0,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x1a28,0x1ad0,0x19a1,0x19a1,0x19a1,0x19a1,0x1ad3, +0x1ad0,0x1ba2,0x19a1,0x1a28,0x19a1,0x19a1,0x19a1,0x19a1,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x18c0,0x19a1, +0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1, +0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9, +0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc, +0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc, +0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x1ba5,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf, +0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x18cf,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941, +0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941, +0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c, +0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c, +0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x195c,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962, +0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962, +0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d, +0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980, +0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980, +0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989, +0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989, +0x1989,0x1989,0x1989,0x1989,0x1989,0x1986,0x1986,0x1986,0x19a1,0x19a1,0x19a1,0x1ad0,0x1ad0,0x1a28,0x1a28,0x1a28, +0x1a28,0x1a28,0x1a28,0x1ad0,0x1ad0,0x1ad0,0x1a28,0x1a28,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a4,0x19a4,0x19a1, +0x19a4,0x19a4,0x1a28,0x1a2b,0x1a28,0x1a28,0x1a28,0x1a28,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd, +0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd, +0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04, +0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04, +0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a04,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d, +0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a43,0x1a43,0x1a0d,0x1a43,0x1a0d,0x1a0d,0x1a0d,0x1a0d, +0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a13,0x1a13,0x1a13,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f, +0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f, +0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2, +0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2, +0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1ab2,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe, +0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe, +0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2, +0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2, +0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5, +0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5, +0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a, +0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a, +0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b, +0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b, +0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d, +0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d, +0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90, +0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90, +0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0x1b90,0,0,0,0 }; static const UTrie2 propsVectorsTrie={ propsVectorsTrie_index, - propsVectorsTrie_index+5024, + propsVectorsTrie_index+5188, NULL, - 5024, - 26204, + 5188, + 26872, 0xa40, - 0x1420, + 0x14c4, 0x0, 0x0, 0x110000, - 0x79f8, + 0x7d38, NULL, 0, FALSE, FALSE, 0, NULL }; -static const uint32_t propsVectors[6999]={ -0x67,0,0,0x67,0,0x4e00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67, -0,0,0xc67,0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0, -0,0x1267,0,0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0, -0x1767,0,0,0x1867,0,0,0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67, -0,0,0x1f67,0,0,0x2067,0,0,0x2267,0,0,0x2367,0,0,0x2467,0, -0,0x2567,0,0,0x2767,0,0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000, -0x2b67,0,0,0x2d67,0,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67, -0,0,0x3c67,0,0,0x3e67,0,0,0x4067,0,0,0x4167,0,0,0x4467,0, -0,0x4867,0,0,0x4967,0,0,0x4a67,0,0,0x5067,0,0,0x5167,0,0, -0x5467,0,0,0x5567,0,0,0x5667,0x80000,0x20,0x5767,0,0,0x5867,0,0,0x5967, -0,0,0x5b67,0,0,0x5c67,0,0,0x5d67,0,0,0x6067,0x80000,0x20,0x6267,0, -0,0x6367,0,0,0x6467,0,0,0x6567,0,0,0x6f67,0,0,0x7067,0,0, -0x7367,0x20000000,0,0x7567,0,0,0x7667,0,0,0x7767,0,0,0x7867,0,0,0x7a67, -0,0,0x7b67,0,0,0x7c67,0,0,0x7e67,0,0,0x7f67,0,0,0x8167,0, -0,0x8267,0,0,0x8367,0,0,0x8467,0,0,0x8567,0,0,0x8667,0,0, -0x8767,0,0,0x8867,0,0,0x8967,0,0,0x8b67,0,0,0x8c67,0,0,0x8e67, -0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167,0,0,0x9267,0,0,0x9367,0, -0,0x9567,0,0,0x9667,0,0,0x9767,0,0,0x9867,0,0,0x9967,0,0, -0x9a67,0,0,0x9c67,0,0,0x9f67,0,0,0xa167,0,0,0xa367,0,0,0xa467, -0,0,0xa567,0,0,0xa667,0,0,0xa767,0,0,0xa867,0,0,0xa967,0, -0,0xaa67,0,0x4e00000,0xab67,0,0x4e00000,0xac67,0,0,0xad67,0,0,0xae67,0,0, -0xaf67,0,0,0xb167,0,0,0xb267,0,0,0xb467,0,0,0xb567,0,0,0xb767, -0,0,0xb867,0,0,0xb967,0,0,0xba67,0,0,0xbc67,0,0,0xbd67,0, -0,0xbe67,0,0,0xbf67,0,0,0xc067,0,0,0xc167,0,0,0xc267,0,0, -0xc367,0,0x4e00000,0xc467,0,0x4e00000,0xc667,0,0,0xc767,0,0,0xc867,0,0,0xc967, -0,0,0xca67,0,0,0xcc67,0,0x4e00000,0xcf67,0,0x4e00000,0xd067,0,0x4e00000,0xd267,0, -0,0xd367,0,0,0xd467,0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0, -0xda67,0,0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67, -0,0,0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0x4e00000,0xe467,0, -0,0xe567,0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0, -0xea67,0,0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67, -0,0,0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0, -0,0xf867,0,0,0xf967,0,0,0xfa67,0,0x4e00000,0xfb67,0,0,0xfc67,0,0, -0xfd67,0,0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467, -0,0,0x10567,0,0x4e00000,0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967,0, -0,0x10a67,0,0,0x10b67,0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0, -0x10f67,0,0,0x11067,0,0,0x11367,0,0,0x11467,0,0,0x11567,0,0,0x11667, -0,0,0x11767,0,0,0x11867,0,0,0x11967,0,0x4e00000,0x11a67,0,0,0x11b67,0, -0,0x11c67,0,0,0x11d67,0,0,0x11e67,0,0,0x11f67,0,0,0x12067,0,0, -0x12167,0,0,0x12267,0,0,0x12367,0,0,0x12467,0,0,0x12567,0,0,0x12667, -0,0,0x12767,0,0,0x12867,0,0,0x12967,0,0,0x12a67,0,0x4e00000,0x12b67,0, -0,0x12c67,0,0,0x12d67,0,0,0x12f67,0,0,0x13067,0,0,0x13167,0,0, -0x13267,0,0,0x13367,0,0,0x13467,0,0,0xa0067,0,0xe00000,0xa4767,0,0xe00000,0xa4f67, -0,0xe00000,0xa5e67,0,0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0, -0xe00000,0xb1267,0,0xe00000,0xb2e67,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020, -0x11000100,0x40000001,0xa5a040,0x11000100,0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200, -0x24000000,0x14200000,0x11000200,0x24000008,0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100, -0x220401,0x11000319,0x7c00100,0x220402,0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401, -0x11000419,0x7c00100,0x220402,0x11000419,0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519, -0x7c00100,0x220400,0x11000519,0x7c00100,0x230400,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500, -0x230400,0x11000600,0x7c00500,0x530400,0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001, -0x11000800,0x6800010,0x201001,0x11000800,0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e, -0x4000400,0x200002,0x1100080e,0x7000500,0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100, -0x250400,0x1100080e,0x7c00100,0x250401,0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400, -0x11000908,0x7c00100,0x220401,0x11000908,0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200400,0x11000a03,0x4000000,0x201000,0x11000a03, -0x4000000,0x270000,0x11000a03,0x7c00100,0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000a03,0xc000010, -0x1049400,0x11000b13,0x2802500,0x962460,0x11000b13,0x4000000,0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000, -0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,0x2633800,0x11000c00,0x80000000,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02, -0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,0x11000c02,0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100, -0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,0x7c00100,0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000f01,0x2802400,0x962460, -0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,0x962460,0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a, -0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,0x11001004,0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000, -0x200000,0x11001004,0x4000000,0x1500000,0x11001004,0x6800100,0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401, -0x11001110,0x2802100,0x962460,0x11001110,0x2802400,0x962460,0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110, -0x7c00100,0x230401,0x1100120f,0x2802100,0x962460,0x1100120f,0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100, -0x230400,0x1100131f,0x2802100,0x962460,0x1100131f,0x2802400,0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800, -0x1100131f,0x6800100,0x962540,0x1100131f,0x6800100,0x962541,0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423, -0x2806400,0x962460,0x11001423,0x6800100,0x962540,0x11001423,0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100, -0x962460,0x11001524,0x2802100,0x962461,0x11001524,0x2806400,0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400, -0x11001615,0x2802100,0x962460,0x11001615,0x2806400,0x962460,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a, -0x2802100,0x962460,0x1100171a,0x2806400,0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100, -0x230400,0x11001900,0x4000000,0x1600000,0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000, -0x11001926,0x4000010,0x400000,0x11001926,0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926, -0x7e00100,0x1830000,0x11001a18,0x2802100,0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100, -0x1830000,0x11001a18,0x7c00100,0x1830002,0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400, -0x11001e12,0x7c00100,0x2230500,0x11001e12,0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619, -0x7c00100,0x250401,0x1100270e,0x4000400,0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100, -0x250401,0x11002800,0x80000,0x918820,0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x445801,0x11002800,0x4000001,0x445802, -0x11002800,0x4000001,0xc4000b,0x11002800,0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800, -0x24000000,0x810000,0x11002800,0x24000000,0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006, -0xc0000b,0x11002800,0x24000008,0x1410000,0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000, -0x11002800,0x2c000010,0x15248002,0x11002800,0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0xaa65620,0x11002801,0x82000,0x962460,0x11002900, -0x4000000,0x20000e,0x11002900,0x4000000,0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020, -0x81000f,0x11002900,0x4000020,0x141000e,0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000, -0x11002a00,0x4000000,0x1600000,0x11002a00,0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00, -0x4000000,0x200002,0x11002c00,0x4000000,0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120, -0x220405,0x11002c00,0x7c00120,0x230402,0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401, -0x11002d00,0x4000000,0x100006,0x11002d00,0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00, -0x24000000,0x200000,0x11002e00,0x24000020,0x200000,0x11002e00,0x24000020,0x200001,0x11002e00,0x24000020,0x14200000,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020, -0x200001,0x11002f00,0x24000020,0x200002,0x11002f00,0x24000020,0xf00000,0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000, -0x11003000,0x24000000,0x14200000,0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000,0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200, -0x24000000,0x200000,0x11003300,0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000,0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000, -0x200000,0x11003600,0x24000000,0x14200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0x4200000,0x11003700,0x24000000,0x4e00000, -0x11003700,0x24000000,0x14200000,0x11003700,0x24000000,0x14e00000,0x11003700,0x24000000,0x96800000,0x11003700,0x24000020,0x4200000,0x11003800,0x4000000,0x100000,0x11003800, -0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x4200000,0x11003800,0x24000000,0x4e00000,0x11003800,0x24000000, -0x14200000,0x11003800,0x24000000,0x14b00000,0x11003800,0x24000000,0x14e00000,0x11003800,0x24000000,0x96800000,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460, -0x11005013,0x4000020,0x200005,0x11005013,0x7c00100,0x2633801,0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005100, -0x24000000,0x810000,0x11005100,0x24000000,0x1410000,0x11005102,0x7000100,0x230408,0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100, -0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,0x11005500,0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404, -0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,0x7c00100,0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200, -0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,0x100002,0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000, -0x100000,0x11020200,0x24000000,0x1400000,0x11020200,0x24000000,0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000000,0x14200000,0x11020200,0x24000020,0x100000, -0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,0x7c00100,0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319, -0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,0x220402,0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100, -0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,0x11020600,0x4000400,0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400, -0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,0x2802400,0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e, -0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,0x220401,0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000, -0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,0x11022800,0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02, -0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,0x24000002,0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800, -0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,0x100000,0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000, -0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,0x11022c00,0x4000000,0x100002,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002, -0x11022c00,0x4000000,0x1410000f,0x11022c00,0x7c00120,0x120405,0x11022c0e,0x7c00100,0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00, -0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,0x150402,0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022e00,0x24000020, -0x14100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,0x11022f00,0x24000020,0x100002,0x11023000,0x24000000,0x100000,0x11023300,0x4000000,0x100002, -0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,0x4000100,0x150403,0x11023300,0x4000100,0x14150403,0x11023400,0x24000000,0x100000,0x11023500, -0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,0x100000,0x11023600,0x24000020,0x14100000,0x11023700,0x24000000,0x4100000,0x11023700,0x24000000, -0x4e00000,0x11023700,0x24000000,0x14100000,0x11023700,0x24000000,0x14e00000,0x11023700,0x24000020,0x100000,0x11023700,0x24000020,0x4100000,0x11023700,0x24000020,0x14100000, -0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00,0x4000000,0x1600000,0x11045700, -0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100,0xe30c0a,0x11045716,0x7c00100, -0x2530c0a,0x11063d00,0x4000001,0x445811,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011,0x11065700,0x4000000,0x1500011, -0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700,0x4000010,0x871411,0x11065700, -0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420,0xe00011,0x11065700,0x6800000, -0xe01c11,0x11065700,0x6800040,0xe29811,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411,0x11065719,0x7c00100,0xe50411, -0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x19329800,0x11080100,0x24000000,0x200000,0x11080100, -0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000,0x1b00000,0x11080100,0x24000000, -0x2410000,0x11080100,0x24000000,0x18200000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400, +static const uint32_t propsVectors[7095]={ +0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67, +0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,0,0x1267,0, +0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,0x1767,0,0, +0x1867,0,0,0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,0,0,0x1f67, +0,0,0x2067,0,0,0x2267,0,0,0x2367,0,0,0x2467,0,0,0x2567,0, +0,0x2767,0,0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,0x2b67,0,0, +0x2d67,0,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67,0,0,0x3c67, +0,0,0x3e67,0,0,0x4067,0,0,0x4167,0,0,0x4467,0,0,0x4867,0, +0,0x4967,0,0,0x4a67,0,0,0x5067,0,0,0x5167,0,0,0x5467,0,0, +0x5567,0,0,0x5667,0x80000,0x20,0x5767,0,0,0x5867,0,0,0x5967,0,0,0x5b67, +0,0,0x5c67,0,0,0x5d67,0,0,0x6067,0x80000,0x20,0x6267,0,0,0x6367,0, +0,0x6467,0,0,0x6567,0,0,0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0, +0x7567,0,0,0x7667,0,0,0x7767,0,0,0x7867,0,0,0x7a67,0,0,0x7b67, +0,0,0x7c67,0,0,0x7e67,0,0,0x7f67,0,0,0x8167,0,0,0x8267,0, +0,0x8467,0,0,0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8967,0,0, +0x8b67,0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167, +0,0,0x9267,0,0,0x9367,0,0,0x9567,0,0,0x9667,0,0,0x9767,0, +0,0x9867,0,0,0x9967,0,0,0x9a67,0,0,0x9c67,0,0,0x9f67,0,0, +0xa167,0,0,0xa367,0,0,0xa467,0,0,0xa567,0,0,0xa667,0,0,0xa767, +0,0,0xa867,0,0,0xa967,0,0,0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0, +0,0xad67,0,0,0xae67,0,0,0xaf67,0,0,0xb167,0,0,0xb267,0,0, +0xb467,0,0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,0,0xba67, +0,0,0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,0xc067,0, +0,0xc167,0,0,0xc267,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,0,0, +0xc767,0,0,0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcc67,0,0xe00000,0xcf67, +0,0xe00000,0xd067,0,0xe00000,0xd367,0,0,0xd467,0,0,0xd567,0,0,0xd667,0, +0,0xd867,0,0,0xda67,0,0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0, +0xde67,0,0,0xdf67,0,0,0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367, +0,0xe00000,0xe467,0,0,0xe567,0,0,0xe667,0,0,0xe767,0,0,0xe867,0, +0,0xe967,0,0,0xea67,0,0,0xeb67,0,0,0xec67,0,0,0xed67,0,0, +0xee67,0,0,0xef67,0,0,0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667, +0,0,0xf767,0,0,0xf867,0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0, +0,0xfc67,0,0,0xfd67,0,0,0xfe67,0,0,0x10167,0,0,0x10267,0,0, +0x10367,0,0,0x10467,0,0,0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967, +0,0,0x10a67,0,0,0x10b67,0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0, +0,0x10f67,0,0,0x11067,0,0,0x11367,0,0,0x11467,0,0,0x11567,0,0, +0x11667,0,0,0x11767,0,0,0x11867,0,0,0x11967,0,0xe00000,0x11a67,0,0,0x11b67, +0,0,0x11c67,0,0,0x11d67,0,0,0x11e67,0,0,0x11f67,0,0,0x12067,0, +0,0x12167,0,0,0x12267,0,0,0x12367,0,0,0x12467,0,0,0x12567,0,0, +0x12667,0,0,0x12767,0,0,0x12867,0,0,0x12967,0,0,0x12a67,0,0xe00000,0x12b67, +0,0,0x12c67,0,0,0x12d67,0,0,0x12f67,0,0,0x13067,0,0,0x13167,0, +0,0x13267,0,0,0x13367,0,0,0x13467,0,0,0x13567,0,0,0x13667,0,0, +0x13767,0,0,0x13867,0,0,0x13967,0,0,0x13a67,0,0,0x13b67,0,0,0x13c67, +0,0,0x13d67,0,0,0x13f67,0,0,0x14067,0,0,0xa0067,0,0xe00000,0xa4f67,0, +0xe00000,0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0,0xe00000,0xb1267,0,0xe00000, +0xb2e67,0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100, +0x40000001,0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x200000,0x11000200,0x24000008, +0x1710000,0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402, +0x11000319,0x7c00100,0x250400,0x11000319,0x7c00100,0x250401,0x11000419,0x7c00100,0x220400,0x11000419,0x7c00100,0x220401,0x11000419,0x7c00100,0x220402,0x11000419, +0x7c00100,0x230400,0x11000419,0x7c00100,0x250400,0x11000419,0x7c00100,0x250401,0x11000419,0x7c00100,0x250402,0x11000519,0x7c00100,0x220400,0x11000519,0x7c00100, +0x230400,0x11000600,0x4000400,0x200002,0x11000600,0x4000400,0x200400,0x11000600,0x7c00500,0x220400,0x11000600,0x7c00500,0x230400,0x11000600,0x7c00500,0x530400, +0x11000600,0x7c00d00,0x230400,0x11000619,0x7c00500,0x22040f,0x11000800,0x4000010,0x1001401,0x11000800,0x4000400,0x200001,0x11000800,0x6800010,0x201001,0x11000800, +0x7c00500,0x230401,0x11000807,0x7c00100,0x220400,0x11000807,0x7c00100,0x250400,0x1100080e,0x4000400,0x200000,0x1100080e,0x4000400,0x200002,0x1100080e,0x7000500, +0x220402,0x1100080e,0x7c00100,0x220400,0x1100080e,0x7c00100,0x220401,0x1100080e,0x7c00100,0x220402,0x1100080e,0x7c00100,0x250400,0x1100080e,0x7c00100,0x250401, +0x1100080e,0x7c00120,0x220402,0x1100080e,0x7c00120,0x250402,0x11000908,0x4000000,0x200000,0x11000908,0x7c00100,0x220400,0x11000908,0x7c00100,0x220401,0x11000908, +0x7c00100,0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200400,0x11000a03,0x4000000,0x201000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100, +0x220400,0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000a03,0xc000010,0x1049400,0x11000b13,0x2802500,0x962460, +0x11000b13,0x4000000,0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13, +0x7c00100,0x2633800,0x11000c00,0x80000000,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000, +0x1329400,0x11000c02,0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401, +0x11000c02,0x7c00100,0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000f01,0x2802400,0x962460,0x11000f0a,0x2802100,0x962460,0x11000f0a, +0x2802400,0x962460,0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100, +0x230401,0x11001004,0x2802100,0x962460,0x11001004,0x2802400,0x962460,0x11001004,0x2806400,0x962460,0x11001004,0x4000000,0x200000,0x11001004,0x4000000,0x1500000, +0x11001004,0x6800100,0x962540,0x11001004,0x6800100,0x962541,0x11001004,0x7c00100,0x230400,0x11001004,0x7c00100,0x230401,0x11001110,0x2802100,0x962460,0x11001110, +0x2802400,0x962460,0x11001110,0x2806400,0x962460,0x11001110,0x6800100,0x962540,0x11001110,0x7c00100,0x230400,0x11001110,0x7c00100,0x230401,0x1100120f,0x2802100, +0x962460,0x1100120f,0x2802400,0x962460,0x1100120f,0x2806400,0x962460,0x1100120f,0x6800100,0x962540,0x1100120f,0x7c00100,0x230400,0x1100131f,0x2802100,0x962460, +0x1100131f,0x2802400,0x962460,0x1100131f,0x2806400,0x962460,0x1100131f,0x4000000,0x200000,0x1100131f,0x6800000,0x1329800,0x1100131f,0x6800100,0x962540,0x1100131f, +0x6800100,0x962541,0x1100131f,0x7c00100,0x230400,0x1100131f,0x7c00100,0x230401,0x11001423,0x2802100,0x962460,0x11001423,0x2806400,0x962460,0x11001423,0x6800100, +0x962540,0x11001423,0x6800100,0x962541,0x11001423,0x7c00100,0x230400,0x11001423,0x7c00100,0x230401,0x11001524,0x2802100,0x962460,0x11001524,0x2802100,0x962461, +0x11001524,0x2806400,0x962460,0x11001524,0x6800000,0x1329800,0x11001524,0x6800100,0x962540,0x11001524,0x7c00100,0x230400,0x11001615,0x2802100,0x962460,0x11001615, +0x2806400,0x962460,0x11001615,0x6800100,0x962540,0x11001615,0x6800100,0x962541,0x11001615,0x7c00100,0x230400,0x1100171a,0x2802100,0x962460,0x1100171a,0x2806400, +0x962460,0x1100171a,0x6800000,0x1329800,0x1100171a,0x6800100,0x962540,0x1100171a,0x6800100,0x962541,0x1100171a,0x7c00100,0x230400,0x11001900,0x4000000,0x1600000, +0x11001926,0x2802100,0x1862460,0x11001926,0x2802400,0x1862460,0x11001926,0x2806100,0x1862460,0x11001926,0x4000000,0x200000,0x11001926,0x4000010,0x400000,0x11001926, +0x6800000,0x1329800,0x11001926,0x7800100,0x1830142,0x11001926,0x7c00100,0x1830000,0x11001926,0x7c00900,0x1830000,0x11001926,0x7e00100,0x1830000,0x11001a18,0x2802100, +0x1862460,0x11001a18,0x2802400,0x1862460,0x11001a18,0x6800000,0x1329800,0x11001a18,0x7800100,0x1830142,0x11001a18,0x7c00100,0x1830000,0x11001a18,0x7c00100,0x1830002, +0x11001a18,0x7c00900,0x1830000,0x11001a18,0x7e00100,0x1830000,0x11001d0c,0x7c00100,0x230400,0x11001d0c,0x7c00100,0x250400,0x11001e12,0x7c00100,0x2230500,0x11001e12, +0x7c00100,0x2330520,0x11001e12,0x7c80100,0x2330520,0x11002619,0x7c00100,0x220401,0x11002619,0x7c00100,0x220402,0x11002619,0x7c00100,0x250401,0x1100270e,0x4000400, +0x200001,0x1100270e,0x4000400,0x200002,0x1100270e,0x4000400,0x500001,0x1100270e,0x7c00100,0x220401,0x1100270e,0x7c00100,0x250401,0x11002800,0x80000,0x918820, +0x11002800,0x80000,0x1c18020,0x11002800,0x180000,0x918820,0x11002800,0x4000001,0x445801,0x11002800,0x4000001,0x445802,0x11002800,0x4000001,0xc4000b,0x11002800, +0x6800000,0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000, +0x1410000,0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000, +0x11002800,0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x1248002,0x11002800, +0x40000001,0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000, +0x20000f,0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e, +0x11002900,0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00, +0x4000000,0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000, +0x20000f,0x11002c00,0x4000020,0x200000,0x11002c00,0x7c00000,0x200000,0x11002c00,0x7c00020,0x200000,0x11002c00,0x7c00120,0x220405,0x11002c00,0x7c00120,0x230402, +0x11002c00,0x7c00120,0x250402,0x11002c00,0x7c00120,0x250405,0x11002c19,0x7c00100,0x250400,0x11002c19,0x7c00100,0x250401,0x11002d00,0x4000000,0x100006,0x11002d00, +0x4000000,0x200006,0x11002d19,0x7c00100,0x220402,0x11002d19,0x7c00100,0x230400,0x11002d19,0x7c00100,0x250402,0x11002e00,0x24000000,0x200000,0x11002e00,0x24000020, +0x200000,0x11002e00,0x24000020,0x200001,0x11002f00,0x24000020,0x200000,0x11002f00,0x24000020,0x200001,0x11002f00,0x24000020,0x200002,0x11002f00,0x24000020,0xf00000, +0x11002f00,0x24000020,0x1600000,0x11002f00,0x24000022,0x1600000,0x11003000,0x24000000,0x200000,0x11003000,0x24000020,0x200000,0x11003000,0x24000020,0x810000,0x11003000, +0x24000020,0x1410000,0x11003100,0x24000000,0x200000,0x11003200,0x24000000,0x200000,0x11003300,0x4000000,0x100003,0x11003400,0x24000000,0x100000,0x11003400,0x24000000, +0x200000,0x11003500,0x24000000,0x200000,0x11003600,0x24000000,0x200000,0x11003600,0x24000020,0x200000,0x11003700,0x24000000,0x200000,0x11003700,0x24000000,0xe00000, +0x11003700,0x24000000,0x2800000,0x11003700,0x24000020,0x200000,0x11003800,0x4000000,0x100000,0x11003800,0x24000000,0x200000,0x11003800,0x24000000,0xb00000,0x11003800, +0x24000000,0xe00000,0x11003800,0x24000000,0x1710000,0x11003800,0x24000000,0x2800000,0x11005003,0x7c00100,0x220402,0x11005013,0x2802500,0x962460,0x11005013,0x4000020, +0x200005,0x11005013,0x7c00100,0x2633801,0x11005013,0x7c00100,0x2633802,0x11005013,0x7c00100,0x2633805,0x11005019,0x7c00100,0x220402,0x11005102,0x7000100,0x230408, +0x11005102,0x7c00100,0x230404,0x11005102,0x7c00100,0x230407,0x11005102,0x7c00100,0x230408,0x11005102,0x7c00100,0x230409,0x11005201,0x2802400,0x962460,0x11005500, +0x80000,0x1e18820,0x11005502,0x7000100,0x230408,0x11005502,0x7c00100,0x230404,0x11005502,0x7c00100,0x230407,0x11005502,0x7c00100,0x230408,0x11005502,0x7c00100, +0x230409,0x11005667,0x1000,0,0x11020200,0x80004,0x418820,0x11020200,0x4000000,0x100006,0x11020200,0x4000000,0x10000f,0x11020200,0x4000400,0x100002, +0x11020200,0x4000400,0x500002,0x11020200,0x6800c00,0x101000,0x11020200,0x24000000,0x100000,0x11020200,0x24000000,0x200000,0x11020200,0x24000000,0x1400000,0x11020200, +0x24000000,0x1500000,0x11020200,0x24000000,0x1600000,0x11020200,0x24000020,0x100000,0x11020200,0x24000020,0x1600000,0x11020219,0x7c00100,0x12040f,0x11020219,0x7c00100, +0x220400,0x11020219,0x7c00100,0x220401,0x11020219,0x7c00100,0x250400,0x11020319,0x7c00100,0x220400,0x11020319,0x7c00100,0x220401,0x11020319,0x7c00100,0x220402, +0x11020319,0x7c00100,0x250400,0x11020319,0x7c00100,0x250402,0x11020319,0x7d00100,0x220402,0x11020419,0x7c00100,0x220401,0x11020519,0x7c00100,0x220400,0x11020600, +0x4000400,0x100002,0x11020600,0x4000400,0x200400,0x11020600,0x7c00500,0x130400,0x11020600,0x7c00d00,0x130400,0x11020701,0x2802400,0x962460,0x11020701,0x2802400, +0x962461,0x11020701,0x2802400,0xc62460,0x1102080e,0x7c00100,0x220400,0x1102080e,0x7c00100,0x250400,0x11020908,0x7c00100,0x220400,0x11020908,0x7c00100,0x220401, +0x11020908,0x7c00100,0x250400,0x11020908,0x7c00100,0x250401,0x11022800,0x24000000,0x100000,0x11022800,0x24000000,0x200000,0x11022800,0x24000000,0x200002,0x11022800, +0x24000000,0x401000,0x11022800,0x24000000,0xf00002,0x11022800,0x24000000,0xf0ac02,0x11022800,0x24000000,0x1500000,0x11022800,0x24000002,0x100000,0x11022800,0x24000002, +0x370000,0x11022800,0x24000002,0x470000,0x11022800,0x24000006,0x400000,0x11022800,0x24000008,0x1710000,0x11022800,0x24000008,0x1712c00,0x11022800,0x24000020,0x100000, +0x11022800,0x24000020,0x1500000,0x11022800,0x24000020,0x1500002,0x11022900,0x4000000,0x10000e,0x11022900,0x4000000,0x10000f,0x11022919,0x7c00100,0x12040f,0x11022c00, +0x4000000,0x100002,0x11022c00,0x4000000,0x10000f,0x11022c00,0x4000000,0x1500002,0x11022c00,0x4000000,0x1600002,0x11022c00,0x7c00120,0x120405,0x11022c0e,0x7c00100, +0x250401,0x11022c19,0x7c00100,0x150401,0x11022d00,0x4000000,0x100006,0x11022d00,0x4000000,0x200006,0x11022d19,0x7c00100,0x120402,0x11022d19,0x7c00100,0x150402, +0x11022e00,0x24000000,0x200000,0x11022e00,0x24000020,0x100000,0x11022f00,0x24000020,0x100000,0x11022f00,0x24000020,0x100001,0x11022f00,0x24000020,0x100002,0x11023000, +0x24000000,0x100000,0x11023300,0x4000000,0x100002,0x11023300,0x4000000,0x100003,0x11023300,0x4000100,0x120403,0x11023300,0x4000100,0x150403,0x11023400,0x24000000, +0x100000,0x11023500,0x24000000,0x100000,0x11023600,0x24000000,0x100000,0x11023600,0x24000020,0x100000,0x11023700,0x24000000,0x100000,0x11023700,0x24000000,0xe00000, +0x11023700,0x24000020,0x100000,0x11023800,0x4000000,0x100000,0x11023800,0x24000000,0x200000,0x11024e67,0,0,0x11025600,0x4000000,0x100000,0x11042a00, +0x4000000,0x1600000,0x11045700,0x4000000,0x20000a,0x11045700,0x4000020,0x20000a,0x11045712,0x7c00100,0xe3040a,0x11045712,0x7c80100,0xe3040a,0x11045716,0x7c00100, +0xe30c0a,0x11045716,0x7c00100,0x2530c0a,0x11063d00,0x4000001,0x445811,0x11065700,0x4000000,0x810011,0x11065700,0x4000000,0xe00011,0x11065700,0x4000000,0x1410011, +0x11065700,0x4000000,0x1500011,0x11065700,0x4000000,0x1600011,0x11065700,0x4000006,0xe70011,0x11065700,0x4000008,0xe00011,0x11065700,0x4000008,0xe02c11,0x11065700, +0x4000010,0x871411,0x11065700,0x4000010,0x1201411,0x11065700,0x4000010,0x1271011,0x11065700,0x4000020,0xe00011,0x11065700,0x4000400,0xe00011,0x11065700,0x4000420, +0xe00011,0x11065700,0x6800000,0xe01c11,0x11065700,0x6800040,0xe29811,0x11065700,0xc000010,0x80ac11,0x11065700,0xc000010,0xb48011,0x11065719,0x7c00100,0xe20411, +0x11065719,0x7c00100,0xe50411,0x11065719,0x7c00140,0xe20411,0x11065719,0x7c00140,0xe50411,0x11080100,0x6800000,0x201c00,0x11080100,0x68000c0,0x1329800,0x11080100, +0x24000000,0x200000,0x11080100,0x24000000,0x810000,0x11080100,0x24000000,0x1410000,0x11080100,0x24000000,0x1500000,0x11080100,0x24000000,0x1600000,0x11080100,0x24000000, +0x1b00000,0x11080100,0x24000000,0x2410000,0x11080100,0x24000006,0xd70000,0x11080100,0x24000008,0x1713c00,0x11080100,0x24000008,0x1714000,0x11080100,0x24000010,0x1001400, 0x11080100,0x24000010,0x1071000,0x11080100,0x24000010,0x1071400,0x11080100,0x24000020,0x200000,0x11080100,0x24000020,0x400000,0x11080100,0x24000020,0x1600000,0x11080100, 0x24000400,0x200000,0x11080100,0x24000420,0x200000,0x11080100,0x2c000010,0xb48000,0x11080100,0x2c000010,0x100ac00,0x11080100,0x44000001,0x1a45800,0x11080119,0x7c00100, 0x220400,0x11080119,0x7c00100,0x250400,0x11080119,0x7c001c0,0x220400,0x11080119,0x7c001c0,0x250400,0x11080200,0x4000400,0x200002,0x11080200,0x24000000,0x200000, 0x11080200,0x24000000,0x1500000,0x11080200,0x24000000,0x1600000,0x11080200,0x24000020,0x200000,0x110a1e12,0x7c00100,0x2130480,0x110a1e12,0x7c80100,0x2130480,0x110a3000, -0x24000000,0x34e00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,0x34200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000, +0x24000000,0xe00000,0x110a3000,0x24100000,0x810001,0x110a3000,0x24100000,0x1410001,0x110a3700,0x24000000,0x200000,0x110a3d00,0x4000000,0xe00000,0x110a3d00,0x4000000, 0xe00002,0x110a3d00,0x24000000,0xe00000,0x110a3d11,0x7c00300,0xe30000,0x110a3d11,0x7c00900,0x1230400,0x110a3d12,0x2802400,0x962460,0x110a3e14,0x7c00100,0xe30000, 0x110a3e14,0x7c00100,0xe30001,0x110a3e14,0x7c00100,0x2530000,0x110a3e14,0x7c00900,0x1230000,0x110a3e14,0x7c00900,0x1230001,0x110a3f16,0x7c00100,0xe30c00,0x110a3f16, 0x7c00100,0xe30c01,0x110a3f16,0x7c00100,0x2530c00,0x110a3f16,0x7c00900,0x1230c00,0x110a3f16,0x7c00900,0x1230c01,0x110a4005,0x7c00100,0xe30400,0x110a4112,0x7c00100, @@ -3535,188 +3607,185 @@ static const uint32_t propsVectors[6999]={ 0x810010,0x110a5300,0x4000008,0x1410010,0x110a5300,0x6800000,0xe01c02,0x110a5300,0x6800000,0xe01c10,0x110a5400,0x4000000,0x81000c,0x110a5400,0x4000000,0xe0000c, 0x110a5400,0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400, 0x4000010,0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010, -0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400c0c,0x4000010,0xb00000,0x11400c0c,0x4000010,0x1071400,0x11400c0c,0xc000010,0xb48000,0x11400c16,0x7c00900,0x230400, -0x11400f40,0xc000010,0x448000,0x11400f54,0xc000010,0x448000,0x11401d89,0x4000000,0x200000,0x11403dbf,0x4000000,0xe00000,0x114457b4,0x4000004,0x120000a,0x114457b4, -0x4000008,0x81000a,0x114457b4,0x4000008,0x141000a,0x114457b4,0x4000010,0x87000a,0x114457b4,0xc000010,0x84800a,0x114457bd,0x3802500,0x126246a,0x114457bd,0x7c00d00, -0x2530c0a,0x114a3db4,0x24000000,0x810000,0x114a3db4,0x24000000,0x1410000,0x114a3db4,0x24000008,0x810000,0x114a3db4,0x24000008,0x1410000,0x114a3db4,0x24000010,0x870000, -0x114a3db4,0x2c000010,0x848000,0x114a3dba,0x4000000,0xe00000,0x114a3dba,0x24000000,0xe00000,0x114a3dba,0x24000002,0x1200000,0x114a3dba,0x24000002,0x14e00000,0x114a3dba, -0x24000008,0x810000,0x114a3dba,0x24000008,0x1410000,0x114a3dbd,0x7c00900,0x930c00,0x114a3dbd,0x7c00900,0xe30c00,0x114a3dbf,0x7c00300,0xe30000,0x114a3ebd,0x7000400, -0x1200c02,0x114a3fb4,0x4000004,0x1200000,0x114a3fbd,0x7c00d00,0x2530c00,0x114a42bf,0x4000000,0xe00000,0x114a42bf,0x4000000,0xe0000f,0x114a44bf,0x4000000,0xe00002, -0x114a44bf,0x4000000,0xe00003,0x114a44bf,0x4000000,0x14e00003,0x114a45bf,0x4000000,0xe00002,0x114a45bf,0x4000000,0xe0000d,0x1180090a,0x2802400,0x962460,0x11800c1e, -0x2802100,0x962460,0x11800c1e,0x2802500,0x962460,0x11800f27,0x2802400,0x962460,0x11800f34,0x2802400,0x962460,0x11820700,0x2802400,0x962460,0x11820700,0x2802500, -0x962460,0x118a3dc0,0x2802400,0x962460,0x118a3ebd,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c20,0xc000010,0xb48000, -0x11c00c23,0x6800000,0x1329800,0x11c00f6d,0x6800000,0x1329800,0x11c01072,0x6800000,0x1329800,0x11c01176,0x6800000,0x1329800,0x11c0127a,0x6800000,0x1329800,0x11c0147e, -0x4000000,0x200000,0x11c0147e,0x6800000,0x1329800,0x11c01682,0x6800000,0x1329800,0x11c051fa,0x7c00100,0x230408,0x20000067,0x1000,0,0x20000b13,0x2802400, -0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,0x2806400,0x962460, -0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,0x500000,0x20001b27,0x4000000,0x810000,0x20001b27, -0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,0x20001b27,0x4000010,0xc00000,0x20001b27,0x6800000, -0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,0x7c00100,0x230401,0x20002619,0x7c00100,0x220401, -0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,0x1900000,0x20006d67,0x1000,0,0x20006e67, -0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0x1f304c1,0x200a4a12,0x7c00100,0x20304e1,0x21005600,0x4000000, -0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,0x30000419,0x7c00100,0x250400,0x30000419,0x7c00100,0x250401, -0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,0x200400,0x3000080e,0x7c00100,0x220400,0x30000908, -0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006, -0x400400,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460,0x30000d22,0x2802500,0x962460, -0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000d22,0x80000000,0x218960,0x30000e25, -0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,0x30001821,0x4000000,0x200000,0x30001821,0x6800100, -0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,0x2802400,0x962460,0x30001b27,0x4000000,0x200000, -0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c, -0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,0x30001c1c,0x7c00100,0x1830001,0x30001c1c,0xc000010, -0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,0x6800000,0x200000,0x30001f0b,0x7c00100,0x230400, -0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000000,0x200000,0x30002128,0x7c00100,0x230400,0x30002128,0xc000010,0x248000,0x3000221d, -0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x445800,0x3000221d,0x7c00100,0x230400,0x30002300,0x4000010,0x400000,0x30002320,0x7c00100, -0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,0x2882000,0x1862460,0x30002417,0x4000000,0x200000, -0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,0x4000010,0x1200000,0x30002417,0x6800000,0x1329800,0x30002417, -0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100, -0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000, -0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800, -0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002800,0x2c000010,0x15248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002b01,0x2000, -0x8962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x14220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000, -0x30003000,0x24000000,0x4200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x4200000,0x3000392e,0x24000000,0x200000,0x30005013, -0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000, -0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002, -0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040258f, -0x4000010,0x400000,0x3040258f,0x4000010,0xb70000,0x3040258f,0xc000010,0xb48000,0x304028af,0x4000001,0xc41c0b,0x304a3dbf,0x4000000,0xe00000,0x30800c1e,0x2802100, -0x962460,0x30c01c87,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000, -0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00, -0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000, -0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405, -0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x8962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419, -0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100, -0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820, -0x32002800,0x4000001,0x445802,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919, -0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000, -0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000, -0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003600, -0x24000020,0x14200000,0x32003700,0x24000000,0x200000,0x32003700,0x24000000,0x4100000,0x32003700,0x24000000,0x4200000,0x32003700,0x24000000,0x14200000,0x32003800,0x24000000, -0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400, -0x3200622a,0x2802100,0x962460,0x3200622a,0x2806000,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x2806000,0x962460,0x3200632b, -0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020, -0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006800,0x24000020,0x14200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,0x810000, -0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,0x32023300, -0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32026c01,0x12882000,0x8962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020, -0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x34200000,0x320a3d11,0x7c00100,0x1230400, -0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11, -0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x3240638b,0xc000010,0x448000,0x324a3dc2,0x4000000,0x14e00000,0x324a3dc2,0x7c00100,0x1230400,0x324a3fbd,0x4000002, -0x1200c00,0x324a53ba,0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400, -0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02, -0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x218960,0x40000d22,0x7c00100, -0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460, -0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615, -0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002, -0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,0x14200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40003700,0x24000000,0x4200000, -0x40003700,0x24000000,0x14200000,0x40005a09,0x7c00100,0x220400,0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30, -0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010, -0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e, -0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300, -0x24000000,0x200000,0x40007300,0x24000000,0x14200000,0x40007400,0x4000000,0x200000,0x40007531,0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010, -0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400, -0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700, -0x24000000,0x34200000,0x400a3700,0x24000000,0x34e00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000, -0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x404077fc,0x4000000,0x200000,0x404077ff,0x4000000,0x200000,0x404077ff,0x4000000,0x400000, -0x40c0147e,0x4000000,0x200000,0x40c051fa,0x4000000,0x200000,0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e, -0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000, -0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0x1500000,0x41000c02,0xc000010,0xb48000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400, -0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,0x230400,0x41001d0c,0x7c00100,0x23040f,0x41001f0b,0x2802400,0x962460,0x41001f0b, -0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000, -0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x4200000, -0x41003700,0x24000000,0x14200000,0x41003700,0x24000000,0x14e00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600, -0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000, -0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000, -0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407, -0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100, -0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460, -0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00, -0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010, -0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000, -0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a, -0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000, -0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x34200000,0x410a3700,0x24000000,0x34e00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000, -0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100, -0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x41408ac5,0x4000400, -0x200000,0x414a82bf,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c0147e,0x6800000,0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400, -0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615, -0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100, -0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,0x4200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405, -0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00, -0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100, -0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460, -0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,0x5000933e,0x6800100,0x962540,0x5000933e, -0x6800100,0x962541,0x5000933e,0x6804400,0x962540,0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100, -0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000, -0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965, -0x7c00100,0x230400,0x50409abf,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000, -0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460, -0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a, -0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000, -0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802500,0x1862460,0x51001c1c,0x2806400,0x1862460, -0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800500,0x1862400,0x51001c1c, -0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000, -0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x4200000,0x51003700,0x24000000,0x4e00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000, -0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300, -0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008a00,0x7c00500, -0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000, -0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419, -0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,0x4000400,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100, -0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800, -0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52, -0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010, -0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000, -0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63, -0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100, -0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800, -0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f, -0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100, -0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800, -0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601, -0x2802000,0x962460,0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000, -0x4e00000,0x5100ab00,0x4000000,0x4e00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000, -0x510a7300,0x24000000,0x34200000,0x510aaa00,0x4000000,0x34e00000,0x5140a2f3,0x4000400,0x400000,0x514a82bf,0x4000000,0xe00000,0x51802bb1,0x2802000,0x962460,0x51c00908, -0x2802400,0x962460,0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000, -0x1600000,0x52001b00,0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12,0x7c00100,0x2230500, -0x52001e12,0x7c00100,0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00, -0x4000000,0x200006,0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400, -0x962460,0x52008407,0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000, -0x52009419,0x7c00100,0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e, -0x4000010,0x200000,0x5200ac7e,0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400, -0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400, -0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083, -0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100, -0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460, -0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,0x5200b54e,0x6800100,0x962540,0x5200b54e, -0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400,0x5200b61c,0x7c00100, -0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000, -0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873, -0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010, -0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400, -0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d, -0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000, -0x200000,0x5200c178,0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000, -0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c178,0x80000000,0x218960,0x5200c247, -0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000, -0x4100000,0x52023700,0x24000000,0x4e00000,0x52023700,0x24000000,0x14100000,0x52023700,0x24000000,0x14e00000,0x52023700,0x24000000,0x96800000,0x52024400,0x4000000,0x100000, -0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,0x5202c300,0x4000000,0x10000d,0x5202c300, -0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x5202c300,0x4000100,0x14150400,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0x34e00000,0x520a3800,0x24000000, -0x34100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x34100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,0xe00002, -0x520ac400,0x4000000,0xe0000d,0x520ac400,0x4000000,0x34e0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af91,0x7c00100,0x230400,0x5240af96, -0x4000400,0x200000,0x5240af98,0x6800400,0x962540,0x5240af98,0x7c00100,0x230400,0x5240afa2,0x7c00100,0x230400,0x5240afa4,0x7c00100,0x230400,0x5240b2c7,0x4000000, -0x200000,0x5240b2c7,0x4000000,0x1500000,0x5240b2d2,0x4000000,0x200000,0x5240b2e0,0x4000000,0x200000,0x5240b5f6,0x7c00900,0x230400,0x524a44bf,0x4000000,0xe00003, -0x5280af91,0x2802400,0x962460,0x5280af92,0x2802400,0x962460,0x5280af98,0x2802400,0x962460,0x5280af9a,0x2802400,0x962460,0x5280af9c,0x2802400,0x962460,0x52c0b3ed, -0x2802400,0x962460,0x52c0b3f1,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100, -0x962540,0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460, -0x60001b27,0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000, -0x24000000,0x14200000,0x60003000,0x24000000,0x14e00000,0x60003700,0x24000000,0x4200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100, -0x220400,0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802000,0x962460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000, -0x60009519,0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x3a703580,0x6000c654, -0x2802000,0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000, -0x200000,0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460, -0x6000c941,0x2806000,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941, -0x7c00100,0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0x4e00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000, -0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x6002c300,0x4000100,0x14150400,0x600a3000,0x24000000,0x34200000, -0x600a3000,0x24000000,0x34e00000,0x600a3700,0x24000000,0x34200000,0x600a3800,0x24000000,0x34200000,0x600a3800,0x24000000,0xb6800000,0x600a4305,0x7c00100,0xe30400,0x600ac300, -0x4000000,0x34100000,0x600ac400,0x4000000,0x14e0000d,0x600ac400,0x4000000,0x34e0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000, -0x34e00000,0x600acd00,0x4000000,0x34200000,0x600acd00,0x4000000,0x34e00000,0x600acd00,0x4000000,0xb6800000,0x600ace00,0x4000000,0x34e00000,0x600ace00,0x4000000,0xb6800000, -0x600acf00,0x4000000,0x34e00000,0x600acf00,0x4000000,0xb6800000,0x600ad111,0x7c40300,0xe30000,0x604ac4bf,0x4000000,0x34e00003,0x61000a03,0x4000000,0x1600000,0x61000c02, +0x80ac0c,0x110a5400,0xc000010,0xb4800c,0x11400c0c,0x4000010,0xb00000,0x11400c0c,0x4000010,0x1071400,0x11400c17,0xc000010,0xb48000,0x11400c1e,0x7c00900,0x230400, +0x11400f4b,0xc000010,0x448000,0x11400f5f,0xc000010,0x448000,0x11401d94,0x4000000,0x200000,0x11403dca,0x4000000,0xe00000,0x114457bf,0x4000004,0x120000a,0x114457bf, +0x4000008,0x81000a,0x114457bf,0x4000008,0x141000a,0x114457bf,0x4000010,0x87000a,0x114457bf,0xc000010,0x84800a,0x114457c8,0x3802500,0x126246a,0x114457c8,0x7c00d00, +0x2530c0a,0x114a3dbf,0x24000000,0x810000,0x114a3dbf,0x24000000,0x1410000,0x114a3dbf,0x24000008,0x810000,0x114a3dbf,0x24000008,0x1410000,0x114a3dbf,0x24000010,0x870000, +0x114a3dbf,0x2c000010,0x848000,0x114a3dc5,0x4000000,0xe00000,0x114a3dc5,0x24000000,0xe00000,0x114a3dc5,0x24000002,0xe00000,0x114a3dc5,0x24000002,0x1200000,0x114a3dc5, +0x24000008,0x810000,0x114a3dc5,0x24000008,0x1410000,0x114a3dc8,0x7c00900,0x930c00,0x114a3dc8,0x7c00900,0xe30c00,0x114a3dca,0x7c00300,0xe30000,0x114a3ec8,0x7000400, +0x1200c02,0x114a3fbf,0x4000004,0x1200000,0x114a3fc8,0x7c00d00,0x2530c00,0x114a42ca,0x4000000,0xe00000,0x114a42ca,0x4000000,0xe0000f,0x114a44ca,0x4000000,0xe00002, +0x114a44ca,0x4000000,0xe00003,0x114a45ca,0x4000000,0xe00002,0x114a45ca,0x4000000,0xe0000d,0x11505103,0x24000000,0x810000,0x11505103,0x24000000,0x1410000,0x1180090a, +0x2802400,0x962460,0x11800c27,0x2802100,0x962460,0x11800c27,0x2802500,0x962460,0x11800f32,0x2802400,0x962460,0x11800f3f,0x2802400,0x962460,0x11820700,0x2802400, +0x962460,0x11820700,0x2802500,0x962460,0x118a3dcb,0x2802400,0x962460,0x118a3ec8,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460, +0x11c00c2c,0x6800000,0x1329800,0x11c00c30,0xc000010,0xb48000,0x11c00f78,0x6800000,0x1329800,0x11c0107d,0x6800000,0x1329800,0x11c01181,0x6800000,0x1329800,0x11c01285, +0x6800000,0x1329800,0x11c01489,0x4000000,0x200000,0x11c01489,0x6800000,0x1329800,0x11c0168d,0x6800000,0x1329800,0x11d05107,0x7c00100,0x230408,0x20000067,0x1000, +0,0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460, +0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,0x500000,0x20001b27, +0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,0x20001b27,0x4000010, +0xc00000,0x20001b27,0x6800000,0x1329800,0x20001b27,0x6800100,0x462540,0x20001b27,0x6800400,0x962540,0x20001b27,0x7c00100,0x230400,0x20001b27,0x7c00100,0x230401, +0x20002619,0x7c00100,0x220401,0x20002a00,0x4000000,0x1600000,0x20004b67,0,0x1900000,0x20004c67,0,0x1900000,0x20004d67,0,0x1900000,0x20006d67, +0x1000,0,0x20006e67,0x1000,0,0x20026d67,0,0,0x20026e67,0,0,0x200a4a12,0x7c00100,0x1f304c1,0x200a4a12,0x7c00100, +0x20304e1,0x21005600,0x4000000,0x700000,0x21022a00,0x4000000,0x1600000,0x30000419,0x7c00100,0x220400,0x30000419,0x7c00100,0x220401,0x30000419,0x7c00100,0x250400, +0x30000419,0x7c00100,0x250401,0x30000519,0x7c00100,0x220400,0x30000600,0x4000400,0x200400,0x30000600,0x7c00500,0x230400,0x30000605,0x4000400,0x200400,0x3000080e, +0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,0x30000908,0x7c00100, +0x250401,0x30000a03,0x4000006,0x400400,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0x2802100,0x962460,0x30000d22,0x2802400,0x962460, +0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,0x248000,0x30000d22, +0x80000000,0x218960,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,0x30001821,0x4000000, +0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,0x2802400,0x962460, +0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,0x1862460,0x30001c1c, +0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,0x30001c1c,0x7c00100, +0x1830001,0x30001c1c,0xc000010,0x448000,0x30001f0b,0x4000000,0x200000,0x30001f0b,0x4000010,0x200000,0x30001f0b,0x4000010,0x400000,0x30001f0b,0x6800000,0x200000, +0x30001f0b,0x7c00100,0x230400,0x30001f0b,0xc000010,0x248000,0x30002006,0x7c00100,0x250400,0x30002128,0x4000000,0x200000,0x30002128,0x7c00100,0x230400,0x30002128, +0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x445800,0x3000221d,0x7c00100,0x230400,0x30002300,0x4000010, +0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,0x2882000,0x1862460, +0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,0x4000010,0x1200000,0x30002417, +0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100, +0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,0x4000010,0x400000,0x3000251b,0x4000010,0xb70000, +0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b, +0x12882000,0x962460,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,0x30002c00,0x4000000, +0x200000,0x30002c00,0x7c00100,0x220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,0x24000000,0x200000, +0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,0x918820,0x30020600, +0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000, +0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000, +0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040259a,0x4000010,0x400000,0x3040259a,0x4000010,0xb70000,0x3040259a, +0xc000010,0xb48000,0x304028ba,0x4000001,0xc41c0b,0x304a3dca,0x4000000,0xe00000,0x30800c27,0x2802100,0x962460,0x30c01c92,0x6800000,0x1329800,0x3100080e,0x7c00120, +0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,0x3100581e,0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400, +0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,0x918820,0x31005c00,0x2802000,0x962460,0x31005c00, +0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,0x962540,0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400, +0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,0x7c00120,0x250405,0x31006000,0x82000,0x962460, +0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,0x250400,0x3200080e,0x4000020,0x200000,0x3200080e, +0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100, +0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,0x32002800,0x4000001,0x445802,0x32002800,0x24000000,0x200000, +0x32002800,0x24000000,0x200002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01, +0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,0x200000,0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020, +0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,0x24000020,0x200000,0x32003000,0x24000000,0x200000, +0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,0x200000,0x32003800, +0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100, +0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806400,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,0x6804000,0x962540, +0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,0x230400,0x32006600, +0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,0x810000,0x32006900,0x24000020, +0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,0x32023300,0x4000000,0x100000, +0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,0x24000020,0x1410000,0x32086900, +0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100, +0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00, +0x32406396,0xc000010,0x448000,0x324a3dcd,0x4000000,0xe00000,0x324a3dcd,0x7c00100,0x1230400,0x324a3fc8,0x4000002,0x1200c00,0x324a53c5,0x24000000,0xe00000,0x32820701, +0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100, +0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,0x2802500,0x962460,0x40000c02,0x4000000,0x200000, +0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x218960,0x40000d22,0x7c00100,0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004, +0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100, +0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,0x40001615,0x7c00100,0x230400, +0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,0x4000000,0x200002,0x40003000, +0x24000000,0x200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40005a09,0x7c00100,0x220400,0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120, +0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,0x6800000,0x1329800,0x40006f30,0x6800100,0x962540, +0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,0x200000,0x40007208,0x7c00100,0x220400,0x4000720e, +0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500, +0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007400,0x4000000,0x200000,0x40007531,0x7c00100,0x230400,0x40007631,0x7c00100,0x230400, +0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f, +0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,0x40023300,0x4000000,0x200000,0x40027d01,0x12882000, +0x962460,0x400a3700,0x24000000,0x200000,0x400a3700,0x24000000,0xe00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003, +0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x40507709,0x4000000,0x200000,0x4050770c,0x4000000,0x400000,0x4050770f, +0x4000000,0x200000,0x4050770f,0x4000000,0x400000,0x40c01489,0x4000000,0x200000,0x40d05107,0x4000000,0x200000,0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100, +0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,0x41000b13,0x2802000,0x962460, +0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0x1500000,0x41000c02,0xc000010,0xb48000,0x41000f0a, +0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,0x230400,0x41001d0c,0x7c00100, +0x23040f,0x41001f0b,0x2802400,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,0x41002800,0x24000000,0x400000, +0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,0x7c00120,0x220405,0x41003000, +0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0xe00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,0x41006600,0x24000020, +0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,0x2802000,0x962460, +0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,0x962460,0x41008137, +0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,0x41008407,0x4000000, +0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,0x4000000,0x200000, +0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,0x962460,0x41008939, +0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,0x41008939,0xc000010, +0x448000,0x41008a00,0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000, +0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00, +0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000, +0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f, +0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x200000,0x410a3700,0x24000000,0xe00000,0x410a4412,0x4000000,0xe00003,0x410a4711, +0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000, +0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010, +0x41408ad0,0x4000400,0x200000,0x414a82ca,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01489,0x6800000,0x1329800,0x50000419,0x7c00100,0x220400,0x50000419, +0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100, +0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,0x7c00100,0x220400, +0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00, +0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,0x50008301,0x2802400, +0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,0x6800000,0x1329800, +0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e, +0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,0x5000933e,0x6800100, +0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,0xc000010,0x448000, +0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a, +0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,0x50009965,0x4000010, +0x400000,0x50009965,0x7c00100,0x230400,0x50409aca,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,0x2802100,0x962460, +0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110, +0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,0x51001524,0x7c00100, +0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,0x4000000,0x200000, +0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802500,0x1862460,0x51001c1c, +0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800500, +0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,0x7c00100,0x250400,0x51002800,0x80020,0x218820, +0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,0xe00000,0x51005201,0x2802400,0x962460,0x51005c00, +0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,0x51006600,0x24000020,0x810000,0x51006600,0x24000020, +0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,0x2802000,0x962460,0x51008301,0x2802400,0x962460, +0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00, +0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100, +0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,0x4000400,0x200400,0x51009500,0x7c00500,0x230400, +0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71, +0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400, +0x962460,0x51009c52,0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400, +0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d, +0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900, +0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000, +0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f, +0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400, +0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000, +0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0x200000,0x5100a442, +0x6800000,0x1329800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000, +0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400, +0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711, +0x7c40300,0xe30000,0x510a7300,0x24000000,0x200000,0x510aaa00,0x4000000,0xe00000,0x5140a2fe,0x4000400,0x400000,0x514a82ca,0x4000000,0xe00000,0x51802bbc,0x2802000, +0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400, +0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12, +0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000, +0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460, +0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00, +0x24000000,0x400000,0x52009419,0x7c00100,0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400, +0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460, +0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a, +0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010, +0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000, +0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e, +0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,0x200000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0x1329800,0x5200b54e,0x6800100, +0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400, +0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f, +0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100, +0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400, +0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74, +0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100, +0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400, +0x5200c002,0x4000000,0x200000,0x5200c178,0x2802000,0x962460,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178, +0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c178,0x80000000, +0x218960,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006, +0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,0x2800000,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300, +0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100, +0x15040d,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0xe00000,0x520a3800,0x24000000,0x100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001, +0x520a7300,0x24000000,0x100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511, +0x7c40300,0xe30000,0x5240af9c,0x7c00100,0x230400,0x5240afa1,0x4000400,0x200000,0x5240afa3,0x6800400,0x962540,0x5240afa3,0x7c00100,0x230400,0x5240afad,0x7c00100, +0x230400,0x5240afaf,0x7c00100,0x230400,0x5240b2d2,0x4000000,0x200000,0x5240b2d2,0x4000000,0x1500000,0x5240b2dd,0x4000000,0x200000,0x5240b2eb,0x4000000,0x200000, +0x524a44ca,0x4000000,0xe00003,0x5250b501,0x7c00900,0x230400,0x5280af9c,0x2802400,0x962460,0x5280af9d,0x2802400,0x962460,0x5280afa3,0x2802400,0x962460,0x5280afa5, +0x2802400,0x962460,0x5280afa7,0x2802400,0x962460,0x52c0b3f8,0x2802400,0x962460,0x52c0b3fc,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100, +0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400, +0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,0x962460,0x60002919, +0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x200000,0x60003000,0x24000000,0xe00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000, +0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802400,0x962460, +0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008, +0x7c00100,0x250400,0x6000c300,0x4000000,0x2703580,0x6000c654,0x2802000,0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000, +0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,0x7c00100,0x230400, +0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806400,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,0x200000,0x6000c941, +0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000, +0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d, +0x600a3000,0x24000000,0x200000,0x600a3000,0x24000000,0xe00000,0x600a3700,0x24000000,0x200000,0x600a3800,0x24000000,0x200000,0x600a3800,0x24000000,0x2800000,0x600a4305, +0x7c00100,0xe30400,0x600ac300,0x4000000,0x100000,0x600ac400,0x4000000,0xe0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000, +0xe00000,0x600acd00,0x4000000,0x200000,0x600acd00,0x4000000,0xe00000,0x600acd00,0x4000000,0x2800000,0x600ace00,0x4000000,0xe00000,0x600ace00,0x4000000,0x2800000, +0x600acf00,0x4000000,0xe00000,0x600acf00,0x4000000,0x2800000,0x600ad111,0x7c40300,0xe30000,0x604ac4ca,0x4000000,0xe00003,0x61000a03,0x4000000,0x1600000,0x61000c02, 0x80000000,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020, 0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000, 0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71, @@ -3729,132 +3798,145 @@ static const uint32_t propsVectors[6999]={ 0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100, 0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000, 0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99, -0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0x34e00000,0x6140af96,0x7c00100,0x230400,0x6140af98,0x7c00100, -0x230400,0x6180af93,0x2802400,0x962460,0x62002a00,0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c14,0x80000,0x918820,0x7000080e,0x7c00100,0x250400, +0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0xe00000,0x6140afa1,0x7c00100,0x230400,0x6140afa3,0x7c00100, +0x230400,0x6180af9e,0x2802400,0x962460,0x62002a00,0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c15,0x80000,0x918820,0x7000080e,0x7c00100,0x250400, 0x70000a03,0x4000000,0x200000,0x70000c00,0x80000000,0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524, 0x7c00100,0x230400,0x70001615,0x2802100,0x962460,0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000, -0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,0x24000000,0x200000,0x70003000,0x24000000,0x14200000,0x70003800,0x24000000,0x4e00000,0x70005201,0x2802400,0x962460, -0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e, -0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002, -0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400, -0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008, -0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100, -0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0x962460,0x7000cc00,0x4000000,0x4e00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0x4200000, -0x7000cd00,0x4000000,0x4e00000,0x7000cd00,0x4000000,0x14200000,0x7000cd00,0x4000000,0x14e00000,0x7000cd00,0x4000000,0x96800000,0x7000cf00,0x4000000,0x4e00000,0x7000cf00, -0x4000000,0x14e00000,0x7000d202,0x2802100,0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400, -0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2000,0x962460, -0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187, -0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100, -0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,0x6804400,0x962540,0x7000e489,0x7c00100,0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100,0x962460, -0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540,0x7000e59d, -0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691,0x6800000, -0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100,0x220400, -0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000,0x7000e9a0, -0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79,0x7c00100, -0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400,0x962460, -0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000,0x7000ed95, -0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c,0x7c00100, -0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100,0x230400, -0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000,0x7000f34b, -0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b,0x7c00900, -0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000,0x200000, -0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460,0x7000f8a6, -0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6,0x7c00100, -0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400,0x962460, -0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541,0x7000fb9e, -0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92,0x7c00100, -0x250400,0x700acd00,0x4000000,0x34e00000,0x700acd00,0x4000000,0xb6800000,0x700ace00,0x4000000,0x34e00000,0x700acf00,0x4000000,0x34e00000,0x700acf00,0x4000000,0xb6800000, -0x7050df01,0x4000000,0x200000,0x7050f705,0x80000,0x918820,0x7080af96,0x2802400,0x962460,0x7090df01,0x2802400,0x962460,0x70d0e403,0x2802100,0x962460,0x70d0e403, -0x2802400,0x962460,0x70d0e403,0x6800100,0x962540,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100, -0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,0x2802400,0x962460,0x80005c00,0x4000000,0x200000, -0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,0x250400,0x80009865,0x7c00100,0x230400,0x8000a008, -0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0x4e00000,0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100, -0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,0x8000d997,0x4000000,0x400000,0x8000d997,0x4000000,0x500000, -0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,0x230400,0x8000e719,0x7c00100,0x220400,0x8000f8a6, -0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000, -0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862540,0x8000fda1,0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400, -0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2, -0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100, -0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000, -0x800acd00,0x4000000,0x34e00000,0x800acd00,0x4000000,0x7a902460,0x800ace00,0x4000000,0x34e00000,0x800acf00,0x4000000,0x34e00000,0x800b0011,0x7c40300,0xe30000,0x800b0500, -0x4000000,0x34e00000,0x800b0500,0x4000000,0xb6800000,0x90001615,0x7c00100,0x230400,0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000, -0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802000,0x962460,0x90008e00,0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460, -0x9000d200,0x80000000,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500, -0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000, -0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000, -0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8, -0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010, -0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460, -0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa, -0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000, -0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0x34e00000,0x900acd00,0x4000000,0xb6800000,0x900acf00,0x4000000,0x34e00000,0x900b0500,0x4000000,0x34e00000, -0x900b0500,0x4000000,0xb6800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004, -0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,0x962460,0xa000120f,0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400, -0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,0xa000581e,0x7c00100,0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460, -0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0x4e00000,0xa0010500,0x4000000,0x200000,0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af, -0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,0x230400,0xa00114af,0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800, -0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,0xa00116b0,0x4000000,0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540, -0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,0xc000010,0x448000,0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1, -0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,0x200000,0xa00118b1,0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100, -0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,0xa00118b1,0xc000010,0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000, -0xa00ac400,0x4000000,0x4e00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,0x4000000,0x34e00000,0xa00b0500,0x4000000,0x34e00000,0xa00b0500,0x4000000,0xb6800000,0xa00b0b96, -0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,0xe30000,0xa00b1596,0x7c00300,0xe30000,0xa040afac,0x6800400,0x962540,0xa08083ad,0x2802400, -0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,0xb0001004,0x2802000,0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802000,0x962460, -0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,0x24000000,0x200000,0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00, -0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,0x400000,0xb0009257,0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100, -0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,0xb000b30a,0x2802100,0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x218960, -0xb000c300,0x4000000,0x4200000,0xb000d202,0x2802000,0x962460,0xb000d476,0x6800100,0x962540,0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0x4e00000,0xb000fda1, -0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,0x230400,0xb0011900,0x4000000,0x4e00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400, -0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,0xb0011ab2,0x6800100,0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400, -0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,0x6800000,0x1329800,0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6, -0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,0x230400,0xb0011db6,0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000, -0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,0xb0011fb4,0x7c00100,0x230400,0xb0011fb4,0xc000010,0x248000,0xb0012000,0x4000000,0x200000, -0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,0x400000,0xb00121b5,0x7c00100,0x220400,0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8, -0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,0xb00123b7,0x2802400,0x962460,0xb00123b7,0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010, -0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,0x7c40300,0xe30000,0xb00acf00,0x4000000,0x34e00000,0xb00b0500,0x4000000,0x34e00000,0xb00b0500,0x4000000,0x3ce00000, -0xb00b0500,0x4000000,0xb6800000,0xb00b109a,0x7c00300,0xe30000,0xb080e47c,0x2802000,0x962460,0xc0001524,0x4000000,0x500000,0xc0001a18,0x2806400,0x1862460,0xc0001a18, -0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,0xc0009519,0x7c00100,0x220400,0xc0009519,0x7c00100,0x250400,0xc000c300,0x4000000, -0x420000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,0x7c00100,0x230400,0xc000dc99,0x7c00100,0x230400,0xc000e719,0x7c00100,0x220400, -0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,0x230560,0xc0011900,0x4000000,0x4200000,0xc0012447,0,0x818820,0xc0012447, -0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,0xc00126bb,0x2802100,0x962460,0xc00126bb,0x2806400,0x962460,0xc00126bb,0x4000000, -0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,0x2802400,0x962460,0xc00127ba,0x4000000,0x200000,0xc00127ba,0x6800000,0x1329800, -0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,0x200000,0xc0012b23,0x4000000,0x200000,0xc0012b23,0x4000000,0x400000,0xc0012b23, -0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,0xc0012cbc,0x6800000,0x1329800,0xc0012cbc,0x7c00100,0x230400,0xc00acf00,0x4000000, -0x34e00000,0xc00ae300,0x4000000,0x34e00000,0xc00b0500,0x4000000,0x34e00000,0xc00b0500,0x4000000,0xb6800000,0xc00b0b00,0x4000000,0x1200000,0xc00b0b00,0x7c00900,0x1230400, -0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,0x2530c00,0xc00b2a00,0x4000000,0x34e00000,0xc040af53,0x7c00100,0x230400,0xc0c12b7e, -0x4000000,0x200000,0xc14a44bf,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,0xd000171a,0x7c00100,0x230400,0xd0001821,0x2802100,0x962460,0xd0007300,0x24000000, -0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,0x7c00100,0x220400,0xd0009519,0x7c00100,0x250400,0xd000a500,0x4000000,0x200000, -0xd000c300,0x4000000,0x4e00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,0x230400,0xd000d997,0x2802100,0x962460,0xd000d997,0x6800100,0x962540,0xd000e001, -0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,0xd000e719,0x7c00500,0x23040f,0xd000fa00,0x4000000,0x4e00000,0xd0010eaa,0x4000010, -0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,0x7c00100,0x230400,0xd0012fbe,0x2802100,0x962460,0xd0012fbe,0x2802400,0x962460, -0xd0012fbe,0x2806400,0x962460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,0x1329800,0xd0012fbe,0x6800100,0x962540,0xd0012fbe,0x6800100,0x962541,0xd0012fbe, -0x6804400,0x962540,0xd0012fbe,0x7c00100,0x230400,0xd0012fbe,0x7c00100,0x230560,0xd0012fbe,0xc000010,0x448000,0xd0013183,0x7c00100,0x230400,0xd0013200,0x4000000, -0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,0x4000002,0x400000,0xd00134c0,0x7c00100,0x230400,0xd00a4305,0x7c00100,0xe30400, -0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,0xe30000,0xd00acf00,0x4000000,0x34e00000,0xd00b0500,0x4000000,0x34e00000,0xd00b0500, -0x4000000,0xb6800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,0xd00b119a,0x7c00300,0xe30000,0xd00b2a00,0x4000000,0x34e00000,0xd00b2e11,0x7c40300, -0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000}; +0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,0x24000000,0x200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400, +0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301, +0x2802100,0x962460,0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008, +0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400, +0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008, +0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000, +0x100000,0x7000c941,0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x2800000, +0x7000cf00,0x4000000,0xe00000,0x7000d202,0x2802100,0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86, +0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2400, +0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400, +0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489, +0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,0x6804400,0x962540,0x7000e489,0x7c00100,0x230400,0x7000e489,0x7c00900,0x230400,0x7000e59d,0x2802100, +0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,0x962540, +0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,0x7000e691, +0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,0x7c00100, +0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,0x500000, +0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,0x7000ea79, +0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,0x2806400, +0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,0x448000, +0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,0x1329800,0x7000ee1c, +0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,0x7c00100, +0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,0x1710000, +0x7000f34b,0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,0x7000f34b, +0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,0x4000000, +0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,0x962460, +0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,0x7000f8a6, +0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,0x2802400, +0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,0x962541, +0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,0x7000fc92, +0x7c00100,0x250400,0x700acd00,0x4000000,0xe00000,0x700acd00,0x4000000,0x2800000,0x700ace00,0x4000000,0xe00000,0x700acf00,0x4000000,0xe00000,0x700acf00,0x4000000, +0x2800000,0x7050df11,0x4000000,0x200000,0x7050f719,0x80000,0x918820,0x7080afa1,0x2802400,0x962460,0x7090df11,0x2802400,0x962460,0x70d0e417,0x2802100,0x962460, +0x70d0e417,0x2802400,0x962460,0x70d0e417,0x6800100,0x962540,0x70d0ea15,0x4000010,0x400000,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,0x8000171a, +0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,0x2802400, +0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,0x250400, +0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,0x8000d202, +0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,0x8000d997,0x4000000, +0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,0x230400, +0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,0x8000fda1, +0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862400,0x8000fda1,0x6800100,0x1862540,0x8000fda1,0x7c00100, +0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,0x220400, +0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,0x8001044c, +0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,0x4000010, +0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0xe00000,0x800acd00,0x4000000,0x2902460,0x800ace00,0x4000000,0xe00000, +0x800acf00,0x4000000,0xe00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0xe00000,0x800b0500,0x4000000,0x2800000,0x90001615,0x7c00100,0x230400,0x9000171a, +0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802400,0x962460,0x90008e00,0x24000000, +0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0x80000000,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,0x962460, +0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500,0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,0x900107a7, +0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,0x2802100, +0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,0x1329800, +0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,0x90010ca9, +0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,0x4000000, +0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,0x400000, +0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,0x90010fab, +0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0xe00000,0x900acd00,0x4000000, +0x2800000,0x900acf00,0x4000000,0xe00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x2800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,0xe30000, +0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004,0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,0x962460,0xa000120f, +0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400,0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,0xa000581e,0x7c00100, +0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460,0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0xe00000,0xa0010500,0x4000000,0x200000, +0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af,0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,0x230400,0xa00114af, +0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800,0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,0xa00116b0,0x4000000, +0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540,0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,0xc000010,0x448000, +0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1,0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,0x200000,0xa00118b1, +0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100,0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,0xa00118b1,0xc000010, +0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000,0xa00ac400,0x4000000,0xe00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,0x4000000,0xe00000, +0xa00b0500,0x4000000,0xe00000,0xa00b0500,0x4000000,0x2800000,0xa00b0b96,0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,0xe30000,0xa00b1596, +0x7c00300,0xe30000,0xa040afb7,0x6800400,0x962540,0xa08083b8,0x2802400,0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,0xb0001004,0x2802000, +0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802000,0x962460,0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,0x24000000,0x200000, +0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00,0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,0x400000,0xb0009257, +0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100,0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,0xb000b30a,0x2802100, +0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x218960,0xb000c300,0x4000000,0x200000,0xb000d202,0x2802000,0x962460,0xb000d476,0x6800100,0x962540, +0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0xe00000,0xb000fda1,0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,0x230400,0xb0011900, +0x4000000,0xe00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400,0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,0xb0011ab2,0x6800100, +0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400,0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,0x6800000,0x1329800, +0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6,0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,0x230400,0xb0011db6, +0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000,0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,0xb0011fb4,0x7c00100, +0x230400,0xb0011fb4,0xc000010,0x248000,0xb0012000,0x4000000,0x200000,0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,0x400000,0xb00121b5,0x7c00100,0x220400, +0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8,0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,0xb00123b7,0x2802400,0x962460,0xb00123b7, +0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010,0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,0x7c40300,0xe30000,0xb00acf00,0x4000000, +0xe00000,0xb00b0500,0x4000000,0xe00000,0xb00b0500,0x4000000,0x2800000,0xb00b109a,0x7c00300,0xe30000,0xb080e487,0x2802000,0x962460,0xc0001524,0x4000000,0x500000, +0xc0001a18,0x2806400,0x1862460,0xc0001a18,0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,0xc0009519,0x7c00100,0x220400,0xc0009519, +0x7c00100,0x250400,0xc000c300,0x4000000,0x20000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,0x7c00100,0x230400,0xc000dc99,0x7c00100, +0x230400,0xc000e719,0x7c00100,0x220400,0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,0x230560,0xc0011900,0x4000000,0x200000, +0xc0012447,0,0x818820,0xc0012447,0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,0xc00126bb,0x2802100,0x962460,0xc00126bb, +0x2806400,0x962460,0xc00126bb,0x4000000,0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,0x2802400,0x962460,0xc00127ba,0x4000000, +0x200000,0xc00127ba,0x6800000,0x1329800,0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,0x200000,0xc0012b23,0x4000000,0x200000, +0xc0012b23,0x4000000,0x400000,0xc0012b23,0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,0xc0012cbc,0x6800000,0x1329800,0xc0012cbc, +0x7c00100,0x230400,0xc00acf00,0x4000000,0xe00000,0xc00ae300,0x4000000,0xe00000,0xc00b0500,0x4000000,0xe00000,0xc00b0500,0x4000000,0x2800000,0xc00b0b11,0x4000000, +0x1200000,0xc00b0b11,0x7c00900,0x1230400,0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,0x2530c00,0xc00b2a00,0x4000000,0xe00000, +0xc040af5e,0x7c00100,0x230400,0xc0c12b89,0x4000000,0x200000,0xc14a44ca,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,0xd000171a,0x7c00100,0x230400,0xd0001821, +0x2802100,0x962460,0xd0007300,0x24000000,0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,0x7c00100,0x220400,0xd0009519,0x7c00100, +0x250400,0xd000a500,0x4000000,0x200000,0xd000c300,0x4000000,0xe00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,0x230400,0xd000d997,0x2802100,0x962460, +0xd000d997,0x6800100,0x962540,0xd000e001,0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,0xd000e719,0x7c00500,0x23040f,0xd000fa00, +0x4000000,0xe00000,0xd0010eaa,0x4000010,0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,0x7c00100,0x230400,0xd0012fbe,0x2802100, +0x962460,0xd0012fbe,0x2802400,0x962460,0xd0012fbe,0x2806400,0x962460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,0x1329800,0xd0012fbe,0x6800100,0x962540, +0xd0012fbe,0x6800100,0x962541,0xd0012fbe,0x6804400,0x962540,0xd0012fbe,0x7c00100,0x230400,0xd0012fbe,0x7c00100,0x230560,0xd0012fbe,0xc000010,0x448000,0xd0013183, +0x7c00100,0x230400,0xd0013200,0x4000000,0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,0x4000002,0x400000,0xd00134c0,0x7c00100, +0x230400,0xd00a4305,0x7c00100,0xe30400,0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,0xe30000,0xd00acf00,0x4000000,0xe00000, +0xd00b0500,0x4000000,0xe00000,0xd00b0500,0x4000000,0x2800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,0xd00b119a,0x7c00300,0xe30000,0xd00b2a00, +0x4000000,0xe00000,0xd00b2e11,0x7c40300,0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000,0xe0000c02,0xc000010,0xb48000,0xe0001524,0x2802400, +0x962460,0xe0001524,0x7c00100,0x230400,0xe0001615,0x7c00100,0x230400,0xe000251b,0x12882000,0x962460,0xe0002a00,0x4000000,0x1500000,0xe0005102,0x4000000,0x200000, +0xe0005c00,0x4000000,0x200000,0xe000622a,0x6804400,0x962540,0xe000622a,0x7c00100,0x230400,0xe0008838,0x7c00100,0x220400,0xe0008838,0x7c00100,0x250400,0xe0008e00, +0x24000000,0x810000,0xe0008e00,0x24000000,0x1410000,0xe0008e00,0x24000002,0x400000,0xe0008e00,0x2c000010,0xb48000,0xe000933e,0x7c00100,0x230400,0xe000933e,0xc000010, +0x448000,0xe0009519,0x7c00100,0x220400,0xe0009519,0x7c00100,0x23040f,0xe0009519,0x7c00100,0x250400,0xe000c178,0x2802100,0x962460,0xe000c941,0x2802100,0x962460, +0xe000c941,0x2806400,0x962460,0xe000c941,0x7c00100,0x230400,0xe000d202,0x2802400,0x962460,0xe000d202,0x7c00100,0x230400,0xe000d202,0x7c00500,0x230400,0xe000dc99, +0x4000000,0x200000,0xe000e001,0x2802100,0x962460,0xe000e001,0x2802400,0x962460,0xe000fda1,0x7c00100,0x1830000,0xe0013502,0x2802400,0x962460,0xe0013502,0x4000000, +0x200000,0xe0013502,0x7c00100,0x230400,0xe0013502,0x80000000,0x218960,0xe00136c1,0x4000000,0x200000,0xe00136c1,0x7c00100,0x230400,0xe001370b,0x7c00100,0x230400, +0xe0013919,0x7c00500,0x220400,0xe0013919,0x7c00500,0x22040f,0xe0013919,0x7c00d00,0x23040f,0xe0013a19,0x7c00100,0x220400,0xe0013a19,0x7c00100,0x230400,0xe0013bc2, +0x2802400,0x962460,0xe0013bc2,0x7c00100,0x230400,0xe0013bc2,0xc000010,0x248000,0xe0013cc3,0x6800000,0x1329800,0xe0013cc3,0x7c00100,0x230400,0xe0013dc4,0x2802400, +0x962460,0xe0013dc4,0x7c00100,0x230400,0xe0013e28,0x7c00100,0x230400,0xe0013fc5,0x7c00100,0x220400,0xe0013fc5,0x7c00100,0x250400,0xe0014000,0x4000000,0x200000, +0xe0014001,0x2802400,0x962460,0xe00a4711,0x7c40300,0xe30000,0xe00a5e11,0x7c40300,0xe30000,0xe00ac511,0x7c40300,0xe30000,0xe00acf00,0x4000000,0xe00000,0xe00ae300, +0x4000000,0xe00000,0xe00b0500,0x4000000,0xe00000,0xe00b1314,0x7c00100,0xe30000,0xe00b1316,0x7c00100,0xe30c00,0xe00b2a00,0x4000000,0xe00000,0xe00b2a00,0x4000000, +0x2800000,0xe00b3816,0x7c00500,0x230c00,0xe0808328,0x2802400,0x962460}; -static const int32_t countPropsVectors=6999; +static const int32_t countPropsVectors=7095; static const int32_t propsVectorsColumns=3; -static const uint16_t scriptExtensions[262]={ -0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,2,0x22,0x25,0xb6, -0x80c0,2,0x22,0x8025,2,0x11,2,0x22,0x54,0x79,0x7b,0xa7,0xb6,0x80b7,2,0x8022, -2,0x25,0x80c0,2,0x20,2,0x80b6,4,0xa,0xf,0x10,0x15,0x19,0x1a,0x1f,0x23, -0x24,0x89,0x97,0x809e,4,0xa,0xf,0x10,0x15,0x19,0x1a,0x1f,0x23,0x24,0x89,0x809e, -4,0xa,0xf,0x10,0x15,0x1a,0x1f,0x21,0x23,0x24,0x3a,0x89,0x91,0x99,0x9e,0xa0, -0xaf,0xb2,0xb3,0x80bb,4,0xa,0xf,0x10,0x15,0x1a,0x1f,0x21,0x23,0x24,0x30,0x3a, -0x89,0x91,0x99,0x9e,0xa0,0xaf,0xb2,0xb3,0x80bb,0xa,0x78,0xa0,0x80b2,0xa,0x69,4, -0x3a,0x8076,4,0x6f,0x10,0x80a4,0x10,0x74,0xf,0x809d,0xf,0x78,0x23,0x8089,0x23,0x7c, -0x15,0x80bb,0x15,0x80,0x1c,0x34,0x8076,0x1c,0x84,0xc,0x8019,0x2a,0x2b,0x2c,0x802d,0x1b, -0x805a,0x800a,4,0xa,0x15,0x8089,0xa,0x8089,4,0x800a,0xa,0x8097,0xa,0x15,0x1a,0x1f, -0x23,0x8024,0xa,0x80bb,4,0xa,0x15,0x1f,0x24,0x89,0x9e,0x80bb,0x8004,8,0x8022,0x19, -0x801b,0xa,0x19,0x8089,5,0x11,0x12,0x14,0x16,0x8029,5,0x11,0x12,0x14,0x8016,0x8011, -5,0x8011,0x11,0x14,0x8016,0x11,0x8019,0xa,0xf,0x10,0x78,0x91,0x99,0x9d,0x9e,0xa0, -0xa3,0x80b2,0xa,0xf,0x10,0x15,0x1a,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb, -0xa,0xf,0x10,0x15,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb,0xa,0x98,0xa, -0x8023,0xa,0xef,0x19,0x1c,0x804f,0x37,0x804e,2,0x8025,2,0xf8,0x2f,0x31,0x8053,0x2f, -0x8031,2,0x8007,0x89,0x7c,0x8087}; +static const uint16_t scriptExtensions[282]={ +0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,2,0x22,0x25,0x57, +0xb6,0x80c0,2,0x22,0x8025,2,0x12,2,0x22,0x25,0x57,0xa7,0xb6,0x80c0,2,0x22, +0x54,0x79,0x7b,0xa7,0xb6,0xb7,0x80c2,2,0x8022,2,0x25,0x80c0,2,0x29,2,0x80b6, +2,0x2e,4,0xa,0xf,0x10,0x15,0x19,0x1a,0x1f,0x23,0x24,0x89,0x97,0x809e,4, +0xa,0xf,0x10,0x15,0x19,0x1a,0x1f,0x23,0x24,0x89,0x809e,4,0xa,0xf,0x10,0x15, +0x1a,0x1f,0x21,0x23,0x24,0x3a,0x89,0x91,0x99,0x9e,0xa0,0xaf,0xb2,0xb3,0x80bb,4, +0xa,0xf,0x10,0x15,0x1a,0x1f,0x21,0x23,0x24,0x30,0x3a,0x89,0x91,0x99,0x9e,0xa0, +0xaf,0xb2,0xb3,0x80bb,0xa,0x78,0xa0,0x80b2,0xa,0x74,4,0x3a,0x8076,4,0x7a,0x10, +0x80a4,0x10,0x7f,0xf,0x809d,0xf,0x83,0x23,0x8089,0x23,0x87,0x15,0x80bb,0x15,0x8b,0x1c, +0x34,0x8076,0x1c,0x8f,0xc,0x8019,0x2a,0x2b,0x2c,0x802d,0x1b,0x805a,0x800a,4,0xa,0x15, +0x8089,0xa,0x8089,4,0x800a,0xa,0x8097,0xa,0x15,0x1a,0x1f,0x23,0x8024,0xa,0x80bb,4, +0xa,0x15,0x1f,0x24,0x89,0x9e,0x80bb,0x8004,8,0x8022,0x19,0x801b,0xa,0x19,0x8089,5, +0x11,0x12,0x14,0x16,0x8029,5,0x11,0x12,0x14,0x8016,0x8011,5,0x8011,0x11,0x14,0x8016, +0x11,0x8019,0xa,0xf,0x10,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,0xa,0xf,0x10, +0x15,0x1a,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb,0xa,0xf,0x10,0x15,0x78, +0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb,0xa,0xa3,0xa,0x8023,0xa,0xfa,0x19,0x1c, +0x804f,0x37,0x804e,2,0x8057,2,0x8025,2,0x105,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f, +0x8031,2,0x8007,0x79,0x80c2,0x79,0x113,0x89,0x87,0x8087}; -static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2b96,0x2b96,0x2b96,0x2b96,0x6898,3,0x83ef,0x8472,0x8472,0x8472,0xb34c0,0x2a75a31,0,0,0,0}; +static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2c64,0x2c64,0x2c64,0x2c64,0x6b06,3,0x86bd,0x874a,0x874a,0x874a,0xb40c5,0x2a75a31,0,0,0,0}; #endif // INCLUDED_FROM_UCHAR_C diff --git a/deps/icu-small/source/common/ucharstriebuilder.cpp b/deps/icu-small/source/common/ucharstriebuilder.cpp index 049997a27545ed..3871df6c274a4b 100644 --- a/deps/icu-small/source/common/ucharstriebuilder.cpp +++ b/deps/icu-small/source/common/ucharstriebuilder.cpp @@ -290,13 +290,13 @@ UCharsTrieBuilder::UCTLinearMatchNode::UCTLinearMatchNode(const UChar *units, in hash=hash*37u+ustr_hashUCharsN(units, len); } -UBool +bool UCharsTrieBuilder::UCTLinearMatchNode::operator==(const Node &other) const { if(this==&other) { - return TRUE; + return true; } if(!LinearMatchNode::operator==(other)) { - return FALSE; + return false; } const UCTLinearMatchNode &o=(const UCTLinearMatchNode &)other; return 0==u_memcmp(s, o.s, length); diff --git a/deps/icu-small/source/common/uchriter.cpp b/deps/icu-small/source/common/uchriter.cpp index bedbabc74c2351..2967375a6a355a 100644 --- a/deps/icu-small/source/common/uchriter.cpp +++ b/deps/icu-small/source/common/uchriter.cpp @@ -66,13 +66,13 @@ UCharCharacterIterator::operator=(const UCharCharacterIterator& that) { UCharCharacterIterator::~UCharCharacterIterator() { } -UBool +bool UCharCharacterIterator::operator==(const ForwardCharacterIterator& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } UCharCharacterIterator& realThat = (UCharCharacterIterator&)that; diff --git a/deps/icu-small/source/common/ucln_cmn.cpp b/deps/icu-small/source/common/ucln_cmn.cpp index ab9d3adbd25958..f3e07c6b89183f 100644 --- a/deps/icu-small/source/common/ucln_cmn.cpp +++ b/deps/icu-small/source/common/ucln_cmn.cpp @@ -52,7 +52,7 @@ u_cleanup(void) /*#endif*/ } -U_CAPI void U_EXPORT2 ucln_cleanupOne(ECleanupLibraryType libType) +U_CAPI void U_EXPORT2 ucln_cleanupOne(ECleanupLibraryType libType) { if (gLibCleanupFunctions[libType]) { diff --git a/deps/icu-small/source/common/ucln_cmn.h b/deps/icu-small/source/common/ucln_cmn.h index 44b73e94da791f..dd366417f62196 100644 --- a/deps/icu-small/source/common/ucln_cmn.h +++ b/deps/icu-small/source/common/ucln_cmn.h @@ -51,6 +51,7 @@ typedef enum ECleanupCommonType { UCLN_COMMON_USET, UCLN_COMMON_UNAMES, UCLN_COMMON_UPROPS, + UCLN_COMMON_EMOJIPROPS, UCLN_COMMON_UCNV, UCLN_COMMON_UCNV_IO, UCLN_COMMON_UDATA, diff --git a/deps/icu-small/source/common/ucln_imp.h b/deps/icu-small/source/common/ucln_imp.h index b08c6e8368b1a3..63a54c86f62414 100644 --- a/deps/icu-small/source/common/ucln_imp.h +++ b/deps/icu-small/source/common/ucln_imp.h @@ -113,13 +113,13 @@ U_CAPI void U_EXPORT2 UCLN_FINI () /* Windows: DllMain */ #elif U_PLATFORM_HAS_WIN32_API -/* +/* * ICU's own DllMain. */ /* these are from putil.c */ /* READ READ READ READ! Are you getting compilation errors from windows.h? - Any source file which includes this (ucln_imp.h) header MUST + Any source file which includes this (ucln_imp.h) header MUST be defined with language extensions ON. */ #ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN @@ -168,7 +168,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) /* GCC - use __attribute((destructor)) */ static void ucln_destructor() __attribute__((destructor)) ; -static void ucln_destructor() +static void ucln_destructor() { UCLN_CLEAN_ME_UP; } diff --git a/deps/icu-small/source/common/ucmndata.cpp b/deps/icu-small/source/common/ucmndata.cpp index ba2310bb7ab8a5..4215d66257d1c7 100644 --- a/deps/icu-small/source/common/ucmndata.cpp +++ b/deps/icu-small/source/common/ucmndata.cpp @@ -18,7 +18,7 @@ * contents for locating the individual items by name. * * Two formats for the table of contents are supported, which is - * why there is an abstract inteface involved. + * why there is an abstract interface involved. * */ diff --git a/deps/icu-small/source/common/ucmndata.h b/deps/icu-small/source/common/ucmndata.h index 16844414327259..486b4fd7b5f444 100644 --- a/deps/icu-small/source/common/ucmndata.h +++ b/deps/icu-small/source/common/ucmndata.h @@ -18,10 +18,10 @@ * contents for locating the individual items by name. * * Two formats for the table of contents are supported, which is - * why there is an abstract inteface involved. + * why there is an abstract interface involved. * * These functions are part of the ICU internal implementation, and - * are not inteded to be used directly by applications. + * are not intended to be used directly by applications. */ #ifndef __UCMNDATA_H__ @@ -98,12 +98,12 @@ U_CDECL_END typedef struct { LookupFn Lookup; - NumEntriesFn NumEntries; + NumEntriesFn NumEntries; } commonDataFuncs; /* - * Functions to check whether a UDataMemory refers to memory containing + * Functions to check whether a UDataMemory refers to memory containing * a recognizable header and table of contents a Common Data Format * * If a valid header and TOC are found, diff --git a/deps/icu-small/source/common/ucnv.cpp b/deps/icu-small/source/common/ucnv.cpp index eb48dd473523cc..5dcf35e043850e 100644 --- a/deps/icu-small/source/common/ucnv.cpp +++ b/deps/icu-small/source/common/ucnv.cpp @@ -83,7 +83,7 @@ ucnv_open (const char *name, return r; } -U_CAPI UConverter* U_EXPORT2 +U_CAPI UConverter* U_EXPORT2 ucnv_openPackage (const char *packageName, const char *converterName, UErrorCode * err) { return ucnv_createConverterFromPackage(packageName, converterName, err); @@ -150,7 +150,7 @@ ucnv_openCCSID (int32_t codepage, return ucnv_createConverter(NULL, myName, err); } -/* Creating a temporary stack-based object that can be used in one thread, +/* Creating a temporary stack-based object that can be used in one thread, and created from a converter that is shared across threads. */ @@ -448,7 +448,7 @@ ucnv_setSubstChars (UConverter * converter, { if (U_FAILURE (*err)) return; - + /*Makes sure that the subChar is within the codepages char length boundaries */ if ((len > converter->sharedData->staticData->maxBytesPerChar) || (len < converter->sharedData->staticData->minBytesPerChar)) @@ -456,7 +456,7 @@ ucnv_setSubstChars (UConverter * converter, *err = U_ILLEGAL_ARGUMENT_ERROR; return; } - + uprv_memcpy (converter->subChars, mySubChar, len); /*copies the subchars */ converter->subCharLen = len; /*sets the new len */ @@ -466,7 +466,7 @@ ucnv_setSubstChars (UConverter * converter, * we set subChar1 to 0. */ converter->subChar1 = 0; - + return; } @@ -657,7 +657,7 @@ ucnv_getMinCharSize (const UConverter * converter) U_CAPI const char* U_EXPORT2 ucnv_getName (const UConverter * converter, UErrorCode * err) - + { if (U_FAILURE (*err)) return NULL; @@ -1226,7 +1226,7 @@ ucnv_fromUnicode(UConverter *cnv, *err=U_ILLEGAL_ARGUMENT_ERROR; return; } - + /* output the target overflow buffer */ if( cnv->charErrorBufferLength>0 && ucnv_outputOverflowFromUnicode(cnv, target, targetLimit, &offsets, err) @@ -1672,7 +1672,7 @@ ucnv_toUnicode(UConverter *cnv, *err=U_ILLEGAL_ARGUMENT_ERROR; return; } - + /* output the target overflow buffer */ if( cnv->UCharErrorBufferLength>0 && ucnv_outputOverflowToUnicode(cnv, target, targetLimit, &offsets, err) @@ -2083,7 +2083,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv, *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; return; } - + if(pivotStart==NULL) { if(!flush) { /* streaming conversion requires an explicit pivot buffer */ @@ -2332,7 +2332,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv, break; } } - + /* * toUnicode(source -> pivot); * @@ -2609,7 +2609,7 @@ ucnv_getType(const UConverter* converter) } U_CAPI void U_EXPORT2 -ucnv_getStarters(const UConverter* converter, +ucnv_getStarters(const UConverter* converter, UBool starters[256], UErrorCode* err) { @@ -2652,8 +2652,8 @@ static const UAmbiguousConverter *ucnv_getAmbiguous(const UConverter *cnv) } U_CAPI void U_EXPORT2 -ucnv_fixFileSeparator(const UConverter *cnv, - UChar* source, +ucnv_fixFileSeparator(const UConverter *cnv, + UChar* source, int32_t sourceLength) { const UAmbiguousConverter *a; int32_t i; @@ -2751,7 +2751,7 @@ ucnv_detectUnicodeSignature( const char* source, int32_t dummy; /* initial 0xa5 bytes: make sure that if we read fromUChar32 > 0){ return 1; } - return 0; + return 0; } diff --git a/deps/icu-small/source/common/ucnv2022.cpp b/deps/icu-small/source/common/ucnv2022.cpp index c274ebe41982f2..aa1e169c99c00b 100644 --- a/deps/icu-small/source/common/ucnv2022.cpp +++ b/deps/icu-small/source/common/ucnv2022.cpp @@ -527,7 +527,7 @@ _ISO2022Open(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){ ucnv_loadSharedData("ksc_5601", &stackPieces, &stackArgs, errorCode); } - /* set the function pointers to appropriate funtions */ + /* set the function pointers to appropriate functions */ cnv->sharedData=(UConverterSharedData*)(&_ISO2022JPData); uprv_strcpy(myConverterData->locale,"ja"); @@ -578,7 +578,7 @@ _ISO2022Open(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){ setInitialStateToUnicodeKR(cnv, myConverterData); setInitialStateFromUnicodeKR(cnv, myConverterData); - /* set the function pointers to appropriate funtions */ + /* set the function pointers to appropriate functions */ cnv->sharedData=(UConverterSharedData*)&_ISO2022KRData; uprv_strcpy(myConverterData->locale,"ko"); } @@ -605,7 +605,7 @@ _ISO2022Open(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){ ucnv_loadSharedData("cns-11643-1992", &stackPieces, &stackArgs, errorCode); - /* set the function pointers to appropriate funtions */ + /* set the function pointers to appropriate functions */ cnv->sharedData=(UConverterSharedData*)&_ISO2022CNData; uprv_strcpy(myConverterData->locale,"cn"); @@ -1232,7 +1232,7 @@ _2022FromGR94DBCS(uint32_t value) { /* * This method does the reverse of _2022FromGR94DBCS(). Given the 2022 code point, it returns the * 2 byte value that is in the range A1..FE for each byte. Otherwise it returns the 2022 code point - * unchanged. + * unchanged. */ static inline uint32_t _2022ToGR94DBCS(uint32_t value) { @@ -2147,7 +2147,7 @@ UConverter_toUnicode_ISO_2022_JP_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, changeState_2022(args->converter,&(mySource), mySourceLimit, ISO_2022_JP,err); - /* If in ISO-2022-JP only and we successully completed an escape sequence, but previous segment was empty, create an error */ + /* If in ISO-2022-JP only and we successfully completed an escape sequence, but previous segment was empty, create an error */ if(myData->version==0 && myData->key==0 && U_SUCCESS(*err) && myData->isEmptySegment) { *err = U_ILLEGAL_ESCAPE_SEQUENCE; args->converter->toUCallbackReason = UCNV_IRREGULAR; @@ -2849,21 +2849,21 @@ UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, * SS2 is a Chinese character as defined in CNS * 11643-plane-2, until another SS2designation * appears -* (Meaning N must preceed every 2 byte +* (Meaning N must precede every 2 byte * sequence.) * * ESC $ + I Indicates the immediate two bytes following SS3 * is a Chinese character as defined in CNS * 11643-plane-3, until another SS3designation * appears -* (Meaning O must preceed every 2 byte +* (Meaning O must precede every 2 byte * sequence.) * * ESC $ + J Indicates the immediate two bytes following SS3 * is a Chinese character as defined in CNS * 11643-plane-4, until another SS3designation * appears -* (In English: O must preceed every 2 byte +* (In English: O must precede every 2 byte * sequence.) * * ESC $ + K Indicates the immediate two bytes following SS3 diff --git a/deps/icu-small/source/common/ucnv_cnv.h b/deps/icu-small/source/common/ucnv_cnv.h index 345a1998e44883..e89eebe54ed8c4 100644 --- a/deps/icu-small/source/common/ucnv_cnv.h +++ b/deps/icu-small/source/common/ucnv_cnv.h @@ -154,7 +154,7 @@ typedef void (*UConverterGetStarters)(const UConverter* converter, UErrorCode *pErrorCode); /* If this function pointer is null or if the function returns null - * the name field in static data struct should be returned by + * the name field in static data struct should be returned by * ucnv_getName() API function */ typedef const char * (*UConverterGetName) (const UConverter *cnv); @@ -164,7 +164,7 @@ typedef const char * (*UConverterGetName) (const UConverter *cnv); * If this function is not set, then ucnv_cbFromUWriteSub() writes * the substitution character from UConverter. * For stateful converters, it is typically necessary to handle this - * specificially for the converter in order to properly maintain the state. + * specifically for the converter in order to properly maintain the state. */ typedef void (*UConverterWriteSub) (UConverterFromUnicodeArgs *pArgs, int32_t offsetIndex, UErrorCode *pErrorCode); @@ -177,9 +177,9 @@ typedef void (*UConverterWriteSub) (UConverterFromUnicodeArgs *pArgs, int32_t of * the initial state of the converter. It is not expected to increment the * reference counts of the standard data types such as the shared data. */ -typedef UConverter * (*UConverterSafeClone) (const UConverter *cnv, +typedef UConverter * (*UConverterSafeClone) (const UConverter *cnv, void *stackBuffer, - int32_t *pBufferSize, + int32_t *pBufferSize, UErrorCode *status); /** @@ -258,7 +258,7 @@ struct UConverterImpl { extern const UConverterSharedData _MBCSData, _Latin1Data, _UTF8Data, _UTF16BEData, _UTF16LEData, _UTF32BEData, _UTF32LEData, - _ISO2022Data, + _ISO2022Data, _LMBCSData1,_LMBCSData2, _LMBCSData3, _LMBCSData4, _LMBCSData5, _LMBCSData6, _LMBCSData8,_LMBCSData11,_LMBCSData16,_LMBCSData17,_LMBCSData18,_LMBCSData19, _HZData,_ISCIIData, _SCSUData, _ASCIIData, diff --git a/deps/icu-small/source/common/ucnv_err.cpp b/deps/icu-small/source/common/ucnv_err.cpp index 7d9ac46506f8fe..4210673ef9316f 100644 --- a/deps/icu-small/source/common/ucnv_err.cpp +++ b/deps/icu-small/source/common/ucnv_err.cpp @@ -61,7 +61,7 @@ * When an ignorable code point is found and is unmappable, the default callbacks * will ignore them. * For a list of the default ignorable code points, use this link: - * https://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3ADI%3A%5D&abb=on&g=&i= + * https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5B%3ADI%3A%5D&abb=on&g=&i= * * This list should be sync with the one in CharsetCallback.java */ @@ -72,7 +72,7 @@ (c == 0x115F) || \ (c == 0x1160) || \ (0x17B4 <= c && c <= 0x17B5) || \ - (0x180B <= c && c <= 0x180E) || \ + (0x180B <= c && c <= 0x180F) || \ (0x200B <= c && c <= 0x200F) || \ (0x202A <= c && c <= 0x202E) || \ (0x2060 <= c && c <= 0x206F) || \ @@ -129,7 +129,7 @@ UCNV_TO_U_CALLBACK_STOP ( } U_CAPI void U_EXPORT2 -UCNV_FROM_U_CALLBACK_SKIP ( +UCNV_FROM_U_CALLBACK_SKIP ( const void *context, UConverterFromUnicodeArgs *fromUArgs, const UChar* codeUnits, @@ -217,7 +217,7 @@ UCNV_FROM_U_CALLBACK_ESCAPE ( UConverterFromUCallback ignoredCallback = NULL; const void *ignoredContext; - + if (reason > UCNV_IRREGULAR) { return; @@ -237,14 +237,14 @@ UCNV_FROM_U_CALLBACK_ESCAPE ( &original, &originalContext, &err2); - + if (U_FAILURE (err2)) { *err = err2; return; - } + } if(context==NULL) - { + { while (i < length) { valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */ @@ -334,7 +334,7 @@ UCNV_FROM_U_CALLBACK_ESCAPE ( valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4); } } - } + } myValueSource = valueString; /* reset the error */ @@ -427,7 +427,7 @@ UCNV_TO_U_CALLBACK_ESCAPE ( } if(context==NULL) - { + { while (i < length) { uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */ diff --git a/deps/icu-small/source/common/ucnv_ext.h b/deps/icu-small/source/common/ucnv_ext.h index 7b753ac217d8d5..dceea7ef12617a 100644 --- a/deps/icu-small/source/common/ucnv_ext.h +++ b/deps/icu-small/source/common/ucnv_ext.h @@ -248,7 +248,7 @@ * the result bytes in fromUBytes[]; (0 indexes fromUBytes[0]) * } * } - * + * * The first pair in a section contains the number of following pairs in the * UChar position (16 bits, number=1..0xffff). * The value of the initial pair is used when the current UChar is not found diff --git a/deps/icu-small/source/common/ucnv_imp.h b/deps/icu-small/source/common/ucnv_imp.h index c5e6aeb47e48d8..cb939911e47e4b 100644 --- a/deps/icu-small/source/common/ucnv_imp.h +++ b/deps/icu-small/source/common/ucnv_imp.h @@ -9,7 +9,7 @@ * * ucnv_imp.h: * Contains all internal and external data structure definitions -* Created & Maitained by Bertrand A. Damiba +* Created & Maintained by Bertrand A. Damiba * * * diff --git a/deps/icu-small/source/common/ucnv_io.cpp b/deps/icu-small/source/common/ucnv_io.cpp index d9e91314ed5347..7a95a3f1e61dd7 100644 --- a/deps/icu-small/source/common/ucnv_io.cpp +++ b/deps/icu-small/source/common/ucnv_io.cpp @@ -10,7 +10,7 @@ * * * ucnv_io.cpp: -* initializes global variables and defines functions pertaining to converter +* initializes global variables and defines functions pertaining to converter * name resolution aspect of the conversion code. * * new implementation: diff --git a/deps/icu-small/source/common/ucnv_lmb.cpp b/deps/icu-small/source/common/ucnv_lmb.cpp index bead464afd4a14..6969727927e60b 100644 --- a/deps/icu-small/source/common/ucnv_lmb.cpp +++ b/deps/icu-small/source/common/ucnv_lmb.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2000-2016, International Business Machines * Corporation and others. All Rights Reserved. @@ -15,9 +15,9 @@ * extensively hacked up by: Jim Snyder-Grant * * Modification History: -* +* * Date Name Description -* +* * 06/20/2000 helena OS/400 port changes; mostly typecast. * 06/27/2000 Jim Snyder-Grant Deal with partial characters and small buffers. * Add comments to document LMBCS format and implementation @@ -48,16 +48,16 @@ (Lotus Multi-Byte Character Set) - LMBCS was invented in the late 1980's and is primarily used in Lotus Notes - databases and in Lotus 1-2-3 files. Programmers who work with the APIs + LMBCS was invented in the late 1980's and is primarily used in Lotus Notes + databases and in Lotus 1-2-3 files. Programmers who work with the APIs into these products will sometimes need to deal with strings in this format. - The code in this file provides an implementation for an ICU converter of - LMBCS to and from Unicode. + The code in this file provides an implementation for an ICU converter of + LMBCS to and from Unicode. - Since the LMBCS character set is only sparsely documented in existing - printed or online material, we have added extensive annotation to this - file to serve as a guide to understanding LMBCS. + Since the LMBCS character set is only sparsely documented in existing + printed or online material, we have added extensive annotation to this + file to serve as a guide to understanding LMBCS. LMBCS was originally designed with these four sometimes-competing design goals: @@ -69,11 +69,11 @@ All of the national character sets LMBCS was trying to encode are 'ANSI' - based, in that the bytes from 0x20 - 0x7F are almost exactly the - same common Latin unaccented characters and symbols in all character sets. + based, in that the bytes from 0x20 - 0x7F are almost exactly the + same common Latin unaccented characters and symbols in all character sets. - So, in order to help meet the speed & memory design goals, the common ANSI - bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS. + So, in order to help meet the speed & memory design goals, the common ANSI + bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS. The general LMBCS code unit is from 1-3 bytes. We can describe the 3 bytes as follows: @@ -86,21 +86,21 @@ #define ULMBCS_CHARSIZE_MAX 3 /* The single-byte values from 0x20 to 0x7F are examples of single D1 bytes. - We often have to figure out if byte values are below or above this, so we - use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control + We often have to figure out if byte values are below or above this, so we + use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control characters just above & below the common lower-ANSI range */ -#define ULMBCS_C0END 0x1F -#define ULMBCS_C1START 0x80 +#define ULMBCS_C0END 0x1F +#define ULMBCS_C1START 0x80 /* - Since LMBCS is always dealing in byte units. we create a local type here for + Since LMBCS is always dealing in byte units. we create a local type here for dealing with these units of LMBCS code units: -*/ +*/ typedef uint8_t ulmbcs_byte_t; -/* - Most of the values less than 0x20 are reserved in LMBCS to announce - which national character standard is being used for the 'D' bytes. +/* + Most of the values less than 0x20 are reserved in LMBCS to announce + which national character standard is being used for the 'D' bytes. In the comments we show the common name and the IBM character-set ID for these character-set announcers: */ @@ -119,105 +119,105 @@ typedef uint8_t ulmbcs_byte_t; #define ULMBCS_GRP_CN 0x13 /* Chinese TC :ibm-1386 */ /* - So, the beginning of understanding LMBCS is that IF the first byte of a LMBCS - character is one of those 12 values, you can interpret the remaining bytes of - that character as coming from one of those character sets. Since the lower - ANSI bytes already are represented in single bytes, using one of the character - set announcers is used to announce a character that starts with a byte of + So, the beginning of understanding LMBCS is that IF the first byte of a LMBCS + character is one of those 12 values, you can interpret the remaining bytes of + that character as coming from one of those character sets. Since the lower + ANSI bytes already are represented in single bytes, using one of the character + set announcers is used to announce a character that starts with a byte of 0x80 or greater. - The character sets are arranged so that the single byte sets all appear - before the multi-byte character sets. When we need to tell whether a + The character sets are arranged so that the single byte sets all appear + before the multi-byte character sets. When we need to tell whether a group byte is for a single byte char set or not we use this define: */ -#define ULMBCS_DOUBLEOPTGROUP_START 0x10 +#define ULMBCS_DOUBLEOPTGROUP_START 0x10 -/* -However, to fully understand LMBCS, you must also understand a series of -exceptions & optimizations made in service of the design goals. +/* +However, to fully understand LMBCS, you must also understand a series of +exceptions & optimizations made in service of the design goals. First, those of you who are character set mavens may have noticed that -the 'double-byte' character sets are actually multi-byte character sets +the 'double-byte' character sets are actually multi-byte character sets that can have 1 or two bytes, even in the upper-ascii range. To force -each group byte to introduce a fixed-width encoding (to make it faster to -count characters), we use a convention of doubling up on the group byte +each group byte to introduce a fixed-width encoding (to make it faster to +count characters), we use a convention of doubling up on the group byte to introduce any single-byte character > 0x80 in an otherwise double-byte -character set. So, for example, the LMBCS sequence x10 x10 xAE is the +character set. So, for example, the LMBCS sequence x10 x10 xAE is the same as '0xAE' in the Japanese code page 943. -Next, you will notice that the list of group bytes has some gaps. +Next, you will notice that the list of group bytes has some gaps. These are used in various ways. -We reserve a few special single byte values for common control -characters. These are in the same place as their ANSI eqivalents for speed. +We reserve a few special single byte values for common control +characters. These are in the same place as their ANSI equivalents for speed. */ - + #define ULMBCS_HT 0x09 /* Fixed control char - Horizontal Tab */ #define ULMBCS_LF 0x0A /* Fixed control char - Line Feed */ #define ULMBCS_CR 0x0D /* Fixed control char - Carriage Return */ -/* Then, 1-2-3 reserved a special single-byte character to put at the +/* Then, 1-2-3 reserved a special single-byte character to put at the beginning of internal 'system' range names: */ -#define ULMBCS_123SYSTEMRANGE 0x19 +#define ULMBCS_123SYSTEMRANGE 0x19 -/* Then we needed a place to put all the other ansi control characters -that must be moved to different values because LMBCS reserves those -values for other purposes. To represent the control characters, we start -with a first byte of 0xF & add the control character value as the +/* Then we needed a place to put all the other ansi control characters +that must be moved to different values because LMBCS reserves those +values for other purposes. To represent the control characters, we start +with a first byte of 0xF & add the control character value as the second byte */ -#define ULMBCS_GRP_CTRL 0x0F +#define ULMBCS_GRP_CTRL 0x0F -/* For the C0 controls (less than 0x20), we add 0x20 to preserve the -useful doctrine that any byte less than 0x20 in a LMBCS char must be +/* For the C0 controls (less than 0x20), we add 0x20 to preserve the +useful doctrine that any byte less than 0x20 in a LMBCS char must be the first byte of a character:*/ -#define ULMBCS_CTRLOFFSET 0x20 +#define ULMBCS_CTRLOFFSET 0x20 -/* -Where to put the characters that aren't part of any of the 12 national -character sets? The first thing that was done, in the earlier years of +/* +Where to put the characters that aren't part of any of the 12 national +character sets? The first thing that was done, in the earlier years of LMBCS, was to use up the spaces of the form - [G] D1, - + [G] D1, + where 'G' was one of the single-byte character groups, and - D1 was less than 0x80. These sequences are gathered together - into a Lotus-invented doublebyte character set to represent a - lot of stray values. Internally, in this implementation, we track this + D1 was less than 0x80. These sequences are gathered together + into a Lotus-invented doublebyte character set to represent a + lot of stray values. Internally, in this implementation, we track this as group '0', as a place to tuck this exceptions list.*/ -#define ULMBCS_GRP_EXCEPT 0x00 +#define ULMBCS_GRP_EXCEPT 0x00 /* - Finally, as the durability and usefulness of UNICODE became clear, - LOTUS added a new group 0x14 to hold Unicode values not otherwise + Finally, as the durability and usefulness of UNICODE became clear, + LOTUS added a new group 0x14 to hold Unicode values not otherwise represented in LMBCS: */ -#define ULMBCS_GRP_UNICODE 0x14 -/* The two bytes appearing after a 0x14 are intrepreted as UFT-16 BE -(Big-Endian) characters. The exception comes when the UTF16 +#define ULMBCS_GRP_UNICODE 0x14 +/* The two bytes appearing after a 0x14 are interpreted as UFT-16 BE +(Big-Endian) characters. The exception comes when the UTF16 representation would have a zero as the second byte. In that case, -'F6' is used in its place, and the bytes are swapped. (This prevents +'F6' is used in its place, and the bytes are swapped. (This prevents LMBCS from encoding any Unicode values of the form U+F6xx, but that's OK: 0xF6xx is in the middle of the Private Use Area.)*/ -#define ULMBCS_UNICOMPATZERO 0xF6 +#define ULMBCS_UNICOMPATZERO 0xF6 -/* It is also useful in our code to have a constant for the size of +/* It is also useful in our code to have a constant for the size of a LMBCS char that holds a literal Unicode value */ -#define ULMBCS_UNICODE_SIZE 3 +#define ULMBCS_UNICODE_SIZE 3 -/* -To squish the LMBCS representations down even further, and to make -translations even faster,sometimes the optimization group byte can be dropped -from a LMBCS character. This is decided on a process-by-process basis. The +/* +To squish the LMBCS representations down even further, and to make +translations even faster,sometimes the optimization group byte can be dropped +from a LMBCS character. This is decided on a process-by-process basis. The group byte that is dropped is called the 'optimization group'. For Notes, the optimzation group is always 0x1.*/ -#define ULMBCS_DEFAULTOPTGROUP 0x1 -/* For 1-2-3 files, the optimzation group is stored in the header of the 1-2-3 -file. +#define ULMBCS_DEFAULTOPTGROUP 0x1 +/* For 1-2-3 files, the optimzation group is stored in the header of the 1-2-3 +file. - In any case, when using ICU, you either pass in the -optimization group as part of the name of the converter (LMBCS-1, LMBCS-2, -etc.). Using plain 'LMBCS' as the name of the converter will give you + In any case, when using ICU, you either pass in the +optimization group as part of the name of the converter (LMBCS-1, LMBCS-2, +etc.). Using plain 'LMBCS' as the name of the converter will give you LMBCS-1. @@ -228,7 +228,7 @@ Because of the extensive use of other character sets, the LMBCS converter keeps a mapping between optimization groups and IBM character sets, so that ICU converters can be created and used as needed. */ -/* As you can see, even though any byte below 0x20 could be an optimization +/* As you can see, even though any byte below 0x20 could be an optimization byte, only those at 0x13 or below can map to an actual converter. To limit some loops and searches, we define a value for that last group converter:*/ @@ -257,12 +257,12 @@ static const char * const OptGroupByteToCPName[ULMBCS_GRP_LAST + 1] = { /* 0x0013 */ "windows-936" /* The rest are null, including the 0x0014 Unicode compatibility region - and 0x0019, the 1-2-3 system range control char */ + and 0x0019, the 1-2-3 system range control char */ }; -/* That's approximately all the data that's needed for translating - LMBCS to Unicode. +/* That's approximately all the data that's needed for translating + LMBCS to Unicode. However, to translate Unicode to LMBCS, we need some more support. @@ -270,18 +270,18 @@ However, to translate Unicode to LMBCS, we need some more support. That's because there are often more than one possible mappings from a Unicode code point back into LMBCS. The first thing we do is look up into a table to figure out if there are more than one possible mappings. This table, -arranged by Unicode values (including ranges) either lists which group +arranged by Unicode values (including ranges) either lists which group to use, or says that it could go into one or more of the SBCS sets, or -into one or more of the DBCS sets. (If the character exists in both DBCS & -SBCS, the table will place it in the SBCS sets, to make the LMBCS code point +into one or more of the DBCS sets. (If the character exists in both DBCS & +SBCS, the table will place it in the SBCS sets, to make the LMBCS code point length as small as possible. Here's the two special markers we use to indicate ambiguous mappings: */ -#define ULMBCS_AMBIGUOUS_SBCS 0x80 /* could fit in more than one - LMBCS sbcs native encoding +#define ULMBCS_AMBIGUOUS_SBCS 0x80 /* could fit in more than one + LMBCS sbcs native encoding (example: most accented latin) */ -#define ULMBCS_AMBIGUOUS_MBCS 0x81 /* could fit in more than one - LMBCS mbcs native encoding +#define ULMBCS_AMBIGUOUS_MBCS 0x81 /* could fit in more than one + LMBCS mbcs native encoding (example: Unihan) */ #define ULMBCS_AMBIGUOUS_ALL 0x82 /* And here's a simple way to see if a group falls in an appropriate range */ @@ -296,7 +296,7 @@ ambiguous mappings: */ /* The table & some code to use it: */ -static const struct _UniLMBCSGrpMap +static const struct _UniLMBCSGrpMap { const UChar uniStartRange; const UChar uniEndRange; @@ -443,29 +443,29 @@ static const struct _UniLMBCSGrpMap {0xFF01, 0xFFEE, ULMBCS_AMBIGUOUS_MBCS}, {0xFFFF, 0xFFFF, ULMBCS_GRP_UNICODE} }; - -static ulmbcs_byte_t + +static ulmbcs_byte_t FindLMBCSUniRange(UChar uniChar) { const struct _UniLMBCSGrpMap * pTable = UniLMBCSGrpMap; - while (uniChar > pTable->uniEndRange) + while (uniChar > pTable->uniEndRange) { pTable++; } - if (uniChar >= pTable->uniStartRange) + if (uniChar >= pTable->uniStartRange) { return pTable->GrpType; } return ULMBCS_GRP_UNICODE; } -/* -We also ask the creator of a converter to send in a preferred locale +/* +We also ask the creator of a converter to send in a preferred locale that we can use in resolving ambiguous mappings. They send the locale -in as a string, and we map it, if possible, to one of the -LMBCS groups. We use this table, and the associated code, to +in as a string, and we map it, if possible, to one of the +LMBCS groups. We use this table, and the associated code, to do the lookup: */ /************************************************** @@ -534,12 +534,12 @@ static const struct _LocaleLMBCSGrpMap }; -static ulmbcs_byte_t +static ulmbcs_byte_t FindLMBCSLocale(const char *LocaleID) { const struct _LocaleLMBCSGrpMap *pTable = LocaleLMBCSGrpMap; - if ((!LocaleID) || (!*LocaleID)) + if ((!LocaleID) || (!*LocaleID)) { return 0; } @@ -561,16 +561,16 @@ FindLMBCSLocale(const char *LocaleID) } -/* - Before we get to the main body of code, here's how we hook up to the rest - of ICU. ICU converters are required to define a structure that includes +/* + Before we get to the main body of code, here's how we hook up to the rest + of ICU. ICU converters are required to define a structure that includes some function pointers, and some common data, in the style of a C++ vtable. There is also room in there for converter-specific data. LMBCS uses that converter-specific data to keep track of the 12 subconverters - we use, the optimization group, and the group (if any) that matches the + we use, the optimization group, and the group (if any) that matches the locale. We have one structure instantiated for each of the 12 possible - optimization groups. To avoid typos & to avoid boring the reader, we - put the declarations of these structures and functions into macros. To see + optimization groups. To avoid typos & to avoid boring the reader, we + put the declarations of these structures and functions into macros. To see the definitions of these structures, see unicode\ucnv_bld.h */ @@ -617,7 +617,7 @@ const UConverterSharedData _LMBCSData##n= \ /* The only function we needed to duplicate 12 times was the 'open' function, which will do basically the same thing except set a different -optimization group. So, we put the common stuff into a worker function, +optimization group. So, we put the common stuff into a worker function, and set up another macro to stamp out the 12 open functions:*/ #define DEFINE_LMBCS_OPEN(n) \ static void U_CALLCONV \ @@ -627,7 +627,7 @@ static void U_CALLCONV \ /* Here's the open worker & the common close function */ -static void +static void _LMBCSOpenWorker(UConverter* _this, UConverterLoadArgs *pArgs, UErrorCode* err, @@ -645,7 +645,7 @@ _LMBCSOpenWorker(UConverter* _this, stackArgs.onlyTestIsLoadable = pArgs->onlyTestIsLoadable; - for (i=0; i <= ULMBCS_GRP_LAST && U_SUCCESS(*err); i++) + for (i=0; i <= ULMBCS_GRP_LAST && U_SUCCESS(*err); i++) { if(OptGroupByteToCPName[i] != NULL) { extraInfo->OptGrpConverter[i] = ucnv_loadSharedData(OptGroupByteToCPName[i], &stackPieces, &stackArgs, err); @@ -667,7 +667,7 @@ _LMBCSOpenWorker(UConverter* _this, U_CDECL_BEGIN static void U_CALLCONV -_LMBCSClose(UConverter * _this) +_LMBCSClose(UConverter * _this) { if (_this->extraInfo != NULL) { @@ -692,9 +692,9 @@ typedef struct LMBCSClone { } LMBCSClone; static UConverter * U_CALLCONV -_LMBCSSafeClone(const UConverter *cnv, - void *stackBuffer, - int32_t *pBufferSize, +_LMBCSSafeClone(const UConverter *cnv, + void *stackBuffer, + int32_t *pBufferSize, UErrorCode *status) { (void)status; LMBCSClone *newLMBCS; @@ -736,10 +736,10 @@ _LMBCSSafeClone(const UConverter *cnv, * This may need to be looked at again as Lotus uses _LMBCSGetUnicodeSet(). (091216) */ -/* +/* Here's the basic helper function that we use when converting from - Unicode to LMBCS, and we suspect that a Unicode character will fit into - one of the 12 groups. The return value is the number of bytes written + Unicode to LMBCS, and we suspect that a Unicode character will fit into + one of the 12 groups. The return value is the number of bytes written starting at pStartLMBCS (if any). */ @@ -751,7 +751,7 @@ LMBCSConversionWorker ( UChar * pUniChar, /* The input unicode character */ ulmbcs_byte_t * lastConverterIndex, /* output: track last successful group used */ UBool * groups_tried /* output: track any unsuccessful groups */ -) +) { ulmbcs_byte_t * pLMBCS = pStartLMBCS; UConverterSharedData * xcnv = extraInfo->OptGrpConverter[group]; @@ -780,7 +780,7 @@ LMBCSConversionWorker ( except with the exception group. */ U_ASSERT((firstByte <= ULMBCS_C0END) || (firstByte >= ULMBCS_C1START) || (group == ULMBCS_GRP_EXCEPT)); - + /* use converted data: first write 0, 1 or two group bytes */ if (group != ULMBCS_GRP_EXCEPT && extraInfo->OptGroup != group) { @@ -820,11 +820,11 @@ LMBCSConversionWorker ( } -/* This is a much simpler version of above, when we +/* This is a much simpler version of above, when we know we are writing LMBCS using the Unicode group */ -static size_t -LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, UChar uniChar) +static size_t +LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, UChar uniChar) { /* encode into LMBCS Unicode range */ uint8_t LowCh = (uint8_t)(uniChar & 0x00FF); @@ -859,26 +859,26 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, int32_t bytes_written; UBool groups_tried[ULMBCS_GRP_LAST+1]; UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo; - int sourceIndex = 0; + int sourceIndex = 0; /* Basic strategy: attempt to fill in local LMBCS 1-char buffer.(LMBCS) - If that succeeds, see if it will all fit into the target & copy it over + If that succeeds, see if it will all fit into the target & copy it over if it does. We try conversions in the following order: 1. Single-byte ascii & special fixed control chars (&null) - 2. Look up group in table & try that (could be + 2. Look up group in table & try that (could be A) Unicode group B) control group, - C) national encoding, + C) national encoding, or ambiguous SBCS or MBCS group (on to step 4...) - + 3. If its ambiguous, try this order: A) The optimization group B) The locale group C) The last group that succeeded with this string. - D) every other group that's relevent (single or double) + D) every other group that's relevant (single or double) E) If its single-byte ambiguous, try the exceptions group 4. And as a grand fallback: Unicode @@ -912,8 +912,8 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, extraInfo->localeConverterIndex = ULMBCS_GRP_L1; } if (((uniChar > ULMBCS_C0END) && (uniChar < ULMBCS_C1START)) || - uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR || - uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE + uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR || + uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE ) { *pLMBCS++ = (ulmbcs_byte_t ) uniChar; @@ -921,15 +921,15 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, } - if (!bytes_written) + if (!bytes_written) { /* Check by UNICODE range (Strategy 2) */ ulmbcs_byte_t group = FindLMBCSUniRange(uniChar); - + if (group == ULMBCS_GRP_UNICODE) /* (Strategy 2A) */ { pLMBCS += LMBCSConvertUni(pLMBCS,uniChar); - + bytes_written = (int32_t)(pLMBCS - LMBCS); } else if (group == ULMBCS_GRP_CTRL) /* (Strategy 2B) */ @@ -951,7 +951,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, { /* a specific converter has been identified - use it */ bytes_written = (int32_t)LMBCSConversionWorker ( - extraInfo, group, pLMBCS, &uniChar, + extraInfo, group, pLMBCS, &uniChar, &lastConverterIndex, groups_tried); } if (!bytes_written) /* the ambiguous group cases (Strategy 3) */ @@ -1004,15 +1004,15 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, } if (!bytes_written) { - /* just check every possible matching converter (Strategy 3D) */ + /* just check every possible matching converter (Strategy 3D) */ ulmbcs_byte_t grp_start; - ulmbcs_byte_t grp_end; + ulmbcs_byte_t grp_end; ulmbcs_byte_t grp_ix; - grp_start = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) - ? ULMBCS_DOUBLEOPTGROUP_START + grp_start = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) + ? ULMBCS_DOUBLEOPTGROUP_START : ULMBCS_GRP_L1); - grp_end = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) - ? ULMBCS_GRP_LAST + grp_end = (ulmbcs_byte_t)((group == ULMBCS_AMBIGUOUS_MBCS) + ? ULMBCS_GRP_LAST : ULMBCS_GRP_TH); if(group == ULMBCS_AMBIGUOUS_ALL) { @@ -1020,22 +1020,22 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, grp_end = ULMBCS_GRP_LAST; } for (grp_ix = grp_start; - grp_ix <= grp_end && !bytes_written; + grp_ix <= grp_end && !bytes_written; grp_ix++) { if (extraInfo->OptGrpConverter [grp_ix] && !groups_tried [grp_ix]) { bytes_written = (int32_t)LMBCSConversionWorker (extraInfo, - grp_ix, pLMBCS, &uniChar, + grp_ix, pLMBCS, &uniChar, &lastConverterIndex, groups_tried); } } - /* a final conversion fallback to the exceptions group if its likely + /* a final conversion fallback to the exceptions group if its likely to be single byte (Strategy 3E) */ if (!bytes_written && grp_start == ULMBCS_GRP_L1) { bytes_written = (int32_t)LMBCSConversionWorker (extraInfo, - ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar, + ULMBCS_GRP_EXCEPT, pLMBCS, &uniChar, &lastConverterIndex, groups_tried); } } @@ -1048,8 +1048,8 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, } } } - - /* we have a translation. increment source and write as much as posible to target */ + + /* we have a translation. increment source and write as much as possible to target */ args->source++; pLMBCS = LMBCS; while (args->target < args->targetLimit && bytes_written--) @@ -1077,7 +1077,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args, } /*Fix for SPR#DJOE66JFN3 (Lotus)*/ extraInfo->localeConverterIndex = OldConverterIndex; - } + } } @@ -1091,7 +1091,7 @@ GetUniFromLMBCSUni(char const ** ppLMBCSin) /* Called with LMBCS-style Unicode uint8_t HighCh = *(*ppLMBCSin)++; /* Big-endian Unicode in LMBCS compatibility group*/ uint8_t LowCh = *(*ppLMBCSin)++; - if (HighCh == ULMBCS_UNICOMPATZERO ) + if (HighCh == ULMBCS_UNICOMPATZERO ) { HighCh = LowCh; LowCh = 0; /* zero-byte in LSB special character */ @@ -1101,7 +1101,7 @@ GetUniFromLMBCSUni(char const ** ppLMBCSin) /* Called with LMBCS-style Unicode -/* CHECK_SOURCE_LIMIT: Helper macro to verify that there are at least'index' +/* CHECK_SOURCE_LIMIT: Helper macro to verify that there are at least'index' bytes left in source up to sourceLimit.Errors appropriately if not. If we reach the limit, then update the source pointer to there to consume all input as required by ICU converter semantics. @@ -1132,32 +1132,32 @@ _LMBCSGetNextUCharWorker(UConverterToUnicodeArgs* args, } /* Grab first byte & save address for error recovery */ CurByte = *((ulmbcs_byte_t *) (args->source++)); - + /* * at entry of each if clause: * 1. 'CurByte' points at the first byte of a LMBCS character - * 2. '*source'points to the next byte of the source stream after 'CurByte' + * 2. '*source'points to the next byte of the source stream after 'CurByte' * * the job of each if clause is: * 1. set '*source' to point at the beginning of next char (nop if LMBCS char is only 1 byte) * 2. set 'uniChar' up with the right Unicode value, or set 'err' appropriately */ - + /* First lets check the simple fixed values. */ if(((CurByte > ULMBCS_C0END) && (CurByte < ULMBCS_C1START)) /* ascii range */ - || (CurByte == 0) - || CurByte == ULMBCS_HT || CurByte == ULMBCS_CR + || (CurByte == 0) + || CurByte == ULMBCS_HT || CurByte == ULMBCS_CR || CurByte == ULMBCS_LF || CurByte == ULMBCS_123SYSTEMRANGE) { uniChar = CurByte; } - else + else { UConverterDataLMBCS * extraInfo; - ulmbcs_byte_t group; - UConverterSharedData *cnv; - + ulmbcs_byte_t group; + UConverterSharedData *cnv; + if (CurByte == ULMBCS_GRP_CTRL) /* Control character group - no opt group update */ { ulmbcs_byte_t C0C1byte; @@ -1165,15 +1165,15 @@ _LMBCSGetNextUCharWorker(UConverterToUnicodeArgs* args, C0C1byte = *(args->source)++; uniChar = (C0C1byte < ULMBCS_C1START) ? C0C1byte - ULMBCS_CTRLOFFSET : C0C1byte; } - else + else if (CurByte == ULMBCS_GRP_UNICODE) /* Unicode compatibility group: BigEndian UTF16 */ { CHECK_SOURCE_LIMIT(2); - + /* don't check for error indicators fffe/ffff below */ return GetUniFromLMBCSUni(&(args->source)); } - else if (CurByte <= ULMBCS_CTRLOFFSET) + else if (CurByte <= ULMBCS_CTRLOFFSET) { group = CurByte; /* group byte is in the source */ extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo; @@ -1181,7 +1181,7 @@ _LMBCSGetNextUCharWorker(UConverterToUnicodeArgs* args, { /* this is not a valid group byte - no converter*/ *err = U_INVALID_CHAR_FOUND; - } + } else if (group >= ULMBCS_DOUBLEOPTGROUP_START) /* double byte conversion */ { @@ -1202,21 +1202,21 @@ _LMBCSGetNextUCharWorker(UConverterToUnicodeArgs* args, else { /* single byte conversion */ CHECK_SOURCE_LIMIT(1); CurByte = *(args->source)++; - + if (CurByte >= ULMBCS_C1START) { uniChar = _MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv, CurByte); } else { - /* The non-optimizable oddballs where there is an explicit byte + /* The non-optimizable oddballs where there is an explicit byte * AND the second byte is not in the upper ascii range */ char bytes[2]; extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo; - cnv = extraInfo->OptGrpConverter [ULMBCS_GRP_EXCEPT]; - + cnv = extraInfo->OptGrpConverter [ULMBCS_GRP_EXCEPT]; + /* Lookup value must include opt group */ bytes[0] = group; bytes[1] = CurByte; @@ -1277,15 +1277,15 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args, if (args->converter->toULength) /* reassemble char from previous call */ { - const char *saveSourceLimit; + const char *saveSourceLimit; size_t size_old = args->converter->toULength; /* limit from source is either remainder of temp buffer, or user limit on source */ size_t size_new_maybe_1 = sizeof(LMBCS) - size_old; size_t size_new_maybe_2 = args->sourceLimit - args->source; size_t size_new = (size_new_maybe_1 < size_new_maybe_2) ? size_new_maybe_1 : size_new_maybe_2; - - + + uprv_memcpy(LMBCS, args->converter->toUBytes, size_old); uprv_memcpy(LMBCS + size_old, args->source, size_new); saveSourceLimit = args->sourceLimit; @@ -1342,7 +1342,7 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args, { *err = U_BUFFER_OVERFLOW_ERROR; } - else if (U_FAILURE(*err)) + else if (U_FAILURE(*err)) { /* If character incomplete or unmappable/illegal, store it in toUBytes[] */ args->converter->toULength = savebytes; diff --git a/deps/icu-small/source/common/ucnv_u16.cpp b/deps/icu-small/source/common/ucnv_u16.cpp index 6c1b87d3c939c6..a5e8367400ae69 100644 --- a/deps/icu-small/source/common/ucnv_u16.cpp +++ b/deps/icu-small/source/common/ucnv_u16.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2002-2015, International Business Machines * Corporation and others. All Rights Reserved. @@ -199,7 +199,7 @@ _UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs, } else { length=0; /* from here on, length counts the bytes in overflow[] */ } - + if(c!=0) { /* * c is a surrogate, and @@ -567,7 +567,7 @@ _UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) { pArgs->source=(const char *)s; return c; -} +} static void U_CALLCONV _UTF16BEReset(UConverter *cnv, UConverterResetChoice choice) { @@ -800,7 +800,7 @@ _UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs, } else { length=0; /* from here on, length counts the bytes in overflow[] */ } - + if(c!=0) { /* * c is a surrogate, and @@ -1168,7 +1168,7 @@ _UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) { pArgs->source=(const char *)s; return c; -} +} static void U_CALLCONV _UTF16LEReset(UConverter *cnv, UConverterResetChoice choice) { diff --git a/deps/icu-small/source/common/ucnv_u32.cpp b/deps/icu-small/source/common/ucnv_u32.cpp index 13444a3afd97f1..bf6bd11dbacb73 100644 --- a/deps/icu-small/source/common/ucnv_u32.cpp +++ b/deps/icu-small/source/common/ucnv_u32.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2002-2015, International Business Machines * Corporation and others. All Rights Reserved. @@ -84,7 +84,7 @@ T_UConverter_toUnicode_UTF32_BE(UConverterToUnicodeArgs * args, if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) { /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */ - if (ch <= MAXIMUM_UCS2) + if (ch <= MAXIMUM_UCS2) { /* fits in 16 bits */ *(myTarget++) = (UChar) ch; @@ -434,7 +434,7 @@ T_UConverter_getNextUChar_UTF32_BE(UConverterToUnicodeArgs* args, } length = (int32_t)((const uint8_t *)args->sourceLimit - mySource); - if (length < 4) + if (length < 4) { /* got a partial character */ uprv_memcpy(args->converter->toUBytes, mySource, length); @@ -488,7 +488,7 @@ static const UConverterImpl _UTF32BEImpl = { NULL }; -/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */ +/* The 1232 CCSID refers to any version of Unicode with any endianness of UTF-32 */ static const UConverterStaticData _UTF32BEStaticData = { sizeof(UConverterStaticData), "UTF-32BE", @@ -640,7 +640,7 @@ T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(UConverterToUnicodeArgs * args, if (ch <= MAXIMUM_UTF && !U_IS_SURROGATE(ch)) { /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */ - if (ch <= MAXIMUM_UCS2) + if (ch <= MAXIMUM_UCS2) { /* fits in 16 bits */ *(myTarget++) = (UChar) ch; @@ -929,7 +929,7 @@ T_UConverter_getNextUChar_UTF32_LE(UConverterToUnicodeArgs* args, } length = (int32_t)((const uint8_t *)args->sourceLimit - mySource); - if (length < 4) + if (length < 4) { /* got a partial character */ uprv_memcpy(args->converter->toUBytes, mySource, length); @@ -983,7 +983,7 @@ static const UConverterImpl _UTF32LEImpl = { NULL }; -/* The 1232 CCSID refers to any version of Unicode with any endianess of UTF-32 */ +/* The 1232 CCSID refers to any version of Unicode with any endianness of UTF-32 */ static const UConverterStaticData _UTF32LEStaticData = { sizeof(UConverterStaticData), "UTF-32LE", @@ -1230,7 +1230,7 @@ static const UConverterImpl _UTF32Impl = { NULL }; -/* The 1236 CCSID refers to any version of Unicode with a BOM sensitive endianess of UTF-32 */ +/* The 1236 CCSID refers to any version of Unicode with a BOM sensitive endianness of UTF-32 */ static const UConverterStaticData _UTF32StaticData = { sizeof(UConverterStaticData), "UTF-32", @@ -1247,7 +1247,7 @@ static const UConverterStaticData _UTF32StaticData = { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } /* reserved */ }; -const UConverterSharedData _UTF32Data = +const UConverterSharedData _UTF32Data = UCNV_IMMUTABLE_SHARED_DATA_INITIALIZER(&_UTF32StaticData, &_UTF32Impl); #endif diff --git a/deps/icu-small/source/common/ucnv_u7.cpp b/deps/icu-small/source/common/ucnv_u7.cpp index a5a9485b73f36b..de9f3f42ec9724 100644 --- a/deps/icu-small/source/common/ucnv_u7.cpp +++ b/deps/icu-small/source/common/ucnv_u7.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2002-2016, International Business Machines * Corporation and others. All Rights Reserved. diff --git a/deps/icu-small/source/common/ucnv_u8.cpp b/deps/icu-small/source/common/ucnv_u8.cpp index 9cf4a81ab2ef36..1ef7fa2f02f0a5 100644 --- a/deps/icu-small/source/common/ucnv_u8.cpp +++ b/deps/icu-small/source/common/ucnv_u8.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2002-2016, International Business Machines * Corporation and others. All Rights Reserved. @@ -134,7 +134,7 @@ static void U_CALLCONV ucnv_toUnicode_UTF8 (UConverterToUnicodeArgs * args, ch -= offsetsFromUTF8[inBytes]; /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */ - if (ch <= MAXIMUM_UCS2) + if (ch <= MAXIMUM_UCS2) { /* fits in 16 bits */ *(myTarget++) = (UChar) ch; @@ -250,7 +250,7 @@ static void U_CALLCONV ucnv_toUnicode_UTF8_OFFSETS_LOGIC (UConverterToUnicodeAr ch -= offsetsFromUTF8[inBytes]; /* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */ - if (ch <= MAXIMUM_UCS2) + if (ch <= MAXIMUM_UCS2) { /* fits in 16 bits */ *(myTarget++) = (UChar) ch; @@ -640,7 +640,7 @@ static UChar32 U_CALLCONV ucnv_getNextUChar_UTF8(UConverterToUnicodeArgs *args, cnv->toULength = i; *err = U_ILLEGAL_CHAR_FOUND; return 0xffff; -} +} U_CDECL_END /* UTF-8-from-UTF-8 conversion functions ------------------------------------ */ diff --git a/deps/icu-small/source/common/ucnvhz.cpp b/deps/icu-small/source/common/ucnvhz.cpp index b26cf78289dcab..6b2f5faaf0a59a 100644 --- a/deps/icu-small/source/common/ucnvhz.cpp +++ b/deps/icu-small/source/common/ucnvhz.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2000-2015, International Business Machines * Corporation and others. All Rights Reserved. @@ -13,7 +13,7 @@ * created on: 2000oct16 * created by: Ram Viswanadha * 10/31/2000 Ram Implemented offsets logic function -* +* */ #include "unicode/utypes.h" @@ -117,7 +117,7 @@ _HZReset(UConverter *cnv, UConverterResetChoice choice){ } if(choice!=UCNV_RESET_TO_UNICODE) { cnv->fromUnicodeStatus= 0; - cnv->fromUChar32=0x0000; + cnv->fromUChar32=0x0000; if(cnv->extraInfo != NULL){ ((UConverterDataHZ*)cnv->extraInfo)->isEscapeAppended = FALSE; ((UConverterDataHZ*)cnv->extraInfo)->targetIndex = 0; @@ -129,7 +129,7 @@ _HZReset(UConverter *cnv, UConverterResetChoice choice){ /**************************************HZ Encoding************************************************* * Rules for HZ encoding -* +* * In ASCII mode, a byte is interpreted as an ASCII character, unless a * '~' is encountered. The character '~' is an escape character. By * convention, it must be immediately followed ONLY by '~', '{' or '\n' @@ -162,7 +162,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UChar32 targetUniChar = 0x0000; int32_t mySourceChar = 0x0000; UConverterDataHZ* myData=(UConverterDataHZ*)(args->converter->extraInfo); - tempBuf[0]=0; + tempBuf[0]=0; tempBuf[1]=0; /* Calling code already handles this situation. */ @@ -170,11 +170,11 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, *err = U_ILLEGAL_ARGUMENT_ERROR; return; }*/ - + while(mySource< mySourceLimit){ - + if(myTarget < args->targetLimit){ - + mySourceChar= (unsigned char) *mySource++; if(args->converter->mode == UCNV_TILDE) { @@ -349,7 +349,7 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, UBool oldIsTargetUCharDBCS; int len =0; const char* escSeq=NULL; - + /* Calling code already handles this situation. */ /*if ((args->converter == NULL) || (args->targetLimit < myTarget) || (args->sourceLimit < args->source)){ *err = U_ILLEGAL_ARGUMENT_ERROR; @@ -362,9 +362,9 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, while (mySourceIndex < mySourceLength){ targetUniChar = missingCharMarker; if (myTargetIndex < targetLength){ - + mySourceChar = (UChar) mySource[mySourceIndex++]; - + oldIsTargetUCharDBCS = isTargetUCharDBCS; if(mySourceChar ==UCNV_TILDE){ @@ -389,7 +389,7 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, } } if (targetUniChar != missingCharMarker){ - myConverterData->isTargetUCharDBCS = isTargetUCharDBCS = (UBool)(targetUniChar>0x00FF); + myConverterData->isTargetUCharDBCS = isTargetUCharDBCS = (UBool)(targetUniChar>0x00FF); if(oldIsTargetUCharDBCS != isTargetUCharDBCS || !myConverterData->isEscapeAppended ){ /*Shifting from a double byte to single byte mode*/ if(!isTargetUCharDBCS){ @@ -403,10 +403,10 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, escSeq = DB_ESCAPE; CONCAT_ESCAPE_MACRO(args, myTargetIndex, targetLength, escSeq,err,len,mySourceIndex); myConverterData->isEscapeAppended = TRUE; - + } } - + if(isTargetUCharDBCS){ if( myTargetIndex > 8); @@ -421,7 +421,7 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, }else{ args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar; *err = U_BUFFER_OVERFLOW_ERROR; - } + } }else{ args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] =(char) (targetUniChar >> 8); args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar; @@ -434,7 +434,7 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args, if(offsets){ *(offsets++) = mySourceIndex-1; } - + }else{ args->converter->charErrorBuffer[args->converter->charErrorBufferLength++] = (char) targetUniChar; *err = U_BUFFER_OVERFLOW_ERROR; @@ -503,7 +503,7 @@ _HZ_WriteSub(UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorCode *e char *p; char buffer[4]; p = buffer; - + if( convData->isTargetUCharDBCS){ *p++= UCNV_TILDE; *p++= UCNV_CLOSE_BRACE; @@ -528,9 +528,9 @@ struct cloneHZStruct static UConverter * U_CALLCONV -_HZ_SafeClone(const UConverter *cnv, - void *stackBuffer, - int32_t *pBufferSize, +_HZ_SafeClone(const UConverter *cnv, + void *stackBuffer, + int32_t *pBufferSize, UErrorCode *status) { struct cloneHZStruct * localClone; @@ -578,20 +578,20 @@ U_CDECL_END static const UConverterImpl _HZImpl={ UCNV_HZ, - + NULL, NULL, - + _HZOpen, _HZClose, _HZReset, - + UConverter_toUnicode_HZ_OFFSETS_LOGIC, UConverter_toUnicode_HZ_OFFSETS_LOGIC, UConverter_fromUnicode_HZ_OFFSETS_LOGIC, UConverter_fromUnicode_HZ_OFFSETS_LOGIC, NULL, - + NULL, NULL, _HZ_WriteSub, @@ -604,14 +604,14 @@ static const UConverterImpl _HZImpl={ static const UConverterStaticData _HZStaticData={ sizeof(UConverterStaticData), "HZ", - 0, - UCNV_IBM, - UCNV_HZ, - 1, + 0, + UCNV_IBM, + UCNV_HZ, + 1, 4, { 0x1a, 0, 0, 0 }, 1, - FALSE, + FALSE, FALSE, 0, 0, diff --git a/deps/icu-small/source/common/ucnvisci.cpp b/deps/icu-small/source/common/ucnvisci.cpp index 4d2815a3a652b3..f303e7e24fc92f 100644 --- a/deps/icu-small/source/common/ucnvisci.cpp +++ b/deps/icu-small/source/common/ucnvisci.cpp @@ -128,7 +128,7 @@ typedef struct { MaskEnum currentMaskToUnicode; /* mask for current state in toUnicode */ MaskEnum defMaskToUnicode; /* mask for default state in toUnicode */ UBool isFirstBuffer; /* boolean for fromUnicode to see if we need to announce the first script */ - UBool resetToDefaultToUnicode; /* boolean for reseting to default delta and mask when a newline is encountered*/ + UBool resetToDefaultToUnicode; /* boolean for resetting to default delta and mask when a newline is encountered*/ char name[sizeof(ISCII_CNV_PREFIX) + 1]; UChar32 prevToUnicodeStatus; /* Hold the previous toUnicodeStatus. This is necessary because we may need to know the last two code points. */ } UConverterDataISCII; @@ -213,13 +213,13 @@ _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) { converterData->currentMaskFromUnicode = converterData->currentMaskToUnicode = converterData->defMaskToUnicode = lookupInitialData[pArgs->options & UCNV_OPTIONS_VERSION_MASK].maskEnum; - + converterData->isFirstBuffer=TRUE; (void)uprv_strcpy(converterData->name, ISCII_CNV_PREFIX); len = (int32_t)uprv_strlen(converterData->name); converterData->name[len]= (char)((pArgs->options & UCNV_OPTIONS_VERSION_MASK) + '0'); converterData->name[len+1]=0; - + converterData->prevToUnicodeStatus = 0x0000; } else { uprv_free(cnv->extraInfo); @@ -934,12 +934,12 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC( break; } } - + sourceChar = *source++; tempContextFromUnicode = converterData->contextCharFromUnicode; - + targetByteUnit = missingCharMarker; - + /*check if input is in ASCII and C0 control codes range*/ if (sourceChar <= ASCII_END) { args->converter->fromUnicodeStatus = sourceChar; @@ -989,8 +989,8 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC( deltaChanged =TRUE; converterData->isFirstBuffer=FALSE; } - - if (converterData->currentDeltaFromUnicode == PNJ_DELTA) { + + if (converterData->currentDeltaFromUnicode == PNJ_DELTA) { if (sourceChar == PNJ_TIPPI) { /* Make sure Tippi is converted to Bindi. */ sourceChar = PNJ_BINDI; @@ -998,7 +998,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC( /* This is for consonant cluster handling. */ converterData->contextCharFromUnicode = PNJ_ADHAK; } - + } /* Normalize all Indic codepoints to Devanagari and map them to ISCII */ /* now subtract the new delta from sourceChar*/ @@ -1031,7 +1031,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC( break; } } - + if (converterData->currentDeltaFromUnicode == PNJ_DELTA && (sourceChar + PNJ_DELTA) == PNJ_ADHAK) { continue; } @@ -1105,7 +1105,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC( } static const uint16_t lookupTable[][2]={ - { ZERO, ZERO }, /*DEFALT*/ + { ZERO, ZERO }, /*DEFAULT*/ { ZERO, ZERO }, /*ROMAN*/ { DEVANAGARI, DEV_MASK }, { BENGALI, BNG_MASK }, @@ -1164,15 +1164,15 @@ static const uint16_t lookupTable[][2]={ * Post context * i) ATR : Attribute code is used to declare the font and script switching. * Currently we only switch scripts and font codes consumed without generating an error - * ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure, + * ii) EXT : Extension code is used to declare switching to Sanskrit and for obscure, * obsolete characters * Pre context - * i) Halant: if preceeded by a halant then it is a explicit halant + * i) Halant: if preceded by a halant then it is a explicit halant * ii) Nukta : - * a) if preceeded by a halant then it is a soft halant - * b) if preceeded by specific consonants and the ligatures have pre-composed + * a) if preceded by a halant then it is a soft halant + * b) if preceded by specific consonants and the ligatures have pre-composed * characters in Unicode then convert to pre-composed characters - * iii) Danda: If Danda is preceeded by a Danda then convert to Double Danda + * iii) Danda: If Danda is preceded by a Danda then convert to Double Danda * */ @@ -1189,7 +1189,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo UChar32 tempTargetUniChar = 0x0000; UChar* contextCharToUnicode= NULL; UBool found; - int i; + int i; int offset = 0; if ((args->converter == NULL) || (target < args->target) || (source < args->source)) { @@ -1208,7 +1208,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo if (target < targetLimit) { sourceChar = (unsigned char)*(source)++; - /* look at the post-context preform special processing */ + /* look at the post-context perform special processing */ if (*contextCharToUnicode==ATR) { /* If we have ATR in *contextCharToUnicode then we need to change our @@ -1245,7 +1245,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo /* We currently support only Anudatta and Devanagari abbreviation sign */ if (sourceChar==0xBF || sourceChar == 0xB8) { targetUniChar = (sourceChar==0xBF) ? DEV_ABBR_SIGN : DEV_ANUDATTA; - + /* find out if the mapping is valid in this state */ if (validityTable[(uint8_t)targetUniChar] & data->currentMaskToUnicode) { *contextCharToUnicode= NO_CHAR_MARKER; @@ -1452,7 +1452,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo WRITE_TO_TARGET_TO_U(args,source,target,args->offsets,(source-args->source -1),data->prevToUnicodeStatus,0,err); data->prevToUnicodeStatus = 0x0000; } - /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. + /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. * If 0xA2 is preceded by a codepoint in the PNJ_BINDI_TIPPI_SET then the target codepoint should be Tippi instead of Bindi. */ if (data->currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_BINDI && isPNJBindiTippi((*toUnicodeStatus + PNJ_DELTA))) { diff --git a/deps/icu-small/source/common/ucnvlat1.cpp b/deps/icu-small/source/common/ucnvlat1.cpp index 15eeb5c51f5fb3..358bc0caa25a19 100644 --- a/deps/icu-small/source/common/ucnvlat1.cpp +++ b/deps/icu-small/source/common/ucnvlat1.cpp @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2000-2015, International Business Machines * Corporation and others. All Rights Reserved. diff --git a/deps/icu-small/source/common/ucnvmbcs.cpp b/deps/icu-small/source/common/ucnvmbcs.cpp index 2fec6b4b1510d6..420aa02af5b0f6 100644 --- a/deps/icu-small/source/common/ucnvmbcs.cpp +++ b/deps/icu-small/source/common/ucnvmbcs.cpp @@ -35,7 +35,7 @@ * limitations and adds m:n character mappings and other features. * See ucnv_ext.h for details. * -* Change history: +* Change history: * * 5/6/2001 Ram Moved MBCS_SINGLE_RESULT_FROM_U,MBCS_STAGE_2_FROM_U, * MBCS_VALUE_2_FROM_STAGE_2, MBCS_VALUE_4_FROM_STAGE_2 @@ -849,7 +849,7 @@ ucnv_MBCSEnumToUnicode(UConverterMBCSTable *mbcsTable, } } -U_CFUNC void +U_CFUNC void ucnv_MBCSGetFilteredUnicodeSetForUnicode(const UConverterSharedData *sharedData, const USetAdder *sa, UConverterUnicodeSet which, @@ -1091,7 +1091,7 @@ ucnv_MBCSGetUnicodeSet(const UConverter *cnv, * Definition of LINEAR macros and gb18030Ranges see near the beginning of the file. * * In the future, conversion extensions may handle m:n mappings and delta tables, - * see http://source.icu-project.org/repos/icu/icuhtml/trunk/design/conversion/conversion_extensions.html + * see https://htmlpreview.github.io/?https://github.com/unicode-org/icu-docs/blob/main/design/conversion/conversion_extensions.html * * If an input character cannot be mapped, then these functions set an error * code. The framework will then call the callback function. @@ -4444,7 +4444,7 @@ ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs, * For EUC encodings that use only either 0x8e or 0x8f as the first * byte of their longest byte sequences, the first two bytes in * this third stage indicate with their 7th bits whether these bytes - * are to be written directly or actually need to be preceeded by + * are to be written directly or actually need to be preceded by * one of the two Single-Shift codes. With this, the third stage * stores one byte fewer per character than the actual maximum length of * EUC byte sequences. diff --git a/deps/icu-small/source/common/ucnvmbcs.h b/deps/icu-small/source/common/ucnvmbcs.h index ddc55b20fec271..c8f3b89a5e464d 100644 --- a/deps/icu-small/source/common/ucnvmbcs.h +++ b/deps/icu-small/source/common/ucnvmbcs.h @@ -180,15 +180,15 @@ * -- normal base table with optional extension * * int32_t stateTable[countStates][256]; - * + * * struct _MBCSToUFallback { (fallbacks are sorted by offset) * uint32_t offset; * UChar32 codePoint; * } toUFallbacks[countToUFallbacks]; - * + * * uint16_t unicodeCodeUnits[(offsetFromUTable-offsetToUCodeUnits)/2]; * (padded to an even number of units) - * + * * -- stage 1 tables * if(staticData.unicodeMask&UCNV_HAS_SUPPLEMENTARY) { * -- stage 1 table for all of Unicode @@ -566,10 +566,10 @@ ucnv_MBCSSingleFromUChar32(UConverterSharedData *sharedData, U_CFUNC UConverterType ucnv_MBCSGetType(const UConverter* converter); -U_CFUNC void +U_CFUNC void ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs, UErrorCode *pErrorCode); -U_CFUNC void +U_CFUNC void ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs, UErrorCode *pErrorCode); diff --git a/deps/icu-small/source/common/ucnvscsu.cpp b/deps/icu-small/source/common/ucnvscsu.cpp index eb7b7ad5c8793e..7b580291e1d765 100644 --- a/deps/icu-small/source/common/ucnvscsu.cpp +++ b/deps/icu-small/source/common/ucnvscsu.cpp @@ -16,7 +16,7 @@ * created by: Markus W. Scherer * * This is an implementation of the Standard Compression Scheme for Unicode -* as defined in http://www.unicode.org/unicode/reports/tr6/ . +* as defined in https://www.unicode.org/reports/tr6/ . * Reserved commands and window settings are treated as illegal sequences and * will result in callback calls. */ @@ -119,7 +119,7 @@ enum { }; typedef struct SCSUData { - /* dynamic window offsets, intitialize to default values from initialDynamicOffsets */ + /* dynamic window offsets, initialize to default values from initialDynamicOffsets */ uint32_t toUDynamicOffsets[8]; uint32_t fromUDynamicOffsets[8]; @@ -1969,9 +1969,9 @@ struct cloneSCSUStruct }; static UConverter * U_CALLCONV -_SCSUSafeClone(const UConverter *cnv, - void *stackBuffer, - int32_t *pBufferSize, +_SCSUSafeClone(const UConverter *cnv, + void *stackBuffer, + int32_t *pBufferSize, UErrorCode *status) { struct cloneSCSUStruct * localClone; diff --git a/deps/icu-small/source/common/ucnvsel.cpp b/deps/icu-small/source/common/ucnvsel.cpp index 07b55022c346e8..2dff5ac1bc8388 100644 --- a/deps/icu-small/source/common/ucnvsel.cpp +++ b/deps/icu-small/source/common/ucnvsel.cpp @@ -658,7 +658,7 @@ static const UEnumeration defaultEncodings = { ucnvsel_close_selector_iterator, ucnvsel_count_encodings, uenum_unextDefault, - ucnvsel_next_encoding, + ucnvsel_next_encoding, ucnvsel_reset_iterator }; @@ -711,7 +711,7 @@ static UEnumeration *selectForMask(const UConverterSelector* sel, return nullptr; } memcpy(en.getAlias(), &defaultEncodings, sizeof(UEnumeration)); - + int32_t columns = (sel->encodingsCount+31)/32; int16_t numOnes = countOnes(mask.getAlias(), columns); // now, we know the exact space we need for index @@ -767,7 +767,7 @@ ucnvsel_selectForString(const UConverterSelector* sel, } else { limit = NULL; } - + while (limit == NULL ? *s != 0 : s != limit) { UChar32 c; uint16_t pvIndex; @@ -808,7 +808,7 @@ ucnvsel_selectForUTF8(const UConverterSelector* sel, if(s!=NULL) { const char *limit = s + length; - + while (s != limit) { uint16_t pvIndex; UTRIE2_U8_NEXT16(sel->trie, s, limit, pvIndex); diff --git a/deps/icu-small/source/common/ucol_swp.cpp b/deps/icu-small/source/common/ucol_swp.cpp index 97b5c4aff50c88..1af19863fa84e7 100644 --- a/deps/icu-small/source/common/ucol_swp.cpp +++ b/deps/icu-small/source/common/ucol_swp.cpp @@ -173,7 +173,7 @@ swapFormatVersion3(const UDataSwapper *ds, header.contractionUCACombosSize=udata_readInt32(ds, inHeader->contractionUCACombosSize); header.scriptToLeadByte= ds->readUInt32(inHeader->scriptToLeadByte); header.leadByteToScript= ds->readUInt32(inHeader->leadByteToScript); - + /* swap the 32-bit integers in the header */ ds->swapArray32(ds, inHeader, (int32_t)((const char *)&inHeader->jamoSpecial-(const char *)inHeader), outHeader, pErrorCode); @@ -244,21 +244,21 @@ swapFormatVersion3(const UDataSwapper *ds, ds->swapArray16(ds, inBytes+header.contractionUCACombos, (int32_t)count, outBytes+header.contractionUCACombos, pErrorCode); } - + /* swap the script to lead bytes */ if(header.scriptToLeadByte!=0) { int indexCount = ds->readUInt16(*((uint16_t*)(inBytes+header.scriptToLeadByte))); // each entry = 2 * uint16 int dataCount = ds->readUInt16(*((uint16_t*)(inBytes+header.scriptToLeadByte + 2))); // each entry = uint16 - ds->swapArray16(ds, inBytes+header.scriptToLeadByte, + ds->swapArray16(ds, inBytes+header.scriptToLeadByte, 4 + (4 * indexCount) + (2 * dataCount), outBytes+header.scriptToLeadByte, pErrorCode); } - + /* swap the lead byte to scripts */ if(header.leadByteToScript!=0) { int indexCount = ds->readUInt16(*((uint16_t*)(inBytes+header.leadByteToScript))); // each entry = uint16 int dataCount = ds->readUInt16(*((uint16_t*)(inBytes+header.leadByteToScript + 2))); // each entry = uint16 - ds->swapArray16(ds, inBytes+header.leadByteToScript, + ds->swapArray16(ds, inBytes+header.leadByteToScript, 4 + (2 * indexCount) + (2 * dataCount), outBytes+header.leadByteToScript, pErrorCode); } diff --git a/deps/icu-small/source/common/ucptrie_impl.h b/deps/icu-small/source/common/ucptrie_impl.h index 1fe6a18ac5319e..048353c80dfad5 100644 --- a/deps/icu-small/source/common/ucptrie_impl.h +++ b/deps/icu-small/source/common/ucptrie_impl.h @@ -148,7 +148,7 @@ U_CFUNC void umutablecptrie_setName(UMutableCPTrie *builder, const char *name); /* * Format of the binary, memory-mappable representation of a UCPTrie/CodePointTrie. - * For overview information see http://site.icu-project.org/design/struct/utrie + * For overview information see https://icu.unicode.org/design/struct/utrie * * The binary trie data should be 32-bit-aligned. * The overall layout is: diff --git a/deps/icu-small/source/common/ucurr.cpp b/deps/icu-small/source/common/ucurr.cpp index d38ce3d604d15d..67aab4e8ffec2f 100644 --- a/deps/icu-small/source/common/ucurr.cpp +++ b/deps/icu-small/source/common/ucurr.cpp @@ -112,7 +112,7 @@ class EquivIterator : public icu::UMemory { // Constructor. hash stores the equivalence relationships; s is the string // for which we find equivalent strings. inline EquivIterator(const icu::Hashtable& hash, const icu::UnicodeString& s) - : _hash(hash) { + : _hash(hash) { _start = _current = &s; } inline ~EquivIterator() { } @@ -230,7 +230,7 @@ static const icu::Hashtable* getCurrSymbolsEquiv(); /** * Cleanup callback func */ -static UBool U_CALLCONV +static UBool U_CALLCONV isoCodes_cleanup(void) { if (gIsoCodes != NULL) { @@ -244,7 +244,7 @@ isoCodes_cleanup(void) /** * Cleanup callback func */ -static UBool U_CALLCONV +static UBool U_CALLCONV currSymbolsEquiv_cleanup(void) { delete const_cast(gCurrSymbolsEquiv); @@ -287,7 +287,7 @@ myUCharsToChars(char* resultOfLen4, const UChar* currency) { * four integers. The first is the fraction digits. The second is the * rounding increment, or 0 if none. The rounding increment is in * units of 10^(-fraction_digits). The third and fourth are the same - * except that they are those used in cash transations ( cashDigits + * except that they are those used in cash transactions ( cashDigits * and cashRounding ). */ static const int32_t* @@ -678,10 +678,10 @@ ucurr_getName(const UChar* currency, char buf[ISO_CURRENCY_CODE_LENGTH+1]; myUCharsToChars(buf, currency); - + /* Normalize the keyword value to uppercase */ T_CString_toUpperCase(buf); - + const UChar* s = NULL; ec2 = U_ZERO_ERROR; LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_CURR, loc, &ec2)); @@ -791,11 +791,11 @@ ucurr_getPluralName(const UChar* currency, if (U_FAILURE(ec2)) { // fall back to "other" ec2 = U_ZERO_ERROR; - s = ures_getStringByKeyWithFallback(rb, "other", len, &ec2); + s = ures_getStringByKeyWithFallback(rb, "other", len, &ec2); if (U_FAILURE(ec2)) { ures_close(rb); // fall back to long name in Currencies - return ucurr_getName(currency, locale, UCURR_LONG_NAME, + return ucurr_getName(currency, locale, UCURR_LONG_NAME, isChoiceFormat, len, ec); } } @@ -848,7 +848,7 @@ typedef struct { static int U_CALLCONV currencyNameComparator(const void* a, const void* b) { const CurrencyNameStruct* currName_1 = (const CurrencyNameStruct*)a; const CurrencyNameStruct* currName_2 = (const CurrencyNameStruct*)b; - for (int32_t i = 0; + for (int32_t i = 0; i < MIN(currName_1->currencyNameLen, currName_2->currencyNameLen); ++i) { if (currName_1->currencyName[i] < currName_2->currencyName[i]) { @@ -870,7 +870,7 @@ static int U_CALLCONV currencyNameComparator(const void* a, const void* b) { // Give a locale, return the maximum number of currency names associated with // this locale. // It gets currency names from resource bundles using fallback. -// It is the maximum number because in the fallback chain, some of the +// It is the maximum number because in the fallback chain, some of the // currency names are duplicated. // For example, given locale as "en_US", the currency names get from resource // bundle in "en_US" and "en" are duplicated. The fallback mechanism will count @@ -922,7 +922,7 @@ getCurrencyNameCount(const char* loc, int32_t* total_currency_name_count, int32_ } } -static UChar* +static UChar* toUpperCase(const UChar* source, int32_t len, const char* locale) { UChar* dest = NULL; UErrorCode ec = U_ZERO_ERROR; @@ -933,7 +933,7 @@ toUpperCase(const UChar* source, int32_t len, const char* locale) { u_strToUpper(dest, destLen, source, len, locale, &ec); if (U_FAILURE(ec)) { u_memcpy(dest, source, len); - } + } return dest; } @@ -945,11 +945,11 @@ toUpperCase(const UChar* source, int32_t len, const char* locale) { // return the malloc-ed currency name arrays and the total number of currency // names in the array. static void -collectCurrencyNames(const char* locale, - CurrencyNameStruct** currencyNames, - int32_t* total_currency_name_count, - CurrencyNameStruct** currencySymbols, - int32_t* total_currency_symbol_count, +collectCurrencyNames(const char* locale, + CurrencyNameStruct** currencyNames, + int32_t* total_currency_name_count, + CurrencyNameStruct** currencySymbols, + int32_t* total_currency_symbol_count, UErrorCode& ec) { U_NAMESPACE_USE const icu::Hashtable *currencySymbolsEquiv = getCurrSymbolsEquiv(); @@ -1001,13 +1001,13 @@ collectCurrencyNames(const char* locale, // TODO: uhash_put wont change key/value? iso = (char*)ures_getKey(names); if (localeLevel == 0) { - uhash_put(currencyIsoCodes, iso, iso, &ec3); + uhash_put(currencyIsoCodes, iso, iso, &ec3); } else { if (uhash_get(currencyIsoCodes, iso) != NULL) { ures_close(names); continue; } else { - uhash_put(currencyIsoCodes, iso, iso, &ec3); + uhash_put(currencyIsoCodes, iso, iso, &ec3); } } // Add currency symbol. @@ -1058,19 +1058,19 @@ collectCurrencyNames(const char* locale, iso = (char*)ures_getKey(names); // Using hash to remove duplicated ISO codes in fallback chain. if (localeLevel == 0) { - uhash_put(currencyPluralIsoCodes, iso, iso, &ec4); + uhash_put(currencyPluralIsoCodes, iso, iso, &ec4); } else { if (uhash_get(currencyPluralIsoCodes, iso) != NULL) { ures_close(names); continue; } else { - uhash_put(currencyPluralIsoCodes, iso, iso, &ec4); + uhash_put(currencyPluralIsoCodes, iso, iso, &ec4); } } int32_t num = ures_getSize(names); int32_t len; for (int32_t j = 0; j < num; ++j) { - // TODO: remove duplicates between singular name and + // TODO: remove duplicates between singular name and // currency long name? s = ures_getStringByIndex(names, j, &len, &ec5); (*currencyNames)[*total_currency_name_count].IsoCode = iso; @@ -1094,9 +1094,9 @@ collectCurrencyNames(const char* locale, uhash_close(currencyPluralIsoCodes); // quick sort the struct - qsort(*currencyNames, *total_currency_name_count, + qsort(*currencyNames, *total_currency_name_count, sizeof(CurrencyNameStruct), currencyNameComparator); - qsort(*currencySymbols, *total_currency_symbol_count, + qsort(*currencySymbols, *total_currency_symbol_count, sizeof(CurrencyNameStruct), currencyNameComparator); #ifdef UCURR_DEBUG @@ -1133,13 +1133,13 @@ collectCurrencyNames(const char* locale, } // @param currencyNames: currency names array -// @param indexInCurrencyNames: the index of the character in currency names +// @param indexInCurrencyNames: the index of the character in currency names // array against which the comparison is done // @param key: input text char to compare against // @param begin(IN/OUT): the begin index of matching range in currency names array // @param end(IN/OUT): the end index of matching range in currency names array. static int32_t -binarySearch(const CurrencyNameStruct* currencyNames, +binarySearch(const CurrencyNameStruct* currencyNames, int32_t indexInCurrencyNames, const UChar key, int32_t* begin, int32_t* end) { @@ -1253,7 +1253,7 @@ binarySearch(const CurrencyNameStruct* currencyNames, // @param maxMatchIndex: the index in currencyName which has the longest // match with input text. static void -linearSearch(const CurrencyNameStruct* currencyNames, +linearSearch(const CurrencyNameStruct* currencyNames, int32_t begin, int32_t end, const UChar* text, int32_t textLen, int32_t *partialMatchLen, @@ -1292,7 +1292,7 @@ linearSearch(const CurrencyNameStruct* currencyNames, // @param maxMatchIndex: the index in currencyName which has the longest // match with input text. static void -searchCurrencyName(const CurrencyNameStruct* currencyNames, +searchCurrencyName(const CurrencyNameStruct* currencyNames, int32_t total_currency_count, const UChar* text, int32_t textLen, int32_t *partialMatchLen, @@ -1312,7 +1312,7 @@ searchCurrencyName(const CurrencyNameStruct* currencyNames, // The 2nd round binary search search the second "B" in the text against // the 2nd char in currency names, and narrow the matching range to // "BB BBEX BBEXYZ" (and the maximum matching "BB"). - // The 3rd round returnes the range as "BBEX BBEXYZ" (without changing + // The 3rd round returns the range as "BBEX BBEXYZ" (without changing // maximum matching). // The 4th round returns the same range (the maximum matching is "BBEX"). // The 5th round returns no matching range. @@ -1326,8 +1326,8 @@ searchCurrencyName(const CurrencyNameStruct* currencyNames, break; } *partialMatchLen = MAX(*partialMatchLen, index + 1); - if (matchIndex != -1) { - // find an exact match for text from text[0] to text[index] + if (matchIndex != -1) { + // find an exact match for text from text[0] to text[index] // in currencyNames array. *maxMatchLen = index + 1; *maxMatchIndex = matchIndex; @@ -1356,7 +1356,7 @@ typedef struct { // reference count. // reference count is set to 1 when an entry is put to cache. // it increases by 1 before accessing, and decreased by 1 after accessing. - // The entry is deleted when ref count is zero, which means + // The entry is deleted when ref count is zero, which means // the entry is replaced out of cache and no process is accessing it. int32_t refCount; } CurrencyNameCacheEntry; @@ -1450,9 +1450,9 @@ getCacheEntry(const char* locale, UErrorCode& ec) { } } if (found == -1) { - // insert new entry to + // insert new entry to // currentCacheEntryIndex % CURRENCY_NAME_CACHE_NUM - // and remove the existing entry + // and remove the existing entry // currentCacheEntryIndex % CURRENCY_NAME_CACHE_NUM // from cache. cacheEntry = currCache[currentCacheEntryIndex]; @@ -1518,8 +1518,8 @@ uprv_parseCurrency(const char* locale, int32_t start = pos.getIndex(); - UChar inputText[MAX_CURRENCY_NAME_LEN]; - UChar upperText[MAX_CURRENCY_NAME_LEN]; + UChar inputText[MAX_CURRENCY_NAME_LEN]; + UChar upperText[MAX_CURRENCY_NAME_LEN]; int32_t textLen = MIN(MAX_CURRENCY_NAME_LEN, text.length() - start); text.extract(start, textLen, inputText); UErrorCode ec1 = U_ZERO_ERROR; @@ -1531,7 +1531,7 @@ uprv_parseCurrency(const char* locale, int32_t max = 0; int32_t matchIndex = -1; // case in-sensitive comparison against currency names - searchCurrencyName(currencyNames, total_currency_name_count, + searchCurrencyName(currencyNames, total_currency_name_count, upperText, textLen, partialMatchLen, &max, &matchIndex); #ifdef UCURR_DEBUG @@ -1542,7 +1542,7 @@ uprv_parseCurrency(const char* locale, int32_t matchIndexInSymbol = -1; if (type != UCURR_LONG_NAME) { // not name only // case sensitive comparison against currency symbols and ISO code. - searchCurrencyName(currencySymbols, total_currency_symbol_count, + searchCurrencyName(currencySymbols, total_currency_symbol_count, inputText, textLen, partialMatchLen, &maxInSymbol, &matchIndexInSymbol); @@ -1791,7 +1791,6 @@ static const struct CurrencyList { {"ECV", UCURR_UNCOMMON|UCURR_DEPRECATED}, {"EEK", UCURR_COMMON|UCURR_DEPRECATED}, {"EGP", UCURR_COMMON|UCURR_NON_DEPRECATED}, - {"EQE", UCURR_COMMON|UCURR_DEPRECATED}, // questionable, remove? {"ERN", UCURR_COMMON|UCURR_NON_DEPRECATED}, {"ESA", UCURR_UNCOMMON|UCURR_DEPRECATED}, {"ESB", UCURR_UNCOMMON|UCURR_DEPRECATED}, @@ -1963,9 +1962,11 @@ static const struct CurrencyList { {"UYI", UCURR_UNCOMMON|UCURR_NON_DEPRECATED}, {"UYP", UCURR_COMMON|UCURR_DEPRECATED}, {"UYU", UCURR_COMMON|UCURR_NON_DEPRECATED}, + {"UYW", UCURR_UNCOMMON|UCURR_NON_DEPRECATED}, {"UZS", UCURR_COMMON|UCURR_NON_DEPRECATED}, {"VEB", UCURR_COMMON|UCURR_DEPRECATED}, {"VEF", UCURR_COMMON|UCURR_NON_DEPRECATED}, + {"VES", UCURR_COMMON|UCURR_NON_DEPRECATED}, {"VND", UCURR_COMMON|UCURR_NON_DEPRECATED}, {"VNN", UCURR_COMMON|UCURR_DEPRECATED}, {"VUV", UCURR_COMMON|UCURR_NON_DEPRECATED}, @@ -2072,11 +2073,11 @@ ucurr_createCurrencyList(UHashtable *isoCodes, UErrorCode* status){ UResourceBundle *currencyMapArray = ures_getByKey(rb, CURRENCY_MAP, rb, &localStatus); if (U_SUCCESS(localStatus)) { - // process each entry in currency map + // process each entry in currency map for (int32_t i=0; icontext = values; - + UResourceBundle *bundle = ures_openDirect(U_ICUDATA_CURR, "supplementalData", status); ures_getByKey(bundle, "CurrencyMap", bundle, status); UResourceBundle bundlekey, regbndl, curbndl, to; @@ -2562,7 +2563,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, ures_initStackObject(®bndl); ures_initStackObject(&curbndl); ures_initStackObject(&to); - + while (U_SUCCESS(*status) && ures_hasNext(bundle)) { ures_getNextResource(bundle, &bundlekey, status); if (U_FAILURE(*status)) { @@ -2603,11 +2604,11 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, if(curIDLength+1 > ULOC_KEYWORDS_CAPACITY) { *status = U_BUFFER_OVERFLOW_ERROR; } else { - u_UCharsToChars(defString, curID, curIDLength+1); + u_UCharsToChars(defString, curID, curIDLength+1); } } } -#endif +#endif if (U_FAILURE(*status)) { break; @@ -2629,7 +2630,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, uprv_free(curID); } } - + } if (U_SUCCESS(*status)) { if (commonlyUsed) { @@ -2654,7 +2655,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, } } } - + ulist_resetList((UList *)(en->context)); } else { ulist_deleteList(values); @@ -2667,9 +2668,9 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key, ures_close(®bndl); ures_close(&bundlekey); ures_close(bundle); - + ulist_deleteList(otherValues); - + return en; } diff --git a/deps/icu-small/source/common/udata.cpp b/deps/icu-small/source/common/udata.cpp index f2faa82777a233..ec9c999cea41a6 100644 --- a/deps/icu-small/source/common/udata.cpp +++ b/deps/icu-small/source/common/udata.cpp @@ -384,7 +384,7 @@ static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UEr umtx_unlock(NULL); #ifdef UDATA_DEBUG - fprintf(stderr, "Cache: [%s] <<< %p : %s. vFunc=%p\n", newElement->name, + fprintf(stderr, "Cache: [%s] <<< %p : %s. vFunc=%p\n", newElement->name, (void*) newElement->item, u_errorName(subErr), (void*) newElement->item->vFuncs); #endif @@ -436,13 +436,13 @@ class UDataPathIterator /** * @param iter The iterator to be initialized. Its current state does not matter. - * @param inPath The full pathname to be iterated over. If NULL, defaults to U_ICUDATA_NAME - * @param pkg Package which is being searched for, ex "icudt28l". Will ignore leaf directories such as /icudt28l - * @param item Item to be searched for. Can include full path, such as /a/b/foo.dat + * @param inPath The full pathname to be iterated over. If NULL, defaults to U_ICUDATA_NAME + * @param pkg Package which is being searched for, ex "icudt28l". Will ignore leaf directories such as /icudt28l + * @param item Item to be searched for. Can include full path, such as /a/b/foo.dat * @param inSuffix Optional item suffix, if not-null (ex. ".dat") then 'path' can contain 'item' explicitly. - * Ex: 'stuff.dat' would be found in '/a/foo:/tmp/stuff.dat:/bar/baz' as item #2. + * Ex: 'stuff.dat' would be found in '/a/foo:/tmp/stuff.dat:/bar/baz' as item #2. * '/blarg/stuff.dat' would also be found. - * Note: inSuffix may also be the 'item' being searched for as well, (ex: "ibm-5348_P100-1997.cnv"), in which case + * Note: inSuffix may also be the 'item' being searched for as well, (ex: "ibm-5348_P100-1997.cnv"), in which case * the 'item' parameter is often the same as pkg. (Though sometimes might have a tree part as well, ex: "icudt62l-curr"). */ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg, @@ -508,8 +508,8 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg, /** * Get the next path on the list. * - * @param iter The Iter to be used - * @param len If set, pointer to the length of the returned path, for convenience. + * @param iter The Iter to be used + * @param len If set, pointer to the length of the returned path, for convenience. * @return Pointer to the next path segment, or NULL if there are no more. */ const char *UDataPathIterator::next(UErrorCode *pErrorCode) @@ -537,7 +537,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode) nextPath = uprv_strchr(currentPath, U_PATH_SEP_CHAR); if(nextPath == NULL) { /* segment: entire path */ - pathLen = (int32_t)uprv_strlen(currentPath); + pathLen = (int32_t)uprv_strlen(currentPath); } else { /* segment: until next segment */ pathLen = (int32_t)(nextPath - currentPath); @@ -553,7 +553,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode) #ifdef UDATA_DEBUG fprintf(stderr, "rest of path (IDD) = %s\n", currentPath); fprintf(stderr, " "); - { + { int32_t qqq; for(qqq=0;qqq=4) && uprv_strncmp(pathBuffer.data() +(pathLen-4), suffix.data(), 4)==0 && /* suffix matches */ uprv_strncmp(findBasename(pathBuffer.data()), basename, basenameLen)==0 && /* base matches */ @@ -579,7 +579,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode) #endif /* do nothing */ } - else + else { /* regular dir path */ if(pathBuffer[pathLen-1] != U_FILE_SEP_CHAR) { if((pathLen>=4) && @@ -681,7 +681,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */ UDataMemory_init(&tData); - /* ??????? TODO revisit this */ + /* ??????? TODO revisit this */ if (commonDataIndex >= 0) { /* "mini-cache" for common ICU data */ if(commonDataIndex >= UPRV_LENGTHOF(gCommonICUDataArray)) { @@ -983,9 +983,9 @@ checkDataItem } /** - * @return 0 if not loaded, 1 if loaded or err + * @return 0 if not loaded, 1 if loaded or err */ -static UDataMemory *doLoadFromIndividualFiles(const char *pkgName, +static UDataMemory *doLoadFromIndividualFiles(const char *pkgName, const char *dataPath, const char *tocEntryPathSuffix, /* following arguments are the same as doOpenChoice itself */ const char *path, const char *type, const char *name, @@ -1041,9 +1041,9 @@ static UDataMemory *doLoadFromIndividualFiles(const char *pkgName, } /** - * @return 0 if not loaded, 1 if loaded or err + * @return 0 if not loaded, 1 if loaded or err */ -static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName*/, +static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName*/, const char * /*dataPath*/, const char * /*tocEntryPathSuffix*/, const char *tocEntryName, /* following arguments are the same as doOpenChoice itself */ const char *path, const char *type, const char *name, @@ -1179,7 +1179,7 @@ doOpenChoice(const char *path, const char *type, const char *name, if(path == NULL || !strcmp(path, U_ICUDATA_ALIAS) || /* "ICUDATA" */ !uprv_strncmp(path, U_ICUDATA_NAME U_TREE_SEPARATOR_STRING, /* "icudt26e-" */ - uprv_strlen(U_ICUDATA_NAME U_TREE_SEPARATOR_STRING)) || + uprv_strlen(U_ICUDATA_NAME U_TREE_SEPARATOR_STRING)) || !uprv_strncmp(path, U_ICUDATA_ALIAS U_TREE_SEPARATOR_STRING, /* "ICUDATA-" */ uprv_strlen(U_ICUDATA_ALIAS U_TREE_SEPARATOR_STRING))) { isICUData = TRUE; @@ -1226,7 +1226,7 @@ doOpenChoice(const char *path, const char *type, const char *name, } } else { treeChar = uprv_strchr(path, U_TREE_SEPARATOR); - if(treeChar) { + if(treeChar) { treeName.append(treeChar+1, *pErrorCode); /* following '-' */ if(isICUData) { pkgName.append(U_ICUDATA_NAME, *pErrorCode); @@ -1254,7 +1254,7 @@ doOpenChoice(const char *path, const char *type, const char *name, fprintf(stderr, " P=%s T=%s\n", pkgName.data(), treeName.data()); #endif - /* setting up the entry name and file name + /* setting up the entry name and file name * Make up a full name by appending the type to the supplied * name, assuming that a type was supplied. */ @@ -1321,7 +1321,7 @@ doOpenChoice(const char *path, const char *type, const char *name, fprintf(stderr, "Trying packages (UDATA_PACKAGES_FIRST)\n"); #endif /* #2 */ - retVal = doLoadFromCommonData(isICUData, + retVal = doLoadFromCommonData(isICUData, pkgName.data(), dataPath, tocEntryPathSuffix, tocEntryName.data(), path, type, name, isAcceptable, context, &subErrorCode, pErrorCode); if((retVal != NULL) || U_FAILURE(*pErrorCode)) { @@ -1346,7 +1346,7 @@ doOpenChoice(const char *path, const char *type, const char *name, } /**** COMMON PACKAGE */ - if((gDataFileAccess==UDATA_ONLY_PACKAGES) || + if((gDataFileAccess==UDATA_ONLY_PACKAGES) || (gDataFileAccess==UDATA_FILES_FIRST)) { #ifdef UDATA_DEBUG fprintf(stderr, "Trying packages (UDATA_ONLY_PACKAGES || UDATA_FILES_FIRST)\n"); @@ -1358,10 +1358,10 @@ doOpenChoice(const char *path, const char *type, const char *name, return retVal; } } - + /* Load from DLL. If we haven't attempted package load, we also haven't had any chance to try a DLL (static or setCommonData/etc) load. - If we ever have a "UDATA_ONLY_FILES", add it to the or list here. */ + If we ever have a "UDATA_ONLY_FILES", add it to the or list here. */ if(gDataFileAccess==UDATA_NO_FILES) { #ifdef UDATA_DEBUG fprintf(stderr, "Trying common data (UDATA_NO_FILES)\n"); diff --git a/deps/icu-small/source/common/uelement.h b/deps/icu-small/source/common/uelement.h index e4d16afe4e2753..2c5a2043e17d5b 100644 --- a/deps/icu-small/source/common/uelement.h +++ b/deps/icu-small/source/common/uelement.h @@ -54,9 +54,12 @@ typedef UBool U_CALLCONV UElementsAreEqual(const UElement e1, const UElement e2) * An element sorting (three-way) comparison function. * @param e1 An element (object or integer) * @param e2 An element (object or integer) - * @return 0 if the two elements are equal, -1 if e1 is < e2, or +1 if e1 is > e2. + * @return 32-bit signed integer comparison result: + * ==0 if the two elements are equal, + * <0 if e1 is < e2, or + * >0 if e1 is > e2. */ -typedef int8_t U_CALLCONV UElementComparator(UElement e1, UElement e2); +typedef int32_t U_CALLCONV UElementComparator(UElement e1, UElement e2); /** * An element assignment function. It may copy an integer, copy @@ -74,7 +77,7 @@ U_CDECL_END * @param key2 The string for comparison * @return true if key1 and key2 are equal, return false otherwise. */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uhash_compareUnicodeString(const UElement key1, const UElement key2); /** @@ -85,7 +88,7 @@ uhash_compareUnicodeString(const UElement key1, const UElement key2); * @param key2 The string for comparison * @return true if key1 and key2 are equal, return false otherwise. */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uhash_compareCaselessUnicodeString(const UElement key1, const UElement key2); #endif /* __UELEMENT_H__ */ diff --git a/deps/icu-small/source/common/uenum.cpp b/deps/icu-small/source/common/uenum.cpp index f75cfb7ac3ff6a..11d895ebcd7463 100644 --- a/deps/icu-small/source/common/uenum.cpp +++ b/deps/icu-small/source/common/uenum.cpp @@ -51,7 +51,7 @@ static void* _getBuffer(UEnumeration* en, int32_t capacity) { } ((_UEnumBuffer*) en->baseContext)->len = capacity; } - + return (void*) & ((_UEnumBuffer*) en->baseContext)->data; } diff --git a/deps/icu-small/source/common/uenumimp.h b/deps/icu-small/source/common/uenumimp.h index 93854406403b39..9c9df75ae0497a 100644 --- a/deps/icu-small/source/common/uenumimp.h +++ b/deps/icu-small/source/common/uenumimp.h @@ -23,14 +23,14 @@ U_CDECL_BEGIN -/** - * following are the type declarations for +/** + * following are the type declarations for * implementations of APIs. If any of these * functions are NULL, U_UNSUPPORTED_ERROR * is returned. If close is NULL, the enumeration * object is going to be released. * Initial error checking is done in the body - * of API function, so the implementations + * of API function, so the implementations * need not to check the initial error condition. */ @@ -63,13 +63,13 @@ UEnumCount(UEnumeration *en, UErrorCode *status); * This function returns the next element as a UChar *, * or NULL after all elements haven been enumerated. * - * @param en enumeration + * @param en enumeration * @param resultLength pointer to result length * @param status pointer to UErrorCode variable * @return next element as UChar *, * or NULL after all elements haven been enumerated */ -typedef const UChar* U_CALLCONV +typedef const UChar* U_CALLCONV UEnumUNext(UEnumeration* en, int32_t* resultLength, UErrorCode* status); @@ -80,13 +80,13 @@ UEnumUNext(UEnumeration* en, * This function returns the next element as a char *, * or NULL after all elements haven been enumerated. * - * @param en enumeration + * @param en enumeration * @param resultLength pointer to result length * @param status pointer to UErrorCode variable * @return next element as char *, * or NULL after all elements haven been enumerated */ -typedef const char* U_CALLCONV +typedef const char* U_CALLCONV UEnumNext(UEnumeration* en, int32_t* resultLength, UErrorCode* status); @@ -94,14 +94,14 @@ UEnumNext(UEnumeration* en, /** * Function type declaration for uenum_reset(). * - * This function should reset the enumeration + * This function should reset the enumeration * object * - * @param en enumeration + * @param en enumeration * @param status pointer to UErrorCode variable */ -typedef void U_CALLCONV -UEnumReset(UEnumeration* en, +typedef void U_CALLCONV +UEnumReset(UEnumeration* en, UErrorCode* status); @@ -112,8 +112,8 @@ struct UEnumeration { /* context. Use it for what you need */ void *context; - /** - * these are functions that will + /** + * these are functions that will * be used for APIs */ /* called from uenum_close */ diff --git a/deps/icu-small/source/common/uhash.cpp b/deps/icu-small/source/common/uhash.cpp index 67c7c363540307..2e331b71722e80 100644 --- a/deps/icu-small/source/common/uhash.cpp +++ b/deps/icu-small/source/common/uhash.cpp @@ -320,7 +320,7 @@ _uhash_create(UHashFunction *keyHash, * Stop if it is identical or empty, otherwise continue by adding a * "jump" value (moduloing by the length again to keep it within * range) and retesting. For efficiency, there need enough empty - * values so that the searchs stop within a reasonable amount of time. + * values so that the searches stop within a reasonable amount of time. * This can be changed by changing the high/low water marks. * * In theory, this function can return NULL, if it is full (no empty @@ -379,7 +379,7 @@ _uhash_find(const UHashtable *hash, UHashTok key, * WILL NEVER HAPPEN as long as uhash_put() makes sure that * count is always < length. */ - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } return &(elements[theIndex]); } diff --git a/deps/icu-small/source/common/uhash.h b/deps/icu-small/source/common/uhash.h index af75999860dbb4..2ce296f0ec7c36 100644 --- a/deps/icu-small/source/common/uhash.h +++ b/deps/icu-small/source/common/uhash.h @@ -128,7 +128,7 @@ typedef UElementsAreEqual UValueComparator; /* see cmemory.h for UObjectDeleter and uprv_deleteUObject() */ /** - * This specifies whether or not, and how, the hastable resizes itself. + * This specifies whether or not, and how, the hashtable resizes itself. * See uhash_setResizePolicy(). */ enum UHashResizePolicy { @@ -209,7 +209,7 @@ uhash_open(UHashFunction *keyHash, * NULL. * @param keyComp A pointer to the function that compares keys. Must * not be NULL. - * @param size The initial capacity of this hash table. + * @param size The initial capacity of this hashtable. * @param status A pointer to an UErrorCode to receive any errors. * @return A pointer to a UHashtable, or 0 if an error occurred. * @see uhash_open @@ -244,7 +244,7 @@ uhash_init(UHashtable *hash, * NULL. * @param keyComp A pointer to the function that compares keys. Must * not be NULL. - * @param size The initial capacity of this hash table. + * @param size The initial capacity of this hashtable. * @param status A pointer to an UErrorCode to receive any errors. * @return A pointer to a UHashtable, or 0 if an error occurred. * @see uhash_openSize @@ -322,7 +322,7 @@ U_CAPI UObjectDeleter *U_EXPORT2 uhash_setValueDeleter(UHashtable *hash, UObjectDeleter *fn); /** - * Specify whether or not, and how, the hastable resizes itself. + * Specify whether or not, and how, the hashtable resizes itself. * By default, tables grow but do not shrink (policy U_GROW). * See enum UHashResizePolicy. * @param hash The UHashtable to set @@ -780,7 +780,7 @@ uhash_deleteHashtable(void *obj); /* Use uprv_free() itself as a deleter for any key or value allocated using uprv_malloc. */ /** - * Checks if the given hash tables are equal or not. + * Checks if the given hashtables are equal or not. * @param hash1 * @param hash2 * @return true if the hashtables are equal and false if not. diff --git a/deps/icu-small/source/common/uidna.cpp b/deps/icu-small/source/common/uidna.cpp index 09347efd6d3c39..ac2f9c3c8cd963 100644 --- a/deps/icu-small/source/common/uidna.cpp +++ b/deps/icu-small/source/common/uidna.cpp @@ -47,7 +47,7 @@ static const UChar ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ; #define CAPITAL_A 0x0041 #define CAPITAL_Z 0x005A -inline static UChar +inline static UChar toASCIILower(UChar ch){ if(CAPITAL_A <= ch && ch <= CAPITAL_Z){ return ch + LOWER_CASE_DELTA; @@ -55,7 +55,7 @@ toASCIILower(UChar ch){ return ch; } -inline static UBool +inline static UBool startsWithPrefix(const UChar* src , int32_t srcLength){ if(srcLength < ACE_PREFIX_LENGTH){ return FALSE; @@ -71,9 +71,9 @@ startsWithPrefix(const UChar* src , int32_t srcLength){ inline static int32_t -compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len, +compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len, const UChar* s2, int32_t s2Len){ - + int32_t minLength; int32_t lengthResult; @@ -101,10 +101,10 @@ compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len, if(i == minLength) { return lengthResult; } - + c1 = s1[i]; c2 = s2[i]; - + /* Case-insensitive comparison */ if(c1!=c2) { rc=(int32_t)toASCIILower(c1)-(int32_t)toASCIILower(c2); @@ -119,9 +119,9 @@ compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len, /** - * Ascertain if the given code point is a label separator as + * Ascertain if the given code point is a label separator as * defined by the IDNA RFC - * + * * @param ch The code point to be ascertained * @return true if the char is a label separator * @stable ICU 2.8 @@ -134,12 +134,12 @@ static inline UBool isLabelSeparator(UChar ch){ case 0xFF61: return TRUE; default: - return FALSE; + return FALSE; } } // returns the length of the label excluding the separator -// if *limit == separator then the length returned does not include +// if *limit == separator then the length returned does not include // the separtor. static inline int32_t getNextSeparator(UChar *src, int32_t srcLength, @@ -155,7 +155,7 @@ getNextSeparator(UChar *src, int32_t srcLength, if(isLabelSeparator(src[i])){ *limit = src + (i+1); // go past the delimiter return i; - + } } }else{ @@ -180,7 +180,7 @@ static inline UBool isLDHChar(UChar ch){ return FALSE; } //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A] - if( (ch==0x002D) || + if( (ch==0x002D) || (0x0030 <= ch && ch <= 0x0039) || (0x0041 <= ch && ch <= 0x005A) || (0x0061 <= ch && ch <= 0x007A) @@ -190,8 +190,8 @@ static inline UBool isLDHChar(UChar ch){ return FALSE; } -static int32_t -_internal_toASCII(const UChar* src, int32_t srcLength, +static int32_t +_internal_toASCII(const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UStringPrepProfile* nameprep, @@ -203,18 +203,18 @@ _internal_toASCII(const UChar* src, int32_t srcLength, UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE]; //initialize pointers to stack buffers UChar *b1 = b1Stack, *b2 = b2Stack; - int32_t b1Len=0, b2Len, - b1Capacity = MAX_LABEL_BUFFER_SIZE, + int32_t b1Len=0, b2Len, + b1Capacity = MAX_LABEL_BUFFER_SIZE, b2Capacity = MAX_LABEL_BUFFER_SIZE , reqLength=0; int32_t namePrepOptions = ((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0; UBool* caseFlags = NULL; - + // the source contains all ascii codepoints UBool srcIsASCII = TRUE; // assume the source contains all LDH codepoints - UBool srcIsLDH = TRUE; + UBool srcIsLDH = TRUE; int32_t j=0; @@ -222,11 +222,11 @@ _internal_toASCII(const UChar* src, int32_t srcLength, UBool useSTD3ASCIIRules = (UBool)((options & UIDNA_USE_STD3_RULES) != 0); int32_t failPos = -1; - + if(srcLength == -1){ srcLength = u_strlen(src); } - + if(srcLength > b1Capacity){ b1 = (UChar*) uprv_malloc(srcLength * U_SIZEOF_UCHAR); if(b1==NULL){ @@ -236,18 +236,18 @@ _internal_toASCII(const UChar* src, int32_t srcLength, b1Capacity = srcLength; } - // step 1 + // step 1 for( j=0;j 0x7F){ srcIsASCII = FALSE; } b1[b1Len++] = src[j]; } - + // step 2 is performed only if the source contains non ASCII if(srcIsASCII == FALSE){ - - // step 2 + + // step 2 b1Len = usprep_prepare(nameprep, src, srcLength, b1, b1Capacity, namePrepOptions, parseError, status); if(*status == U_BUFFER_OVERFLOW_ERROR){ @@ -263,7 +263,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength, } *status = U_ZERO_ERROR; // reset error - + b1Len = usprep_prepare(nameprep, src, srcLength, b1, b1Len, namePrepOptions, parseError, status); } } @@ -279,7 +279,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength, // for step 3 & 4 srcIsASCII = TRUE; for( j=0;j 0x7F){ srcIsASCII = FALSE; }else if(isLDHChar(b1[j])==FALSE){ // if the char is in ASCII range verify that it is an LDH character @@ -303,7 +303,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength, // failPos is always set the index of failure uprv_syntaxError(b1,failPos, b1Len,parseError); }else if(b1[0] == HYPHEN){ - // fail position is 0 + // fail position is 0 uprv_syntaxError(b1,0,b1Len,parseError); }else{ // the last index in the source is always length-1 @@ -338,14 +338,14 @@ _internal_toASCII(const UChar* src, int32_t srcLength, if(*status == U_BUFFER_OVERFLOW_ERROR){ // redo processing of string /* we do not have enough room so grow the buffer*/ - b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR); + b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR); if(b2 == NULL){ *status = U_MEMORY_ALLOCATION_ERROR; goto CLEANUP; } *status = U_ZERO_ERROR; // reset error - + b2Len = u_strToPunycode(b1,b1Len,b2,b2Len,caseFlags, status); } //error bail out @@ -367,7 +367,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength, u_memcpy(dest+ACE_PREFIX_LENGTH, b2, b2Len); }else{ - *status = U_IDNA_ACE_PREFIX_ERROR; + *status = U_IDNA_ACE_PREFIX_ERROR; //position of failure is 0 uprv_syntaxError(b1,0,b1Len,parseError); goto CLEANUP; @@ -386,7 +386,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength, uprv_free(b2); } uprv_free(caseFlags); - + return u_terminateUChars(dest, destCapacity, reqLength, status); } @@ -401,7 +401,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, //get the options //UBool useSTD3ASCIIRules = (UBool)((options & UIDNA_USE_STD3_RULES) != 0); - int32_t namePrepOptions = ((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0; + int32_t namePrepOptions = ((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0; // TODO Revisit buffer handling. The label should not be over 63 ASCII characters. ICU4J may need to be updated too. UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE]; @@ -409,7 +409,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, //initialize pointers to stack buffers UChar *b1 = b1Stack, *b2 = b2Stack, *b1Prime=NULL, *b3=b3Stack; int32_t b1Len = 0, b2Len, b1PrimeLen, b3Len, - b1Capacity = MAX_LABEL_BUFFER_SIZE, + b1Capacity = MAX_LABEL_BUFFER_SIZE, b2Capacity = MAX_LABEL_BUFFER_SIZE, b3Capacity = MAX_LABEL_BUFFER_SIZE, reqLength=0; @@ -420,7 +420,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, /*UBool srcIsLDH = TRUE; int32_t failPos =0;*/ - // step 1: find out if all the codepoints in src are ASCII + // step 1: find out if all the codepoints in src are ASCII if(srcLength==-1){ srcLength = 0; for(;src[srcLength]!=0;){ @@ -451,7 +451,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, }else{ return 0; } - + if(srcIsASCII == FALSE){ // step 2: process the string b1Len = usprep_prepare(nameprep, src, srcLength, b1, b1Capacity, namePrepOptions, parseError, status); @@ -465,7 +465,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, } *status = U_ZERO_ERROR; // reset error - + b1Len = usprep_prepare(nameprep, src, srcLength, b1, b1Len, namePrepOptions, parseError, status); } //bail out on error @@ -479,7 +479,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, b1Len = srcLength; } - // The RFC states that + // The RFC states that // // ToUnicode never fails. If any step fails, then the original input // is returned immediately in that step. @@ -558,7 +558,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, // failPos is always set the index of failure uprv_syntaxError(src,failPos, srcLength,parseError); }else if(src[0] == HYPHEN){ - // fail position is 0 + // fail position is 0 uprv_syntaxError(src,0,srcLength,parseError); }else{ // the last index in the source is always length-1 @@ -587,7 +587,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, } uprv_free(caseFlags); - // The RFC states that + // The RFC states that // // ToUnicode never fails. If any step fails, then the original input // is returned immediately in that step. @@ -608,12 +608,12 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, } U_CAPI int32_t U_EXPORT2 -uidna_toASCII(const UChar* src, int32_t srcLength, +uidna_toASCII(const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UParseError* parseError, UErrorCode* status){ - + if(status == NULL || U_FAILURE(*status)){ return 0; } @@ -623,16 +623,16 @@ uidna_toASCII(const UChar* src, int32_t srcLength, } UStringPrepProfile* nameprep = usprep_openByType(USPREP_RFC3491_NAMEPREP, status); - + if(U_FAILURE(*status)){ return -1; } - + int32_t retLen = _internal_toASCII(src, srcLength, dest, destCapacity, options, nameprep, parseError, status); - + /* close the profile*/ usprep_close(nameprep); - + return retLen; } @@ -649,18 +649,18 @@ uidna_toUnicode(const UChar* src, int32_t srcLength, if( (src==NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){ *status = U_ILLEGAL_ARGUMENT_ERROR; return 0; - } + } UStringPrepProfile* nameprep = usprep_openByType(USPREP_RFC3491_NAMEPREP, status); - + if(U_FAILURE(*status)){ return -1; } - + int32_t retLen = _internal_toUnicode(src, srcLength, dest, destCapacity, options, nameprep, parseError, status); usprep_close(nameprep); - + return retLen; } @@ -683,12 +683,12 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength, int32_t reqLength = 0; UStringPrepProfile* nameprep = usprep_openByType(USPREP_RFC3491_NAMEPREP, status); - + if(U_FAILURE(*status)){ return 0; } - //initialize pointers + //initialize pointers UChar *delimiter = (UChar*)src; UChar *labelStart = (UChar*)src; UChar *currentDest = (UChar*) dest; @@ -703,24 +703,24 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength, labelLen = getNextSeparator(labelStart,remainingLen, &delimiter,&done); labelReqLength = 0; if(!(labelLen==0 && done)){// make sure this is not a root label separator. - - labelReqLength = _internal_toASCII( labelStart, labelLen, - currentDest, remainingDestCapacity, - options, nameprep, + + labelReqLength = _internal_toASCII( labelStart, labelLen, + currentDest, remainingDestCapacity, + options, nameprep, parseError, status); - + if(*status == U_BUFFER_OVERFLOW_ERROR){ - + *status = U_ZERO_ERROR; // reset error remainingDestCapacity = 0; } } - + if(U_FAILURE(*status)){ break; } - + reqLength +=labelReqLength; // adjust the destination pointer if(labelReqLength < remainingDestCapacity){ @@ -754,7 +754,7 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength, } usprep_close(nameprep); - + return u_terminateUChars(dest, destCapacity, reqLength, status); } @@ -764,7 +764,7 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, int32_t options, UParseError* parseError, UErrorCode* status){ - + if(status == NULL || U_FAILURE(*status)){ return 0; } @@ -776,7 +776,7 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, int32_t reqLength = 0; UStringPrepProfile* nameprep = usprep_openByType(USPREP_RFC3491_NAMEPREP, status); - + if(U_FAILURE(*status)){ return 0; } @@ -793,21 +793,21 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, for(;;){ labelLen = getNextSeparator(labelStart,remainingLen, &delimiter,&done); - - // The RFC states that + + // The RFC states that // // ToUnicode never fails. If any step fails, then the original input // is returned immediately in that step. // // _internal_toUnicode will copy the label. - /*if(labelLen==0 && done==FALSE){ + /*if(labelLen==0 && done==FALSE){ *status = U_IDNA_ZERO_LENGTH_LABEL_ERROR; break; }*/ - - labelReqLength = _internal_toUnicode(labelStart, labelLen, - currentDest, remainingDestCapacity, - options, nameprep, + + labelReqLength = _internal_toUnicode(labelStart, labelLen, + currentDest, remainingDestCapacity, + options, nameprep, parseError, status); if(*status == U_BUFFER_OVERFLOW_ERROR){ @@ -818,7 +818,7 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, if(U_FAILURE(*status)){ break; } - + reqLength +=labelReqLength; // adjust the destination pointer if(labelReqLength < remainingDestCapacity){ @@ -853,7 +853,7 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, } usprep_close(nameprep); - + return u_terminateUChars(dest, destCapacity, reqLength, status); } @@ -871,7 +871,7 @@ uidna_compare( const UChar *s1, int32_t length1, UChar *b1 = b1Stack, *b2 = b2Stack; int32_t b1Len, b2Len, b1Capacity = MAX_IDN_BUFFER_SIZE, b2Capacity = MAX_IDN_BUFFER_SIZE; int32_t result=-1; - + UParseError parseError; b1Len = uidna_IDNToASCII(s1, length1, b1, b1Capacity, options, &parseError, status); @@ -884,9 +884,9 @@ uidna_compare( const UChar *s1, int32_t length1, } *status = U_ZERO_ERROR; // reset error - + b1Len = uidna_IDNToASCII(s1,length1,b1,b1Len, options, &parseError, status); - + } b2Len = uidna_IDNToASCII(s2,length2, b2,b2Capacity, options, &parseError, status); @@ -899,9 +899,9 @@ uidna_compare( const UChar *s1, int32_t length1, } *status = U_ZERO_ERROR; // reset error - + b2Len = uidna_IDNToASCII(s2, length2, b2, b2Len, options, &parseError, status); - + } // when toASCII is applied all label separators are replaced with FULL_STOP result = compareCaseInsensitiveASCII(b1,b1Len,b2,b2Len); diff --git a/deps/icu-small/source/common/uinvchar.cpp b/deps/icu-small/source/common/uinvchar.cpp index 7fce257baf0912..52b890656856d0 100644 --- a/deps/icu-small/source/common/uinvchar.cpp +++ b/deps/icu-small/source/common/uinvchar.cpp @@ -584,7 +584,7 @@ uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n) { uint8_t *orig_dst = dst; - if(n==-1) { + if(n==-1) { n = static_cast(uprv_strlen((const char*)src)+1); /* copy NUL */ } /* copy non-null */ @@ -605,7 +605,7 @@ uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n) { uint8_t *orig_dst = dst; - if(n==-1) { + if(n==-1) { n = static_cast(uprv_strlen((const char*)src)+1); /* copy NUL */ } /* copy non-null */ @@ -624,3 +624,4 @@ uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n) } return orig_dst; } + diff --git a/deps/icu-small/source/common/ulist.cpp b/deps/icu-small/source/common/ulist.cpp index 07cbcc8303ac91..c5180431c31b75 100644 --- a/deps/icu-small/source/common/ulist.cpp +++ b/deps/icu-small/source/common/ulist.cpp @@ -15,10 +15,10 @@ typedef struct UListNode UListNode; struct UListNode { void *data; - + UListNode *next; UListNode *previous; - + /* When data is created with uprv_malloc, needs to be freed during deleteList function. */ UBool forceDelete; }; @@ -27,7 +27,7 @@ struct UList { UListNode *curr; UListNode *head; UListNode *tail; - + int32_t size; }; @@ -35,22 +35,22 @@ static void ulist_addFirstItem(UList *list, UListNode *newItem); U_CAPI UList *U_EXPORT2 ulist_createEmptyList(UErrorCode *status) { UList *newList = NULL; - + if (U_FAILURE(*status)) { return NULL; } - + newList = (UList *)uprv_malloc(sizeof(UList)); if (newList == NULL) { *status = U_MEMORY_ALLOCATION_ERROR; return NULL; } - + newList->curr = NULL; newList->head = NULL; newList->tail = NULL; newList->size = 0; - + return newList; } @@ -90,14 +90,14 @@ static void ulist_removeItem(UList *list, UListNode *p) { U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) { UListNode *newItem = NULL; - + if (U_FAILURE(*status) || list == NULL || data == NULL) { if (forceDelete) { uprv_free((void *)data); } return; } - + newItem = (UListNode *)uprv_malloc(sizeof(UListNode)); if (newItem == NULL) { if (forceDelete) { @@ -108,7 +108,7 @@ U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool } newItem->data = (void *)(data); newItem->forceDelete = forceDelete; - + if (list->size == 0) { ulist_addFirstItem(list, newItem); } else { @@ -117,20 +117,20 @@ U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool list->tail->next = newItem; list->tail = newItem; } - + list->size++; } U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) { UListNode *newItem = NULL; - + if (U_FAILURE(*status) || list == NULL || data == NULL) { if (forceDelete) { uprv_free((void *)data); } return; } - + newItem = (UListNode *)uprv_malloc(sizeof(UListNode)); if (newItem == NULL) { if (forceDelete) { @@ -141,7 +141,7 @@ U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBoo } newItem->data = (void *)(data); newItem->forceDelete = forceDelete; - + if (list->size == 0) { ulist_addFirstItem(list, newItem); } else { @@ -150,7 +150,7 @@ U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBoo list->head->previous = newItem; list->head = newItem; } - + list->size++; } @@ -184,14 +184,14 @@ U_CAPI UBool U_EXPORT2 ulist_removeString(UList *list, const char *data) { U_CAPI void *U_EXPORT2 ulist_getNext(UList *list) { UListNode *curr = NULL; - + if (list == NULL || list->curr == NULL) { return NULL; } - + curr = list->curr; list->curr = curr->next; - + return curr->data; } @@ -199,7 +199,7 @@ U_CAPI int32_t U_EXPORT2 ulist_getListSize(const UList *list) { if (list != NULL) { return list->size; } - + return -1; } @@ -240,7 +240,7 @@ U_CAPI int32_t U_EXPORT2 ulist_count_keyword_values(UEnumeration *en, UErrorCode if (U_FAILURE(*status)) { return -1; } - + return ulist_getListSize((UList *)(en->context)); } @@ -261,7 +261,7 @@ U_CAPI void U_EXPORT2 ulist_reset_keyword_values_iterator(UEnumeration *en, UErr if (U_FAILURE(*status)) { return ; } - + ulist_resetList((UList *)(en->context)); } diff --git a/deps/icu-small/source/common/uloc.cpp b/deps/icu-small/source/common/uloc.cpp index d96e79b8fdd805..c8a3f1ff731340 100644 --- a/deps/icu-small/source/common/uloc.cpp +++ b/deps/icu-small/source/common/uloc.cpp @@ -478,15 +478,24 @@ static const CanonicalizationMap CANONICALIZE_MAP[] = { /* Test if the locale id has BCP47 u extension and does not have '@' */ #define _hasBCP47Extension(id) (id && uprv_strstr(id, "@") == NULL && getShortestSubtagLength(localeID) == 1) /* Converts the BCP47 id to Unicode id. Does nothing to id if conversion fails */ -#define _ConvertBCP47(finalID, id, buffer, length,err) UPRV_BLOCK_MACRO_BEGIN { \ - if (uloc_forLanguageTag(id, buffer, length, NULL, err) <= 0 || \ - U_FAILURE(*err) || *err == U_STRING_NOT_TERMINATED_WARNING) { \ - finalID=id; \ - if (*err == U_STRING_NOT_TERMINATED_WARNING) { *err = U_BUFFER_OVERFLOW_ERROR; } \ - } else { \ - finalID=buffer; \ - } \ -} UPRV_BLOCK_MACRO_END +static const char* _ConvertBCP47( + const char* id, char* buffer, int32_t length, + UErrorCode* err, int32_t* pLocaleIdSize) { + const char* finalID; + int32_t localeIDSize = uloc_forLanguageTag(id, buffer, length, NULL, err); + if (localeIDSize <= 0 || U_FAILURE(*err) || *err == U_STRING_NOT_TERMINATED_WARNING) { + finalID=id; + if (*err == U_STRING_NOT_TERMINATED_WARNING) { + *err = U_BUFFER_OVERFLOW_ERROR; + } + } else { + finalID=buffer; + } + if (pLocaleIdSize != nullptr) { + *pLocaleIdSize = localeIDSize; + } + return finalID; +} /* Gets the size of the shortest subtag in the given localeID. */ static int32_t getShortestSubtagLength(const char *localeID) { int32_t localeIDLength = static_cast(uprv_strlen(localeID)); @@ -767,7 +776,8 @@ ulocimp_getKeywordValue(const char* localeID, } if (_hasBCP47Extension(localeID)) { - _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), status); + tmpLocaleID = _ConvertBCP47(localeID, tempBuffer, + sizeof(tempBuffer), status, nullptr); } else { tmpLocaleID=localeID; } @@ -1404,10 +1414,11 @@ uloc_openKeywords(const char* localeID, } if (_hasBCP47Extension(localeID)) { - _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), status); + tmpLocaleID = _ConvertBCP47(localeID, tempBuffer, + sizeof(tempBuffer), status, nullptr); } else { if (localeID==NULL) { - localeID=uloc_getDefault(); + localeID=uloc_getDefault(); } tmpLocaleID=localeID; } @@ -1473,19 +1484,41 @@ _canonicalize(const char* localeID, ByteSink& sink, uint32_t options, UErrorCode* err) { + if (U_FAILURE(*err)) { + return; + } + int32_t j, fieldCount=0, scriptSize=0, variantSize=0; - char tempBuffer[ULOC_FULLNAME_CAPACITY]; + PreflightingLocaleIDBuffer tempBuffer; // if localeID has a BCP47 extension, tmpLocaleID points to this + CharString localeIDWithHyphens; // if localeID has a BPC47 extension and have _, tmpLocaleID points to this const char* origLocaleID; const char* tmpLocaleID; const char* keywordAssign = NULL; const char* separatorIndicator = NULL; - if (U_FAILURE(*err)) { - return; - } - if (_hasBCP47Extension(localeID)) { - _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), err); + const char* localeIDPtr = localeID; + + // convert all underbars to hyphens, unless the "BCP47 extension" comes at the beginning of the string + if (uprv_strchr(localeID, '_') != nullptr && localeID[1] != '-' && localeID[1] != '_') { + localeIDWithHyphens.append(localeID, -1, *err); + if (U_SUCCESS(*err)) { + for (char* p = localeIDWithHyphens.data(); *p != '\0'; ++p) { + if (*p == '_') { + *p = '-'; + } + } + localeIDPtr = localeIDWithHyphens.data(); + } + } + + do { + // After this call tmpLocaleID may point to localeIDPtr which may + // point to either localeID or localeIDWithHyphens.data(). + tmpLocaleID = _ConvertBCP47(localeIDPtr, tempBuffer.getBuffer(), + tempBuffer.getCapacity(), err, + &(tempBuffer.requestedCapacity)); + } while (tempBuffer.needToTryAgain(err)); } else { if (localeID==NULL) { localeID=uloc_getDefault(); @@ -1771,7 +1804,7 @@ uloc_getVariant(const char* localeID, } if (_hasBCP47Extension(localeID)) { - _ConvertBCP47(tmpLocaleID, localeID, tempBuffer, sizeof(tempBuffer), err); + tmpLocaleID =_ConvertBCP47(localeID, tempBuffer, sizeof(tempBuffer), err, nullptr); } else { if (localeID==NULL) { localeID=uloc_getDefault(); diff --git a/deps/icu-small/source/common/uloc_keytype.cpp b/deps/icu-small/source/common/uloc_keytype.cpp index f45aeb53d2a6ba..580244124ee364 100644 --- a/deps/icu-small/source/common/uloc_keytype.cpp +++ b/deps/icu-small/source/common/uloc_keytype.cpp @@ -168,11 +168,13 @@ initFromResourceBundle(UErrorCode& sts) { } // look up type map for the key, and walk through the mapping data - tmpSts = U_ZERO_ERROR; - LocalUResourceBundlePointer typeMapResByKey(ures_getByKey(typeMapRes.getAlias(), legacyKeyId, NULL, &tmpSts)); - if (U_FAILURE(tmpSts)) { - // type map for each key must exist - UPRV_UNREACHABLE; + LocalUResourceBundlePointer typeMapResByKey(ures_getByKey(typeMapRes.getAlias(), legacyKeyId, NULL, &sts)); + if (U_FAILURE(sts)) { + // We fail here if typeMap does not have an entry corresponding to every entry in keyMap (should + // not happen for valid keyTypeData), or if ures_getByKeyfails fails for some other reason + // (e.g. data file cannot be loaded, using stubdata, over-aggressive data filtering has removed + // something like timezoneTypes.res, etc.). Error code is already set. See ICU-21669. + UPRV_UNREACHABLE_ASSERT; } else { LocalUResourceBundlePointer typeMapEntry; @@ -531,3 +533,4 @@ ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool } return NULL; } + diff --git a/deps/icu-small/source/common/uloc_tag.cpp b/deps/icu-small/source/common/uloc_tag.cpp index 7cc4511175b081..0150e94cefdc1a 100644 --- a/deps/icu-small/source/common/uloc_tag.cpp +++ b/deps/icu-small/source/common/uloc_tag.cpp @@ -139,7 +139,7 @@ static const char* const LEGACY[] = { Updated on 2018-09-12 from https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry . - The table lists redundant tags with preferred value in the IANA languate tag registry. + The table lists redundant tags with preferred value in the IANA language tag registry. It's generated with the following command: curl https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry |\ @@ -951,7 +951,7 @@ _addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool l cmp = *(ext->key) - *(cur->key); } } else if (len == 1) { - cmp = *(ext->key) - LDMLEXT; + cmp = *(ext->key) - LDMLEXT; } else if (curlen == 1) { cmp = LDMLEXT - *(cur->key); } else { @@ -1612,7 +1612,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT } if (pKwds) { - const char *pBcpKey = NULL; /* u extenstion key subtag */ + const char *pBcpKey = NULL; /* u extension key subtag */ const char *pBcpType = NULL; /* beginning of u extension type subtag(s) */ int32_t bcpKeyLen = 0; int32_t bcpTypeLen = 0; @@ -1741,7 +1741,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT pType = LOCALE_TYPE_YES; } - /* Special handling for u-va-posix, since we want to treat this as a variant, + /* Special handling for u-va-posix, since we want to treat this as a variant, not as a keyword */ if (!variantExists && !uprv_strcmp(pKey, POSIX_KEY) && !uprv_strcmp(pType, POSIX_VALUE) ) { *posixVariant = TRUE; @@ -2047,7 +2047,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta *status = U_MEMORY_ALLOCATION_ERROR; return NULL; } - + if (tagLen > 0) { uprv_memcpy(tagBuf, tag, tagLen); } @@ -2089,6 +2089,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta legacyLen = checkLegacyLen; /* back up for output parsedLen */ int32_t replacementLen = static_cast(uprv_strlen(LEGACY[i+1])); newTagLength = replacementLen + tagLen - checkLegacyLen; + int32_t oldTagLength = tagLen; if (tagLen < newTagLength) { uprv_free(tagBuf); tagBuf = (char*)uprv_malloc(newTagLength + 1); @@ -2102,7 +2103,10 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta parsedLenDelta = checkLegacyLen - replacementLen; uprv_strcpy(t->buf, LEGACY[i + 1]); if (checkLegacyLen != tagLen) { - uprv_strcpy(t->buf + replacementLen, tag + checkLegacyLen); + uprv_memcpy(t->buf + replacementLen, tag + checkLegacyLen, + oldTagLength - checkLegacyLen); + // NUL-terminate after memcpy(). + t->buf[replacementLen + oldTagLength - checkLegacyLen] = 0; } break; } @@ -2306,7 +2310,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta if (next & EXTV) { if (_isExtensionSubtag(pSubtag, subtagLen)) { if (pExtValueSubtag == NULL) { - /* if the start postion of this extension's value is not yet, + /* if the start position of this extension's value is not yet, this one is the first value subtag */ pExtValueSubtag = pSubtag; } diff --git a/deps/icu-small/source/common/ulocimp.h b/deps/icu-small/source/common/ulocimp.h index 3875664b2d4132..755e02c6b88eac 100644 --- a/deps/icu-small/source/common/ulocimp.h +++ b/deps/icu-small/source/common/ulocimp.h @@ -43,10 +43,10 @@ uloc_getTableStringWithFallback( /*returns true if a is an ID separator false otherwise*/ #define _isIDSeparator(a) (a == '_' || a == '-') -U_CFUNC const char* +U_CFUNC const char* uloc_getCurrentCountryID(const char* oldID); -U_CFUNC const char* +U_CFUNC const char* uloc_getCurrentLanguageID(const char* oldID); U_CFUNC void @@ -157,7 +157,7 @@ ulocimp_forLanguageTag(const char* langtag, * (3) if inferRegion is true, the region suggested by * getLikelySubtags on the localeID. * If no region is found, returns length 0. - * + * * @param localeID * The complete locale ID (with keywords) from which * to get the region to use for supplemental data. @@ -166,7 +166,7 @@ ulocimp_forLanguageTag(const char* langtag, * no other region is found. * @param region * Buffer in which to put the region ID found; should - * have a capacity at least ULOC_COUNTRY_CAPACITY. + * have a capacity at least ULOC_COUNTRY_CAPACITY. * @param regionCapacity * The actual capacity of the region buffer. * @param status @@ -307,4 +307,72 @@ U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* le // Return true if the value is already canonicalized. U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName); +/** + * A utility class for handling locale IDs that may be longer than ULOC_FULLNAME_CAPACITY. + * This encompasses all of the logic to allocate a temporary locale ID buffer on the stack, + * and then, if it's not big enough, reallocate it on the heap and try again. + * + * You use it like this: + * UErrorCode err = U_ZERO_ERROR; + * + * PreflightingLocaleIDBuffer tempBuffer; + * do { + * tempBuffer.requestedCapacity = uloc_doSomething(localeID, tempBuffer.getBuffer(), tempBuffer.getCapacity(), &err); + * } while (tempBuffer.needToTryAgain(&err)); + * if (U_SUCCESS(err)) { + * uloc_doSomethingWithTheResult(tempBuffer.getBuffer()); + * } + */ +class PreflightingLocaleIDBuffer { +private: + char stackBuffer[ULOC_FULLNAME_CAPACITY]; + char* heapBuffer = nullptr; + int32_t capacity = ULOC_FULLNAME_CAPACITY; + +public: + int32_t requestedCapacity = ULOC_FULLNAME_CAPACITY; + + // No heap allocation. Use only on the stack. + static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete; + static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete; +#if U_HAVE_PLACEMENT_NEW + static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete; +#endif + + PreflightingLocaleIDBuffer() {} + + ~PreflightingLocaleIDBuffer() { uprv_free(heapBuffer); } + + char* getBuffer() { + if (heapBuffer == nullptr) { + return stackBuffer; + } else { + return heapBuffer; + } + } + + int32_t getCapacity() { + return capacity; + } + + bool needToTryAgain(UErrorCode* err) { + if (heapBuffer != nullptr) { + return false; + } + + if (*err == U_BUFFER_OVERFLOW_ERROR || *err == U_STRING_NOT_TERMINATED_WARNING) { + int32_t newCapacity = requestedCapacity + 2; // one for the terminating null, one just for paranoia + heapBuffer = static_cast(uprv_malloc(newCapacity)); + if (heapBuffer == nullptr) { + *err = U_MEMORY_ALLOCATION_ERROR; + } else { + *err = U_ZERO_ERROR; + capacity = newCapacity; + } + return U_SUCCESS(*err); + } + return false; + } +}; + #endif diff --git a/deps/icu-small/source/common/umapfile.cpp b/deps/icu-small/source/common/umapfile.cpp index 40b543fb2219bc..3e714876a4dc62 100644 --- a/deps/icu-small/source/common/umapfile.cpp +++ b/deps/icu-small/source/common/umapfile.cpp @@ -136,7 +136,7 @@ typedef HANDLE MemoryMap; /* open the input file */ #if U_PLATFORM_HAS_WINUWP_API == 0 - // Note: In the non-UWP code-path (ie: Win32), the value of the path variable might have come from + // Note: In the non-UWP code-path (ie: Win32), the value of the path variable might have come from // the CRT 'getenv' function, and would be therefore be encoded in the default ANSI code page. // This means that we can't call the *W version of API below, whereas in the UWP code-path // there is no 'getenv' call, and thus the string will be only UTF-8/Invariant characters. @@ -178,7 +178,7 @@ typedef HANDLE MemoryMap; CloseHandle(file); if (map == nullptr) { - // If we failed to create the mapping due to an out-of-memory error, then + // If we failed to create the mapping due to an out-of-memory error, then // we want to report that error back to the caller. if (HRESULT_FROM_WIN32(GetLastError()) == E_OUTOFMEMORY) { *status = U_MEMORY_ALLOCATION_ERROR; @@ -360,14 +360,14 @@ typedef HANDLE MemoryMap; } return dest; } - + /*------------------------------------------------------------------------------ - * - * computeDirPath given a user-supplied path of an item to be opened, - * compute and return - * - the full directory path to be used + * + * computeDirPath given a user-supplied path of an item to be opened, + * compute and return + * - the full directory path to be used * when opening the file. - * - Pointer to null at end of above returned path + * - Pointer to null at end of above returned path * * Parameters: * path: input path. Buffer is not altered. @@ -379,23 +379,23 @@ typedef HANDLE MemoryMap; * TODO: This works the way ICU historically has, but the * whole data fallback search path is so complicated that * probably almost no one will ever really understand it, - * the potential for confusion is large. (It's not just + * the potential for confusion is large. (It's not just * this one function, but the whole scheme.) - * + * *------------------------------------------------------------------------------*/ static char *uprv_computeDirPath(const char *path, char *pathBuffer) { char *finalSlash; /* Ptr to last dir separator in input path, or null if none. */ int32_t pathLen; /* Length of the returned directory path */ - + finalSlash = 0; if (path != 0) { finalSlash = uprv_strrchr(path, U_FILE_SEP_CHAR); } - + *pathBuffer = 0; if (finalSlash == 0) { - /* No user-supplied path. + /* No user-supplied path. * Copy the ICU_DATA path to the path buffer and return that*/ const char *icuDataDir; icuDataDir=u_getDataDirectory(); @@ -405,8 +405,8 @@ typedef HANDLE MemoryMap; /* there is no icuDataDir either. Just return the empty pathBuffer. */ return pathBuffer; } - } - + } + /* User supplied path did contain a directory portion. * Copy it to the output path buffer */ pathLen = (int32_t)(finalSlash - path + 1); @@ -414,7 +414,7 @@ typedef HANDLE MemoryMap; *(pathBuffer+pathLen) = 0; return pathBuffer+pathLen; } - + # define DATA_TYPE "dat" @@ -522,7 +522,7 @@ typedef HANDLE MemoryMap; pData->map = nullptr; pData->mapAddr = nullptr; pData->pHeader = nullptr; - } + } } #else diff --git a/deps/icu-small/source/common/umapfile.h b/deps/icu-small/source/common/umapfile.h index 92bd567a2a9895..adc265203dcc2d 100644 --- a/deps/icu-small/source/common/umapfile.h +++ b/deps/icu-small/source/common/umapfile.h @@ -18,7 +18,7 @@ * whatever means are available. * * These functions are part of the ICU internal implementation, and - * are not inteded to be used directly by applications. + * are not intended to be used directly by applications. * *----------------------------------------------------------------------------------*/ diff --git a/deps/icu-small/source/common/umath.cpp b/deps/icu-small/source/common/umath.cpp index 3ab72ab482386c..7cf4b317494083 100644 --- a/deps/icu-small/source/common/umath.cpp +++ b/deps/icu-small/source/common/umath.cpp @@ -23,3 +23,4 @@ uprv_min(int32_t x, int32_t y) { return (x > y ? y : x); } + diff --git a/deps/icu-small/source/common/umutex.h b/deps/icu-small/source/common/umutex.h index 57955353d0d6ff..8d76b3f3e6f596 100644 --- a/deps/icu-small/source/common/umutex.h +++ b/deps/icu-small/source/common/umutex.h @@ -37,7 +37,7 @@ #error U_USER_ATOMICS and U_USER_MUTEX_H are not supported #endif -// Export an explicit template instantiation of std::atomic. +// Export an explicit template instantiation of std::atomic. // When building DLLs for Windows this is required as it is used as a data member of the exported SharedObject class. // See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples. // diff --git a/deps/icu-small/source/common/unames.cpp b/deps/icu-small/source/common/unames.cpp index c55e2d662acff5..5776058f957f40 100644 --- a/deps/icu-small/source/common/unames.cpp +++ b/deps/icu-small/source/common/unames.cpp @@ -144,7 +144,7 @@ static const char * const charCatNames[U_CHAR_EXTENDED_CATEGORY_COUNT] = { "format", "private use area", "surrogate", - "dash punctuation", + "dash punctuation", "start punctuation", "end punctuation", "connector punctuation", @@ -451,7 +451,7 @@ static uint16_t getExtName(uint32_t code, char *buffer, uint16_t bufferLength) { UChar32 cp; int ndigits, i; - + WRITE_CHAR(buffer, bufferLength, length, '<'); while (catname[length - 1]) { WRITE_CHAR(buffer, bufferLength, length, catname[length - 1]); @@ -639,7 +639,7 @@ enumGroupNames(UCharNames *names, const uint16_t *group, * It only needs to do it if it is called with a real function and not * with the dummy DO_FIND_NAME, because u_charFromName() does a check * for extended names by itself. - */ + */ static UBool enumExtNames(UChar32 start, UChar32 end, UEnumCharNamesFn *fn, void *context) @@ -647,7 +647,7 @@ enumExtNames(UChar32 start, UChar32 end, if(fn!=DO_FIND_NAME) { char buffer[200]; uint16_t length; - + while(start<=end) { buffer[length = getExtName(start, buffer, sizeof(buffer))] = 0; /* here, we assume that the buffer is large enough */ @@ -765,7 +765,7 @@ enumNames(UCharNames *names, } return enumExtNames(start, limit - 1, fn, context); } - + return TRUE; } diff --git a/deps/icu-small/source/common/unicode/appendable.h b/deps/icu-small/source/common/unicode/appendable.h index fc99254de14e58..f77df88e39c787 100644 --- a/deps/icu-small/source/common/unicode/appendable.h +++ b/deps/icu-small/source/common/unicode/appendable.h @@ -174,7 +174,7 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { * @return true if the operation succeeded * @stable ICU 4.8 */ - virtual UBool appendCodeUnit(char16_t c); + virtual UBool appendCodeUnit(char16_t c) override; /** * Appends a code point to the string. @@ -182,7 +182,7 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { * @return true if the operation succeeded * @stable ICU 4.8 */ - virtual UBool appendCodePoint(UChar32 c); + virtual UBool appendCodePoint(UChar32 c) override; /** * Appends a string to the UnicodeString. @@ -191,7 +191,7 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { * @return true if the operation succeeded * @stable ICU 4.8 */ - virtual UBool appendString(const char16_t *s, int32_t length); + virtual UBool appendString(const char16_t *s, int32_t length) override; /** * Tells the UnicodeString that the caller is going to append roughly @@ -200,7 +200,7 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { * @return true if the operation succeeded * @stable ICU 4.8 */ - virtual UBool reserveAppendCapacity(int32_t appendCapacity); + virtual UBool reserveAppendCapacity(int32_t appendCapacity) override; /** * Returns a writable buffer for appending and writes the buffer's capacity to @@ -226,7 +226,7 @@ class U_COMMON_API UnicodeStringAppendable : public Appendable { virtual char16_t *getAppendBuffer(int32_t minCapacity, int32_t desiredCapacityHint, char16_t *scratch, int32_t scratchCapacity, - int32_t *resultCapacity); + int32_t *resultCapacity) override; private: UnicodeString &str; diff --git a/deps/icu-small/source/common/unicode/brkiter.h b/deps/icu-small/source/common/unicode/brkiter.h index 9bba5fcccc319d..3a121cf703b337 100644 --- a/deps/icu-small/source/common/unicode/brkiter.h +++ b/deps/icu-small/source/common/unicode/brkiter.h @@ -99,7 +99,7 @@ U_NAMESPACE_BEGIN *

* Code snippets illustrating the use of the Break Iterator APIs * are available in the ICU User Guide, - * http://icu-project.org/userguide/boundaryAnalysis.html + * https://unicode-org.github.io/icu/userguide/boundaryanalysis/ * and in the sample program icu/source/samples/break/break.cpp * */ @@ -124,7 +124,7 @@ class U_COMMON_API BreakIterator : public UObject { * object, and styles are not considered. * @stable ICU 2.0 */ - virtual UBool operator==(const BreakIterator&) const = 0; + virtual bool operator==(const BreakIterator&) const = 0; /** * Returns the complement of the result of operator== @@ -132,7 +132,7 @@ class U_COMMON_API BreakIterator : public UObject { * @return the complement of the result of operator== * @stable ICU 2.0 */ - UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } + bool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } /** * Return a polymorphic copy of this object. This is an abstract @@ -146,7 +146,7 @@ class U_COMMON_API BreakIterator : public UObject { * will return distinct unequal values. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; + virtual UClassID getDynamicClassID(void) const override = 0; /** * Return a CharacterIterator over the text being analyzed. diff --git a/deps/icu-small/source/common/unicode/bytestream.h b/deps/icu-small/source/common/unicode/bytestream.h index 5f116910f46ed6..997746e428040f 100644 --- a/deps/icu-small/source/common/unicode/bytestream.h +++ b/deps/icu-small/source/common/unicode/bytestream.h @@ -168,7 +168,7 @@ class U_COMMON_API ByteSink : public UMemory { // ------------------------------------------------------------- // Some standard implementations -/** +/** * Implementation of ByteSink that writes to a flat byte array, * with bounds-checking: * This sink will not write more than capacity bytes to outbuf. @@ -206,7 +206,7 @@ class U_COMMON_API CheckedArrayByteSink : public ByteSink { * @param n the number of bytes; must be non-negative * @stable ICU 4.2 */ - virtual void Append(const char* bytes, int32_t n); + virtual void Append(const char* bytes, int32_t n) override; /** * Returns a writable buffer for appending and writes the buffer's capacity to * *result_capacity. For details see the base class documentation. @@ -224,7 +224,7 @@ class U_COMMON_API CheckedArrayByteSink : public ByteSink { virtual char* GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, char* scratch, int32_t scratch_capacity, - int32_t* result_capacity); + int32_t* result_capacity) override; /** * Returns the number of bytes actually written to the sink. * @return number of bytes written to the buffer @@ -258,7 +258,7 @@ class U_COMMON_API CheckedArrayByteSink : public ByteSink { CheckedArrayByteSink &operator=(const CheckedArrayByteSink &) = delete; }; -/** +/** * Implementation of ByteSink that writes to a "string". * The StringClass is usually instantiated with a std::string. * @stable ICU 4.2 @@ -274,7 +274,7 @@ class StringByteSink : public ByteSink { StringByteSink(StringClass* dest) : dest_(dest) { } /** * Constructs a ByteSink that reserves append capacity and will append bytes to the dest string. - * + * * @param dest pointer to string object to append to * @param initialAppendCapacity capacity beyond dest->length() to be reserve()d * @stable ICU 60 @@ -291,7 +291,7 @@ class StringByteSink : public ByteSink { * @param n the number of bytes; must be non-negative * @stable ICU 4.2 */ - virtual void Append(const char* data, int32_t n) { dest_->append(data, n); } + virtual void Append(const char* data, int32_t n) override { dest_->append(data, n); } private: StringClass* dest_; diff --git a/deps/icu-small/source/common/unicode/bytestriebuilder.h b/deps/icu-small/source/common/unicode/bytestriebuilder.h index 1861fb8b3f9a89..382f5e0095fd3f 100644 --- a/deps/icu-small/source/common/unicode/bytestriebuilder.h +++ b/deps/icu-small/source/common/unicode/bytestriebuilder.h @@ -134,21 +134,21 @@ class U_COMMON_API BytesTrieBuilder : public StringTrieBuilder { void buildBytes(UStringTrieBuildOption buildOption, UErrorCode &errorCode); - virtual int32_t getElementStringLength(int32_t i) const; - virtual char16_t getElementUnit(int32_t i, int32_t byteIndex) const; - virtual int32_t getElementValue(int32_t i) const; + virtual int32_t getElementStringLength(int32_t i) const override; + virtual char16_t getElementUnit(int32_t i, int32_t byteIndex) const override; + virtual int32_t getElementValue(int32_t i) const override; - virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t byteIndex) const; + virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t byteIndex) const override; - virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t byteIndex) const; - virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const; - virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const; + virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t byteIndex) const override; + virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const override; + virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const override; - virtual UBool matchNodesCanHaveValues() const { return false; } + virtual UBool matchNodesCanHaveValues() const override { return false; } - virtual int32_t getMaxBranchLinearSubNodeLength() const { return BytesTrie::kMaxBranchLinearSubNodeLength; } - virtual int32_t getMinLinearMatch() const { return BytesTrie::kMinLinearMatch; } - virtual int32_t getMaxLinearMatchLength() const { return BytesTrie::kMaxLinearMatchLength; } + virtual int32_t getMaxBranchLinearSubNodeLength() const override { return BytesTrie::kMaxBranchLinearSubNodeLength; } + virtual int32_t getMinLinearMatch() const override { return BytesTrie::kMinLinearMatch; } + virtual int32_t getMaxLinearMatchLength() const override { return BytesTrie::kMaxLinearMatchLength; } /** * @internal (private) @@ -156,22 +156,22 @@ class U_COMMON_API BytesTrieBuilder : public StringTrieBuilder { class BTLinearMatchNode : public LinearMatchNode { public: BTLinearMatchNode(const char *units, int32_t len, Node *nextNode); - virtual UBool operator==(const Node &other) const; - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual void write(StringTrieBuilder &builder) override; private: const char *s; }; - + virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length, - Node *nextNode) const; + Node *nextNode) const override; UBool ensureCapacity(int32_t length); - virtual int32_t write(int32_t byte); + virtual int32_t write(int32_t byte) override; int32_t write(const char *b, int32_t length); - virtual int32_t writeElementUnits(int32_t i, int32_t byteIndex, int32_t length); - virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal); - virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node); - virtual int32_t writeDeltaTo(int32_t jumpTarget); + virtual int32_t writeElementUnits(int32_t i, int32_t byteIndex, int32_t length) override; + virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal) override; + virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node) override; + virtual int32_t writeDeltaTo(int32_t jumpTarget) override; static int32_t internalEncodeDelta(int32_t i, char intBytes[]); CharString *strings; // Pointer not object so we need not #include internal charstr.h. diff --git a/deps/icu-small/source/common/unicode/caniter.h b/deps/icu-small/source/common/unicode/caniter.h index 8ba4cc7daad3c1..6e57ef5e3ba1c6 100644 --- a/deps/icu-small/source/common/unicode/caniter.h +++ b/deps/icu-small/source/common/unicode/caniter.h @@ -23,7 +23,7 @@ * \file * \brief C++ API: Canonical Iterator */ - + /** Should permutation skip characters with combining class zero * Should be either true or false. This is a compile time option * @stable ICU 2.4 @@ -145,7 +145,7 @@ class U_COMMON_API CanonicalIterator U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: // ===================== PRIVATES ============================== @@ -194,7 +194,7 @@ class U_COMMON_API CanonicalIterator U_FINAL : public UObject { /** * See if the decomposition of cp2 is at segment starting at segmentPos - * (with canonical rearrangment!) + * (with canonical rearrangement!) * If so, take the remainder, and return the equivalents */ //Set extract(int comp, String segment, int segmentPos, StringBuffer buffer); diff --git a/deps/icu-small/source/common/unicode/chariter.h b/deps/icu-small/source/common/unicode/chariter.h index f7ecd8e0036ce2..4f320b90e2c3a4 100644 --- a/deps/icu-small/source/common/unicode/chariter.h +++ b/deps/icu-small/source/common/unicode/chariter.h @@ -22,7 +22,7 @@ * \file * \brief C++ API: Character Iterator */ - + U_NAMESPACE_BEGIN /** * Abstract class that defines an API for forward-only iteration @@ -71,7 +71,7 @@ U_NAMESPACE_BEGIN * * * Example: - * \code + * \code * void function1(ForwardCharacterIterator &it) { * UChar32 c; * while(it.hasNext()) { @@ -99,51 +99,51 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * @stable ICU 2.0 */ enum { DONE = 0xffff }; - + /** - * Destructor. + * Destructor. * @stable ICU 2.0 */ virtual ~ForwardCharacterIterator(); - + /** * Returns true when both iterators refer to the same - * character in the same character-storage object. + * character in the same character-storage object. * @param that The ForwardCharacterIterator to be compared for equality * @return true when both iterators refer to the same * character in the same character-storage object * @stable ICU 2.0 */ - virtual UBool operator==(const ForwardCharacterIterator& that) const = 0; - + virtual bool operator==(const ForwardCharacterIterator& that) const = 0; + /** * Returns true when the iterators refer to different * text-storage objects, or to different characters in the - * same text-storage object. + * same text-storage object. * @param that The ForwardCharacterIterator to be compared for inequality * @return true when the iterators refer to different * text-storage objects, or to different characters in the * same text-storage object * @stable ICU 2.0 */ - inline UBool operator!=(const ForwardCharacterIterator& that) const; - + inline bool operator!=(const ForwardCharacterIterator& that) const; + /** - * Generates a hash code for this iterator. + * Generates a hash code for this iterator. * @return the hash code. * @stable ICU 2.0 */ virtual int32_t hashCode(void) const = 0; - + /** * Returns a UClassID for this ForwardCharacterIterator ("poor man's * RTTI").

Despite the fact that this function is public, - * DO NOT CONSIDER IT PART OF CHARACTERITERATOR'S API! - * @return a UClassID for this ForwardCharacterIterator + * DO NOT CONSIDER IT PART OF CHARACTERITERATOR'S API! + * @return a UClassID for this ForwardCharacterIterator * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; - + virtual UClassID getDynamicClassID(void) const override = 0; + /** * Gets the current code unit for returning and advances to the next code unit * in the iteration range @@ -153,7 +153,7 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * @stable ICU 2.0 */ virtual char16_t nextPostInc(void) = 0; - + /** * Gets the current code point for returning and advances to the next code point * in the iteration range @@ -163,7 +163,7 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * @stable ICU 2.0 */ virtual UChar32 next32PostInc(void) = 0; - + /** * Returns false if there are no more code units or code points * at or after the current position in the iteration range. @@ -174,14 +174,14 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * @stable ICU 2.0 */ virtual UBool hasNext() = 0; - + protected: /** Default constructor to be overridden in the implementing class. @stable ICU 2.0*/ ForwardCharacterIterator(); - + /** Copy constructor to be overridden in the implementing class. @stable ICU 2.0*/ ForwardCharacterIterator(const ForwardCharacterIterator &other); - + /** * Assignment operator to be overridden in the implementing class. * @stable ICU 2.0 @@ -293,7 +293,7 @@ class U_COMMON_API ForwardCharacterIterator : public UObject { * \endcode * * Traverse the text from start to finish - *

+ * 
 
  * \code
  *  void traverseForward(CharacterIterator& iter)
  *  {
@@ -314,7 +314,7 @@ class U_COMMON_API ForwardCharacterIterator : public UObject {
  *  }
  * \endcode
  * 
- * Traverse both forward and backward from a given position in the text. + * Traverse both forward and backward from a given position in the text. * Calls to notBoundary() in this example represents some additional stopping criteria. *
  * \code
@@ -329,7 +329,7 @@ class U_COMMON_API ForwardCharacterIterator : public UObject {
  *          c != CharacterIterator.DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
  *          c = iter.previous()) {}
  *      int32_t start = iter.getIndex() + 1;
- *
+ *  
  *      cout << "start: " << start << " end: " << end << endl;
  *      for (c = iter.setIndex(start); iter.getIndex() < end; c = iter.next() ) {
  *          processChar(c);
@@ -376,7 +376,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * Returns a pointer to a new CharacterIterator of the same
      * concrete class as this one, and referring to the same
      * character in the same text-storage object as this one.  The
-     * caller is responsible for deleting the new clone.
+     * caller is responsible for deleting the new clone.  
      * @return a pointer to a new CharacterIterator
      * @stable ICU 2.0
      */
@@ -439,7 +439,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * @stable ICU 2.0
      */
     virtual char16_t         last(void) = 0;
-
+        
     /**
      * Sets the iterator to refer to the last code point in its
      * iteration range, and returns that code unit.
@@ -461,7 +461,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
     /**
      * Sets the iterator to refer to the "position"-th code unit
      * in the text-storage object the iterator refers to, and
-     * returns that code unit.
+     * returns that code unit.  
      * @param position the "position"-th code unit in the text-storage object
      * @return the "position"-th code unit.
      * @stable ICU 2.0
@@ -482,19 +482,19 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
     virtual UChar32       setIndex32(int32_t position) = 0;
 
     /**
-     * Returns the code unit the iterator currently refers to.
-     * @return the current code unit.
+     * Returns the code unit the iterator currently refers to. 
+     * @return the current code unit. 
      * @stable ICU 2.0
      */
     virtual char16_t         current(void) const = 0;
-
+        
     /**
-     * Returns the code point the iterator currently refers to.
+     * Returns the code point the iterator currently refers to.  
      * @return the current code point.
      * @stable ICU 2.0
      */
     virtual UChar32       current32(void) const = 0;
-
+        
     /**
      * Advances to the next code unit in the iteration range
      * (toward endIndex()), and returns that code unit.  If there are
@@ -503,7 +503,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * @stable ICU 2.0
      */
     virtual char16_t         next(void) = 0;
-
+        
     /**
      * Advances to the next code point in the iteration range
      * (toward endIndex()), and returns that code point.  If there are
@@ -515,11 +515,11 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * @stable ICU 2.0
      */
     virtual UChar32       next32(void) = 0;
-
+        
     /**
      * Advances to the previous code unit in the iteration range
      * (toward startIndex()), and returns that code unit.  If there are
-     * no more code units to return, returns DONE.
+     * no more code units to return, returns DONE.  
      * @return the previous code unit.
      * @stable ICU 2.0
      */
@@ -528,8 +528,8 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
     /**
      * Advances to the previous code point in the iteration range
      * (toward startIndex()), and returns that code point.  If there are
-     * no more code points to return, returns DONE.
-     * @return the previous code point.
+     * no more code points to return, returns DONE. 
+     * @return the previous code point. 
      * @stable ICU 2.0
      */
     virtual UChar32       previous32(void) = 0;
@@ -550,29 +550,29 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * object of the character returned by first().  Since it's
      * possible to create an iterator that iterates across only
      * part of a text-storage object, this number isn't
-     * necessarily 0.
+     * necessarily 0.  
      * @returns the numeric index in the underlying text-storage
      * object of the character returned by first().
      * @stable ICU 2.0
      */
     inline int32_t       startIndex(void) const;
-
+        
     /**
      * Returns the numeric index in the underlying text-storage
      * object of the position immediately BEYOND the character
-     * returned by last().
+     * returned by last().  
      * @return the numeric index in the underlying text-storage
      * object of the position immediately BEYOND the character
      * returned by last().
      * @stable ICU 2.0
      */
     inline int32_t       endIndex(void) const;
-
+        
     /**
      * Returns the numeric index in the underlying text-storage
      * object of the character the iterator currently refers to
-     * (i.e., the character returned by current()).
-     * @return the numeric index in the text-storage object of
+     * (i.e., the character returned by current()).  
+     * @return the numeric index in the text-storage object of 
      * the character the iterator currently refers to
      * @stable ICU 2.0
      */
@@ -618,8 +618,8 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
 
     /**
      * Copies the text under iteration into the UnicodeString
-     * referred to by "result".
-     * @param result Receives a copy of the text under iteration.
+     * referred to by "result".  
+     * @param result Receives a copy of the text under iteration.  
      * @stable ICU 2.0
      */
     virtual void            getText(UnicodeString&  result) = 0;
@@ -648,7 +648,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
      * @stable ICU 2.0
      */
     CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position);
-
+  
     /**
      * Copy constructor.
      *
@@ -692,7 +692,7 @@ class U_COMMON_API CharacterIterator : public ForwardCharacterIterator {
     int32_t  end;
 };
 
-inline UBool
+inline bool
 ForwardCharacterIterator::operator!=(const ForwardCharacterIterator& that) const {
     return !operator==(that);
 }
diff --git a/deps/icu-small/source/common/unicode/dbbi.h b/deps/icu-small/source/common/unicode/dbbi.h
index 9031c0b96b1b40..3de9cc381408c5 100644
--- a/deps/icu-small/source/common/unicode/dbbi.h
+++ b/deps/icu-small/source/common/unicode/dbbi.h
@@ -25,7 +25,7 @@
  * \file
  * \brief C++ API: Dictionary Based Break Iterator
  */
-
+ 
 U_NAMESPACE_BEGIN
 
 #ifndef U_HIDE_DEPRECATED_API
diff --git a/deps/icu-small/source/common/unicode/docmain.h b/deps/icu-small/source/common/unicode/docmain.h
index 1b88eca92b9e9c..4e29e283cdea4b 100644
--- a/deps/icu-small/source/common/unicode/docmain.h
+++ b/deps/icu-small/source/common/unicode/docmain.h
@@ -1,7 +1,7 @@
 // © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /********************************************************************
- * COPYRIGHT:
+ * COPYRIGHT: 
  * Copyright (c) 1997-2012, International Business Machines Corporation and
  * others. All Rights Reserved.
  *
@@ -22,7 +22,7 @@
 /*! \mainpage
  *
  * \section API API Reference Usage
- *
+ * 
  * 

C++ Programmers:

*

Use Class Hierarchy or Alphabetical List * or Compound List @@ -31,7 +31,7 @@ * "BreakIterator". Once you are at the class, you will find an inheritance * chart, a list of the public members, a detailed description of the class, * then detailed member descriptions.

- * + * *

C Programmers:

*

Use Module List or File Members * to find a list of all the functions and constants. @@ -46,8 +46,8 @@ * *

API References for Previous Releases

*

The API References for each release of ICU are also available as - * a zip file from the ICU - * download page.

+ * a zip file from the ICU + * download page.

* *
* diff --git a/deps/icu-small/source/common/unicode/dtintrv.h b/deps/icu-small/source/common/unicode/dtintrv.h index 7932ea660fa4dd..46a94ce3495886 100644 --- a/deps/icu-small/source/common/unicode/dtintrv.h +++ b/deps/icu-small/source/common/unicode/dtintrv.h @@ -6,7 +6,7 @@ * others. All Rights Reserved. ******************************************************************************* * -* File DTINTRV.H +* File DTINTRV.H * ******************************************************************************* */ @@ -36,7 +36,7 @@ U_NAMESPACE_BEGIN class U_COMMON_API DateInterval : public UObject { public: - /** + /** * Construct a DateInterval given a from date and a to date. * @param fromDate The from date in date interval. * @param toDate The to date in date interval. @@ -49,15 +49,15 @@ class U_COMMON_API DateInterval : public UObject { * @stable ICU 4.0 */ virtual ~DateInterval(); - - /** + + /** * Get the from date. * @return the from date in dateInterval. * @stable ICU 4.0 */ inline UDate getFromDate() const; - /** + /** * Get the to date. * @return the to date in dateInterval. * @stable ICU 4.0 @@ -89,9 +89,9 @@ class U_COMMON_API DateInterval : public UObject { * other classes have different class IDs. * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID(void) const; - + virtual UClassID getDynamicClassID(void) const override; + /** * Copy constructor. * @stable ICU 4.0 @@ -109,18 +109,18 @@ class U_COMMON_API DateInterval : public UObject { * @return true if the two DateIntervals are the same * @stable ICU 4.0 */ - virtual UBool operator==(const DateInterval& other) const; + virtual bool operator==(const DateInterval& other) const; /** * Non-equality operator * @return true if the two DateIntervals are not the same * @stable ICU 4.0 */ - inline UBool operator!=(const DateInterval& other) const; + inline bool operator!=(const DateInterval& other) const; /** - * clone this object. + * clone this object. * The caller owns the result and should delete it when done. * @return a cloned DateInterval * @stable ICU 4.0 @@ -128,7 +128,7 @@ class U_COMMON_API DateInterval : public UObject { virtual DateInterval* clone() const; private: - /** + /** * Default constructor, not implemented. */ DateInterval(); @@ -139,20 +139,20 @@ class U_COMMON_API DateInterval : public UObject { } ;// end class DateInterval -inline UDate -DateInterval::getFromDate() const { - return fromDate; +inline UDate +DateInterval::getFromDate() const { + return fromDate; } -inline UDate -DateInterval::getToDate() const { - return toDate; +inline UDate +DateInterval::getToDate() const { + return toDate; } -inline UBool -DateInterval::operator!=(const DateInterval& other) const { +inline bool +DateInterval::operator!=(const DateInterval& other) const { return ( !operator==(other) ); } diff --git a/deps/icu-small/source/common/unicode/enumset.h b/deps/icu-small/source/common/unicode/enumset.h index 82d633ed016b5e..bde8c455c0dd2b 100644 --- a/deps/icu-small/source/common/unicode/enumset.h +++ b/deps/icu-small/source/common/unicode/enumset.h @@ -25,7 +25,7 @@ U_NAMESPACE_BEGIN /* Can't use #ifndef U_HIDE_INTERNAL_API for the entire EnumSet class, needed in .h file declarations */ /** - * enum bitset for boolean fields. Similar to Java EnumSet<>. + * enum bitset for boolean fields. Similar to Java EnumSet<>. * Needs to range check. Used for private instance variables. * @internal * \cond @@ -49,9 +49,9 @@ class EnumSet { fBools = other.fBools; return *this; } - + inline uint32_t getAll() const { - return fBools; + return fBools; } #endif /* U_HIDE_INTERNAL_API */ diff --git a/deps/icu-small/source/common/unicode/errorcode.h b/deps/icu-small/source/common/unicode/errorcode.h index 75cdbb6a98f194..fe7b5183232cd1 100644 --- a/deps/icu-small/source/common/unicode/errorcode.h +++ b/deps/icu-small/source/common/unicode/errorcode.h @@ -20,7 +20,7 @@ #define __ERRORCODE_H__ /** - * \file + * \file * \brief C++ API: ErrorCode class intended to make it easier to use * ICU C and C++ APIs from C++ user code. */ diff --git a/deps/icu-small/source/common/unicode/icudataver.h b/deps/icu-small/source/common/unicode/icudataver.h index a82cb3d89d9d99..f218ed8ebccbcb 100644 --- a/deps/icu-small/source/common/unicode/icudataver.h +++ b/deps/icu-small/source/common/unicode/icudataver.h @@ -32,10 +32,10 @@ /** * Retrieves the data version from icuver and stores it in dataVersionFillin. - * + * * @param dataVersionFillin icuver data version information to be filled in if not-null * @param status stores the error code from the calls to resource bundle - * + * * @stable ICU 49 */ U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status); diff --git a/deps/icu-small/source/common/unicode/icuplug.h b/deps/icu-small/source/common/unicode/icuplug.h index f817679acf016c..205af360d45e9e 100644 --- a/deps/icu-small/source/common/unicode/icuplug.h +++ b/deps/icu-small/source/common/unicode/icuplug.h @@ -17,7 +17,7 @@ /** * \file - * \brief C API: ICU Plugin API + * \brief C API: ICU Plugin API * *

C API: ICU Plugin API

* @@ -25,31 +25,31 @@ * *

Loading and Configuration

* - *

At ICU startup time, the environment variable "ICU_PLUGINS" will be - * queried for a directory name. If it is not set, the preprocessor symbol + *

At ICU startup time, the environment variable "ICU_PLUGINS" will be + * queried for a directory name. If it is not set, the preprocessor symbol * "DEFAULT_ICU_PLUGINS" will be checked for a default value.

* - *

Within the above-named directory, the file "icuplugins##.txt" will be - * opened, if present, where ## is the major+minor number of the currently + *

Within the above-named directory, the file "icuplugins##.txt" will be + * opened, if present, where ## is the major+minor number of the currently * running ICU (such as, 44 for ICU 4.4, thus icuplugins44.txt)

* *

The configuration file has this format:

* *
    *
  • Hash (#) begins a comment line
  • - * + * *
  • Non-comment lines have two or three components: * LIBRARYNAME ENTRYPOINT [ CONFIGURATION .. ]
  • * *
  • Tabs or spaces separate the three items.
  • * - *
  • LIBRARYNAME is the name of a shared library, either a short name if + *
  • LIBRARYNAME is the name of a shared library, either a short name if * it is on the loader path, or a full pathname.
  • * - *
  • ENTRYPOINT is the short (undecorated) symbol name of the plugin's + *
  • ENTRYPOINT is the short (undecorated) symbol name of the plugin's * entrypoint, as above.
  • * - *
  • CONFIGURATION is the entire rest of the line . It's passed as-is to + *
  • CONFIGURATION is the entire rest of the line . It's passed as-is to * the plugin.
  • *
* @@ -59,25 +59,25 @@ * # this is icuplugins44.txt * testplug.dll myPlugin hello=world * \endcode - *

Plugins are categorized as "high" or "low" level. Low level are those - * which must be run BEFORE high level plugins, and before any operations - * which cause ICU to be 'initialized'. If a plugin is low level but - * causes ICU to allocate memory or become initialized, that plugin is said + *

Plugins are categorized as "high" or "low" level. Low level are those + * which must be run BEFORE high level plugins, and before any operations + * which cause ICU to be 'initialized'. If a plugin is low level but + * causes ICU to allocate memory or become initialized, that plugin is said * to cause a 'level change'.

* - *

At load time, ICU first queries all plugins to determine their level, - * then loads all 'low' plugins first, and then loads all 'high' plugins. + *

At load time, ICU first queries all plugins to determine their level, + * then loads all 'low' plugins first, and then loads all 'high' plugins. * Plugins are otherwise loaded in the order listed in the configuration file.

- * + * *

Implementing a Plugin

* \code - * U_CAPI UPlugTokenReturn U_EXPORT2 + * U_CAPI UPlugTokenReturn U_EXPORT2 * myPlugin (UPlugData *plug, UPlugReason reason, UErrorCode *status) { * if(reason==UPLUG_REASON_QUERY) { * uplug_setPlugName(plug, "Simple Plugin"); * uplug_setPlugLevel(plug, UPLUG_LEVEL_HIGH); * } else if(reason==UPLUG_REASON_LOAD) { - * ... Set up some ICU things here.... + * ... Set up some ICU things here.... * } else if(reason==UPLUG_REASON_UNLOAD) { * ... unload, clean up ... * } @@ -85,20 +85,20 @@ * } * \endcode * - *

The UPlugData* is an opaque pointer to the plugin-specific data, and is + *

The UPlugData* is an opaque pointer to the plugin-specific data, and is * used in all other API calls.

* *

The API contract is:

- *
  1. The plugin MUST always return UPLUG_TOKEN as a return value- to + *
    1. The plugin MUST always return UPLUG_TOKEN as a return value- to * indicate that it is a valid plugin.
    2. * - *
    3. When the 'reason' parameter is set to UPLUG_REASON_QUERY, the - * plugin MUST call uplug_setPlugLevel() to indicate whether it is a high + *
    4. When the 'reason' parameter is set to UPLUG_REASON_QUERY, the + * plugin MUST call uplug_setPlugLevel() to indicate whether it is a high * level or low level plugin.
    5. * - *
    6. When the 'reason' parameter is UPLUG_REASON_QUERY, the plugin + *
    7. When the 'reason' parameter is UPLUG_REASON_QUERY, the plugin * SHOULD call uplug_setPlugName to indicate a human readable plugin name.
    - * + * * * \internal ICU 4.4 Technology Preview */ @@ -120,7 +120,7 @@ struct UPlugData; /** * @{ - * Typedef for opaque structure passed to/from a plugin. + * Typedef for opaque structure passed to/from a plugin. * Use the APIs to access it. * @internal ICU 4.4 Technology Preview */ @@ -129,7 +129,7 @@ typedef struct UPlugData UPlugData; /** @} */ /** - * Random Token to identify a valid ICU plugin. Plugins must return this + * Random Token to identify a valid ICU plugin. Plugins must return this * from the entrypoint. * @internal ICU 4.4 Technology Preview */ @@ -143,7 +143,7 @@ typedef struct UPlugData UPlugData; /** - * Return value from a plugin entrypoint. + * Return value from a plugin entrypoint. * Must always be set to UPLUG_TOKEN * @see UPLUG_TOKEN * @internal ICU 4.4 Technology Preview @@ -187,7 +187,7 @@ typedef enum { /** * Entrypoint for an ICU plugin. - * @param plug the UPlugData handle. + * @param plug the UPlugData handle. * @param status the plugin's extended status code. * @return A valid plugin must return UPLUG_TOKEN * @internal ICU 4.4 Technology Preview @@ -207,7 +207,7 @@ typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) ( * @param dontUnload set true if this plugin can't be unloaded * @internal ICU 4.4 Technology Preview */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload); /** @@ -245,7 +245,7 @@ uplug_getCurrentLevel(void); * @internal ICU 4.4 Technology Preview */ U_CAPI UErrorCode U_EXPORT2 -uplug_getPlugLoadStatus(UPlugData *plug); +uplug_getPlugLoadStatus(UPlugData *plug); /** * Set the human-readable name of this plugin. @@ -286,7 +286,7 @@ uplug_getLibraryName(UPlugData *plug, UErrorCode *status); /** * Return the library used for this plugin, if known. - * Plugins could use this to load data out of their + * Plugins could use this to load data out of their * @param plug plugin data handle * @return the library, or NULL * @internal ICU 4.4 Technology Preview @@ -333,7 +333,7 @@ uplug_getConfiguration(UPlugData *plug); * } * \endcode * Not thread safe- do not call while plugs are added or removed. - * @param prior pass in 'NULL' to get the first (most recent) plug, + * @param prior pass in 'NULL' to get the first (most recent) plug, * otherwise pass the value returned on a prior call to uplug_nextPlug * @return the next oldest plugin, or NULL if no more. * @internal ICU 4.4 Technology Preview @@ -343,7 +343,7 @@ uplug_nextPlug(UPlugData *prior); /** * Inject a plugin as if it were loaded from a library. - * This is useful for testing plugins. + * This is useful for testing plugins. * Note that it will have a 'NULL' library pointer associated * with it, and therefore no llibrary will be closed at cleanup time. * Low level plugins may not be able to load, as ordering can't be enforced. @@ -371,7 +371,7 @@ U_CAPI UPlugData* U_EXPORT2 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status); /** - * Remove a plugin. + * Remove a plugin. * Will request the plugin to be unloaded, and close the library if needed * @param plug plugin handle to close * @param status error result @@ -384,3 +384,4 @@ uplug_removePlug(UPlugData *plug, UErrorCode *status); #endif /* UCONFIG_ENABLE_PLUGINS */ #endif /* _ICUPLUG */ + diff --git a/deps/icu-small/source/common/unicode/localebuilder.h b/deps/icu-small/source/common/unicode/localebuilder.h index 27a894de101def..f708a7ed7c4cb3 100644 --- a/deps/icu-small/source/common/unicode/localebuilder.h +++ b/deps/icu-small/source/common/unicode/localebuilder.h @@ -90,8 +90,7 @@ class U_COMMON_API LocaleBuilder : public UObject { LocaleBuilder& setLocale(const Locale& locale); /** - * Resets the LocaleBuilder to match the provided - * [Unicode Locale Identifier](http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_id) . + * Resets the LocaleBuilder to match the provided IETF BCP 47 language tag. * Discards the existing state. * The empty string causes the builder to be reset, like {@link #clear}. * Legacy language tags (marked as “Type: grandfathered” in BCP 47) @@ -101,8 +100,7 @@ class U_COMMON_API LocaleBuilder : public UObject { * *

    This method clears the internal UErrorCode. * - * @param tag the language tag, defined as - * [unicode_locale_id](http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_id). + * @param tag the language tag, defined as IETF BCP 47 language tag. * @return This builder. * @stable ICU 64 */ diff --git a/deps/icu-small/source/common/unicode/localematcher.h b/deps/icu-small/source/common/unicode/localematcher.h index 0cd068ef32805b..252bb7fdc20753 100644 --- a/deps/icu-small/source/common/unicode/localematcher.h +++ b/deps/icu-small/source/common/unicode/localematcher.h @@ -413,17 +413,15 @@ class U_COMMON_API LocaleMatcher : public UMemory { */ Builder &addSupportedLocale(const Locale &locale); -#ifndef U_HIDE_DRAFT_API /** * Sets no default locale. * There will be no explicit or implicit default locale. * If there is no good match, then the matcher will return nullptr for the * best supported locale. * - * @draft ICU 68 + * @stable ICU 68 */ Builder &setNoDefaultLocale(); -#endif // U_HIDE_DRAFT_API /** * Sets the default locale; if nullptr, or if it is not set explicitly, @@ -474,7 +472,6 @@ class U_COMMON_API LocaleMatcher : public UMemory { return *this; } -#ifndef U_HIDE_DRAFT_API /** * Sets the maximum distance for an acceptable match. * The matcher will return a match for a pair of locales only if @@ -494,10 +491,9 @@ class U_COMMON_API LocaleMatcher : public UMemory { * @param desired the desired locale for distance comparison. * @param supported the supported locale for distance comparison. * @return this Builder object - * @draft ICU 68 + * @stable ICU 68 */ Builder &setMaxDistance(const Locale &desired, const Locale &supported); -#endif // U_HIDE_DRAFT_API /** * Sets the UErrorCode if an error occurred while setting parameters. @@ -638,7 +634,6 @@ class U_COMMON_API LocaleMatcher : public UMemory { */ Result getBestMatchResult(Locale::Iterator &desiredLocales, UErrorCode &errorCode) const; -#ifndef U_HIDE_DRAFT_API /** * Returns true if the pair of locales matches acceptably. * This is influenced by Builder options such as setDirection(), setFavorSubtag(), @@ -650,10 +645,9 @@ class U_COMMON_API LocaleMatcher : public UMemory { * or else the function returns immediately. Check for U_FAILURE() * on output or use with function chaining. (See User Guide for details.) * @return true if the pair of locales matches acceptably. - * @draft ICU 68 + * @stable ICU 68 */ UBool isMatch(const Locale &desired, const Locale &supported, UErrorCode &errorCode) const; -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API /** diff --git a/deps/icu-small/source/common/unicode/localpointer.h b/deps/icu-small/source/common/unicode/localpointer.h index 2a65f2d382d2d8..96c659d10ad6a6 100644 --- a/deps/icu-small/source/common/unicode/localpointer.h +++ b/deps/icu-small/source/common/unicode/localpointer.h @@ -35,7 +35,7 @@ * - Need to be able to orphan/release the pointer and its ownership. * - Need variants for normal C++ object pointers, C++ arrays, and ICU C service objects. * - * For details see http://site.icu-project.org/design/cpp/scoped_ptr + * For details see https://icu.unicode.org/design/cpp/scoped_ptr */ #include "unicode/utypes.h" diff --git a/deps/icu-small/source/common/unicode/locid.h b/deps/icu-small/source/common/unicode/locid.h index b535e77e181015..2f2b3998a78c13 100644 --- a/deps/icu-small/source/common/unicode/locid.h +++ b/deps/icu-small/source/common/unicode/locid.h @@ -326,20 +326,20 @@ class U_COMMON_API Locale : public UObject { * Checks if two locale keys are the same. * * @param other The locale key object to be compared with this. - * @return True if the two locale keys are the same, false otherwise. + * @return true if the two locale keys are the same, false otherwise. * @stable ICU 2.0 */ - UBool operator==(const Locale& other) const; + bool operator==(const Locale& other) const; /** * Checks if two locale keys are not the same. * * @param other The locale key object to be compared with this. - * @return True if the two locale keys are not the same, false + * @return true if the two locale keys are not the same, false * otherwise. * @stable ICU 2.0 */ - inline UBool operator!=(const Locale& other) const; + inline bool operator!=(const Locale& other) const; /** * Clone this object. @@ -583,7 +583,7 @@ class U_COMMON_API Locale : public UObject { * Gets the list of keywords for the specified locale. * * @param status the status code - * @return pointer to StringEnumeration class, or NULL if there are no keywords. + * @return pointer to StringEnumeration class, or NULL if there are no keywords. * Client must dispose of it by calling delete. * @see getKeywords * @stable ICU 2.8 @@ -1005,7 +1005,7 @@ class U_COMMON_API Locale : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * A Locale iterator interface similar to a Java Iterator. @@ -1163,7 +1163,7 @@ class U_COMMON_API Locale : public UObject { friend void U_CALLCONV locale_available_init(); }; -inline UBool +inline bool Locale::operator!=(const Locale& other) const { return !operator==(other); diff --git a/deps/icu-small/source/common/unicode/messagepattern.h b/deps/icu-small/source/common/unicode/messagepattern.h index 98e7b70b1fcc13..4c5be13dbc9168 100644 --- a/deps/icu-small/source/common/unicode/messagepattern.h +++ b/deps/icu-small/source/common/unicode/messagepattern.h @@ -526,14 +526,14 @@ class U_COMMON_API MessagePattern : public UObject { * @return true if this object is equivalent to the other one. * @stable ICU 4.8 */ - UBool operator==(const MessagePattern &other) const; + bool operator==(const MessagePattern &other) const; /** * @param other another object to compare with. * @return false if this object is equivalent to the other one. * @stable ICU 4.8 */ - inline UBool operator!=(const MessagePattern &other) const { + inline bool operator!=(const MessagePattern &other) const { return !operator==(other); } @@ -797,14 +797,14 @@ class U_COMMON_API MessagePattern : public UObject { * @return true if this object is equivalent to the other one. * @stable ICU 4.8 */ - UBool operator==(const Part &other) const; + bool operator==(const Part &other) const; /** * @param other another object to compare with. * @return false if this object is equivalent to the other one. * @stable ICU 4.8 */ - inline UBool operator!=(const Part &other) const { + inline bool operator!=(const Part &other) const { return !operator==(other); } diff --git a/deps/icu-small/source/common/unicode/normlzr.h b/deps/icu-small/source/common/unicode/normlzr.h index 83dc7cea017710..93661990feced8 100644 --- a/deps/icu-small/source/common/unicode/normlzr.h +++ b/deps/icu-small/source/common/unicode/normlzr.h @@ -16,10 +16,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Unicode Normalization */ - + #if !UCONFIG_NO_NORMALIZATION #include "unicode/chariter.h" @@ -584,7 +584,7 @@ class U_COMMON_API Normalizer : public UObject { * @return comparison result * @deprecated ICU 56 Use Normalizer2 instead. */ - UBool operator==(const Normalizer& that) const; + bool operator==(const Normalizer& that) const; /** * Returns false when both iterators refer to the same character in the same @@ -594,7 +594,7 @@ class U_COMMON_API Normalizer : public UObject { * @return comparison result * @deprecated ICU 56 Use Normalizer2 instead. */ - inline UBool operator!=(const Normalizer& that) const; + inline bool operator!=(const Normalizer& that) const; /** * Returns a pointer to a new Normalizer that is a clone of this one. @@ -732,7 +732,7 @@ class U_COMMON_API Normalizer : public UObject { * @return a UClassID for the actual class. * @deprecated ICU 56 Use Normalizer2 instead. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; #endif // U_FORCE_HIDE_DEPRECATED_API private: @@ -777,7 +777,7 @@ class U_COMMON_API Normalizer : public UObject { //------------------------------------------------------------------------- #ifndef U_HIDE_DEPRECATED_API -inline UBool +inline bool Normalizer::operator!= (const Normalizer& other) const { return ! operator==(other); } diff --git a/deps/icu-small/source/common/unicode/parseerr.h b/deps/icu-small/source/common/unicode/parseerr.h index c05487601cb0d1..c23cc273b828eb 100644 --- a/deps/icu-small/source/common/unicode/parseerr.h +++ b/deps/icu-small/source/common/unicode/parseerr.h @@ -23,7 +23,7 @@ /** * The capacity of the context strings in UParseError. * @stable ICU 2.0 - */ + */ enum { U_PARSE_CONTEXT_LEN = 16 }; /** @@ -52,7 +52,7 @@ enum { U_PARSE_CONTEXT_LEN = 16 }; *

    Examples of engines which use UParseError (or may use it in the * future) are Transliterator, RuleBasedBreakIterator, and * RegexPattern. - * + * * @stable ICU 2.0 */ typedef struct UParseError { @@ -78,14 +78,14 @@ typedef struct UParseError { /** * Textual context before the error. Null-terminated. The empty * string if not supported by parser. - * @stable ICU 2.0 + * @stable ICU 2.0 */ UChar preContext[U_PARSE_CONTEXT_LEN]; /** * The error itself and/or textual context after the error. * Null-terminated. The empty string if not supported by parser. - * @stable ICU 2.0 + * @stable ICU 2.0 */ UChar postContext[U_PARSE_CONTEXT_LEN]; diff --git a/deps/icu-small/source/common/unicode/parsepos.h b/deps/icu-small/source/common/unicode/parsepos.h index d6129fd4f1604f..73945f5f97bcbd 100644 --- a/deps/icu-small/source/common/unicode/parsepos.h +++ b/deps/icu-small/source/common/unicode/parsepos.h @@ -24,14 +24,14 @@ #include "unicode/uobject.h" - + U_NAMESPACE_BEGIN /** * \file * \brief C++ API: Canonical Iterator */ -/** +/** * ParsePosition is a simple class used by Format * and its subclasses to keep track of the current position during parsing. * The parseObject method in the various Format @@ -100,14 +100,14 @@ class U_COMMON_API ParsePosition : public UObject { * @return true if the two parse positions are equal, false otherwise. * @stable ICU 2.0 */ - inline UBool operator==(const ParsePosition& that) const; + inline bool operator==(const ParsePosition& that) const; /** * Equality operator. * @return true if the two parse positions are not equal, false otherwise. * @stable ICU 2.0 */ - inline UBool operator!=(const ParsePosition& that) const; + inline bool operator!=(const ParsePosition& that) const; /** * Clone this object. @@ -166,7 +166,7 @@ class U_COMMON_API ParsePosition : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: /** @@ -192,7 +192,7 @@ ParsePosition::operator=(const ParsePosition& copy) return *this; } -inline UBool +inline bool ParsePosition::operator==(const ParsePosition& copy) const { if(index != copy.index || errorIndex != copy.errorIndex) @@ -201,7 +201,7 @@ ParsePosition::operator==(const ParsePosition& copy) const return true; } -inline UBool +inline bool ParsePosition::operator!=(const ParsePosition& copy) const { return !operator==(copy); diff --git a/deps/icu-small/source/common/unicode/platform.h b/deps/icu-small/source/common/unicode/platform.h index 0dc91234006650..b7e514442cedba 100644 --- a/deps/icu-small/source/common/unicode/platform.h +++ b/deps/icu-small/source/common/unicode/platform.h @@ -410,7 +410,7 @@ #endif /** - * \def U_HAVE_DEBUG_LOCATION_NEW + * \def U_HAVE_DEBUG_LOCATION_NEW * Define this to define the MFC debug version of the operator new. * * @stable ICU 3.4 @@ -814,13 +814,13 @@ namespace std { /* Use the predefined value. */ #elif defined(U_STATIC_IMPLEMENTATION) # define U_EXPORT -#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \ - UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport)) +#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllexport__) && \ + UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllimport__)) # define U_EXPORT __declspec(dllexport) #elif defined(__GNUC__) # define U_EXPORT __attribute__((visibility("default"))) #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ - || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) + || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) # define U_EXPORT __global /*#elif defined(__HP_aCC) || defined(__HP_cc) # define U_EXPORT __declspec(dllexport)*/ @@ -839,12 +839,12 @@ namespace std { #ifdef U_IMPORT /* Use the predefined value. */ -#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \ - UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport)) +#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllexport__) && \ + UPRV_HAS_DECLSPEC_ATTRIBUTE(__dllimport__)) /* Windows needs to export/import data. */ # define U_IMPORT __declspec(dllimport) #else -# define U_IMPORT +# define U_IMPORT #endif /** diff --git a/deps/icu-small/source/common/unicode/putil.h b/deps/icu-small/source/common/unicode/putil.h index f8c510dacc75fc..500c21252fc2d7 100644 --- a/deps/icu-small/source/common/unicode/putil.h +++ b/deps/icu-small/source/common/unicode/putil.h @@ -43,7 +43,7 @@ */ /** - * Return the ICU data directory. + * Return the ICU data directory. * The data directory is where common format ICU data files (.dat files) * are loaded from. Note that normal use of the built-in ICU * facilities does not require loading of an external data file; @@ -56,21 +56,21 @@ * If a data directory was specified at ICU build time * * \code - * #define ICU_DATA_DIR "path" + * #define ICU_DATA_DIR "path" * \endcode * use that, * otherwise no data directory is available. * * @return the data directory, or an empty string ("") if no data directory has * been specified. - * + * * @stable ICU 2.0 */ U_CAPI const char* U_EXPORT2 u_getDataDirectory(void); -/** - * Set the ICU data directory. +/** + * Set the ICU data directory. * The data directory is where common format ICU data files (.dat files) * are loaded from. Note that normal use of the built-in ICU * facilities does not require loading of an external data file; @@ -98,7 +98,7 @@ U_CAPI void U_EXPORT2 u_setDataDirectory(const char *directory); * * @return the time zone data override directory. * @internal - */ + */ U_CAPI const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status); /** diff --git a/deps/icu-small/source/common/unicode/rbbi.h b/deps/icu-small/source/common/unicode/rbbi.h index 65117f616cdf5b..0ce93819f54cbf 100644 --- a/deps/icu-small/source/common/unicode/rbbi.h +++ b/deps/icu-small/source/common/unicode/rbbi.h @@ -260,7 +260,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * same class, have the same behavior, and iterate over the same text. * @stable ICU 2.0 */ - virtual UBool operator==(const BreakIterator& that) const; + virtual bool operator==(const BreakIterator& that) const override; /** * Not-equal operator. If operator== returns true, this returns false, @@ -269,7 +269,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return true if both BreakIterators are not same. * @stable ICU 2.0 */ - inline UBool operator!=(const BreakIterator& that) const; + inline bool operator!=(const BreakIterator& that) const; /** * Returns a newly-constructed RuleBasedBreakIterator with the same @@ -281,7 +281,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return a newly-constructed RuleBasedBreakIterator * @stable ICU 2.0 */ - virtual RuleBasedBreakIterator* clone() const; + virtual RuleBasedBreakIterator* clone() const override; /** * Compute a hash code for this BreakIterator @@ -326,7 +326,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return An iterator over the text being analyzed. * @stable ICU 2.0 */ - virtual CharacterIterator& getText(void) const; + virtual CharacterIterator& getText(void) const override; /** @@ -343,7 +343,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * UText was provided, it will always be returned. * @stable ICU 3.4 */ - virtual UText *getUText(UText *fillIn, UErrorCode &status) const; + virtual UText *getUText(UText *fillIn, UErrorCode &status) const override; /** * Set the iterator to analyze a new piece of text. This function resets @@ -352,7 +352,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * takes ownership of the character iterator. The caller MUST NOT delete it! * @stable ICU 2.0 */ - virtual void adoptText(CharacterIterator* newText); + virtual void adoptText(CharacterIterator* newText) override; /** * Set the iterator to analyze a new piece of text. This function resets @@ -365,7 +365,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @param newText The text to analyze. * @stable ICU 2.0 */ - virtual void setText(const UnicodeString& newText); + virtual void setText(const UnicodeString& newText) override; /** * Reset the break iterator to operate over the text represented by @@ -380,21 +380,21 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @param status Receives any error codes. * @stable ICU 3.4 */ - virtual void setText(UText *text, UErrorCode &status); + virtual void setText(UText *text, UErrorCode &status) override; /** * Sets the current iteration position to the beginning of the text, position zero. * @return The offset of the beginning of the text, zero. * @stable ICU 2.0 */ - virtual int32_t first(void); + virtual int32_t first(void) override; /** * Sets the current iteration position to the end of the text. * @return The text's past-the-end offset. * @stable ICU 2.0 */ - virtual int32_t last(void); + virtual int32_t last(void) override; /** * Advances the iterator either forward or backward the specified number of steps. @@ -406,21 +406,21 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * the current one. * @stable ICU 2.0 */ - virtual int32_t next(int32_t n); + virtual int32_t next(int32_t n) override; /** * Advances the iterator to the next boundary position. * @return The position of the first boundary after this one. * @stable ICU 2.0 */ - virtual int32_t next(void); + virtual int32_t next(void) override; /** * Moves the iterator backwards, to the last boundary preceding this one. * @return The position of the last boundary position preceding this one. * @stable ICU 2.0 */ - virtual int32_t previous(void); + virtual int32_t previous(void) override; /** * Sets the iterator to refer to the first boundary position following @@ -429,7 +429,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return The position of the first break after the current position. * @stable ICU 2.0 */ - virtual int32_t following(int32_t offset); + virtual int32_t following(int32_t offset) override; /** * Sets the iterator to refer to the last boundary position before the @@ -438,7 +438,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return The position of the last boundary before the starting position. * @stable ICU 2.0 */ - virtual int32_t preceding(int32_t offset); + virtual int32_t preceding(int32_t offset) override; /** * Returns true if the specified position is a boundary position. As a side @@ -448,7 +448,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return True if "offset" is a boundary position. * @stable ICU 2.0 */ - virtual UBool isBoundary(int32_t offset); + virtual UBool isBoundary(int32_t offset) override; /** * Returns the current iteration position. Note that UBRK_DONE is never @@ -458,7 +458,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @return The current iteration position. * @stable ICU 2.0 */ - virtual int32_t current(void) const; + virtual int32_t current(void) const override; /** @@ -492,7 +492,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @see UWordBreak * @stable ICU 2.2 */ - virtual int32_t getRuleStatus() const; + virtual int32_t getRuleStatus() const override; /** * Get the status (tag) values from the break rule(s) that determined the boundary @@ -517,7 +517,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * @see getRuleStatus * @stable ICU 3.0 */ - virtual int32_t getRuleStatusVec(int32_t *fillInVec, int32_t capacity, UErrorCode &status); + virtual int32_t getRuleStatusVec(int32_t *fillInVec, int32_t capacity, UErrorCode &status) override; /** * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. @@ -530,7 +530,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Returns the class ID for this class. This is useful only for @@ -574,7 +574,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { */ virtual RuleBasedBreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize, - UErrorCode &status); + UErrorCode &status) override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -621,7 +621,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { * * @stable ICU 49 */ - virtual RuleBasedBreakIterator &refreshInputText(UText *input, UErrorCode &status); + virtual RuleBasedBreakIterator &refreshInputText(UText *input, UErrorCode &status) override; private: @@ -719,7 +719,7 @@ class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator { // //------------------------------------------------------------------------------ -inline UBool RuleBasedBreakIterator::operator!=(const BreakIterator& that) const { +inline bool RuleBasedBreakIterator::operator!=(const BreakIterator& that) const { return !operator==(that); } diff --git a/deps/icu-small/source/common/unicode/rep.h b/deps/icu-small/source/common/unicode/rep.h index f66c2ac060e4a8..6dd4530647e628 100644 --- a/deps/icu-small/source/common/unicode/rep.h +++ b/deps/icu-small/source/common/unicode/rep.h @@ -23,10 +23,10 @@ #include "unicode/uobject.h" /** - * \file + * \file * \brief C++ API: Replaceable String */ - + U_NAMESPACE_BEGIN class UnicodeString; @@ -87,7 +87,7 @@ class U_COMMON_API Replaceable : public UObject { * Returns the number of 16-bit code units in the text. * @return number of 16-bit code units in text * @stable ICU 1.8 - */ + */ inline int32_t length() const; /** @@ -114,7 +114,7 @@ class U_COMMON_API Replaceable : public UObject { inline UChar32 char32At(int32_t offset) const; /** - * Copies characters in the range [start, limit) + * Copies characters in the range [start, limit) * into the UnicodeString target. * @param start offset of first character which will be copied * @param limit offset immediately following the last character to @@ -144,7 +144,7 @@ class U_COMMON_API Replaceable : public UObject { * @param limit the ending index, exclusive; start <= limit * <= length(). * @param text the text to replace characters start - * to limit - 1 + * to limit - 1 * @stable ICU 2.0 */ virtual void handleReplaceBetween(int32_t start, @@ -164,7 +164,7 @@ class U_COMMON_API Replaceable : public UObject { * Copies a substring of this object, retaining metadata. * This method is used to duplicate or reorder substrings. * The destination index must not overlap the source range. - * + * * @param start the beginning index, inclusive; 0 <= start <= * limit. * @param limit the ending index, exclusive; start <= limit <= @@ -224,7 +224,7 @@ class U_COMMON_API Replaceable : public UObject { /** * Virtual version of length(). * @stable ICU 2.4 - */ + */ virtual int32_t getLength() const = 0; /** diff --git a/deps/icu-small/source/common/unicode/resbund.h b/deps/icu-small/source/common/unicode/resbund.h index 63ffa506e77eec..7441592a0f2d1c 100644 --- a/deps/icu-small/source/common/unicode/resbund.h +++ b/deps/icu-small/source/common/unicode/resbund.h @@ -58,22 +58,22 @@ #include "unicode/locid.h" /** - * \file + * \file * \brief C++ API: Resource Bundle */ - + U_NAMESPACE_BEGIN /** * A class representing a collection of resource information pertaining to a given - * locale. A resource bundle provides a way of accessing locale- specfic information in + * locale. A resource bundle provides a way of accessing locale- specific information in * a data file. You create a resource bundle that manages the resources for a given * locale and then ask it for individual resources. *

    * Resource bundles in ICU4C are currently defined using text files which conform to the following - * BNF definition. + * BNF definition. * More on resource bundle concepts and syntax can be found in the - * Users Guide. + * Users Guide. *

    * * The ResourceBundle class is not suitable for subclassing. @@ -85,8 +85,8 @@ class U_COMMON_API ResourceBundle : public UObject { /** * Constructor * - * @param packageName The packageName and locale together point to an ICU udata object, - * as defined by udata_open( packageName, "res", locale, err) + * @param packageName The packageName and locale together point to an ICU udata object, + * as defined by udata_open( packageName, "res", locale, err) * or equivalent. Typically, packageName will refer to a (.dat) file, or to * a package registered with udata_setAppData(). Using a full file or directory * pathname for packageName is deprecated. @@ -115,8 +115,8 @@ class U_COMMON_API ResourceBundle : public UObject { /** * Construct a resource bundle for the default bundle in the specified package. * - * @param packageName The packageName and locale together point to an ICU udata object, - * as defined by udata_open( packageName, "res", locale, err) + * @param packageName The packageName and locale together point to an ICU udata object, + * as defined by udata_open( packageName, "res", locale, err) * or equivalent. Typically, packageName will refer to a (.dat) file, or to * a package registered with udata_setAppData(). Using a full file or directory * pathname for packageName is deprecated. @@ -138,8 +138,8 @@ class U_COMMON_API ResourceBundle : public UObject { * Standard constructor, constructs a resource bundle for the locale-specific * bundle in the specified package. * - * @param packageName The packageName and locale together point to an ICU udata object, - * as defined by udata_open( packageName, "res", locale, err) + * @param packageName The packageName and locale together point to an ICU udata object, + * as defined by udata_open( packageName, "res", locale, err) * or equivalent. Typically, packageName will refer to a (.dat) file, or to * a package registered with udata_setAppData(). Using a full file or directory * pathname for packageName is deprecated. @@ -474,7 +474,7 @@ class U_COMMON_API ResourceBundle : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/common/unicode/schriter.h b/deps/icu-small/source/common/unicode/schriter.h index 4925ecfe444280..9dac099967795b 100644 --- a/deps/icu-small/source/common/unicode/schriter.h +++ b/deps/icu-small/source/common/unicode/schriter.h @@ -28,10 +28,10 @@ #include "unicode/uchriter.h" /** - * \file + * \file * \brief C++ API: String Character Iterator */ - + U_NAMESPACE_BEGIN /** * A concrete subclass of CharacterIterator that iterates over the @@ -124,7 +124,7 @@ class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator { * same string and are pointing at the same character. * @stable ICU 2.0 */ - virtual UBool operator==(const ForwardCharacterIterator& that) const; + virtual bool operator==(const ForwardCharacterIterator& that) const override; /** * Returns a new StringCharacterIterator referring to the same @@ -133,7 +133,7 @@ class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator { * @return the newly cloned object. * @stable ICU 2.0 */ - virtual StringCharacterIterator* clone() const; + virtual StringCharacterIterator* clone() const override; /** * Sets the iterator to iterate over the provided string. @@ -149,14 +149,14 @@ class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator { * @param result Receives a copy of the text under iteration. * @stable ICU 2.0 */ - virtual void getText(UnicodeString& result); + virtual void getText(UnicodeString& result) override; /** * Return a class ID for this object (not really public) * @return a class ID for this object. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return a class ID for this class (not really public) diff --git a/deps/icu-small/source/common/unicode/strenum.h b/deps/icu-small/source/common/unicode/strenum.h index 5d1600156e32e9..1d1b37940a87d9 100644 --- a/deps/icu-small/source/common/unicode/strenum.h +++ b/deps/icu-small/source/common/unicode/strenum.h @@ -20,10 +20,10 @@ #include "unicode/unistr.h" /** - * \file + * \file * \brief C++ API: String Enumeration */ - + U_NAMESPACE_BEGIN /** @@ -56,9 +56,9 @@ U_NAMESPACE_BEGIN * ICU 2.8 adds some default implementations and helper functions * for subclasses. * - * @stable ICU 2.4 + * @stable ICU 2.4 */ -class U_COMMON_API StringEnumeration : public UObject { +class U_COMMON_API StringEnumeration : public UObject { public: /** * Destructor. @@ -127,7 +127,7 @@ class U_COMMON_API StringEnumeration : public UObject { * @param resultLength a pointer to receive the length, can be NULL. * @return a pointer to the string, or NULL. * - * @stable ICU 2.4 + * @stable ICU 2.4 */ virtual const char* next(int32_t *resultLength, UErrorCode& status); @@ -149,10 +149,10 @@ class U_COMMON_API StringEnumeration : public UObject { * and handles the conversion. * * @param status the error code. - * @param resultLength a ponter to receive the length, can be NULL. + * @param resultLength a pointer to receive the length, can be NULL. * @return a pointer to the string, or NULL. * - * @stable ICU 2.4 + * @stable ICU 2.4 */ virtual const char16_t* unext(int32_t *resultLength, UErrorCode& status); @@ -174,7 +174,7 @@ class U_COMMON_API StringEnumeration : public UObject { * @param status the error code. * @return a pointer to the string, or NULL. * - * @stable ICU 2.4 + * @stable ICU 2.4 */ virtual const UnicodeString* snext(UErrorCode& status); @@ -188,7 +188,7 @@ class U_COMMON_API StringEnumeration : public UObject { * * @param status the error code. * - * @stable ICU 2.4 + * @stable ICU 2.4 */ virtual void reset(UErrorCode& status) = 0; @@ -197,17 +197,17 @@ class U_COMMON_API StringEnumeration : public UObject { * * @param that The other string enumeration to compare this object to * @return true if the enumerations are equal. false if not. - * @stable ICU 3.6 + * @stable ICU 3.6 */ - virtual UBool operator==(const StringEnumeration& that)const; + virtual bool operator==(const StringEnumeration& that)const; /** * Compares this enumeration to other to check if both are not equal * * @param that The other string enumeration to compare this object to * @return true if the enumerations are equal. false if not. - * @stable ICU 3.6 + * @stable ICU 3.6 */ - virtual UBool operator!=(const StringEnumeration& that)const; + virtual bool operator!=(const StringEnumeration& that)const; protected: /** diff --git a/deps/icu-small/source/common/unicode/stringpiece.h b/deps/icu-small/source/common/unicode/stringpiece.h index c145915fa953b9..df7f36089dd7c5 100644 --- a/deps/icu-small/source/common/unicode/stringpiece.h +++ b/deps/icu-small/source/common/unicode/stringpiece.h @@ -23,7 +23,7 @@ #define __STRINGPIECE_H__ /** - * \file + * \file * \brief C++ API: StringPiece: Read-only byte string wrapper class. */ @@ -222,7 +222,7 @@ class U_COMMON_API StringPiece : public UMemory { /** * Reset the stringpiece to refer to new data. - * @param str a pointer to a NUL-terminated string. + * @param str a pointer to a NUL-terminated string. * @stable ICU 4.8 */ void set(const char* str); @@ -322,7 +322,7 @@ class U_COMMON_API StringPiece : public UMemory { * @return true if the string data is equal * @stable ICU 4.8 */ -U_EXPORT UBool U_EXPORT2 +U_EXPORT UBool U_EXPORT2 operator==(const StringPiece& x, const StringPiece& y); /** @@ -332,7 +332,7 @@ operator==(const StringPiece& x, const StringPiece& y); * @return true if the string data is not equal * @stable ICU 4.8 */ -inline UBool operator!=(const StringPiece& x, const StringPiece& y) { +inline bool operator!=(const StringPiece& x, const StringPiece& y) { return !(x == y); } diff --git a/deps/icu-small/source/common/unicode/stringtriebuilder.h b/deps/icu-small/source/common/unicode/stringtriebuilder.h index efd2d49206ca2d..b7a9b23d22bf35 100644 --- a/deps/icu-small/source/common/unicode/stringtriebuilder.h +++ b/deps/icu-small/source/common/unicode/stringtriebuilder.h @@ -204,8 +204,8 @@ class U_COMMON_API StringTrieBuilder : public UObject { // Handles node==NULL. static inline int32_t hashCode(const Node *node) { return node==NULL ? 0 : node->hashCode(); } // Base class operator==() compares the actual class types. - virtual UBool operator==(const Node &other) const; - inline UBool operator!=(const Node &other) const { return !operator==(other); } + virtual bool operator==(const Node &other) const; + inline bool operator!=(const Node &other) const { return !operator==(other); } /** * Traverses the Node graph and numbers branch edges, with rightmost edges first. * This is to avoid writing a duplicate node twice. @@ -265,8 +265,8 @@ class U_COMMON_API StringTrieBuilder : public UObject { class FinalValueNode : public Node { public: FinalValueNode(int32_t v) : Node(0x111111u*37u+v), value(v) {} - virtual UBool operator==(const Node &other) const; - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual void write(StringTrieBuilder &builder) override; protected: int32_t value; }; @@ -275,12 +275,12 @@ class U_COMMON_API StringTrieBuilder : public UObject { // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API, // it is needed for layout of other objects. /** - * @internal + * @internal */ class ValueNode : public Node { public: ValueNode(int32_t initialHash) : Node(initialHash), hasValue(false), value(0) {} - virtual UBool operator==(const Node &other) const; + virtual bool operator==(const Node &other) const override; void setValue(int32_t v) { hasValue=true; value=v; @@ -292,16 +292,16 @@ class U_COMMON_API StringTrieBuilder : public UObject { }; #ifndef U_HIDE_INTERNAL_API - /** - * @internal + /** + * @internal */ class IntermediateValueNode : public ValueNode { public: IntermediateValueNode(int32_t v, Node *nextNode) : ValueNode(0x222222u*37u+hashCode(nextNode)), next(nextNode) { setValue(v); } - virtual UBool operator==(const Node &other) const; - virtual int32_t markRightEdgesFirst(int32_t edgeNumber); - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual int32_t markRightEdgesFirst(int32_t edgeNumber) override; + virtual void write(StringTrieBuilder &builder) override; protected: Node *next; }; @@ -310,15 +310,15 @@ class U_COMMON_API StringTrieBuilder : public UObject { // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API, // it is needed for layout of other objects. /** - * @internal + * @internal */ class LinearMatchNode : public ValueNode { public: LinearMatchNode(int32_t len, Node *nextNode) : ValueNode((0x333333u*37u+len)*37u+hashCode(nextNode)), length(len), next(nextNode) {} - virtual UBool operator==(const Node &other) const; - virtual int32_t markRightEdgesFirst(int32_t edgeNumber); + virtual bool operator==(const Node &other) const override; + virtual int32_t markRightEdgesFirst(int32_t edgeNumber) override; protected: int32_t length; Node *next; @@ -326,7 +326,7 @@ class U_COMMON_API StringTrieBuilder : public UObject { #ifndef U_HIDE_INTERNAL_API /** - * @internal + * @internal */ class BranchNode : public Node { public: @@ -336,14 +336,14 @@ class U_COMMON_API StringTrieBuilder : public UObject { }; /** - * @internal + * @internal */ class ListBranchNode : public BranchNode { public: ListBranchNode() : BranchNode(0x444444), length(0) {} - virtual UBool operator==(const Node &other) const; - virtual int32_t markRightEdgesFirst(int32_t edgeNumber); - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual int32_t markRightEdgesFirst(int32_t edgeNumber) override; + virtual void write(StringTrieBuilder &builder) override; // Adds a unit with a final value. void add(int32_t c, int32_t value) { units[length]=(char16_t)c; @@ -368,7 +368,7 @@ class U_COMMON_API StringTrieBuilder : public UObject { }; /** - * @internal + * @internal */ class SplitBranchNode : public BranchNode { public: @@ -376,9 +376,9 @@ class U_COMMON_API StringTrieBuilder : public UObject { : BranchNode(((0x555555u*37u+middleUnit)*37u+ hashCode(lessThanNode))*37u+hashCode(greaterOrEqualNode)), unit(middleUnit), lessThan(lessThanNode), greaterOrEqual(greaterOrEqualNode) {} - virtual UBool operator==(const Node &other) const; - virtual int32_t markRightEdgesFirst(int32_t edgeNumber); - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual int32_t markRightEdgesFirst(int32_t edgeNumber) override; + virtual void write(StringTrieBuilder &builder) override; protected: char16_t unit; Node *lessThan; @@ -392,9 +392,9 @@ class U_COMMON_API StringTrieBuilder : public UObject { BranchHeadNode(int32_t len, Node *subNode) : ValueNode((0x666666u*37u+len)*37u+hashCode(subNode)), length(len), next(subNode) {} - virtual UBool operator==(const Node &other) const; - virtual int32_t markRightEdgesFirst(int32_t edgeNumber); - virtual void write(StringTrieBuilder &builder); + virtual bool operator==(const Node &other) const override; + virtual int32_t markRightEdgesFirst(int32_t edgeNumber) override; + virtual void write(StringTrieBuilder &builder) override; protected: int32_t length; Node *next; // A branch sub-node. diff --git a/deps/icu-small/source/common/unicode/symtable.h b/deps/icu-small/source/common/unicode/symtable.h index f5a77b01eced80..b64d877f97430f 100644 --- a/deps/icu-small/source/common/unicode/symtable.h +++ b/deps/icu-small/source/common/unicode/symtable.h @@ -19,11 +19,11 @@ #include "unicode/uobject.h" /** - * \file + * \file * \brief C++ API: An interface that defines both lookup protocol and parsing of * symbolic names. */ - + U_NAMESPACE_BEGIN class ParsePosition; diff --git a/deps/icu-small/source/common/unicode/ubidi.h b/deps/icu-small/source/common/unicode/ubidi.h index 63d0e45cb7f3c5..536f4172bc202c 100644 --- a/deps/icu-small/source/common/unicode/ubidi.h +++ b/deps/icu-small/source/common/unicode/ubidi.h @@ -84,7 +84,7 @@ * *

      * \code
    - *#include "unicode/ubidi.h"
    + *#include 
      *
      *typedef enum {
      *     styleNormal=0, styleSelected=1,
    @@ -136,11 +136,11 @@
      *         int styleLimit;
      *
      *         for(i=0; ilimit) { styleLimit=limit; }
      *                 renderRun(text, start, styleLimit,
    - *                           direction, styleRun[i].style);
    + *                           direction, styleRuns[i].style);
      *                 if(styleLimit==limit) { break; }
      *                 start=styleLimit;
      *             }
    @@ -150,14 +150,14 @@
      *
      *         for(i=styleRunCount-1; i>=0; --i) {
      *             if(i>0) {
    - *                 styleStart=styleRun[i-1].limit;
    + *                 styleStart=styleRuns[i-1].limit;
      *             } else {
      *                 styleStart=0;
      *             }
      *             if(limit>=styleStart) {
      *                 if(styleStart
      * Code snippets illustrating the use of the Break Iterator APIs
      * are available in the ICU User Guide,
    - * http://icu-project.org/userguide/boundaryAnalysis.html
    + * https://unicode-org.github.io/icu/userguide/boundaryanalysis/
      * and in the sample program icu/source/samples/break/break.cpp
      */
     
    diff --git a/deps/icu-small/source/common/unicode/ucat.h b/deps/icu-small/source/common/unicode/ucat.h
    index a177639a76bfcb..93850348fff318 100644
    --- a/deps/icu-small/source/common/unicode/ucat.h
    +++ b/deps/icu-small/source/common/unicode/ucat.h
    @@ -50,7 +50,7 @@
      *     1%5  { "Good afternoon." }
      *     1%7  { "Good evening." }
      *     1%8  { "Good night." }
    - *
    + * 
      *     4%14 { "Please " }
      *     4%19 { "Thank you." }
      *     4%20 { "Sincerely," }
    @@ -67,7 +67,7 @@ U_CDECL_BEGIN
     
     /**
      * An ICU message catalog descriptor, analogous to nl_catd.
    - *
    + * 
      * @stable ICU 2.6
      */
     typedef UResourceBundle* u_nl_catd;
    @@ -100,7 +100,7 @@ typedef UResourceBundle* u_nl_catd;
      * is responsible for calling u_catclose() to close the message
      * catalog. If the ec parameter indicates failure, then NULL will be
      * returned.
    - *
    + * 
      * @stable ICU 2.6
      */
     U_CAPI u_nl_catd U_EXPORT2
    @@ -111,7 +111,7 @@ u_catopen(const char* name, const char* locale, UErrorCode* ec);
      *
      * @param catd a message catalog descriptor to be closed. May be NULL,
      * in which case no action is taken.
    - *
    + * 
      * @stable ICU 2.6
      */
     U_CAPI void U_EXPORT2
    @@ -146,7 +146,7 @@ u_catclose(u_nl_catd catd);
      * for any reason, then s is returned.  This includes the situation in
      * which ec indicates a failing error code upon entry to this
      * function.
    - *
    + * 
      * @stable ICU 2.6
      */
     U_CAPI const UChar* U_EXPORT2
    diff --git a/deps/icu-small/source/common/unicode/uchar.h b/deps/icu-small/source/common/unicode/uchar.h
    index 1e0f82e706c482..253e6db173f6e5 100644
    --- a/deps/icu-small/source/common/unicode/uchar.h
    +++ b/deps/icu-small/source/common/unicode/uchar.h
    @@ -60,7 +60,7 @@ U_CDECL_BEGIN
      * @see u_getUnicodeVersion
      * @stable ICU 2.0
      */
    -#define U_UNICODE_VERSION "13.0"
    +#define U_UNICODE_VERSION "14.0"
     
     /**
      * \file
    @@ -77,7 +77,7 @@ U_CDECL_BEGIN
      *
      * For more information see
      * "About the Unicode Character Database" (http://www.unicode.org/ucd/)
    - * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
    + * and the ICU User Guide chapter on Properties (https://unicode-org.github.io/icu/userguide/strings/properties).
      *
      * Many properties are accessible via generic functions that take a UProperty selector.
      * - u_hasBinaryProperty() returns a binary value (true/false) per property and code point.
    @@ -483,12 +483,63 @@ typedef enum UProperty {
          * @stable ICU 62
          */
         UCHAR_EXTENDED_PICTOGRAPHIC=64,
    +#ifndef U_HIDE_DRAFT_API
    +    /**
    +     * Binary property of strings Basic_Emoji.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_BASIC_EMOJI=65,
    +    /**
    +     * Binary property of strings Emoji_Keycap_Sequence.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_EMOJI_KEYCAP_SEQUENCE=66,
    +    /**
    +     * Binary property of strings RGI_Emoji_Modifier_Sequence.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE=67,
    +    /**
    +     * Binary property of strings RGI_Emoji_Flag_Sequence.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_RGI_EMOJI_FLAG_SEQUENCE=68,
    +    /**
    +     * Binary property of strings RGI_Emoji_Tag_Sequence.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_RGI_EMOJI_TAG_SEQUENCE=69,
    +    /**
    +     * Binary property of strings RGI_Emoji_ZWJ_Sequence.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_RGI_EMOJI_ZWJ_SEQUENCE=70,
    +    /**
    +     * Binary property of strings RGI_Emoji.
    +     * See https://www.unicode.org/reports/tr51/#Emoji_Sets
    +     *
    +     * @draft ICU 70
    +     */
    +    UCHAR_RGI_EMOJI=71,
    +#endif  // U_HIDE_DRAFT_API
     #ifndef U_HIDE_DEPRECATED_API
         /**
          * One more than the last constant for binary Unicode properties.
          * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
          */
    -    UCHAR_BINARY_LIMIT,
    +    UCHAR_BINARY_LIMIT=72,
     #endif  // U_HIDE_DEPRECATED_API
     
         /** Enumerated property Bidi_Class.
    @@ -1807,6 +1858,33 @@ enum UBlockCode {
         /** @stable ICU 66 */
         UBLOCK_YEZIDI = 308, /*[10E80]*/
     
    +    // New blocks in Unicode 14.0
    +
    +    /** @stable ICU 70 */
    +    UBLOCK_ARABIC_EXTENDED_B = 309, /*[0870]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_CYPRO_MINOAN = 310, /*[12F90]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_ETHIOPIC_EXTENDED_B = 311, /*[1E7E0]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_KANA_EXTENDED_B = 312, /*[1AFF0]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_LATIN_EXTENDED_F = 313, /*[10780]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_LATIN_EXTENDED_G = 314, /*[1DF00]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_OLD_UYGHUR = 315, /*[10F70]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_TANGSA = 316, /*[16A70]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_TOTO = 317, /*[1E290]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A = 318, /*[11AB0]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_VITHKUQI = 319, /*[10570]*/
    +    /** @stable ICU 70 */
    +    UBLOCK_ZNAMENNY_MUSICAL_NOTATION = 320, /*[1CF00]*/
    +
     #ifndef U_HIDE_DEPRECATED_API
         /**
          * One more than the highest normal UBlockCode value.
    @@ -1814,7 +1892,7 @@ enum UBlockCode {
          *
          * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
          */
    -    UBLOCK_COUNT = 309,
    +    UBLOCK_COUNT = 321,
     #endif  // U_HIDE_DEPRECATED_API
     
         /** @stable ICU 2.0 */
    @@ -2106,6 +2184,9 @@ typedef enum UJoiningGroup {
         U_JG_HANIFI_ROHINGYA_KINNA_YA,  /**< @stable ICU 62 */
         U_JG_HANIFI_ROHINGYA_PA,  /**< @stable ICU 62 */
     
    +    U_JG_THIN_YEH,  /**< @stable ICU 70 */
    +    U_JG_VERTICAL_TAIL,  /**< @stable ICU 70 */
    +
     #ifndef U_HIDE_DEPRECATED_API
         /**
          * One more than the highest normal UJoiningGroup value.
    @@ -2585,10 +2666,10 @@ typedef enum UVerticalOrientation {
      *
      * @param c Code point to test.
      * @param which UProperty selector constant, identifies which binary property to check.
    - *        Must be UCHAR_BINARY_START<=whichUTS #51 Unicode Emoji
    + * defines several properties of strings.
    + *
    + * @param s String to test.
    + * @param length Length of the string, or negative if NUL-terminated.
    + * @param which UProperty selector constant, identifies which binary property to check.
    + *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
    + * @return true or false according to the binary Unicode property value for the string.
    + *         Also false if 'which' is out of bounds or if the Unicode version
    + *         does not have data for the property at all.
    + *
    + * @see UProperty
    + * @see u_hasBinaryProperty
    + * @see u_getBinaryPropertySet
    + * @see u_getIntPropertyValue
    + * @see u_getUnicodeVersion
    + * @draft ICU 70
    + */
    +U_CAPI UBool U_EXPORT2
    +u_stringHasBinaryProperty(const UChar *s, int32_t length, UProperty which);
    +
    +#endif  // U_HIDE_DRAFT_API
    +
     /**
      * Returns a frozen USet for a binary property.
      * The library retains ownership over the returned object.
    @@ -3834,7 +3946,7 @@ u_isJavaIDPart(UChar32 c);
      * Full case mappings are applied by the string case mapping functions,
      * see ustring.h and the UnicodeString class.
      * See also the User Guide chapter on C/POSIX migration:
    - * http://icu-project.org/userguide/posix.html#case_mappings
    + * https://unicode-org.github.io/icu/userguide/icu/posix#case-mappings
      *
      * @param c the code point to be mapped
      * @return the Simple_Lowercase_Mapping of the code point, if any;
    @@ -3859,7 +3971,7 @@ u_tolower(UChar32 c);
      * Full case mappings are applied by the string case mapping functions,
      * see ustring.h and the UnicodeString class.
      * See also the User Guide chapter on C/POSIX migration:
    - * http://icu-project.org/userguide/posix.html#case_mappings
    + * https://unicode-org.github.io/icu/userguide/icu/posix#case-mappings
      *
      * @param c the code point to be mapped
      * @return the Simple_Uppercase_Mapping of the code point, if any;
    @@ -3884,7 +3996,7 @@ u_toupper(UChar32 c);
      * Full case mappings are applied by the string case mapping functions,
      * see ustring.h and the UnicodeString class.
      * See also the User Guide chapter on C/POSIX migration:
    - * http://icu-project.org/userguide/posix.html#case_mappings
    + * https://unicode-org.github.io/icu/userguide/icu/posix#case-mappings
      *
      * @param c the code point to be mapped
      * @return the Simple_Titlecase_Mapping of the code point, if any;
    @@ -3908,7 +4020,7 @@ u_totitle(UChar32 c);
      * Full case mappings are applied by the string case mapping functions,
      * see ustring.h and the UnicodeString class.
      * See also the User Guide chapter on C/POSIX migration:
    - * http://icu-project.org/userguide/posix.html#case_mappings
    + * https://unicode-org.github.io/icu/userguide/icu/posix#case-mappings
      *
      * @param c the code point to be mapped
      * @param options Either U_FOLD_CASE_DEFAULT or U_FOLD_CASE_EXCLUDE_SPECIAL_I
    diff --git a/deps/icu-small/source/common/unicode/ucharstriebuilder.h b/deps/icu-small/source/common/unicode/ucharstriebuilder.h
    index 15657702f9d024..e0cb0acdc538e6 100644
    --- a/deps/icu-small/source/common/unicode/ucharstriebuilder.h
    +++ b/deps/icu-small/source/common/unicode/ucharstriebuilder.h
    @@ -138,41 +138,41 @@ class U_COMMON_API UCharsTrieBuilder : public StringTrieBuilder {
     
         void buildUChars(UStringTrieBuildOption buildOption, UErrorCode &errorCode);
     
    -    virtual int32_t getElementStringLength(int32_t i) const;
    -    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const;
    -    virtual int32_t getElementValue(int32_t i) const;
    +    virtual int32_t getElementStringLength(int32_t i) const override;
    +    virtual char16_t getElementUnit(int32_t i, int32_t unitIndex) const override;
    +    virtual int32_t getElementValue(int32_t i) const override;
     
    -    virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t unitIndex) const;
    +    virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t unitIndex) const override;
     
    -    virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t unitIndex) const;
    -    virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const;
    -    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const;
    +    virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t unitIndex) const override;
    +    virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const override;
    +    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const override;
     
    -    virtual UBool matchNodesCanHaveValues() const { return true; }
    +    virtual UBool matchNodesCanHaveValues() const override { return true; }
     
    -    virtual int32_t getMaxBranchLinearSubNodeLength() const { return UCharsTrie::kMaxBranchLinearSubNodeLength; }
    -    virtual int32_t getMinLinearMatch() const { return UCharsTrie::kMinLinearMatch; }
    -    virtual int32_t getMaxLinearMatchLength() const { return UCharsTrie::kMaxLinearMatchLength; }
    +    virtual int32_t getMaxBranchLinearSubNodeLength() const override { return UCharsTrie::kMaxBranchLinearSubNodeLength; }
    +    virtual int32_t getMinLinearMatch() const override { return UCharsTrie::kMinLinearMatch; }
    +    virtual int32_t getMaxLinearMatchLength() const override { return UCharsTrie::kMaxLinearMatchLength; }
     
         class UCTLinearMatchNode : public LinearMatchNode {
         public:
             UCTLinearMatchNode(const char16_t *units, int32_t len, Node *nextNode);
    -        virtual UBool operator==(const Node &other) const;
    -        virtual void write(StringTrieBuilder &builder);
    +        virtual bool operator==(const Node &other) const override;
    +        virtual void write(StringTrieBuilder &builder) override;
         private:
             const char16_t *s;
         };
     
         virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length,
    -                                        Node *nextNode) const;
    +                                        Node *nextNode) const override;
     
         UBool ensureCapacity(int32_t length);
    -    virtual int32_t write(int32_t unit);
    +    virtual int32_t write(int32_t unit) override;
         int32_t write(const char16_t *s, int32_t length);
    -    virtual int32_t writeElementUnits(int32_t i, int32_t unitIndex, int32_t length);
    -    virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal);
    -    virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node);
    -    virtual int32_t writeDeltaTo(int32_t jumpTarget);
    +    virtual int32_t writeElementUnits(int32_t i, int32_t unitIndex, int32_t length) override;
    +    virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal) override;
    +    virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node) override;
    +    virtual int32_t writeDeltaTo(int32_t jumpTarget) override;
     
         UnicodeString strings;
         UCharsTrieElement *elements;
    diff --git a/deps/icu-small/source/common/unicode/uchriter.h b/deps/icu-small/source/common/unicode/uchriter.h
    index 84309b2416d136..9fae5e7de08fee 100644
    --- a/deps/icu-small/source/common/unicode/uchriter.h
    +++ b/deps/icu-small/source/common/unicode/uchriter.h
    @@ -17,10 +17,10 @@
     #include "unicode/chariter.h"
     
     /**
    - * \file
    + * \file 
      * \brief C++ API: char16_t Character Iterator
      */
    -
    + 
     U_NAMESPACE_BEGIN
     
     /**
    @@ -56,7 +56,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * The starting
        * position is specified by "position". If "position" is outside the valid
        * iteration range, the behavior of this object is undefined.
    -   * @param textPtr The char16_t array to be iteratd over
    +   * @param textPtr The char16_t array to be iterated over
        * @param length The length of the char16_t array
        * @param position The starting position of the iteration
        * @stable ICU 2.0
    @@ -119,14 +119,14 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * same string and are pointing at the same character.
        * @stable ICU 2.0
        */
    -  virtual UBool          operator==(const ForwardCharacterIterator& that) const;
    +  virtual bool           operator==(const ForwardCharacterIterator& that) const override;
     
       /**
        * Generates a hash code for this iterator.
        * @return the hash code.
        * @stable ICU 2.0
        */
    -  virtual int32_t         hashCode(void) const;
    +  virtual int32_t         hashCode(void) const override;
     
       /**
        * Returns a new UCharCharacterIterator referring to the same
    @@ -135,7 +135,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the CharacterIterator newly created
        * @stable ICU 2.0
        */
    -  virtual UCharCharacterIterator* clone() const;
    +  virtual UCharCharacterIterator* clone() const override;
     
       /**
        * Sets the iterator to refer to the first code unit in its
    @@ -144,7 +144,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the first code unit in its iteration range.
        * @stable ICU 2.0
        */
    -  virtual char16_t         first(void);
    +  virtual char16_t         first(void) override;
     
       /**
        * Sets the iterator to refer to the first code unit in its
    @@ -154,7 +154,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the first code unit in its iteration range
        * @stable ICU 2.0
        */
    -  virtual char16_t         firstPostInc(void);
    +  virtual char16_t         firstPostInc(void) override;
     
       /**
        * Sets the iterator to refer to the first code point in its
    @@ -165,7 +165,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the first code point in its iteration range
        * @stable ICU 2.0
        */
    -  virtual UChar32       first32(void);
    +  virtual UChar32       first32(void) override;
     
       /**
        * Sets the iterator to refer to the first code point in its
    @@ -175,7 +175,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the first code point in its iteration range.
        * @stable ICU 2.0
        */
    -  virtual UChar32       first32PostInc(void);
    +  virtual UChar32       first32PostInc(void) override;
     
       /**
        * Sets the iterator to refer to the last code unit in its
    @@ -184,7 +184,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the last code unit in its iteration range.
        * @stable ICU 2.0
        */
    -  virtual char16_t         last(void);
    +  virtual char16_t         last(void) override;
     
       /**
        * Sets the iterator to refer to the last code point in its
    @@ -193,7 +193,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the last code point in its iteration range.
        * @stable ICU 2.0
        */
    -  virtual UChar32       last32(void);
    +  virtual UChar32       last32(void) override;
     
       /**
        * Sets the iterator to refer to the "position"-th code unit
    @@ -203,7 +203,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the code unit
        * @stable ICU 2.0
        */
    -  virtual char16_t         setIndex(int32_t position);
    +  virtual char16_t         setIndex(int32_t position) override;
     
       /**
        * Sets the iterator to refer to the beginning of the code point
    @@ -216,21 +216,21 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the code unit
        * @stable ICU 2.0
        */
    -  virtual UChar32       setIndex32(int32_t position);
    +  virtual UChar32       setIndex32(int32_t position) override;
     
       /**
        * Returns the code unit the iterator currently refers to.
        * @return the code unit the iterator currently refers to.
        * @stable ICU 2.0
        */
    -  virtual char16_t         current(void) const;
    +  virtual char16_t         current(void) const override;
     
       /**
        * Returns the code point the iterator currently refers to.
        * @return the code point the iterator currently refers to.
        * @stable ICU 2.0
        */
    -  virtual UChar32       current32(void) const;
    +  virtual UChar32       current32(void) const override;
     
       /**
        * Advances to the next code unit in the iteration range (toward
    @@ -239,7 +239,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the next code unit in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual char16_t         next(void);
    +  virtual char16_t         next(void) override;
     
       /**
        * Gets the current code unit for returning and advances to the next code unit
    @@ -249,7 +249,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the current code unit.
        * @stable ICU 2.0
        */
    -  virtual char16_t         nextPostInc(void);
    +  virtual char16_t         nextPostInc(void) override;
     
       /**
        * Advances to the next code point in the iteration range (toward
    @@ -261,7 +261,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the next code point in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual UChar32       next32(void);
    +  virtual UChar32       next32(void) override;
     
       /**
        * Gets the current code point for returning and advances to the next code point
    @@ -271,7 +271,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the current point.
        * @stable ICU 2.0
        */
    -  virtual UChar32       next32PostInc(void);
    +  virtual UChar32       next32PostInc(void) override;
     
       /**
        * Returns false if there are no more code units or code points
    @@ -282,7 +282,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * at or after the current position in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual UBool        hasNext();
    +  virtual UBool        hasNext() override;
     
       /**
        * Advances to the previous code unit in the iteration range (toward
    @@ -291,7 +291,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the previous code unit in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual char16_t         previous(void);
    +  virtual char16_t         previous(void) override;
     
       /**
        * Advances to the previous code point in the iteration range (toward
    @@ -300,7 +300,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the previous code point in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual UChar32       previous32(void);
    +  virtual UChar32       previous32(void) override;
     
       /**
        * Returns false if there are no more code units or code points
    @@ -311,7 +311,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * before the current position in the iteration range.
        * @stable ICU 2.0
        */
    -  virtual UBool        hasPrevious();
    +  virtual UBool        hasPrevious() override;
     
       /**
        * Moves the current position relative to the start or end of the
    @@ -324,7 +324,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return the new position
        * @stable ICU 2.0
        */
    -  virtual int32_t      move(int32_t delta, EOrigin origin);
    +  virtual int32_t      move(int32_t delta, EOrigin origin) override;
     
       /**
        * Moves the current position relative to the start or end of the
    @@ -341,7 +341,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        // One of the system headers right now is sometimes defining a conflicting macro we don't use
     #undef move32
     #endif
    -  virtual int32_t      move32(int32_t delta, EOrigin origin);
    +  virtual int32_t      move32(int32_t delta, EOrigin origin) override;
     
       /**
        * Sets the iterator to iterate over a new range of text
    @@ -356,7 +356,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @param result Receives a copy of the text under iteration.
        * @stable ICU 2.0
        */
    -  virtual void            getText(UnicodeString& result);
    +  virtual void            getText(UnicodeString& result) override;
     
       /**
        * Return a class ID for this class (not really public)
    @@ -370,7 +370,7 @@ class U_COMMON_API UCharCharacterIterator : public CharacterIterator {
        * @return a class ID for this object.
        * @stable ICU 2.0
        */
    -  virtual UClassID        getDynamicClassID(void) const;
    +  virtual UClassID        getDynamicClassID(void) const override;
     
     protected:
       /**
    diff --git a/deps/icu-small/source/common/unicode/uclean.h b/deps/icu-small/source/common/unicode/uclean.h
    index f03593964a4edd..c2d920a16ef48a 100644
    --- a/deps/icu-small/source/common/unicode/uclean.h
    +++ b/deps/icu-small/source/common/unicode/uclean.h
    @@ -22,7 +22,7 @@
      * \file
      * \brief C API: Initialize and clean up ICU
      */
    -
    + 
     /**
      *  Initialize ICU.
      *
    @@ -48,8 +48,8 @@
      *    failure, as usual.
      *
      * @stable ICU 2.6
    - */
    -U_CAPI void U_EXPORT2
    + */  
    +U_CAPI void U_EXPORT2 
     u_init(UErrorCode *status);
     
     #ifndef U_HIDE_SYSTEM_API
    @@ -66,10 +66,10 @@ u_init(UErrorCode *status);
      * just before the library unload.
      * 

    * u_cleanup() also clears any ICU heap functions, mutex functions or - * trace functions that may have been set for the process. + * trace functions that may have been set for the process. * This has the effect of restoring ICU to its initial condition, before * any of these override functions were installed. Refer to - * u_setMemoryFunctions(), u_setMutexFunctions and + * u_setMemoryFunctions(), u_setMutexFunctions and * utrace_setFunctions(). If ICU is to be reinitialized after * calling u_cleanup(), these runtime override functions will need to * be set up again if they are still required. @@ -85,7 +85,7 @@ u_init(UErrorCode *status); * calling u_init(). An application must invoke u_init() first from one single * thread before allowing other threads call u_init(). All threads existing * at the time of the first thread's call to u_init() must also call - * u_init() themselves before continuing with other ICU operations. + * u_init() themselves before continuing with other ICU operations. *

    * The use of u_cleanup() just before an application terminates is optional, * but it should be called only once for performance reasons. The primary @@ -98,7 +98,7 @@ u_init(UErrorCode *status); * @stable ICU 2.0 * @system */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_cleanup(void); U_CDECL_BEGIN @@ -147,9 +147,9 @@ typedef void U_CALLCONV UMemFreeFn (const void *context, void *mem); * @param status Receives error values. * @stable ICU 2.8 * @system - */ -U_CAPI void U_EXPORT2 -u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV_FPTR a, UMemReallocFn * U_CALLCONV_FPTR r, UMemFreeFn * U_CALLCONV_FPTR f, + */ +U_CAPI void U_EXPORT2 +u_setMemoryFunctions(const void *context, UMemAllocFn * U_CALLCONV_FPTR a, UMemReallocFn * U_CALLCONV_FPTR r, UMemFreeFn * U_CALLCONV_FPTR f, UErrorCode *status); U_CDECL_END @@ -182,8 +182,8 @@ U_CDECL_BEGIN * as a parameter. * @param context user supplied value, obtained from u_setMutexFunctions(). * @param mutex Receives a pointer that identifies the new mutex. - * The mutex init function must set the UMTX to a non-null value. - * Subsequent calls by ICU to lock, unlock, or destroy a mutex will + * The mutex init function must set the UMTX to a non-null value. + * Subsequent calls by ICU to lock, unlock, or destroy a mutex will * identify the mutex by the UMTX value. * @param status Error status. Report errors back to ICU by setting this variable * with an error code. @@ -213,7 +213,7 @@ U_CDECL_END * u_init() has been called. * @param context This pointer value will be saved, and then (later) passed as * a parameter to the user-supplied mutex functions each time they - * are called. + * are called. * @param init Pointer to a mutex initialization function. Must be non-null. * @param destroy Pointer to the mutex destroy function. Must be non-null. * @param lock pointer to the mutex lock function. Must be non-null. @@ -221,8 +221,8 @@ U_CDECL_END * @param status Receives error values. * @deprecated ICU 52. This function is no longer supported. * @system - */ -U_DEPRECATED void U_EXPORT2 + */ +U_DEPRECATED void U_EXPORT2 u_setMutexFunctions(const void *context, UMtxInitFn *init, UMtxFn *destroy, UMtxFn *lock, UMtxFn *unlock, UErrorCode *status); @@ -245,14 +245,14 @@ typedef int32_t U_CALLCONV UMtxAtomicFn(const void *context, int32_t *p); * u_init() has been called. * @param context This pointer value will be saved, and then (later) passed as * a parameter to the increment and decrement functions each time they - * are called. This function can only be called + * are called. This function can only be called * @param inc Pointer to a function to do an atomic increment operation. Must be non-null. * @param dec Pointer to a function to do an atomic decrement operation. Must be non-null. * @param status Receives error values. * @deprecated ICU 52. This function is no longer supported. * @system - */ -U_DEPRECATED void U_EXPORT2 + */ +U_DEPRECATED void U_EXPORT2 u_setAtomicIncDecFunctions(const void *context, UMtxAtomicFn *inc, UMtxAtomicFn *dec, UErrorCode *status); diff --git a/deps/icu-small/source/common/unicode/ucnv.h b/deps/icu-small/source/common/unicode/ucnv.h index 5d784990f2cdce..2687c984d43b1d 100644 --- a/deps/icu-small/source/common/unicode/ucnv.h +++ b/deps/icu-small/source/common/unicode/ucnv.h @@ -42,8 +42,7 @@ * many other callback actions that can be used instead of a character substitution.

    * *

    More information about this API can be found in our - * User's - * Guide.

    + * User Guide.

    */ #ifndef UCNV_H @@ -340,7 +339,7 @@ ucnv_compareNames(const char *name1, const char *name2); * *

    The conversion behavior and names can vary between platforms. ICU may * convert some characters differently from other platforms. Details on this topic - * are in the User's + * are in the User * Guide. Aliases starting with a "cp" prefix have no specific meaning * other than its an alias starting with the letters "cp". Please do not * associate any meaning to these aliases.

    @@ -1007,7 +1006,7 @@ ucnv_getUnicodeSet(const UConverter *cnv, UErrorCode *pErrorCode); /** - * Gets the current calback function used by the converter when an illegal + * Gets the current callback function used by the converter when an illegal * or invalid codepage sequence is found. * Context pointers are always owned by the caller. * @@ -1935,7 +1934,7 @@ ucnv_isAmbiguous(const UConverter *cnv); * reverse fallbacks (to Unicode). * For details see ".ucm File Format" * in the Conversion Data chapter of the ICU User Guide: - * http://www.icu-project.org/userguide/conversion-data.html#ucmformat + * https://unicode-org.github.io/icu/userguide/conversion/data.html#ucm-file-format * * @param cnv The converter to set the fallback mapping usage on. * @param usesFallback true if the user wants the converter to take advantage of the fallback @@ -2032,7 +2031,7 @@ ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status); * fixed ratio of bytes to Unicode codes units for any particular Unicode encoding form. * false is returned with the UErrorCode if error occurs or cnv is NULL. * @param cnv The converter to be tested - * @param status ICU error code in/out paramter + * @param status ICU error code in/out parameter * @return true if the converter is fixed-width * @stable ICU 4.8 */ diff --git a/deps/icu-small/source/common/unicode/ucnv_cb.h b/deps/icu-small/source/common/unicode/ucnv_cb.h index 18240990dbaed9..41845d1bcaeabe 100644 --- a/deps/icu-small/source/common/unicode/ucnv_cb.h +++ b/deps/icu-small/source/common/unicode/ucnv_cb.h @@ -8,52 +8,52 @@ * ucnv_cb.h: * External APIs for the ICU's codeset conversion library * Helena Shih - * + * * Modification History: * * Date Name Description */ /** - * \file + * \file * \brief C UConverter functions to aid the writers of callbacks * *

    Callback API for UConverter

    - * + * * These functions are provided here for the convenience of the callback * writer. If you are just looking for callback functions to use, please - * see ucnv_err.h. DO NOT call these functions directly when you are + * see ucnv_err.h. DO NOT call these functions directly when you are * working with converters, unless your code has been called as a callback * via ucnv_setFromUCallback or ucnv_setToUCallback !! - * + * * A note about error codes and overflow. Unlike other ICU functions, * these functions do not expect the error status to be U_ZERO_ERROR. * Callbacks must be much more careful about their error codes. * The error codes used here are in/out parameters, which should be passed * back in the callback's error parameter. - * - * For example, if you call ucnv_cbfromUWriteBytes to write data out - * to the output codepage, it may return U_BUFFER_OVERFLOW_ERROR if - * the data did not fit in the target. But this isn't a failing error, + * + * For example, if you call ucnv_cbfromUWriteBytes to write data out + * to the output codepage, it may return U_BUFFER_OVERFLOW_ERROR if + * the data did not fit in the target. But this isn't a failing error, * in fact, ucnv_cbfromUWriteBytes may be called AGAIN with the error * status still U_BUFFER_OVERFLOW_ERROR to attempt to write further bytes, * which will also go into the internal overflow buffers. - * + * * Concerning offsets, the 'offset' parameters here are relative to the start - * of SOURCE. For example, Suppose the string "ABCD" was being converted + * of SOURCE. For example, Suppose the string "ABCD" was being converted * from Unicode into a codepage which doesn't have a mapping for 'B'. * 'A' will be written out correctly, but * The FromU Callback will be called on an unassigned character for 'B'. * At this point, this is the state of the world: * Target: A [..] [points after A] * Source: A B [C] D [points to C - B has been consumed] - * 0 1 2 3 - * codePoint = "B" [the unassigned codepoint] - * + * 0 1 2 3 + * codePoint = "B" [the unassigned codepoint] + * * Now, suppose a callback wants to write the substitution character '?' to - * the target. It calls ucnv_cbFromUWriteBytes() to write the ?. - * It should pass ZERO as the offset, because the offset as far as the - * callback is concerned is relative to the SOURCE pointer [which points + * the target. It calls ucnv_cbFromUWriteBytes() to write the ?. + * It should pass ZERO as the offset, because the offset as far as the + * callback is concerned is relative to the SOURCE pointer [which points * before 'C'.] If the callback goes into the args and consumes 'C' also, * it would call FromUWriteBytes with an offset of 1 (and advance the source * pointer). @@ -78,8 +78,8 @@ * @param source source bytes to write * @param length length of bytes to write * @param offsetIndex the relative offset index from callback. - * @param err error status. If U_BUFFER_OVERFLOW is returned, then U_BUFFER_OVERFLOW must - * be returned to the user, because it means that not all data could be written into the target buffer, and some is + * @param err error status. If U_BUFFER_OVERFLOW is returned, then U_BUFFER_OVERFLOW must + * be returned to the user, because it means that not all data could be written into the target buffer, and some is * in the converter error buffer. * @see ucnv_cbFromUWriteSub * @stable ICU 2.0 @@ -92,25 +92,25 @@ ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args, UErrorCode * err); /** - * ONLY used by FromU callback functions. - * This function will write out the correct substitution character sequence + * ONLY used by FromU callback functions. + * This function will write out the correct substitution character sequence * to the target. * * @param args callback fromUnicode arguments * @param offsetIndex the relative offset index from the current source pointer to be used - * @param err error status. If U_BUFFER_OVERFLOW is returned, then U_BUFFER_OVERFLOW must - * be returned to the user, because it means that not all data could be written into the target buffer, and some is + * @param err error status. If U_BUFFER_OVERFLOW is returned, then U_BUFFER_OVERFLOW must + * be returned to the user, because it means that not all data could be written into the target buffer, and some is * in the converter error buffer. * @see ucnv_cbFromUWriteBytes * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args, int32_t offsetIndex, UErrorCode * err); /** - * ONLY used by fromU callback functions. + * ONLY used by fromU callback functions. * This function will write out the error character(s) to the target UChar buffer. * * @param args callback fromUnicode arguments @@ -129,7 +129,7 @@ U_CAPI void U_EXPORT2 ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args, /** * ONLY used by ToU callback functions. - * This function will write out the specified characters to the target + * This function will write out the specified characters to the target * UChar buffer. * * @param args callback toUnicode arguments @@ -147,7 +147,7 @@ U_CAPI void U_EXPORT2 ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args, UErrorCode * err); /** - * ONLY used by ToU callback functions. + * ONLY used by ToU callback functions. * This function will write out the Unicode substitution character (U+FFFD). * * @param args callback fromUnicode arguments diff --git a/deps/icu-small/source/common/unicode/ucnv_err.h b/deps/icu-small/source/common/unicode/ucnv_err.h index bff90f0ba1e1d4..a13d01db099b37 100644 --- a/deps/icu-small/source/common/unicode/ucnv_err.h +++ b/deps/icu-small/source/common/unicode/ucnv_err.h @@ -108,7 +108,7 @@ typedef struct UConverter UConverter; #define UCNV_SKIP_STOP_ON_ILLEGAL "i" /** - * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) + * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) * @stable ICU 2.0 */ #define UCNV_ESCAPE_ICU NULL @@ -148,24 +148,24 @@ typedef struct UConverter UConverter; */ #define UCNV_ESCAPE_CSS2 "S" -/** - * The process condition code to be used with the callbacks. - * Codes which are greater than UCNV_IRREGULAR should be +/** + * The process condition code to be used with the callbacks. + * Codes which are greater than UCNV_IRREGULAR should be * passed on to any chained callbacks. * @stable ICU 2.0 */ typedef enum { UCNV_UNASSIGNED = 0, /**< The code point is unassigned. The error code U_INVALID_CHAR_FOUND will be set. */ - UCNV_ILLEGAL = 1, /**< The code point is illegal. For example, + UCNV_ILLEGAL = 1, /**< The code point is illegal. For example, \\x81\\x2E is illegal in SJIS because \\x2E - is not a valid trail byte for the \\x81 + is not a valid trail byte for the \\x81 lead byte. Also, starting with Unicode 3.0.1, non-shortest byte sequences in UTF-8 (like \\xC1\\xA1 instead of \\x61 for U+0061) are also illegal, not just irregular. The error code U_ILLEGAL_CHAR_FOUND will be set. */ - UCNV_IRREGULAR = 2, /**< The codepoint is not a regular sequence in + UCNV_IRREGULAR = 2, /**< The codepoint is not a regular sequence in the encoding. For example, \\xED\\xA0\\x80..\\xED\\xBF\\xBF are irregular UTF-8 byte sequences for single surrogate code points. @@ -179,8 +179,8 @@ typedef enum { converter. the pointer available as the 'context' is an alias to the original converters' context pointer. If the context must be owned - by the new converter, the callback must clone - the data and call ucnv_setFromUCallback + by the new converter, the callback must clone + the data and call ucnv_setFromUCallback (or setToUCallback) with the correct pointer. @stable ICU 2.2 */ @@ -268,8 +268,8 @@ U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP ( /** * DO NOT CALL THIS FUNCTION DIRECTLY! * This From Unicode callback skips any ILLEGAL_SEQUENCE, or - * skips only UNASSINGED_SEQUENCE depending on the context parameter - * simply ignoring those characters. + * skips only UNASSIGNED_SEQUENCE depending on the context parameter + * simply ignoring those characters. * * @param context The function currently recognizes the callback options: * UCNV_SKIP_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE, @@ -295,7 +295,7 @@ U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP ( /** * DO NOT CALL THIS FUNCTION DIRECTLY! - * This From Unicode callback will Substitute the ILLEGAL SEQUENCE, or + * This From Unicode callback will Substitute the ILLEGAL SEQUENCE, or * UNASSIGNED_SEQUENCE depending on context parameter, with the * current substitution string for the converter. This is the default * callback. @@ -330,33 +330,33 @@ U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE ( * * @param context The function currently recognizes the callback options: *
      - *
    • UCNV_ESCAPE_ICU: Substitues the ILLEGAL SEQUENCE with the hexadecimal - * representation in the format %UXXXX, e.g. "%uFFFE%u00AC%uC8FE"). - * In the Event the converter doesn't support the characters {%,U}[A-F][0-9], + *
    • UCNV_ESCAPE_ICU: Substitutes the ILLEGAL SEQUENCE with the hexadecimal + * representation in the format %UXXXX, e.g. "%uFFFE%u00AC%uC8FE"). + * In the Event the converter doesn't support the characters {%,U}[A-F][0-9], * it will substitute the illegal sequence with the substitution characters. * Note that codeUnit(32bit int eg: unit of a surrogate pair) is represented as * %UD84D%UDC56
    • - *
    • UCNV_ESCAPE_JAVA: Substitues the ILLEGAL SEQUENCE with the hexadecimal - * representation in the format \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). - * In the Event the converter doesn't support the characters {\,u}[A-F][0-9], + *
    • UCNV_ESCAPE_JAVA: Substitutes the ILLEGAL SEQUENCE with the hexadecimal + * representation in the format \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). + * In the Event the converter doesn't support the characters {\,u}[A-F][0-9], * it will substitute the illegal sequence with the substitution characters. * Note that codeUnit(32bit int eg: unit of a surrogate pair) is represented as * \\uD84D\\uDC56
    • - *
    • UCNV_ESCAPE_C: Substitues the ILLEGAL SEQUENCE with the hexadecimal - * representation in the format \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). - * In the Event the converter doesn't support the characters {\,u,U}[A-F][0-9], + *
    • UCNV_ESCAPE_C: Substitutes the ILLEGAL SEQUENCE with the hexadecimal + * representation in the format \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). + * In the Event the converter doesn't support the characters {\,u,U}[A-F][0-9], * it will substitute the illegal sequence with the substitution characters. * Note that codeUnit(32bit int eg: unit of a surrogate pair) is represented as * \\U00023456
    • - *
    • UCNV_ESCAPE_XML_DEC: Substitues the ILLEGAL SEQUENCE with the decimal - * representation in the format \htmlonly&#DDDDDDDD;, e.g. "&#65534;&#172;&#51454;")\endhtmlonly. - * In the Event the converter doesn't support the characters {&,#}[0-9], + *
    • UCNV_ESCAPE_XML_DEC: Substitutes the ILLEGAL SEQUENCE with the decimal + * representation in the format \htmlonly&#DDDDDDDD;, e.g. "&#65534;&#172;&#51454;")\endhtmlonly. + * In the Event the converter doesn't support the characters {&,#}[0-9], * it will substitute the illegal sequence with the substitution characters. * Note that codeUnit(32bit int eg: unit of a surrogate pair) is represented as * &#144470; and Zero padding is ignored.
    • - *
    • UCNV_ESCAPE_XML_HEX:Substitues the ILLEGAL SEQUENCE with the decimal - * representation in the format \htmlonly&#xXXXX; e.g. "&#xFFFE;&#x00AC;&#xC8FE;")\endhtmlonly. - * In the Event the converter doesn't support the characters {&,#,x}[0-9], + *
    • UCNV_ESCAPE_XML_HEX:Substitutes the ILLEGAL SEQUENCE with the decimal + * representation in the format \htmlonly&#xXXXX; e.g. "&#xFFFE;&#x00AC;&#xC8FE;")\endhtmlonly. + * In the Event the converter doesn't support the characters {&,#,x}[0-9], * it will substitute the illegal sequence with the substitution characters. * Note that codeUnit(32bit int eg: unit of a surrogate pair) is represented as * \htmlonly&#x23456;\endhtmlonly
    • @@ -383,8 +383,8 @@ U_CAPI void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE ( /** * DO NOT CALL THIS FUNCTION DIRECTLY! * This To Unicode callback skips any ILLEGAL_SEQUENCE, or - * skips only UNASSINGED_SEQUENCE depending on the context parameter - * simply ignoring those characters. + * skips only UNASSIGNED_SEQUENCE depending on the context parameter + * simply ignoring those characters. * * @param context The function currently recognizes the callback options: * UCNV_SKIP_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE, @@ -408,7 +408,7 @@ U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP ( /** * DO NOT CALL THIS FUNCTION DIRECTLY! - * This To Unicode callback will Substitute the ILLEGAL SEQUENCE,or + * This To Unicode callback will Substitute the ILLEGAL SEQUENCE,or * UNASSIGNED_SEQUENCE depending on context parameter, with the * Unicode substitution character, U+FFFD. * @@ -462,4 +462,4 @@ U_CAPI void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE ( #endif -/*UCNV_ERR_H*/ +/*UCNV_ERR_H*/ diff --git a/deps/icu-small/source/common/unicode/ucnvsel.h b/deps/icu-small/source/common/unicode/ucnvsel.h index 3ba41bd64c1750..3d7d3327f7dadd 100644 --- a/deps/icu-small/source/common/unicode/ucnvsel.h +++ b/deps/icu-small/source/common/unicode/ucnvsel.h @@ -58,7 +58,7 @@ typedef struct UConverterSelector UConverterSelector; * If converterListSize is 0, build for all available converters. * If excludedCodePoints is NULL, don't exclude any code points. * - * @param converterList a pointer to encoding names needed to be involved. + * @param converterList a pointer to encoding names needed to be involved. * Can be NULL if converterListSize==0. * The list and the names will be cloned, and the caller * retains ownership of the original. diff --git a/deps/icu-small/source/common/unicode/uconfig.h b/deps/icu-small/source/common/unicode/uconfig.h index c0157efe6d4ede..bbc232d1ed8fdf 100644 --- a/deps/icu-small/source/common/unicode/uconfig.h +++ b/deps/icu-small/source/common/unicode/uconfig.h @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 2002-2016, International Business Machines * Corporation and others. All Rights Reserved. @@ -76,7 +76,7 @@ #endif /** - * Determines whether to enable auto cleanup of libraries. + * Determines whether to enable auto cleanup of libraries. * @internal */ #ifndef UCLN_NO_AUTO_CLEANUP @@ -256,7 +256,7 @@ # define UCONFIG_NO_FILE_IO 0 #endif -#if UCONFIG_NO_FILE_IO && defined(U_TIMEZONE_FILES_DIR) +#if UCONFIG_NO_FILE_IO && defined(U_TIMEZONE_FILES_DIR) # error Contradictory file io switches in uconfig.h. #endif @@ -374,7 +374,7 @@ * On platforms where U_PLATFORM_HAS_WIN32_API is true, this switch determines * if the Windows platform APIs are used for LCID<->Locale Name conversions. * Otherwise, only the built-in ICU tables are used. - * + * * @internal ICU 64 */ #ifndef UCONFIG_USE_WINDOWS_LCID_MAPPING_API diff --git a/deps/icu-small/source/common/unicode/ucptrie.h b/deps/icu-small/source/common/unicode/ucptrie.h index b95491b183e9af..e2547ae2eeac92 100644 --- a/deps/icu-small/source/common/unicode/ucptrie.h +++ b/deps/icu-small/source/common/unicode/ucptrie.h @@ -43,7 +43,7 @@ typedef union UCPTrieData { /** * Immutable Unicode code point trie structure. * Fast, reasonably compact, map from Unicode code points (U+0000..U+10FFFF) to integer values. - * For details see http://site.icu-project.org/design/struct/utrie + * For details see https://icu.unicode.org/design/struct/utrie * * Do not access UCPTrie fields directly; use public functions and macros. * Functions are easy to use: They support all trie types and value widths. diff --git a/deps/icu-small/source/common/unicode/ucurr.h b/deps/icu-small/source/common/unicode/ucurr.h index 4e115cd01e0fb6..5589e799904914 100644 --- a/deps/icu-small/source/common/unicode/ucurr.h +++ b/deps/icu-small/source/common/unicode/ucurr.h @@ -13,7 +13,7 @@ #include "unicode/uenum.h" /** - * \file + * \file * \brief C API: Encapsulates information about a currency. * * The ucurr API encapsulates information about a currency, as defined by @@ -61,11 +61,11 @@ enum UCurrencyUsage { #endif // U_HIDE_DEPRECATED_API }; /** Currency Usage used for Decimal Format */ -typedef enum UCurrencyUsage UCurrencyUsage; +typedef enum UCurrencyUsage UCurrencyUsage; /** * Finds a currency code for the given locale. - * @param locale the locale for which to retrieve a currency code. + * @param locale the locale for which to retrieve a currency code. * Currency can be specified by the "currency" keyword * in which case it overrides the default currency code * @param buff fill in buffer. Can be NULL for preflighting. @@ -74,8 +74,8 @@ typedef enum UCurrencyUsage UCurrencyUsage; * must not be NULL. * @param ec error code * @return length of the currency string. It should always be 3. If 0, - * currency couldn't be found or the input values are - * invalid. + * currency couldn't be found or the input values are + * invalid. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 @@ -115,14 +115,13 @@ typedef enum UCurrNameStyle { */ UCURR_NARROW_SYMBOL_NAME, -#ifndef U_HIDE_DRAFT_API /** * Selector for getName() indicating the formal currency symbol. * The formal currency symbol is similar to the regular currency * symbol, but it always takes the form used in formal settings * such as banking; for example, "NT$" instead of "$" for TWD in zh-TW. * - * @draft ICU 68 + * @stable ICU 68 */ UCURR_FORMAL_SYMBOL_NAME, @@ -131,11 +130,10 @@ typedef enum UCurrNameStyle { * The variant symbol for a currency is an alternative symbol * that is not necessarily as widely used as the regular symbol. * - * @draft ICU 68 + * @stable ICU 68 */ UCURR_VARIANT_SYMBOL_NAME -#endif // U_HIDE_DRAFT_API - + } UCurrNameStyle; #if !UCONFIG_NO_SERVICE @@ -156,14 +154,14 @@ typedef const void* UCurrRegistryKey; * @stable ICU 2.6 */ U_CAPI UCurrRegistryKey U_EXPORT2 -ucurr_register(const UChar* isoCode, - const char* locale, +ucurr_register(const UChar* isoCode, + const char* locale, UErrorCode* status); /** * Unregister the previously-registered currency definitions using the * URegistryKey returned from ucurr_register. Key becomes invalid after - * a successful call and should not be used again. Any currency - * that might have been hidden by the original ucurr_register call is + * a successful call and should not be used again. Any currency + * that might have been hidden by the original ucurr_register call is * restored. * @param key the registry key returned by a previous call to ucurr_register * @param status the in/out status code, no special meanings are assigned @@ -263,7 +261,7 @@ ucurr_getDefaultFractionDigits(const UChar* currency, * @stable ICU 54 */ U_CAPI int32_t U_EXPORT2 -ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, +ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec); @@ -352,38 +350,38 @@ U_CAPI UEnumeration * U_EXPORT2 ucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode); /** - * Queries if the given ISO 4217 3-letter code is available on the specified date range. - * - * Note: For checking availability of a currency on a specific date, specify the date on both 'from' and 'to' - * - * When 'from' is U_DATE_MIN and 'to' is U_DATE_MAX, this method checks if the specified currency is available any time. + * Queries if the given ISO 4217 3-letter code is available on the specified date range. + * + * Note: For checking availability of a currency on a specific date, specify the date on both 'from' and 'to' + * + * When 'from' is U_DATE_MIN and 'to' is U_DATE_MAX, this method checks if the specified currency is available any time. * If 'from' and 'to' are same UDate value, this method checks if the specified currency is available on that date. - * - * @param isoCode - * The ISO 4217 3-letter code. - * - * @param from - * The lower bound of the date range, inclusive. When 'from' is U_DATE_MIN, check the availability - * of the currency any date before 'to' - * - * @param to - * The upper bound of the date range, inclusive. When 'to' is U_DATE_MAX, check the availability of - * the currency any date after 'from' - * - * @param errorCode - * ICU error code - * - * @return true if the given ISO 4217 3-letter code is supported on the specified date range. - * - * @stable ICU 4.8 - */ + * + * @param isoCode + * The ISO 4217 3-letter code. + * + * @param from + * The lower bound of the date range, inclusive. When 'from' is U_DATE_MIN, check the availability + * of the currency any date before 'to' + * + * @param to + * The upper bound of the date range, inclusive. When 'to' is U_DATE_MAX, check the availability of + * the currency any date after 'from' + * + * @param errorCode + * ICU error code + * + * @return true if the given ISO 4217 3-letter code is supported on the specified date range. + * + * @stable ICU 4.8 + */ U_CAPI UBool U_EXPORT2 -ucurr_isAvailable(const UChar* isoCode, - UDate from, - UDate to, +ucurr_isAvailable(const UChar* isoCode, + UDate from, + UDate to, UErrorCode* errorCode); -/** +/** * Finds the number of valid currency codes for the * given locale and date. * @param locale the locale for which to retrieve the @@ -398,36 +396,36 @@ ucurr_isAvailable(const UChar* isoCode, * @stable ICU 4.0 */ U_CAPI int32_t U_EXPORT2 -ucurr_countCurrencies(const char* locale, - UDate date, - UErrorCode* ec); +ucurr_countCurrencies(const char* locale, + UDate date, + UErrorCode* ec); -/** - * Finds a currency code for the given locale and date - * @param locale the locale for which to retrieve a currency code. - * Currency can be specified by the "currency" keyword - * in which case it overrides the default currency code - * @param date the date for which to retrieve a currency code for - * the given locale. +/** + * Finds a currency code for the given locale and date + * @param locale the locale for which to retrieve a currency code. + * Currency can be specified by the "currency" keyword + * in which case it overrides the default currency code + * @param date the date for which to retrieve a currency code for + * the given locale. * @param index the index within the available list of currency codes * for the given locale on the given date. - * @param buff fill in buffer. Can be NULL for preflighting. - * @param buffCapacity capacity of the fill in buffer. Can be 0 for - * preflighting. If it is non-zero, the buff parameter - * must not be NULL. - * @param ec error code - * @return length of the currency string. It should always be 3. - * If 0, currency couldn't be found or the input values are - * invalid. - * @stable ICU 4.0 - */ -U_CAPI int32_t U_EXPORT2 -ucurr_forLocaleAndDate(const char* locale, - UDate date, + * @param buff fill in buffer. Can be NULL for preflighting. + * @param buffCapacity capacity of the fill in buffer. Can be 0 for + * preflighting. If it is non-zero, the buff parameter + * must not be NULL. + * @param ec error code + * @return length of the currency string. It should always be 3. + * If 0, currency couldn't be found or the input values are + * invalid. + * @stable ICU 4.0 + */ +U_CAPI int32_t U_EXPORT2 +ucurr_forLocaleAndDate(const char* locale, + UDate date, int32_t index, - UChar* buff, - int32_t buffCapacity, - UErrorCode* ec); + UChar* buff, + int32_t buffCapacity, + UErrorCode* ec); /** * Given a key and a locale, returns an array of string values in a preferred diff --git a/deps/icu-small/source/common/unicode/udata.h b/deps/icu-small/source/common/unicode/udata.h index 88c0dded118d00..c5b1adc359c0ab 100644 --- a/deps/icu-small/source/common/unicode/udata.h +++ b/deps/icu-small/source/common/unicode/udata.h @@ -41,16 +41,16 @@ U_CDECL_BEGIN * * See the User Guide Data Management chapter. */ - + #ifndef U_HIDE_INTERNAL_API /** - * Character used to separate package names from tree names + * Character used to separate package names from tree names * @internal ICU 3.0 */ #define U_TREE_SEPARATOR '-' /** - * String used to separate package names from tree names + * String used to separate package names from tree names * @internal ICU 3.0 */ #define U_TREE_SEPARATOR_STRING "-" @@ -68,7 +68,7 @@ U_CDECL_BEGIN #define U_TREE_ENTRY_SEP_STRING "/" /** - * Alias for standard ICU data + * Alias for standard ICU data * @internal ICU 3.0 */ #define U_ICUDATA_ALIAS "ICUDATA" @@ -118,7 +118,7 @@ typedef struct { * @stable ICU 2.0 */ uint16_t size; - /** unused, set to 0 + /** unused, set to 0 * @stable ICU 2.0*/ uint16_t reservedWord; @@ -127,27 +127,27 @@ typedef struct { * @stable ICU 2.0 */ uint8_t isBigEndian; - /** see U_CHARSET_FAMILY values in utypes.h + /** see U_CHARSET_FAMILY values in utypes.h * @stable ICU 2.0*/ uint8_t charsetFamily; - /** sizeof(UChar), one of { 1, 2, 4 } + /** sizeof(UChar), one of { 1, 2, 4 } * @stable ICU 2.0*/ uint8_t sizeofUChar; - /** unused, set to 0 + /** unused, set to 0 * @stable ICU 2.0*/ uint8_t reservedByte; - /** data format identifier + /** data format identifier * @stable ICU 2.0*/ uint8_t dataFormat[4]; - /** versions: [0] major [1] minor [2] milli [3] micro + /** versions: [0] major [1] minor [2] milli [3] micro * @stable ICU 2.0*/ uint8_t formatVersion[4]; - /** versions: [0] major [1] minor [2] milli [3] micro + /** versions: [0] major [1] minor [2] milli [3] micro * @stable ICU 2.0*/ uint8_t dataVersion[4]; } UDataInfo; @@ -231,7 +231,7 @@ udata_open(const char *path, const char *type, const char *name, * logically prepended to the ICU data directory string.

      * *

      For details about ICU data loading see the User Guide - * Data Management chapter. (http://icu-project.org/userguide/icudata.html)

      + * Data Management chapter. (https://unicode-org.github.io/icu/userguide/icu_data/)

      * * @param path Specifies an absolute path and/or a basename for the * finding of the data in the file system. @@ -362,7 +362,7 @@ udata_setCommonData(const void *data, UErrorCode *err); * * * Warning: setAppData will set a U_USING_DEFAULT_WARNING code if - * data with the specifed path that has already been opened, or + * data with the specified path that has already been opened, or * if setAppData with the same path has already been called. * Any such calls to setAppData will have no effect. * @@ -405,13 +405,13 @@ typedef enum UDataFileAccess { /** * This function may be called to control how ICU loads data. It must be called - * before any ICU data is loaded, including application data loaded with - * ures/ResourceBundle or udata APIs. This function is not multithread safe. + * before any ICU data is loaded, including application data loaded with + * ures/ResourceBundle or udata APIs. This function is not multithread safe. * The results of calling it while other threads are loading data are undefined. * @param access The type of file access to be used * @param status Error code. * @see UDataFileAccess - * @stable ICU 3.4 + * @stable ICU 3.4 */ U_CAPI void U_EXPORT2 udata_setFileAccess(UDataFileAccess access, UErrorCode *status); diff --git a/deps/icu-small/source/common/unicode/uenum.h b/deps/icu-small/source/common/unicode/uenum.h index f1c506934bec87..d9c893e06d92b2 100644 --- a/deps/icu-small/source/common/unicode/uenum.h +++ b/deps/icu-small/source/common/unicode/uenum.h @@ -31,9 +31,9 @@ U_NAMESPACE_END /** * \file - * \brief C API: String Enumeration + * \brief C API: String Enumeration */ - + /** * An enumeration object. * For usage in C programs. @@ -78,7 +78,7 @@ U_NAMESPACE_END * U_ENUM_OUT_OF_SYNC_ERROR. * This is a convenience function. It can end up being very * expensive as all the items might have to be pre-fetched (depending - * on the type of data being traversed). Use with caution and only + * on the type of data being traversed). Use with caution and only * when necessary. * @param en UEnumeration structure pointer * @param status error code, can be U_ENUM_OUT_OF_SYNC_ERROR if the @@ -154,7 +154,7 @@ uenum_next(UEnumeration* en, * to start at the first element. * @param en the iterator object * @param status the error code, set to U_ENUM_OUT_OF_SYNC_ERROR if - * the iterator is out of sync with its service. + * the iterator is out of sync with its service. * @stable ICU 2.2 */ U_CAPI void U_EXPORT2 diff --git a/deps/icu-small/source/common/unicode/uidna.h b/deps/icu-small/source/common/unicode/uidna.h index 1f75562555c3c2..24a81ceaddf58d 100644 --- a/deps/icu-small/source/common/unicode/uidna.h +++ b/deps/icu-small/source/common/unicode/uidna.h @@ -542,7 +542,7 @@ enum { * and are designed to be chainable, i.e., applying ToASCII or ToUnicode operations * multiple times to an input string will yield the same result as applying the operation * once. - * ToUnicode(ToUnicode(ToUnicode...(ToUnicode(string)))) == ToUnicode(string) + * ToUnicode(ToUnicode(ToUnicode...(ToUnicode(string)))) == ToUnicode(string) * ToASCII(ToASCII(ToASCII...(ToASCII(string))) == ToASCII(string). * * @param src Input UChar array containing label in Unicode. @@ -553,18 +553,18 @@ enum { * * - UIDNA_DEFAULT Use default options, i.e., do not process unassigned code points * and do not use STD3 ASCII rules - * If unassigned code points are found the operation fails with + * If unassigned code points are found the operation fails with * U_UNASSIGNED_ERROR error code. * * - UIDNA_ALLOW_UNASSIGNED Unassigned values can be converted to ASCII for query operations - * If this option is set, the unassigned code points are in the input + * If this option is set, the unassigned code points are in the input * are treated as normal Unicode code points. * * - UIDNA_USE_STD3_RULES Use STD3 ASCII rules for host name syntax restrictions - * If this option is set and the input does not satisfy STD3 rules, + * If this option is set and the input does not satisfy STD3 rules, * the operation will fail with U_IDNA_STD3_ASCII_RULES_ERROR * - * @param parseError Pointer to UParseError struct to receive information on position + * @param parseError Pointer to UParseError struct to receive information on position * of error if an error is encountered. Can be NULL. * @param status ICU in/out error code parameter. * U_INVALID_CHAR_FOUND if src contains @@ -577,7 +577,7 @@ enum { * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA. */ U_DEPRECATED int32_t U_EXPORT2 -uidna_toASCII(const UChar* src, int32_t srcLength, +uidna_toASCII(const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UParseError* parseError, @@ -598,21 +598,21 @@ uidna_toASCII(const UChar* src, int32_t srcLength, * * - UIDNA_DEFAULT Use default options, i.e., do not process unassigned code points * and do not use STD3 ASCII rules - * If unassigned code points are found the operation fails with + * If unassigned code points are found the operation fails with * U_UNASSIGNED_ERROR error code. * * - UIDNA_ALLOW_UNASSIGNED Unassigned values can be converted to ASCII for query operations - * If this option is set, the unassigned code points are in the input - * are treated as normal Unicode code points. Note: This option is - * required on toUnicode operation because the RFC mandates + * If this option is set, the unassigned code points are in the input + * are treated as normal Unicode code points. Note: This option is + * required on toUnicode operation because the RFC mandates * verification of decoded ACE input by applying toASCII and comparing * its output with source * * - UIDNA_USE_STD3_RULES Use STD3 ASCII rules for host name syntax restrictions - * If this option is set and the input does not satisfy STD3 rules, + * If this option is set and the input does not satisfy STD3 rules, * the operation will fail with U_IDNA_STD3_ASCII_RULES_ERROR * - * @param parseError Pointer to UParseError struct to receive information on position + * @param parseError Pointer to UParseError struct to receive information on position * of error if an error is encountered. Can be NULL. * @param status ICU in/out error code parameter. * U_INVALID_CHAR_FOUND if src contains @@ -634,14 +634,14 @@ uidna_toUnicode(const UChar* src, int32_t srcLength, /** * IDNA2003: Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC. - * This operation is done on complete domain names, e.g: "www.example.com". - * It is important to note that this operation can fail. If it fails, then the input + * This operation is done on complete domain names, e.g: "www.example.com". + * It is important to note that this operation can fail. If it fails, then the input * domain name cannot be used as an Internationalized Domain Name and the application * should have methods defined to deal with the failure. * * Note: IDNA RFC specifies that a conformant application should divide a domain name - * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, - * and then convert. This function does not offer that level of granularity. The options once + * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, + * and then convert. This function does not offer that level of granularity. The options once * set will apply to all labels in the domain name * * @param src Input UChar array containing IDN in Unicode. @@ -652,18 +652,18 @@ uidna_toUnicode(const UChar* src, int32_t srcLength, * * - UIDNA_DEFAULT Use default options, i.e., do not process unassigned code points * and do not use STD3 ASCII rules - * If unassigned code points are found the operation fails with + * If unassigned code points are found the operation fails with * U_UNASSIGNED_CODE_POINT_FOUND error code. * * - UIDNA_ALLOW_UNASSIGNED Unassigned values can be converted to ASCII for query operations - * If this option is set, the unassigned code points are in the input + * If this option is set, the unassigned code points are in the input * are treated as normal Unicode code points. * * - UIDNA_USE_STD3_RULES Use STD3 ASCII rules for host name syntax restrictions - * If this option is set and the input does not satisfy STD3 rules, + * If this option is set and the input does not satisfy STD3 rules, * the operation will fail with U_IDNA_STD3_ASCII_RULES_ERROR * - * @param parseError Pointer to UParseError struct to receive information on position + * @param parseError Pointer to UParseError struct to receive information on position * of error if an error is encountered. Can be NULL. * @param status ICU in/out error code parameter. * U_INVALID_CHAR_FOUND if src contains @@ -684,11 +684,11 @@ uidna_IDNToASCII( const UChar* src, int32_t srcLength, /** * IDNA2003: Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC. - * This operation is done on complete domain names, e.g: "www.example.com". + * This operation is done on complete domain names, e.g: "www.example.com". * * Note: IDNA RFC specifies that a conformant application should divide a domain name - * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, - * and then convert. This function does not offer that level of granularity. The options once + * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, + * and then convert. This function does not offer that level of granularity. The options once * set will apply to all labels in the domain name * * @param src Input UChar array containing IDN in ASCII (ACE encoded) form. @@ -699,18 +699,18 @@ uidna_IDNToASCII( const UChar* src, int32_t srcLength, * * - UIDNA_DEFAULT Use default options, i.e., do not process unassigned code points * and do not use STD3 ASCII rules - * If unassigned code points are found the operation fails with + * If unassigned code points are found the operation fails with * U_UNASSIGNED_CODE_POINT_FOUND error code. * * - UIDNA_ALLOW_UNASSIGNED Unassigned values can be converted to ASCII for query operations - * If this option is set, the unassigned code points are in the input + * If this option is set, the unassigned code points are in the input * are treated as normal Unicode code points. * * - UIDNA_USE_STD3_RULES Use STD3 ASCII rules for host name syntax restrictions - * If this option is set and the input does not satisfy STD3 rules, + * If this option is set and the input does not satisfy STD3 rules, * the operation will fail with U_IDNA_STD3_ASCII_RULES_ERROR * - * @param parseError Pointer to UParseError struct to receive information on position + * @param parseError Pointer to UParseError struct to receive information on position * of error if an error is encountered. Can be NULL. * @param status ICU in/out error code parameter. * U_INVALID_CHAR_FOUND if src contains @@ -732,10 +732,10 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, /** * IDNA2003: Compare two IDN strings for equivalence. * This function splits the domain names into labels and compares them. - * According to IDN RFC, whenever two labels are compared, they are - * considered equal if and only if their ASCII forms (obtained by + * According to IDN RFC, whenever two labels are compared, they are + * considered equal if and only if their ASCII forms (obtained by * applying toASCII) match using an case-insensitive ASCII comparison. - * Two domain names are considered a match if and only if all labels + * Two domain names are considered a match if and only if all labels * match regardless of whether label separators match. * * @param s1 First source string. @@ -747,15 +747,15 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength, * * - UIDNA_DEFAULT Use default options, i.e., do not process unassigned code points * and do not use STD3 ASCII rules - * If unassigned code points are found the operation fails with + * If unassigned code points are found the operation fails with * U_UNASSIGNED_CODE_POINT_FOUND error code. * * - UIDNA_ALLOW_UNASSIGNED Unassigned values can be converted to ASCII for query operations - * If this option is set, the unassigned code points are in the input + * If this option is set, the unassigned code points are in the input * are treated as normal Unicode code points. * * - UIDNA_USE_STD3_RULES Use STD3 ASCII rules for host name syntax restrictions - * If this option is set and the input does not satisfy STD3 rules, + * If this option is set and the input does not satisfy STD3 rules, * the operation will fail with U_IDNA_STD3_ASCII_RULES_ERROR * * @param status ICU error code in/out parameter. diff --git a/deps/icu-small/source/common/unicode/uiter.h b/deps/icu-small/source/common/unicode/uiter.h index 7dbe1266668f24..be232c774dc614 100644 --- a/deps/icu-small/source/common/unicode/uiter.h +++ b/deps/icu-small/source/common/unicode/uiter.h @@ -171,7 +171,7 @@ UCharIteratorHasNext(UCharIterator *iter); */ typedef UBool U_CALLCONV UCharIteratorHasPrevious(UCharIterator *iter); - + /** * Function type declaration for UCharIterator.current(). * diff --git a/deps/icu-small/source/common/unicode/uldnames.h b/deps/icu-small/source/common/unicode/uldnames.h index 10f0e91e5526e4..47b047ece97b80 100644 --- a/deps/icu-small/source/common/unicode/uldnames.h +++ b/deps/icu-small/source/common/unicode/uldnames.h @@ -48,11 +48,11 @@ typedef enum { */ struct ULocaleDisplayNames; -/** - * C typedef for struct ULocaleDisplayNames. - * @stable ICU 4.4 +/** + * C typedef for struct ULocaleDisplayNames. + * @stable ICU 4.4 */ -typedef struct ULocaleDisplayNames ULocaleDisplayNames; +typedef struct ULocaleDisplayNames ULocaleDisplayNames; #if !UCONFIG_NO_FORMATTING @@ -62,9 +62,9 @@ typedef struct ULocaleDisplayNames ULocaleDisplayNames; * dialectHandling. The usual value for dialectHandling is * ULOC_STANDARD_NAMES. * - * @param locale the display locale - * @param dialectHandling how to select names for locales - * @return a ULocaleDisplayNames instance + * @param locale the display locale + * @param dialectHandling how to select names for locales + * @return a ULocaleDisplayNames instance * @param pErrorCode the status code * @stable ICU 4.4 */ @@ -106,7 +106,7 @@ U_NAMESPACE_END * Returns the locale used to determine the display names. This is * not necessarily the same locale passed to {@link #uldn_open}. * @param ldn the LocaleDisplayNames instance - * @return the display locale + * @return the display locale * @stable ICU 4.4 */ U_CAPI const char * U_EXPORT2 @@ -275,14 +275,14 @@ uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn, * Returns an instance of LocaleDisplayNames that returns names formatted * for the provided locale, using the provided UDisplayContext settings. * -* @param locale The display locale +* @param locale The display locale * @param contexts List of one or more context settings (e.g. for dialect * handling, capitalization, etc. * @param length Number of items in the contexts list * @param pErrorCode Pointer to UErrorCode input/output status. If at entry this indicates * a failure status, the function will do nothing; otherwise this will be -* updated with any new status from the function. -* @return a ULocaleDisplayNames instance +* updated with any new status from the function. +* @return a ULocaleDisplayNames instance * @stable ICU 51 */ U_CAPI ULocaleDisplayNames * U_EXPORT2 @@ -295,7 +295,7 @@ uldn_openForContext(const char * locale, UDisplayContext *contexts, * @param type the UDisplayContextType whose value to return * @param pErrorCode Pointer to UErrorCode input/output status. If at entry this indicates * a failure status, the function will do nothing; otherwise this will be -* updated with any new status from the function. +* updated with any new status from the function. * @return the UDisplayContextValue for the specified type. * @stable ICU 51 */ diff --git a/deps/icu-small/source/common/unicode/uloc.h b/deps/icu-small/source/common/unicode/uloc.h index 56fb4c9b3769e0..b0bdbe1b87f48f 100644 --- a/deps/icu-small/source/common/unicode/uloc.h +++ b/deps/icu-small/source/common/unicode/uloc.h @@ -26,9 +26,9 @@ #include "unicode/utypes.h" #include "unicode/uenum.h" -/** +/** * \file - * \brief C API: Locale + * \brief C API: Locale * *

      ULoc C API for Locale

      * A Locale represents a specific geographical, political, @@ -46,9 +46,9 @@ *
        * \code
        *       newLanguage
      - *
      + * 
        *       newLanguage + newCountry
      - *
      + * 
        *       newLanguage + newCountry + newVariant
        * \endcode
        * 
      @@ -69,7 +69,7 @@ * http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html * *

      - * The third option requires another additional information--the + * The third option requires another additional information--the * Variant. * The Variant codes are vendor and browser-specific. * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX. @@ -119,7 +119,7 @@ *

      * The ICU provides a number of services that perform locale-sensitive * operations. For example, the unum_xxx functions format - * numbers, currency, or percentages in a locale-sensitive manner. + * numbers, currency, or percentages in a locale-sensitive manner. *

      * \htmlonly
      \endhtmlonly *
      @@ -127,12 +127,12 @@
        *     UErrorCode success = U_ZERO_ERROR;
        *     UNumberFormat *nf;
        *     const char* myLocale = "fr_FR";
      - *
      - *     nf = unum_open( UNUM_DEFAULT, NULL, success );
      + * 
      + *     nf = unum_open( UNUM_DEFAULT, NULL, success );          
        *     unum_close(nf);
        *     nf = unum_open( UNUM_CURRENCY, NULL, success );
        *     unum_close(nf);
      - *     nf = unum_open( UNUM_PERCENT, NULL, success );
      + *     nf = unum_open( UNUM_PERCENT, NULL, success );   
        *     unum_close(nf);
        * \endcode
        * 
      @@ -141,13 +141,13 @@ * and one without; the latter using the default locale. * \htmlonly
      \endhtmlonly *
      - * \code
      - *
      - *     nf = unum_open( UNUM_DEFAULT, myLocale, success );
      + * \code 
      + * 
      + *     nf = unum_open( UNUM_DEFAULT, myLocale, success );          
        *     unum_close(nf);
        *     nf = unum_open( UNUM_CURRENCY, myLocale, success );
        *     unum_close(nf);
      - *     nf = unum_open( UNUM_PERCENT, myLocale, success );
      + *     nf = unum_open( UNUM_PERCENT, myLocale, success );   
        *     unum_close(nf);
        * \endcode
        * 
      @@ -157,7 +157,7 @@ * just a mechanism for identifying these services. * *

      - * Each international service that performs locale-sensitive operations + * Each international service that performs locale-sensitive operations * allows you * to get all the available objects of that type. You can sift * through these objects by language, country, or variant, @@ -172,22 +172,22 @@ * int32_t uloc_countAvailable(); * int32_t * uloc_getDisplayName(const char* localeID, - * const char* inLocaleID, + * const char* inLocaleID, * UChar* result, * int32_t maxResultSize, * UErrorCode* err); - * + * * \endcode *

    * \htmlonly\endhtmlonly *

    - * Concerning POSIX/RFC1766 Locale IDs, + * Concerning POSIX/RFC1766 Locale IDs, * the getLanguage/getCountry/getVariant/getName functions do understand * the POSIX type form of language_COUNTRY.ENCODING\@VARIANT * and if there is not an ICU-stype variant, uloc_getVariant() for example * will return the one listed after the \@at sign. As well, the hyphen * "-" is recognized as a country/variant separator similarly to RFC1766. - * So for example, "en-us" will be interpreted as en_US. + * So for example, "en-us" will be interpreted as en_US. * As a result, uloc_getName() is far from a no-op, and will have the * effect of converting POSIX/RFC1766 IDs into ICU form, although it does * NOT map any of the actual codes (i.e. russian->ru) in any way. @@ -304,7 +304,7 @@ /** * Unicode code point for '=' for assigning value to a keyword. * @see ULOC_KEYWORD_ASSIGN - * @stable ICU 4.6 + * @stable ICU 4.6 */ #define ULOC_KEYWORD_ASSIGN_UNICODE 0x3D @@ -323,31 +323,31 @@ /** * Constants for *_getLocale() - * Allow user to select whether she wants information on + * Allow user to select whether she wants information on * requested, valid or actual locale. * For example, a collator for "en_US_CALIFORNIA" was - * requested. In the current state of ICU (2.0), + * requested. In the current state of ICU (2.0), * the requested locale is "en_US_CALIFORNIA", * the valid locale is "en_US" (most specific locale supported by ICU) - * and the actual locale is "root" (the collation data comes unmodified + * and the actual locale is "root" (the collation data comes unmodified * from the UCA) - * The locale is considered supported by ICU if there is a core ICU bundle + * The locale is considered supported by ICU if there is a core ICU bundle * for that locale (although it may be empty). * @stable ICU 2.1 */ typedef enum { - /** This is locale the data actually comes from + /** This is locale the data actually comes from * @stable ICU 2.1 */ ULOC_ACTUAL_LOCALE = 0, - /** This is the most specific locale supported by ICU + /** This is the most specific locale supported by ICU * @stable ICU 2.1 */ ULOC_VALID_LOCALE = 1, #ifndef U_HIDE_DEPRECATED_API /** This is the requested locale - * @deprecated ICU 2.8 + * @deprecated ICU 2.8 */ ULOC_REQUESTED_LOCALE = 2, @@ -361,12 +361,12 @@ typedef enum { #ifndef U_HIDE_SYSTEM_API /** - * Gets ICU's default locale. + * Gets ICU's default locale. * The returned string is a snapshot in time, and will remain valid * and unchanged even when uloc_setDefault() is called. * The returned storage is owned by ICU, and must not be altered or deleted * by the caller. - * + * * @return the ICU default locale * @system * @stable ICU 2.0 @@ -375,7 +375,7 @@ U_CAPI const char* U_EXPORT2 uloc_getDefault(void); /** - * Sets ICU's default locale. + * Sets ICU's default locale. * By default (without calling this function), ICU's default locale will be based * on information obtained from the underlying system environment. *

    @@ -401,11 +401,11 @@ uloc_setDefault(const char* localeID, * * @param localeID the locale to get the ISO language code with * @param language the language code for localeID - * @param languageCapacity the size of the language buffer to store the + * @param languageCapacity the size of the language buffer to store the * language code with * @param err error information if retrieving the language code failed - * @return the actual buffer size needed for the language code. If it's greater - * than languageCapacity, the returned language code will be truncated. + * @return the actual buffer size needed for the language code. If it's greater + * than languageCapacity, the returned language code will be truncated. * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 @@ -419,11 +419,11 @@ uloc_getLanguage(const char* localeID, * * @param localeID the locale to get the ISO language code with * @param script the language code for localeID - * @param scriptCapacity the size of the language buffer to store the + * @param scriptCapacity the size of the language buffer to store the * language code with * @param err error information if retrieving the language code failed - * @return the actual buffer size needed for the language code. If it's greater - * than scriptCapacity, the returned language code will be truncated. + * @return the actual buffer size needed for the language code. If it's greater + * than scriptCapacity, the returned language code will be truncated. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 @@ -437,11 +437,11 @@ uloc_getScript(const char* localeID, * * @param localeID the locale to get the country code with * @param country the country code for localeID - * @param countryCapacity the size of the country buffer to store the + * @param countryCapacity the size of the country buffer to store the * country code with * @param err error information if retrieving the country code failed - * @return the actual buffer size needed for the country code. If it's greater - * than countryCapacity, the returned country code will be truncated. + * @return the actual buffer size needed for the country code. If it's greater + * than countryCapacity, the returned country code will be truncated. * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 @@ -455,11 +455,11 @@ uloc_getCountry(const char* localeID, * * @param localeID the locale to get the variant code with * @param variant the variant code for localeID - * @param variantCapacity the size of the variant buffer to store the + * @param variantCapacity the size of the variant buffer to store the * variant code with * @param err error information if retrieving the variant code failed - * @return the actual buffer size needed for the variant code. If it's greater - * than variantCapacity, the returned variant code will be truncated. + * @return the actual buffer size needed for the variant code. If it's greater + * than variantCapacity, the returned variant code will be truncated. * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 @@ -481,8 +481,8 @@ uloc_getVariant(const char* localeID, * @param name fill in buffer for the name without keywords. * @param nameCapacity capacity of the fill in buffer. * @param err error information if retrieving the full name failed - * @return the actual buffer size needed for the full name. If it's greater - * than nameCapacity, the returned full name will be truncated. + * @return the actual buffer size needed for the full name. If it's greater + * than nameCapacity, the returned full name will be truncated. * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 @@ -501,11 +501,11 @@ uloc_getName(const char* localeID, * * @param localeID the locale to get the full name with * @param name the full name for localeID - * @param nameCapacity the size of the name buffer to store the + * @param nameCapacity the size of the name buffer to store the * full name with * @param err error information if retrieving the full name failed - * @return the actual buffer size needed for the full name. If it's greater - * than nameCapacity, the returned full name will be truncated. + * @return the actual buffer size needed for the full name. If it's greater + * than nameCapacity, the returned full name will be truncated. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 @@ -754,11 +754,11 @@ uloc_getDisplayKeywordValue( const char* locale, * inLocale would result in "Anglais", while passing Locale::getGerman() * for inLocale would result in "Englisch". NULL may be used to specify the default. * @param result the displayable name for localeID - * @param maxResultSize the size of the name buffer to store the + * @param maxResultSize the size of the name buffer to store the * displayable full name with * @param err error information if retrieving the displayable name failed - * @return the actual buffer size needed for the displayable name. If it's greater - * than maxResultSize, the returned displayable name will be truncated. + * @return the actual buffer size needed for the displayable name. If it's greater + * than maxResultSize, the returned displayable name will be truncated. * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 @@ -841,7 +841,7 @@ typedef enum ULocAvailableType { * @internal */ ULOC_AVAILABLE_COUNT -#endif +#endif /* U_HIDE_INTERNAL_API */ } ULocAvailableType; /** @@ -916,16 +916,16 @@ uloc_getParent(const char* localeID, * ICU format. It does NOT map aliased names in any way. * See the top of this header file. * - * This API strips off the keyword part, so "de_DE\@collation=phonebook" - * will become "de_DE". + * This API strips off the keyword part, so "de_DE\@collation=phonebook" + * will become "de_DE". * This API supports preflighting. * * @param localeID the locale to get the full name with * @param name fill in buffer for the name without keywords. * @param nameCapacity capacity of the fill in buffer. * @param err error information if retrieving the full name failed - * @return the actual buffer size needed for the full name. If it's greater - * than nameCapacity, the returned full name will be truncated. + * @return the actual buffer size needed for the full name. If it's greater + * than nameCapacity, the returned full name will be truncated. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 @@ -949,7 +949,7 @@ uloc_openKeywords(const char* localeID, /** * Get the value for a keyword. Locale name does not need to be normalized. - * + * * @param localeID locale name containing the keyword ("de_DE@currency=EURO;collation=PHONEBOOK") * @param keywordName name of the keyword for which we want the value; must not be * NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive. @@ -984,7 +984,7 @@ uloc_getKeywordValue(const char* localeID, * @param keywordName name of the keyword to be set; must not be * NULL or empty, and must consist only of [A-Za-z0-9]. Case insensitive. * @param keywordValue value of the keyword to be set. If 0-length or - * NULL, will result in the keyword being removed; no error is given if + * NULL, will result in the keyword being removed; no error is given if * that keyword does not exist. Otherwise, must consist only of * [A-Za-z0-9] and [/_+-]. * @param buffer input buffer containing well-formed locale ID to be @@ -1035,7 +1035,7 @@ typedef enum { /** * Get the layout character orientation for the specified locale. - * + * * @param localeId locale name * @param status Error status * @return an enum indicating the layout orientation for characters. @@ -1047,7 +1047,7 @@ uloc_getCharacterOrientation(const char* localeId, /** * Get the layout line orientation for the specified locale. - * + * * @param localeId locale name * @param status Error status * @return an enum indicating the layout orientation for lines. @@ -1126,7 +1126,7 @@ uloc_acceptLanguageFromHTTP(char *result, int32_t resultAvailable, * @stable ICU 3.2 */ U_CAPI int32_t U_EXPORT2 -uloc_acceptLanguage(char *result, int32_t resultAvailable, +uloc_acceptLanguage(char *result, int32_t resultAvailable, UAcceptResult *outResult, const char **acceptList, int32_t acceptListCount, UEnumeration* availableLocales, @@ -1142,7 +1142,7 @@ uloc_acceptLanguage(char *result, int32_t resultAvailable, * @param localeCapacity the size of the output buffer * @param status an error is returned if the LCID is unrecognized or the output buffer * is too small - * @return actual the actual size of the locale ID, not including NUL-termination + * @return actual the actual size of the locale ID, not including NUL-termination * @stable ICU 3.8 */ U_CAPI int32_t U_EXPORT2 @@ -1264,8 +1264,8 @@ uloc_forLanguageTag(const char* langtag, UErrorCode* err); /** - * Returns a well-formed language tag for this locale ID. - *

    + * Returns a well-formed language tag for this locale ID. + *

    * Note: When strict is false, any locale * fields which do not satisfy the BCP47 syntax requirement will * be omitted from the result. When strict is @@ -1301,14 +1301,14 @@ uloc_toLanguageTag(const char* localeID, * then the pointer to the input keyword itself will be returned. * For example, * uloc_toUnicodeLocaleKey("ZZ") returns "ZZ". - * + * * @param keyword the input locale keyword (either legacy key * such as "collation" or BCP 47 Unicode locale extension * key such as "co"). * @return the well-formed BCP 47 Unicode locale extension key, * or NULL if the specified locale keyword cannot be * mapped to a well-formed BCP 47 Unicode locale extension - * key. + * key. * @see uloc_toLegacyKey * @stable ICU 54 */ @@ -1330,7 +1330,7 @@ uloc_toUnicodeLocaleKey(const char* keyword); * For example, * uloc_toUnicodeLocaleType("Foo", "Bar") returns "Bar", * uloc_toUnicodeLocaleType("variableTop", "00A4") returns "00A4". - * + * * @param keyword the locale keyword (either legacy key such as * "collation" or BCP 47 Unicode locale extension * key such as "co"). @@ -1350,7 +1350,7 @@ uloc_toUnicodeLocaleType(const char* keyword, const char* value); * Converts the specified keyword (BCP 47 Unicode locale extension key, or * legacy key) to the legacy key. For example, legacy key "collation" is * returned for the input BCP 47 Unicode locale extension key "co". - * + * * @param keyword the input locale keyword (either BCP 47 Unicode locale * extension key or legacy key). * @return the well-formed legacy key, or NULL if the specified diff --git a/deps/icu-small/source/common/unicode/umachine.h b/deps/icu-small/source/common/unicode/umachine.h index 219d1ee1911d02..09c887c80efd47 100644 --- a/deps/icu-small/source/common/unicode/umachine.h +++ b/deps/icu-small/source/common/unicode/umachine.h @@ -96,7 +96,7 @@ # define U_ATTRIBUTE_DEPRECATED __attribute__ ((deprecated)) /** * \def U_ATTRIBUTE_DEPRECATED - * This is used for Visual C++ specific attributes + * This is used for Visual C++ specific attributes * @internal */ #elif defined(_MSC_VER) && (_MSC_VER >= 1400) @@ -470,7 +470,7 @@ typedef int32_t UChar32; * This value is intended for sentinel values for APIs that * (take or) return single code points (UChar32). * It is outside of the Unicode code point range 0..0x10ffff. - * + * * For example, a "done" or "error" value in a new API * could be indicated with U_SENTINEL. * diff --git a/deps/icu-small/source/common/unicode/umisc.h b/deps/icu-small/source/common/unicode/umisc.h index a46fa323c8c1a3..213290b9afa33c 100644 --- a/deps/icu-small/source/common/unicode/umisc.h +++ b/deps/icu-small/source/common/unicode/umisc.h @@ -21,29 +21,29 @@ /** * \file - * \brief C API:misc definitions + * \brief C API:misc definitions * - * This file contains miscellaneous definitions for the C APIs. + * This file contains miscellaneous definitions for the C APIs. */ U_CDECL_BEGIN -/** A struct representing a range of text containing a specific field +/** A struct representing a range of text containing a specific field * @stable ICU 2.0 */ typedef struct UFieldPosition { /** - * The field + * The field * @stable ICU 2.0 */ int32_t field; /** - * The start of the text range containing field + * The start of the text range containing field * @stable ICU 2.0 */ int32_t beginIndex; - /** - * The limit of the text range containing field + /** + * The limit of the text range containing field * @stable ICU 2.0 */ int32_t endIndex; diff --git a/deps/icu-small/source/common/unicode/umutablecptrie.h b/deps/icu-small/source/common/unicode/umutablecptrie.h index 5325d58147ab1f..3b950055da7e68 100644 --- a/deps/icu-small/source/common/unicode/umutablecptrie.h +++ b/deps/icu-small/source/common/unicode/umutablecptrie.h @@ -31,7 +31,7 @@ U_CDECL_BEGIN /** * Mutable Unicode code point trie. * Fast map from Unicode code points (U+0000..U+10FFFF) to 32-bit integer values. - * For details see http://site.icu-project.org/design/struct/utrie + * For details see https://icu.unicode.org/design/struct/utrie * * Setting values (especially ranges) and lookup is fast. * The mutable trie is only somewhat space-efficient. diff --git a/deps/icu-small/source/common/unicode/unifilt.h b/deps/icu-small/source/common/unicode/unifilt.h index b0789d2e88fb91..0fcaf4b789c4c2 100644 --- a/deps/icu-small/source/common/unicode/unifilt.h +++ b/deps/icu-small/source/common/unicode/unifilt.h @@ -20,7 +20,7 @@ #include "unicode/unimatch.h" /** - * \file + * \file * \brief C++ API: Unicode Filter */ @@ -77,7 +77,7 @@ class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher * @return clone, or nullptr if an error occurred * @stable ICU 2.4 */ - virtual UnicodeFilter* clone() const = 0; + virtual UnicodeFilter* clone() const override = 0; /** * Returns true for characters that are in the selected @@ -93,7 +93,7 @@ class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher * and return the pointer. * @stable ICU 2.4 */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const override; /** * Implement UnicodeMatcher API. @@ -102,13 +102,13 @@ class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; /** * UnicodeFunctor API. Nothing to do. * @stable ICU 2.4 */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/common/unicode/unifunct.h b/deps/icu-small/source/common/unicode/unifunct.h index 2b1b766ea76187..8751302494bcdb 100644 --- a/deps/icu-small/source/common/unicode/unifunct.h +++ b/deps/icu-small/source/common/unicode/unifunct.h @@ -19,10 +19,10 @@ #include "unicode/uobject.h" /** - * \file + * \file * \brief C++ API: Unicode Functor */ - + U_NAMESPACE_BEGIN class UnicodeMatcher; @@ -93,14 +93,14 @@ class U_COMMON_API UnicodeFunctor : public UObject { * *

    Concrete subclasses of UnicodeFunctor should use the macro * UOBJECT_DEFINE_RTTI_IMPLEMENTATION from uobject.h to - * provide definitios getStaticClassID and getDynamicClassID. + * provide definitions getStaticClassID and getDynamicClassID. * * @return The class ID for this object. All objects of a given * class have the same class ID. Objects of other classes have * different class IDs. * @stable ICU 2.4 */ - virtual UClassID getDynamicClassID(void) const = 0; + virtual UClassID getDynamicClassID(void) const override = 0; /** * Set the data object associated with this functor. The data diff --git a/deps/icu-small/source/common/unicode/unimatch.h b/deps/icu-small/source/common/unicode/unimatch.h index 10efd3d007a5ca..302332f4558c3e 100644 --- a/deps/icu-small/source/common/unicode/unimatch.h +++ b/deps/icu-small/source/common/unicode/unimatch.h @@ -13,7 +13,7 @@ #include "unicode/utypes.h" /** - * \file + * \file * \brief C++ API: Unicode Matcher */ @@ -39,7 +39,7 @@ enum UMatchDegree { * @stable ICU 2.4 */ U_MISMATCH, - + /** * Constant returned by matches() indicating a * partial match between the text and this matcher. This value is @@ -51,7 +51,7 @@ enum UMatchDegree { * @stable ICU 2.4 */ U_PARTIAL_MATCH, - + /** * Constant returned by matches() indicating a * complete match between the text and this matcher. For an @@ -85,7 +85,7 @@ class U_COMMON_API UnicodeMatcher /* not : public UObject because this is an int * Matching in the forward direction is indicated by limit > * offset. Characters from offset forwards to limit-1 will be * considered for matching. - * + * * Matching in the reverse direction is indicated by limit < * offset. Characters from offset backwards to limit+1 will be * considered for matching. diff --git a/deps/icu-small/source/common/unicode/uniset.h b/deps/icu-small/source/common/unicode/uniset.h index 7344a29a89b017..730337a3535ea8 100644 --- a/deps/icu-small/source/common/unicode/uniset.h +++ b/deps/icu-small/source/common/unicode/uniset.h @@ -124,8 +124,8 @@ class RuleCharacterIterator; * "[:Lu:]" and the Perl-like syntax "\\p{Lu}" are recognized. For a * complete list of supported property patterns, see the User's Guide * for UnicodeSet at - * - * http://icu-project.org/userguide/unicodeSet.html. + * + * https://unicode-org.github.io/icu/userguide/strings/unicodeset. * Actual determination of property data is defined by the underlying * Unicode database as implemented by UCharacter. * @@ -136,6 +136,13 @@ class RuleCharacterIterator; * their delimiters; "[:^foo]" and "\\P{foo}". In any other location, * '^' has no special meaning. * + *

    Since ICU 70, "[^...]", "[:^foo]", "\\P{foo}", and "[:binaryProperty=No:]" + * perform a “code point complement” (all code points minus the original set), + * removing all multicharacter strings, + * equivalent to .complement().removeAllStrings(). + * The complement() API function continues to perform a + * symmetric difference with all code points and thus retains all multicharacter strings. + * *

    Ranges are indicated by placing two a '-' between two * characters, as in "a-z". This specifies the range of all * characters from the left to the right, in Unicode order. If the @@ -217,9 +224,8 @@ class RuleCharacterIterator; * * * hex :=  - * any character for which - * Character.digit(c, 16) - * returns a non-negative result + * '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' |
    + *     'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f'
    * * * property :=  @@ -263,7 +269,7 @@ class RuleCharacterIterator; * * * \htmlonly\endhtmlonly - * + * *

    Note: * - Most UnicodeSet methods do not take a UErrorCode parameter because * there are usually very few opportunities for failure other than a shortage @@ -485,14 +491,14 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @return true if the specified set is equal to this set. * @stable ICU 2.0 */ - virtual UBool operator==(const UnicodeSet& o) const; + virtual bool operator==(const UnicodeSet& o) const; /** * Compares the specified object with this set for equality. Returns * true if the specified set is not equal to this set. * @stable ICU 2.0 */ - inline UBool operator!=(const UnicodeSet& o) const; + inline bool operator!=(const UnicodeSet& o) const; /** * Returns a copy of this object. All UnicodeFunctor objects have @@ -503,7 +509,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @see cloneAsThawed * @stable ICU 2.0 */ - virtual UnicodeSet* clone() const; + virtual UnicodeSet* clone() const override; /** * Returns the hash code value for this set. @@ -533,7 +539,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @stable ICU 4.2 */ inline static const UnicodeSet *fromUSet(const USet *uset); - + /** * Produce a USet * pointer for this UnicodeSet. * USet is the plain C type for UnicodeSet @@ -705,7 +711,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @stable ICU 2.0 */ virtual UnicodeString& toPattern(UnicodeString& result, - UBool escapeUnprintable = false) const; + UBool escapeUnprintable = false) const override; /** * Modifies this set to contain those code points which have the given value @@ -771,8 +777,12 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * Note than the elements of a set may include both individual * codepoints and strings. * + * This is slower than getRangeCount() because + * it counts the code points of all ranges. + * * @return the number of elements in this set (its cardinality). * @stable ICU 2.0 + * @see getRangeCount */ virtual int32_t size(void) const; @@ -784,6 +794,14 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { */ virtual UBool isEmpty(void) const; +#ifndef U_HIDE_DRAFT_API + /** + * @return true if this set contains multi-character strings or the empty string. + * @draft ICU 70 + */ + UBool hasStrings() const; +#endif // U_HIDE_DRAFT_API + /** * Returns true if this set contains the given character. * This function works faster with a frozen set. @@ -791,7 +809,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @return true if the test condition is met * @stable ICU 2.0 */ - virtual UBool contains(UChar32 c) const; + virtual UBool contains(UChar32 c) const override; /** * Returns true if this set contains every character @@ -1000,7 +1018,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; private: /** @@ -1049,7 +1067,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * @param toUnionTo the set into which to union the source characters * @stable ICU 2.4 */ - virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; + virtual void addMatchSetTo(UnicodeSet& toUnionTo) const override; /** * Returns the index of the given character within this set, where @@ -1064,8 +1082,14 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { /** * Returns the character at the given index within this set, where * the set is ordered by ascending code point. If the index is - * out of range, return (UChar32)-1. The inverse of this method is - * indexOf(). + * out of range for characters, returns (UChar32)-1. + * The inverse of this method is indexOf(). + * + * For iteration, this is slower than UnicodeSetIterator or + * getRangeCount()/getRangeStart()/getRangeEnd(), + * because for each call it skips linearly over index + * characters in the ranges. + * * @param index an index from 0..size()-1 * @return the character at the given index, or (UChar32)-1. * @stable ICU 2.4 @@ -1258,13 +1282,18 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { UnicodeSet& remove(const UnicodeString& s); /** - * Inverts this set. This operation modifies this set so that - * its value is its complement. This is equivalent to + * This is equivalent to * complement(MIN_VALUE, MAX_VALUE). + * + * Note: This performs a symmetric difference with all code points + * and thus retains all multicharacter strings. + * In order to achieve a “code point complement” (all code points minus this set), + * the easiest is to .complement().removeAllStrings(). + * * A frozen set will not be modified. * @stable ICU 2.0 */ - virtual UnicodeSet& complement(void); + virtual UnicodeSet& complement(); /** * Complements the specified range in this set. Any character in @@ -1504,7 +1533,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * different class IDs. * @stable ICU 2.4 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; private: @@ -1525,7 +1554,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * is the given value. This is used by RuleBasedTransliterator for * indexing. */ - virtual UBool matchesIndexValue(uint8_t v) const; + virtual UBool matchesIndexValue(uint8_t v) const override; private: friend class RBBIRuleScanner; @@ -1567,7 +1596,6 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { void swapBuffers(void); UBool allocateStrings(UErrorCode &status); - UBool hasStrings() const; int32_t stringsSize() const; UBool stringsContains(const UnicodeString &s) const; @@ -1581,6 +1609,9 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { static void _appendToPat(UnicodeString& buf, UChar32 c, UBool escapeUnprintable); + static void _appendToPat(UnicodeString &result, UChar32 start, UChar32 end, + UBool escapeUnprintable); + //---------------------------------------------------------------- // Implementation: Fundamental operators //---------------------------------------------------------------- @@ -1608,7 +1639,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { * * The original design document is out of date, but still useful. * Ignore the property and value names: - * http://source.icu-project.org/repos/icu/icuhtml/trunk/design/unicodeset_properties.html + * https://htmlpreview.github.io/?https://github.com/unicode-org/icu-docs/blob/main/design/unicodeset_properties.html * * Recognized syntax: * @@ -1693,7 +1724,7 @@ class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter { -inline UBool UnicodeSet::operator!=(const UnicodeSet& o) const { +inline bool UnicodeSet::operator!=(const UnicodeSet& o) const { return !operator==(o); } diff --git a/deps/icu-small/source/common/unicode/unistr.h b/deps/icu-small/source/common/unicode/unistr.h index 85bd96495150d3..b3c99481079388 100644 --- a/deps/icu-small/source/common/unicode/unistr.h +++ b/deps/icu-small/source/common/unicode/unistr.h @@ -325,7 +325,7 @@ class U_COMMON_API UnicodeString : public Replaceable * false otherwise. * @stable ICU 2.0 */ - inline UBool operator== (const UnicodeString& text) const; + inline bool operator== (const UnicodeString& text) const; /** * Inequality operator. Performs only bitwise comparison. @@ -334,7 +334,7 @@ class U_COMMON_API UnicodeString : public Replaceable * true otherwise. * @stable ICU 2.0 */ - inline UBool operator!= (const UnicodeString& text) const; + inline bool operator!= (const UnicodeString& text) const; /** * Greater than operator. Performs only bitwise comparison. @@ -1526,7 +1526,7 @@ class U_COMMON_API UnicodeString : public Replaceable */ virtual void extractBetween(int32_t start, int32_t limit, - UnicodeString& target) const; + UnicodeString& target) const override; /** * Copy the characters in the range @@ -1545,7 +1545,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @param target the target buffer for extraction, can be NULL * if targetLength is 0 * @param targetCapacity the length of the target buffer - * @param inv Signature-distinguishing paramater, use US_INV. + * @param inv Signature-distinguishing parameter, use US_INV. * @return the output string length, not including the terminating NUL * @stable ICU 3.2 */ @@ -2456,14 +2456,14 @@ class U_COMMON_API UnicodeString : public Replaceable */ virtual void handleReplaceBetween(int32_t start, int32_t limit, - const UnicodeString& text); + const UnicodeString& text) override; /** * Replaceable API * @return true if it has MetaData * @stable ICU 2.4 */ - virtual UBool hasMetaData() const; + virtual UBool hasMetaData() const override; /** * Copy a substring of this object, retaining attribute (out-of-band) @@ -2478,7 +2478,7 @@ class U_COMMON_API UnicodeString : public Replaceable * dest >= limit`. * @stable ICU 2.0 */ - virtual void copy(int32_t start, int32_t limit, int32_t dest); + virtual void copy(int32_t start, int32_t limit, int32_t dest) override; /* Search and replace operations */ @@ -3274,7 +3274,7 @@ class U_COMMON_API UnicodeString : public Replaceable * \endcode * @param src String using only invariant characters. * @param textLength Length of src, or -1 if NUL-terminated. - * @param inv Signature-distinguishing paramater, use US_INV. + * @param inv Signature-distinguishing parameter, use US_INV. * * @see US_INV * @stable ICU 3.2 @@ -3338,7 +3338,7 @@ class U_COMMON_API UnicodeString : public Replaceable * @see getDynamicClassID * @stable ICU 2.6 */ - virtual UnicodeString *clone() const; + virtual UnicodeString *clone() const override; /** Destructor. * @stable ICU 2.0 @@ -3444,7 +3444,7 @@ class U_COMMON_API UnicodeString : public Replaceable * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; //======================================== // Implementation methods @@ -3455,21 +3455,21 @@ class U_COMMON_API UnicodeString : public Replaceable * Implement Replaceable::getLength() (see jitterbug 1027). * @stable ICU 2.4 */ - virtual int32_t getLength() const; + virtual int32_t getLength() const override; /** * The change in Replaceable to use virtual getCharAt() allows * UnicodeString::charAt() to be inline again (see jitterbug 709). * @stable ICU 2.4 */ - virtual char16_t getCharAt(int32_t offset) const; + virtual char16_t getCharAt(int32_t offset) const override; /** * The change in Replaceable to use virtual getChar32At() allows * UnicodeString::char32At() to be inline again (see jitterbug 709). * @stable ICU 2.4 */ - virtual UChar32 getChar32At(int32_t offset) const; + virtual UChar32 getChar32At(int32_t offset) const override; private: // For char* constructors. Could be made public. @@ -3946,7 +3946,7 @@ UnicodeString::doCompare(int32_t start, } } -inline UBool +inline bool UnicodeString::operator== (const UnicodeString& text) const { if(isBogus()) { @@ -3957,7 +3957,7 @@ UnicodeString::operator== (const UnicodeString& text) const } } -inline UBool +inline bool UnicodeString::operator!= (const UnicodeString& text) const { return (! operator==(text)); } diff --git a/deps/icu-small/source/common/unicode/unorm.h b/deps/icu-small/source/common/unicode/unorm.h index c3c57582d449d5..38fb8951557c0f 100644 --- a/deps/icu-small/source/common/unicode/unorm.h +++ b/deps/icu-small/source/common/unicode/unorm.h @@ -115,7 +115,7 @@ * unorm_normalize(UNORM_FCD) may be implemented with UNORM_NFD. * * For more details on FCD see the collation design document: - * http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm + * https://htmlpreview.github.io/?https://github.com/unicode-org/icu-docs/blob/main/design/collation/ICU_collation_design.htm * * ICU collation performs either NFD or FCD normalization automatically if normalization * is turned on for the collator object. diff --git a/deps/icu-small/source/common/unicode/uobject.h b/deps/icu-small/source/common/unicode/uobject.h index 6a137af83c2456..25a8330f9ac9d5 100644 --- a/deps/icu-small/source/common/unicode/uobject.h +++ b/deps/icu-small/source/common/unicode/uobject.h @@ -37,10 +37,10 @@ * Previously, define this to define the throw() specification so * certain functions do not throw any exceptions * - * UMemory operator new methods should have the throw() specification - * appended to them, so that the compiler adds the additional NULL check - * before calling constructors. Without, if operator new returns NULL the - * constructor is still called, and if the constructor references member + * UMemory operator new methods should have the throw() specification + * appended to them, so that the compiler adds the additional NULL check + * before calling constructors. Without, if operator new returns NULL the + * constructor is still called, and if the constructor references member * data, (which it typically does), the result is a segmentation violation. * * @stable ICU 4.2. Since ICU 64, Use U_NOEXCEPT instead. See ICU-20422. @@ -116,7 +116,7 @@ class U_COMMON_API UMemory { public: /* test versions for debugging shaper heap memory problems */ -#ifdef SHAPER_MEMORY_DEBUG +#ifdef SHAPER_MEMORY_DEBUG static void * NewArray(int size, int count); static void * GrowArray(void * array, int newSize ); static void FreeArray(void * array ); @@ -175,19 +175,19 @@ class U_COMMON_API UMemory { #if U_HAVE_DEBUG_LOCATION_NEW /** * This method overrides the MFC debug version of the operator new - * + * * @param size The requested memory size * @param file The file where the allocation was requested - * @param line The line where the allocation was requested - */ + * @param line The line where the allocation was requested + */ static void * U_EXPORT2 operator new(size_t size, const char* file, int line) U_NOEXCEPT; /** * This method provides a matching delete for the MFC debug new - * + * * @param p The pointer to the allocated memory * @param file The file where the allocation was requested - * @param line The line where the allocation was requested - */ + * @param line The line where the allocation was requested + */ static void U_EXPORT2 operator delete(void* p, const char* file, int line) U_NOEXCEPT; #endif /* U_HAVE_DEBUG_LOCATION_NEW */ #endif /* U_OVERRIDE_CXX_ALLOCATION */ @@ -262,8 +262,8 @@ class U_COMMON_API UObject : public UMemory { // UObject &operator=(const UObject &other) { return *this; } // comparison operators - virtual inline UBool operator==(const UObject &other) const { return this==&other; } - inline UBool operator!=(const UObject &other) const { return !operator==(other); } + virtual inline bool operator==(const UObject &other) const { return this==&other; } + inline bool operator!=(const UObject &other) const { return !operator==(other); } // clone() commented out from the base class: // some compilers do not support co-variant return types diff --git a/deps/icu-small/source/common/unicode/urename.h b/deps/icu-small/source/common/unicode/urename.h index 737f4b308ef83f..4605f632ea8c91 100644 --- a/deps/icu-small/source/common/unicode/urename.h +++ b/deps/icu-small/source/common/unicode/urename.h @@ -58,6 +58,11 @@ /* C exports renaming data */ +#define CreateLSTMBreakEngine U_ICU_ENTRY_POINT_RENAME(CreateLSTMBreakEngine) +#define CreateLSTMData U_ICU_ENTRY_POINT_RENAME(CreateLSTMData) +#define CreateLSTMDataForScript U_ICU_ENTRY_POINT_RENAME(CreateLSTMDataForScript) +#define DeleteLSTMData U_ICU_ENTRY_POINT_RENAME(DeleteLSTMData) +#define LSTMDataName U_ICU_ENTRY_POINT_RENAME(LSTMDataName) #define T_CString_int64ToString U_ICU_ENTRY_POINT_RENAME(T_CString_int64ToString) #define T_CString_integerToString U_ICU_ENTRY_POINT_RENAME(T_CString_integerToString) #define T_CString_stringToInteger U_ICU_ENTRY_POINT_RENAME(T_CString_stringToInteger) @@ -381,6 +386,7 @@ #define u_strcmpFold U_ICU_ENTRY_POINT_RENAME(u_strcmpFold) #define u_strcpy U_ICU_ENTRY_POINT_RENAME(u_strcpy) #define u_strcspn U_ICU_ENTRY_POINT_RENAME(u_strcspn) +#define u_stringHasBinaryProperty U_ICU_ENTRY_POINT_RENAME(u_stringHasBinaryProperty) #define u_strlen U_ICU_ENTRY_POINT_RENAME(u_strlen) #define u_strncasecmp U_ICU_ENTRY_POINT_RENAME(u_strncasecmp) #define u_strncat U_ICU_ENTRY_POINT_RENAME(u_strncat) @@ -1575,6 +1581,7 @@ #define ures_countArrayItems U_ICU_ENTRY_POINT_RENAME(ures_countArrayItems) #define ures_findResource U_ICU_ENTRY_POINT_RENAME(ures_findResource) #define ures_findSubResource U_ICU_ENTRY_POINT_RENAME(ures_findSubResource) +#define ures_getAllChildrenWithFallback U_ICU_ENTRY_POINT_RENAME(ures_getAllChildrenWithFallback) #define ures_getAllItemsWithFallback U_ICU_ENTRY_POINT_RENAME(ures_getAllItemsWithFallback) #define ures_getBinary U_ICU_ENTRY_POINT_RENAME(ures_getBinary) #define ures_getByIndex U_ICU_ENTRY_POINT_RENAME(ures_getByIndex) @@ -1696,9 +1703,11 @@ #define uset_freeze U_ICU_ENTRY_POINT_RENAME(uset_freeze) #define uset_getItem U_ICU_ENTRY_POINT_RENAME(uset_getItem) #define uset_getItemCount U_ICU_ENTRY_POINT_RENAME(uset_getItemCount) +#define uset_getRangeCount U_ICU_ENTRY_POINT_RENAME(uset_getRangeCount) #define uset_getSerializedRange U_ICU_ENTRY_POINT_RENAME(uset_getSerializedRange) #define uset_getSerializedRangeCount U_ICU_ENTRY_POINT_RENAME(uset_getSerializedRangeCount) #define uset_getSerializedSet U_ICU_ENTRY_POINT_RENAME(uset_getSerializedSet) +#define uset_hasStrings U_ICU_ENTRY_POINT_RENAME(uset_hasStrings) #define uset_indexOf U_ICU_ENTRY_POINT_RENAME(uset_indexOf) #define uset_isEmpty U_ICU_ENTRY_POINT_RENAME(uset_isEmpty) #define uset_isFrozen U_ICU_ENTRY_POINT_RENAME(uset_isFrozen) diff --git a/deps/icu-small/source/common/unicode/urep.h b/deps/icu-small/source/common/unicode/urep.h index c54ba7c4661414..932202ddb04b1c 100644 --- a/deps/icu-small/source/common/unicode/urep.h +++ b/deps/icu-small/source/common/unicode/urep.h @@ -88,7 +88,7 @@ typedef struct UReplaceableCallbacks { */ UChar32 (*char32At)(const UReplaceable* rep, int32_t offset); - + /** * Function pointer that replaces text between start and limit in * this text with the given text. Attributes (out of band info) @@ -110,7 +110,7 @@ typedef struct UReplaceableCallbacks { int32_t limit, const UChar* text, int32_t textLength); - + /** * Function pointer that copies the characters in the range * [start, limit) into the array dst. @@ -148,7 +148,7 @@ typedef struct UReplaceableCallbacks { void (*copy)(UReplaceable* rep, int32_t start, int32_t limit, - int32_t dest); + int32_t dest); } UReplaceableCallbacks; diff --git a/deps/icu-small/source/common/unicode/ures.h b/deps/icu-small/source/common/unicode/ures.h index fff84043e84785..a6c43f9537a55e 100644 --- a/deps/icu-small/source/common/unicode/ures.h +++ b/deps/icu-small/source/common/unicode/ures.h @@ -44,9 +44,9 @@ * locale and then ask it for individual resources. *

    * Resource bundles in ICU4C are currently defined using text files which conform to the following - * BNF definition. + * BNF definition. * More on resource bundle concepts and syntax can be found in the - * Users Guide. + * Users Guide. *

    */ diff --git a/deps/icu-small/source/common/unicode/uscript.h b/deps/icu-small/source/common/unicode/uscript.h index 8448afda761550..6cb15328085b77 100644 --- a/deps/icu-small/source/common/unicode/uscript.h +++ b/deps/icu-small/source/common/unicode/uscript.h @@ -484,6 +484,17 @@ typedef enum UScriptCode { /** @stable ICU 66 */ USCRIPT_YEZIDI = 192,/* Yezi */ + /** @stable ICU 70 */ + USCRIPT_CYPRO_MINOAN = 193,/* Cpmn */ + /** @stable ICU 70 */ + USCRIPT_OLD_UYGHUR = 194,/* Ougr */ + /** @stable ICU 70 */ + USCRIPT_TANGSA = 195,/* Tnsa */ + /** @stable ICU 70 */ + USCRIPT_TOTO = 196,/* Toto */ + /** @stable ICU 70 */ + USCRIPT_VITHKUQI = 197,/* Vith */ + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UScriptCode value. @@ -491,7 +502,7 @@ typedef enum UScriptCode { * * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - USCRIPT_CODE_LIMIT = 193 + USCRIPT_CODE_LIMIT = 198 #endif // U_HIDE_DEPRECATED_API } UScriptCode; diff --git a/deps/icu-small/source/common/unicode/uset.h b/deps/icu-small/source/common/unicode/uset.h index a32f52c678a28a..2ef352ef563b02 100644 --- a/deps/icu-small/source/common/unicode/uset.h +++ b/deps/icu-small/source/common/unicode/uset.h @@ -60,7 +60,7 @@ enum { * Ignore white space within patterns unless quoted or escaped. * @stable ICU 2.4 */ - USET_IGNORE_SPACE = 1, + USET_IGNORE_SPACE = 1, /** * Enable case insensitive matching. E.g., "[ab]" with this flag @@ -88,7 +88,7 @@ enum { * * @stable ICU 2.4 */ - USET_CASE_INSENSITIVE = 2, + USET_CASE_INSENSITIVE = 2, /** * Enable case insensitive matching. E.g., "[ab]" with this flag @@ -268,7 +268,7 @@ uset_openEmpty(void); /** * Creates a USet object that contains the range of characters - * start..end, inclusive. If start > end + * start..end, inclusive. If start > end * then an empty set is created (same as using uset_openEmpty()). * @param start first character of the range, inclusive * @param end last character of the range, inclusive @@ -405,11 +405,11 @@ uset_set(USet* set, /** * Modifies the set to represent the set specified by the given - * pattern. See the UnicodeSet class description for the syntax of + * pattern. See the UnicodeSet class description for the syntax of * the pattern language. See also the User Guide chapter about UnicodeSet. * Empties the set passed before applying the pattern. * A frozen set will not be modified. - * @param set The set to which the pattern is to be applied. + * @param set The set to which the pattern is to be applied. * @param pattern A pointer to UChar string specifying what characters are in the set. * The character at pattern[0] must be a '['. * @param patternLength The length of the UChar string. -1 if NUL terminated. @@ -417,14 +417,14 @@ uset_set(USet* set, * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE. * @param status Returns an error if the pattern cannot be parsed. * @return Upon successful parse, the value is either - * the index of the character after the closing ']' + * the index of the character after the closing ']' * of the parsed pattern. - * If the status code indicates failure, then the return value + * If the status code indicates failure, then the return value * is the index of the error in the source. * * @stable ICU 2.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uset_applyPattern(USet *set, const UChar *pattern, int32_t patternLength, uint32_t options, @@ -719,16 +719,21 @@ uset_retainAll(USet* set, const USet* retain); * possible space, without changing this object's value. * A frozen set will not be modified. * - * @param set the object on which to perfrom the compact + * @param set the object on which to perform the compact * @stable ICU 3.2 */ U_CAPI void U_EXPORT2 uset_compact(USet* set); /** - * Inverts this set. This operation modifies this set so that - * its value is its complement. This operation does not affect - * the multicharacter strings, if any. + * This is equivalent to + * uset_complementRange(set, 0, 0x10FFFF). + * + * Note: This performs a symmetric difference with all code points + * and thus retains all multicharacter strings. + * In order to achieve a “code point complement” (all code points minus this set), + * the easiest is to uset_complement(set); uset_removeAllStrings(set);. + * * A frozen set will not be modified. * @param set the set * @stable ICU 2.4 @@ -851,6 +856,16 @@ uset_removeAllStrings(USet* set); U_CAPI UBool U_EXPORT2 uset_isEmpty(const USet* set); +#ifndef U_HIDE_DRAFT_API +/** + * @param set the set + * @return true if this set contains multi-character strings or the empty string. + * @draft ICU 70 + */ +U_CAPI UBool U_EXPORT2 +uset_hasStrings(const USet *set); +#endif // U_HIDE_DRAFT_API + /** * Returns true if the given USet contains the given character. * This function works faster with a frozen set. @@ -901,8 +916,13 @@ uset_indexOf(const USet* set, UChar32 c); /** * Returns the character at the given index within this set, where * the set is ordered by ascending code point. If the index is - * out of range, return (UChar32)-1. The inverse of this method is - * indexOf(). + * out of range for characters, returns (UChar32)-1. + * The inverse of this method is indexOf(). + * + * For iteration, this is slower than uset_getRangeCount()/uset_getItemCount() + * with uset_getItem(), because for each call it skips linearly over index + * characters in the ranges. + * * @param set the set * @param charIndex an index from 0..size()-1 to obtain the char for * @return the character at the given index, or (UChar32)-1. @@ -912,16 +932,34 @@ U_CAPI UChar32 U_EXPORT2 uset_charAt(const USet* set, int32_t charIndex); /** - * Returns the number of characters and strings contained in the given - * USet. + * Returns the number of characters and strings contained in this set. + * The last (uset_getItemCount() - uset_getRangeCount()) items are strings. + * + * This is slower than uset_getRangeCount() and uset_getItemCount() because + * it counts the code points of all ranges. + * * @param set the set * @return a non-negative integer counting the characters and strings * contained in set * @stable ICU 2.4 + * @see uset_getRangeCount */ U_CAPI int32_t U_EXPORT2 uset_size(const USet* set); +#ifndef U_HIDE_DRAFT_API +/** + * @param set the set + * @return the number of ranges in this set. + * @draft ICU 70 + * @see uset_getItemCount + * @see uset_getItem + * @see uset_size + */ +U_CAPI int32_t U_EXPORT2 +uset_getRangeCount(const USet *set); +#endif // U_HIDE_DRAFT_API + /** * Returns the number of items in this set. An item is either a range * of characters or a single multicharacter string. @@ -935,20 +973,30 @@ uset_getItemCount(const USet* set); /** * Returns an item of this set. An item is either a range of - * characters or a single multicharacter string. + * characters or a single multicharacter string (which can be the empty string). + * + * If itemIndex is less than uset_getRangeCount(), then this function returns 0, + * and the range is *start..*end. + * + * If itemIndex is at least uset_getRangeCount() and less than uset_getItemCount(), then + * this function copies the string into str[strCapacity] and + * returns the length of the string (0 for the empty string). + * + * If itemIndex is out of range, then this function returns -1. + * + * Note that 0 is returned for each range as well as for the empty string. + * * @param set the set - * @param itemIndex a non-negative integer in the range 0.. - * uset_getItemCount(set)-1 - * @param start pointer to variable to receive first character - * in range, inclusive - * @param end pointer to variable to receive last character in range, - * inclusive + * @param itemIndex a non-negative integer in the range 0..uset_getItemCount(set)-1 + * @param start pointer to variable to receive first character in range, inclusive; + * can be NULL for a string item + * @param end pointer to variable to receive last character in range, inclusive; + * can be NULL for a string item * @param str buffer to receive the string, may be NULL * @param strCapacity capacity of str, or 0 if str is NULL - * @param ec error code - * @return the length of the string (>= 2), or 0 if the item is a - * range, in which case it is the range *start..*end, or -1 if - * itemIndex is out of range + * @param ec error code; U_INDEX_OUTOFBOUNDS_ERROR if the itemIndex is out of range + * @return the length of the string (0 or >= 2), or 0 if the item is a range, + * or -1 if the itemIndex is out of range * @stable ICU 2.4 */ U_CAPI int32_t U_EXPORT2 diff --git a/deps/icu-small/source/common/unicode/usetiter.h b/deps/icu-small/source/common/unicode/usetiter.h index 45d268a05c9b90..5834c308e41431 100644 --- a/deps/icu-small/source/common/unicode/usetiter.h +++ b/deps/icu-small/source/common/unicode/usetiter.h @@ -17,7 +17,7 @@ #include "unicode/unistr.h" /** - * \file + * \file * \brief C++ API: UnicodeSetIterator iterates over the contents of a UnicodeSet. */ @@ -33,9 +33,7 @@ class UnicodeString; * code points or ranges have been returned, it returns the * multicharacter strings of the UnicodeSet, if any. * - * This class is not intended to be subclassed. Consider any fields - * or methods declared as "protected" to be private. The use of - * protected in this class is an artifact of history. + * This class is not intended for public subclassing. * *

    To iterate over code points and strings, use a loop like this: *

    @@ -60,25 +58,23 @@ class UnicodeString;
      *   }
      * }
      * 
    + * + * To iterate over only the strings, start with skipToStrings(). + * * @author M. Davis * @stable ICU 2.4 */ -class U_COMMON_API UnicodeSetIterator : public UObject { - - protected: - +class U_COMMON_API UnicodeSetIterator U_FINAL : public UObject { /** * Value of codepoint if the iterator points to a string. * If codepoint == IS_STRING, then examine * string for the current iteration result. - * @stable ICU 2.4 */ enum { IS_STRING = -1 }; /** * Current code point, or the special value IS_STRING, if * the iterator points to a string. - * @stable ICU 2.4 */ UChar32 codepoint; @@ -89,7 +85,6 @@ class U_COMMON_API UnicodeSetIterator : public UObject { * iterating over code points using next(), or if * codepoint == IS_STRING, then the value of * codepointEnd is undefined. - * @stable ICU 2.4 */ UChar32 codepointEnd; @@ -97,7 +92,6 @@ class U_COMMON_API UnicodeSetIterator : public UObject { * If codepoint == IS_STRING, then string points * to the current string. If codepoint != IS_STRING, the * value of string is undefined. - * @stable ICU 2.4 */ const UnicodeString* string; @@ -165,14 +159,33 @@ class U_COMMON_API UnicodeSetIterator : public UObject { * Ownership of the returned string remains with the iterator. * The string is guaranteed to remain valid only until the iterator is * advanced to the next item, or until the iterator is deleted. - * + * * @stable ICU 2.4 */ const UnicodeString& getString(); +#ifndef U_HIDE_DRAFT_API + /** + * Skips over the remaining code points/ranges, if any. + * A following call to next() or nextRange() will yield a string, if there is one. + * No-op if next() would return false, or if it would yield a string anyway. + * + * @return *this + * @draft ICU 70 + * @see UnicodeSet#strings() + */ + inline UnicodeSetIterator &skipToStrings() { + // Finish code point/range iteration. + range = endRange; + endElement = -1; + nextElement = 0; + return *this; + } +#endif // U_HIDE_DRAFT_API + /** - * Advances the iteration position to the next element in the set, - * which can be either a single code point or a string. + * Advances the iteration position to the next element in the set, + * which can be either a single code point or a string. * If there are no more elements in the set, return false. * *

    @@ -242,71 +255,58 @@ class U_COMMON_API UnicodeSetIterator : public UObject { * * @stable ICU 2.4 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; // ======================= PRIVATES =========================== - protected: +private: // endElement and nextElements are really UChar32's, but we keep // them as signed int32_t's so we can do comparisons with // endElement set to -1. Leave them as int32_t's. /** The set - * @stable ICU 2.4 */ const UnicodeSet* set; /** End range - * @stable ICU 2.4 */ int32_t endRange; /** Range - * @stable ICU 2.4 */ int32_t range; /** End element - * @stable ICU 2.4 */ int32_t endElement; /** Next element - * @stable ICU 2.4 */ int32_t nextElement; - //UBool abbreviated; /** Next string - * @stable ICU 2.4 */ int32_t nextString; /** String count - * @stable ICU 2.4 */ int32_t stringCount; /** * Points to the string to use when the caller asks for a * string and the current iteration item is a code point, not a string. - * @internal */ UnicodeString *cpString; /** Copy constructor. Disallowed. - * @stable ICU 2.4 */ - UnicodeSetIterator(const UnicodeSetIterator&); // disallow + UnicodeSetIterator(const UnicodeSetIterator&) = delete; /** Assignment operator. Disallowed. - * @stable ICU 2.4 */ - UnicodeSetIterator& operator=(const UnicodeSetIterator&); // disallow + UnicodeSetIterator& operator=(const UnicodeSetIterator&) = delete; /** Load range - * @stable ICU 2.4 */ - virtual void loadRange(int32_t range); - + void loadRange(int32_t range); }; inline UBool UnicodeSetIterator::isString() const { - return codepoint == (UChar32)IS_STRING; + return codepoint < 0; } inline UChar32 UnicodeSetIterator::getCodepoint() const { diff --git a/deps/icu-small/source/common/unicode/ushape.h b/deps/icu-small/source/common/unicode/ushape.h index 3a4492caff0f04..14371edc8f9020 100644 --- a/deps/icu-small/source/common/unicode/ushape.h +++ b/deps/icu-small/source/common/unicode/ushape.h @@ -24,7 +24,7 @@ /** * \file * \brief C API: Arabic shaping - * + * */ /** @@ -117,7 +117,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, * This option is an alias to U_SHAPE_LENGTH_GROW_SHRINK * @stable ICU 4.2 */ -#define U_SHAPE_LAMALEF_RESIZE 0 +#define U_SHAPE_LAMALEF_RESIZE 0 /** * Memory option: the result must have the same length as the source. @@ -133,7 +133,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, * This option is an alias to U_SHAPE_LENGTH_FIXED_SPACES_NEAR * @stable ICU 4.2 */ -#define U_SHAPE_LAMALEF_NEAR 1 +#define U_SHAPE_LAMALEF_NEAR 1 /** * Memory option: the result must have the same length as the source. @@ -149,7 +149,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, * This option is an alias to U_SHAPE_LENGTH_FIXED_SPACES_AT_END * @stable ICU 4.2 */ -#define U_SHAPE_LAMALEF_END 2 +#define U_SHAPE_LAMALEF_END 2 /** * Memory option: the result must have the same length as the source. @@ -165,7 +165,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, * This option is an alias to U_SHAPE_LENGTH_FIXED_SPACES_AT_BEGINNING * @stable ICU 4.2 */ -#define U_SHAPE_LAMALEF_BEGIN 3 +#define U_SHAPE_LAMALEF_BEGIN 3 /** @@ -174,14 +174,14 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, * If there is no space at end, use spaces at beginning of the buffer. If there * is no space at beginning of the buffer, use spaces at the near (i.e. the space * after the LAMALEF character). - * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) + * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) * will be set in pErrorCode * - * Deshaping Mode: Perform the same function as the flag equals U_SHAPE_LAMALEF_END. + * Deshaping Mode: Perform the same function as the flag equals U_SHAPE_LAMALEF_END. * Affects: LamAlef options * @stable ICU 4.2 */ -#define U_SHAPE_LAMALEF_AUTO 0x10000 +#define U_SHAPE_LAMALEF_AUTO 0x10000 /** Bit mask for memory options. @stable ICU 2.0 */ #define U_SHAPE_LENGTH_MASK 0x10003 /* Changed old value 3 */ @@ -301,7 +301,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, /** Bit mask for digit type options. @stable ICU 2.0 */ #define U_SHAPE_DIGIT_TYPE_MASK 0x300 /* I need to change this from 0x3f00 to 0x300 */ -/** +/** * Tashkeel aggregation option: * Replaces any combination of U+0651 with one of * U+064C, U+064D, U+064E, U+064F, U+0650 with @@ -314,28 +314,28 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, /** Bit mask for tashkeel aggregation. @stable ICU 3.6 */ #define U_SHAPE_AGGREGATE_TASHKEEL_MASK 0x4000 -/** +/** * Presentation form option: * Don't replace Arabic Presentation Forms-A and Arabic Presentation Forms-B * characters with 0+06xx characters, before shaping. * @stable ICU 3.6 */ #define U_SHAPE_PRESERVE_PRESENTATION 0x8000 -/** Presentation form option: - * Replace Arabic Presentation Forms-A and Arabic Presentationo Forms-B with +/** Presentation form option: + * Replace Arabic Presentation Forms-A and Arabic Presentationo Forms-B with * their unshaped correspondents in range 0+06xx, before shaping. - * @stable ICU 3.6 + * @stable ICU 3.6 */ #define U_SHAPE_PRESERVE_PRESENTATION_NOOP 0 /** Bit mask for preserve presentation form. @stable ICU 3.6 */ #define U_SHAPE_PRESERVE_PRESENTATION_MASK 0x8000 -/* Seen Tail option */ +/* Seen Tail option */ /** * Memory option: the result must have the same length as the source. - * Shaping mode: The SEEN family character will expand into two characters using space near + * Shaping mode: The SEEN family character will expand into two characters using space near * the SEEN family character(i.e. the space after the character). - * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) + * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) * will be set in pErrorCode * * De-shaping mode: Any Seen character followed by Tail character will be @@ -346,17 +346,17 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, #define U_SHAPE_SEEN_TWOCELL_NEAR 0x200000 /** - * Bit mask for Seen memory options. + * Bit mask for Seen memory options. * @stable ICU 4.2 */ #define U_SHAPE_SEEN_MASK 0x700000 -/* YehHamza option */ +/* YehHamza option */ /** * Memory option: the result must have the same length as the source. - * Shaping mode: The YEHHAMZA character will expand into two characters using space near it + * Shaping mode: The YEHHAMZA character will expand into two characters using space near it * (i.e. the space after the character - * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) + * If there are no spaces found, an error U_NO_SPACE_AVAILABLE (as defined in utypes.h) * will be set in pErrorCode * * De-shaping mode: Any Yeh (final or isolated) character followed by Hamza character will be @@ -368,15 +368,15 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, /** - * Bit mask for YehHamza memory options. + * Bit mask for YehHamza memory options. * @stable ICU 4.2 */ #define U_SHAPE_YEHHAMZA_MASK 0x3800000 -/* New Tashkeel options */ +/* New Tashkeel options */ /** * Memory option: the result must have the same length as the source. - * Shaping mode: Tashkeel characters will be replaced by spaces. + * Shaping mode: Tashkeel characters will be replaced by spaces. * Spaces will be placed at beginning of the buffer * * De-shaping mode: N/A @@ -387,7 +387,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, /** * Memory option: the result must have the same length as the source. - * Shaping mode: Tashkeel characters will be replaced by spaces. + * Shaping mode: Tashkeel characters will be replaced by spaces. * Spaces will be placed at end of the buffer * * De-shaping mode: N/A @@ -398,8 +398,8 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, /** * Memory option: allow the result to have a different length than the source. - * Shaping mode: Tashkeel characters will be removed, buffer length will shrink. - * De-shaping mode: N/A + * Shaping mode: Tashkeel characters will be removed, buffer length will shrink. + * De-shaping mode: N/A * * Affect: Tashkeel options * @stable ICU 4.2 @@ -417,46 +417,46 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, */ #define U_SHAPE_TASHKEEL_REPLACE_BY_TATWEEL 0xC0000 -/** - * Bit mask for Tashkeel replacement with Space or Tatweel memory options. +/** + * Bit mask for Tashkeel replacement with Space or Tatweel memory options. * @stable ICU 4.2 */ #define U_SHAPE_TASHKEEL_MASK 0xE0000 -/* Space location Control options */ +/* Space location Control options */ /** * This option affect the meaning of BEGIN and END options. if this option is not used the default - * for BEGIN and END will be as following: + * for BEGIN and END will be as following: * The Default (for both Visual LTR, Visual RTL and Logical Text) * 1. BEGIN always refers to the start address of physical memory. * 2. END always refers to the end address of physical memory. * - * If this option is used it will swap the meaning of BEGIN and END only for Visual LTR text. + * If this option is used it will swap the meaning of BEGIN and END only for Visual LTR text. * * The effect on BEGIN and END Memory Options will be as following: * A. BEGIN For Visual LTR text: This will be the beginning (right side) of the visual text( - * corresponding to the physical memory address end for Visual LTR text, Same as END in + * corresponding to the physical memory address end for Visual LTR text, Same as END in * default behavior) - * B. BEGIN For Logical text: Same as BEGIN in default behavior. + * B. BEGIN For Logical text: Same as BEGIN in default behavior. * C. END For Visual LTR text: This will be the end (left side) of the visual text (corresponding * to the physical memory address beginning for Visual LTR text, Same as BEGIN in default behavior. - * D. END For Logical text: Same as END in default behavior). + * D. END For Logical text: Same as END in default behavior). * Affects: All LamAlef BEGIN, END and AUTO options. * @stable ICU 4.2 */ #define U_SHAPE_SPACES_RELATIVE_TO_TEXT_BEGIN_END 0x4000000 /** - * Bit mask for swapping BEGIN and END for Visual LTR text + * Bit mask for swapping BEGIN and END for Visual LTR text * @stable ICU 4.2 */ #define U_SHAPE_SPACES_RELATIVE_TO_TEXT_MASK 0x4000000 /** - * If this option is used, shaping will use the new Unicode code point for TAIL (i.e. 0xFE73). + * If this option is used, shaping will use the new Unicode code point for TAIL (i.e. 0xFE73). * If this option is not specified (Default), old unofficial Unicode TAIL code point is used (i.e. 0x200B) - * De-shaping will not use this option as it will always search for both the new Unicode code point for the + * De-shaping will not use this option as it will always search for both the new Unicode code point for the * TAIL (i.e. 0xFE73) or the old unofficial Unicode TAIL code point (i.e. 0x200B) and de-shape the * Seen-Family letter accordingly. * @@ -468,7 +468,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength, #define U_SHAPE_TAIL_NEW_UNICODE 0x8000000 /** - * Bit mask for new Unicode Tail option + * Bit mask for new Unicode Tail option * @stable ICU 4.8 */ #define U_SHAPE_TAIL_TYPE_MASK 0x8000000 diff --git a/deps/icu-small/source/common/unicode/usprep.h b/deps/icu-small/source/common/unicode/usprep.h index be06189e2e9e6d..f8a0f58e0de27f 100644 --- a/deps/icu-small/source/common/unicode/usprep.h +++ b/deps/icu-small/source/common/unicode/usprep.h @@ -20,7 +20,7 @@ #define __USPREP_H__ /** - * \file + * \file * \brief C API: Implements the StringPrep algorithm. */ @@ -38,14 +38,14 @@ * Unicode Strings are prepared. Each profiles contains tables which describe * how a code point should be treated. The tables are broadly classified into *

      - *
    • Unassigned Table: Contains code points that are unassigned - * in the Unicode Version supported by StringPrep. Currently + *
    • Unassigned Table: Contains code points that are unassigned + * in the Unicode Version supported by StringPrep. Currently * RFC 3454 supports Unicode 3.2.
    • *
    • Prohibited Table: Contains code points that are prohibited from * the output of the StringPrep processing function.
    • *
    • Mapping Table: Contains code points that are deleted from the output or case mapped.
    • *
    - * + * * The procedure for preparing Unicode strings: *
      *
    1. Map: For each character in the input, check if it has a mapping @@ -73,17 +73,17 @@ typedef struct UStringPrepProfile UStringPrepProfile; -/** +/** * Option to prohibit processing of unassigned code points in the input - * + * * @see usprep_prepare * @stable ICU 2.8 */ #define USPREP_DEFAULT 0x0000 -/** +/** * Option to allow processing of unassigned code points in the input - * + * * @see usprep_prepare * @stable ICU 2.8 */ @@ -185,7 +185,7 @@ typedef enum UStringPrepProfileType { * @stable ICU 2.8 */ U_CAPI UStringPrepProfile* U_EXPORT2 -usprep_open(const char* path, +usprep_open(const char* path, const char* fileName, UErrorCode* status); @@ -236,7 +236,7 @@ U_NAMESPACE_END * checks for prohibited and BiDi characters in the order defined by RFC 3454 * depending on the options specified in the profile. * - * @param prep The profile to use + * @param prep The profile to use * @param src Pointer to UChar buffer containing the string to prepare * @param srcLength Number of characters in the source string * @param dest Pointer to the destination buffer to receive the output @@ -245,10 +245,10 @@ U_NAMESPACE_END * * - USPREP_DEFAULT Prohibit processing of unassigned code points in the input * - * - USPREP_ALLOW_UNASSIGNED Treat the unassigned code points are in the input + * - USPREP_ALLOW_UNASSIGNED Treat the unassigned code points are in the input * as normal Unicode code points. * - * @param parseError Pointer to UParseError struct to receive information on position + * @param parseError Pointer to UParseError struct to receive information on position * of error if an error is encountered. Can be NULL. * @param status ICU in/out error code parameter. * U_INVALID_CHAR_FOUND if src contains @@ -262,7 +262,7 @@ U_NAMESPACE_END U_CAPI int32_t U_EXPORT2 usprep_prepare( const UStringPrepProfile* prep, - const UChar* src, int32_t srcLength, + const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UParseError* parseError, diff --git a/deps/icu-small/source/common/unicode/ustring.h b/deps/icu-small/source/common/unicode/ustring.h index 3243acbb7ebfce..5452fbe09a8199 100644 --- a/deps/icu-small/source/common/unicode/ustring.h +++ b/deps/icu-small/source/common/unicode/ustring.h @@ -24,7 +24,7 @@ /** * \def UBRK_TYPEDEF_UBREAK_ITERATOR - * @internal + * @internal */ #ifndef UBRK_TYPEDEF_UBREAK_ITERATOR @@ -72,7 +72,7 @@ * their occurrence is rare. Almost all characters in modern use require only * a single UChar code unit (i.e., their code point values are <=0xffff). * - * For more details see the User Guide Strings chapter (http://icu-project.org/userguide/strings.html). + * For more details see the User Guide Strings chapter (https://unicode-org.github.io/icu/userguide/strings/). * For a discussion of the handling of unpaired surrogates see also * Jitterbug 2145 and its icu mailing list proposal on 2002-sep-18. */ @@ -141,11 +141,11 @@ u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number); * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strcat(UChar *dst, +u_strcat(UChar *dst, const UChar *src); /** - * Concatenate two ustrings. + * Concatenate two ustrings. * Appends at most n characters from src to dst. * Adds a terminating NUL. * If src is too long, then only n-1 characters will be copied @@ -159,8 +159,8 @@ u_strcat(UChar *dst, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strncat(UChar *dst, - const UChar *src, +u_strncat(UChar *dst, + const UChar *src, int32_t n); /** @@ -410,7 +410,7 @@ u_strspn(const UChar *string, const UChar *matchSet); * @stable ICU 2.0 */ U_CAPI UChar * U_EXPORT2 -u_strtok_r(UChar *src, +u_strtok_r(UChar *src, const UChar *delim, UChar **saveState); @@ -425,7 +425,7 @@ u_strtok_r(UChar *src, * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 -u_strcmp(const UChar *s1, +u_strcmp(const UChar *s1, const UChar *s2); /** @@ -544,7 +544,7 @@ u_strCaseCompare(const UChar *s1, int32_t length1, UErrorCode *pErrorCode); /** - * Compare two ustrings for bitwise equality. + * Compare two ustrings for bitwise equality. * Compares at most n characters. * * @param ucs1 A string to compare (can be NULL/invalid if n<=0). @@ -556,8 +556,8 @@ u_strCaseCompare(const UChar *s1, int32_t length1, * @stable ICU 2.0 */ U_CAPI int32_t U_EXPORT2 -u_strncmp(const UChar *ucs1, - const UChar *ucs2, +u_strncmp(const UChar *ucs1, + const UChar *ucs2, int32_t n); /** @@ -655,7 +655,7 @@ u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options) * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strcpy(UChar *dst, +u_strcpy(UChar *dst, const UChar *src); /** @@ -670,8 +670,8 @@ u_strcpy(UChar *dst, * @stable ICU 2.0 */ U_CAPI UChar* U_EXPORT2 -u_strncpy(UChar *dst, - const UChar *src, +u_strncpy(UChar *dst, + const UChar *src, int32_t n); #if !UCONFIG_NO_CONVERSION @@ -913,10 +913,10 @@ u_memrchr32(const UChar *s, UChar32 c, int32_t count); * } * return u_strcmp(ustringVar1, ustringVar2); * } - * + * * Note that the macros will NOT consistently work if their argument is another #`define`. * The following will not work on all platforms, don't use it. - * + * * #define GLUCK "Mr. Gluck" * U_STRING_DECL(var, GLUCK, 9) * U_STRING_INIT(var, GLUCK, 9) @@ -1187,11 +1187,11 @@ u_strFoldCase(UChar *dest, int32_t destCapacity, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of wchar_t's). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1201,10 +1201,10 @@ u_strFoldCase(UChar *dest, int32_t destCapacity, * @stable ICU 2.0 */ U_CAPI wchar_t* U_EXPORT2 -u_strToWCS(wchar_t *dest, +u_strToWCS(wchar_t *dest, int32_t destCapacity, int32_t *pDestLength, - const UChar *src, + const UChar *src, int32_t srcLength, UErrorCode *pErrorCode); /** @@ -1216,11 +1216,11 @@ u_strToWCS(wchar_t *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of UChars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1231,7 +1231,7 @@ u_strToWCS(wchar_t *dest, */ U_CAPI UChar* U_EXPORT2 u_strFromWCS(UChar *dest, - int32_t destCapacity, + int32_t destCapacity, int32_t *pDestLength, const wchar_t *src, int32_t srcLength, @@ -1245,11 +1245,11 @@ u_strFromWCS(UChar *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of chars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1260,11 +1260,11 @@ u_strFromWCS(UChar *dest, * @see u_strToUTF8WithSub * @see u_strFromUTF8 */ -U_CAPI char* U_EXPORT2 -u_strToUTF8(char *dest, +U_CAPI char* U_EXPORT2 +u_strToUTF8(char *dest, int32_t destCapacity, int32_t *pDestLength, - const UChar *src, + const UChar *src, int32_t srcLength, UErrorCode *pErrorCode); @@ -1275,11 +1275,11 @@ u_strToUTF8(char *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of UChars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1291,10 +1291,10 @@ u_strToUTF8(char *dest, * @see u_strFromUTF8Lenient */ U_CAPI UChar* U_EXPORT2 -u_strFromUTF8(UChar *dest, +u_strFromUTF8(UChar *dest, int32_t destCapacity, int32_t *pDestLength, - const char *src, + const char *src, int32_t srcLength, UErrorCode *pErrorCode); @@ -1308,11 +1308,11 @@ u_strFromUTF8(UChar *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of chars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1352,11 +1352,11 @@ u_strToUTF8WithSub(char *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of UChars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * @param src The original source string * @param srcLength The length of the original string. If -1, then src must be zero-terminated. @@ -1414,13 +1414,13 @@ u_strFromUTF8WithSub(UChar *dest, * @param dest A buffer for the result string. The result will be zero-terminated if * the buffer is large enough. * @param destCapacity The size of the buffer (number of UChars). If it is 0, then - * dest may be NULL and the function will only return the length of the + * dest may be NULL and the function will only return the length of the * result without writing any of the result string (pre-flighting). * Unlike for other ICU functions, if srcLength>=0 then it * must be destCapacity>=srcLength. - * @param pDestLength A pointer to receive the number of units written to the destination. If - * pDestLength!=NULL then *pDestLength is always set to the - * number of output units corresponding to the transformation of + * @param pDestLength A pointer to receive the number of units written to the destination. If + * pDestLength!=NULL then *pDestLength is always set to the + * number of output units corresponding to the transformation of * all the input units, even in case of a buffer overflow. * Unlike for other ICU functions, if srcLength>=0 but * destCapacitychunkOffset <= (ut)->nativeIndexingLimit? \ (ut)->chunkNativeStart+(ut)->chunkOffset : \ - (ut)->pFuncs->mapOffsetToNative(ut)) + (ut)->pFuncs->mapOffsetToNative(ut)) /** * inline version of utext_setNativeIndex(), for performance-critical situations. @@ -865,7 +865,7 @@ utext_replace(UText *ut, * copied or moved. * @param move If true, then the substring is moved, not copied/duplicated. * @param status receives any error status. Possible errors include U_NO_WRITE_PERMISSION - * + * * @stable ICU 3.4 */ U_CAPI void U_EXPORT2 @@ -931,7 +931,7 @@ enum { * There is meta data associated with the text. * @see Replaceable::hasMetaData() * @stable ICU 3.4 - */ + */ UTEXT_PROVIDER_HAS_META_DATA = 4, /** * Text provider owns the text storage. @@ -956,7 +956,7 @@ enum { * and be prepared to handle failures. * * A shallow clone replicates only the UText data structures; it does not make - * a copy of the underlying text. Shallow clones can be used as an efficient way to + * a copy of the underlying text. Shallow clones can be used as an efficient way to * have multiple iterators active in a single text string that is not being * modified. * @@ -1165,7 +1165,7 @@ UTextMapNativeIndexToUTF16(const UText *ut, int64_t nativeIndex); * Function type declaration for UText.utextClose(). * * A Text Provider close function is only required for provider types that make - * allocations in their open function (or other functions) that must be + * allocations in their open function (or other functions) that must be * cleaned when the UText is closed. * * The allocation of the UText struct itself and any "extra" storage @@ -1294,7 +1294,7 @@ struct UTextFuncs { * @internal */ UTextClose *spare1; - + /** * (private) Spare function pointer * @internal @@ -1363,9 +1363,9 @@ struct UText { * @stable ICU 3.4 */ int32_t sizeOfStruct; - + /* ------ 16 byte alignment boundary ----------- */ - + /** * (protected) Native index of the first character position following @@ -1390,7 +1390,7 @@ struct UText { int32_t nativeIndexingLimit; /* ---- 16 byte alignment boundary------ */ - + /** * (protected) Native index of the first character in the text chunk. * @stable ICU 3.6 @@ -1411,7 +1411,7 @@ struct UText { int32_t chunkLength; /* ---- 16 byte alignment boundary-- */ - + /** * (protected) pointer to a chunk of text in UTF-16 format. @@ -1449,7 +1449,7 @@ struct UText { * Not used by UText common code. * @stable ICU 3.6 */ - const void *p; + const void *p; /** * (protected) Pointer fields available for use by the text provider. * Not used by UText common code. @@ -1472,7 +1472,7 @@ struct UText { /* --- 16 byte alignment boundary--- */ - + /** * (protected) Integer field reserved for use by the text provider. diff --git a/deps/icu-small/source/common/unicode/utf.h b/deps/icu-small/source/common/unicode/utf.h index d23345ed0bf1c0..c9d5f5785c5a46 100644 --- a/deps/icu-small/source/common/unicode/utf.h +++ b/deps/icu-small/source/common/unicode/utf.h @@ -107,7 +107,7 @@ * * Usage: * ICU coding guidelines for if() statements should be followed when using these macros. - * Compound statements (curly braces {}) must be used for if-else-while... + * Compound statements (curly braces {}) must be used for if-else-while... * bodies and all macro statements should be terminated with semicolon. * * @stable ICU 2.4 @@ -167,7 +167,7 @@ * @stable ICU 2.8 */ #define U_IS_SUPPLEMENTARY(c) ((uint32_t)((c)-0x10000)<=0xfffff) - + /** * Is this code point a lead surrogate (U+d800..U+dbff)? * @param c 32-bit code point diff --git a/deps/icu-small/source/common/unicode/utf16.h b/deps/icu-small/source/common/unicode/utf16.h index 9d68902d2de0f3..3902c60e95e70d 100644 --- a/deps/icu-small/source/common/unicode/utf16.h +++ b/deps/icu-small/source/common/unicode/utf16.h @@ -19,7 +19,7 @@ /** * \file * \brief C API: 16-bit Unicode handling macros - * + * * This file defines macros to deal with 16-bit Unicode (UTF-16) code units and strings. * * For more information see utf.h and the ICU User Guide Strings chapter @@ -27,7 +27,7 @@ * * Usage: * ICU coding guidelines for if() statements should be followed when using these macros. - * Compound statements (curly braces {}) must be used for if-else-while... + * Compound statements (curly braces {}) must be used for if-else-while... * bodies and all macro statements should be terminated with semicolon. */ diff --git a/deps/icu-small/source/common/unicode/utf8.h b/deps/icu-small/source/common/unicode/utf8.h index 58bda2cbe51290..5a07435fcf6096 100644 --- a/deps/icu-small/source/common/unicode/utf8.h +++ b/deps/icu-small/source/common/unicode/utf8.h @@ -19,7 +19,7 @@ /** * \file * \brief C API: 8-bit Unicode handling macros - * + * * This file defines macros to deal with 8-bit Unicode (UTF-8) code units (bytes) and strings. * * For more information see utf.h and the ICU User Guide Strings chapter @@ -27,7 +27,7 @@ * * Usage: * ICU coding guidelines for if() statements should be followed when using these macros. - * Compound statements (curly braces {}) must be used for if-else-while... + * Compound statements (curly braces {}) must be used for if-else-while... * bodies and all macro statements should be terminated with semicolon. */ diff --git a/deps/icu-small/source/common/unicode/utrace.h b/deps/icu-small/source/common/unicode/utrace.h index 3ed01911058966..677486f473314b 100644 --- a/deps/icu-small/source/common/unicode/utrace.h +++ b/deps/icu-small/source/common/unicode/utrace.h @@ -27,15 +27,15 @@ /** * \file - * \brief C API: Definitions for ICU tracing/logging. + * \brief C API: Definitions for ICU tracing/logging. * * This provides API for debugging the internals of ICU without the use of * a traditional debugger. * - * By default, tracing is disabled in ICU. If you need to debug ICU with + * By default, tracing is disabled in ICU. If you need to debug ICU with * tracing, please compile ICU with the --enable-tracing configure option. */ - + U_CDECL_BEGIN /** @@ -278,7 +278,7 @@ UTraceEntry(const void *context, int32_t fnNumber); * @stable ICU 2.8 */ typedef void U_CALLCONV -UTraceExit(const void *context, int32_t fnNumber, +UTraceExit(const void *context, int32_t fnNumber, const char *fmt, va_list args); /** @@ -314,11 +314,11 @@ UTraceData(const void *context, int32_t fnNumber, int32_t level, * here will in turn be passed to each of the tracing * functions UTraceEntry, UTraceExit and UTraceData. * ICU does not use or alter this pointer. - * @param e Callback function to be called on entry to a + * @param e Callback function to be called on entry to a * a traced ICU function. * @param x Callback function to be called on exit from a * traced ICU function. - * @param d Callback function to be called from within a + * @param d Callback function to be called from within a * traced ICU function, for the purpose of providing * data to the trace. * @@ -386,7 +386,7 @@ utrace_getFunctions(const void **context, * - S A UChar * string. Requires two params, (ptr, length). Length=-1 for nul term. * - b A byte (8-bit integer). * - h A 16-bit integer. Also a 16 bit Unicode code unit. - * - d A 32-bit integer. Also a 20 bit Unicode code point value. + * - d A 32-bit integer. Also a 20 bit Unicode code point value. * - l A 64-bit integer. * - p A data pointer. * @@ -418,7 +418,7 @@ utrace_getFunctions(const void **context, * the type casts will not be necessary in actual code * * UTraceDataFunc(context, fnNumber, level, - * "There is a character %c in the string %s.", // Format String + * "There is a character %c in the string %s.", // Format String * (char)c, (const char *)s); // varargs parameters * -> There is a character 0x42 'B' in the string "Bravo". * @@ -457,7 +457,7 @@ utrace_getFunctions(const void **context, * @param fmt Format specification for the data to output * @param args Data to be formatted. * @return Length of formatted output, including the terminating NUL. - * If buffer capacity is insufficient, the required capacity is returned. + * If buffer capacity is insufficient, the required capacity is returned. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 @@ -478,7 +478,7 @@ utrace_vformat(char *outBuf, int32_t capacity, * @param fmt Format specification for the data to output * @param ... Data to be formatted. * @return Length of formatted output, including the terminating NUL. - * If buffer capacity is insufficient, the required capacity is returned. + * If buffer capacity is insufficient, the required capacity is returned. * @stable ICU 2.8 */ U_CAPI int32_t U_EXPORT2 diff --git a/deps/icu-small/source/common/unicode/utypes.h b/deps/icu-small/source/common/unicode/utypes.h index 6c57218db8d477..f890d5d1dbbebf 100644 --- a/deps/icu-small/source/common/unicode/utypes.h +++ b/deps/icu-small/source/common/unicode/utypes.h @@ -211,16 +211,16 @@ typedef double UDate; /** The number of milliseconds per day @stable ICU 2.0 */ #define U_MILLIS_PER_DAY (86400000) -/** - * Maximum UDate value - * @stable ICU 4.8 - */ +/** + * Maximum UDate value + * @stable ICU 4.8 + */ #define U_DATE_MAX DBL_MAX /** - * Minimum UDate value - * @stable ICU 4.8 - */ + * Minimum UDate value + * @stable ICU 4.8 + */ #define U_DATE_MIN -U_DATE_MAX /*===========================================================================*/ @@ -400,7 +400,7 @@ typedef double UDate; * suitable subclass. * * For more information, see: - * http://icu-project.org/userguide/conventions + * https://unicode-org.github.io/icu/userguide/dev/codingguidelines#details-about-icu-error-codes * * Note: By convention, ICU functions that take a reference (C++) or a pointer * (C) to a UErrorCode first test: @@ -435,7 +435,7 @@ typedef enum UErrorCode { U_AMBIGUOUS_ALIAS_WARNING = -122, /**< This converter alias can go to different converter implementations */ U_DIFFERENT_UCA_VERSION = -121, /**< ucol_open encountered a mismatch between UCA version and collator image version, so the collator was constructed from rules. No impact to further function */ - + U_PLUGIN_CHANGED_LEVEL_WARNING = -120, /**< A plugin caused a level change. May not be an error, but later plugins may not load. */ #ifndef U_HIDE_DEPRECATED_API @@ -479,16 +479,14 @@ typedef enum UErrorCode { U_COLLATOR_VERSION_MISMATCH = 28, /**< Collator version is not compatible with the base version */ U_USELESS_COLLATOR_ERROR = 29, /**< Collator is options only and no base is specified */ U_NO_WRITE_PERMISSION = 30, /**< Attempt to modify read-only or constant data. */ -#ifndef U_HIDE_DRAFT_API /** * The input is impractically long for an operation. * It is rejected because it may lead to problems such as excessive * processing time, stack depth, or heap memory requirements. * - * @draft ICU 68 + * @stable ICU 68 */ U_INPUT_TOO_LONG_ERROR = 31, -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_DEPRECATED_API /** @@ -666,7 +664,7 @@ typedef enum UErrorCode { U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR, U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR, U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR, - + /* * Error codes in the range 0x10500-0x105ff are reserved for Plugin related error codes. */ diff --git a/deps/icu-small/source/common/unicode/uvernum.h b/deps/icu-small/source/common/unicode/uvernum.h index b09d4943c1cc98..42e8865d7e330b 100644 --- a/deps/icu-small/source/common/unicode/uvernum.h +++ b/deps/icu-small/source/common/unicode/uvernum.h @@ -60,7 +60,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION_MAJOR_NUM 69 +#define U_ICU_VERSION_MAJOR_NUM 70 /** The current ICU minor version as an integer. * This value will change in the subsequent releases of ICU @@ -86,7 +86,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_SUFFIX _69 +#define U_ICU_VERSION_SUFFIX _70 /** * \def U_DEF2_ICU_ENTRY_POINT_RENAME @@ -139,7 +139,7 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.4 */ -#define U_ICU_VERSION "69.1" +#define U_ICU_VERSION "70.1" /** * The current ICU library major version number as a string, for library name suffixes. @@ -152,13 +152,13 @@ * * @stable ICU 2.6 */ -#define U_ICU_VERSION_SHORT "69" +#define U_ICU_VERSION_SHORT "70" #ifndef U_HIDE_INTERNAL_API /** Data version in ICU4C. * @internal ICU 4.4 Internal Use Only **/ -#define U_ICU_DATA_VERSION "69.1" +#define U_ICU_DATA_VERSION "70.1" #endif /* U_HIDE_INTERNAL_API */ /*=========================================================================== diff --git a/deps/icu-small/source/common/unicode/uversion.h b/deps/icu-small/source/common/unicode/uversion.h index dde3059261047c..113568df8c127d 100644 --- a/deps/icu-small/source/common/unicode/uversion.h +++ b/deps/icu-small/source/common/unicode/uversion.h @@ -18,7 +18,7 @@ /** * \file - * \brief C API: API for accessing ICU version numbers. + * \brief C API: API for accessing ICU version numbers. */ /*===========================================================================*/ /* Main ICU version information */ diff --git a/deps/icu-small/source/common/unifiedcache.h b/deps/icu-small/source/common/unifiedcache.h index 865f4545105cb6..07a734b8bd5b07 100644 --- a/deps/icu-small/source/common/unifiedcache.h +++ b/deps/icu-small/source/common/unifiedcache.h @@ -39,7 +39,7 @@ class U_COMMON_API CacheKeyBase : public UObject { /** * Copy constructor. Needed to support cloning. */ - CacheKeyBase(const CacheKeyBase &other) + CacheKeyBase(const CacheKeyBase &other) : UObject(other), fCreationStatus(other.fCreationStatus), fIsPrimary(false) { } virtual ~CacheKeyBase(); @@ -53,11 +53,6 @@ class U_COMMON_API CacheKeyBase : public UObject { */ virtual CacheKeyBase *clone() const = 0; - /** - * Equality operator. - */ - virtual UBool operator == (const CacheKeyBase &other) const = 0; - /** * Create a new object for this key. Called by cache on cache miss. * createObject must add a reference to the object it returns. Note @@ -80,12 +75,19 @@ class U_COMMON_API CacheKeyBase : public UObject { */ virtual char *writeDescription(char *buffer, int32_t bufSize) const = 0; - /** - * Inequality operator. - */ - UBool operator != (const CacheKeyBase &other) const { - return !(*this == other); + friend inline bool operator==(const CacheKeyBase& lhs, + const CacheKeyBase& rhs) { + return lhs.equals(rhs); } + + friend inline bool operator!=(const CacheKeyBase& lhs, + const CacheKeyBase& rhs) { + return !lhs.equals(rhs); + } + + protected: + virtual bool equals(const CacheKeyBase& other) const = 0; + private: mutable UErrorCode fCreationStatus; mutable UBool fIsPrimary; @@ -95,7 +97,7 @@ class U_COMMON_API CacheKeyBase : public UObject { /** - * Templated version of CacheKeyBase. + * Templated version of CacheKeyBase. * A key of type LocaleCacheKey maps to a value of type T. */ template @@ -105,7 +107,7 @@ class CacheKey : public CacheKeyBase { /** * The template parameter, T, determines the hash code returned. */ - virtual int32_t hashCode() const { + virtual int32_t hashCode() const override { const char *s = typeid(T).name(); return ustr_hashCharsN(s, static_cast(uprv_strlen(s))); } @@ -113,18 +115,19 @@ class CacheKey : public CacheKeyBase { /** * Use the value type, T, as the description. */ - virtual char *writeDescription(char *buffer, int32_t bufLen) const { + virtual char *writeDescription(char *buffer, int32_t bufLen) const override { const char *s = typeid(T).name(); uprv_strncpy(buffer, s, bufLen); buffer[bufLen - 1] = 0; return buffer; } + protected: /** * Two objects are equal if they are of the same type. */ - virtual UBool operator == (const CacheKeyBase &other) const { - return typeid(*this) == typeid(other); + virtual bool equals(const CacheKeyBase &other) const override { + return this == &other || typeid(*this) == typeid(other); } }; @@ -136,37 +139,34 @@ template class LocaleCacheKey : public CacheKey { protected: Locale fLoc; + virtual bool equals(const CacheKeyBase &other) const override { + if (!CacheKey::equals(other)) { + return false; + } + // We know this and other are of same class because equals() on + // CacheKey returned true. + return operator==(static_cast &>(other)); + } public: LocaleCacheKey(const Locale &loc) : fLoc(loc) {} LocaleCacheKey(const LocaleCacheKey &other) : CacheKey(other), fLoc(other.fLoc) { } virtual ~LocaleCacheKey() { } - virtual int32_t hashCode() const { + virtual int32_t hashCode() const override { return (int32_t)(37u * (uint32_t)CacheKey::hashCode() + (uint32_t)fLoc.hashCode()); } - virtual UBool operator == (const CacheKeyBase &other) const { - // reflexive - if (this == &other) { - return true; - } - if (!CacheKey::operator == (other)) { - return false; - } - // We know this and other are of same class because operator== on - // CacheKey returned true. - const LocaleCacheKey *fOther = - static_cast *>(&other); - return fLoc == fOther->fLoc; + inline bool operator == (const LocaleCacheKey &other) const { + return fLoc == other.fLoc; } - virtual CacheKeyBase *clone() const { + virtual CacheKeyBase *clone() const override { return new LocaleCacheKey(*this); } virtual const T *createObject( - const void *creationContext, UErrorCode &status) const; + const void *creationContext, UErrorCode &status) const override; /** * Use the locale id as the description. */ - virtual char *writeDescription(char *buffer, int32_t bufLen) const { + virtual char *writeDescription(char *buffer, int32_t bufLen) const override { const char *s = fLoc.getName(); uprv_strncpy(buffer, s, bufLen); buffer[bufLen - 1] = 0; @@ -293,8 +293,8 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { void flush() const; /** - * Configures at what point evcition of unused entries will begin. - * Eviction is triggered whenever the number of evictable keys exeeds + * Configures at what point eviction of unused entries will begin. + * Eviction is triggered whenever the number of evictable keys exceeds * BOTH count AND (number of in-use items) * (percentageOfInUseItems / 100). * Once the number of unused entries drops below one of these, * eviction ceases. Because eviction happens incrementally, @@ -315,7 +315,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { * settings. * * If a client already holds references to many different unique values - * in the cache such that the number of those unique values far exeeds + * in the cache such that the number of those unique values far exceeds * "count" then the cache may not be able to maintain this maximum. * However, if this happens, the cache still guarantees that the number of * unused entries will remain only a small percentage of the total cache @@ -341,9 +341,9 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { */ int32_t unusedCount() const; - virtual void handleUnreferencedObject() const; + virtual void handleUnreferencedObject() const override; virtual ~UnifiedCache(); - + private: UHashtable *fHashtable; mutable int32_t fEvictPos; @@ -353,17 +353,17 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { int32_t fMaxPercentageOfInUse; mutable int64_t fAutoEvictedCount; SharedObject *fNoValue; - + UnifiedCache(const UnifiedCache &other); UnifiedCache &operator=(const UnifiedCache &other); - + /** * Flushes the contents of the cache. If cache values hold references to other * cache values then _flush should be called in a loop until it returns false. - * + * * On entry, gCacheMutex must be held. * On exit, those values with are evictable are flushed. - * + * * @param all if false flush evictable items only, which are those with no external * references, plus those that can be safely recreated.
      * if true, flush all elements. Any values (sharedObjects) with remaining @@ -373,7 +373,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { * @return true if any value in cache was flushed or false otherwise. */ UBool _flush(UBool all) const; - + /** * Gets value out of cache. * On entry. gCacheMutex must not be held. value must be NULL. status @@ -406,10 +406,10 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { const CacheKeyBase &key, const SharedObject *&value, UErrorCode &status) const; - + /** * Places a new value and creationStatus in the cache for the given key. - * On entry, gCacheMutex must be held. key must not exist in the cache. + * On entry, gCacheMutex must be held. key must not exist in the cache. * On exit, value and creation status placed under key. Soft reference added * to value on successful add. On error sets status. */ @@ -418,15 +418,15 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { const SharedObject *value, const UErrorCode creationStatus, UErrorCode &status) const; - + /** * Places value and status at key if there is no value at key or if cache * entry for key is in progress. Otherwise, it leaves the current value and * status there. - * + * * On entry. gCacheMutex must not be held. Value must be * included in the reference count of the object to which it points. - * + * * On exit, value and status are changed to what was already in the cache if * something was there and not in progress. Otherwise, value and status are left * unchanged in which case they are placed in the cache on a best-effort basis. @@ -443,17 +443,17 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { * On entry, gCacheMutex must be held. */ const UHashElement *_nextElement() const; - + /** * Return the number of cache items that would need to be evicted * to bring usage into conformance with eviction policy. - * + * * An item corresponds to an entry in the hash table, a hash table element. - * + * * On entry, gCacheMutex must be held. */ int32_t _computeCountOfItemsToEvict() const; - + /** * Run an eviction slice. * On entry, gCacheMutex must be held. @@ -461,20 +461,20 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { * 10 entries in the cache round robin style evicting them if they are eligible. */ void _runEvictionSlice() const; - + /** * Register a primary cache entry. A primary key is the first key to create * a given SharedObject value. Subsequent keys whose create function - * produce referneces to an already existing SharedObject are not primary - + * produce references to an already existing SharedObject are not primary - * they can be evicted and subsequently recreated. - * + * * On entry, gCacheMutex must be held. * On exit, items in use count incremented, entry is marked as a primary * entry, and value registered with cache so that subsequent calls to * addRef() and removeRef() on it correctly interact with the cache. */ void _registerPrimary(const CacheKeyBase *theKey, const SharedObject *value) const; - + /** * Store a value and creation error status in given hash entry. * On entry, gCacheMutex must be held. Hash entry element must be in progress. @@ -494,32 +494,32 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { * @param value the SharedObject to be acted on. */ void removeSoftRef(const SharedObject *value) const; - + /** * Increment the hard reference count of the given SharedObject. * gCacheMutex must be held by the caller. * Update numValuesEvictable on transitions between zero and one reference. - * + * * @param value The SharedObject to be referenced. * @return the hard reference count after the addition. */ int32_t addHardRef(const SharedObject *value) const; - + /** * Decrement the hard reference count of the given SharedObject. * gCacheMutex must be held by the caller. * Update numValuesEvictable on transitions between one and zero reference. - * + * * @param value The SharedObject to be referenced. * @return the hard reference count after the removal. */ int32_t removeHardRef(const SharedObject *value) const; - + #ifdef UNIFIED_CACHE_DEBUG void _dumpContents() const; #endif - + /** * Fetch value and error code from a particular hash entry. * On entry, gCacheMutex must be held. value must be either NULL or must be @@ -531,19 +531,19 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase { */ void _fetch(const UHashElement *element, const SharedObject *&value, UErrorCode &status) const; - + /** * Determine if given hash entry is in progress. * On entry, gCacheMutex must be held. */ UBool _inProgress(const UHashElement *element) const; - + /** * Determine if given hash entry is in progress. * On entry, gCacheMutex must be held. */ UBool _inProgress(const SharedObject *theValue, UErrorCode creationStatus) const; - + /** * Determine if given hash entry is eligible for eviction. * On entry, gCacheMutex must be held. diff --git a/deps/icu-small/source/common/uniset.cpp b/deps/icu-small/source/common/uniset.cpp index 067930b73bd6b2..92a81a1a02d1f0 100644 --- a/deps/icu-small/source/common/uniset.cpp +++ b/deps/icu-small/source/common/uniset.cpp @@ -111,7 +111,7 @@ static void U_CALLCONV cloneUnicodeString(UElement *dst, UElement *src) { dst->pointer = new UnicodeString(*(UnicodeString*)src->pointer); } -static int8_t U_CALLCONV compareUnicodeString(UElement t1, UElement t2) { +static int32_t U_CALLCONV compareUnicodeString(UElement t1, UElement t2) { const UnicodeString &a = *(const UnicodeString*)t1.pointer; const UnicodeString &b = *(const UnicodeString*)t2.pointer; return a.compare(b); @@ -278,14 +278,14 @@ UnicodeSet *UnicodeSet::cloneAsThawed() const { * @param o set to be compared for equality with this set. * @return true if the specified set is equal to this set. */ -UBool UnicodeSet::operator==(const UnicodeSet& o) const { - if (len != o.len) return FALSE; +bool UnicodeSet::operator==(const UnicodeSet& o) const { + if (len != o.len) return false; for (int32_t i = 0; i < len; ++i) { - if (list[i] != o.list[i]) return FALSE; + if (list[i] != o.list[i]) return false; } - if (hasStrings() != o.hasStrings()) { return FALSE; } - if (hasStrings() && *strings != *o.strings) return FALSE; - return TRUE; + if (hasStrings() != o.hasStrings()) { return false; } + if (hasStrings() && *strings != *o.strings) return false; + return true; } /** @@ -984,7 +984,6 @@ void UnicodeSet::_add(const UnicodeString& s) { strings->sortedInsert(t, compareUnicodeString, ec); if (U_FAILURE(ec)) { setToBogus(); - delete t; } } @@ -1620,7 +1619,7 @@ UBool UnicodeSet::allocateStrings(UErrorCode &status) { delete strings; strings = NULL; return FALSE; - } + } return TRUE; } @@ -1968,8 +1967,7 @@ void UnicodeSet::retain(const UChar32* other, int32_t otherLen, int8_t polarity) * Append the toPattern() representation of a * string to the given StringBuffer. */ -void UnicodeSet::_appendToPat(UnicodeString& buf, const UnicodeString& s, UBool -escapeUnprintable) { +void UnicodeSet::_appendToPat(UnicodeString& buf, const UnicodeString& s, UBool escapeUnprintable) { UChar32 cp; for (int32_t i = 0; i < s.length(); i += U16_LENGTH(cp)) { _appendToPat(buf, cp = s.char32At(i), escapeUnprintable); @@ -1980,14 +1978,12 @@ escapeUnprintable) { * Append the toPattern() representation of a * character to the given StringBuffer. */ -void UnicodeSet::_appendToPat(UnicodeString& buf, UChar32 c, UBool -escapeUnprintable) { - if (escapeUnprintable && ICU_Utility::isUnprintable(c)) { +void UnicodeSet::_appendToPat(UnicodeString& buf, UChar32 c, UBool escapeUnprintable) { + if (escapeUnprintable ? ICU_Utility::isUnprintable(c) : ICU_Utility::shouldAlwaysBeEscaped(c)) { // Use hex escape notation (\uxxxx or \Uxxxxxxxx) for anything // unprintable - if (ICU_Utility::escapeUnprintable(buf, c)) { - return; - } + ICU_Utility::escape(buf, c); + return; } // Okay to let ':' pass through switch (c) { @@ -2013,6 +2009,19 @@ escapeUnprintable) { buf.append(c); } +void UnicodeSet::_appendToPat(UnicodeString &result, UChar32 start, UChar32 end, + UBool escapeUnprintable) { + _appendToPat(result, start, escapeUnprintable); + if (start != end) { + if ((start+1) != end || + // Avoid writing what looks like a lead+trail surrogate pair. + start == 0xdbff) { + result.append(u'-'); + } + _appendToPat(result, end, escapeUnprintable); + } +} + /** * Append a string representation of this set to result. This will be * a cleaned version of the string passed to applyPattern(), if there @@ -2027,7 +2036,8 @@ UnicodeString& UnicodeSet::_toPattern(UnicodeString& result, for (i=0; i 1 && - getRangeStart(0) == MIN_VALUE && - getRangeEnd(count-1) == MAX_VALUE) { - + // if (getRangeCount() >= 2 && + // getRangeStart(0) == MIN_VALUE && + // getRangeEnd(last) == MAX_VALUE) + // Invariant: list[len-1] == HIGH == MAX_VALUE + 1 + // If limit == len then len is even and the last range ends with MAX_VALUE. + // + // *But* do not write the inverse (complement) if there are strings. + // Since ICU 70, the '^' performs a code point complement which removes all strings. + if (len >= 4 && list[0] == 0 && limit == len && !hasStrings()) { // Emit the inverse result.append(u'^'); - - for (int32_t i = 1; i < count; ++i) { - UChar32 start = getRangeEnd(i-1)+1; - UChar32 end = getRangeStart(i)-1; - _appendToPat(result, start, escapeUnprintable); - if (start != end) { - if ((start+1) != end) { - result.append(u'-'); - } - _appendToPat(result, end, escapeUnprintable); + // Offsetting the inversion list index by one lets us + // iterate over the ranges of the set complement. + i = 1; + --limit; + } + + // Emit the ranges as pairs. + while (i < limit) { + UChar32 start = list[i]; // getRangeStart() + UChar32 end = list[i + 1] - 1; // getRangeEnd() = range limit minus one + if (!(0xd800 <= end && end <= 0xdbff)) { + _appendToPat(result, start, end, escapeUnprintable); + i += 2; + } else { + // The range ends with a lead surrogate. + // Avoid writing what looks like a lead+trail surrogate pair. + // 1. Postpone ranges that start with a lead surrogate code point. + int32_t firstLead = i; + while ((i += 2) < limit && list[i] <= 0xdbff) {} + int32_t firstAfterLead = i; + // 2. Write following ranges that start with a trail surrogate code point. + while (i < limit && (start = list[i]) <= 0xdfff) { + _appendToPat(result, start, list[i + 1] - 1, escapeUnprintable); + i += 2; } - } - } - - // Default; emit the ranges as pairs - else { - for (int32_t i = 0; i < count; ++i) { - UChar32 start = getRangeStart(i); - UChar32 end = getRangeEnd(i); - _appendToPat(result, start, escapeUnprintable); - if (start != end) { - if ((start+1) != end) { - result.append(u'-'); - } - _appendToPat(result, end, escapeUnprintable); + // 3. Now write the postponed ranges. + for (int j = firstLead; j < firstAfterLead; j += 2) { + _appendToPat(result, list[j], list[j + 1] - 1, escapeUnprintable); } } } diff --git a/deps/icu-small/source/common/uniset_props.cpp b/deps/icu-small/source/common/uniset_props.cpp index 8c86cc18c7473f..49d6caabc7557e 100644 --- a/deps/icu-small/source/common/uniset_props.cpp +++ b/deps/icu-small/source/common/uniset_props.cpp @@ -333,7 +333,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars, mode = 1; patLocal.append(u'['); chars.getPos(backup); // prepare to backup - c = chars.next(opts, literal, ec); + c = chars.next(opts, literal, ec); if (U_FAILURE(ec)) return; if (c == u'^' && !literal) { invert = TRUE; @@ -638,7 +638,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars, (this->*caseClosure)(USET_ADD_CASE_MAPPINGS); } if (invert) { - complement(); + complement().removeAllStrings(); // code point complement } // Use the rebuilt pattern (patLocal) only if necessary. Prefer the @@ -791,7 +791,7 @@ UnicodeSet::applyIntPropertyValue(UProperty prop, int32_t value, UErrorCode& ec) if (U_FAILURE(ec)) { return *this; } copyFrom(*UnicodeSet::fromUSet(set), TRUE); if (value == 0) { - complement(); + complement().removeAllStrings(); // code point complement } } else { clear(); @@ -958,7 +958,7 @@ UnicodeSet::applyPropertyAlias(const UnicodeString& prop, applyIntPropertyValue(p, v, ec); if(invert) { - complement(); + complement().removeAllStrings(); // code point complement } if (isBogus() && U_SUCCESS(ec)) { @@ -1084,7 +1084,7 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern, else { // Handle case where no '=' is seen, and \N{} pattern.extractBetween(pos, close, propName); - + // Handle \N{name} if (isName) { // This is a little inefficient since it means we have to @@ -1101,7 +1101,7 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern, if (U_SUCCESS(ec)) { if (invert) { - complement(); + complement().removeAllStrings(); // code point complement } // Move to the limit position after the close delimiter if the diff --git a/deps/icu-small/source/common/unistr.cpp b/deps/icu-small/source/common/unistr.cpp index 1c59de972d95ed..077b4d6ef20811 100644 --- a/deps/icu-small/source/common/unistr.cpp +++ b/deps/icu-small/source/common/unistr.cpp @@ -672,7 +672,7 @@ UnicodeString::doCompare( int32_t start, if(isBogus()) { return -1; } - + // pin indices to legal values pinIndices(start, length); @@ -720,7 +720,7 @@ UnicodeString::doCompare( int32_t start, if(minLength > 0 && chars != srcChars) { int32_t result; -# if U_IS_BIG_ENDIAN +# if U_IS_BIG_ENDIAN // big-endian: byte comparison works result = uprv_memcmp(chars, srcChars, minLength * sizeof(UChar)); if(result != 0) { @@ -952,7 +952,7 @@ UnicodeString::extract(int32_t start, int32_t len, // else see unistr_cnv.cpp #endif -void +void UnicodeString::extractBetween(int32_t start, int32_t limit, UnicodeString& target) const { @@ -1021,7 +1021,7 @@ UnicodeString::toUTF32(UChar32 *utf32, int32_t capacity, UErrorCode &errorCode) return length32; } -int32_t +int32_t UnicodeString::indexOf(const UChar *srcChars, int32_t srcStart, int32_t srcLength, @@ -1085,7 +1085,7 @@ UnicodeString::doIndexOf(UChar32 c, } } -int32_t +int32_t UnicodeString::lastIndexOf(const UChar *srcChars, int32_t srcStart, int32_t srcLength, @@ -1157,7 +1157,7 @@ UnicodeString::doLastIndexOf(UChar32 c, // Write implementation //======================================== -UnicodeString& +UnicodeString& UnicodeString::findAndReplace(int32_t start, int32_t length, const UnicodeString& oldText, @@ -1615,7 +1615,7 @@ UnicodeString::handleReplaceBetween(int32_t start, /** * Replaceable API */ -void +void UnicodeString::copy(int32_t start, int32_t limit, int32_t dest) { if (limit <= start) { return; // Nothing to do; avoid bogus malloc call @@ -1624,7 +1624,7 @@ UnicodeString::copy(int32_t start, int32_t limit, int32_t dest) { // Check to make sure text is not null. if (text != NULL) { extractBetween(start, limit, text, 0); - insert(dest, text, 0, limit - start); + insert(dest, text, 0, limit - start); uprv_free(text); } } @@ -1692,7 +1692,7 @@ UnicodeString::doReverse(int32_t start, int32_t length) { return *this; } -UBool +UBool UnicodeString::padLeading(int32_t targetLength, UChar padChar) { @@ -1714,7 +1714,7 @@ UnicodeString::padLeading(int32_t targetLength, } } -UBool +UBool UnicodeString::padTrailing(int32_t targetLength, UChar padChar) { diff --git a/deps/icu-small/source/common/unistr_props.cpp b/deps/icu-small/source/common/unistr_props.cpp index 691bd085d6a923..40064757902ca8 100644 --- a/deps/icu-small/source/common/unistr_props.cpp +++ b/deps/icu-small/source/common/unistr_props.cpp @@ -25,7 +25,7 @@ U_NAMESPACE_BEGIN -UnicodeString& +UnicodeString& UnicodeString::trim() { if(isBogus()) { diff --git a/deps/icu-small/source/common/unistrappender.h b/deps/icu-small/source/common/unistrappender.h index 134f31497f1525..75fcb9e775f1eb 100644 --- a/deps/icu-small/source/common/unistrappender.h +++ b/deps/icu-small/source/common/unistrappender.h @@ -26,7 +26,7 @@ U_NAMESPACE_BEGIN * one character at a time in a loop. It stores appends in a buffer while * never actually calling append on the unicode string unless the buffer * fills up or is flushed. - * + * * proper usage: * { * UnicodeStringAppender appender(astring); @@ -38,7 +38,7 @@ U_NAMESPACE_BEGIN */ class UnicodeStringAppender : public UMemory { public: - + /** * dest is the UnicodeString being appended to. It must always * exist while this instance exists. diff --git a/deps/icu-small/source/common/unorm.cpp b/deps/icu-small/source/common/unorm.cpp index 93f77e66afb40e..2d9f46052ffc43 100644 --- a/deps/icu-small/source/common/unorm.cpp +++ b/deps/icu-small/source/common/unorm.cpp @@ -15,8 +15,8 @@ * 02/01/01 synwee Added normalization quickcheck enum and method. * 02/12/01 synwee Commented out quickcheck util api has been approved * Added private method for doing FCD checks -* 02/23/01 synwee Modified quickcheck and checkFCE to run through -* string for codepoints < 0x300 for the normalization +* 02/23/01 synwee Modified quickcheck and checkFCE to run through +* string for codepoints < 0x300 for the normalization * mode NFC. * 05/25/01+ Markus Scherer total rewrite, implement all normalization here * instead of just wrappers around normlzr.cpp, @@ -45,7 +45,7 @@ U_NAMESPACE_USE U_CAPI UNormalizationCheckResult U_EXPORT2 unorm_quickCheck(const UChar *src, - int32_t srcLength, + int32_t srcLength, UNormalizationMode mode, UErrorCode *pErrorCode) { const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode); @@ -53,7 +53,7 @@ unorm_quickCheck(const UChar *src, } U_CAPI UNormalizationCheckResult U_EXPORT2 -unorm_quickCheckWithOptions(const UChar *src, int32_t srcLength, +unorm_quickCheckWithOptions(const UChar *src, int32_t srcLength, UNormalizationMode mode, int32_t options, UErrorCode *pErrorCode) { const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode); diff --git a/deps/icu-small/source/common/unormimp.h b/deps/icu-small/source/common/unormimp.h index e09c5c1c916773..d2604adb4a91fa 100644 --- a/deps/icu-small/source/common/unormimp.h +++ b/deps/icu-small/source/common/unormimp.h @@ -188,7 +188,7 @@ enum { * int32_t indexes[_NORM_INDEX_TOP]; -- _NORM_INDEX_TOP=32, see enum in this file * * UTrie normTrie; -- size in bytes=indexes[_NORM_INDEX_TRIE_SIZE] - * + * * uint16_t extraData[extraDataTop]; -- extraDataTop=indexes[_NORM_INDEX_UCHAR_COUNT] * extraData[0] contains the number of units for * FC_NFKC_Closure (formatVersion>=2.1) diff --git a/deps/icu-small/source/common/uprops.cpp b/deps/icu-small/source/common/uprops.cpp index 1604ad9a179bec..5186a0c75caf6b 100644 --- a/deps/icu-small/source/common/uprops.cpp +++ b/deps/icu-small/source/common/uprops.cpp @@ -30,7 +30,9 @@ #include "unicode/unorm2.h" #include "unicode/uscript.h" #include "unicode/ustring.h" +#include "unicode/utf16.h" #include "cstring.h" +#include "emojiprops.h" #include "mutex.h" #include "normalizer2impl.h" #include "umutex.h" @@ -322,6 +324,10 @@ static UBool isRegionalIndicator(const BinaryProperty &/*prop*/, UChar32 c, UPro return 0x1F1E6<=c && c<=0x1F1FF; } +static UBool hasEmojiProperty(const BinaryProperty &/*prop*/, UChar32 c, UProperty which) { + return EmojiProps::hasBinaryProperty(c, which); +} + static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={ /* * column and mask values for binary properties from u_getUnicodeProperties(). @@ -388,14 +394,21 @@ static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={ { UPROPS_SRC_CASE_AND_NORM, 0, changesWhenCasefolded }, { UPROPS_SRC_CASE, 0, caseBinaryPropertyContains }, // UCHAR_CHANGES_WHEN_CASEMAPPED { UPROPS_SRC_NFKC_CF, 0, changesWhenNFKC_Casefolded }, - { 2, U_MASK(UPROPS_2_EMOJI), defaultContains }, - { 2, U_MASK(UPROPS_2_EMOJI_PRESENTATION), defaultContains }, - { 2, U_MASK(UPROPS_2_EMOJI_MODIFIER), defaultContains }, - { 2, U_MASK(UPROPS_2_EMOJI_MODIFIER_BASE), defaultContains }, - { 2, U_MASK(UPROPS_2_EMOJI_COMPONENT), defaultContains }, + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI_PRESENTATION + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI_MODIFIER + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI_MODIFIER_BASE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI_COMPONENT { 2, 0, isRegionalIndicator }, { 1, U_MASK(UPROPS_PREPENDED_CONCATENATION_MARK), defaultContains }, - { 2, U_MASK(UPROPS_2_EXTENDED_PICTOGRAPHIC), defaultContains }, + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EXTENDED_PICTOGRAPHIC + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_BASIC_EMOJI + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_EMOJI_KEYCAP_SEQUENCE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_FLAG_SEQUENCE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_TAG_SEQUENCE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_ZWJ_SEQUENCE + { UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI }; U_CAPI UBool U_EXPORT2 @@ -410,6 +423,26 @@ u_hasBinaryProperty(UChar32 c, UProperty which) { } } +U_CAPI UBool U_EXPORT2 +u_stringHasBinaryProperty(const UChar *s, int32_t length, UProperty which) { + if (s == nullptr && length != 0) { return false; } + if (length == 1) { + return u_hasBinaryProperty(s[0], which); // single code point + } else if (length == 2 || (length < 0 && *s != 0)) { // not empty string + // first code point + int32_t i = 0; + UChar32 c; + U16_NEXT(s, i, length, c); + if (length > 0 ? i == length : s[i] == 0) { + return u_hasBinaryProperty(c, which); // single code point + } + } + // Only call into EmojiProps for a relevant property, + // so that we not unnecessarily try to load its data file. + return UCHAR_BASIC_EMOJI <= which && which <= UCHAR_RGI_EMOJI && + EmojiProps::hasBinaryProperty(s, length, which); +} + struct IntProperty; typedef int32_t IntPropertyGetValue(const IntProperty &prop, UChar32 c, UProperty which); diff --git a/deps/icu-small/source/common/uprops.h b/deps/icu-small/source/common/uprops.h index 09830bdeb99892..2004394db64e1b 100644 --- a/deps/icu-small/source/common/uprops.h +++ b/deps/icu-small/source/common/uprops.h @@ -224,7 +224,8 @@ enum { /* * Properties in vector word 2 * Bits - * 31..26 http://www.unicode.org/reports/tr51/#Emoji_Properties + * 31..26 unused since ICU 70 added uemoji.icu; + * in ICU 57..69 stored emoji properties * 25..20 Line Break * 19..15 Sentence Break * 14..10 Word Break @@ -232,12 +233,12 @@ enum { * 4.. 0 Decomposition Type */ enum { - UPROPS_2_EXTENDED_PICTOGRAPHIC=26, - UPROPS_2_EMOJI_COMPONENT, - UPROPS_2_EMOJI, - UPROPS_2_EMOJI_PRESENTATION, - UPROPS_2_EMOJI_MODIFIER, - UPROPS_2_EMOJI_MODIFIER_BASE + UPROPS_2_UNUSED_WAS_EXTENDED_PICTOGRAPHIC=26, // ICU 62..69 + UPROPS_2_UNUSED_WAS_EMOJI_COMPONENT, // ICU 60..69 + UPROPS_2_UNUSED_WAS_EMOJI, // ICU 57..69 + UPROPS_2_UNUSED_WAS_EMOJI_PRESENTATION, // ICU 57..69 + UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER, // ICU 57..69 + UPROPS_2_UNUSED_WAS_EMOJI_MODIFIER_BASE // ICU 57..69 }; #define UPROPS_LB_MASK 0x03f00000 @@ -377,6 +378,7 @@ enum UPropertySource { UPROPS_SRC_INPC, UPROPS_SRC_INSC, UPROPS_SRC_VO, + UPROPS_SRC_EMOJI, /** One more than the highest UPropertySource (UPROPS_SRC_) constant. */ UPROPS_SRC_COUNT }; diff --git a/deps/icu-small/source/common/ures_cnv.cpp b/deps/icu-small/source/common/ures_cnv.cpp index 43515fda282972..1aa58e753ceeb4 100644 --- a/deps/icu-small/source/common/ures_cnv.cpp +++ b/deps/icu-small/source/common/ures_cnv.cpp @@ -27,8 +27,8 @@ #include "ustr_cnv.h" U_CAPI UResourceBundle * U_EXPORT2 -ures_openU(const UChar *myPath, - const char *localeID, +ures_openU(const UChar *myPath, + const char *localeID, UErrorCode *status) { char pathBuffer[1024]; diff --git a/deps/icu-small/source/common/uresbund.cpp b/deps/icu-small/source/common/uresbund.cpp index 73c4b44037e8aa..a9c6459418cacb 100644 --- a/deps/icu-small/source/common/uresbund.cpp +++ b/deps/icu-small/source/common/uresbund.cpp @@ -77,7 +77,7 @@ static UBool U_CALLCONV compareEntries(const UHashTok p1, const UHashTok p2) { /** - * Internal function, gets parts of locale name according + * Internal function, gets parts of locale name according * to the position of '_' character */ static UBool chopLocale(char *name) { @@ -116,44 +116,46 @@ static void entryIncrease(UResourceDataEntry *entry) { * Internal function. Tries to find a resource in given Resource * Bundle, as well as in its parents */ -static const ResourceData *getFallbackData(const UResourceBundle* resBundle, const char* * resTag, UResourceDataEntry* *realData, Resource *res, UErrorCode *status) { - UResourceDataEntry *resB = resBundle->fData; +static UResourceDataEntry *getFallbackData( + const UResourceBundle *resBundle, + const char **resTag, Resource *res, UErrorCode *status) { + UResourceDataEntry *dataEntry = resBundle->fData; int32_t indexR = -1; int32_t i = 0; *res = RES_BOGUS; - if(resB != NULL) { - if(resB->fBogus == U_ZERO_ERROR) { /* if this resource is real, */ - *res = res_getTableItemByKey(&(resB->fData), resB->fData.rootRes, &indexR, resTag); /* try to get data from there */ - i++; - } - if(resBundle->fHasFallback == TRUE) { - while(*res == RES_BOGUS && resB->fParent != NULL) { /* Otherwise, we'll look in parents */ - resB = resB->fParent; - if(resB->fBogus == U_ZERO_ERROR) { - i++; - *res = res_getTableItemByKey(&(resB->fData), resB->fData.rootRes, &indexR, resTag); - } + if(dataEntry == nullptr) { + *status = U_MISSING_RESOURCE_ERROR; + return nullptr; + } + if(dataEntry->fBogus == U_ZERO_ERROR) { /* if this resource is real, */ + *res = res_getTableItemByKey(&(dataEntry->fData), dataEntry->fData.rootRes, &indexR, resTag); /* try to get data from there */ + i++; + } + if(resBundle->fHasFallback) { + // Otherwise, we'll look in parents. + while(*res == RES_BOGUS && dataEntry->fParent != nullptr) { + dataEntry = dataEntry->fParent; + if(dataEntry->fBogus == U_ZERO_ERROR) { + i++; + *res = res_getTableItemByKey(&(dataEntry->fData), dataEntry->fData.rootRes, &indexR, resTag); } } + } - if(*res != RES_BOGUS) { /* If the resource is found in parents, we need to adjust the error */ - if(i>1) { - if(uprv_strcmp(resB->fName, uloc_getDefault())==0 || uprv_strcmp(resB->fName, kRootLocaleName)==0) { - *status = U_USING_DEFAULT_WARNING; - } else { - *status = U_USING_FALLBACK_WARNING; - } - } - *realData = resB; - return (&(resB->fData)); - } else { /* If resource is not found, we need to give an error */ - *status = U_MISSING_RESOURCE_ERROR; - return NULL; + if(*res == RES_BOGUS) { + // If the resource is not found, we need to give an error. + *status = U_MISSING_RESOURCE_ERROR; + return nullptr; + } + // If the resource is found in parents, we need to adjust the error. + if(i>1) { + if(uprv_strcmp(dataEntry->fName, uloc_getDefault())==0 || uprv_strcmp(dataEntry->fName, kRootLocaleName)==0) { + *status = U_USING_DEFAULT_WARNING; + } else { + *status = U_USING_FALLBACK_WARNING; } - } else { - *status = U_MISSING_RESOURCE_ERROR; - return NULL; } + return dataEntry; } static void @@ -236,7 +238,7 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) { int32_t pos = UHASH_FIRST; const UHashElement *e; UResourceDataEntry *resB; - + Mutex lock(&resbMutex); if (cache == NULL) { fprintf(stderr,"%s:%d: RB Cache is NULL.\n", __FILE__, __LINE__); @@ -253,9 +255,9 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) { resB->fPath?resB->fPath:"NULL", (void*)resB->fPool, (void*)resB->fAlias, - (void*)resB->fParent); + (void*)resB->fParent); } - + fprintf(stderr,"%s:%d: RB Cache still contains %d items.\n", __FILE__, __LINE__, uhash_count(cache)); return cacheNotEmpty; } @@ -279,7 +281,7 @@ static void U_CALLCONV createCache(UErrorCode &status) { cache = uhash_open(hashEntry, compareEntries, NULL, &status); ucln_common_registerCleanup(UCLN_COMMON_URES, ures_cleanup); } - + static void initCache(UErrorCode *status) { umtx_initOnce(gCacheInitOnce, &createCache, *status); } @@ -461,11 +463,10 @@ getPoolEntry(const char *path, UErrorCode *status) { /* INTERNAL: */ /* CAUTION: resbMutex must be locked when calling this function! */ static UResourceDataEntry * -findFirstExisting(const char* path, char* name, +findFirstExisting(const char* path, char* name, const char* defaultLocale, UBool *isRoot, UBool *hasChopped, UBool *isDefault, UErrorCode* status) { UResourceDataEntry *r = NULL; UBool hasRealData = FALSE; - const char *defaultLoc = uloc_getDefault(); *hasChopped = TRUE; /* we're starting with a fresh name */ while(*hasChopped && !hasRealData) { @@ -474,7 +475,7 @@ findFirstExisting(const char* path, char* name, if (U_FAILURE(*status)) { return NULL; } - *isDefault = (UBool)(uprv_strncmp(name, defaultLoc, uprv_strlen(name)) == 0); + *isDefault = (UBool)(uprv_strncmp(name, defaultLocale, uprv_strlen(name)) == 0); hasRealData = (UBool)(r->fBogus == U_ZERO_ERROR); if(!hasRealData) { /* this entry is not real. We will discard it. */ @@ -668,11 +669,14 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID, usrDataPath[sizeof(usrDataPath) - 1] = 0; } } + + // Note: We need to query the default locale *before* locking resbMutex. + const char *defaultLocale = uloc_getDefault(); Mutex lock(&resbMutex); // Lock resbMutex until the end of this function. /* We're going to skip all the locales that do not have any data */ - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + r = findFirstExisting(path, name, defaultLocale, &isRoot, &hasChopped, &isDefault, &intStatus); // If we failed due to out-of-memory, report the failure and exit early. if (intStatus == U_MEMORY_ALLOCATION_ERROR) { @@ -712,8 +716,8 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID, /* if that is the case, we need to chain in the default locale */ if(r==NULL && openType == URES_OPEN_LOCALE_DEFAULT_ROOT && !isDefault && !isRoot) { /* insert default locale */ - uprv_strcpy(name, uloc_getDefault()); - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + uprv_strcpy(name, defaultLocale); + r = findFirstExisting(path, name, defaultLocale, &isRoot, &hasChopped, &isDefault, &intStatus); // If we failed due to out-of-memory, report the failure and exit early. if (intStatus == U_MEMORY_ALLOCATION_ERROR) { *status = intStatus; @@ -737,7 +741,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID, /* present */ if(r == NULL) { uprv_strcpy(name, kRootLocaleName); - r = findFirstExisting(path, name, &isRoot, &hasChopped, &isDefault, &intStatus); + r = findFirstExisting(path, name, defaultLocale, &isRoot, &hasChopped, &isDefault, &intStatus); // If we failed due to out-of-memory, report the failure and exit early. if (intStatus == U_MEMORY_ALLOCATION_ERROR) { *status = intStatus; @@ -770,7 +774,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID, finish: if(U_SUCCESS(*status)) { if(intStatus != U_ZERO_ERROR) { - *status = intStatus; + *status = intStatus; } return r; } else { @@ -791,7 +795,17 @@ entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) { return NULL; } + // Note: We need to query the default locale *before* locking resbMutex. + // If the localeID is NULL, then we want to use the default locale. + if (localeID == NULL) { + localeID = uloc_getDefault(); + } else if (*localeID == 0) { + // If the localeID is "", then we want to use the root locale. + localeID = kRootLocaleName; + } + Mutex lock(&resbMutex); + // findFirstExisting() without fallbacks. UResourceDataEntry *r = init_entry(localeID, path, status); if(U_SUCCESS(*status)) { @@ -866,7 +880,7 @@ static void entryCloseInt(UResourceDataEntry *resB) { } } -/** +/** * API: closes a resource bundle and cleans up. */ @@ -880,7 +894,7 @@ U_CFUNC void ures_setResPath(UResourceBundle *resB, const char* toAdd) { if(resB->fResPath == NULL) { resB->fResPath = resB->fResBuf; *(resB->fResPath) = 0; - } + } resB->fResPathLen = uprv_strlen(toAdd); if(RES_BUFSIZE <= resB->fResPathLen+1) { if(resB->fResPath == resB->fResBuf) { @@ -898,7 +912,7 @@ static void ures_appendResPath(UResourceBundle *resB, const char* toAdd, int32_t resB->fResPath = resB->fResBuf; *(resB->fResPath) = 0; resB->fResPathLen = 0; - } + } resB->fResPathLen += lenToAdd; if(RES_BUFSIZE <= resB->fResPathLen+1) { if(resB->fResPath == resB->fResBuf) { @@ -960,238 +974,265 @@ ures_close(UResourceBundle* resB) ures_closeBundle(resB, TRUE); } -static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, - const char *key, int32_t idx, UResourceDataEntry *realData, - const UResourceBundle *parent, int32_t noAlias, - UResourceBundle *resB, UErrorCode *status) -{ - if(status == NULL || U_FAILURE(*status)) { - return resB; - } - if (parent == NULL) { +namespace { + +UResourceBundle *init_resb_result( + UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, + UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, + int32_t recursionDepth, + UResourceBundle *resB, UErrorCode *status); + +// TODO: Try to refactor further, so that we output a dataEntry + Resource + (optionally) resPath, +// rather than a UResourceBundle. +// May need to entryIncrease() the resulting dataEntry. +UResourceBundle *getAliasTargetAsResourceBundle( + const ResourceData &resData, Resource r, const char *key, int32_t idx, + UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, + int32_t recursionDepth, + UResourceBundle *resB, UErrorCode *status) { + // TODO: When an error occurs: Should we return nullptr vs. resB? + if (U_FAILURE(*status)) { return resB; } + U_ASSERT(RES_GET_TYPE(r) == URES_ALIAS); + int32_t len = 0; + const UChar *alias = res_getAlias(&resData, r, &len); + if(len <= 0) { + // bad alias *status = U_ILLEGAL_ARGUMENT_ERROR; - return NULL; + return resB; } - if(RES_GET_TYPE(r) == URES_ALIAS) { /* This is an alias, need to exchange with real data */ - if(noAlias < URES_MAX_ALIAS_LEVEL) { - int32_t len = 0; - const UChar *alias = res_getAlias(rdata, r, &len); - if(len > 0) { - /* we have an alias, now let's cut it up */ - char stackAlias[200]; - char *chAlias = NULL, *path = NULL, *locale = NULL, *keyPath = NULL; - int32_t capacity; - - /* - * Allocate enough space for both the char * version - * of the alias and parent->fResPath. - * - * We do this so that res_findResource() can modify the path, - * which allows us to remove redundant _res_findResource() variants - * in uresdata.c. - * res_findResource() now NUL-terminates each segment so that table keys - * can always be compared with strcmp() instead of strncmp(). - * Saves code there and simplifies testing and code coverage. - * - * markus 2003oct17 - */ - ++len; /* count the terminating NUL */ - if(parent->fResPath != NULL) { - capacity = (int32_t)uprv_strlen(parent->fResPath) + 1; - } else { - capacity = 0; - } - if(capacity < len) { - capacity = len; + + // Copy the UTF-16 alias string into an invariant-character string. + // + // We do this so that res_findResource() can modify the path, + // which allows us to remove redundant _res_findResource() variants + // in uresdata.c. + // res_findResource() now NUL-terminates each segment so that table keys + // can always be compared with strcmp() instead of strncmp(). + // Saves code there and simplifies testing and code coverage. + // + // markus 2003oct17 + CharString chAlias; + chAlias.appendInvariantChars(alias, len, *status); + if (U_FAILURE(*status)) { + return nullptr; + } + + // We have an alias, now let's cut it up. + const char *path = nullptr, *locale = nullptr, *keyPath = nullptr; + if(chAlias[0] == RES_PATH_SEPARATOR) { + // There is a path included. + char *chAliasData = chAlias.data(); + char *sep = chAliasData + 1; + path = sep; + sep = uprv_strchr(sep, RES_PATH_SEPARATOR); + if(sep != nullptr) { + *sep++ = 0; + } + if(uprv_strcmp(path, "LOCALE") == 0) { + // This is an XPath alias, starting with "/LOCALE/". + // It contains the path to a resource which should be looked up + // starting in the valid locale. + // TODO: Can/should we forbid a /LOCALE alias without key path? + // It seems weird to alias to the same path, just starting from the valid locale. + // That will often yield an infinite loop. + keyPath = sep; + // Read from the valid locale which we already have. + path = locale = nullptr; + } else { + if(uprv_strcmp(path, "ICUDATA") == 0) { /* want ICU data */ + path = nullptr; + } + if (sep == nullptr) { + // TODO: This ends up using the root bundle. Can/should we forbid this? + locale = ""; + } else { + locale = sep; + sep = uprv_strchr(sep, RES_PATH_SEPARATOR); + if(sep != nullptr) { + *sep++ = 0; } - if(capacity <= (int32_t)sizeof(stackAlias)) { - capacity = (int32_t)sizeof(stackAlias); - chAlias = stackAlias; - } else { - chAlias = (char *)uprv_malloc(capacity); - /* test for NULL */ - if(chAlias == NULL) { - *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; - } + keyPath = sep; + } + } + } else { + // No path, start with a locale. + char *sep = chAlias.data(); + locale = sep; + sep = uprv_strchr(sep, RES_PATH_SEPARATOR); + if(sep != nullptr) { + *sep++ = 0; + } + keyPath = sep; + path = validLocaleDataEntry->fPath; + } + + // Got almost everything, let's try to open. + // First, open the bundle with real data. + LocalUResourceBundlePointer mainRes; + UResourceDataEntry *dataEntry; + if (locale == nullptr) { + // alias = /LOCALE/keyPath + // Read from the valid locale which we already have. + dataEntry = validLocaleDataEntry; + } else { + UErrorCode intStatus = U_ZERO_ERROR; + // TODO: Shouldn't we use ures_open() for locale data bundles (!noFallback)? + mainRes.adoptInstead(ures_openDirect(path, locale, &intStatus)); + if(U_FAILURE(intStatus)) { + // We failed to open the resource bundle we're aliasing to. + *status = intStatus; + return resB; + } + dataEntry = mainRes->fData; + } + + const char* temp = nullptr; + if(keyPath == nullptr) { + // No key path. This means that we are going to to use the corresponding resource from + // another bundle. + // TODO: Why the special code path? + // Why not put together a key path from containerResPath + key or idx, + // as a comment below suggests, and go into the regular code branch? + // First, we are going to get a corresponding container + // resource to the one we are searching. + r = dataEntry->fData.rootRes; + if(containerResPath) { + chAlias.clear().append(containerResPath, *status); + if (U_FAILURE(*status)) { + return nullptr; + } + char *aKey = chAlias.data(); + // TODO: should res_findResource() return a new dataEntry, too? + r = res_findResource(&dataEntry->fData, r, &aKey, &temp); + } + if(key) { + // We need to make keyPath from the containerResPath and + // current key, if there is a key associated. + chAlias.clear().append(key, *status); + if (U_FAILURE(*status)) { + return nullptr; + } + char *aKey = chAlias.data(); + r = res_findResource(&dataEntry->fData, r, &aKey, &temp); + } else if(idx != -1) { + // If there is no key, but there is an index, try to get by the index. + // Here we have either a table or an array, so get the element. + int32_t type = RES_GET_TYPE(r); + if(URES_IS_TABLE(type)) { + const char *aKey; + r = res_getTableItemByIndex(&dataEntry->fData, r, idx, &aKey); + } else { /* array */ + r = res_getArrayItem(&dataEntry->fData, r, idx); + } + } + if(r != RES_BOGUS) { + resB = init_resb_result( + dataEntry, r, temp, -1, validLocaleDataEntry, nullptr, recursionDepth+1, + resB, status); + } else { + *status = U_MISSING_RESOURCE_ERROR; + } + } else { + // This one is a bit trickier. + // We start finding keys, but after we resolve one alias, the path might continue. + // Consider: + // aliastest:alias { "testtypes/anotheralias/Sequence" } + // anotheralias:alias { "/ICUDATA/sh/CollationElements" } + // aliastest resource should finally have the sequence, not collation elements. + CharString pathBuf(keyPath, *status); + if (U_FAILURE(*status)) { + return nullptr; + } + char *myPath = pathBuf.data(); + containerResPath = nullptr; + // Now we have fallback following here. + for(;;) { + r = dataEntry->fData.rootRes; + // TODO: Move containerResPath = nullptr to here, + // consistent with restarting from the rootRes of another bundle?! + + // This loop handles 'found' resources over several levels. + while(*myPath && U_SUCCESS(*status)) { + r = res_findResource(&(dataEntry->fData), r, &myPath, &temp); + if(r == RES_BOGUS) { + // No resource found, we don't really want to look anymore on this level. + break; } - u_UCharsToChars(alias, chAlias, len); - - if(*chAlias == RES_PATH_SEPARATOR) { - /* there is a path included */ - locale = uprv_strchr(chAlias+1, RES_PATH_SEPARATOR); - if(locale == NULL) { - locale = uprv_strchr(chAlias, 0); /* avoid locale == NULL to make code below work */ - } else { - *locale = 0; - locale++; - } - path = chAlias+1; - if(uprv_strcmp(path, "LOCALE") == 0) { - /* this is an XPath alias, starting with "/LOCALE/" */ - /* it contains the path to a resource which should be looked up */ - /* starting in the requested locale */ - keyPath = locale; - locale = parent->fTopLevelData->fName; /* this is the requested locale's name */ - path = realData->fPath; /* we will be looking in the same package */ - } else { - if(uprv_strcmp(path, "ICUDATA") == 0) { /* want ICU data */ - path = NULL; - } - keyPath = uprv_strchr(locale, RES_PATH_SEPARATOR); - if(keyPath) { - *keyPath = 0; - keyPath++; - } - } - } else { - /* no path, start with a locale */ - locale = chAlias; - keyPath = uprv_strchr(locale, RES_PATH_SEPARATOR); - if(keyPath) { - *keyPath = 0; - keyPath++; - } - path = realData->fPath; + // Found a resource, but it might be an indirection. + resB = init_resb_result( + dataEntry, r, temp, -1, + validLocaleDataEntry, containerResPath, recursionDepth+1, + resB, status); + if (U_FAILURE(*status)) { + break; } - - - { - /* got almost everything, let's try to open */ - /* first, open the bundle with real data */ - UResourceBundle *result = resB; - const char* temp = NULL; - UErrorCode intStatus = U_ZERO_ERROR; - UResourceBundle *mainRes = ures_openDirect(path, locale, &intStatus); - if(U_SUCCESS(intStatus)) { - if(keyPath == NULL) { - /* no key path. This means that we are going to - * to use the corresponding resource from - * another bundle - */ - /* first, we are going to get a corresponding parent - * resource to the one we are searching. - */ - char *aKey = parent->fResPath; - if(aKey) { - uprv_strcpy(chAlias, aKey); /* allocated large enough above */ - aKey = chAlias; - r = res_findResource(&(mainRes->fResData), mainRes->fRes, &aKey, &temp); - } else { - r = mainRes->fRes; - } - if(key) { - /* we need to make keyPath from parent's fResPath and - * current key, if there is a key associated - */ - len = (int32_t)(uprv_strlen(key) + 1); - if(len > capacity) { - capacity = len; - if(chAlias == stackAlias) { - chAlias = (char *)uprv_malloc(capacity); - } else { - chAlias = (char *)uprv_realloc(chAlias, capacity); - } - if(chAlias == NULL) { - ures_close(mainRes); - *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; - } - } - uprv_memcpy(chAlias, key, len); - aKey = chAlias; - r = res_findResource(&(mainRes->fResData), r, &aKey, &temp); - } else if(idx != -1) { - /* if there is no key, but there is an index, try to get by the index */ - /* here we have either a table or an array, so get the element */ - int32_t type = RES_GET_TYPE(r); - if(URES_IS_TABLE(type)) { - r = res_getTableItemByIndex(&(mainRes->fResData), r, idx, (const char **)&aKey); - } else { /* array */ - r = res_getArrayItem(&(mainRes->fResData), r, idx); - } - } - if(r != RES_BOGUS) { - result = init_resb_result(&(mainRes->fResData), r, temp, -1, mainRes->fData, mainRes, noAlias+1, resB, status); - } else { - *status = U_MISSING_RESOURCE_ERROR; - result = resB; - } - } else { - /* this one is a bit trickier. - * we start finding keys, but after we resolve one alias, the path might continue. - * Consider: - * aliastest:alias { "testtypes/anotheralias/Sequence" } - * anotheralias:alias { "/ICUDATA/sh/CollationElements" } - * aliastest resource should finally have the sequence, not collation elements. - */ - UResourceDataEntry *dataEntry = mainRes->fData; - char stackPath[URES_MAX_BUFFER_SIZE]; - char *pathBuf = stackPath, *myPath = pathBuf; - if(uprv_strlen(keyPath) >= UPRV_LENGTHOF(stackPath)) { - pathBuf = (char *)uprv_malloc((uprv_strlen(keyPath)+1)*sizeof(char)); - if(pathBuf == NULL) { - *status = U_MEMORY_ALLOCATION_ERROR; - ures_close(mainRes); - return NULL; - } - } - uprv_strcpy(pathBuf, keyPath); - result = mainRes; - /* now we have fallback following here */ - do { - r = dataEntry->fData.rootRes; - /* this loop handles 'found' resources over several levels */ - while(*myPath && U_SUCCESS(*status)) { - r = res_findResource(&(dataEntry->fData), r, &myPath, &temp); - if(r != RES_BOGUS) { /* found a resource, but it might be an indirection */ - resB = init_resb_result(&(dataEntry->fData), r, temp, -1, dataEntry, result, noAlias+1, resB, status); - result = resB; - if(result) { - r = result->fRes; /* switch to a new resource, possibly a new tree */ - dataEntry = result->fData; - } - } else { /* no resource found, we don't really want to look anymore on this level */ - break; - } - } - dataEntry = dataEntry->fParent; - uprv_strcpy(pathBuf, keyPath); - myPath = pathBuf; - } while(r == RES_BOGUS && dataEntry != NULL); - if(r == RES_BOGUS) { - *status = U_MISSING_RESOURCE_ERROR; - result = resB; - } - if(pathBuf != stackPath) { - uprv_free(pathBuf); - } - } - } else { /* we failed to open the resource we're aliasing to */ - *status = intStatus; + if (temp == nullptr || uprv_strcmp(keyPath, temp) != 0) { + // The call to init_resb_result() above will set resB->fKeyPath to be + // the same as resB->fKey, + // throwing away any additional path elements if we had them -- + // if the key path wasn't just a single resource ID, clear out + // the bundle's key path and re-set it to be equal to keyPath. + ures_freeResPath(resB); + ures_appendResPath(resB, keyPath, (int32_t)uprv_strlen(keyPath), status); + if(resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) { + ures_appendResPath(resB, RES_PATH_SEPARATOR_S, 1, status); } - if(chAlias != stackAlias) { - uprv_free(chAlias); - } - if(mainRes != result) { - ures_close(mainRes); + if (U_FAILURE(*status)) { + break; } - ResourceTracer(resB).maybeTrace("getalias"); - return result; } - } else { - /* bad alias, should be an error */ - *status = U_ILLEGAL_ARGUMENT_ERROR; - return resB; + r = resB->fRes; /* switch to a new resource, possibly a new tree */ + dataEntry = resB->fData; + containerResPath = resB->fResPath; } - } else { + if (U_FAILURE(*status) || r != RES_BOGUS) { + break; + } + // Fall back to the parent bundle, if there is one. + dataEntry = dataEntry->fParent; + if (dataEntry == nullptr) { + *status = U_MISSING_RESOURCE_ERROR; + break; + } + // Copy the same keyPath again. + myPath = pathBuf.data(); + uprv_strcpy(myPath, keyPath); + } + } + if(mainRes.getAlias() == resB) { + mainRes.orphan(); + } + ResourceTracer(resB).maybeTrace("getalias"); + return resB; +} + +// Recursive function, should be called only by itself, by its simpler wrapper, +// or by getAliasTargetAsResourceBundle(). +UResourceBundle *init_resb_result( + UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, + UResourceDataEntry *validLocaleDataEntry, const char *containerResPath, + int32_t recursionDepth, + UResourceBundle *resB, UErrorCode *status) { + // TODO: When an error occurs: Should we return nullptr vs. resB? + if(status == NULL || U_FAILURE(*status)) { + return resB; + } + if (validLocaleDataEntry == nullptr) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return NULL; + } + if(RES_GET_TYPE(r) == URES_ALIAS) { + // This is an alias, need to exchange with real data. + if(recursionDepth >= URES_MAX_ALIAS_LEVEL) { *status = U_TOO_MANY_ALIASES_ERROR; return resB; } + return getAliasTargetAsResourceBundle( + dataEntry->fData, r, key, idx, + validLocaleDataEntry, containerResPath, recursionDepth, resB, status); } if(resB == NULL) { resB = (UResourceBundle *)uprv_malloc(sizeof(UResourceBundle)); - /* test for NULL */ if (resB == NULL) { *status = U_MEMORY_ALLOCATION_ERROR; return NULL; @@ -1206,9 +1247,9 @@ static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, if(resB->fVersion != NULL) { uprv_free(resB->fVersion); } - /* + /* weiv: if stack object was passed in, it doesn't really need to be reinited, - since the purpose of initing is to remove stack junk. However, at this point + since the purpose of initing is to remove stack junk. However, at this point we would not do anything to an allocated object, so stack object should be treated the same */ @@ -1217,20 +1258,20 @@ static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, ures_initStackObject(resB); } */ - if(parent != resB) { + if(containerResPath != resB->fResPath) { ures_freeResPath(resB); } } - resB->fData = realData; + resB->fData = dataEntry; entryIncrease(resB->fData); resB->fHasFallback = FALSE; resB->fIsTopLevel = FALSE; resB->fIndex = -1; - resB->fKey = key; - /*resB->fParentRes = parent;*/ - resB->fTopLevelData = parent->fTopLevelData; - if(parent->fResPath && parent != resB) { - ures_appendResPath(resB, parent->fResPath, parent->fResPathLen, status); + resB->fKey = key; + resB->fValidLocaleDataEntry = validLocaleDataEntry; + if(containerResPath != resB->fResPath) { + ures_appendResPath( + resB, containerResPath, static_cast(uprv_strlen(containerResPath)), status); } if(key != NULL) { ures_appendResPath(resB, key, (int32_t)uprv_strlen(key), status); @@ -1253,13 +1294,23 @@ static UResourceBundle *init_resb_result(const ResourceData *rdata, Resource r, resB->fVersion = NULL; resB->fRes = r; - /*resB->fParent = parent->fRes;*/ - uprv_memmove(&resB->fResData, rdata, sizeof(ResourceData)); - resB->fSize = res_countArrayItems(&(resB->fResData), resB->fRes); + resB->fSize = res_countArrayItems(&resB->getResData(), resB->fRes); ResourceTracer(resB).trace("get"); return resB; } +UResourceBundle *init_resb_result( + UResourceDataEntry *dataEntry, Resource r, const char *key, int32_t idx, + // validLocaleDataEntry + containerResPath + const UResourceBundle *container, + UResourceBundle *resB, UErrorCode *status) { + return init_resb_result( + dataEntry, r, key, idx, + container->fValidLocaleDataEntry, container->fResPath, 0, resB, status); +} + +} // namespace + UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *original, UErrorCode *status) { UBool isStackObject; if(U_FAILURE(*status) || r == original) { @@ -1305,7 +1356,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getString(const UResourceBundle* resB, int32_ *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - s = res_getString({resB}, &(resB->fResData), resB->fRes, len); + s = res_getString({resB}, &resB->getResData(), resB->fRes, len); if (s == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -1384,7 +1435,7 @@ ures_getUTF8String(const UResourceBundle *resB, return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status); } -U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int32_t* len, +U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int32_t* len, UErrorCode* status) { const uint8_t *p; if (status==NULL || U_FAILURE(*status)) { @@ -1394,14 +1445,14 @@ U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int3 *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - p = res_getBinary({resB}, &(resB->fResData), resB->fRes, len); + p = res_getBinary({resB}, &resB->getResData(), resB->fRes, len); if (p == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } return p; } -U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, int32_t* len, +U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, int32_t* len, UErrorCode* status) { const int32_t *p; if (status==NULL || U_FAILURE(*status)) { @@ -1411,14 +1462,14 @@ U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, i *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - p = res_getIntVector({resB}, &(resB->fResData), resB->fRes, len); + p = res_getIntVector({resB}, &resB->getResData(), resB->fRes, len); if (p == NULL) { *status = U_RESOURCE_TYPE_MISMATCH; } return p; } -/* this function returns a signed integer */ +/* this function returns a signed integer */ /* it performs sign extension */ U_CAPI int32_t U_EXPORT2 ures_getInt(const UResourceBundle* resB, UErrorCode *status) { if (status==NULL || U_FAILURE(*status)) { @@ -1477,7 +1528,7 @@ U_CAPI int32_t U_EXPORT2 ures_getSize(const UResourceBundle *resB) { if(resB == NULL) { return 0; } - + return resB->fSize; } @@ -1489,7 +1540,7 @@ static const UChar* ures_getStringWithAlias(const UResourceBundle *resB, Resourc ures_close(tempRes); return result; } else { - return res_getString({resB, sIndex}, &(resB->fResData), r, len); + return res_getString({resB, sIndex}, &resB->getResData(), r, len); } } @@ -1509,7 +1560,7 @@ U_CAPI UBool U_EXPORT2 ures_hasNext(const UResourceBundle *resB) { U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* len, const char ** key, UErrorCode *status) { Resource r = RES_BOGUS; - + if (status==NULL || U_FAILURE(*status)) { return NULL; } @@ -1517,7 +1568,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* *status = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - + if(resB->fIndex == resB->fSize-1) { *status = U_INDEX_OUTOFBOUNDS_ERROR; } else { @@ -1525,18 +1576,18 @@ U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* switch(RES_GET_TYPE(resB->fRes)) { case URES_STRING: case URES_STRING_V2: - return res_getString({resB}, &(resB->fResData), resB->fRes, len); + return res_getString({resB}, &resB->getResData(), resB->fRes, len); case URES_TABLE: case URES_TABLE16: case URES_TABLE32: - r = res_getTableItemByIndex(&(resB->fResData), resB->fRes, resB->fIndex, key); + r = res_getTableItemByIndex(&resB->getResData(), resB->fRes, resB->fIndex, key); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } return ures_getStringWithAlias(resB, r, resB->fIndex, len, status); case URES_ARRAY: case URES_ARRAY16: - r = res_getArrayItem(&(resB->fResData), resB->fRes, resB->fIndex); + r = res_getArrayItem(&resB->getResData(), resB->fRes, resB->fIndex); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } @@ -1585,18 +1636,18 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getNextResource(UResourceBundle *resB, UR case URES_TABLE: case URES_TABLE16: case URES_TABLE32: - r = res_getTableItemByIndex(&(resB->fResData), resB->fRes, resB->fIndex, &key); + r = res_getTableItemByIndex(&resB->getResData(), resB->fRes, resB->fIndex, &key); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } - return init_resb_result(&(resB->fResData), r, key, resB->fIndex, resB->fData, resB, 0, fillIn, status); + return init_resb_result(resB->fData, r, key, resB->fIndex, resB, fillIn, status); case URES_ARRAY: case URES_ARRAY16: - r = res_getArrayItem(&(resB->fResData), resB->fRes, resB->fIndex); + r = res_getArrayItem(&resB->getResData(), resB->fRes, resB->fIndex); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } - return init_resb_result(&(resB->fResData), r, key, resB->fIndex, resB->fData, resB, 0, fillIn, status); + return init_resb_result(resB->fData, r, key, resB->fIndex, resB, fillIn, status); default: /*return NULL;*/ return fillIn; @@ -1631,18 +1682,18 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByIndex(const UResourceBundle *resB, i case URES_TABLE: case URES_TABLE16: case URES_TABLE32: - r = res_getTableItemByIndex(&(resB->fResData), resB->fRes, indexR, &key); + r = res_getTableItemByIndex(&resB->getResData(), resB->fRes, indexR, &key); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } - return init_resb_result(&(resB->fResData), r, key, indexR, resB->fData, resB, 0, fillIn, status); + return init_resb_result(resB->fData, r, key, indexR, resB, fillIn, status); case URES_ARRAY: case URES_ARRAY16: - r = res_getArrayItem(&(resB->fResData), resB->fRes, indexR); + r = res_getArrayItem(&resB->getResData(), resB->fRes, indexR); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } - return init_resb_result(&(resB->fResData), r, key, indexR, resB->fData, resB, 0, fillIn, status); + return init_resb_result(resB->fData, r, key, indexR, resB, fillIn, status); default: /*return NULL;*/ return fillIn; @@ -1670,18 +1721,18 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB, switch(RES_GET_TYPE(resB->fRes)) { case URES_STRING: case URES_STRING_V2: - return res_getString({resB}, &(resB->fResData), resB->fRes, len); + return res_getString({resB}, &resB->getResData(), resB->fRes, len); case URES_TABLE: case URES_TABLE16: case URES_TABLE32: - r = res_getTableItemByIndex(&(resB->fResData), resB->fRes, indexS, &key); + r = res_getTableItemByIndex(&resB->getResData(), resB->fRes, indexS, &key); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } return ures_getStringWithAlias(resB, r, indexS, len, status); case URES_ARRAY: case URES_ARRAY16: - r = res_getArrayItem(&(resB->fResData), resB->fRes, indexS); + r = res_getArrayItem(&resB->getResData(), resB->fRes, indexS); if(r == RES_BOGUS && resB->fHasFallback) { /* TODO: do the fallback */ } @@ -1720,9 +1771,9 @@ ures_getUTF8StringByIndex(const UResourceBundle *resB, }*/ U_CAPI UResourceBundle* U_EXPORT2 -ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status) +ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status) { - UResourceBundle *first = NULL; + UResourceBundle *first = NULL; UResourceBundle *result = fillIn; char *packageName = NULL; char *pathToResource = NULL, *save = NULL; @@ -1775,7 +1826,7 @@ ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status) } U_CAPI UResourceBundle* U_EXPORT2 -ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *fillIn, UErrorCode *status) +ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *fillIn, UErrorCode *status) { Resource res = RES_BOGUS; UResourceBundle *result = fillIn; @@ -1789,9 +1840,9 @@ ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *f /* this loop is here because aliasing is resolved on this level, not on res level */ /* so, when we encounter an alias, it is not an aggregate resource, so we return */ do { - res = res_findResource(&(resB->fResData), resB->fRes, &path, &key); + res = res_findResource(&resB->getResData(), resB->fRes, &path, &key); if(res != RES_BOGUS) { - result = init_resb_result(&(resB->fResData), res, key, -1, resB->fData, resB, 0, fillIn, status); + result = init_resb_result(resB->fData, res, key, -1, resB, fillIn, status); resB = result; } else { *status = U_MISSING_RESOURCE_ERROR; @@ -1801,9 +1852,9 @@ ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *f return result; } -U_CAPI const UChar* U_EXPORT2 -ures_getStringByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, +U_CAPI const UChar* U_EXPORT2 +ures_getStringByKeyWithFallback(const UResourceBundle *resB, + const char* inKey, int32_t* len, UErrorCode *status) { @@ -1830,7 +1881,7 @@ ures_getStringByKeyWithFallback(const UResourceBundle *resB, /* Like res_getTableItemByKey but accepts full paths like "NumberElements/latn/patternsShort". -*/ +*/ static Resource getTableItemByKeyPath(const ResourceData *pResData, Resource table, const char *key) { Resource resource = table; /* The current resource */ icu::CharString path; @@ -1851,7 +1902,7 @@ static Resource getTableItemByKeyPath(const ResourceData *pResData, Resource tab const char *pathP = pathPart; resource = res_getTableItemByKey(pResData, resource, &t, &pathP); type = (UResType)RES_GET_TYPE(resource); - pathPart = nextPathPart; + pathPart = nextPathPart; } if (*pathPart) { return RES_BOGUS; @@ -1859,13 +1910,85 @@ static Resource getTableItemByKeyPath(const ResourceData *pResData, Resource tab return resource; } +static void createPath(const char* origResPath, + int32_t origResPathLen, + const char* resPath, + int32_t resPathLen, + const char* inKey, + CharString& path, + UErrorCode* status) { + // This is a utility function used by ures_getByKeyWithFallback() below. This function builds a path from + // resPath and inKey, returning the result in `path`. Originally, this function just cleared `path` and + // appended resPath and inKey to it, but that caused problems for horizontal inheritance. + // + // In normal cases, resPath is the same as origResPath, but if ures_getByKeyWithFallback() has followed an + // alias, resPath may be different from origResPath. Not only may the existing path elements be different, + // but resPath may also have MORE path elements than origResPath did. If it does, those additional path + // elements SUPERSEDE the corresponding elements of inKey. So this code counts the number of elements in + // resPath and origResPath and, for each path element in resPath that doesn't have a counterpart in origResPath, + // deletes a path element from the beginning of inKey. The remainder of inKey is then appended to + // resPath to form the result. (We're not using uprv_strchr() here because resPath and origResPath may + // not be zero-terminated.) + path.clear(); + const char* key = inKey; + if (resPathLen > 0) { + path.append(resPath, resPathLen, *status); + if (U_SUCCESS(*status)) { + const char* resPathLimit = resPath + resPathLen; + const char* origResPathLimit = origResPath + origResPathLen; + const char* resPathPtr = resPath; + const char* origResPathPtr = origResPath; + + // Remove from the beginning of resPath the number of segments that are contained in origResPath. + // If origResPath has MORE segments than resPath, this will leave resPath as the empty string. + while (origResPathPtr < origResPathLimit && resPathPtr < resPathLimit) { + while (origResPathPtr < origResPathLimit && *origResPathPtr != RES_PATH_SEPARATOR) { + ++origResPathPtr; + } + if (origResPathPtr < origResPathLimit && *origResPathPtr == RES_PATH_SEPARATOR) { + ++origResPathPtr; + } + while (resPathPtr < resPathLimit && *resPathPtr != RES_PATH_SEPARATOR) { + ++resPathPtr; + } + if (resPathPtr < resPathLimit && *resPathPtr == RES_PATH_SEPARATOR) { + ++resPathPtr; + } + } + + // New remove from the beginning of `key` the number of segments remaining in resPath. + // If resPath has more segments than `key` does, `key` will end up empty. + while (resPathPtr < resPathLimit && *key != '\0') { + while (resPathPtr < resPathLimit && *resPathPtr != RES_PATH_SEPARATOR) { + ++resPathPtr; + } + if (resPathPtr < resPathLimit && *resPathPtr == RES_PATH_SEPARATOR) { + ++resPathPtr; + } + while (*key != '\0' && *key != RES_PATH_SEPARATOR) { + ++key; + } + if (*key == RES_PATH_SEPARATOR) { + ++key; + } + } + } + // Finally, append what's left of `key` to `path`. What you end up with here is `resPath`, plus + // any pieces of `key` that aren't superseded by `resPath`. + // Or, to put it another way, calculate <#-segments-in-key> - (<#-segments-in-resPath> - <#-segments-in-origResPath>), + // and append that many segments from the end of `key` to `resPath` to produce the result. + path.append(key, *status); + } else { + path.append(inKey, *status); + } +} + U_CAPI UResourceBundle* U_EXPORT2 ures_getByKeyWithFallback(const UResourceBundle *resB, const char* inKey, UResourceBundle *fillIn, UErrorCode *status) { Resource res = RES_BOGUS, rootRes = RES_BOGUS; - /*UResourceDataEntry *realData = NULL;*/ UResourceBundle *helper = NULL; if (status==NULL || U_FAILURE(*status)) { @@ -1878,24 +2001,32 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, int32_t type = RES_GET_TYPE(resB->fRes); if(URES_IS_TABLE(type)) { - res = getTableItemByKeyPath(&(resB->fResData), resB->fRes, inKey); + const char* origResPath = resB->fResPath; + int32_t origResPathLen = resB->fResPathLen; + res = getTableItemByKeyPath(&resB->getResData(), resB->fRes, inKey); const char* key = inKey; + bool didRootOnce = false; if(res == RES_BOGUS) { UResourceDataEntry *dataEntry = resB->fData; CharString path; char *myPath = NULL; const char* resPath = resB->fResPath; int32_t len = resB->fResPathLen; - while(res == RES_BOGUS && dataEntry->fParent != NULL) { /* Otherwise, we'll look in parents */ - dataEntry = dataEntry->fParent; + while(res == RES_BOGUS && (dataEntry->fParent != NULL || !didRootOnce)) { /* Otherwise, we'll look in parents */ + if (dataEntry->fParent != NULL) { + dataEntry = dataEntry->fParent; + } else { + // We can't just stop when we get to a bundle whose fParent is NULL. That'll work most of the time, + // but if the bundle that the caller passed to us was "root" (which happens in getAllItemsWithFallback(), + // this function will drop right out without doing anything if "root" doesn't contain the exact key path + // specified. In that case, we need one extra time through this loop to make sure we follow any + // applicable aliases at the root level. + didRootOnce = true; + } rootRes = dataEntry->fData.rootRes; if(dataEntry->fBogus == U_ZERO_ERROR) { - path.clear(); - if (len > 0) { - path.append(resPath, len, *status); - } - path.append(inKey, *status); + createPath(origResPath, origResPathLen, resPath, len, inKey, path, status); if (U_FAILURE(*status)) { ures_close(helper); return fillIn; @@ -1906,8 +2037,8 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, res = res_findResource(&(dataEntry->fData), rootRes, &myPath, &key); if (RES_GET_TYPE(res) == URES_ALIAS && *myPath) { /* We hit an alias, but we didn't finish following the path. */ - helper = init_resb_result(&(dataEntry->fData), res, NULL, -1, dataEntry, resB, 0, helper, status); - /*helper = init_resb_result(&(dataEntry->fData), res, inKey, -1, dataEntry, resB, 0, helper, status);*/ + helper = init_resb_result(dataEntry, res, NULL, -1, resB, helper, status); + /*helper = init_resb_result(dataEntry, res, inKey, -1, resB, helper, status);*/ if(helper) { dataEntry = helper->fData; rootRes = helper->fRes; @@ -1923,7 +2054,7 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, } while(*myPath); /* Continue until the whole path is consumed */ } } - /*const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status);*/ + /*dataEntry = getFallbackData(resB, &key, &res, status);*/ if(res != RES_BOGUS) { /* check if resB->fResPath gives the right name here */ if(uprv_strcmp(dataEntry->fName, uloc_getDefault())==0 || uprv_strcmp(dataEntry->fName, kRootLocaleName)==0) { @@ -1932,14 +2063,33 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, *status = U_USING_FALLBACK_WARNING; } - fillIn = init_resb_result(&(dataEntry->fData), res, inKey, -1, dataEntry, resB, 0, fillIn, status); + fillIn = init_resb_result(dataEntry, res, key, -1, resB, fillIn, status); + if (resPath != nullptr) { + createPath(origResPath, origResPathLen, resPath, len, inKey, path, status); + } else { + const char* separator = nullptr; + if (fillIn->fResPath != nullptr) { + separator = uprv_strchr(fillIn->fResPath, RES_PATH_SEPARATOR); + } + if (separator != nullptr && separator[1] != '\0') { + createPath(origResPath, origResPathLen, fillIn->fResPath, + static_cast(uprv_strlen(fillIn->fResPath)), inKey, path, status); + } else { + createPath(origResPath, origResPathLen, "", 0, inKey, path, status); + } + } + ures_freeResPath(fillIn); + ures_appendResPath(fillIn, path.data(), path.length(), status); + if(fillIn->fResPath[fillIn->fResPathLen-1] != RES_PATH_SEPARATOR) { + ures_appendResPath(fillIn, RES_PATH_SEPARATOR_S, 1, status); + } } else { *status = U_MISSING_RESOURCE_ERROR; } } else { - fillIn = init_resb_result(&(resB->fResData), res, key, -1, resB->fData, resB, 0, fillIn, status); + fillIn = init_resb_result(resB->fData, res, key, -1, resB, fillIn, status); } - } + } else { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -1951,8 +2101,7 @@ namespace { void getAllItemsWithFallback( const UResourceBundle *bundle, ResourceDataValue &value, - ResourceSink &sink, - UErrorCode &errorCode) { + ResourceSink &sink, UErrorCode &errorCode) { if (U_FAILURE(errorCode)) { return; } // We recursively enumerate child-first, // only storing parent items in the absence of child items. @@ -1964,7 +2113,8 @@ void getAllItemsWithFallback( // When the sink sees the no-fallback/no-inheritance marker, // then it would remove the parent's item. // We would deserialize parent values even though they are overridden in a child bundle. - value.setData(&bundle->fResData); + value.setData(bundle->getResData()); + value.setValidLocaleDataEntry(bundle->fValidLocaleDataEntry); UResourceDataEntry *parentEntry = bundle->fData->fParent; UBool hasParent = parentEntry != NULL && U_SUCCESS(parentEntry->fBogus); value.setResource(bundle->fRes, ResourceTracer(bundle)); @@ -1978,38 +2128,76 @@ void getAllItemsWithFallback( // TODO: See if we can refactor ures_getByKeyWithFallback() // and pull out an inner function that takes and returns a UResourceDataEntry // so that we need not create UResourceBundle objects. - UResourceBundle parentBundle; - ures_initStackObject(&parentBundle); - parentBundle.fTopLevelData = parentBundle.fData = parentEntry; - // TODO: What is the difference between bundle fData and fTopLevelData? - uprv_memcpy(&parentBundle.fResData, &parentEntry->fData, sizeof(ResourceData)); - // TODO: Try to replace bundle.fResData with just using bundle.fData->fData. - parentBundle.fHasFallback = !parentBundle.fResData.noFallback; - parentBundle.fIsTopLevel = TRUE; - parentBundle.fRes = parentBundle.fResData.rootRes; - parentBundle.fSize = res_countArrayItems(&(parentBundle.fResData), parentBundle.fRes); - parentBundle.fIndex = -1; + StackUResourceBundle parentBundle; + UResourceBundle &parentRef = parentBundle.ref(); + parentRef.fData = parentEntry; + parentRef.fValidLocaleDataEntry = bundle->fValidLocaleDataEntry; + parentRef.fHasFallback = !parentRef.getResData().noFallback; + parentRef.fIsTopLevel = TRUE; + parentRef.fRes = parentRef.getResData().rootRes; + parentRef.fSize = res_countArrayItems(&parentRef.getResData(), parentRef.fRes); + parentRef.fIndex = -1; entryIncrease(parentEntry); // Look up the container item in the parent bundle. - UResourceBundle containerBundle; - ures_initStackObject(&containerBundle); + StackUResourceBundle containerBundle; const UResourceBundle *rb; UErrorCode pathErrorCode = U_ZERO_ERROR; // Ignore if parents up to root do not have this path. if (bundle->fResPath == NULL || *bundle->fResPath == 0) { - rb = &parentBundle; + rb = parentBundle.getAlias(); } else { - rb = ures_getByKeyWithFallback(&parentBundle, bundle->fResPath, - &containerBundle, &pathErrorCode); + rb = ures_getByKeyWithFallback(parentBundle.getAlias(), bundle->fResPath, + containerBundle.getAlias(), &pathErrorCode); } if (U_SUCCESS(pathErrorCode)) { getAllItemsWithFallback(rb, value, sink, errorCode); } - ures_close(&containerBundle); - ures_close(&parentBundle); } } +struct GetAllChildrenSink : public ResourceSink { + // Destination sink + ResourceSink& dest; + + GetAllChildrenSink(ResourceSink& dest) + : dest(dest) {} + virtual ~GetAllChildrenSink() override; + virtual void put(const char *key, ResourceValue &value, UBool isRoot, + UErrorCode &errorCode) override { + ResourceTable itemsTable = value.getTable(errorCode); + if (U_FAILURE(errorCode)) { return; } + for (int32_t i = 0; itemsTable.getKeyAndValue(i, key, value); ++i) { + if (value.getType() == URES_ALIAS) { + ResourceDataValue& rdv = static_cast(value); + StackUResourceBundle stackTempBundle; + UResourceBundle* aliasRB = getAliasTargetAsResourceBundle(rdv.getData(), rdv.getResource(), nullptr, -1, + rdv.getValidLocaleDataEntry(), nullptr, 0, + stackTempBundle.getAlias(), &errorCode); + if (U_SUCCESS(errorCode)) { + ResourceDataValue aliasedValue; + aliasedValue.setData(aliasRB->getResData()); + aliasedValue.setValidLocaleDataEntry(aliasRB->fValidLocaleDataEntry); + aliasedValue.setResource(aliasRB->fRes, ResourceTracer(aliasRB)); + dest.put(key, aliasedValue, isRoot, errorCode); + } + } else { + dest.put(key, value, isRoot, errorCode); + } + if (U_FAILURE(errorCode)) { return; } + } + } +}; + +// Virtual destructors must be defined out of line. +GetAllChildrenSink::~GetAllChildrenSink() {} + +U_CAPI void U_EXPORT2 +ures_getAllChildrenWithFallback(const UResourceBundle *bundle, const char *path, + icu::ResourceSink &sink, UErrorCode &errorCode) { + GetAllChildrenSink allChildrenSink(sink); + ures_getAllItemsWithFallback(bundle, path, allChildrenSink, errorCode); +} + } // namespace // Requires a ResourceDataValue fill-in, so that we need not cast from a ResourceValue. @@ -2040,7 +2228,8 @@ ures_getValueWithFallback(const UResourceBundle *bundle, const char *path, return; } } - value.setData(&rb->fResData); + value.setData(rb->getResData()); + value.setValidLocaleDataEntry(rb->fValidLocaleDataEntry); value.setResource(rb->fRes, ResourceTracer(rb)); } @@ -2070,7 +2259,7 @@ ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path, U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, const char* inKey, UResourceBundle *fillIn, UErrorCode *status) { Resource res = RES_BOGUS; - UResourceDataEntry *realData = NULL; + UResourceDataEntry *dataEntry = NULL; const char *key = inKey; if (status==NULL || U_FAILURE(*status)) { @@ -2084,14 +2273,14 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con int32_t type = RES_GET_TYPE(resB->fRes); if(URES_IS_TABLE(type)) { int32_t t; - res = res_getTableItemByKey(&(resB->fResData), resB->fRes, &t, &key); + res = res_getTableItemByKey(&resB->getResData(), resB->fRes, &t, &key); if(res == RES_BOGUS) { key = inKey; if(resB->fHasFallback == TRUE) { - const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status); + dataEntry = getFallbackData(resB, &key, &res, status); if(U_SUCCESS(*status)) { - /* check if resB->fResPath gives the right name here */ - return init_resb_result(rd, res, key, -1, realData, resB, 0, fillIn, status); + /* check if resB->fResPath gives the right name here */ + return init_resb_result(dataEntry, res, key, -1, resB, fillIn, status); } else { *status = U_MISSING_RESOURCE_ERROR; } @@ -2099,22 +2288,22 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con *status = U_MISSING_RESOURCE_ERROR; } } else { - return init_resb_result(&(resB->fResData), res, key, -1, resB->fData, resB, 0, fillIn, status); + return init_resb_result(resB->fData, res, key, -1, resB, fillIn, status); } - } + } #if 0 /* this is a kind of TODO item. If we have an array with an index table, we could do this. */ /* not currently */ else if(RES_GET_TYPE(resB->fRes) == URES_ARRAY && resB->fHasFallback == TRUE) { /* here should go a first attempt to locate the key using index table */ - const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status); + dataEntry = getFallbackData(resB, &key, &res, status); if(U_SUCCESS(*status)) { - return init_resb_result(rd, res, key, realData, resB, fillIn, status); + return init_resb_result(dataEntry, res, key, resB, fillIn, status); } else { *status = U_MISSING_RESOURCE_ERROR; } } -#endif +#endif else { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -2123,7 +2312,7 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, const char* inKey, int32_t* len, UErrorCode *status) { Resource res = RES_BOGUS; - UResourceDataEntry *realData = NULL; + UResourceDataEntry *dataEntry = NULL; const char* key = inKey; if (status==NULL || U_FAILURE(*status)) { @@ -2138,17 +2327,17 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c if(URES_IS_TABLE(type)) { int32_t t=0; - res = res_getTableItemByKey(&(resB->fResData), resB->fRes, &t, &key); + res = res_getTableItemByKey(&resB->getResData(), resB->fRes, &t, &key); if(res == RES_BOGUS) { key = inKey; if(resB->fHasFallback == TRUE) { - const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status); + dataEntry = getFallbackData(resB, &key, &res, status); if(U_SUCCESS(*status)) { switch (RES_GET_TYPE(res)) { case URES_STRING: case URES_STRING_V2: - return res_getString({resB, key}, rd, res, len); + return res_getString({resB, key}, &dataEntry->fData, res, len); case URES_ALIAS: { const UChar* result = 0; @@ -2170,7 +2359,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c switch (RES_GET_TYPE(res)) { case URES_STRING: case URES_STRING_V2: - return res_getString({resB, key}, &(resB->fResData), res, len); + return res_getString({resB, key}, &resB->getResData(), res, len); case URES_ALIAS: { const UChar* result = 0; @@ -2183,21 +2372,21 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c *status = U_RESOURCE_TYPE_MISMATCH; } } - } -#if 0 + } +#if 0 /* this is a kind of TODO item. If we have an array with an index table, we could do this. */ - /* not currently */ + /* not currently */ else if(RES_GET_TYPE(resB->fRes) == URES_ARRAY && resB->fHasFallback == TRUE) { /* here should go a first attempt to locate the key using index table */ - const ResourceData *rd = getFallbackData(resB, &key, &realData, &res, status); + dataEntry = getFallbackData(resB, &key, &res, status); if(U_SUCCESS(*status)) { // TODO: Tracing return res_getString(rd, res, len); } else { *status = U_MISSING_RESOURCE_ERROR; } - } -#endif + } +#endif else { *status = U_RESOURCE_TYPE_MISMATCH; } @@ -2218,7 +2407,7 @@ ures_getUTF8StringByKey(const UResourceBundle *resB, /* TODO: clean from here down */ /** - * INTERNAL: Get the name of the first real locale (not placeholder) + * INTERNAL: Get the name of the first real locale (not placeholder) * that has resource bundle data. */ U_CAPI const char* U_EXPORT2 @@ -2235,17 +2424,17 @@ ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status } } -U_CAPI const char* U_EXPORT2 -ures_getLocale(const UResourceBundle* resourceBundle, +U_CAPI const char* U_EXPORT2 +ures_getLocale(const UResourceBundle* resourceBundle, UErrorCode* status) { return ures_getLocaleInternal(resourceBundle, status); } -U_CAPI const char* U_EXPORT2 -ures_getLocaleByType(const UResourceBundle* resourceBundle, - ULocDataLocaleType type, +U_CAPI const char* U_EXPORT2 +ures_getLocaleByType(const UResourceBundle* resourceBundle, + ULocDataLocaleType type, UErrorCode* status) { if (status==NULL || U_FAILURE(*status)) { return NULL; @@ -2258,7 +2447,7 @@ ures_getLocaleByType(const UResourceBundle* resourceBundle, case ULOC_ACTUAL_LOCALE: return resourceBundle->fData->fName; case ULOC_VALID_LOCALE: - return resourceBundle->fTopLevelData->fName; + return resourceBundle->fValidLocaleDataEntry->fName; case ULOC_REQUESTED_LOCALE: default: *status = U_ILLEGAL_ARGUMENT_ERROR; @@ -2329,12 +2518,11 @@ ures_openWithType(UResourceBundle *r, const char* path, const char* localeID, uprv_memset(r, 0, sizeof(UResourceBundle)); ures_setIsStackObject(r, isStackObject); - r->fTopLevelData = r->fData = entry; - uprv_memcpy(&r->fResData, &entry->fData, sizeof(ResourceData)); - r->fHasFallback = openType != URES_OPEN_DIRECT && !r->fResData.noFallback; + r->fValidLocaleDataEntry = r->fData = entry; + r->fHasFallback = openType != URES_OPEN_DIRECT && !r->getResData().noFallback; r->fIsTopLevel = TRUE; - r->fRes = r->fResData.rootRes; - r->fSize = res_countArrayItems(&(r->fResData), r->fRes); + r->fRes = r->getResData().rootRes; + r->fSize = res_countArrayItems(&r->getResData(), r->fRes); r->fIndex = -1; ResourceTracer(r).traceOpen(); @@ -2353,7 +2541,7 @@ ures_openNoDefault(const char* path, const char* localeID, UErrorCode* status) { } /** - * Opens a resource bundle without "canonicalizing" the locale name. No fallback will be performed + * Opens a resource bundle without "canonicalizing" the locale name. No fallback will be performed * or sought. However, alias substitution will happen! */ U_CAPI UResourceBundle* U_EXPORT2 @@ -2362,10 +2550,10 @@ ures_openDirect(const char* path, const char* localeID, UErrorCode* status) { } /** - * Internal API: This function is used to open a resource bundle - * proper fallback chaining is executed while initialization. + * Internal API: This function is used to open a resource bundle + * proper fallback chaining is executed while initialization. * The result is stored in cache for later fallback search. - * + * * Same as ures_open(), but uses the fill-in parameter and does not allocate a new bundle. */ U_CAPI void U_EXPORT2 @@ -2409,9 +2597,9 @@ ures_countArrayItems(const UResourceBundle* resourceBundle, return 0; } ures_getByKey(resourceBundle, resourceKey, &resData, status); - - if(resData.fResData.data != NULL) { - int32_t result = res_countArrayItems(&resData.fResData, resData.fRes); + + if(resData.getResData().data != NULL) { + int32_t result = res_countArrayItems(&resData.getResData(), resData.fRes); ures_close(&resData); return result; } else { @@ -2431,7 +2619,7 @@ ures_countArrayItems(const UResourceBundle* resourceBundle, * @see ures_getVersion * @internal */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ures_getVersionNumberInternal(const UResourceBundle *resourceBundle) { if (!resourceBundle) return NULL; @@ -2445,24 +2633,24 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle) int32_t len; const UChar* minor_version = ures_getStringByKey(resourceBundle, kVersionTag, &minor_len, &status); - + /* Determine the length of of the final version string. This is */ /* the length of the major part + the length of the separator */ /* (==1) + the length of the minor part (+ 1 for the zero byte at */ /* the end). */ len = (minor_len > 0) ? minor_len : 1; - + /* Allocate the string, and build it up. */ /* + 1 for zero byte */ - ((UResourceBundle *)resourceBundle)->fVersion = (char *)uprv_malloc(1 + len); + ((UResourceBundle *)resourceBundle)->fVersion = (char *)uprv_malloc(1 + len); /* Check for null pointer. */ if (((UResourceBundle *)resourceBundle)->fVersion == NULL) { return NULL; } - + if(minor_len > 0) { u_UCharsToChars(minor_version, resourceBundle->fVersion , minor_len); resourceBundle->fVersion[len] = '\0'; @@ -2538,8 +2726,8 @@ ures_loc_nextLocale(UEnumeration* en, return result; } -static void U_CALLCONV -ures_loc_resetLocales(UEnumeration* en, +static void U_CALLCONV +ures_loc_resetLocales(UEnumeration* en, UErrorCode* /*status*/) { UResourceBundle *res = &((ULocalesContext *)en->context)->installed; ures_resetIterator(res); @@ -2584,7 +2772,7 @@ ures_openAvailableLocales(const char *path, UErrorCode *status) ures_getByKey(idx, INDEX_TAG, &myContext->installed, status); if(U_SUCCESS(*status)) { #if defined(URES_TREE_DEBUG) - fprintf(stderr, "Got %s::%s::[%s] : %s\n", + fprintf(stderr, "Got %s::%s::[%s] : %s\n", path, INDEX_LOCALE_NAME, INDEX_TAG, ures_getKey(&myContext->installed)); #endif en->context = myContext; @@ -2597,9 +2785,9 @@ ures_openAvailableLocales(const char *path, UErrorCode *status) uprv_free(en); en = NULL; } - + ures_close(idx); - + return en; } @@ -2636,17 +2824,17 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, } uloc_getBaseName(locid, base, 1024-1,&subStatus); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "getFunctionalEquivalent: \"%s\" [%s=%s] in %s - %s\n", + fprintf(stderr, "getFunctionalEquivalent: \"%s\" [%s=%s] in %s - %s\n", locid, keyword, kwVal, base, u_errorName(subStatus)); #endif ures_initStackObject(&bund1); ures_initStackObject(&bund2); - - + + uprv_strcpy(parent, base); uprv_strcpy(found, base); - if(isAvailable) { + if(isAvailable) { UEnumeration *locEnum = ures_openAvailableLocales(path, &subStatus); *isAvailable = TRUE; if (U_SUCCESS(subStatus)) { @@ -2659,7 +2847,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, *status = subStatus; return 0; } - + do { subStatus = U_ZERO_ERROR; res = ures_open(path, parent, &subStatus); @@ -2669,7 +2857,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, *isAvailable = FALSE; } isAvailable = NULL; /* only want to set this the first time around */ - + #if defined(URES_TREE_DEBUG) fprintf(stderr, "%s;%s -> %s [%s]\n", path?path:"ICUDATA", parent, u_errorName(subStatus), ures_getLocale(res, &subStatus)); #endif @@ -2689,21 +2877,21 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, if(U_SUCCESS(subStatus) && defLen) { u_UCharsToChars(defUstr, defVal, u_strlen(defUstr)); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> default %s=%s, %s\n", + fprintf(stderr, "%s;%s -> default %s=%s, %s\n", path?path:"ICUDATA", parent, keyword, defVal, u_errorName(subStatus)); #endif uprv_strcpy(defLoc, parent); if(kwVal[0]==0) { uprv_strcpy(kwVal, defVal); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> kwVal = %s\n", + fprintf(stderr, "%s;%s -> kwVal = %s\n", path?path:"ICUDATA", parent, keyword, kwVal); #endif } } } } - + subStatus = U_ZERO_ERROR; if (res != NULL) { @@ -2713,11 +2901,11 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, uloc_getParent(found,parent,sizeof(parent),&subStatus); ures_close(res); } while(!defVal[0] && *found && uprv_strcmp(found, "root") != 0 && U_SUCCESS(*status)); - + /* Now, see if we can find the kwVal collator.. start the search over.. */ uprv_strcpy(parent, base); uprv_strcpy(found, base); - + do { subStatus = U_ZERO_ERROR; res = ures_open(path, parent, &subStatus); @@ -2725,9 +2913,9 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, *isAvailable = FALSE; } isAvailable = NULL; /* only want to set this the first time around */ - + #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> %s (looking for %s)\n", + fprintf(stderr, "%s;%s -> %s (looking for %s)\n", path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal); #endif if(U_FAILURE(subStatus)) { @@ -2744,7 +2932,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, #endif if(subStatus == U_ZERO_ERROR) { #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> full0 %s=%s, %s\n", + fprintf(stderr, "%s;%s -> full0 %s=%s, %s\n", path?path:"ICUDATA", parent, keyword, kwVal, u_errorName(subStatus)); #endif uprv_strcpy(full, parent); @@ -2757,14 +2945,14 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, int32_t defLen; /* look for default item */ #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> recalculating Default0\n", + fprintf(stderr, "%s;%s -> recalculating Default0\n", path?path:"ICUDATA", full); #endif defUstr = ures_getStringByKey(&bund1, DEFAULT_TAG, &defLen, &subStatus); if(U_SUCCESS(subStatus) && defLen) { u_UCharsToChars(defUstr, defVal, u_strlen(defUstr)); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> default0 %s=%s, %s\n", + fprintf(stderr, "%s;%s -> default0 %s=%s, %s\n", path?path:"ICUDATA", full, keyword, defVal, u_errorName(subStatus)); #endif uprv_strcpy(defLoc, full); @@ -2777,20 +2965,20 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, #endif } else { #if defined(URES_TREE_DEBUG) - fprintf(stderr, "err=%s in %s looking for %s\n", + fprintf(stderr, "err=%s in %s looking for %s\n", u_errorName(subStatus), parent, kwVal); #endif } } } - + subStatus = U_ZERO_ERROR; - + uprv_strcpy(found, parent); uloc_getParent(found,parent,1023,&subStatus); ures_close(res); } while(!full[0] && *found && U_SUCCESS(*status)); - + if((full[0]==0) && uprv_strcmp(kwVal, defVal)) { #if defined(URES_TREE_DEBUG) fprintf(stderr, "Failed to locate kw %s - try default %s\n", kwVal, defVal); @@ -2798,7 +2986,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, uprv_strcpy(kwVal, defVal); uprv_strcpy(parent, base); uprv_strcpy(found, base); - + do { /* search for 'default' named item */ subStatus = U_ZERO_ERROR; res = ures_open(path, parent, &subStatus); @@ -2806,7 +2994,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, *isAvailable = FALSE; } isAvailable = NULL; /* only want to set this the first time around */ - + #if defined(URES_TREE_DEBUG) fprintf(stderr, "%s;%s -> %s (looking for default %s)\n", path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal); @@ -2826,21 +3014,21 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, if(*full == 0) { uprv_strcpy(full, "root"); } - + /* now, recalculate default kw if need be */ if(uprv_strlen(defLoc) > uprv_strlen(full)) { const UChar *defUstr; int32_t defLen; /* look for default item */ #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> recalculating Default1\n", + fprintf(stderr, "%s;%s -> recalculating Default1\n", path?path:"ICUDATA", full); #endif defUstr = ures_getStringByKey(&bund1, DEFAULT_TAG, &defLen, &subStatus); if(U_SUCCESS(subStatus) && defLen) { u_UCharsToChars(defUstr, defVal, u_strlen(defUstr)); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s;%s -> default %s=%s, %s\n", + fprintf(stderr, "%s;%s -> default %s=%s, %s\n", path?path:"ICUDATA", full, keyword, defVal, u_errorName(subStatus)); #endif uprv_strcpy(defLoc, full); @@ -2855,13 +3043,13 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, } } subStatus = U_ZERO_ERROR; - + uprv_strcpy(found, parent); uloc_getParent(found,parent,1023,&subStatus); ures_close(res); } while(!full[0] && *found && U_SUCCESS(*status)); } - + if(U_SUCCESS(*status)) { if(!full[0]) { #if defined(URES_TREE_DEBUG) @@ -2871,7 +3059,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, } else if(omitDefault) { #if defined(URES_TREE_DEBUG) fprintf(stderr,"Trim? full=%s, defLoc=%s, found=%s\n", full, defLoc, found); -#endif +#endif if(uprv_strlen(defLoc) <= uprv_strlen(full)) { /* found the keyword in a *child* of where the default tag was present. */ if(!uprv_strcmp(kwVal, defVal)) { /* if the requested kw is default, */ @@ -2897,10 +3085,10 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, } } /* we found the default locale - no need to repeat it.*/ - + ures_close(&bund1); ures_close(&bund2); - + length = (int32_t)uprv_strlen(found); if(U_SUCCESS(*status)) { @@ -2909,7 +3097,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, uprv_strncpy(result, found, copyLength); } if(length == 0) { - *status = U_MISSING_RESOURCE_ERROR; + *status = U_MISSING_RESOURCE_ERROR; } } else { length = 0; @@ -2923,58 +3111,58 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status) { #define VALUES_BUF_SIZE 2048 #define VALUES_LIST_SIZE 512 - + char valuesBuf[VALUES_BUF_SIZE]; int32_t valuesIndex = 0; const char *valuesList[VALUES_LIST_SIZE]; int32_t valuesCount = 0; - + const char *locale; int32_t locLen; - + UEnumeration *locs = NULL; - + UResourceBundle item; UResourceBundle subItem; - + ures_initStackObject(&item); ures_initStackObject(&subItem); locs = ures_openAvailableLocales(path, status); - + if(U_FAILURE(*status)) { ures_close(&item); ures_close(&subItem); return NULL; } - + valuesBuf[0]=0; valuesBuf[1]=0; - + while((locale = uenum_next(locs, &locLen, status)) != 0) { UResourceBundle *bund = NULL; UResourceBundle *subPtr = NULL; UErrorCode subStatus = U_ZERO_ERROR; /* don't fail if a bundle is unopenable */ - bund = ures_openDirect(path, locale, &subStatus); - + bund = ures_open(path, locale, &subStatus); + #if defined(URES_TREE_DEBUG) if(!bund || U_FAILURE(subStatus)) { - fprintf(stderr, "%s-%s values: Can't open %s locale - skipping. (%s)\n", + fprintf(stderr, "%s-%s values: Can't open %s locale - skipping. (%s)\n", path?path:"", keyword, locale, u_errorName(subStatus)); } #endif - + ures_getByKey(bund, keyword, &item, &subStatus); - + if(!bund || U_FAILURE(subStatus)) { #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s-%s values: Can't find in %s - skipping. (%s)\n", + fprintf(stderr, "%s-%s values: Can't find in %s - skipping. (%s)\n", path?path:"", keyword, locale, u_errorName(subStatus)); #endif ures_close(bund); bund = NULL; continue; } - + while((subPtr = ures_getNextResource(&item,&subItem,&subStatus)) != 0 && U_SUCCESS(subStatus)) { const char *k; @@ -3015,12 +3203,12 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status) ures_close(bund); } valuesBuf[valuesIndex++] = 0; /* terminate */ - + ures_close(&item); ures_close(&subItem); uenum_close(locs); #if defined(URES_TREE_DEBUG) - fprintf(stderr, "%s: size %d, #%d\n", u_errorName(*status), + fprintf(stderr, "%s: size %d, #%d\n", u_errorName(*status), valuesIndex, valuesCount); #endif return uloc_openKeywordList(valuesBuf, valuesIndex, status); @@ -3095,7 +3283,7 @@ ures_getVersionByKey(const UResourceBundle* res, const char *key, UVersionInfo v str = ures_getStringByKey(res, key, &len, status); if(U_SUCCESS(*status)) { u_versionFromUString(ver, str); - } + } } /* eof */ diff --git a/deps/icu-small/source/common/uresdata.cpp b/deps/icu-small/source/common/uresdata.cpp index 26a2fd91a6fdbd..9af081be408c1f 100644 --- a/deps/icu-small/source/common/uresdata.cpp +++ b/deps/icu-small/source/common/uresdata.cpp @@ -935,13 +935,13 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch if(!URES_IS_CONTAINER(type)) { return RES_BOGUS; } - + while(nextSepP && *pathP && t1 != RES_BOGUS && URES_IS_CONTAINER(type)) { /* Iteration stops if: the path has been consumed, we found a non-existing * resource (t1 == RES_BOGUS) or we found a scalar resource (including alias) */ nextSepP = uprv_strchr(pathP, RES_PATH_SEPARATOR); - /* if there are more separators, terminate string + /* if there are more separators, terminate string * and set path to the remaining part of the string */ if(nextSepP != NULL) { diff --git a/deps/icu-small/source/common/uresdata.h b/deps/icu-small/source/common/uresdata.h index 7c2152e57b500d..b8a3adba63489d 100644 --- a/deps/icu-small/source/common/uresdata.h +++ b/deps/icu-small/source/common/uresdata.h @@ -399,6 +399,8 @@ typedef struct ResourceData { UBool useNativeStrcmp; } ResourceData; +struct UResourceDataEntry; // forward declared for ResoureDataValue below; actually defined in uresimp.h + /* * Read a resource bundle from memory. */ @@ -511,12 +513,18 @@ inline uint32_t res_getUInt(const ResourceTracer& traceInfo, Resource res) { class ResourceDataValue : public ResourceValue { public: ResourceDataValue() : + pResData(nullptr), + validLocaleDataEntry(nullptr), res(static_cast(URES_NONE)), fTraceInfo() {} virtual ~ResourceDataValue(); - void setData(const ResourceData *data) { - resData = *data; + void setData(const ResourceData &data) { + pResData = &data; + } + + void setValidLocaleDataEntry(UResourceDataEntry *entry) { + validLocaleDataEntry = entry; } void setResource(Resource r, ResourceTracer&& traceInfo) { @@ -524,27 +532,28 @@ class ResourceDataValue : public ResourceValue { fTraceInfo = traceInfo; } - const ResourceData &getData() const { return resData; } - virtual UResType getType() const; - virtual const UChar *getString(int32_t &length, UErrorCode &errorCode) const; - virtual const UChar *getAliasString(int32_t &length, UErrorCode &errorCode) const; - virtual int32_t getInt(UErrorCode &errorCode) const; - virtual uint32_t getUInt(UErrorCode &errorCode) const; - virtual const int32_t *getIntVector(int32_t &length, UErrorCode &errorCode) const; - virtual const uint8_t *getBinary(int32_t &length, UErrorCode &errorCode) const; - virtual ResourceArray getArray(UErrorCode &errorCode) const; - virtual ResourceTable getTable(UErrorCode &errorCode) const; - virtual UBool isNoInheritanceMarker() const; + const ResourceData &getData() const { return *pResData; } + UResourceDataEntry *getValidLocaleDataEntry() const { return validLocaleDataEntry; } + Resource getResource() const { return res; } + virtual UResType getType() const override; + virtual const UChar *getString(int32_t &length, UErrorCode &errorCode) const override; + virtual const UChar *getAliasString(int32_t &length, UErrorCode &errorCode) const override; + virtual int32_t getInt(UErrorCode &errorCode) const override; + virtual uint32_t getUInt(UErrorCode &errorCode) const override; + virtual const int32_t *getIntVector(int32_t &length, UErrorCode &errorCode) const override; + virtual const uint8_t *getBinary(int32_t &length, UErrorCode &errorCode) const override; + virtual ResourceArray getArray(UErrorCode &errorCode) const override; + virtual ResourceTable getTable(UErrorCode &errorCode) const override; + virtual UBool isNoInheritanceMarker() const override; virtual int32_t getStringArray(UnicodeString *dest, int32_t capacity, - UErrorCode &errorCode) const; + UErrorCode &errorCode) const override; virtual int32_t getStringArrayOrStringAsArray(UnicodeString *dest, int32_t capacity, - UErrorCode &errorCode) const; - virtual UnicodeString getStringOrFirstOfArray(UErrorCode &errorCode) const; + UErrorCode &errorCode) const override; + virtual UnicodeString getStringOrFirstOfArray(UErrorCode &errorCode) const override; private: - // TODO(ICU-20769): If UResourceBundle.fResData becomes a pointer, - // then remove this value field again and just store a pResData pointer. - ResourceData resData; + const ResourceData *pResData; + UResourceDataEntry *validLocaleDataEntry; Resource res; ResourceTracer fTraceInfo; }; diff --git a/deps/icu-small/source/common/uresimp.h b/deps/icu-small/source/common/uresimp.h index cfd15a2dde10e2..4ac09bd8c4d998 100644 --- a/deps/icu-small/source/common/uresimp.h +++ b/deps/icu-small/source/common/uresimp.h @@ -31,7 +31,6 @@ #define MAGIC2 19641227 #define URES_MAX_ALIAS_LEVEL 256 -#define URES_MAX_BUFFER_SIZE 256 #define EMPTY_SET 0x2205 @@ -61,16 +60,27 @@ struct UResourceDataEntry { #define RES_PATH_SEPARATOR '/' #define RES_PATH_SEPARATOR_S "/" +U_CAPI void U_EXPORT2 ures_initStackObject(UResourceBundle* resB); + +#ifdef __cplusplus + struct UResourceBundle { const char *fKey; /*tag*/ + /** + * The dataEntry for the actual locale in which this item lives. + * Used for accessing the item's data. + * Non-const pointer for reference counting via entryIncrease(). + */ UResourceDataEntry *fData; /*for low-level access*/ char *fVersion; - UResourceDataEntry *fTopLevelData; /* for getting the valid locale */ + /** + * The dataEntry for the valid locale. + * Used for /LOCALE/path alias resolution that starts back from the valid locale, + * rather than from the actual locale of this item which might live in + * an ancestor bundle. + */ + UResourceDataEntry *fValidLocaleDataEntry; char *fResPath; /* full path to the resource: "zh_TW/CollationElements/Sequence" */ - // TODO(ICU-20769): Try to change the by-value fResData into a pointer, - // with the struct in only one place for each bundle. - // Also replace class ResourceDataValue.resData with a pResData pointer again. - ResourceData fResData; char fResBuf[RES_BUFSIZE]; int32_t fResPathLen; Resource fRes; @@ -81,13 +91,9 @@ struct UResourceBundle { int32_t fIndex; int32_t fSize; - /*const UResourceBundle *fParentRes;*/ /* needed to get the actual locale for a child resource */ + inline const ResourceData &getResData() const { return fData->fData; } }; -U_CAPI void U_EXPORT2 ures_initStackObject(UResourceBundle* resB); - -#ifdef __cplusplus - U_NAMESPACE_BEGIN /** @@ -161,9 +167,6 @@ U_CFUNC const char* ures_getPath(const UResourceBundle* resB); */ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void); #endif -/*U_CFUNC void ures_appendResPath(UResourceBundle *resB, const char* toAdd, int32_t lenToAdd);*/ -/*U_CFUNC void ures_setResPath(UResourceBundle *resB, const char* toAdd);*/ -/*U_CFUNC void ures_freeResPath(UResourceBundle *resB);*/ /* Candidates for export */ U_CFUNC UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *original, UErrorCode *status); @@ -172,10 +175,10 @@ U_CFUNC UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle * Returns a resource that can be located using the pathToResource argument. One needs optional package, locale * and path inside the locale, for example: "/myData/en/zoneStrings/3". Keys and indexes are supported. Keys * need to reference data in named structures, while indexes can reference both named and anonymous resources. - * Features a fill-in parameter. - * + * Features a fill-in parameter. + * * Note, this function does NOT have a syntax for specifying items within a tree. May want to consider a - * syntax that delineates between package/tree and resource. + * syntax that delineates between package/tree and resource. * * @param pathToResource a path that will lead to the requested resource * @param fillIn if NULL a new UResourceBundle struct is allocated and must be deleted by the caller. @@ -184,16 +187,16 @@ U_CFUNC UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ U_CAPI UResourceBundle* U_EXPORT2 -ures_findResource(const char* pathToResource, - UResourceBundle *fillIn, UErrorCode *status); +ures_findResource(const char* pathToResource, + UResourceBundle *fillIn, UErrorCode *status); /** - * Returns a sub resource that can be located using the pathToResource argument. One needs a path inside + * Returns a sub resource that can be located using the pathToResource argument. One needs a path inside * the supplied resource, for example, if you have "en_US" resource bundle opened, you might ask for * "zoneStrings/3". Keys and indexes are supported. Keys - * need to reference data in named structures, while indexes can reference both + * need to reference data in named structures, while indexes can reference both * named and anonymous resources. - * Features a fill-in parameter. + * Features a fill-in parameter. * * @param resourceBundle a resource * @param pathToResource a path that will lead to the requested resource @@ -203,8 +206,8 @@ ures_findResource(const char* pathToResource, * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ U_CAPI UResourceBundle* U_EXPORT2 -ures_findSubResource(const UResourceBundle *resB, - char* pathToResource, +ures_findSubResource(const UResourceBundle *resB, + char* pathToResource, UResourceBundle *fillIn, UErrorCode *status); /** @@ -215,23 +218,23 @@ ures_findSubResource(const UResourceBundle *resB, * @param resName top level resource. Example: "collations" * @param keyword locale keyword. Example: "collation" * @param locid The requested locale - * @param isAvailable If non-null, pointer to fillin parameter that indicates whether the - * requested locale was available. The locale is defined as 'available' if it physically + * @param isAvailable If non-null, pointer to fillin parameter that indicates whether the + * requested locale was available. The locale is defined as 'available' if it physically * exists within the specified tree. * @param omitDefault if true, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE' * @param status error code - * @return the actual buffer size needed for the full locale. If it's greater + * @return the actual buffer size needed for the full locale. If it's greater * than resultCapacity, the returned full name will be truncated and an error code will be returned. */ U_CAPI int32_t U_EXPORT2 -ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, +ures_getFunctionalEquivalent(char *result, int32_t resultCapacity, const char *path, const char *resName, const char *keyword, const char *locid, UBool *isAvailable, UBool omitDefault, UErrorCode *status); /** * Given a tree path and keyword, return a string enumeration of all possible values for that keyword. * @param path path to the tree, or NULL for ICU data - * @param keyword a particular keyword to consider, must match a top level resource name + * @param keyword a particular keyword to consider, must match a top level resource name * within the tree. * @param status error code */ @@ -251,17 +254,16 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status) * Alternatively, you can supply a struct to be filled by this function. * @param status: fills in the outgoing error code * could be U_MISSING_RESOURCE_ERROR if the key is not found - * could be a non-failing error + * could be a non-failing error * e.g.: U_USING_FALLBACK_WARNING,U_USING_DEFAULT_WARNING * @return a pointer to a UResourceBundle struct. If fill in param was NULL, caller must delete it */ -U_CAPI UResourceBundle* U_EXPORT2 -ures_getByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, - UResourceBundle *fillIn, +U_CAPI UResourceBundle* U_EXPORT2 +ures_getByKeyWithFallback(const UResourceBundle *resB, + const char* inKey, + UResourceBundle *fillIn, UErrorCode *status); - /** * Get a String with multi-level fallback. Normally only the top level resources will * fallback to its parent. This performs fallback on subresources. For example, when a table @@ -273,14 +275,14 @@ ures_getByKeyWithFallback(const UResourceBundle *resB, * @param len if not NULL, used to return the length of the string * @param status: fills in the outgoing error code * could be U_MISSING_RESOURCE_ERROR if the key is not found - * could be a non-failing error + * could be a non-failing error * e.g.: U_USING_FALLBACK_WARNING,U_USING_DEFAULT_WARNING * @return returns a pointer to a zero-terminated UChar array which lives in a * memory mapped/DLL file. */ -U_CAPI const UChar* U_EXPORT2 -ures_getStringByKeyWithFallback(const UResourceBundle *resB, - const char* inKey, +U_CAPI const UChar* U_EXPORT2 +ures_getStringByKeyWithFallback(const UResourceBundle *resB, + const char* inKey, int32_t* len, UErrorCode *status); @@ -291,10 +293,39 @@ ures_getValueWithFallback(const UResourceBundle *bundle, const char *path, UResourceBundle *tempFillIn, icu::ResourceDataValue &value, UErrorCode &errorCode); +/** + * Locates the resource specified by `path` in the resource bundle specified by `bundle` (performing any + * necessary fallback and following any aliases) and calls the specified `sink`'s `put()` method with that + * resource. Then walks the bundle's parent chain, calling `put()` on the sink for each item in the + * parent chain. + * @param bundle The bundle to search + * @param path The path of the desired resource + * @param sink A `ResourceSink` that gets called for each resource in the parent chain + * @param errorCode The error code + */ U_CAPI void U_EXPORT2 ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path, icu::ResourceSink &sink, UErrorCode &errorCode); +/** + * Locates the resource specified by `path` in the resource bundle specified by `bundle` (performing any + * necessary fallback and following any aliases) and, if the resource is a table resource, iterates over its + * immediate child resources (again, following any aliases to get the individual resource values), and calls the specified + * `sink`'s `put()` method for each child resource (passing it that resource's key and either its actual value or, + * if that value is an alias, the value you get by following the alias). Then walks back over the bundle's + * parent chain, similarly iterating over each parent table resource's child resources. + * Does not descend beyond one level of table children. + * @param bundle The bundle to search + * @param path The path of the desired resource + * @param sink A `ResourceSink` that gets called for each child resource of the specified resource (and each child + * of the resources in its parent chain). + * @param errorCode The error code. This will be U_RESOURCE_TYPE_MISMATCH if the resource the caller + * is asking for isn't a table resource. + */ +U_CAPI void U_EXPORT2 +ures_getAllChildrenWithFallback(const UResourceBundle *bundle, const char *path, + icu::ResourceSink &sink, UErrorCode &errorCode); + #endif /* __cplusplus */ /** @@ -320,15 +351,15 @@ ures_getVersionByKey(const UResourceBundle *resB, * The caller does not own this string. * @see ures_getVersion */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ures_getVersionNumberInternal(const UResourceBundle *resourceBundle); /** * Return the name of the Locale associated with this ResourceBundle. This API allows - * you to query for the real locale of the resource. For example, if you requested - * "en_US_CALIFORNIA" and only "en_US" bundle exists, "en_US" will be returned. + * you to query for the real locale of the resource. For example, if you requested + * "en_US_CALIFORNIA" and only "en_US" bundle exists, "en_US" will be returned. * For subresources, the locale where this resource comes from will be returned. - * If fallback has occured, getLocale will reflect this. + * If fallback has occurred, getLocale will reflect this. * * This internal version avoids deprecated-warnings in ICU code. * @@ -336,13 +367,13 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle); * @param status just for catching illegal arguments * @return A Locale name */ -U_CAPI const char* U_EXPORT2 -ures_getLocaleInternal(const UResourceBundle* resourceBundle, +U_CAPI const char* U_EXPORT2 +ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status); /** * Same as ures_openDirect() but uses the fill-in parameter instead of allocating a new bundle. - * + * * @param r The existing UResourceBundle to fill in. If NULL then status will be * set to U_ILLEGAL_ARGUMENT_ERROR. * @param packageName The packageName and locale together point to an ICU udata object, diff --git a/deps/icu-small/source/common/usc_impl.cpp b/deps/icu-small/source/common/usc_impl.cpp index d69880326a4cbd..111029b97496e7 100644 --- a/deps/icu-small/source/common/usc_impl.cpp +++ b/deps/icu-small/source/common/usc_impl.cpp @@ -79,7 +79,7 @@ static void push(UScriptRun *scriptRun, int32_t pairIndex, UScriptCode scriptCod { scriptRun->pushCount = LIMIT_INC(scriptRun->pushCount); scriptRun->fixupCount = LIMIT_INC(scriptRun->fixupCount); - + scriptRun->parenSP = INC1(scriptRun->parenSP); scriptRun->parenStack[scriptRun->parenSP].pairIndex = pairIndex; scriptRun->parenStack[scriptRun->parenSP].scriptCode = scriptCode; @@ -90,14 +90,14 @@ static void pop(UScriptRun *scriptRun) if (STACK_IS_EMPTY(scriptRun)) { return; } - + if (scriptRun->fixupCount > 0) { scriptRun->fixupCount -= 1; } - + scriptRun->pushCount -= 1; scriptRun->parenSP = DEC1(scriptRun->parenSP); - + /* If the stack is now empty, reset the stack pointers to their initial values. */ @@ -109,7 +109,7 @@ static void pop(UScriptRun *scriptRun) static void fixup(UScriptRun *scriptRun, UScriptCode scriptCode) { int32_t fixupSP = DEC(scriptRun->parenSP, scriptRun->fixupCount); - + while (scriptRun->fixupCount-- > 0) { fixupSP = INC1(fixupSP); scriptRun->parenStack[fixupSP].scriptCode = scriptCode; @@ -263,7 +263,7 @@ uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, U if (scriptRun == NULL || scriptRun->scriptLimit >= scriptRun->textLength) { return FALSE; } - + SYNC_FIXUP(scriptRun); scriptRun->scriptCode = USCRIPT_COMMON; diff --git a/deps/icu-small/source/common/usc_impl.h b/deps/icu-small/source/common/usc_impl.h index 44899649d4c315..cd76990501ac72 100644 --- a/deps/icu-small/source/common/usc_impl.h +++ b/deps/icu-small/source/common/usc_impl.h @@ -33,7 +33,7 @@ * * Scripts are chosen based on the UScriptCode enumeration. * No attempt is made to combine related scripts into a single run. In - * particular, Hiragana, Katakana, and Han characters will appear in seperate + * particular, Hiragana, Katakana, and Han characters will appear in separate * runs. * Here is an example of how to iterate over script runs: diff --git a/deps/icu-small/source/common/uscript_props.cpp b/deps/icu-small/source/common/uscript_props.cpp index 25d287b57a3564..07bae251ea323f 100644 --- a/deps/icu-small/source/common/uscript_props.cpp +++ b/deps/icu-small/source/common/uscript_props.cpp @@ -237,6 +237,11 @@ const int32_t SCRIPT_PROPS[] = { 0x1190C | EXCLUSION, // Diak 0x18C65 | EXCLUSION | LB_LETTERS, // Kits 0x10E88 | EXCLUSION | RTL, // Yezi + 0x12FE5 | EXCLUSION, // Cpmn + 0x10F7C | EXCLUSION | RTL, // Ougr + 0x16ABC | EXCLUSION, // Tnsa + 0x1E290 | EXCLUSION, // Toto + 0x10582 | EXCLUSION | CASED, // Vith // End copy-paste from parsescriptmetadata.py }; diff --git a/deps/icu-small/source/common/uset.cpp b/deps/icu-small/source/common/uset.cpp index ca7e80b082cb36..871a5d8986f050 100644 --- a/deps/icu-small/source/common/uset.cpp +++ b/deps/icu-small/source/common/uset.cpp @@ -83,7 +83,7 @@ uset_add(USet* set, UChar32 c) { U_CAPI void U_EXPORT2 uset_addRange(USet* set, UChar32 start, UChar32 end) { - ((UnicodeSet*) set)->UnicodeSet::add(start, end); + ((UnicodeSet*) set)->UnicodeSet::add(start, end); } U_CAPI void U_EXPORT2 @@ -196,6 +196,11 @@ uset_isEmpty(const USet* set) { return ((const UnicodeSet*) set)->UnicodeSet::isEmpty(); } +U_CAPI UBool U_EXPORT2 +uset_hasStrings(const USet* set) { + return ((const UnicodeSet*) set)->UnicodeSet::hasStrings(); +} + U_CAPI UBool U_EXPORT2 uset_contains(const USet* set, UChar32 c) { return ((const UnicodeSet*) set)->UnicodeSet::contains(c); @@ -296,6 +301,11 @@ class USetAccess /* not : public UObject because all methods are static */ { }; U_NAMESPACE_END +U_CAPI int32_t U_EXPORT2 +uset_getRangeCount(const USet *set) { + return ((const UnicodeSet *)set)->UnicodeSet::getRangeCount(); +} + U_CAPI int32_t U_EXPORT2 uset_getItemCount(const USet* uset) { const UnicodeSet& set = *(const UnicodeSet*)uset; @@ -330,11 +340,6 @@ uset_getItem(const USet* uset, int32_t itemIndex, } } -//U_CAPI int32_t U_EXPORT2 -//uset_getRangeCount(const USet* set) { -// return ((const UnicodeSet*) set)->getRangeCount(); -//} -// //U_CAPI UBool U_EXPORT2 //uset_getRange(const USet* set, int32_t rangeIndex, // UChar32* pStart, UChar32* pEnd) { @@ -355,7 +360,7 @@ uset_getItem(const USet* uset, int32_t itemIndex, * therefore all BMP code points precede all supplementary code points. * * Store each supplementary code point in 2 16-bit units, - * simply with higher-then-lower 16-bit halfs. + * simply with higher-then-lower 16-bit halves. * * Precede the entire list with the length. * If there are supplementary code points, then set bit 15 in the length @@ -562,40 +567,40 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex, // efficiency. // --- // #define USET_GROW_DELTA 20 -// +// // static int32_t // findChar(const UChar32* array, int32_t length, UChar32 c) { // int32_t i; -// +// // /* check the last range limit first for more efficient appending */ // if(length>0) { // if(c>=array[length-1]) { // return length; // } -// +// // /* do not check the last range limit again in the loop below */ // --length; // } -// +// // for(i=0; i=array[i]; ++i) {} // return i; // } -// +// // static UBool // addRemove(USet* set, UChar32 c, int32_t doRemove) { // int32_t i, length, more; -// +// // if(set==NULL || (uint32_t)c>0x10ffff) { // return FALSE; // } -// +// // length=set->length; // i=findChar(set->array, length, c); // if((i&1)^doRemove) { // /* c is already in the set */ // return TRUE; // } -// +// // /* how many more array items do we need? */ // if(iarray[i]) { // /* c is just before the following range, extend that in-place by one */ @@ -635,7 +640,7 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex, // /* insert two range limits c, c+1 */ // more=2; // } -// +// // /* insert range limits */ // if(length+more>set->capacity) { // /* reallocate */ @@ -646,13 +651,13 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex, // } // set->capacity=newCapacity; // uprv_memcpy(newArray, set->array, length*4); -// +// // if(set->array!=set->staticBuffer) { // uprv_free(set->array); // } // set->array=newArray; // } -// +// // if(iarray+i+more, set->array+i, (length-i)*4); // } @@ -661,15 +666,15 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex, // set->array[i+1]=c+1; // } // set->length+=more; -// +// // return TRUE; // } -// +// // U_CAPI UBool U_EXPORT2 // uset_add(USet* set, UChar32 c) { // return addRemove(set, c, 0); // } -// +// // U_CAPI void U_EXPORT2 // uset_remove(USet* set, UChar32 c) { // addRemove(set, c, 1); diff --git a/deps/icu-small/source/common/uset_imp.h b/deps/icu-small/source/common/uset_imp.h index 5f4a3113d9aaf7..7233b9303c3a17 100644 --- a/deps/icu-small/source/common/uset_imp.h +++ b/deps/icu-small/source/common/uset_imp.h @@ -59,3 +59,4 @@ typedef struct USetAdder USetAdder; U_CDECL_END #endif + diff --git a/deps/icu-small/source/common/uset_props.cpp b/deps/icu-small/source/common/uset_props.cpp index b68175c1d23b14..f08e760b10d4e1 100644 --- a/deps/icu-small/source/common/uset_props.cpp +++ b/deps/icu-small/source/common/uset_props.cpp @@ -69,13 +69,13 @@ uset_openPatternOptions(const UChar* pattern, int32_t patternLength, } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uset_applyPattern(USet *set, const UChar *pattern, int32_t patternLength, uint32_t options, UErrorCode *status){ - // status code needs to be checked since we + // status code needs to be checked since we // dereference it if(status == NULL || U_FAILURE(*status)){ return 0; @@ -92,9 +92,9 @@ uset_applyPattern(USet *set, UnicodeString pat(pattern, patternLength); ParsePosition pos; - + ((UnicodeSet*) set)->applyPattern(pat, pos, options, NULL, *status); - + return pos.getIndex(); } diff --git a/deps/icu-small/source/common/usetiter.cpp b/deps/icu-small/source/common/usetiter.cpp index 5c9780548c182d..791516904944d3 100644 --- a/deps/icu-small/source/common/usetiter.cpp +++ b/deps/icu-small/source/common/usetiter.cpp @@ -120,7 +120,7 @@ void UnicodeSetIterator::reset() { } range = 0; endElement = -1; - nextElement = 0; + nextElement = 0; if (endRange >= 0) { loadRange(range); } diff --git a/deps/icu-small/source/common/ushape.cpp b/deps/icu-small/source/common/ushape.cpp index 792de50bbcc736..ae13b5c11834c5 100644 --- a/deps/icu-small/source/common/ushape.cpp +++ b/deps/icu-small/source/common/ushape.cpp @@ -816,9 +816,9 @@ handleGeneratedSpaces(UChar *dest, int32_t sourceLength, if(lamAlefOption || tashkeelOption){ uprv_memset(tempbuffer, 0, (sourceLength+1)*U_SIZEOF_UCHAR); - + i = j = sourceLength; count = 0; - + while(i >= 0) { if ( (lamAlefOption && dest[i] == LAMALEF_SPACE_SUB) || (tashkeelOption && dest[i] == TASHKEEL_SPACE_SUB) ){ diff --git a/deps/icu-small/source/common/usprep.cpp b/deps/icu-small/source/common/usprep.cpp index b84a5d93ea4987..41a1f56c773f5b 100644 --- a/deps/icu-small/source/common/usprep.cpp +++ b/deps/icu-small/source/common/usprep.cpp @@ -74,7 +74,7 @@ static const char * const PROFILE_NAMES[] = { static UBool U_CALLCONV isSPrepAcceptable(void * /* context */, - const char * /* type */, + const char * /* type */, const char * /* name */, const UDataInfo *pInfo) { if( @@ -105,7 +105,7 @@ getSPrepFoldingOffset(uint32_t data) { } /* hashes an entry */ -static int32_t U_CALLCONV +static int32_t U_CALLCONV hashEntry(const UHashTok parm) { UStringPrepKey *b = (UStringPrepKey *)parm.pointer; UHashTok namekey, pathkey; @@ -117,7 +117,7 @@ hashEntry(const UHashTok parm) { } /* compares two entries */ -static UBool U_CALLCONV +static UBool U_CALLCONV compareEntries(const UHashTok p1, const UHashTok p2) { UStringPrepKey *b1 = (UStringPrepKey *)p1.pointer; UStringPrepKey *b2 = (UStringPrepKey *)p2.pointer; @@ -126,16 +126,16 @@ compareEntries(const UHashTok p1, const UHashTok p2) { name2.pointer = b2->name; path1.pointer = b1->path; path2.pointer = b2->path; - return ((UBool)(uhash_compareChars(name1, name2) & + return ((UBool)(uhash_compareChars(name1, name2) & uhash_compareChars(path1, path2))); } -static void +static void usprep_unload(UStringPrepProfile* data){ udata_close(data->sprepData); } -static int32_t +static int32_t usprep_internal_flushCache(UBool noRefCount){ UStringPrepProfile *profile = NULL; UStringPrepKey *key = NULL; @@ -159,7 +159,7 @@ usprep_internal_flushCache(UBool noRefCount){ profile = (UStringPrepProfile *) e->value.pointer; key = (UStringPrepKey *) e->key.pointer; - if ((noRefCount== FALSE && profile->refCount == 0) || + if ((noRefCount== FALSE && profile->refCount == 0) || noRefCount== TRUE) { deletedNum++; uhash_removeElement(SHARED_DATA_HASHTABLE, e); @@ -178,15 +178,15 @@ usprep_internal_flushCache(UBool noRefCount){ uprv_free(profile); uprv_free(key); } - + } umtx_unlock(&usprepMutex); return deletedNum; } -/* Works just like ucnv_flushCache() -static int32_t +/* Works just like ucnv_flushCache() +static int32_t usprep_flushCache(){ return usprep_internal_flushCache(FALSE); } @@ -216,18 +216,18 @@ createCache(UErrorCode &status) { ucln_common_registerCleanup(UCLN_COMMON_USPREP, usprep_cleanup); } -static void +static void initCache(UErrorCode *status) { umtx_initOnce(gSharedDataInitOnce, &createCache, *status); } static UBool U_CALLCONV -loadData(UStringPrepProfile* profile, - const char* path, - const char* name, - const char* type, +loadData(UStringPrepProfile* profile, + const char* path, + const char* name, + const char* type, UErrorCode* errorCode) { - /* load Unicode SPREP data from file */ + /* load Unicode SPREP data from file */ UTrie _sprepTrie={ 0,0,0,0,0,0,0 }; UDataMemory *dataMemory; const int32_t *p=NULL; @@ -270,20 +270,20 @@ loadData(UStringPrepProfile* profile, umtx_unlock(&usprepMutex); /* initialize some variables */ profile->mappingData=(uint16_t *)((uint8_t *)(p+_SPREP_INDEX_TOP)+profile->indexes[_SPREP_INDEX_TRIE_SIZE]); - + u_getUnicodeVersion(normUnicodeVersion); - normUniVer = (normUnicodeVersion[0] << 24) + (normUnicodeVersion[1] << 16) + + normUniVer = (normUnicodeVersion[0] << 24) + (normUnicodeVersion[1] << 16) + (normUnicodeVersion[2] << 8 ) + (normUnicodeVersion[3]); - sprepUniVer = (dataVersion[0] << 24) + (dataVersion[1] << 16) + + sprepUniVer = (dataVersion[0] << 24) + (dataVersion[1] << 16) + (dataVersion[2] << 8 ) + (dataVersion[3]); normCorrVer = profile->indexes[_SPREP_NORM_CORRECTNS_LAST_UNI_VERSION]; - + if(U_FAILURE(*errorCode)){ udata_close(dataMemory); return FALSE; } - if( normUniVer < sprepUniVer && /* the Unicode version of SPREP file must be less than the Unicode Vesion of the normalization data */ - normUniVer < normCorrVer && /* the Unicode version of the NormalizationCorrections.txt file should be less than the Unicode Vesion of the normalization data */ + if( normUniVer < sprepUniVer && /* the Unicode version of SPREP file must be less than the Unicode Version of the normalization data */ + normUniVer < normCorrVer && /* the Unicode version of the NormalizationCorrections.txt file should be less than the Unicode Version of the normalization data */ ((profile->indexes[_SPREP_OPTIONS] & _SPREP_NORMALIZATION_ON) > 0) /* normalization turned on*/ ){ *errorCode = U_INVALID_FORMAT_ERROR; @@ -301,8 +301,8 @@ loadData(UStringPrepProfile* profile, return profile->isDataLoaded; } -static UStringPrepProfile* -usprep_getProfile(const char* path, +static UStringPrepProfile* +usprep_getProfile(const char* path, const char* name, UErrorCode *status){ @@ -315,9 +315,9 @@ usprep_getProfile(const char* path, } UStringPrepKey stackKey; - /* - * const is cast way to save malloc, strcpy and free calls - * we use the passed in pointers for fetching the data from the + /* + * const is cast way to save malloc, strcpy and free calls + * we use the passed in pointers for fetching the data from the * hash table which is safe */ stackKey.name = (char*) name; @@ -330,7 +330,7 @@ usprep_getProfile(const char* path, profile->refCount++; } umtx_unlock(&usprepMutex); - + if(profile == NULL) { /* else load the data and put the data in the cache */ LocalMemory newProfile; @@ -375,9 +375,9 @@ usprep_getProfile(const char* path, if(path != NULL){ key->path = keyPath.orphan(); uprv_strcpy(key->path, path); - } + } profile = newProfile.orphan(); - + /* add the data object to the cache */ profile->refCount = 1; uhash_put(SHARED_DATA_HASHTABLE, key.orphan(), profile, status); @@ -389,14 +389,14 @@ usprep_getProfile(const char* path, } U_CAPI UStringPrepProfile* U_EXPORT2 -usprep_open(const char* path, +usprep_open(const char* path, const char* name, UErrorCode* status){ if(status == NULL || U_FAILURE(*status)){ return NULL; } - + /* initialize the profile struct members */ return usprep_getProfile(path,name,status); } @@ -427,11 +427,11 @@ usprep_close(UStringPrepProfile* profile){ profile->refCount--; } umtx_unlock(&usprepMutex); - + } -U_CFUNC void -uprv_syntaxError(const UChar* rules, +U_CFUNC void +uprv_syntaxError(const UChar* rules, int32_t pos, int32_t rulesLen, UParseError* parseError){ @@ -439,16 +439,16 @@ uprv_syntaxError(const UChar* rules, return; } parseError->offset = pos; - parseError->line = 0 ; // we are not using line numbers - + parseError->line = 0 ; // we are not using line numbers + // for pre-context int32_t start = (pos < U_PARSE_CONTEXT_LEN)? 0 : (pos - (U_PARSE_CONTEXT_LEN-1)); int32_t limit = pos; - + u_memcpy(parseError->preContext,rules+start,limit-start); //null terminate the buffer parseError->preContext[limit-start] = 0; - + // for post-context; include error rules[pos] start = pos; limit = start + (U_PARSE_CONTEXT_LEN-1); @@ -468,8 +468,8 @@ getValues(uint16_t trieWord, int16_t& value, UBool& isIndex){ UStringPrepType type; if(trieWord == 0){ - /* - * Initial value stored in the mapping table + /* + * Initial value stored in the mapping table * just return USPREP_TYPE_LIMIT .. so that * the source codepoint is copied to the destination */ @@ -492,7 +492,7 @@ getValues(uint16_t trieWord, int16_t& value, UBool& isIndex){ value = (int16_t)trieWord; value = (value >> 2); } - + if((trieWord>>2) == _SPREP_MAX_INDEX_VALUE){ type = USPREP_DELETE; isIndex =FALSE; @@ -503,14 +503,14 @@ getValues(uint16_t trieWord, int16_t& value, UBool& isIndex){ } // TODO: change to writing to UnicodeString not UChar * -static int32_t -usprep_map( const UStringPrepProfile* profile, - const UChar* src, int32_t srcLength, +static int32_t +usprep_map( const UStringPrepProfile* profile, + const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UParseError* parseError, UErrorCode* status ){ - + uint16_t result; int32_t destIndex=0; int32_t srcIndex; @@ -527,11 +527,11 @@ usprep_map( const UStringPrepProfile* profile, UChar32 ch; U16_NEXT(src,srcIndex,srcLength,ch); - + result=0; UTRIE_GET16(&profile->sprepTrie,ch,result); - + type = getValues(result, value, isIndex); // check if the source codepoint is unassigned @@ -540,9 +540,9 @@ usprep_map( const UStringPrepProfile* profile, uprv_syntaxError(src,srcIndex-U16_LENGTH(ch), srcLength,parseError); *status = U_STRINGPREP_UNASSIGNED_ERROR; return 0; - + }else if(type == USPREP_MAP){ - + int32_t index, length; if(isIndex){ @@ -558,7 +558,7 @@ usprep_map( const UStringPrepProfile* profile, length = 3; }else{ length = profile->mappingData[index++]; - + } /* copy mapping to destination */ @@ -567,7 +567,7 @@ usprep_map( const UStringPrepProfile* profile, dest[destIndex] = profile->mappingData[index+i]; } destIndex++; /* for pre-flighting */ - } + } continue; }else{ // subtract the delta to arrive at the code point @@ -591,27 +591,27 @@ usprep_map( const UStringPrepProfile* profile, } destIndex +=2; } - + } - + return u_terminateUChars(dest, destCapacity, destIndex, status); } /* 1) Map -- For each character in the input, check if it has a mapping - and, if so, replace it with its mapping. + and, if so, replace it with its mapping. 2) Normalize -- Possibly normalize the result of step 1 using Unicode - normalization. + normalization. 3) Prohibit -- Check for any characters that are not allowed in the - output. If any are found, return an error. + output. If any are found, return an error. 4) Check bidi -- Possibly check for right-to-left characters, and if any are found, make sure that the whole string satisfies the requirements for bidirectional strings. If the string does not satisfy the requirements for bidirectional strings, return an - error. + error. [Unicode3.2] defines several bidirectional categories; each character has one bidirectional category assigned to it. For the purposes of the requirements below, an "RandALCat character" is a character that @@ -637,7 +637,7 @@ usprep_map( const UStringPrepProfile* profile, */ U_CAPI int32_t U_EXPORT2 usprep_prepare( const UStringPrepProfile* profile, - const UChar* src, int32_t srcLength, + const UChar* src, int32_t srcLength, UChar* dest, int32_t destCapacity, int32_t options, UParseError* parseError, @@ -723,7 +723,7 @@ usprep_prepare( const UStringPrepProfile* profile, UBool isIndex; UStringPrepType type = getValues(result, value, isIndex); - if( type == USPREP_PROHIBITED || + if( type == USPREP_PROHIBITED || ((result < _SPREP_TYPE_THRESHOLD) && (result & 0x01) /* first bit says it the code point is prohibited*/) ){ *status = U_STRINGPREP_PROHIBITED_ERROR; @@ -755,7 +755,7 @@ usprep_prepare( const UStringPrepProfile* profile, } //satisfy 3 - if( rightToLeft == TRUE && + if( rightToLeft == TRUE && !((firstCharDir == U_RIGHT_TO_LEFT || firstCharDir == U_RIGHT_TO_LEFT_ARABIC) && (direction == U_RIGHT_TO_LEFT || direction == U_RIGHT_TO_LEFT_ARABIC)) ){ diff --git a/deps/icu-small/source/common/ustack.cpp b/deps/icu-small/source/common/ustack.cpp index fb314b0ebe54cd..8d9e475374d959 100644 --- a/deps/icu-small/source/common/ustack.cpp +++ b/deps/icu-small/source/common/ustack.cpp @@ -37,10 +37,9 @@ UStack::~UStack() {} void* UStack::pop(void) { int32_t n = size() - 1; - void* result = 0; + void* result = nullptr; if (n >= 0) { - result = elementAt(n); - removeElementAt(n); + result = orphanElementAt(n); } return result; } diff --git a/deps/icu-small/source/common/ustr_cnv.cpp b/deps/icu-small/source/common/ustr_cnv.cpp index d2c2afea1592b3..9a25a9905a2374 100644 --- a/deps/icu-small/source/common/ustr_cnv.cpp +++ b/deps/icu-small/source/common/ustr_cnv.cpp @@ -38,10 +38,10 @@ U_CAPI UConverter* U_EXPORT2 u_getDefaultConverter(UErrorCode *status) { UConverter *converter = NULL; - + if (gDefaultConverter != NULL) { icu::umtx_lock(NULL); - + /* need to check to make sure it wasn't taken out from under us */ if (gDefaultConverter != NULL) { converter = gDefaultConverter; @@ -87,10 +87,10 @@ U_CAPI void U_EXPORT2 u_flushDefaultConverter() { UConverter *converter = NULL; - + if (gDefaultConverter != NULL) { icu::umtx_lock(NULL); - + /* need to check to make sure it wasn't taken out from under us */ if (gDefaultConverter != NULL) { converter = gDefaultConverter; diff --git a/deps/icu-small/source/common/ustr_cnv.h b/deps/icu-small/source/common/ustr_cnv.h index 12e86ea02f7264..861e3ebff0613b 100644 --- a/deps/icu-small/source/common/ustr_cnv.h +++ b/deps/icu-small/source/common/ustr_cnv.h @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 1999-2010, International Business Machines * Corporation and others. All Rights Reserved. @@ -40,7 +40,7 @@ U_CAPI void U_EXPORT2 u_releaseDefaultConverter(UConverter *converter); /** - * Flush the default converter, if cached. + * Flush the default converter, if cached. * @internal */ U_CAPI void U_EXPORT2 diff --git a/deps/icu-small/source/common/ustr_imp.h b/deps/icu-small/source/common/ustr_imp.h index 5b249ade3d21bb..3c4b9cc2a5397a 100644 --- a/deps/icu-small/source/common/ustr_imp.h +++ b/deps/icu-small/source/common/ustr_imp.h @@ -1,6 +1,6 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html -/* +/* ********************************************************************** * Copyright (C) 1999-2015, International Business Machines * Corporation and others. All Rights Reserved. @@ -37,10 +37,10 @@ uprv_strCompare(const UChar *s1, int32_t length1, const UChar *s2, int32_t length2, UBool strncmpStyle, UBool codePointOrder); -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ustr_hashUCharsN(const UChar *str, int32_t length); -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ustr_hashCharsN(const char *str, int32_t length); U_CAPI int32_t U_EXPORT2 @@ -48,7 +48,7 @@ ustr_hashICharsN(const char *str, int32_t length); /** * Convert an ASCII-range lowercase character to uppercase. - * + * * @param c A UChar. * @return If UChar is a lowercase ASCII character, returns the uppercase version. * Otherwise, returns the input character. diff --git a/deps/icu-small/source/common/ustr_titlecase_brkiter.cpp b/deps/icu-small/source/common/ustr_titlecase_brkiter.cpp index 457905eb60da00..3002d64e34f17f 100644 --- a/deps/icu-small/source/common/ustr_titlecase_brkiter.cpp +++ b/deps/icu-small/source/common/ustr_titlecase_brkiter.cpp @@ -44,7 +44,7 @@ class WholeStringBreakIterator : public BreakIterator { public: WholeStringBreakIterator() : BreakIterator(), length(0) {} ~WholeStringBreakIterator() U_OVERRIDE; - UBool operator==(const BreakIterator&) const U_OVERRIDE; + bool operator==(const BreakIterator&) const U_OVERRIDE; WholeStringBreakIterator *clone() const U_OVERRIDE; static UClassID U_EXPORT2 getStaticClassID(); UClassID getDynamicClassID() const U_OVERRIDE; @@ -73,11 +73,11 @@ class WholeStringBreakIterator : public BreakIterator { UOBJECT_DEFINE_RTTI_IMPLEMENTATION(WholeStringBreakIterator) WholeStringBreakIterator::~WholeStringBreakIterator() {} -UBool WholeStringBreakIterator::operator==(const BreakIterator&) const { return FALSE; } +bool WholeStringBreakIterator::operator==(const BreakIterator&) const { return false; } WholeStringBreakIterator *WholeStringBreakIterator::clone() const { return nullptr; } CharacterIterator &WholeStringBreakIterator::getText() const { - UPRV_UNREACHABLE; // really should not be called + UPRV_UNREACHABLE_EXIT; // really should not be called } UText *WholeStringBreakIterator::getUText(UText * /*fillIn*/, UErrorCode &errorCode) const { if (U_SUCCESS(errorCode)) { @@ -100,7 +100,7 @@ void WholeStringBreakIterator::setText(UText *text, UErrorCode &errorCode) { } } void WholeStringBreakIterator::adoptText(CharacterIterator*) { - UPRV_UNREACHABLE; // should not be called + UPRV_UNREACHABLE_EXIT; // should not be called } int32_t WholeStringBreakIterator::first() { return 0; } diff --git a/deps/icu-small/source/common/ustr_wcs.cpp b/deps/icu-small/source/common/ustr_wcs.cpp index 9a49a67744b6f9..1a6ea2375d0bb6 100644 --- a/deps/icu-small/source/common/ustr_wcs.cpp +++ b/deps/icu-small/source/common/ustr_wcs.cpp @@ -35,7 +35,7 @@ #if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32) // TODO: We should use CharString for char buffers and UnicodeString for UChar buffers. // Then we could change this to work only with wchar_t buffers. -static inline UBool +static inline UBool u_growAnyBufferFromStatic(void *context, void **pBuffer, int32_t *pCapacity, int32_t reqCapacity, int32_t length, int32_t size) { @@ -61,11 +61,11 @@ u_growAnyBufferFromStatic(void *context, } /* helper function */ -static wchar_t* -_strToWCS(wchar_t *dest, +static wchar_t* +_strToWCS(wchar_t *dest, int32_t destCapacity, int32_t *pDestLength, - const UChar *src, + const UChar *src, int32_t srcLength, UErrorCode *pErrorCode){ @@ -78,20 +78,20 @@ _strToWCS(wchar_t *dest, wchar_t* intTarget=NULL; int32_t intTargetCapacity=0; int count=0,retVal=0; - + const UChar *pSrcLimit =NULL; const UChar *pSrc = src; conv = u_getDefaultConverter(pErrorCode); - + if(U_FAILURE(*pErrorCode)){ return NULL; } - + if(srcLength == -1){ srcLength = u_strlen(pSrc); } - + pSrcLimit = pSrc + srcLength; for(;;) { @@ -101,12 +101,12 @@ _strToWCS(wchar_t *dest, /* convert to chars using default converter */ ucnv_fromUnicode(conv,&tempBuf,tempBufLimit,&pSrc,pSrcLimit,NULL,(UBool)(pSrc==pSrcLimit),pErrorCode); count =(tempBuf - saveBuf); - + /* This should rarely occur */ if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR){ tempBuf = saveBuf; - - /* we dont have enough room on the stack grow the buffer */ + + /* we don't have enough room on the stack grow the buffer */ int32_t newCapacity = 2 * srcLength; if(newCapacity <= tempBufCapacity) { newCapacity = _BUFFER_CAPACITY_MULTIPLIER * tempBufCapacity; @@ -115,7 +115,7 @@ _strToWCS(wchar_t *dest, newCapacity, count, 1)) { goto cleanup; } - + saveBuf = tempBuf; tempBufLimit = tempBuf + tempBufCapacity; tempBuf = tempBuf + count; @@ -132,19 +132,19 @@ _strToWCS(wchar_t *dest, /* done with conversion null terminate the char buffer */ if(count>=tempBufCapacity){ tempBuf = saveBuf; - /* we dont have enough room on the stack grow the buffer */ - if(!u_growAnyBufferFromStatic(stackBuffer,(void**) &tempBuf, &tempBufCapacity, + /* we don't have enough room on the stack grow the buffer */ + if(!u_growAnyBufferFromStatic(stackBuffer,(void**) &tempBuf, &tempBufCapacity, count+1, count, 1)) { goto cleanup; - } + } saveBuf = tempBuf; } - + saveBuf[count]=0; + - - /* allocate more space than required - * here we assume that every char requires + /* allocate more space than required + * here we assume that every char requires * no more than 2 wchar_ts */ intTargetCapacity = (count * _BUFFER_CAPACITY_MULTIPLIER + 1) /*for null termination */; @@ -156,15 +156,15 @@ _strToWCS(wchar_t *dest, int32_t remaining = intTargetCapacity; wchar_t* pIntTarget=intTarget; tempBuf = saveBuf; - + /* now convert the mbs to wcs */ for(;;){ - + /* we can call the system API since we are sure that * there is atleast 1 null in the input */ retVal = uprv_mbstowcs(pIntTarget,(tempBuf+nulLen),remaining); - + if(retVal==-1){ *pErrorCode = U_INVALID_CHAR_FOUND; break; @@ -189,10 +189,10 @@ _strToWCS(wchar_t *dest, /* we donot check for limit since tempBuf is null terminated */ while(tempBuf[nulLen++] != 0){ } - nulVal = (nulLen < srcLength) ? 1 : 0; + nulVal = (nulLen < srcLength) ? 1 : 0; pIntTarget = pIntTarget + retVal+nulVal; remaining -=(retVal+nulVal); - + /* check if we have reached the source limit*/ if(nulLen>=(count)){ break; @@ -200,10 +200,10 @@ _strToWCS(wchar_t *dest, } } count = (int32_t)(pIntTarget-intTarget); - + if(0 < count && count <= destCapacity){ uprv_memcpy(dest, intTarget, (size_t)count*sizeof(wchar_t)); - } + } if(pDestLength){ *pDestLength = count; @@ -229,10 +229,10 @@ _strToWCS(wchar_t *dest, #endif U_CAPI wchar_t* U_EXPORT2 -u_strToWCS(wchar_t *dest, +u_strToWCS(wchar_t *dest, int32_t destCapacity, int32_t *pDestLength, - const UChar *src, + const UChar *src, int32_t srcLength, UErrorCode *pErrorCode){ @@ -240,14 +240,14 @@ u_strToWCS(wchar_t *dest, if(pErrorCode==NULL || U_FAILURE(*pErrorCode)){ return NULL; } - + if( (src==NULL && srcLength!=0) || srcLength < -1 || (destCapacity<0) || (dest == NULL && destCapacity > 0) ) { *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR; return NULL; } - + #ifdef U_WCHAR_IS_UTF16 /* wchar_t is UTF-16 just do a memcpy */ if(srcLength == -1){ @@ -265,23 +265,23 @@ u_strToWCS(wchar_t *dest, return dest; #elif defined U_WCHAR_IS_UTF32 - + return (wchar_t*)u_strToUTF32((UChar32*)dest, destCapacity, pDestLength, src, srcLength, pErrorCode); #else - + return _strToWCS(dest,destCapacity,pDestLength,src,srcLength, pErrorCode); - + #endif } #if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32) /* helper function */ -static UChar* +static UChar* _strFromWCS( UChar *dest, - int32_t destCapacity, + int32_t destCapacity, int32_t *pDestLength, const wchar_t *src, int32_t srcLength, @@ -292,7 +292,7 @@ _strFromWCS( UChar *dest, UChar* pTarget = NULL; UChar* pTargetLimit = NULL; UChar* target = NULL; - + UChar uStack [_STACK_BUFFER_CAPACITY]; wchar_t wStack[_STACK_BUFFER_CAPACITY]; @@ -316,7 +316,7 @@ _strFromWCS( UChar *dest, for(;;){ /* convert wchars to chars */ retVal = uprv_wcstombs(pCSrc,src, cStackCap); - + if(retVal == -1){ *pErrorCode = U_ILLEGAL_CHAR_FOUND; goto cleanup; @@ -331,14 +331,14 @@ _strFromWCS( UChar *dest, break; } } - + }else{ - /* here the source is not null terminated - * so it may have nulls embeded and we need to - * do some extra processing + /* here the source is not null terminated + * so it may have nulls embedded and we need to + * do some extra processing */ int32_t remaining =cStackCap; - + pSrcLimit = src + srcLength; for(;;){ @@ -363,7 +363,7 @@ _strFromWCS( UChar *dest, remaining = cStackCap-(pCSrc - pCSave); } - /* we have found a null so convert the + /* we have found a null so convert the * chunk from beginning of non-null char to null */ retVal = uprv_wcstombs(pCSrc,pSrc,remaining); @@ -382,7 +382,7 @@ _strFromWCS( UChar *dest, }else{ - /* the source is not null terminated and we are + /* the source is not null terminated and we are * end of source so we copy the source to a temp buffer * null terminate it and convert wchar_ts to chars */ @@ -399,10 +399,10 @@ _strFromWCS( UChar *dest, /* copy the contents to tempStack */ uprv_memcpy(pWStack, pSrc, (size_t)nulLen*sizeof(wchar_t)); } - + /* null terminate the tempBuffer */ pWStack[nulLen] =0 ; - + if(remaining < (nulLen * MB_CUR_MAX)){ /* Should rarely occur */ int32_t len = (pCSrc-pCSave); @@ -417,7 +417,7 @@ _strFromWCS( UChar *dest, } /* convert to chars */ retVal = uprv_wcstombs(pCSrc,pWStack,remaining); - + pCSrc += retVal; pSrc += nulLen; srcLength-=nulLen; /* decrement the srcLength */ @@ -426,30 +426,30 @@ _strFromWCS( UChar *dest, } } - /* OK..now we have converted from wchar_ts to chars now - * convert chars to UChars + /* OK..now we have converted from wchar_ts to chars now + * convert chars to UChars */ pCSrcLimit = pCSrc; pCSrc = pCSave; pTarget = target= dest; - pTargetLimit = dest + destCapacity; - + pTargetLimit = dest + destCapacity; + conv= u_getDefaultConverter(pErrorCode); - + if(U_FAILURE(*pErrorCode)|| conv==NULL){ goto cleanup; } - + for(;;) { - + *pErrorCode = U_ZERO_ERROR; - + /* convert to stack buffer*/ ucnv_toUnicode(conv,&pTarget,pTargetLimit,(const char**)&pCSrc,pCSrcLimit,NULL,(UBool)(pCSrc==pCSrcLimit),pErrorCode); - + /* increment count to number written to stack */ count+= pTarget - target; - + if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR){ target = uStack; pTarget = uStack; @@ -457,17 +457,17 @@ _strFromWCS( UChar *dest, } else { break; } - + } - + if(pDestLength){ *pDestLength =count; } u_terminateUChars(dest,destCapacity,count,pErrorCode); - + cleanup: - + if(cStack != pCSave){ uprv_free(pCSave); } @@ -475,7 +475,7 @@ _strFromWCS( UChar *dest, if(wStack != pWStack){ uprv_free(pWStack); } - + u_releaseDefaultConverter(conv); return dest; @@ -484,7 +484,7 @@ _strFromWCS( UChar *dest, U_CAPI UChar* U_EXPORT2 u_strFromWCS(UChar *dest, - int32_t destCapacity, + int32_t destCapacity, int32_t *pDestLength, const wchar_t *src, int32_t srcLength, @@ -520,13 +520,13 @@ u_strFromWCS(UChar *dest, return dest; #elif defined U_WCHAR_IS_UTF32 - + return u_strFromUTF32(dest, destCapacity, pDestLength, (UChar32*)src, srcLength, pErrorCode); #else - return _strFromWCS(dest,destCapacity,pDestLength,src,srcLength,pErrorCode); + return _strFromWCS(dest,destCapacity,pDestLength,src,srcLength,pErrorCode); #endif diff --git a/deps/icu-small/source/common/ustrcase.cpp b/deps/icu-small/source/common/ustrcase.cpp index 618e847c65d5a6..36b19e75f2d7ae 100644 --- a/deps/icu-small/source/common/ustrcase.cpp +++ b/deps/icu-small/source/common/ustrcase.cpp @@ -544,7 +544,7 @@ U_NAMESPACE_BEGIN namespace GreekUpper { // Data generated by prototype code, see -// http://site.icu-project.org/design/case/greek-upper +// https://icu.unicode.org/design/case/greek-upper // TODO: Move this data into ucase.icu. static const uint16_t data0370[] = { // U+0370..03FF diff --git a/deps/icu-small/source/common/ustrenum.cpp b/deps/icu-small/source/common/ustrenum.cpp index 8be79c98999256..08a1bf29c3a975 100644 --- a/deps/icu-small/source/common/ustrenum.cpp +++ b/deps/icu-small/source/common/ustrenum.cpp @@ -10,7 +10,7 @@ * Since: ICU 2.4 ********************************************************************** */ -#include "utypeinfo.h" // for 'typeid' to work +#include "utypeinfo.h" // for 'typeid' to work #include "unicode/ustring.h" #include "unicode/strenum.h" @@ -120,12 +120,12 @@ StringEnumeration::setChars(const char *s, int32_t length, UErrorCode &status) { return NULL; } -UBool +bool StringEnumeration::operator==(const StringEnumeration& that)const { - return typeid(*this) == typeid(that); + return typeid(*this) == typeid(that); } -UBool +bool StringEnumeration::operator!=(const StringEnumeration& that)const { return !operator==(that); } @@ -260,7 +260,7 @@ U_CDECL_END * delete it (regardless of error status). */ U_CAPI UEnumeration* U_EXPORT2 -uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec) { +uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec) { UEnumeration* result = NULL; if (U_SUCCESS(*ec) && adopted != NULL) { result = (UEnumeration*) uprv_malloc(sizeof(UEnumeration)); diff --git a/deps/icu-small/source/common/ustrenum.h b/deps/icu-small/source/common/ustrenum.h index 582727cd1f742b..3703dedb97db12 100644 --- a/deps/icu-small/source/common/ustrenum.h +++ b/deps/icu-small/source/common/ustrenum.h @@ -47,9 +47,9 @@ class U_COMMON_API UStringEnumeration : public StringEnumeration { * @param status the error code. * @return number of elements in the iterator. */ - virtual int32_t count(UErrorCode& status) const; + virtual int32_t count(UErrorCode& status) const override; - virtual const char* next(int32_t *resultLength, UErrorCode& status); + virtual const char* next(int32_t *resultLength, UErrorCode& status) override; /** * Returns the next element a UnicodeString*. If there are no @@ -57,18 +57,18 @@ class U_COMMON_API UStringEnumeration : public StringEnumeration { * @param status the error code. * @return a pointer to the string, or NULL. */ - virtual const UnicodeString* snext(UErrorCode& status); + virtual const UnicodeString* snext(UErrorCode& status) override; /** * Resets the iterator. * @param status the error code. */ - virtual void reset(UErrorCode& status); + virtual void reset(UErrorCode& status) override; /** * ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU4C "poor man's RTTI", returns a UClassID for this ICU class. @@ -84,3 +84,4 @@ class U_COMMON_API UStringEnumeration : public StringEnumeration { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/common/ustring.cpp b/deps/icu-small/source/common/ustring.cpp index 8a6f737dc25202..847725638912fc 100644 --- a/deps/icu-small/source/common/ustring.cpp +++ b/deps/icu-small/source/common/ustring.cpp @@ -575,7 +575,7 @@ u_strspn(const UChar *string, const UChar *matchSet) /* ----- Text manipulation functions --- */ U_CAPI UChar* U_EXPORT2 -u_strtok_r(UChar *src, +u_strtok_r(UChar *src, const UChar *delim, UChar **saveState) { @@ -625,7 +625,7 @@ u_strtok_r(UChar *src, /* Miscellaneous functions -------------------------------------------------- */ U_CAPI UChar* U_EXPORT2 -u_strcat(UChar *dst, +u_strcat(UChar *dst, const UChar *src) { UChar *anchor = dst; /* save a pointer to start of dst */ @@ -640,9 +640,9 @@ u_strcat(UChar *dst, } U_CAPI UChar* U_EXPORT2 -u_strncat(UChar *dst, - const UChar *src, - int32_t n ) +u_strncat(UChar *dst, + const UChar *src, + int32_t n ) { if(n > 0) { UChar *anchor = dst; /* save a pointer to start of dst */ @@ -668,8 +668,8 @@ u_strncat(UChar *dst, /* ----- Text property functions --- */ U_CAPI int32_t U_EXPORT2 -u_strcmp(const UChar *s1, - const UChar *s2) +u_strcmp(const UChar *s1, + const UChar *s2) { UChar c1, c2; @@ -755,7 +755,7 @@ uprv_strCompare(const UChar *s1, int32_t length1, length2=u_strlen(s2); } - /* limit1=start1+min(lenght1, length2) */ + /* limit1=start1+min(length1, length2) */ if(length1 0) { int32_t rc; @@ -964,8 +964,8 @@ u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n) { } U_CAPI UChar* U_EXPORT2 -u_strcpy(UChar *dst, - const UChar *src) +u_strcpy(UChar *dst, + const UChar *src) { UChar *anchor = dst; /* save a pointer to start of dst */ @@ -976,9 +976,9 @@ u_strcpy(UChar *dst, } U_CAPI UChar* U_EXPORT2 -u_strncpy(UChar *dst, - const UChar *src, - int32_t n) +u_strncpy(UChar *dst, + const UChar *src, + int32_t n) { UChar *anchor = dst; /* save a pointer to start of dst */ @@ -991,7 +991,7 @@ u_strncpy(UChar *dst, } U_CAPI int32_t U_EXPORT2 -u_strlen(const UChar *s) +u_strlen(const UChar *s) { #if U_SIZEOF_WCHAR_T == U_SIZEOF_UCHAR return (int32_t)uprv_wcslen((const wchar_t *)s); @@ -1185,23 +1185,23 @@ static const UChar UNESCAPE_MAP[] = { enum { UNESCAPE_MAP_LENGTH = UPRV_LENGTHOF(UNESCAPE_MAP) }; /* Convert one octal digit to a numeric value 0..7, or -1 on failure */ -static int8_t _digit8(UChar c) { - if (c >= 0x0030 && c <= 0x0037) { - return (int8_t)(c - 0x0030); +static int32_t _digit8(UChar c) { + if (c >= u'0' && c <= u'7') { + return c - u'0'; } return -1; } /* Convert one hex digit to a numeric value 0..F, or -1 on failure */ -static int8_t _digit16(UChar c) { - if (c >= 0x0030 && c <= 0x0039) { - return (int8_t)(c - 0x0030); +static int32_t _digit16(UChar c) { + if (c >= u'0' && c <= u'9') { + return c - u'0'; } - if (c >= 0x0041 && c <= 0x0046) { - return (int8_t)(c - (0x0041 - 10)); + if (c >= u'A' && c <= u'F') { + return c - (u'A' - 10); } - if (c >= 0x0061 && c <= 0x0066) { - return (int8_t)(c - (0x0061 - 10)); + if (c >= u'a' && c <= u'f') { + return c - (u'a' - 10); } return -1; } @@ -1216,14 +1216,13 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, void *context) { int32_t start = *offset; - UChar c; + UChar32 c; UChar32 result = 0; int8_t n = 0; int8_t minDig = 0; int8_t maxDig = 0; - int8_t bitsPerDigit = 4; - int8_t dig; - int32_t i; + int8_t bitsPerDigit = 4; + int32_t dig; UBool braces = FALSE; /* Check that offset is in range */ @@ -1236,15 +1235,15 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, /* Convert hexadecimal and octal escapes */ switch (c) { - case 0x0075 /*'u'*/: + case u'u': minDig = maxDig = 4; break; - case 0x0055 /*'U'*/: + case u'U': minDig = maxDig = 8; break; - case 0x0078 /*'x'*/: + case u'x': minDig = 1; - if (*offset < length && charAt(*offset, context) == 0x7B /*{*/) { + if (*offset < length && charAt(*offset, context) == u'{') { ++(*offset); braces = TRUE; maxDig = 8; @@ -1266,7 +1265,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, if (minDig != 0) { while (*offset < length && n < maxDig) { c = charAt(*offset, context); - dig = (int8_t)((bitsPerDigit == 3) ? _digit8(c) : _digit16(c)); + dig = (bitsPerDigit == 3) ? _digit8(c) : _digit16(c); if (dig < 0) { break; } @@ -1278,7 +1277,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, goto err; } if (braces) { - if (c != 0x7D /*}*/) { + if (c != u'}') { goto err; } ++(*offset); @@ -1293,16 +1292,15 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, if (*offset < length && U16_IS_LEAD(result)) { int32_t ahead = *offset + 1; c = charAt(*offset, context); - if (c == 0x5C /*'\\'*/ && ahead < length) { - // Calling u_unescapeAt recursively may cause a stack overflow if - // we have repeated surrogate lead after that. Limit the - // length to 5 ('u' and 4 hex) after ahead. - int32_t tailLimit = ahead + 5; + if (c == u'\\' && ahead < length) { + // Calling ourselves recursively may cause a stack overflow if + // we have repeated escaped lead surrogates. + // Limit the length to 11 ("x{0000DFFF}") after ahead. + int32_t tailLimit = ahead + 11; if (tailLimit > length) { tailLimit = length; } - c = (UChar) u_unescapeAt(charAt, &ahead, tailLimit, - context); + c = u_unescapeAt(charAt, &ahead, tailLimit, context); } if (U16_IS_TRAIL(c)) { *offset = ahead; @@ -1313,7 +1311,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt, } /* Convert C-style escapes in table */ - for (i=0; i 0) ) { @@ -788,8 +788,8 @@ _appendUTF8(uint8_t *pDest, UChar32 c) { return pDest; } - -U_CAPI char* U_EXPORT2 + +U_CAPI char* U_EXPORT2 u_strToUTF8WithSub(char *dest, int32_t destCapacity, int32_t *pDestLength, @@ -807,7 +807,7 @@ u_strToUTF8WithSub(char *dest, if(U_FAILURE(*pErrorCode)){ return NULL; } - + if( (pSrc==NULL && srcLength!=0) || srcLength < -1 || (destCapacity<0) || (dest == NULL && destCapacity > 0) || subchar > 0x10ffff || U_IS_SURROGATE(subchar) @@ -852,7 +852,7 @@ u_strToUTF8WithSub(char *dest, int32_t length; /*need not check for NUL because NUL fails U16_IS_TRAIL() anyway*/ - if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(ch2=*pSrc)) { + if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(ch2=*pSrc)) { ++pSrc; ch=U16_GET_SUPPLEMENTARY(ch, ch2); } else if(subchar>=0) { @@ -939,7 +939,7 @@ u_strToUTF8WithSub(char *dest, break; /* recompute count */ } - if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(ch2=*pSrc)) { + if(U16_IS_SURROGATE_LEAD(ch) && U16_IS_TRAIL(ch2=*pSrc)) { ++pSrc; ch=U16_GET_SUPPLEMENTARY(ch, ch2); @@ -994,7 +994,7 @@ u_strToUTF8WithSub(char *dest, } else /* ch is a surrogate */ { int32_t length; - if(U16_IS_SURROGATE_LEAD(ch) && pSrc=0) { @@ -1053,7 +1053,7 @@ u_strToUTF8WithSub(char *dest, return dest; } -U_CAPI char* U_EXPORT2 +U_CAPI char* U_EXPORT2 u_strToUTF8(char *dest, int32_t destCapacity, int32_t *pDestLength, @@ -1309,12 +1309,12 @@ u_strFromJavaModifiedUTF8WithSub( return dest; } -U_CAPI char* U_EXPORT2 +U_CAPI char* U_EXPORT2 u_strToJavaModifiedUTF8( char *dest, int32_t destCapacity, int32_t *pDestLength, - const UChar *src, + const UChar *src, int32_t srcLength, UErrorCode *pErrorCode) { int32_t reqLength=0; diff --git a/deps/icu-small/source/common/utext.cpp b/deps/icu-small/source/common/utext.cpp index 0dfef36d264176..ec79700ca81636 100644 --- a/deps/icu-small/source/common/utext.cpp +++ b/deps/icu-small/source/common/utext.cpp @@ -689,7 +689,7 @@ utext_close(UText *ut) { } // Zero out function table of the closed UText. This is a defensive move, - // inteded to cause applications that inadvertantly use a closed + // intended to cause applications that inadvertently use a closed // utext to crash with null pointer errors. ut->pFuncs = NULL; @@ -1046,7 +1046,7 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) { // // Dispatch to the appropriate action for a - // Backwards Diretion iteration request. + // Backwards Direction iteration request. // if (ix==ut->chunkNativeStart) { // Check for normal sequential iteration cases first. @@ -1304,7 +1304,7 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) { // If index is at the end, there is no character there to look at. if (ix != ut->b) { // Note: this function will only move the index back if it is on a trail byte - // and there is a preceding lead byte and the sequence from the lead + // and there is a preceding lead byte and the sequence from the lead // through this trail could be part of a valid UTF-8 sequence // Otherwise the index remains unchanged. U8_SET_CP_START(s8, 0, ix); @@ -1359,7 +1359,7 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) { int32_t sIx = srcIx; // ix of last byte of multi-byte u8 char // Get the full character from the UTF8 string. - // use code derived from tbe macros in utf8.h + // use code derived from the macros in utf8.h // Leaves srcIx pointing at the first byte of the UTF-8 char. // c=utf8_prevCharSafeBody(s8, 0, &srcIx, c, -3); @@ -1570,7 +1570,7 @@ utf8TextClone(UText *dest, const UText *src, UBool deep, UErrorCode *status) // For deep clones, make a copy of the string. // The copied storage is owned by the newly created clone. // - // TODO: There is an isssue with using utext_nativeLength(). + // TODO: There is an issue with using utext_nativeLength(). // That function is non-const in cases where the input was NUL terminated // and the length has not yet been determined. // This function (clone()) is const. @@ -2394,9 +2394,9 @@ ucstrTextClose(UText *ut) { static int64_t U_CALLCONV ucstrTextLength(UText *ut) { if (ut->a < 0) { - // null terminated, we don't yet know the length. Scan for it. + // null terminated, we don't yet know the length. Scan for it. // Access is not convenient for doing this - // because the current interation postion can't be changed. + // because the current iteration position can't be changed. const UChar *str = (const UChar *)ut->context; for (;;) { if (str[ut->chunkNativeLimit] == 0) { diff --git a/deps/icu-small/source/common/util.cpp b/deps/icu-small/source/common/util.cpp index 56dd4f1bfa76a0..f342172259980d 100644 --- a/deps/icu-small/source/common/util.cpp +++ b/deps/icu-small/source/common/util.cpp @@ -65,38 +65,52 @@ UnicodeString& ICU_Utility::appendNumber(UnicodeString& result, int32_t n, return result; } -/** - * Return true if the character is NOT printable ASCII. - */ UBool ICU_Utility::isUnprintable(UChar32 c) { return !(c >= 0x20 && c <= 0x7E); } -/** - * Escape unprintable characters using \uxxxx notation for U+0000 to - * U+FFFF and \Uxxxxxxxx for U+10000 and above. If the character is - * printable ASCII, then do nothing and return FALSE. Otherwise, - * append the escaped notation and return TRUE. - */ +UBool ICU_Utility::shouldAlwaysBeEscaped(UChar32 c) { + if (c < 0x20) { + return true; // C0 control codes + } else if (c <= 0x7e) { + return false; // printable ASCII + } else if (c <= 0x9f) { + return true; // C1 control codes + } else if (c < 0xd800) { + return false; // most of the BMP + } else if (c <= 0xdfff || (0xfdd0 <= c && c <= 0xfdef) || (c & 0xfffe) == 0xfffe) { + return true; // surrogate or noncharacter code points + } else if (c <= 0x10ffff) { + return false; // all else + } else { + return true; // not a code point + } +} + UBool ICU_Utility::escapeUnprintable(UnicodeString& result, UChar32 c) { if (isUnprintable(c)) { - result.append(BACKSLASH); - if (c & ~0xFFFF) { - result.append(UPPER_U); - result.append(DIGITS[0xF&(c>>28)]); - result.append(DIGITS[0xF&(c>>24)]); - result.append(DIGITS[0xF&(c>>20)]); - result.append(DIGITS[0xF&(c>>16)]); - } else { - result.append(LOWER_U); - } - result.append(DIGITS[0xF&(c>>12)]); - result.append(DIGITS[0xF&(c>>8)]); - result.append(DIGITS[0xF&(c>>4)]); - result.append(DIGITS[0xF&c]); - return TRUE; + escape(result, c); + return true; } - return FALSE; + return false; +} + +UnicodeString &ICU_Utility::escape(UnicodeString& result, UChar32 c) { + result.append(BACKSLASH); + if (c & ~0xFFFF) { + result.append(UPPER_U); + result.append(DIGITS[0xF&(c>>28)]); + result.append(DIGITS[0xF&(c>>24)]); + result.append(DIGITS[0xF&(c>>20)]); + result.append(DIGITS[0xF&(c>>16)]); + } else { + result.append(LOWER_U); + } + result.append(DIGITS[0xF&(c>>12)]); + result.append(DIGITS[0xF&(c>>8)]); + result.append(DIGITS[0xF&(c>>4)]); + result.append(DIGITS[0xF&c]); + return result; } /** @@ -169,7 +183,7 @@ int32_t ICU_Utility::skipWhitespace(const UnicodeString& str, int32_t& pos, //? if (!isForward) { //? --pos; // pos is a limit, so back up by one //? } -//? +//? //? while (pos != stop && //? PatternProps::isWhiteSpace(c = text.char32At(pos))) { //? if (isForward) { @@ -386,7 +400,7 @@ void ICU_Utility::appendToRule(UnicodeString& rule, quoteBuf.append(c); } } - + // Otherwise just append else { rule.append(c); diff --git a/deps/icu-small/source/common/util.h b/deps/icu-small/source/common/util.h index 74fdd75982cc5a..7e6d356899f924 100644 --- a/deps/icu-small/source/common/util.h +++ b/deps/icu-small/source/common/util.h @@ -55,20 +55,30 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s /** * Return true if the character is NOT printable ASCII. - * - * This method should really be in UnicodeString (or similar). For - * now, we implement it here and share it with friend classes. + * The tab, newline and linefeed characters are considered unprintable. */ static UBool isUnprintable(UChar32 c); /** - * Escape unprintable characters using \uxxxx notation for U+0000 to + * @return true for control codes and for surrogate and noncharacter code points + */ + static UBool shouldAlwaysBeEscaped(UChar32 c); + + /** + * Escapes one unprintable code point using \uxxxx notation for U+0000 to * U+FFFF and \Uxxxxxxxx for U+10000 and above. If the character is * printable ASCII, then do nothing and return false. Otherwise, * append the escaped notation and return true. */ static UBool escapeUnprintable(UnicodeString& result, UChar32 c); + /** + * Escapes one code point using \uxxxx notation + * for U+0000 to U+FFFF and \Uxxxxxxxx for U+10000 and above. + * @return result + */ + static UnicodeString &escape(UnicodeString& result, UChar32 c); + /** * Returns the index of a character, ignoring quoted text. * For example, in the string "abc'hide'h", the 'h' in "hide" will not be @@ -153,7 +163,7 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s */ static int32_t parsePattern(const UnicodeString& rule, int32_t pos, int32_t limit, const UnicodeString& pattern, int32_t* parsedInts); - + /** * Parse a pattern string within the given Replaceable and a parsing * pattern. Characters are matched literally and case-sensitively @@ -199,7 +209,7 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s * position. Return the identifier, or an empty string if there * is no identifier. * @param str the string to parse - * @param pos INPUT-OUPUT parameter. On INPUT, pos is the + * @param pos INPUT-OUTPUT parameter. On INPUT, pos is the * first character to examine. It must be less than str.length(), * and it must not point to a whitespace character. That is, must * have pos < str.length() and @@ -234,7 +244,7 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s UBool isLiteral, UBool escapeUnprintable, UnicodeString& quoteBuf); - + static void appendToRule(UnicodeString& rule, const UnicodeString& text, UBool isLiteral, diff --git a/deps/icu-small/source/common/util_props.cpp b/deps/icu-small/source/common/util_props.cpp index 36057a6066db94..d6ae052214cc13 100644 --- a/deps/icu-small/source/common/util_props.cpp +++ b/deps/icu-small/source/common/util_props.cpp @@ -135,7 +135,7 @@ int32_t ICU_Utility::parsePattern(const UnicodeString& rule, int32_t pos, int32_ * position. Return the identifier, or an empty string if there * is no identifier. * @param str the string to parse - * @param pos INPUT-OUPUT parameter. On INPUT, pos is the + * @param pos INPUT-OUTPUT parameter. On INPUT, pos is the * first character to examine. It must be less than str.length(), * and it must not point to a whitespace character. That is, must * have pos < str.length(). On @@ -214,3 +214,4 @@ int32_t ICU_Utility::parseNumber(const UnicodeString& text, } U_NAMESPACE_END + diff --git a/deps/icu-small/source/common/utrace.cpp b/deps/icu-small/source/common/utrace.cpp index 04488d06a0e233..dfd2062f31b6dc 100644 --- a/deps/icu-small/source/common/utrace.cpp +++ b/deps/icu-small/source/common/utrace.cpp @@ -67,7 +67,7 @@ utrace_exit(int32_t fnNumber, int32_t returnType, ...) { fmt = gExitFmtPtrStatus; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } va_start(args, returnType); @@ -75,14 +75,14 @@ utrace_exit(int32_t fnNumber, int32_t returnType, ...) { va_end(args); } } + - - -U_CAPI void U_EXPORT2 + +U_CAPI void U_EXPORT2 utrace_data(int32_t fnNumber, int32_t level, const char *fmt, ...) { if (pTraceDataFunc != NULL) { va_list args; - va_start(args, fmt ); + va_start(args, fmt ); (*pTraceDataFunc)(gTraceContext, fnNumber, level, fmt, args); va_end(args); } @@ -93,7 +93,7 @@ static void outputChar(char c, char *outBuf, int32_t *outIx, int32_t capacity, i int32_t i; /* Check whether a start of line indenting is needed. Three cases: * 1. At the start of the first line (output index == 0). - * 2. At the start of subsequent lines (preceeding char in buffer == '\n') + * 2. At the start of subsequent lines (preceding char in buffer == '\n') * 3. When preflighting buffer len (buffer capacity is exceeded), when * a \n is output. Ideally we wouldn't do the indent until the following char * is received, but that won't work because there's no place to remember that @@ -146,7 +146,7 @@ static void outputPtrBytes(void *val, char *outBuf, int32_t *outIx, int32_t capa p += sizeof(void *) - 1; #endif - /* Loop through the bytes of the ptr as it sits in memory, from + /* Loop through the bytes of the ptr as it sits in memory, from * most significant to least significant end */ for (i=0; i 0) { outputHexBytes(longArg, charsToOutput, outBuf, &outIx, capacity); @@ -369,13 +369,13 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt, default: /* %. in format string, where . is some character not in the set * of recognized format chars. Just output it as if % wasn't there. - * (Covers "%%" outputing a single '%') + * (Covers "%%" outputting a single '%') */ outputChar(fmtC, outBuf, &outIx, capacity, indent); } } - outputChar(0, outBuf, &outIx, capacity, indent); /* Make sure that output is null terminated */ - return outIx + 1; /* outIx + 1 because outIx does not increment when outputing final null. */ + outputChar(0, outBuf, &outIx, capacity, indent); /* Make sure that output is null terminated */ + return outIx + 1; /* outIx + 1 because outIx does not increment when outputting final null. */ } @@ -386,7 +386,7 @@ utrace_format(char *outBuf, int32_t capacity, int32_t indent, const char *fmt, ...) { int32_t retVal; va_list args; - va_start(args, fmt ); + va_start(args, fmt ); retVal = utrace_vformat(outBuf, capacity, indent, fmt, args); va_end(args); return retVal; @@ -429,7 +429,7 @@ utrace_getLevel() { } -U_CFUNC UBool +U_CFUNC UBool utrace_cleanup() { pTraceEntryFunc = NULL; pTraceExitFunc = NULL; @@ -461,7 +461,7 @@ trConvNames[] = { NULL }; - + static const char * const trCollNames[] = { "ucol_open", @@ -486,7 +486,7 @@ trResDataNames[] = { NULL }; - + U_CAPI const char * U_EXPORT2 utrace_functionName(int32_t fnNumber) { if(UTRACE_FUNCTION_START <= fnNumber && fnNumber < UTRACE_FUNCTION_LIMIT) { @@ -501,3 +501,4 @@ utrace_functionName(int32_t fnNumber) { return "[BOGUS Trace Function Number]"; } } + diff --git a/deps/icu-small/source/common/utracimp.h b/deps/icu-small/source/common/utracimp.h index 42e92749d65f02..945540d25af992 100644 --- a/deps/icu-small/source/common/utracimp.h +++ b/deps/icu-small/source/common/utracimp.h @@ -47,8 +47,8 @@ U_CDECL_BEGIN -/** - * Traced Function Exit return types. +/** + * Traced Function Exit return types. * Flags indicating the number and types of varargs included in a call * to a UTraceExit function. * Bits 0-3: The function return type. First variable param. @@ -117,15 +117,15 @@ U_CDECL_END #define UTRACE_LEVEL(level) (utrace_getLevel()>=(level)) /** - * Flag bit in utraceFnNumber, the local variable added to each function + * Flag bit in utraceFnNumber, the local variable added to each function * with tracing code to contains the function number. * * Set the flag if the function's entry is traced, which will cause the - * function's exit to also be traced. utraceFnNumber is uncoditionally + * function's exit to also be traced. utraceFnNumber is uncoditionally * set at entry, whether or not the entry is traced, so that it will * always be available for error trace output. * @internal - */ + */ #define UTRACE_TRACED_ENTRY 0x80000000 /** @@ -195,7 +195,7 @@ UPRV_BLOCK_MACRO_BEGIN { \ * * @param val The function's return value, int32_t or compatible type. * - * @internal + * @internal */ #define UTRACE_EXIT_VALUE(val) UPRV_BLOCK_MACRO_BEGIN { \ if(utraceFnNumber & UTRACE_TRACED_ENTRY) { \ diff --git a/deps/icu-small/source/common/uts46.cpp b/deps/icu-small/source/common/uts46.cpp index f25b4e12f124ca..6f9307033904a6 100644 --- a/deps/icu-small/source/common/uts46.cpp +++ b/deps/icu-small/source/common/uts46.cpp @@ -118,35 +118,35 @@ class UTS46 : public IDNA { virtual UnicodeString & labelToASCII(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual UnicodeString & labelToUnicode(const UnicodeString &label, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual UnicodeString & nameToASCII(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual UnicodeString & nameToUnicode(const UnicodeString &name, UnicodeString &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual void labelToASCII_UTF8(StringPiece label, ByteSink &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual void labelToUnicodeUTF8(StringPiece label, ByteSink &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual void nameToASCII_UTF8(StringPiece name, ByteSink &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; virtual void nameToUnicodeUTF8(StringPiece name, ByteSink &dest, - IDNAInfo &info, UErrorCode &errorCode) const; + IDNAInfo &info, UErrorCode &errorCode) const override; private: UnicodeString & diff --git a/deps/icu-small/source/common/uvector.cpp b/deps/icu-small/source/common/uvector.cpp index 39a92e07c01911..4da8b864e1be34 100644 --- a/deps/icu-small/source/common/uvector.cpp +++ b/deps/icu-small/source/common/uvector.cpp @@ -17,59 +17,34 @@ U_NAMESPACE_BEGIN -#define DEFAULT_CAPACITY 8 +constexpr int32_t DEFAULT_CAPACITY = 8; /* * Constants for hinting whether a key is an integer * or a pointer. If a hint bit is zero, then the associated * token is assumed to be an integer. This is needed for iSeries */ -#define HINT_KEY_POINTER (1) -#define HINT_KEY_INTEGER (0) - +constexpr int8_t HINT_KEY_POINTER = 1; +constexpr int8_t HINT_KEY_INTEGER = 0; + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UVector) UVector::UVector(UErrorCode &status) : - count(0), - capacity(0), - elements(0), - deleter(0), - comparer(0) -{ - _init(DEFAULT_CAPACITY, status); + UVector(nullptr, nullptr, DEFAULT_CAPACITY, status) { } UVector::UVector(int32_t initialCapacity, UErrorCode &status) : - count(0), - capacity(0), - elements(0), - deleter(0), - comparer(0) -{ - _init(initialCapacity, status); + UVector(nullptr, nullptr, initialCapacity, status) { } UVector::UVector(UObjectDeleter *d, UElementsAreEqual *c, UErrorCode &status) : - count(0), - capacity(0), - elements(0), - deleter(d), - comparer(c) -{ - _init(DEFAULT_CAPACITY, status); + UVector(d, c, DEFAULT_CAPACITY, status) { } UVector::UVector(UObjectDeleter *d, UElementsAreEqual *c, int32_t initialCapacity, UErrorCode &status) : - count(0), - capacity(0), - elements(0), deleter(d), comparer(c) { - _init(initialCapacity, status); -} - -void UVector::_init(int32_t initialCapacity, UErrorCode &status) { if (U_FAILURE(status)) { return; } @@ -78,7 +53,7 @@ void UVector::_init(int32_t initialCapacity, UErrorCode &status) { initialCapacity = DEFAULT_CAPACITY; } elements = (UElement *)uprv_malloc(sizeof(UElement)*initialCapacity); - if (elements == 0) { + if (elements == nullptr) { status = U_MEMORY_ALLOCATION_ERROR; } else { capacity = initialCapacity; @@ -88,7 +63,7 @@ void UVector::_init(int32_t initialCapacity, UErrorCode &status) { UVector::~UVector() { removeAllElements(); uprv_free(elements); - elements = 0; + elements = nullptr; } /** @@ -100,7 +75,7 @@ void UVector::assign(const UVector& other, UElementAssigner *assign, UErrorCode setSize(other.count, ec); if (U_SUCCESS(ec)) { for (int32_t i=0; iindex; --i) { - elements[i] = elements[i-1]; + if (ensureCapacity(count + 1, status)) { + if (0 <= index && index <= count) { + for (int32_t i=count; i>index; --i) { + elements[i] = elements[i-1]; + } + elements[index].pointer = obj; + ++count; + } else { + /* index out of range */ + status = U_ILLEGAL_ARGUMENT_ERROR; } - elements[index].pointer = obj; - ++count; } - /* else index out of range */ + if (U_FAILURE(status) && deleter != nullptr) { + (*deleter)(obj); + } } void UVector::insertElementAt(int32_t elem, int32_t index, UErrorCode &status) { + U_ASSERT(deleter == nullptr); // Usage error. Mixing up ints and pointers. // must have 0 <= index <= count - if (0 <= index && index <= count && ensureCapacity(count + 1, status)) { - for (int32_t i=count; i>index; --i) { - elements[i] = elements[i-1]; + if (ensureCapacity(count + 1, status)) { + if (0 <= index && index <= count) { + for (int32_t i=count; i>index; --i) { + elements[i] = elements[i-1]; + } + elements[index].pointer = nullptr; + elements[index].integer = elem; + ++count; + } else { + /* index out of range */ + status = U_ILLEGAL_ARGUMENT_ERROR; } - elements[index].pointer = NULL; - elements[index].integer = elem; - ++count; } - /* else index out of range */ } void* UVector::elementAt(int32_t index) const { @@ -237,7 +242,7 @@ UBool UVector::retainAll(const UVector& other) { void UVector::removeElementAt(int32_t index) { void* e = orphanElementAt(index); - if (e != 0 && deleter != 0) { + if (e != nullptr && deleter != nullptr) { (*deleter)(e); } } @@ -252,9 +257,9 @@ UBool UVector::removeElement(void* obj) { } void UVector::removeAllElements(void) { - if (deleter != 0) { + if (deleter != nullptr) { for (int32_t i=0; icount != other.count) { return FALSE; } - if (comparer == 0) { + if (comparer == nullptr) { for (i=0; i (INT32_MAX - 1) / 2) { // integer overflow check - status = U_ILLEGAL_ARGUMENT_ERROR; - return FALSE; + status = U_ILLEGAL_ARGUMENT_ERROR; + return FALSE; } int32_t newCap = capacity * 2; if (newCap < minimumCapacity) { newCap = minimumCapacity; } if (newCap > (int32_t)(INT32_MAX / sizeof(UElement))) { // integer overflow check - // We keep the original memory contents on bad minimumCapacity. - status = U_ILLEGAL_ARGUMENT_ERROR; - return FALSE; + // We keep the original memory contents on bad minimumCapacity. + status = U_ILLEGAL_ARGUMENT_ERROR; + return FALSE; } UElement* newElems = (UElement *)uprv_realloc(elements, sizeof(UElement)*newCap); - if (newElems == NULL) { + if (newElems == nullptr) { // We keep the original contents on the memory failure on realloc or bad minimumCapacity. status = U_MEMORY_ALLOCATION_ERROR; return FALSE; @@ -359,30 +362,60 @@ UBool UVector::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) { return TRUE; } + +UBool UVector::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) { + if (U_FAILURE(status)) { + return false; + } + if (minimumCapacity < 0) { + status = U_ILLEGAL_ARGUMENT_ERROR; + return false; + } + if (capacity < minimumCapacity) { + if (capacity > (INT32_MAX - 1) / 2) { // integer overflow check + status = U_ILLEGAL_ARGUMENT_ERROR; + return false; + } + int32_t newCap = capacity * 2; + if (newCap < minimumCapacity) { + newCap = minimumCapacity; + } + if (newCap > (int32_t)(INT32_MAX / sizeof(UElement))) { // integer overflow check + // We keep the original memory contents on bad minimumCapacity. + status = U_ILLEGAL_ARGUMENT_ERROR; + return false; + } + UElement* newElems = (UElement *)uprv_realloc(elements, sizeof(UElement)*newCap); + if (newElems == nullptr) { + // We keep the original contents on the memory failure on realloc or bad minimumCapacity. + status = U_MEMORY_ALLOCATION_ERROR; + return false; + } + elements = newElems; + capacity = newCap; + } + return true; +} /** * Change the size of this vector as follows: If newSize is smaller, * then truncate the array, possibly deleting held elements for i >= * newSize. If newSize is larger, grow the array, filling in new - * slots with NULL. + * slots with nullptr. */ void UVector::setSize(int32_t newSize, UErrorCode &status) { - int32_t i; - if (newSize < 0) { + if (!ensureCapacity(newSize, status)) { return; } if (newSize > count) { - if (!ensureCapacity(newSize, status)) { - return; - } UElement empty; - empty.pointer = NULL; + empty.pointer = nullptr; empty.integer = 0; - for (i=count; i=newSize; --i) { + for (int32_t i=count-1; i>=newSize; --i) { removeElementAt(i); } } @@ -422,7 +455,7 @@ UElementsAreEqual *UVector::setComparer(UElementsAreEqual *d) { * then 0 is returned and the vector is unchanged. */ void* UVector::orphanElementAt(int32_t index) { - void* e = 0; + void* e = nullptr; if (0 <= index && index < count) { e = elements[index].pointer; for (int32_t i=index; i 0) { max = probe; } else { @@ -474,13 +514,11 @@ void UVector::sortedInsert(UElement e, UElementComparator *compare, UErrorCode& min = probe + 1; } } - if (ensureCapacity(count + 1, ec)) { - for (int32_t i=count; i>min; --i) { - elements[i] = elements[i-1]; - } - elements[min] = e; - ++count; + for (int32_t i=count; i>min; --i) { + elements[i] = elements[i-1]; } + elements[min] = e; + ++count; } /** @@ -492,7 +530,7 @@ void UVector::sortedInsert(UElement e, UElementComparator *compare, UErrorCode& * * The context pointer to this function is a pointer back * (with some extra indirection) to the user supplied comparator. - * + * */ static int32_t U_CALLCONV sortComparator(const void *context, const void *left, const void *right) { @@ -526,7 +564,7 @@ sortiComparator(const void * /*context */, const void *left, const void *right) void UVector::sorti(UErrorCode &ec) { if (U_SUCCESS(ec)) { uprv_sortArray(elements, count, sizeof(UElement), - sortiComparator, NULL, FALSE, &ec); + sortiComparator, nullptr, FALSE, &ec); } } @@ -539,7 +577,7 @@ void UVector::sorti(UErrorCode &ec) { * required by uprv_sortArray(). This is handled by passing the * the UVector sort function pointer via the context pointer to a * sortArray() comparator function, which can then call back to - * the original user functtion. + * the original user function. * * An additional twist is that it's not safe to pass a pointer-to-function * as a (void *) data pointer, so instead we pass a (data) pointer to a @@ -564,3 +602,4 @@ void UVector::sortWithUComparator(UComparator *compare, const void *context, UEr } U_NAMESPACE_END + diff --git a/deps/icu-small/source/common/uvector.h b/deps/icu-small/source/common/uvector.h index 34f3434a974012..f61fcc2be60fb1 100644 --- a/deps/icu-small/source/common/uvector.h +++ b/deps/icu-small/source/common/uvector.h @@ -23,43 +23,44 @@ U_NAMESPACE_BEGIN /** - *

      Ultralightweight C++ implementation of a void* vector + * Ultralightweight C++ implementation of a `void*` vector * that is (mostly) compatible with java.util.Vector. * - *

      This is a very simple implementation, written to satisfy an + * This is a very simple implementation, written to satisfy an * immediate porting need. As such, it is not completely fleshed out, * and it aims for simplicity and conformity. Nonetheless, it serves * its purpose (porting code from java that uses java.util.Vector) * well, and it could be easily made into a more robust vector class. * - *

      Design notes + * *Design notes* * - *

      There is index bounds checking, but little is done about it. If + * There is index bounds checking, but little is done about it. If * indices are out of bounds, either nothing happens, or zero is - * returned. We do avoid indexing off into the weeds. + * returned. We *do* avoid indexing off into the weeds. * - *

      There is detection of out of memory, but the handling is very - * coarse-grained -- similar to UnicodeString's protocol, but even - * coarser. The class contains one static flag that is set - * when any call to new returns zero. This allows the caller - * to use several vectors and make just one check at the end to see if - * a memory failure occurred. This is more efficient than making a - * check after each call on each vector when doing many operations on - * multiple vectors. The single static flag works best when memory - * failures are infrequent, and when recovery options are limited or - * nonexistent. - * - *

      Since we don't have garbage collection, UVector was given the - * option to ownits contents. To employ this, set a deleter - * function. The deleter is called on a void* pointer when that + * Since we don't have garbage collection, UVector was given the + * option to *own* its contents. To employ this, set a deleter + * function. The deleter is called on a `void *` pointer when that * pointer is released by the vector, either when the vector itself is - * destructed, or when a call to setElementAt() overwrites an element, - * or when a call to remove() or one of its variants explicitly + * destructed, or when a call to `setElementAt()` overwrites an element, + * or when a call to remove()` or one of its variants explicitly * removes an element. If no deleter is set, or the deleter is set to * zero, then it is assumed that the caller will delete elements as * needed. * - *

      In order to implement methods such as contains() and indexOf(), + * *Error Handling* Functions that can fail, from out of memory conditions + * for example, include a UErrorCode parameter. Any function called + * with an error code already indicating a failure will not modify the + * vector in any way. + * + * For vectors that have a deleter function, any failure in inserting + * an element into the vector will instead delete the element that + * could not be adopted. This simplifies object ownership + * management around calls to `addElement()` and `insertElementAt()`; + * error or no, the function always takes ownership of an incoming object + * from the caller. + * + * In order to implement methods such as `contains()` and `indexOf()`, * UVector needs a way to compare objects for equality. To do so, it * uses a comparison function, or "comparer." If the comparer is not * set, or is set to zero, then all such methods will act as if the @@ -73,23 +74,21 @@ U_NAMESPACE_BEGIN * @author Alan Liu */ class U_COMMON_API UVector : public UObject { - // NOTE: UVector uses the UHashKey (union of void* and int32_t) as + // NOTE: UVector uses the UElement (union of void* and int32_t) as // its basic storage type. It uses UElementsAreEqual as its // comparison function. It uses UObjectDeleter as its deleter - // function. These are named for hashtables, but used here as-is - // rather than duplicating the type. This allows sharing of - // support functions. + // function. This allows sharing of support functions with UHashtable. private: - int32_t count; + int32_t count = 0; - int32_t capacity; + int32_t capacity = 0; - UElement* elements; + UElement* elements = nullptr; - UObjectDeleter *deleter; + UObjectDeleter *deleter = nullptr; - UElementsAreEqual *comparer; + UElementsAreEqual *comparer = nullptr; public: UVector(UErrorCode &status); @@ -113,18 +112,44 @@ class U_COMMON_API UVector : public UObject { * equal if they are of the same size and all elements are equal, * as compared using this object's comparer. */ - UBool operator==(const UVector& other); + bool operator==(const UVector& other) const; /** * Equivalent to !operator==() */ - inline UBool operator!=(const UVector& other); + inline bool operator!=(const UVector& other) const {return !operator==(other);} //------------------------------------------------------------ // java.util.Vector API //------------------------------------------------------------ - void addElement(void* obj, UErrorCode &status); + /* + * Old version of addElement, with non-standard error handling. + * Will be removed once all uses have been switched to the new addElement(). + */ + void addElementX(void* obj, UErrorCode &status); + + /** + * Add an element at the end of the vector. + * For use only with vectors that do not adopt their elements, which is to say, + * have not set an element deleter function. See `adoptElement()`. + */ + void addElement(void *obj, UErrorCode &status); + + /** + * Add an element at the end of the vector. + * For use only with vectors that adopt their elements, which is to say, + * have set an element deleter function. See `addElement()`. + * + * If the element cannot be successfully added, it will be deleted. This is + * normal ICU _adopt_ behavior - one way or another ownership of the incoming + * object is transferred from the caller. + * + * `addElement()` and `adoptElement()` are separate functions to make it easier + * to see what the function is doing at call sites. Having a single combined function, + * as in earlier versions of UVector, had proved to be error-prone. + */ + void adoptElement(void *obj, UErrorCode &status); void addElement(int32_t elem, UErrorCode &status); @@ -135,26 +160,26 @@ class U_COMMON_API UVector : public UObject { void insertElementAt(void* obj, int32_t index, UErrorCode &status); void insertElementAt(int32_t elem, int32_t index, UErrorCode &status); - + void* elementAt(int32_t index) const; int32_t elementAti(int32_t index) const; UBool equals(const UVector &other) const; - inline void* firstElement(void) const; + inline void* firstElement(void) const {return elementAt(0);} - inline void* lastElement(void) const; + inline void* lastElement(void) const {return elementAt(count-1);} - inline int32_t lastElementi(void) const; + inline int32_t lastElementi(void) const {return elementAti(count-1);} int32_t indexOf(void* obj, int32_t startIndex = 0) const; int32_t indexOf(int32_t obj, int32_t startIndex = 0) const; - inline UBool contains(void* obj) const; + inline UBool contains(void* obj) const {return indexOf(obj) >= 0;} - inline UBool contains(int32_t obj) const; + inline UBool contains(int32_t obj) const {return indexOf(obj) >= 0;} UBool containsAll(const UVector& other) const; @@ -168,9 +193,15 @@ class U_COMMON_API UVector : public UObject { void removeAllElements(); - inline int32_t size(void) const; + inline int32_t size(void) const {return count;} - inline UBool isEmpty(void) const; + inline UBool isEmpty(void) const {return count == 0;} + + /* + * Old version of ensureCapacity, with non-standard error handling. + * Will be removed once all uses have been switched to the new ensureCapacity(). + */ + UBool ensureCapacityX(int32_t minimumCapacity, UErrorCode &status); UBool ensureCapacity(int32_t minimumCapacity, UErrorCode &status); @@ -192,10 +223,11 @@ class U_COMMON_API UVector : public UObject { //------------------------------------------------------------ UObjectDeleter *setDeleter(UObjectDeleter *d); + bool hasDeleter() {return deleter != nullptr;} UElementsAreEqual *setComparer(UElementsAreEqual *c); - inline void* operator[](int32_t index) const; + inline void* operator[](int32_t index) const {return elementAt(index);} /** * Removes the element at the given index from this vector and @@ -260,36 +292,35 @@ class U_COMMON_API UVector : public UObject { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: - void _init(int32_t initialCapacity, UErrorCode &status); - int32_t indexOf(UElement key, int32_t startIndex = 0, int8_t hint = 0) const; void sortedInsert(UElement e, UElementComparator *compare, UErrorCode& ec); +public: // Disallow - UVector(const UVector&); + UVector(const UVector&) = delete; // Disallow - UVector& operator=(const UVector&); + UVector& operator=(const UVector&) = delete; }; /** - *

      Ultralightweight C++ implementation of a void* stack + * Ultralightweight C++ implementation of a `void*` stack * that is (mostly) compatible with java.util.Stack. As in java, this * is merely a paper thin layer around UVector. See the UVector * documentation for further information. * - *

      Design notes + * *Design notes* * - *

      The element at index n-1 is (of course) the top of the + * The element at index `n-1` is (of course) the top of the * stack. * - *

      The poorly named empty() method doesn't empty the + * The poorly named `empty()` method doesn't empty the * stack; it determines if the stack is empty. * * @author Alan Liu @@ -309,19 +340,35 @@ class U_COMMON_API UStack : public UVector { // It's okay not to have a virtual destructor (in UVector) // because UStack has no special cleanup to do. - inline UBool empty(void) const; - - inline void* peek(void) const; + inline UBool empty(void) const {return isEmpty();} - inline int32_t peeki(void) const; + inline void* peek(void) const {return lastElement();} + inline int32_t peeki(void) const {return lastElementi();} + + /** + * Pop and return an element from the stack. + * For stacks with a deleter function, the caller takes ownership + * of the popped element. + */ void* pop(void); - + int32_t popi(void); - - inline void* push(void* obj, UErrorCode &status); - - inline int32_t push(int32_t i, UErrorCode &status); + + inline void* push(void* obj, UErrorCode &status) { + if (hasDeleter()) { + adoptElement(obj, status); + return (U_SUCCESS(status)) ? obj : nullptr; + } else { + addElement(obj, status); + return obj; + } + } + + inline int32_t push(int32_t i, UErrorCode &status) { + addElement(i, status); + return i; + } /* If the object o occurs as an item in this stack, @@ -337,79 +384,15 @@ class U_COMMON_API UStack : public UVector { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; -private: // Disallow - UStack(const UStack&); + UStack(const UStack&) = delete; // Disallow - UStack& operator=(const UStack&); + UStack& operator=(const UStack&) = delete; }; - -// UVector inlines - -inline int32_t UVector::size(void) const { - return count; -} - -inline UBool UVector::isEmpty(void) const { - return count == 0; -} - -inline UBool UVector::contains(void* obj) const { - return indexOf(obj) >= 0; -} - -inline UBool UVector::contains(int32_t obj) const { - return indexOf(obj) >= 0; -} - -inline void* UVector::firstElement(void) const { - return elementAt(0); -} - -inline void* UVector::lastElement(void) const { - return elementAt(count-1); -} - -inline int32_t UVector::lastElementi(void) const { - return elementAti(count-1); -} - -inline void* UVector::operator[](int32_t index) const { - return elementAt(index); -} - -inline UBool UVector::operator!=(const UVector& other) { - return !operator==(other); -} - -// UStack inlines - -inline UBool UStack::empty(void) const { - return isEmpty(); -} - -inline void* UStack::peek(void) const { - return lastElement(); -} - -inline int32_t UStack::peeki(void) const { - return lastElementi(); -} - -inline void* UStack::push(void* obj, UErrorCode &status) { - addElement(obj, status); - return obj; -} - -inline int32_t UStack::push(int32_t i, UErrorCode &status) { - addElement(i, status); - return i; -} - U_NAMESPACE_END #endif diff --git a/deps/icu-small/source/common/uvectr32.cpp b/deps/icu-small/source/common/uvectr32.cpp index 6e0760d7184040..a77ecb689fdaad 100644 --- a/deps/icu-small/source/common/uvectr32.cpp +++ b/deps/icu-small/source/common/uvectr32.cpp @@ -23,7 +23,7 @@ U_NAMESPACE_BEGIN * or a pointer. If a hint bit is zero, then the associated * token is assumed to be an integer. This is needed for iSeries */ - + UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UVector32) UVector32::UVector32(UErrorCode &status) : @@ -83,15 +83,15 @@ void UVector32::assign(const UVector32& other, UErrorCode &ec) { } -UBool UVector32::operator==(const UVector32& other) { +bool UVector32::operator==(const UVector32& other) { int32_t i; - if (count != other.count) return FALSE; + if (count != other.count) return false; for (i=0; i(&hKeyAllTimeZones)); - + if (ret != ERROR_SUCCESS) { // If we can't open the key, then we can't do much, so fail. return nullptr; @@ -190,7 +190,7 @@ uprv_detectWindowsTimeZone() DWORD numTimeZoneSubKeys; ret = RegQueryInfoKeyW(hKeyAllTimeZones, nullptr, nullptr, nullptr, &numTimeZoneSubKeys, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); - + if (ret != ERROR_SUCCESS) { RegCloseKey(hKeyAllTimeZones); return nullptr; @@ -214,10 +214,10 @@ uprv_detectWindowsTimeZone() RegCloseKey(hKeyAllTimeZones); return nullptr; } - + ret = RegOpenKeyExW(hKeyAllTimeZones, timezoneSubKeyName, 0, KEY_READ, reinterpret_cast(&hKeyTimeZoneSubKey)); - + if (ret != ERROR_SUCCESS) { RegCloseKey(hKeyAllTimeZones); return nullptr; @@ -227,7 +227,7 @@ uprv_detectWindowsTimeZone() size = sizeof(registryStandardName); ret = RegQueryValueExW(hKeyTimeZoneSubKey, L"Std", nullptr, ®istryValueType, reinterpret_cast(registryStandardName), &size); - + if (ret != ERROR_SUCCESS || registryValueType != REG_SZ) { RegCloseKey(hKeyTimeZoneSubKey); RegCloseKey(hKeyAllTimeZones); @@ -285,7 +285,7 @@ uprv_detectWindowsTimeZone() if (U_FAILURE(status)) { return nullptr; } - + // Note: Since the ISO 3166 country/region codes are all invariant ASCII chars, we can // directly downcast from wchar_t to do the conversion. // We could call the A version of the GetGeoInfo API, but that would be slightly slower than calling the W API, diff --git a/deps/icu-small/source/common/wintz.h b/deps/icu-small/source/common/wintz.h index b1ac8c07903738..ce9c1e901928d7 100644 --- a/deps/icu-small/source/common/wintz.h +++ b/deps/icu-small/source/common/wintz.h @@ -19,7 +19,7 @@ #if U_PLATFORM_USES_ONLY_WIN32_API /** - * \file + * \file * \brief C API: Utilities for dealing w/ Windows time zones. */ diff --git a/deps/icu-small/source/data/in/icudt69l.dat.bz2 b/deps/icu-small/source/data/in/icudt70l.dat.bz2 similarity index 55% rename from deps/icu-small/source/data/in/icudt69l.dat.bz2 rename to deps/icu-small/source/data/in/icudt70l.dat.bz2 index 752a98acd8237d98bc7b5847e10f986503baaf43..248787a1eafed0270073245582565b2f02a9e091 100644 GIT binary patch literal 10455040 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

      x0@=_Agd^4cjpbH?;9+gY>TItwXpB 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⁡G2? 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%0D3CcK{S<%@qc9VXC^%DEdRmA(OHcG}Gs{^g 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�QqXce{NC@X!t19CPi%>* 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 z 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%0D`1yi369I$N6z+RH>X!(kBo>{3D2+Jl*;d_#SL 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%0DR9$UM2KQd;uo=;e3GIO>g)t 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͎GuI`E*eqHvqv>kL~nC_TZU;!Wu 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%0D8p)53xV&KC1^^CmrX^ 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%0D^3R+*deWH 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 tR1U1Q-Io2n6M|UTK67SLm<$Fh63S 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≪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
      9v4lGy$ub($E=!&@Gh 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%0ALc<(l8ue}!yY%yy|RmtcH3qd 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


      5+E{Ua~t30NN}{e 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

      eNM;+XU8oHIwKVOiUeUwSc4QWA*@ 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%0ANa83Ra5c#GD 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

    2. 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ℜ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�JFu$f;T**=Y43)T-EZM58A}(C>v6bK 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

      JQR;IWqU$jMCf_3r)j@OxWd*TJ=WU5man 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%0Ar^MqY@=?`EG|AMyGV<;t-kIQCol1OBNYjZW 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 z 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 - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -282,7 +282,7 @@ class U_I18N_API IndianCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: IndianCalendar(); // default constructor not implemented @@ -299,30 +299,33 @@ class U_I18N_API IndianCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Indian Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/inputext.cpp b/deps/icu-small/source/i18n/inputext.cpp index 96e59b24d878ff..fa4939e8f4f1ae 100644 --- a/deps/icu-small/source/i18n/inputext.cpp +++ b/deps/icu-small/source/i18n/inputext.cpp @@ -68,7 +68,7 @@ void InputText::setDeclaredEncoding(const char* encoding, int32_t len) } } -UBool InputText::isSet() const +UBool InputText::isSet() const { return fRawInput != NULL; } @@ -76,7 +76,7 @@ UBool InputText::isSet() const /** * MungeInput - after getting a set of raw input data to be analyzed, preprocess * it by removing what appears to be html markup. -* +* * @internal */ void InputText::MungeInput(UBool fStripTags) { @@ -124,7 +124,7 @@ void InputText::MungeInput(UBool fStripTags) { // essentially nothing but markup abandon the markup stripping. // Detection will have to work on the unstripped input. // - if (openTags<5 || openTags/5 < badTags || + if (openTags<5 || openTags/5 < badTags || (fInputLen < 100 && fRawLength>600)) { int32_t limit = fRawLength; @@ -141,7 +141,7 @@ void InputText::MungeInput(UBool fStripTags) { } // - // Tally up the byte occurence statistics. + // Tally up the byte occurrence statistics. // These are available for use by the various detectors. // @@ -161,3 +161,4 @@ void InputText::MungeInput(UBool fStripTags) { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/inputext.h b/deps/icu-small/source/i18n/inputext.h index 06ad627c622d47..fb92dc06343afa 100644 --- a/deps/icu-small/source/i18n/inputext.h +++ b/deps/icu-small/source/i18n/inputext.h @@ -23,7 +23,7 @@ #if !UCONFIG_NO_CONVERSION -U_NAMESPACE_BEGIN +U_NAMESPACE_BEGIN class InputText : public UMemory { @@ -35,7 +35,7 @@ class InputText : public UMemory void setText(const char *in, int32_t len); void setDeclaredEncoding(const char *encoding, int32_t len); - UBool isSet() const; + UBool isSet() const; void MungeInput(UBool fStripTags); // The text to be checked. Markup will have been @@ -44,14 +44,14 @@ class InputText : public UMemory int32_t fInputLen; // Length of the byte data in fInputBytes. // byte frequency statistics for the input text. // Value is percent, not absolute. - // Value is rounded up, so zero really means zero occurences. + // Value is rounded up, so zero really means zero occurrences. int16_t *fByteStats; UBool fC1Bytes; // True if any bytes in the range 0x80 - 0x9F are in the input;false by default char *fDeclaredEncoding; const uint8_t *fRawInput; // Original, untouched input bytes. // If user gave us a byte array, this is it. - // If user gave us a stream, it's read to a + // If user gave us a stream, it's read to a // buffer here. int32_t fRawLength; // Length of data in fRawInput array. diff --git a/deps/icu-small/source/i18n/islamcal.cpp b/deps/icu-small/source/i18n/islamcal.cpp index 6e21e51150ab88..de37e6b9398613 100644 --- a/deps/icu-small/source/i18n/islamcal.cpp +++ b/deps/icu-small/source/i18n/islamcal.cpp @@ -222,7 +222,7 @@ const char *IslamicCalendar::getType() const { sType = "islamic-umalqura"; break; default: - UPRV_UNREACHABLE; // out of range + UPRV_UNREACHABLE_EXIT; // out of range } return sType; } @@ -366,7 +366,7 @@ UBool IslamicCalendar::civilLeapYear(int32_t year) */ int32_t IslamicCalendar::yearStart(int32_t year) const{ if (cType == CIVIL || cType == TBLA || - (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) + (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END))) { return (year-1)*354 + ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30); } else if(cType==ASTRONOMICAL){ @@ -418,7 +418,7 @@ int32_t IslamicCalendar::trueMonthStart(int32_t month) const if (start==0) { // Make a guess at when the month started, using the average length - UDate origin = HIJRA_MILLIS + UDate origin = HIJRA_MILLIS + uprv_floor(month * CalendarAstronomer::SYNODIC_MONTH) * kOneDay; // moonAge will fail due to memory allocation error @@ -461,7 +461,7 @@ trueMonthStartEnd : /** * Return the "age" of the moon at the given time; this is the difference * in ecliptic latitude between the moon and the sun. This method simply -* calls CalendarAstronomer.moonAge, converts to degrees, +* calls CalendarAstronomer.moonAge, converts to degrees, * and adjusts the result to be in the range [-180, 180]. * * @param time The time at which the moon's age is desired, @@ -568,7 +568,7 @@ int32_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U month = (month % 12) + 11; } return monthStart(eyear, month) + ((cType == TBLA)? ASTRONOMICAL_EPOC: CIVIL_EPOC) - 1; -} +} //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -597,7 +597,7 @@ int32_t IslamicCalendar::handleGetExtendedYear() { *
    3. DAY_OF_MONTH *
    4. DAY_OF_YEAR *
    5. EXTENDED_YEAR -* +* * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. @@ -654,14 +654,14 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) }else{ int y =UMALQURA_YEAR_START-1, m =0; long d = 1; - while(d > 0){ - y++; + while(d > 0){ + y++; d = days - yearStart(y) +1; if(d == handleGetYearLength(y)){ m=11; break; }else if(d < handleGetYearLength(y) ){ - int monthLen = handleGetMonthLength(y, m); + int monthLen = handleGetMonthLength(y, m); m=0; while(d > monthLen){ d -= monthLen; @@ -675,7 +675,7 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) month = m; } } else { // invalid 'civil' - UPRV_UNREACHABLE; // should not get here, out of range + UPRV_UNREACHABLE_EXIT; // should not get here, out of range } dayOfMonth = (days - monthStart(year, month)) + 1; @@ -689,14 +689,14 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) internalSet(UCAL_EXTENDED_YEAR, year); internalSet(UCAL_MONTH, month); internalSet(UCAL_DAY_OF_MONTH, dayOfMonth); - internalSet(UCAL_DAY_OF_YEAR, dayOfYear); -} + internalSet(UCAL_DAY_OF_YEAR, dayOfYear); +} UBool IslamicCalendar::inDaylightTime(UErrorCode& status) const { // copied from GregorianCalendar - if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) + if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) return FALSE; // Force an update of the state of the Calendar. @@ -707,7 +707,7 @@ IslamicCalendar::inDaylightTime(UErrorCode& status) const /** * The system maintains a static default century start date and Year. They are - * initialized the first time they are used. Once the system default century date + * initialized the first time they are used. Once the system default century date * and year are set, they do not change. */ static UDate gSystemDefaultCenturyStart = DBL_MIN; @@ -761,3 +761,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicCalendar) U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/islamcal.h b/deps/icu-small/source/i18n/islamcal.h index e12e04a6b9c8b4..a29b7daa086f44 100644 --- a/deps/icu-small/source/i18n/islamcal.h +++ b/deps/icu-small/source/i18n/islamcal.h @@ -32,7 +32,7 @@ U_NAMESPACE_BEGIN * is used as the civil calendar in most of the Arab world and the * liturgical calendar of the Islamic faith worldwide. This calendar * is also known as the "Hijri" calendar, since it starts at the time - * of Mohammed's emigration (or "hijra") to Medinah on Thursday, + * of Mohammed's emigration (or "hijra") to Medinah on Thursday, * July 15, 622 AD (Julian). *

      * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve @@ -88,10 +88,10 @@ class U_I18N_API IslamicCalendar : public Calendar { //------------------------------------------------------------------------- // Constants... //------------------------------------------------------------------------- - + /** * Calendar type - civil or religious or um alqura - * @internal + * @internal */ enum ECalculationType { ASTRONOMICAL, @@ -99,86 +99,86 @@ class U_I18N_API IslamicCalendar : public Calendar { UMALQURA, TBLA }; - + /** * Constants for the months * @internal */ enum EMonths { /** - * Constant for Muharram, the 1st month of the Islamic year. + * Constant for Muharram, the 1st month of the Islamic year. * @internal */ MUHARRAM = 0, /** - * Constant for Safar, the 2nd month of the Islamic year. + * Constant for Safar, the 2nd month of the Islamic year. * @internal */ SAFAR = 1, /** - * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. - * @internal + * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. + * @internal */ RABI_1 = 2, /** - * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. - * @internal + * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. + * @internal */ RABI_2 = 3, /** - * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. - * @internal + * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. + * @internal */ JUMADA_1 = 4, /** - * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. - * @internal + * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. + * @internal */ JUMADA_2 = 5, /** - * Constant for Rajab, the 7th month of the Islamic year. - * @internal + * Constant for Rajab, the 7th month of the Islamic year. + * @internal */ RAJAB = 6, /** - * Constant for Sha'ban, the 8th month of the Islamic year. - * @internal + * Constant for Sha'ban, the 8th month of the Islamic year. + * @internal */ SHABAN = 7, /** - * Constant for Ramadan, the 9th month of the Islamic year. - * @internal + * Constant for Ramadan, the 9th month of the Islamic year. + * @internal */ RAMADAN = 8, /** - * Constant for Shawwal, the 10th month of the Islamic year. - * @internal + * Constant for Shawwal, the 10th month of the Islamic year. + * @internal */ SHAWWAL = 9, /** - * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. - * @internal + * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. + * @internal */ DHU_AL_QIDAH = 10, /** - * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. - * @internal + * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. + * @internal */ DHU_AL_HIJJAH = 11, - + ISLAMIC_MONTH_MAX - }; + }; //------------------------------------------------------------------------- @@ -217,7 +217,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @internal */ void setCalculationType(ECalculationType type, UErrorCode &status); - + /** * Returns true if this object is using the fixed-cycle civil * calendar, or false if using the religious, astronomical @@ -230,14 +230,14 @@ class U_I18N_API IslamicCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual IslamicCalendar* clone() const; + virtual IslamicCalendar* clone() const override; private: /** * Determine whether a year is a leap year in the Islamic civil calendar */ static UBool civilLeapYear(int32_t year); - + /** * Return the day # on which the given year starts. Days are counted * from the Hijri epoch, origin 0. @@ -252,7 +252,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @param year The hijri month, 0-based */ int32_t monthStart(int32_t year, int32_t month) const; - + /** * Find the day number on which a particular month of the true/lunar * Islamic calendar starts. @@ -266,7 +266,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * Return the "age" of the moon at the given time; this is the difference * in ecliptic latitude between the moon and the sun. This method simply - * calls CalendarAstronomer.moonAge, converts to degrees, + * calls CalendarAstronomer.moonAge, converts to degrees, * and adjusts the resultto be in the range [-180, 180]. * * @param time The time at which the moon's age is desired, @@ -277,7 +277,7 @@ class U_I18N_API IslamicCalendar : public Calendar { //------------------------------------------------------------------------- // Internal data.... // - + /** * CIVIL if this object uses the fixed-cycle Islamic civil calendar, * and ASTRONOMICAL if it approximates the true religious calendar using @@ -292,8 +292,8 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; - + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; + /** * Return the length (in days) of the given month. * @@ -301,14 +301,14 @@ class U_I18N_API IslamicCalendar : public Calendar { * @param year The hijri month, 0-based * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; - + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; + /** * Return the number of days in the given Islamic year * @internal */ - virtual int32_t handleGetYearLength(int32_t extendedYear) const; - + virtual int32_t handleGetYearLength(int32_t extendedYear) const override; + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -317,7 +317,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; + virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override; //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -326,7 +326,7 @@ class U_I18N_API IslamicCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Override Calendar to compute several fields specific to the Islamic @@ -338,22 +338,22 @@ class U_I18N_API IslamicCalendar : public Calendar { *

    6. DAY_OF_MONTH *
    7. DAY_OF_YEAR *
    8. EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -374,7 +374,7 @@ class U_I18N_API IslamicCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: IslamicCalendar(); // default constructor not implemented @@ -391,27 +391,27 @@ class U_I18N_API IslamicCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Islamic Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; private: /** @@ -426,3 +426,6 @@ U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/japancal.cpp b/deps/icu-small/source/i18n/japancal.cpp index e7e5f4fc5174f6..75a248f406ffe1 100644 --- a/deps/icu-small/source/i18n/japancal.cpp +++ b/deps/icu-small/source/i18n/japancal.cpp @@ -146,7 +146,7 @@ const char *JapaneseCalendar::getType() const return "japanese"; } -int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) +int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) { int32_t era = internalGetEra(); // TODO do we assume we can trust 'era'? What if it is denormalized? @@ -167,7 +167,7 @@ int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) return month; } -int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month) +int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month) { int32_t era = internalGetEra(); int32_t day = 1; @@ -226,7 +226,7 @@ void JapaneseCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status } /* -Disable pivoting +Disable pivoting */ UBool JapaneseCalendar::haveDefaultCentury() const { diff --git a/deps/icu-small/source/i18n/japancal.h b/deps/icu-small/source/i18n/japancal.h index d313fcd99ab508..88513440528b04 100644 --- a/deps/icu-small/source/i18n/japancal.h +++ b/deps/icu-small/source/i18n/japancal.h @@ -43,7 +43,7 @@ U_NAMESPACE_BEGIN * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest * of the year was in the Heisei era, e.g. "January 7, 1 Heisei". This class * handles this distinction correctly when computing dates. However, in lenient - * mode either form of date is acceptable as input. + * mode either form of date is acceptable as input. *

      * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji), * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei). Constants @@ -67,7 +67,7 @@ class JapaneseCalendar : public GregorianCalendar { public: /** - * Check environment variable. + * Check environment variable. * @internal */ U_I18N_API static UBool U_EXPORT2 enableTentativeEra(void); @@ -116,20 +116,20 @@ class JapaneseCalendar : public GregorianCalendar { * @return return a polymorphic copy of this calendar. * @internal */ - virtual JapaneseCalendar* clone() const; + virtual JapaneseCalendar* clone() const override; /** - * Return the extended year defined by the current fields. In the + * Return the extended year defined by the current fields. In the * Japanese calendar case, this is equal to the equivalent extended Gregorian year. * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Return the maximum value that this field could have, given the current date. * @internal */ - virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const; + virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override; public: @@ -143,7 +143,7 @@ class JapaneseCalendar : public GregorianCalendar { * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -164,55 +164,55 @@ class JapaneseCalendar : public GregorianCalendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; /** * @return false - no default century in Japanese - * @internal + * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Not used - no default century. * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Not used - no default century. * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; private: JapaneseCalendar(); // default constructor not implemented protected: - /** + /** * Calculate the era for internal computation * @internal */ - virtual int32_t internalGetEra() const; + virtual int32_t internalGetEra() const override; /** * Compute fields from the JD * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode& status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode& status) override; /** * Calculate the limit for a specified type of limit and field * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /*** * Called by computeJulianDay. Returns the default month (0-based) for the year, - * taking year and era into account. Will return the first month of the given era, if + * taking year and era into account. Will return the first month of the given era, if * the current year is an ascension year. * @param eyear the extended year * @internal */ - virtual int32_t getDefaultMonthInYear(int32_t eyear); + virtual int32_t getDefaultMonthInYear(int32_t eyear) override; /*** * Called by computeJulianDay. Returns the default day (1-based) for the month, @@ -222,7 +222,7 @@ class JapaneseCalendar : public GregorianCalendar { * @param mon the month in the year * @internal */ - virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month); + virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month) override; }; U_NAMESPACE_END @@ -231,3 +231,4 @@ U_NAMESPACE_END #endif //eof + diff --git a/deps/icu-small/source/i18n/listformatter.cpp b/deps/icu-small/source/i18n/listformatter.cpp index e5c01c0ab32c2b..4142fa461dada8 100644 --- a/deps/icu-small/source/i18n/listformatter.cpp +++ b/deps/icu-small/source/i18n/listformatter.cpp @@ -444,7 +444,7 @@ struct ListFormatter::ListPatternsSink : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { aliasedStyle[0] = 0; if (value.getType() == URES_ALIAS) { setAliasedStyle(value.getAliasUnicodeString(errorCode)); diff --git a/deps/icu-small/source/i18n/measfmt.cpp b/deps/icu-small/source/i18n/measfmt.cpp index 6334c6f9fdf235..a9a56a3b58d9f8 100644 --- a/deps/icu-small/source/i18n/measfmt.cpp +++ b/deps/icu-small/source/i18n/measfmt.cpp @@ -364,7 +364,7 @@ MeasureFormat::MeasureFormat( const Locale &locale, UMeasureFormatWidth w, NumberFormat *nfToAdopt, - UErrorCode &status) + UErrorCode &status) : cache(NULL), numberFormat(NULL), pluralRules(NULL), @@ -427,12 +427,12 @@ MeasureFormat::~MeasureFormat() { delete listFormatter; } -UBool MeasureFormat::operator==(const Format &other) const { +bool MeasureFormat::operator==(const Format &other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const MeasureFormat &rhs = static_cast(other); @@ -441,7 +441,7 @@ UBool MeasureFormat::operator==(const Format &other) const { // differing widths aren't equivalent if (fWidth != rhs.fWidth) { - return FALSE; + return false; } // Width the same check locales. // We don't need to check locales if both objects have same cache. @@ -451,10 +451,10 @@ UBool MeasureFormat::operator==(const Format &other) const { const char *rhsLocaleId = rhs.getLocaleID(status); if (U_FAILURE(status)) { // On failure, assume not equal - return FALSE; + return false; } if (uprv_strcmp(localeId, rhsLocaleId) != 0) { - return FALSE; + return false; } } // Locales same, check NumberFormat if shared data differs. @@ -649,7 +649,7 @@ UBool MeasureFormat::setMeasureFormatLocale(const Locale &locale, UErrorCode &st } initMeasureFormat(locale, fWidth, NULL, status); return U_SUCCESS(status); -} +} const NumberFormat &MeasureFormat::getNumberFormatInternal() const { return **numberFormat; diff --git a/deps/icu-small/source/i18n/measunit.cpp b/deps/icu-small/source/i18n/measunit.cpp index f57495e65a1b64..5ad3991974d59e 100644 --- a/deps/icu-small/source/i18n/measunit.cpp +++ b/deps/icu-small/source/i18n/measunit.cpp @@ -31,7 +31,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit) // the "End generated code" comment is auto generated code // and must not be edited manually. For instructions on how to correctly // update this code, refer to: -// http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit +// https://icu.unicode.org/design/formatting/measureformat/updating-measure-unit // // Start generated code for measunit.cpp @@ -41,26 +41,26 @@ static const int32_t gOffsets[] = { 2, 7, 17, - 26, - 30, - 329, - 340, - 356, - 360, - 369, - 371, - 375, - 383, - 405, - 409, - 424, - 425, - 431, - 441, - 445, - 449, + 27, + 31, + 330, + 341, + 357, + 361, + 370, + 373, + 377, + 385, + 407, + 411, + 426, + 427, + 433, + 443, + 447, 451, - 485 + 453, + 487 }; static const int32_t kCurrencyOffset = 5; @@ -111,6 +111,7 @@ static const char * const gSubTypes[] = { "square-meter", "square-mile", "square-yard", + "item", "karat", "milligram-ofglucose-per-deciliter", "milligram-per-deciliter", @@ -463,6 +464,7 @@ static const char * const gSubTypes[] = { "kilojoule", "kilowatt-hour", "therm-us", + "kilowatt-hour-per-100-kilometer", "newton", "pound-force", "gigahertz", @@ -721,78 +723,86 @@ MeasureUnit MeasureUnit::getSquareYard() { return MeasureUnit(2, 9); } -MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { +MeasureUnit *MeasureUnit::createItem(UErrorCode &status) { return MeasureUnit::create(3, 0, status); } -MeasureUnit MeasureUnit::getKarat() { +MeasureUnit MeasureUnit::getItem() { return MeasureUnit(3, 0); } -MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { return MeasureUnit::create(3, 1, status); } -MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() { +MeasureUnit MeasureUnit::getKarat() { return MeasureUnit(3, 1); } -MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode &status) { return MeasureUnit::create(3, 2, status); } -MeasureUnit MeasureUnit::getMilligramPerDeciliter() { +MeasureUnit MeasureUnit::getMilligramOfglucosePerDeciliter() { return MeasureUnit(3, 2); } -MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMilligramPerDeciliter(UErrorCode &status) { return MeasureUnit::create(3, 3, status); } -MeasureUnit MeasureUnit::getMillimolePerLiter() { +MeasureUnit MeasureUnit::getMilligramPerDeciliter() { return MeasureUnit(3, 3); } -MeasureUnit *MeasureUnit::createMole(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMillimolePerLiter(UErrorCode &status) { return MeasureUnit::create(3, 4, status); } -MeasureUnit MeasureUnit::getMole() { +MeasureUnit MeasureUnit::getMillimolePerLiter() { return MeasureUnit(3, 4); } -MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) { +MeasureUnit *MeasureUnit::createMole(UErrorCode &status) { return MeasureUnit::create(3, 5, status); } -MeasureUnit MeasureUnit::getPercent() { +MeasureUnit MeasureUnit::getMole() { return MeasureUnit(3, 5); } -MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPercent(UErrorCode &status) { return MeasureUnit::create(3, 6, status); } -MeasureUnit MeasureUnit::getPermille() { +MeasureUnit MeasureUnit::getPercent() { return MeasureUnit(3, 6); } -MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPermille(UErrorCode &status) { return MeasureUnit::create(3, 7, status); } -MeasureUnit MeasureUnit::getPartPerMillion() { +MeasureUnit MeasureUnit::getPermille() { return MeasureUnit(3, 7); } -MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) { +MeasureUnit *MeasureUnit::createPartPerMillion(UErrorCode &status) { return MeasureUnit::create(3, 8, status); } -MeasureUnit MeasureUnit::getPermyriad() { +MeasureUnit MeasureUnit::getPartPerMillion() { return MeasureUnit(3, 8); } +MeasureUnit *MeasureUnit::createPermyriad(UErrorCode &status) { + return MeasureUnit::create(3, 9, status); +} + +MeasureUnit MeasureUnit::getPermyriad() { + return MeasureUnit(3, 9); +} + MeasureUnit *MeasureUnit::createLiterPer100Kilometers(UErrorCode &status) { return MeasureUnit::create(4, 0, status); } @@ -1145,22 +1155,30 @@ MeasureUnit MeasureUnit::getThermUs() { return MeasureUnit(9, 8); } -MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) { +MeasureUnit *MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode &status) { return MeasureUnit::create(10, 0, status); } -MeasureUnit MeasureUnit::getNewton() { +MeasureUnit MeasureUnit::getKilowattHourPer100Kilometer() { return MeasureUnit(10, 0); } -MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) { +MeasureUnit *MeasureUnit::createNewton(UErrorCode &status) { return MeasureUnit::create(10, 1, status); } -MeasureUnit MeasureUnit::getPoundForce() { +MeasureUnit MeasureUnit::getNewton() { return MeasureUnit(10, 1); } +MeasureUnit *MeasureUnit::createPoundForce(UErrorCode &status) { + return MeasureUnit::create(10, 2, status); +} + +MeasureUnit MeasureUnit::getPoundForce() { + return MeasureUnit(10, 2); +} + MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) { return MeasureUnit::create(11, 0, status); } @@ -2178,12 +2196,12 @@ const char *MeasureUnit::getIdentifier() const { return fImpl ? fImpl->identifier.data() : gSubTypes[getOffset()]; } -UBool MeasureUnit::operator==(const UObject& other) const { +bool MeasureUnit::operator==(const UObject& other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (typeid(*this) != typeid(other)) { // Different types, not equal - return FALSE; + return false; } const MeasureUnit &rhs = static_cast(other); return uprv_strcmp(getIdentifier(), rhs.getIdentifier()) == 0; diff --git a/deps/icu-small/source/i18n/measunit_extra.cpp b/deps/icu-small/source/i18n/measunit_extra.cpp index 76ada0e89cd668..8281119007949a 100644 --- a/deps/icu-small/source/i18n/measunit_extra.cpp +++ b/deps/icu-small/source/i18n/measunit_extra.cpp @@ -24,7 +24,6 @@ #include "unicode/bytestrie.h" #include "unicode/bytestriebuilder.h" #include "unicode/localpointer.h" -#include "unicode/measunit.h" #include "unicode/stringpiece.h" #include "unicode/stringtriebuilder.h" #include "unicode/ures.h" @@ -187,7 +186,7 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink { * @param noFallback Ignored. * @param status The standard ICU error code output parameter. */ - void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { ResourceTable table = value.getTable(status); if (U_FAILURE(status)) return; @@ -275,7 +274,7 @@ class CategoriesSink : public icu::ResourceSink { explicit CategoriesSink(const UChar **out, int32_t &outSize, BytesTrieBuilder &trieBuilder) : outQuantitiesArray(out), outSize(outSize), trieBuilder(trieBuilder), outIndex(0) {} - void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { ResourceArray array = value.getArray(status); if (U_FAILURE(status)) { return; @@ -335,9 +334,6 @@ char *gSerializedUnitExtrasStemTrie = nullptr; const UChar **gCategories = nullptr; // Number of items in `gCategories`. int32_t gCategoriesCount = 0; -// TODO: rather save an index into gCategories? -const char *kConsumption = "consumption"; -size_t kConsumptionLen = strlen("consumption"); // Serialized BytesTrie for mapping from base units to indices into gCategories. char *gSerializedUnitCategoriesTrie = nullptr; @@ -809,17 +805,13 @@ compareSingleUnits(const void* /*context*/, const void* left, const void* right) // Returns an index into the gCategories array, for the "unitQuantity" (aka // "type" or "category") associated with the given base unit identifier. Returns // -1 on failure, together with U_UNSUPPORTED_ERROR. -int32_t getUnitCategoryIndex(StringPiece baseUnitIdentifier, UErrorCode &status) { - umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status); - if (U_FAILURE(status)) { - return -1; - } - BytesTrie trie(gSerializedUnitCategoriesTrie); - UStringTrieResult result = trie.next(baseUnitIdentifier.data(), baseUnitIdentifier.length()); +int32_t getUnitCategoryIndex(BytesTrie &trie, StringPiece baseUnitIdentifier, UErrorCode &status) { + UStringTrieResult result = trie.reset().next(baseUnitIdentifier.data(), baseUnitIdentifier.length()); if (!USTRINGTRIE_HAS_VALUE(result)) { status = U_UNSUPPORTED_ERROR; return -1; } + return trie.getValue(); } @@ -847,29 +839,76 @@ umeas_getPrefixBase(UMeasurePrefix unitPrefix) { return 10; } -CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status) { +CharString U_I18N_API getUnitQuantity(const MeasureUnitImpl &baseMeasureUnitImpl, UErrorCode &status) { CharString result; - U_ASSERT(result.length() == 0); + MeasureUnitImpl baseUnitImpl = baseMeasureUnitImpl.copy(status); + UErrorCode localStatus = U_ZERO_ERROR; + umtx_initOnce(gUnitExtrasInitOnce, &initUnitExtras, status); if (U_FAILURE(status)) { return result; } - UErrorCode localStatus = U_ZERO_ERROR; - int32_t idx = getUnitCategoryIndex(baseUnitIdentifier, localStatus); + BytesTrie trie(gSerializedUnitCategoriesTrie); + + baseUnitImpl.serialize(status); + StringPiece identifier = baseUnitImpl.identifier.data(); + int32_t idx = getUnitCategoryIndex(trie, identifier, localStatus); + if (U_FAILURE(status)) { + return result; + } + + // In case the base unit identifier did not match any entry. if (U_FAILURE(localStatus)) { - // TODO(icu-units#130): support inverting any unit, with correct - // fallback logic: inversion and fallback may depend on presence or - // absence of a usage for that category. - if (uprv_strcmp(baseUnitIdentifier.data(), "meter-per-cubic-meter") == 0) { - result.append(kConsumption, (int32_t)kConsumptionLen, status); + localStatus = U_ZERO_ERROR; + baseUnitImpl.takeReciprocal(status); + baseUnitImpl.serialize(status); + identifier.set(baseUnitImpl.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { return result; } + } + + // In case the reciprocal of the base unit identifier did not match any entry. + MeasureUnitImpl simplifiedUnit = baseMeasureUnitImpl.copyAndSimplify(status); + if (U_FAILURE(status)) { + return result; + } + if (U_FAILURE(localStatus)) { + localStatus = U_ZERO_ERROR; + simplifiedUnit.serialize(status); + identifier.set(simplifiedUnit.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { + return result; + } + } + + // In case the simplified base unit identifier did not match any entry. + if (U_FAILURE(localStatus)) { + localStatus = U_ZERO_ERROR; + simplifiedUnit.takeReciprocal(status); + simplifiedUnit.serialize(status); + identifier.set(simplifiedUnit.identifier.data()); + idx = getUnitCategoryIndex(trie, identifier, localStatus); + + if (U_FAILURE(status)) { + return result; + } + } + + // If there is no match at all, throw an exception. + if (U_FAILURE(localStatus)) { status = U_INVALID_FORMAT_ERROR; return result; } + if (idx < 0 || idx >= gCategoriesCount) { status = U_INVALID_FORMAT_ERROR; return result; } + result.appendInvariantChars(gCategories[idx], u_strlen(gCategories[idx]), status); return result; } @@ -911,7 +950,7 @@ void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &sta int32_t absPower = std::abs(this->dimensionality); U_ASSERT(absPower > 0); // "this function does not support the dimensionless single units"; - + if (absPower == 1) { // no-op } else if (absPower == 2) { @@ -989,6 +1028,33 @@ void MeasureUnitImpl::takeReciprocal(UErrorCode& /*status*/) { } } +MeasureUnitImpl MeasureUnitImpl::copyAndSimplify(UErrorCode &status) const { + MeasureUnitImpl result; + for (int32_t i = 0; i < singleUnits.length(); i++) { + const SingleUnitImpl &singleUnit = *this->singleUnits[i]; + + // The following `for` loop will cause time complexity to be O(n^2). + // However, n is very small (number of units, generally, at maximum equal to 10) + bool unitExist = false; + for (int32_t j = 0; j < result.singleUnits.length(); j++) { + if (uprv_strcmp(result.singleUnits[j]->getSimpleUnitID(), singleUnit.getSimpleUnitID()) == + 0 && + result.singleUnits[j]->unitPrefix == singleUnit.unitPrefix) { + unitExist = true; + result.singleUnits[j]->dimensionality = + result.singleUnits[j]->dimensionality + singleUnit.dimensionality; + break; + } + } + + if (!unitExist) { + result.appendSingleUnit(singleUnit, status); + } + } + + return result; +} + bool MeasureUnitImpl::appendSingleUnit(const SingleUnitImpl &singleUnit, UErrorCode &status) { identifier.clear(); diff --git a/deps/icu-small/source/i18n/measunit_impl.h b/deps/icu-small/source/i18n/measunit_impl.h index 5028210ab09b3d..c60ff2fc33bdc9 100644 --- a/deps/icu-small/source/i18n/measunit_impl.h +++ b/deps/icu-small/source/i18n/measunit_impl.h @@ -29,13 +29,14 @@ static const char kDefaultCurrency8[] = "XXX"; * empty. * * This only supports base units: other units must be resolved to base units - * before passing to this function, otherwise U_UNSUPPORTED_ERROR status will be + * before passing to this function, otherwise U_UNSUPPORTED_ERROR status may be * returned. * * Categories are found in `unitQuantities` in the `units` resource (see * `units.txt`). */ -CharString U_I18N_API getUnitQuantity(StringPiece baseUnitIdentifier, UErrorCode &status); +// TODO: make this function accepts any `MeasureUnit` as Java and move it to the `UnitsData` class. +CharString U_I18N_API getUnitQuantity(const MeasureUnitImpl &baseMeasureUnitImpl, UErrorCode &status); /** * A struct representing a single unit (optional SI or binary prefix, and dimensionality). @@ -96,6 +97,7 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (dimensionality > 0 && other.dimensionality < 0) { return -1; } + // Sort by official quantity order int32_t thisQuantity = this->getUnitCategoryIndex(); int32_t otherQuantity = other.getUnitCategoryIndex(); @@ -105,6 +107,7 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (thisQuantity > otherQuantity) { return 1; } + // If quantity order didn't help, then we go by index. if (index < other.index) { return -1; @@ -112,15 +115,39 @@ struct U_I18N_API SingleUnitImpl : public UMemory { if (index > other.index) { return 1; } - // TODO: revisit if the spec dictates prefix sort order - it doesn't - // currently. For now we're sorting binary prefixes before SI prefixes, - // as per enum values order. - if (unitPrefix < other.unitPrefix) { + + // When comparing binary prefixes vs SI prefixes, instead of comparing the actual values, we can + // multiply the binary prefix power by 3 and compare the powers. if they are equal, we can can + // compare the bases. + // NOTE: this methodology will fail if the binary prefix more than or equal 98. + int32_t unitBase = umeas_getPrefixBase(unitPrefix); + int32_t otherUnitBase = umeas_getPrefixBase(other.unitPrefix); + + // Values for comparison purposes only. + int32_t unitPower = unitBase == 1024 /* Binary Prefix */ ? umeas_getPrefixPower(unitPrefix) * 3 + : umeas_getPrefixPower(unitPrefix); + int32_t otherUnitPower = + otherUnitBase == 1024 /* Binary Prefix */ ? umeas_getPrefixPower(other.unitPrefix) * 3 + : umeas_getPrefixPower(other.unitPrefix); + + // NOTE: if the unitPower is less than the other, + // we return 1 not -1. Thus because we want th sorting order + // for the bigger prefix to be before the smaller. + // Example: megabyte should come before kilobyte. + if (unitPower < otherUnitPower) { + return 1; + } + if (unitPower > otherUnitPower) { return -1; } - if (unitPrefix > other.unitPrefix) { + + if (unitBase < otherUnitBase) { return 1; } + if (unitBase > otherUnitBase) { + return -1; + } + return 0; } @@ -211,7 +238,7 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** * Extract the MeasureUnitImpl from a MeasureUnit, or parse if it is not present. - * + * * @param measureUnit The source MeasureUnit. * @param memory A place to write the new MeasureUnitImpl if parsing is required. * @param status Set if an error occurs. @@ -251,10 +278,10 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** * Extracts the list of all the individual units inside the `MeasureUnitImpl` with their indices. - * For example: + * For example: * - if the `MeasureUnitImpl` is `foot-per-hour` - * it will return a list of 1 {(0, `foot-per-hour`)} - * - if the `MeasureUnitImpl` is `foot-and-inch` + * it will return a list of 1 {(0, `foot-per-hour`)} + * - if the `MeasureUnitImpl` is `foot-and-inch` * it will return a list of 2 {(0, `foot`), (1, `inch`)} */ MaybeStackVector @@ -263,6 +290,16 @@ class U_I18N_API MeasureUnitImpl : public UMemory { /** Mutates this MeasureUnitImpl to take the reciprocal. */ void takeReciprocal(UErrorCode& status); + /** + * Returns a simplified version of the unit. + * NOTE: the simplification happen when there are two units equals in their base unit and their + * prefixes. + * + * Example 1: "square-meter-per-meter" --> "meter" + * Example 2: "square-millimeter-per-meter" --> "square-millimeter-per-meter" + */ + MeasureUnitImpl copyAndSimplify(UErrorCode &status) const; + /** * Mutates this MeasureUnitImpl to append a single unit. * @@ -271,6 +308,11 @@ class U_I18N_API MeasureUnitImpl : public UMemory { */ bool appendSingleUnit(const SingleUnitImpl& singleUnit, UErrorCode& status); + /** + * Normalizes a MeasureUnitImpl and generate the identifier string in place. + */ + void serialize(UErrorCode &status); + /** The complexity, either SINGLE, COMPOUND, or MIXED. */ UMeasureUnitComplexity complexity = UMEASURE_UNIT_SINGLE; @@ -288,12 +330,6 @@ class U_I18N_API MeasureUnitImpl : public UMemory { */ CharString identifier; - private: - /** - * Normalizes a MeasureUnitImpl and generate the identifier string in place. - */ - void serialize(UErrorCode &status); - // For calling serialize // TODO(icu-units#147): revisit serialization friend class number::impl::LongNameHandler; diff --git a/deps/icu-small/source/i18n/measure.cpp b/deps/icu-small/source/i18n/measure.cpp index 23adba100707aa..b9c47fd401596d 100644 --- a/deps/icu-small/source/i18n/measure.cpp +++ b/deps/icu-small/source/i18n/measure.cpp @@ -60,12 +60,12 @@ Measure::~Measure() { delete unit; } -UBool Measure::operator==(const UObject& other) const { +bool Measure::operator==(const UObject& other) const { if (this == &other) { // Same object, equal - return TRUE; + return true; } if (typeid(*this) != typeid(other)) { // Different types, not equal - return FALSE; + return false; } const Measure &m = static_cast(other); return number == m.number && diff --git a/deps/icu-small/source/i18n/msgfmt.cpp b/deps/icu-small/source/i18n/msgfmt.cpp index d2631776e83bb0..b8cb2e2ca560fe 100644 --- a/deps/icu-small/source/i18n/msgfmt.cpp +++ b/deps/icu-small/source/i18n/msgfmt.cpp @@ -389,10 +389,10 @@ MessageFormat::operator=(const MessageFormat& that) return *this; } -UBool +bool MessageFormat::operator==(const Format& rhs) const { - if (this == &rhs) return TRUE; + if (this == &rhs) return true; MessageFormat& that = (MessageFormat&)rhs; @@ -400,37 +400,37 @@ MessageFormat::operator==(const Format& rhs) const if (!Format::operator==(rhs) || msgPattern != that.msgPattern || fLocale != that.fLocale) { - return FALSE; + return false; } // Compare hashtables. if ((customFormatArgStarts == NULL) != (that.customFormatArgStarts == NULL)) { - return FALSE; + return false; } if (customFormatArgStarts == NULL) { - return TRUE; + return true; } UErrorCode ec = U_ZERO_ERROR; const int32_t count = uhash_count(customFormatArgStarts); const int32_t rhs_count = uhash_count(that.customFormatArgStarts); if (count != rhs_count) { - return FALSE; + return false; } int32_t idx = 0, rhs_idx = 0, pos = UHASH_FIRST, rhs_pos = UHASH_FIRST; for (; idx < count && rhs_idx < rhs_count && U_SUCCESS(ec); ++idx, ++rhs_idx) { const UHashElement* cur = uhash_nextElement(customFormatArgStarts, &pos); const UHashElement* rhs_cur = uhash_nextElement(that.customFormatArgStarts, &rhs_pos); if (cur->key.integer != rhs_cur->key.integer) { - return FALSE; + return false; } const Format* format = (const Format*)uhash_iget(cachedFormatters, cur->key.integer); const Format* rhs_format = (const Format*)uhash_iget(that.cachedFormatters, rhs_cur->key.integer); if (*format != *rhs_format) { - return FALSE; + return false; } } - return TRUE; + return true; } // ------------------------------------- @@ -637,7 +637,7 @@ MessageFormat::adoptFormats(Format** newFormats, // ------------------------------------- // Sets the new formats array and updates the array count. -// This MessageFormat instance maks a copy of the new formats. +// This MessageFormat instance makes a copy of the new formats. void MessageFormat::setFormats(const Format** newFormats, @@ -862,7 +862,7 @@ MessageFormat::getFormatNames(UErrorCode& status) { fFormatNames->setDeleter(uprv_deleteUObject); for (int32_t partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0;) { - fFormatNames->addElement(new UnicodeString(getArgName(partIndex + 1)), status); + fFormatNames->addElementX(new UnicodeString(getArgName(partIndex + 1)), status); } StringEnumeration* nameEnumerator = new FormatNameEnumeration(fFormatNames, status); @@ -1869,8 +1869,8 @@ UBool MessageFormat::equalFormats(const void* left, const void* right) { } -UBool MessageFormat::DummyFormat::operator==(const Format&) const { - return TRUE; +bool MessageFormat::DummyFormat::operator==(const Format&) const { + return true; } MessageFormat::DummyFormat* MessageFormat::DummyFormat::clone() const { diff --git a/deps/icu-small/source/i18n/msgfmt_impl.h b/deps/icu-small/source/i18n/msgfmt_impl.h index 0f77d12d0bb6e1..57988389132a67 100644 --- a/deps/icu-small/source/i18n/msgfmt_impl.h +++ b/deps/icu-small/source/i18n/msgfmt_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "unicode/msgfmt.h" #include "uvector.h" #include "unicode/strenum.h" @@ -29,10 +29,10 @@ class FormatNameEnumeration : public StringEnumeration { FormatNameEnumeration(UVector *fFormatNames, UErrorCode& status); virtual ~FormatNameEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector *fFormatNames; diff --git a/deps/icu-small/source/i18n/name2uni.cpp b/deps/icu-small/source/i18n/name2uni.cpp index 8e13b0025475ed..ffbbf152d33240 100644 --- a/deps/icu-small/source/i18n/name2uni.cpp +++ b/deps/icu-small/source/i18n/name2uni.cpp @@ -220,7 +220,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos openPos = -1; // close off candidate continue; // *** reprocess char32At(cursor) } - + // Check if c is a legal char. We assume here that // legal.contains(OPEN_DELIM) is FALSE, so when we abort a // name, we don't have to go back to openPos+1. @@ -232,7 +232,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos mode = 0; } } - + // Invalid character else { --cursor; // Backup and reprocess this character @@ -244,7 +244,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos cursor += U16_LENGTH(c); } - + offsets.contextLimit += limit - offsets.limit; offsets.limit = limit; // In incremental mode, only advance the cursor up to the last diff --git a/deps/icu-small/source/i18n/name2uni.h b/deps/icu-small/source/i18n/name2uni.h index 44ad85fb822cb3..6881c6bc85745c 100644 --- a/deps/icu-small/source/i18n/name2uni.h +++ b/deps/icu-small/source/i18n/name2uni.h @@ -49,12 +49,12 @@ class NameUnicodeTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual NameUnicodeTransliterator* clone() const; + virtual NameUnicodeTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -73,7 +73,7 @@ class NameUnicodeTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * Set of characters which occur in Unicode character names. diff --git a/deps/icu-small/source/i18n/nfrlist.h b/deps/icu-small/source/i18n/nfrlist.h index db28c4d36f8d18..3eb1882b2f957e 100644 --- a/deps/icu-small/source/i18n/nfrlist.h +++ b/deps/icu-small/source/i18n/nfrlist.h @@ -38,7 +38,7 @@ class NFRuleList : public UMemory { uint32_t fCount; uint32_t fCapacity; public: - NFRuleList(uint32_t capacity = 10) + NFRuleList(uint32_t capacity = 10) : fStuff(capacity ? (NFRule**)uprv_malloc(capacity * sizeof(NFRule*)) : NULL) , fCount(0) , fCapacity(capacity) {} @@ -52,9 +52,9 @@ class NFRuleList : public UMemory { } NFRule* operator[](uint32_t index) const { return fStuff != NULL ? fStuff[index] : NULL; } NFRule* remove(uint32_t index) { - if (fStuff == NULL) { - return NULL; - } + if (fStuff == NULL) { + return NULL; + } NFRule* result = fStuff[index]; fCount -= 1; for (uint32_t i = index; i < fCount; ++i) { // assumes small arrays @@ -68,10 +68,10 @@ class NFRuleList : public UMemory { fStuff = (NFRule**)uprv_realloc(fStuff, fCapacity * sizeof(NFRule*)); // assume success } if (fStuff != NULL) { - fStuff[fCount++] = thing; + fStuff[fCount++] = thing; } else { - fCapacity = 0; - fCount = 0; + fCapacity = 0; + fCount = 0; } } uint32_t size() const { return fCount; } diff --git a/deps/icu-small/source/i18n/nfrs.cpp b/deps/icu-small/source/i18n/nfrs.cpp index 11056dbc68281e..df04e33e04ff12 100644 --- a/deps/icu-small/source/i18n/nfrs.cpp +++ b/deps/icu-small/source/i18n/nfrs.cpp @@ -344,7 +344,7 @@ util_equalRules(const NFRule* rule1, const NFRule* rule2) return FALSE; } -UBool +bool NFRuleSet::operator==(const NFRuleSet& rhs) const { if (rules.size() == rhs.rules.size() && @@ -354,19 +354,19 @@ NFRuleSet::operator==(const NFRuleSet& rhs) const // ...then compare the non-numerical rule lists... for (int i = 0; i < NON_NUMERICAL_RULE_LENGTH; i++) { if (!util_equalRules(nonNumericalRules[i], rhs.nonNumericalRules[i])) { - return FALSE; + return false; } } // ...then compare the rule lists... for (uint32_t i = 0; i < rules.size(); ++i) { if (*rules[i] != *rhs.rules[i]) { - return FALSE; + return false; } } - return TRUE; + return true; } - return FALSE; + return false; } void @@ -630,7 +630,7 @@ NFRuleSet::findFractionRuleSetRule(double number) const // value, then the first one (the one we found above) is used if // the numerator of the fraction is 1 and the second one is used if // the numerator of the fraction is anything else (this lets us - // do things like "one third"/"two thirds" without haveing to define + // do things like "one third"/"two thirds" without having to define // a whole bunch of extra rule sets) if ((unsigned)(winner + 1) < rules.size() && rules[winner + 1]->getBaseValue() == rules[winner]->getBaseValue()) { @@ -762,7 +762,7 @@ NFRuleSet::parse(const UnicodeString& text, ParsePosition& pos, double upperBoun #ifdef RBNF_DEBUG fprintf(stderr, " exit\n"); #endif - // finally, update the parse postion we were passed to point to the + // finally, update the parse position we were passed to point to the // first character we didn't use, and return the result that // corresponds to that string of characters pos = highWaterMark; @@ -821,7 +821,7 @@ int64_t util64_fromDouble(double d) { } else if (d > mant) { d = mant; } - UBool neg = d < 0; + UBool neg = d < 0; if (neg) { d = -d; } @@ -852,12 +852,12 @@ uint64_t util64_pow(uint32_t base, uint16_t exponent) { return result; } -static const uint8_t asciiDigits[] = { +static const uint8_t asciiDigits[] = { 0x30u, 0x31u, 0x32u, 0x33u, 0x34u, 0x35u, 0x36u, 0x37u, 0x38u, 0x39u, 0x61u, 0x62u, 0x63u, 0x64u, 0x65u, 0x66u, 0x67u, 0x68u, 0x69u, 0x6au, 0x6bu, 0x6cu, 0x6du, 0x6eu, 0x6fu, 0x70u, 0x71u, 0x72u, 0x73u, 0x74u, 0x75u, 0x76u, - 0x77u, 0x78u, 0x79u, 0x7au, + 0x77u, 0x78u, 0x79u, 0x7au, }; static const UChar kUMinus = (UChar)0x002d; @@ -938,7 +938,7 @@ int64_t util64_utoi(const UChar* str, uint32_t radix) } uint32_t util64_toa(int64_t w, char* buf, uint32_t len, uint32_t radix, UBool raw) -{ +{ if (radix > 36) { radix = 36; } else if (radix < 2) { @@ -984,7 +984,7 @@ uint32_t util64_toa(int64_t w, char* buf, uint32_t len, uint32_t radix, UBool ra #endif uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool raw) -{ +{ if (radix > 36) { radix = 36; } else if (radix < 2) { diff --git a/deps/icu-small/source/i18n/nfrs.h b/deps/icu-small/source/i18n/nfrs.h index e9b955ddff142d..a6ad3a3bb7f05d 100644 --- a/deps/icu-small/source/i18n/nfrs.h +++ b/deps/icu-small/source/i18n/nfrs.h @@ -40,8 +40,8 @@ class NFRuleSet : public UMemory { ~NFRuleSet(); - UBool operator==(const NFRuleSet& rhs) const; - UBool operator!=(const NFRuleSet& rhs) const { return !operator==(rhs); } + bool operator==(const NFRuleSet& rhs) const; + bool operator!=(const NFRuleSet& rhs) const { return !operator==(rhs); } UBool isPublic() const { return fIsPublic; } @@ -66,7 +66,7 @@ class NFRuleSet : public UMemory { const NFRule * findNormalRule(int64_t number) const; const NFRule * findDoubleRule(double number) const; const NFRule * findFractionRuleSetRule(double number) const; - + friend class NFSubstitution; private: diff --git a/deps/icu-small/source/i18n/nfrule.cpp b/deps/icu-small/source/i18n/nfrule.cpp index cba41d14bb1fa8..4bb0785127f7ec 100644 --- a/deps/icu-small/source/i18n/nfrule.cpp +++ b/deps/icu-small/source/i18n/nfrule.cpp @@ -115,7 +115,7 @@ NFRule::makeRules(UnicodeString& description, // we know we're making at least one rule, so go ahead and // new it up and initialize its basevalue and divisor // (this also strips the rule descriptor, if any, off the - // descripton string) + // description string) NFRule* rule1 = new NFRule(rbnf, description, status); /* test for NULL */ if (rule1 == 0) { @@ -193,7 +193,7 @@ NFRule::makeRules(UnicodeString& description, rule2->radix = rule1->radix; rule2->exponent = rule1->exponent; - // rule2's rule text omits the stuff in brackets: initalize + // rule2's rule text omits the stuff in brackets: initialize // its rule text and substitutions accordingly sbuf.append(description, 0, brack1); if (brack2 + 1 < description.length()) { @@ -631,7 +631,7 @@ util_equalSubstitutions(const NFSubstitution* sub1, const NFSubstitution* sub2) * @param that The rule to compare this one against * @return True is the two rules are functionally equivalent */ -UBool +bool NFRule::operator==(const NFRule& rhs) const { return baseValue == rhs.baseValue @@ -1107,14 +1107,14 @@ NFRule::stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosit { // if the prefix text is empty, dump out without doing anything if (prefix.length() != 0) { - UErrorCode status = U_ZERO_ERROR; + UErrorCode status = U_ZERO_ERROR; // use prefixLength() to match the beginning of // "text" against "prefix". This function returns the // number of characters from "text" that matched (or 0 if // we didn't match the whole prefix) int32_t pfl = prefixLength(text, prefix, status); if (U_FAILURE(status)) { // Memory allocation error. - return; + return; } if (pfl != 0) { // if we got a successful match, update the parse position @@ -1170,9 +1170,9 @@ NFRule::matchToDelimiter(const UnicodeString& text, // use "sub"'s doParse() method to match the text before the // instance of "delimiter" we just found. if (!allIgnorable(delimiter, status)) { - if (U_FAILURE(status)) { //Memory allocation error. - return 0; - } + if (U_FAILURE(status)) { //Memory allocation error. + return 0; + } ParsePosition tempPP; Formattable result; @@ -1533,7 +1533,7 @@ NFRule::findTextLenient(const UnicodeString& str, // in JDK 1.2, CollationElementIterator provides us with an // API to map between character offsets and collation elements // and we can do this by marching through the string comparing - // collation elements. We can't do that in JDK 1.1. Insted, + // collation elements. We can't do that in JDK 1.1. Instead, // we have to go through this horrible slow mess: int32_t p = startingAt; int32_t keyLen = 0; diff --git a/deps/icu-small/source/i18n/nfrule.h b/deps/icu-small/source/i18n/nfrule.h index 12431c0dba33e8..5e615e485c8077 100644 --- a/deps/icu-small/source/i18n/nfrule.h +++ b/deps/icu-small/source/i18n/nfrule.h @@ -45,17 +45,17 @@ class NFRule : public UMemory { }; static void makeRules(UnicodeString& definition, - NFRuleSet* ruleSet, - const NFRule* predecessor, - const RuleBasedNumberFormat* rbnf, + NFRuleSet* ruleSet, + const NFRule* predecessor, + const RuleBasedNumberFormat* rbnf, NFRuleList& ruleList, UErrorCode& status); NFRule(const RuleBasedNumberFormat* rbnf, const UnicodeString &ruleText, UErrorCode &status); ~NFRule(); - UBool operator==(const NFRule& rhs) const; - UBool operator!=(const NFRule& rhs) const { return !operator==(rhs); } + bool operator==(const NFRule& rhs) const; + bool operator!=(const NFRule& rhs) const { return !operator==(rhs); } ERuleType getType() const { return (ERuleType)(baseValue <= kNoBase ? (ERuleType)baseValue : kOtherRule); } void setType(ERuleType ruleType) { baseValue = (int32_t)ruleType; } @@ -70,9 +70,9 @@ class NFRule : public UMemory { void doFormat(int64_t number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; void doFormat(double number, UnicodeString& toAppendTo, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - UBool doParse(const UnicodeString& text, - ParsePosition& pos, - UBool isFractional, + UBool doParse(const UnicodeString& text, + ParsePosition& pos, + UBool isFractional, double upperBound, uint32_t nonNumericalExecutedRuleMask, Formattable& result) const; @@ -81,7 +81,7 @@ class NFRule : public UMemory { void _appendRuleText(UnicodeString& result) const; - int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, + int32_t findTextLenient(const UnicodeString& str, const UnicodeString& key, int32_t startingAt, int32_t* resultCount) const; void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status); @@ -90,18 +90,18 @@ class NFRule : public UMemory { void parseRuleDescriptor(UnicodeString& descriptor, UErrorCode& status); void extractSubstitutions(const NFRuleSet* ruleSet, const UnicodeString &ruleText, const NFRule* predecessor, UErrorCode& status); NFSubstitution* extractSubstitution(const NFRuleSet* ruleSet, const NFRule* predecessor, UErrorCode& status); - + int16_t expectedExponent() const; int32_t indexOfAnyRulePrefix() const; double matchToDelimiter(const UnicodeString& text, int32_t startPos, double baseValue, - const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, + const UnicodeString& delimiter, ParsePosition& pp, const NFSubstitution* sub, uint32_t nonNumericalExecutedRuleMask, double upperBound) const; void stripPrefix(UnicodeString& text, const UnicodeString& prefix, ParsePosition& pp) const; int32_t prefixLength(const UnicodeString& str, const UnicodeString& prefix, UErrorCode& status) const; UBool allIgnorable(const UnicodeString& str, UErrorCode& status) const; - int32_t findText(const UnicodeString& str, const UnicodeString& key, + int32_t findText(const UnicodeString& str, const UnicodeString& key, int32_t startingAt, int32_t* resultCount) const; private: @@ -126,3 +126,4 @@ U_NAMESPACE_END // NFRULE_H #endif + diff --git a/deps/icu-small/source/i18n/nfsubs.cpp b/deps/icu-small/source/i18n/nfsubs.cpp index e3ea3938835ea3..70ac18be468635 100644 --- a/deps/icu-small/source/i18n/nfsubs.cpp +++ b/deps/icu-small/source/i18n/nfsubs.cpp @@ -58,15 +58,15 @@ class SameValueSubstitution : public NFSubstitution { UErrorCode& status); virtual ~SameValueSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number; } - virtual double transformNumber(double number) const { return number; } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { return newRuleValue; } - virtual double calcUpperBound(double oldUpperBound) const { return oldUpperBound; } - virtual UChar tokenChar() const { return (UChar)0x003d; } // '=' + virtual int64_t transformNumber(int64_t number) const override { return number; } + virtual double transformNumber(double number) const override { return number; } + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return newRuleValue; } + virtual double calcUpperBound(double oldUpperBound) const override { return oldUpperBound; } + virtual UChar tokenChar() const override { return (UChar)0x003d; } // '=' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; SameValueSubstitution::~SameValueSubstitution() {} @@ -88,7 +88,7 @@ class MultiplierSubstitution : public NFSubstitution { } virtual ~MultiplierSubstitution(); - virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { + virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) override { divisor = util64_pow(radix, exponent); if(divisor == 0) { @@ -96,13 +96,13 @@ class MultiplierSubstitution : public NFSubstitution { } } - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual int64_t transformNumber(int64_t number) const { + virtual int64_t transformNumber(int64_t number) const override { return number / divisor; } - virtual double transformNumber(double number) const { + virtual double transformNumber(double number) const override { if (getRuleSet()) { return uprv_floor(number / divisor); } else { @@ -110,17 +110,17 @@ class MultiplierSubstitution : public NFSubstitution { } } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return newRuleValue * divisor; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return static_cast(divisor); } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return static_cast(divisor); } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; MultiplierSubstitution::~MultiplierSubstitution() {} @@ -137,7 +137,7 @@ class ModulusSubstitution : public NFSubstitution { UErrorCode& status); virtual ~ModulusSubstitution(); - virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) { + virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status) override { divisor = util64_pow(radix, exponent); if (divisor == 0) { @@ -145,37 +145,37 @@ class ModulusSubstitution : public NFSubstitution { } } - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; + virtual void doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; - virtual int64_t transformNumber(int64_t number) const { return number % divisor; } - virtual double transformNumber(double number) const { return uprv_fmod(number, static_cast(divisor)); } + virtual int64_t transformNumber(int64_t number) const override { return number % divisor; } + virtual double transformNumber(double number) const override { return uprv_fmod(number, static_cast(divisor)); } - virtual UBool doParse(const UnicodeString& text, + virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return oldRuleValue - uprv_fmod(oldRuleValue, static_cast(divisor)) + newRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return static_cast(divisor); } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return static_cast(divisor); } - virtual UBool isModulusSubstitution() const { return TRUE; } + virtual UBool isModulusSubstitution() const override { return TRUE; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' - virtual void toString(UnicodeString& result) const; + virtual void toString(UnicodeString& result) const override; public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; ModulusSubstitution::~ModulusSubstitution() {} @@ -189,15 +189,15 @@ class IntegralPartSubstitution : public NFSubstitution { : NFSubstitution(_pos, _ruleSet, description, status) {} virtual ~IntegralPartSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number; } - virtual double transformNumber(double number) const { return uprv_floor(number); } - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue + oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return DBL_MAX; } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual int64_t transformNumber(int64_t number) const override { return number; } + virtual double transformNumber(double number) const override { return uprv_floor(number); } + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; } + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; IntegralPartSubstitution::~IntegralPartSubstitution() {} @@ -213,12 +213,12 @@ class FractionalPartSubstitution : public NFSubstitution { UErrorCode& status); virtual ~FractionalPartSubstitution(); - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const {} - virtual int64_t transformNumber(int64_t /*number*/) const { return 0; } - virtual double transformNumber(double number) const { return number - uprv_floor(number); } + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const override {} + virtual int64_t transformNumber(int64_t /*number*/) const override { return 0; } + virtual double transformNumber(double number) const override { return number - uprv_floor(number); } virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, @@ -226,15 +226,15 @@ class FractionalPartSubstitution : public NFSubstitution { double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue + oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return 0.0; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return 0.0; } + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; FractionalPartSubstitution::~FractionalPartSubstitution() {} @@ -248,15 +248,15 @@ class AbsoluteValueSubstitution : public NFSubstitution { : NFSubstitution(_pos, _ruleSet, description, status) {} virtual ~AbsoluteValueSubstitution(); - virtual int64_t transformNumber(int64_t number) const { return number >= 0 ? number : -number; } - virtual double transformNumber(double number) const { return uprv_fabs(number); } - virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const { return -newRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return DBL_MAX; } - virtual UChar tokenChar() const { return (UChar)0x003e; } // '>' + virtual int64_t transformNumber(int64_t number) const override { return number >= 0 ? number : -number; } + virtual double transformNumber(double number) const override { return uprv_fabs(number); } + virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return -newRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; } + virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>' public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; AbsoluteValueSubstitution::~AbsoluteValueSubstitution() {} @@ -278,37 +278,37 @@ class NumeratorSubstitution : public NFSubstitution { NFRuleSet* _ruleSet, const UnicodeString& description, UErrorCode& status) - : NFSubstitution(_pos, _ruleSet, fixdesc(description), status), denominator(_denominator) + : NFSubstitution(_pos, _ruleSet, fixdesc(description), status), denominator(_denominator) { ldenominator = util64_fromDouble(denominator); withZeros = description.endsWith(LTLT, 2); } virtual ~NumeratorSubstitution(); - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const override; - virtual int64_t transformNumber(int64_t number) const { return number * ldenominator; } - virtual double transformNumber(double number) const { return uprv_round(number * denominator); } + virtual int64_t transformNumber(int64_t number) const override { return number * ldenominator; } + virtual double transformNumber(double number) const override { return uprv_round(number * denominator); } - virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const {} - virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - virtual UBool doParse(const UnicodeString& text, + virtual void doSubstitution(int64_t /*number*/, UnicodeString& /*toInsertInto*/, int32_t /*_pos*/, int32_t /*recursionCount*/, UErrorCode& /*status*/) const override {} + virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const override; + virtual UBool doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, UBool /*lenientParse*/, uint32_t nonNumericalExecutedRuleMask, - Formattable& result) const; + Formattable& result) const override; - virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const { return newRuleValue / oldRuleValue; } - virtual double calcUpperBound(double /*oldUpperBound*/) const { return denominator; } - virtual UChar tokenChar() const { return (UChar)0x003c; } // '<' + virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue / oldRuleValue; } + virtual double calcUpperBound(double /*oldUpperBound*/) const override { return denominator; } + virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<' private: static const UChar LTLT[2]; public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; NumeratorSubstitution::~NumeratorSubstitution() {} @@ -515,7 +515,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NFSubstitution) * @param The substitution to compare this one to * @return true if the two substitutions are functionally equivalent */ -UBool +bool NFSubstitution::operator==(const NFSubstitution& rhs) const { // compare class and all of the fields all substitutions have @@ -592,20 +592,20 @@ NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int3 UnicodeString temp; numberFormat->format(numberToFormat, temp, status); toInsertInto.insert(_pos + this->pos, temp); - } - else { - // We have gone beyond double precision. Something has to give. - // We're favoring accuracy of the large number over potential rules - // that round like a CompactDecimalFormat, which is not a common use case. - // - // Perform a transformation on the number that is dependent - // on the type of substitution this is, then just call its - // rule set's format() method to format the result - int64_t numberToFormat = transformNumber(number); + } + else { + // We have gone beyond double precision. Something has to give. + // We're favoring accuracy of the large number over potential rules + // that round like a CompactDecimalFormat, which is not a common use case. + // + // Perform a transformation on the number that is dependent + // on the type of substitution this is, then just call its + // rule set's format() method to format the result + int64_t numberToFormat = transformNumber(number); UnicodeString temp; numberFormat->format(numberToFormat, temp, status); toInsertInto.insert(_pos + this->pos, temp); - } + } } } @@ -810,7 +810,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SameValueSubstitution) UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MultiplierSubstitution) -UBool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const +bool MultiplierSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && divisor == ((const MultiplierSubstitution*)&rhs)->divisor; @@ -845,7 +845,7 @@ ModulusSubstitution::ModulusSubstitution(int32_t _pos, } if (0 == description.compare(gGreaterGreaterGreaterThan, 3)) { - // the >>> token doesn't alter how this substituion calculates the + // the >>> token doesn't alter how this substitution calculates the // values it uses for formatting and parsing, but it changes // what's done with that value after it's obtained: >>> short- // circuits the rule-search process and goes straight to the @@ -856,7 +856,7 @@ ModulusSubstitution::ModulusSubstitution(int32_t _pos, UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ModulusSubstitution) -UBool ModulusSubstitution::operator==(const NFSubstitution& rhs) const +bool ModulusSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && divisor == ((const ModulusSubstitution*)&rhs)->divisor && @@ -1075,7 +1075,7 @@ FractionalPartSubstitution::doSubstitution(double number, UnicodeString& toInser DecimalQuantity dl; dl.setToDouble(number); dl.roundToMagnitude(-20, UNUM_ROUND_HALFEVEN, status); // round to 20 fraction digits. - + UBool pad = FALSE; for (int32_t didx = dl.getLowerDisplayMagnitude(); didx<0; didx++) { // Loop iterates over fraction digits, starting with the LSD. @@ -1195,7 +1195,7 @@ FractionalPartSubstitution::doParse(const UnicodeString& text, } } -UBool +bool FractionalPartSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && @@ -1254,8 +1254,8 @@ NumeratorSubstitution::doSubstitution(double number, UnicodeString& toInsertInto } } -UBool -NumeratorSubstitution::doParse(const UnicodeString& text, +UBool +NumeratorSubstitution::doParse(const UnicodeString& text, ParsePosition& parsePosition, double baseValue, double upperBound, @@ -1327,7 +1327,7 @@ NumeratorSubstitution::doParse(const UnicodeString& text, return TRUE; } -UBool +bool NumeratorSubstitution::operator==(const NFSubstitution& rhs) const { return NFSubstitution::operator==(rhs) && @@ -1337,8 +1337,9 @@ NumeratorSubstitution::operator==(const NFSubstitution& rhs) const UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NumeratorSubstitution) const UChar NumeratorSubstitution::LTLT[] = { 0x003c, 0x003c }; - + U_NAMESPACE_END /* U_HAVE_RBNF */ #endif + diff --git a/deps/icu-small/source/i18n/nfsubs.h b/deps/icu-small/source/i18n/nfsubs.h index 08de06f2a38e1e..0abd98be097d35 100644 --- a/deps/icu-small/source/i18n/nfsubs.h +++ b/deps/icu-small/source/i18n/nfsubs.h @@ -35,13 +35,13 @@ class NFSubstitution : public UObject { int32_t pos; const NFRuleSet* ruleSet; DecimalFormat* numberFormat; - + protected: NFSubstitution(int32_t pos, const NFRuleSet* ruleSet, const UnicodeString& description, UErrorCode& status); - + /** * Get the Ruleset of the object. * @return the Ruleset of the object. @@ -53,28 +53,28 @@ class NFSubstitution : public UObject { * @return the numberformat of this object. */ const DecimalFormat* getNumberFormat() const { return numberFormat; } - + public: - static NFSubstitution* makeSubstitution(int32_t pos, - const NFRule* rule, + static NFSubstitution* makeSubstitution(int32_t pos, + const NFRule* rule, const NFRule* predecessor, - const NFRuleSet* ruleSet, - const RuleBasedNumberFormat* rbnf, + const NFRuleSet* ruleSet, + const RuleBasedNumberFormat* rbnf, const UnicodeString& description, UErrorCode& status); - + /** * Destructor. */ virtual ~NFSubstitution(); - + /** * Return true if the given Format objects are semantically equal. * Objects of different subclasses are considered unequal. * @param rhs the object to be compared with. * @return true if the given Format objects are semantically equal. */ - virtual UBool operator==(const NFSubstitution& rhs) const; + virtual bool operator==(const NFSubstitution& rhs) const; /** * Return true if the given Format objects are semantically unequal. @@ -82,8 +82,8 @@ class NFSubstitution : public UObject { * @param rhs the object to be compared with. * @return true if the given Format objects are semantically unequal. */ - UBool operator!=(const NFSubstitution& rhs) const { return !operator==(rhs); } - + bool operator!=(const NFSubstitution& rhs) const { return !operator==(rhs); } + /** * Sets the substitution's divisor. Used by NFRule.setBaseValue(). * A no-op for all substitutions except multiplier and modulus @@ -92,19 +92,19 @@ class NFSubstitution : public UObject { * @param exponent The exponent of the divisor */ virtual void setDivisor(int32_t radix, int16_t exponent, UErrorCode& status); - + /** * Replaces result with the string describing the substitution. * @param result Output param which will receive the string. */ virtual void toString(UnicodeString& result) const; - + void setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& status); //----------------------------------------------------------------------- // formatting //----------------------------------------------------------------------- - + /** * Performs a mathematical operation on the number, formats it using * either ruleSet or decimalFormat, and inserts the result into @@ -128,7 +128,7 @@ class NFSubstitution : public UObject { * position to determine exactly where to insert the new text) */ virtual void doSubstitution(double number, UnicodeString& toInsertInto, int32_t pos, int32_t recursionCount, UErrorCode& status) const; - + protected: /** * Subclasses override this function to perform some kind of @@ -151,12 +151,12 @@ class NFSubstitution : public UObject { * @return The result of performing the opreration on the number */ virtual double transformNumber(double number) const = 0; - + public: //----------------------------------------------------------------------- // parsing //----------------------------------------------------------------------- - + /** * Parses a string using the rule set or DecimalFormat belonging * to this substitution. If there's a match, a mathematical @@ -186,14 +186,14 @@ class NFSubstitution : public UObject { * no match this is new Long(0) (not null), and parsePosition * is left unchanged. */ - virtual UBool doParse(const UnicodeString& text, - ParsePosition& parsePosition, + virtual UBool doParse(const UnicodeString& text, + ParsePosition& parsePosition, double baseValue, - double upperBound, + double upperBound, UBool lenientParse, uint32_t nonNumericalExecutedRuleMask, Formattable& result) const; - + /** * Derives a new value from the two values passed in. The two values * are typically either the base values of two rules (the one containing @@ -207,7 +207,7 @@ class NFSubstitution : public UObject { * partial parse result */ virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const = 0; - + /** * Calculates an upper bound when searching for a rule that matches * this substitution. Rules with base values greater than or equal @@ -218,24 +218,24 @@ class NFSubstitution : public UObject { * this substitution. */ virtual double calcUpperBound(double oldUpperBound) const = 0; - + //----------------------------------------------------------------------- // simple accessors //----------------------------------------------------------------------- - + /** * Returns the substitution's position in the rule that owns it. * @return The substitution's position in the rule that owns it. */ int32_t getPos() const { return pos; } - + /** * Returns the character used in the textual representation of * substitutions of this type. Used by toString(). * @return This substitution's token character. */ virtual UChar tokenChar() const = 0; - + /** * Returns true if this is a modulus substitution. (We didn't do this * with instanceof partially because it causes source files to @@ -243,14 +243,14 @@ class NFSubstitution : public UObject { * @return true if this object is an instance of ModulusSubstitution */ virtual UBool isModulusSubstitution() const; - + private: NFSubstitution(const NFSubstitution &other); // forbid copying of this class NFSubstitution &operator=(const NFSubstitution &other); // forbid copying of this class public: static UClassID getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/nortrans.h b/deps/icu-small/source/i18n/nortrans.h index 198ed29c95e70f..01cb97ab38b4a1 100644 --- a/deps/icu-small/source/i18n/nortrans.h +++ b/deps/icu-small/source/i18n/nortrans.h @@ -44,12 +44,12 @@ class NormalizationTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual NormalizationTransliterator* clone() const; + virtual NormalizationTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -68,7 +68,7 @@ class NormalizationTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; public: /** diff --git a/deps/icu-small/source/i18n/nultrans.h b/deps/icu-small/source/i18n/nultrans.h index 36c92fa7b189d3..f5f2fbc9117419 100644 --- a/deps/icu-small/source/i18n/nultrans.h +++ b/deps/icu-small/source/i18n/nultrans.h @@ -45,19 +45,19 @@ class NullTransliterator : public Transliterator { * Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual NullTransliterator* clone() const; + virtual NullTransliterator* clone() const override; /** * Implements {@link Transliterator#handleTransliterate}. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/number_affixutils.cpp b/deps/icu-small/source/i18n/number_affixutils.cpp index a74ec2d634799e..f9c154c885cd8a 100644 --- a/deps/icu-small/source/i18n/number_affixutils.cpp +++ b/deps/icu-small/source/i18n/number_affixutils.cpp @@ -64,7 +64,7 @@ int32_t AffixUtils::estimateLength(const UnicodeString &patternString, UErrorCod } break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } offset += U16_LENGTH(cp); @@ -134,6 +134,9 @@ Field AffixUtils::getFieldForType(AffixPatternType type) { return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; case TYPE_PLUS_SIGN: return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; + case TYPE_APPROXIMATELY_SIGN: + // TODO: Introduce a new field for the approximately sign? + return {UFIELD_CATEGORY_NUMBER, UNUM_SIGN_FIELD}; case TYPE_PERCENT: return {UFIELD_CATEGORY_NUMBER, UNUM_PERCENT_FIELD}; case TYPE_PERMILLE: @@ -151,7 +154,7 @@ Field AffixUtils::getFieldForType(AffixPatternType type) { case TYPE_CURRENCY_OVERFLOW: return {UFIELD_CATEGORY_NUMBER, UNUM_CURRENCY_FIELD}; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -295,6 +298,8 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, return makeTag(offset + count, TYPE_MINUS_SIGN, STATE_BASE, 0); case u'+': return makeTag(offset + count, TYPE_PLUS_SIGN, STATE_BASE, 0); + case u'~': + return makeTag(offset + count, TYPE_APPROXIMATELY_SIGN, STATE_BASE, 0); case u'%': return makeTag(offset + count, TYPE_PERCENT, STATE_BASE, 0); case u'‰': @@ -385,7 +390,7 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0); } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } // End of string @@ -414,7 +419,7 @@ AffixTag AffixUtils::nextToken(AffixTag tag, const UnicodeString &patternString, case STATE_OVERFLOW_CURR: return makeTag(offset, TYPE_CURRENCY_OVERFLOW, STATE_BASE, 0); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } diff --git a/deps/icu-small/source/i18n/number_asformat.cpp b/deps/icu-small/source/i18n/number_asformat.cpp index 9d10d1f5580fbe..8f2314d6898e0d 100644 --- a/deps/icu-small/source/i18n/number_asformat.cpp +++ b/deps/icu-small/source/i18n/number_asformat.cpp @@ -32,7 +32,7 @@ LocalizedNumberFormatterAsFormat::LocalizedNumberFormatterAsFormat( LocalizedNumberFormatterAsFormat::~LocalizedNumberFormatterAsFormat() = default; -UBool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const { +bool LocalizedNumberFormatterAsFormat::operator==(const Format& other) const { auto* _other = dynamic_cast(&other); if (_other == nullptr) { return false; diff --git a/deps/icu-small/source/i18n/number_asformat.h b/deps/icu-small/source/i18n/number_asformat.h index 3a2fe3185bee1c..394b9a811fd7d6 100644 --- a/deps/icu-small/source/i18n/number_asformat.h +++ b/deps/icu-small/source/i18n/number_asformat.h @@ -39,7 +39,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format { /** * Equals operator. */ - UBool operator==(const Format& other) const U_OVERRIDE; + bool operator==(const Format& other) const U_OVERRIDE; /** * Creates a copy of this object. diff --git a/deps/icu-small/source/i18n/number_capi.cpp b/deps/icu-small/source/i18n/number_capi.cpp index ef5f0a41ff07a4..b87dbd93e5fcde 100644 --- a/deps/icu-small/source/i18n/number_capi.cpp +++ b/deps/icu-small/source/i18n/number_capi.cpp @@ -116,7 +116,8 @@ unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNum auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToLong(value); formatter->fFormatter.formatImpl(&result->fData, *ec); } @@ -128,7 +129,8 @@ unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedN auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToDouble(value); formatter->fFormatter.formatImpl(&result->fData, *ec); } @@ -140,7 +142,8 @@ unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32 auto* result = UFormattedNumberApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity.clear(); result->fData.quantity.setToDecNumber({value, valueLen}, *ec); if (U_FAILURE(*ec)) { return; } formatter->fFormatter.formatImpl(&result->fData, *ec); @@ -223,3 +226,30 @@ unumf_close(UNumberFormatter* f) { #endif /* #if !UCONFIG_NO_FORMATTING */ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deps/icu-small/source/i18n/number_compact.cpp b/deps/icu-small/source/i18n/number_compact.cpp index 8f898e704703a4..62692f444dff07 100644 --- a/deps/icu-small/source/i18n/number_compact.cpp +++ b/deps/icu-small/source/i18n/number_compact.cpp @@ -158,7 +158,7 @@ void CompactData::getUniquePatterns(UVector &output, UErrorCode &status) const { // The string was not found; add it to the UVector. // ANDY: This requires a const_cast. Why? - output.addElement(const_cast(pattern), status); + output.addElementX(const_cast(pattern), status); continue_outer: continue; diff --git a/deps/icu-small/source/i18n/number_currencysymbols.cpp b/deps/icu-small/source/i18n/number_currencysymbols.cpp index 9208427904cceb..da1812f49f0b71 100644 --- a/deps/icu-small/source/i18n/number_currencysymbols.cpp +++ b/deps/icu-small/source/i18n/number_currencysymbols.cpp @@ -76,7 +76,7 @@ UnicodeString CurrencySymbols::loadSymbol(UCurrNameStyle selector, UErrorCode& s if (symbol == isoCode) { return UnicodeString(isoCode, 3); } else { - return UnicodeString(TRUE, symbol, symbolLen); + return UnicodeString(true, symbol, symbolLen); } } @@ -104,7 +104,7 @@ UnicodeString CurrencySymbols::getPluralName(StandardPlural::Form plural, UError if (symbol == isoCode) { return UnicodeString(isoCode, 3); } else { - return UnicodeString(TRUE, symbol, symbolLen); + return UnicodeString(true, symbol, symbolLen); } } diff --git a/deps/icu-small/source/i18n/number_decimalquantity.cpp b/deps/icu-small/source/i18n/number_decimalquantity.cpp index 1f020ff87001cd..6a2847b1c18f19 100644 --- a/deps/icu-small/source/i18n/number_decimalquantity.cpp +++ b/deps/icu-small/source/i18n/number_decimalquantity.cpp @@ -289,6 +289,11 @@ void DecimalQuantity::adjustExponent(int delta) { exponent = exponent + delta; } +void DecimalQuantity::resetExponent() { + adjustMagnitude(exponent); + exponent = 0; +} + bool DecimalQuantity::hasIntegerValue() const { return scale >= 0; } @@ -534,7 +539,11 @@ void DecimalQuantity::_setToDecNum(const DecNum& decnum, UErrorCode& status) { if (decnum.isNegative()) { flags |= NEGATIVE_FLAG; } - if (!decnum.isZero()) { + if (decnum.isNaN()) { + flags |= NAN_FLAG; + } else if (decnum.isInfinity()) { + flags |= INFINITY_FLAG; + } else if (!decnum.isZero()) { readDecNumberToBcd(decnum); compact(); } @@ -634,6 +643,7 @@ DecNum& DecimalQuantity::toDecNum(DecNum& output, UErrorCode& status) const { // Special handling for zero if (precision == 0) { output.setTo("0", status); + return output; } // Use the BCD constructor. We need to do a little bit of work to convert, though. @@ -822,6 +832,7 @@ void DecimalQuantity::roundToMagnitude(int32_t magnitude, RoundingMode roundingM // Perform truncation if (position >= precision) { + U_ASSERT(trailingDigit == 0); setBcdToZero(); scale = magnitude; } else { @@ -839,6 +850,10 @@ void DecimalQuantity::roundToMagnitude(int32_t magnitude, RoundingMode roundingM // do not return: use the bubbling logic below } else { setDigitPos(0, 5); + // If the quantity was set to 0, we may need to restore a digit. + if (precision == 0) { + precision = 1; + } // compact not necessary: digit at position 0 is nonzero return; } @@ -916,7 +931,7 @@ UnicodeString DecimalQuantity::toPlainString() const { } if (lower > rReqPos) { lower = rReqPos; - } + } int32_t p = upper; if (p < 0) { sb.append(u'0'); diff --git a/deps/icu-small/source/i18n/number_decimalquantity.h b/deps/icu-small/source/i18n/number_decimalquantity.h index 839424775a0d8d..107c09a96a53d2 100644 --- a/deps/icu-small/source/i18n/number_decimalquantity.h +++ b/deps/icu-small/source/i18n/number_decimalquantity.h @@ -136,7 +136,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { * this method with delta=-3 will change the value to "1.23456". * * @param delta The number of magnitudes of ten to change by. - * @return true if integer overflow occured; false otherwise. + * @return true if integer overflow occurred; false otherwise. */ bool adjustMagnitude(int32_t delta); @@ -166,6 +166,11 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { */ void adjustExponent(int32_t delta); + /** + * Resets the DecimalQuantity to the value before adjustMagnitude and adjustExponent. + */ + void resetExponent(); + /** * @return Whether the value represented by this {@link DecimalQuantity} is * zero, infinity, or NaN. @@ -184,11 +189,11 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { /** @return Whether the value represented by this {@link DecimalQuantity} is not a number. */ bool isNaN() const U_OVERRIDE; - /** + /** * Note: this method incorporates the value of {@code exponent} * (for cases such as compact notation) to return the proper long value * represented by the result. - * @param truncateIfOverflow if false and the number does NOT fit, fails with an assertion error. + * @param truncateIfOverflow if false and the number does NOT fit, fails with an assertion error. */ int64_t toLong(bool truncateIfOverflow = false) const; @@ -428,7 +433,9 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory { /** * Sets the digit in the BCD list. This method only sets the digit; it is the caller's - * responsibility to call {@link #compact} after setting the digit. + * responsibility to call {@link #compact} after setting the digit, and to ensure + * that the precision field is updated to reflect the correct number of digits if a + * nonzero digit is added to the decimal. * * @param position The position of the digit to pop, counted in BCD units from the least * significant digit. If outside the range supported by the implementation, an AssertionError diff --git a/deps/icu-small/source/i18n/number_decimfmtprops.cpp b/deps/icu-small/source/i18n/number_decimfmtprops.cpp index 30481ce5bf0110..7fa58bbc7ab66c 100644 --- a/deps/icu-small/source/i18n/number_decimfmtprops.cpp +++ b/deps/icu-small/source/i18n/number_decimfmtprops.cpp @@ -21,7 +21,7 @@ char kRawDefaultProperties[sizeof(DecimalFormatProperties)]; icu::UInitOnce gDefaultPropertiesInitOnce = U_INITONCE_INITIALIZER; void U_CALLCONV initDefaultProperties(UErrorCode&) { - // can't fail, uses placement new into staticly allocated space. + // can't fail, uses placement new into statically allocated space. new(kRawDefaultProperties) DecimalFormatProperties(); // set to the default instance } @@ -40,6 +40,7 @@ void DecimalFormatProperties::clear() { decimalPatternMatchRequired = false; decimalSeparatorAlwaysShown = false; exponentSignAlwaysShown = false; + currencyAsDecimal = false; formatFailIfMoreThanMaxDigits = false; formatWidth = -1; groupingSize = -1; @@ -88,6 +89,7 @@ DecimalFormatProperties::_equals(const DecimalFormatProperties& other, bool igno eq = eq && currencyUsage == other.currencyUsage; eq = eq && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown; eq = eq && exponentSignAlwaysShown == other.exponentSignAlwaysShown; + eq = eq && currencyAsDecimal == other.currencyAsDecimal; eq = eq && formatFailIfMoreThanMaxDigits == other.formatFailIfMoreThanMaxDigits; eq = eq && formatWidth == other.formatWidth; eq = eq && magnitudeMultiplier == other.magnitudeMultiplier; diff --git a/deps/icu-small/source/i18n/number_decimfmtprops.h b/deps/icu-small/source/i18n/number_decimfmtprops.h index 0ace241adae8ab..5f72f649842e66 100644 --- a/deps/icu-small/source/i18n/number_decimfmtprops.h +++ b/deps/icu-small/source/i18n/number_decimfmtprops.h @@ -105,6 +105,7 @@ struct U_I18N_API DecimalFormatProperties : public UMemory { bool decimalPatternMatchRequired; bool decimalSeparatorAlwaysShown; bool exponentSignAlwaysShown; + bool currencyAsDecimal; bool formatFailIfMoreThanMaxDigits; // ICU4C-only int32_t formatWidth; int32_t groupingSize; diff --git a/deps/icu-small/source/i18n/number_decnum.h b/deps/icu-small/source/i18n/number_decnum.h index 3bb8d107807967..94a0b31bcb5dd7 100644 --- a/deps/icu-small/source/i18n/number_decnum.h +++ b/deps/icu-small/source/i18n/number_decnum.h @@ -56,6 +56,13 @@ class U_I18N_API DecNum : public UMemory { bool isZero() const; + /** Is infinity or NaN */ + bool isSpecial() const; + + bool isInfinity() const; + + bool isNaN() const; + void toString(ByteSink& output, UErrorCode& status) const; inline CharString toCharString(UErrorCode& status) const { diff --git a/deps/icu-small/source/i18n/number_fluent.cpp b/deps/icu-small/source/i18n/number_fluent.cpp index a79f224829d805..fd486afb512249 100644 --- a/deps/icu-small/source/i18n/number_fluent.cpp +++ b/deps/icu-small/source/i18n/number_fluent.cpp @@ -698,6 +698,10 @@ int32_t LocalizedNumberFormatter::getCallCount() const { // Note: toFormat defined in number_asformat.cpp +const DecimalFormatSymbols* LocalizedNumberFormatter::getDecimalFormatSymbols() const { + return fMacros.symbols.getDecimalFormatSymbols(); +} + #if (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(_MSC_VER) // Warning 4661. #pragma warning(pop) diff --git a/deps/icu-small/source/i18n/number_formatimpl.cpp b/deps/icu-small/source/i18n/number_formatimpl.cpp index b2325aa8e591eb..96e3e9e7c69910 100644 --- a/deps/icu-small/source/i18n/number_formatimpl.cpp +++ b/deps/icu-small/source/i18n/number_formatimpl.cpp @@ -352,11 +352,12 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, return nullptr; } fPatternModifier.adoptInstead(patternModifier); - patternModifier->setPatternInfo( - macros.affixProvider != nullptr ? macros.affixProvider - : static_cast(fPatternInfo.getAlias()), - kUndefinedField); - patternModifier->setPatternAttributes(fMicros.sign, isPermille); + const AffixPatternProvider* affixProvider = + macros.affixProvider != nullptr + ? macros.affixProvider + : static_cast(fPatternInfo.getAlias()); + patternModifier->setPatternInfo(affixProvider, kUndefinedField); + patternModifier->setPatternAttributes(fMicros.sign, isPermille, macros.approximately); if (patternModifier->needsPlurals()) { patternModifier->setSymbols( fMicros.symbols, @@ -375,6 +376,11 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe, return nullptr; } + // currencyAsDecimal + if (affixProvider->currencyAsDecimal()) { + fMicros.currencyAsDecimal = patternModifier->getCurrencySymbolForUnitWidth(status); + } + // Outer modifier (CLDR units and currency long names) if (isCldrUnit) { const char *unitDisplayCase = ""; @@ -524,15 +530,27 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti // Add the decimal point if (quantity.getLowerDisplayMagnitude() < 0 || micros.decimal == UNUM_DECIMAL_SEPARATOR_ALWAYS) { - length += string.insert( + if (!micros.currencyAsDecimal.isBogus()) { + length += string.insert( length + index, - micros.useCurrency ? micros.symbols->getSymbol( - DecimalFormatSymbols::ENumberFormatSymbol::kMonetarySeparatorSymbol) : micros - .symbols - ->getSymbol( - DecimalFormatSymbols::ENumberFormatSymbol::kDecimalSeparatorSymbol), + micros.currencyAsDecimal, + {UFIELD_CATEGORY_NUMBER, UNUM_CURRENCY_FIELD}, + status); + } else if (micros.useCurrency) { + length += string.insert( + length + index, + micros.symbols->getSymbol( + DecimalFormatSymbols::ENumberFormatSymbol::kMonetarySeparatorSymbol), {UFIELD_CATEGORY_NUMBER, UNUM_DECIMAL_SEPARATOR_FIELD}, status); + } else { + length += string.insert( + length + index, + micros.symbols->getSymbol( + DecimalFormatSymbols::ENumberFormatSymbol::kDecimalSeparatorSymbol), + {UFIELD_CATEGORY_NUMBER, UNUM_DECIMAL_SEPARATOR_FIELD}, + status); + } } // Add the fraction digits diff --git a/deps/icu-small/source/i18n/number_formatimpl.h b/deps/icu-small/source/i18n/number_formatimpl.h index 5cd549e54a363f..d7be1468b6d7af 100644 --- a/deps/icu-small/source/i18n/number_formatimpl.h +++ b/deps/icu-small/source/i18n/number_formatimpl.h @@ -33,6 +33,12 @@ class NumberFormatterImpl : public UMemory { */ NumberFormatterImpl(const MacroProps ¯os, UErrorCode &status); + /** + * Default constructor; leaves the NumberFormatterImpl in an undefined state. + * Takes an error code to prevent the method from being called accidentally. + */ + NumberFormatterImpl(UErrorCode &) {} + /** * Builds and evaluates an "unsafe" MicroPropsGenerator, which is cheaper but can be used only once. */ @@ -109,12 +115,6 @@ class NumberFormatterImpl : public UMemory { LocalPointer fLongNameMultiplexer; LocalPointer fCompactHandler; - // Value objects possibly used by the number formatting pipeline: - struct Warehouse { - CurrencySymbols fCurrencySymbols; - } fWarehouse; - - NumberFormatterImpl(const MacroProps ¯os, bool safe, UErrorCode &status); MicroProps& preProcessUnsafe(DecimalQuantity &inValue, UErrorCode &status); diff --git a/deps/icu-small/source/i18n/number_grouping.cpp b/deps/icu-small/source/i18n/number_grouping.cpp index 6b1642cfd34abd..9ba639e67e2257 100644 --- a/deps/icu-small/source/i18n/number_grouping.cpp +++ b/deps/icu-small/source/i18n/number_grouping.cpp @@ -47,7 +47,7 @@ Grouper Grouper::forStrategy(UNumberGroupingStrategy grouping) { case UNUM_GROUPING_THOUSANDS: return {3, 3, 1, grouping}; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } diff --git a/deps/icu-small/source/i18n/number_longnames.cpp b/deps/icu-small/source/i18n/number_longnames.cpp index fd23a81a8df840..5a4cf6321c8a40 100644 --- a/deps/icu-small/source/i18n/number_longnames.cpp +++ b/deps/icu-small/source/i18n/number_longnames.cpp @@ -259,20 +259,16 @@ class InflectedPluralSink : public ResourceSink { // See ResourceSink::put(). void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE { - ResourceTable pluralsTable = value.getTable(status); + int32_t pluralIndex = getIndex(key, status); if (U_FAILURE(status)) { return; } - for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) { - int32_t pluralIndex = getIndex(key, status); - if (U_FAILURE(status)) { return; } - if (!outArray[pluralIndex].isBogus()) { - // We already have a pattern - continue; - } - ResourceTable genderTable = value.getTable(status); - ResourceTable caseTable; // This instance has to outlive `value` - if (loadForPluralForm(genderTable, caseTable, value, status)) { - outArray[pluralIndex] = value.getUnicodeString(status); - } + if (!outArray[pluralIndex].isBogus()) { + // We already have a pattern + return; + } + ResourceTable genderTable = value.getTable(status); + ResourceTable caseTable; // This instance has to outlive `value` + if (loadForPluralForm(genderTable, caseTable, value, status)) { + outArray[pluralIndex] = value.getUnicodeString(status); } } @@ -370,18 +366,11 @@ void getInflectedMeasureData(StringPiece subKey, key.append(subKey, status); UErrorCode localStatus = status; - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); if (width == UNUM_UNIT_WIDTH_SHORT) { status = localStatus; return; } - - // TODO(ICU-13353): The fallback to short does not work in ICU4C. - // Manually fall back to short (this is done automatically in Java). - key.clear(); - key.append("unitsShort/", status); - key.append(subKey, status); - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status); } class PluralTableSink : public ResourceSink { @@ -396,20 +385,16 @@ class PluralTableSink : public ResourceSink { } void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE { - ResourceTable pluralsTable = value.getTable(status); + if (uprv_strcmp(key, "case") == 0) { + return; + } + int32_t index = getIndex(key, status); if (U_FAILURE(status)) { return; } - for (int32_t i = 0; pluralsTable.getKeyAndValue(i, key, value); ++i) { - if (uprv_strcmp(key, "case") == 0) { - continue; - } - int32_t index = getIndex(key, status); - if (U_FAILURE(status)) { return; } - if (!outArray[index].isBogus()) { - continue; - } - outArray[index] = value.getUnicodeString(status); - if (U_FAILURE(status)) { return; } + if (!outArray[index].isBogus()) { + return; } + outArray[index] = value.getUnicodeString(status); + if (U_FAILURE(status)) { return; } } private: @@ -490,7 +475,7 @@ void getMeasureData(const Locale &locale, // getInflectedMeasureData after homogenizing data format? Find a unit // test case that demonstrates the incorrect fallback logic (via // regional variant of an inflected language?) - ures_getAllItemsWithFallback(unitsBundle.getAlias(), caseKey.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), caseKey.data(), sink, localStatus); } // TODO(icu-units#138): our fallback logic is not spec-compliant: we @@ -499,20 +484,13 @@ void getMeasureData(const Locale &locale, // either get the spec changed, or add unit tests that warn us if // case="nominative" data differs from no-case data? UErrorCode localStatus = U_ZERO_ERROR; - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), key.data(), sink, localStatus); if (width == UNUM_UNIT_WIDTH_SHORT) { if (U_FAILURE(localStatus)) { status = localStatus; } return; } - - // TODO(ICU-13353): The fallback to short does not work in ICU4C. - // Manually fall back to short (this is done automatically in Java). - key.clear(); - key.append("unitsShort", status); - key.append(subKey, status); - ures_getAllItemsWithFallback(unitsBundle.getAlias(), key.data(), sink, status); } // NOTE: outArray MUST have a length of at least ARRAY_LENGTH. @@ -523,7 +501,7 @@ void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit ¤cy, PluralTableSink sink(outArray); LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_CURR, locale.getName(), &status)); if (U_FAILURE(status)) { return; } - ures_getAllItemsWithFallback(unitsBundle.getAlias(), "CurrencyUnitPatterns", sink, status); + ures_getAllChildrenWithFallback(unitsBundle.getAlias(), "CurrencyUnitPatterns", sink, status); if (U_FAILURE(status)) { return; } for (int32_t i = 0; i < StandardPlural::Form::COUNT; i++) { UnicodeString &pattern = outArray[i]; @@ -693,7 +671,7 @@ class DerivedComponents { * * * NOTE: If U_FAILURE(status), returns an empty string. - */ + */ UnicodeString getDeriveCompoundRule(Locale locale, const char *feature, const char *structure, UErrorCode &status) { StackUResourceBundle derivationsBundle, stackBundle; @@ -1702,7 +1680,7 @@ const Modifier *MixedUnitLongNameHandler::getModifier(Signum /*signum*/, // TODO(icu-units#28): investigate this method when investigating where // ModifierStore::getModifier() gets used. To be sure it remains // unreachable: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; return nullptr; } diff --git a/deps/icu-small/source/i18n/number_longnames.h b/deps/icu-small/source/i18n/number_longnames.h index bca55e010317dc..06949989d7fbcd 100644 --- a/deps/icu-small/source/i18n/number_longnames.h +++ b/deps/icu-small/source/i18n/number_longnames.h @@ -44,7 +44,7 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public * * Mixed units are not supported, use MixedUnitLongNameHandler::forMeasureUnit. * - * This function uses a fillIn intead of returning a pointer, because we + * This function uses a fillIn instead of returning a pointer, because we * want to fill in instances in a MemoryPool (which cannot adopt pointers it * didn't create itself). * @@ -139,7 +139,7 @@ class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStor * Construct a localized MixedUnitLongNameHandler for the specified * MeasureUnit. It must be a MIXED unit. * - * This function uses a fillIn intead of returning a pointer, because we + * This function uses a fillIn instead of returning a pointer, because we * want to fill in instances in a MemoryPool (which cannot adopt pointers it * didn't create itself). * diff --git a/deps/icu-small/source/i18n/number_mapper.cpp b/deps/icu-small/source/i18n/number_mapper.cpp index e2a0d284b7cf5d..2d4d47a094d999 100644 --- a/deps/icu-small/source/i18n/number_mapper.cpp +++ b/deps/icu-small/source/i18n/number_mapper.cpp @@ -381,7 +381,10 @@ void PropertiesAffixPatternProvider::setTo(const DecimalFormatProperties& proper AffixUtils::hasCurrencySymbols(ppp, status) || AffixUtils::hasCurrencySymbols(psp, status) || AffixUtils::hasCurrencySymbols(npp, status) || - AffixUtils::hasCurrencySymbols(nsp, status)); + AffixUtils::hasCurrencySymbols(nsp, status) || + properties.currencyAsDecimal); + + fCurrencyAsDecimal = properties.currencyAsDecimal; } char16_t PropertiesAffixPatternProvider::charAt(int flags, int i) const { @@ -446,6 +449,10 @@ bool PropertiesAffixPatternProvider::hasBody() const { return true; } +bool PropertiesAffixPatternProvider::currencyAsDecimal() const { + return fCurrencyAsDecimal; +} + void CurrencyPluralInfoAffixProvider::setTo(const CurrencyPluralInfo& cpi, const DecimalFormatProperties& properties, @@ -506,5 +513,9 @@ bool CurrencyPluralInfoAffixProvider::hasBody() const { return affixesByPlural[StandardPlural::OTHER].hasBody(); } +bool CurrencyPluralInfoAffixProvider::currencyAsDecimal() const { + return affixesByPlural[StandardPlural::OTHER].currencyAsDecimal(); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/deps/icu-small/source/i18n/number_mapper.h b/deps/icu-small/source/i18n/number_mapper.h index 9ecd776b3b4795..8879b7a94ea372 100644 --- a/deps/icu-small/source/i18n/number_mapper.h +++ b/deps/icu-small/source/i18n/number_mapper.h @@ -56,12 +56,15 @@ class PropertiesAffixPatternProvider : public AffixPatternProvider, public UMemo bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: UnicodeString posPrefix; UnicodeString posSuffix; UnicodeString negPrefix; UnicodeString negSuffix; bool isCurrencyPattern; + bool fCurrencyAsDecimal; PropertiesAffixPatternProvider() = default; // puts instance in valid but undefined state @@ -107,6 +110,8 @@ class CurrencyPluralInfoAffixProvider : public AffixPatternProvider, public UMem bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: PropertiesAffixPatternProvider affixesByPlural[StandardPlural::COUNT]; diff --git a/deps/icu-small/source/i18n/number_microprops.h b/deps/icu-small/source/i18n/number_microprops.h index a18d5fc470eda1..c34e7c17e97aa5 100644 --- a/deps/icu-small/source/i18n/number_microprops.h +++ b/deps/icu-small/source/i18n/number_microprops.h @@ -18,6 +18,7 @@ #include "number_roundingutils.h" #include "decNumber.h" #include "charstr.h" +#include "util.h" U_NAMESPACE_BEGIN namespace number { namespace impl { @@ -83,6 +84,9 @@ struct MicroProps : public MicroPropsGenerator { bool useCurrency; char nsName[9]; + // Currency symbol to be used as the decimal separator + UnicodeString currencyAsDecimal = ICU_Utility::makeBogusString(); + // No ownership: must point at a string which will outlive MicroProps // instances, e.g. a string with static storage duration, or just a string // that will never be deallocated or modified. diff --git a/deps/icu-small/source/i18n/number_modifiers.cpp b/deps/icu-small/source/i18n/number_modifiers.cpp index b7d825f499e4d2..b74bfd06fc8e76 100644 --- a/deps/icu-small/source/i18n/number_modifiers.cpp +++ b/deps/icu-small/source/i18n/number_modifiers.cpp @@ -92,13 +92,13 @@ bool ConstantAffixModifier::isStrong() const { bool ConstantAffixModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void ConstantAffixModifier::getParameters(Parameters& output) const { (void)output; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } bool ConstantAffixModifier::semanticallyEquivalent(const Modifier& other) const { @@ -181,7 +181,7 @@ bool SimpleModifier::isStrong() const { bool SimpleModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void SimpleModifier::getParameters(Parameters& output) const { diff --git a/deps/icu-small/source/i18n/number_modifiers.h b/deps/icu-small/source/i18n/number_modifiers.h index 375254310ca056..09af3f48813c88 100644 --- a/deps/icu-small/source/i18n/number_modifiers.h +++ b/deps/icu-small/source/i18n/number_modifiers.h @@ -273,7 +273,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory { }; /** - * This implementation of ModifierStore adopts Modifer pointers. + * This implementation of ModifierStore adopts Modifier pointers. */ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory { public: diff --git a/deps/icu-small/source/i18n/number_patternmodifier.cpp b/deps/icu-small/source/i18n/number_patternmodifier.cpp index 314e7cb75ee169..b6543b262b42db 100644 --- a/deps/icu-small/source/i18n/number_patternmodifier.cpp +++ b/deps/icu-small/source/i18n/number_patternmodifier.cpp @@ -28,9 +28,13 @@ void MutablePatternModifier::setPatternInfo(const AffixPatternProvider* patternI fField = field; } -void MutablePatternModifier::setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille) { +void MutablePatternModifier::setPatternAttributes( + UNumberSignDisplay signDisplay, + bool perMille, + bool approximately) { fSignDisplay = signDisplay; fPerMilleReplacesPercent = perMille; + fApproximately = approximately; } void MutablePatternModifier::setSymbols(const DecimalFormatSymbols* symbols, @@ -244,19 +248,19 @@ bool MutablePatternModifier::isStrong() const { bool MutablePatternModifier::containsField(Field field) const { (void)field; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void MutablePatternModifier::getParameters(Parameters& output) const { (void)output; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } bool MutablePatternModifier::semanticallyEquivalent(const Modifier& other) const { (void)other; // This method is not currently used. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } int32_t MutablePatternModifier::insertPrefix(FormattedStringBuilder& sb, int position, UErrorCode& status) { @@ -277,6 +281,7 @@ void MutablePatternModifier::prepareAffix(bool isPrefix) { *fPatternInfo, isPrefix, PatternStringUtils::resolveSignDisplay(fSignDisplay, fSignum), + fApproximately, fPlural, fPerMilleReplacesPercent, currentAffix); @@ -289,28 +294,14 @@ UnicodeString MutablePatternModifier::getSymbol(AffixPatternType type) const { return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kMinusSignSymbol); case AffixPatternType::TYPE_PLUS_SIGN: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPlusSignSymbol); + case AffixPatternType::TYPE_APPROXIMATELY_SIGN: + return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol); case AffixPatternType::TYPE_PERCENT: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPercentSymbol); case AffixPatternType::TYPE_PERMILLE: return fSymbols->getSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kPerMillSymbol); - case AffixPatternType::TYPE_CURRENCY_SINGLE: { - switch (fUnitWidth) { - case UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW: - return fCurrencySymbols.getNarrowCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT: - return fCurrencySymbols.getCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE: - return fCurrencySymbols.getIntlCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL: - return fCurrencySymbols.getFormalCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT: - return fCurrencySymbols.getVariantCurrencySymbol(localStatus); - case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN: - return UnicodeString(); - default: - return fCurrencySymbols.getCurrencySymbol(localStatus); - } - } + case AffixPatternType::TYPE_CURRENCY_SINGLE: + return getCurrencySymbolForUnitWidth(localStatus); case AffixPatternType::TYPE_CURRENCY_DOUBLE: return fCurrencySymbols.getIntlCurrencySymbol(localStatus); case AffixPatternType::TYPE_CURRENCY_TRIPLE: @@ -324,13 +315,32 @@ UnicodeString MutablePatternModifier::getSymbol(AffixPatternType type) const { case AffixPatternType::TYPE_CURRENCY_QUINT: return UnicodeString(u"\uFFFD"); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; + } +} + +UnicodeString MutablePatternModifier::getCurrencySymbolForUnitWidth(UErrorCode& status) const { + switch (fUnitWidth) { + case UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW: + return fCurrencySymbols.getNarrowCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT: + return fCurrencySymbols.getCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE: + return fCurrencySymbols.getIntlCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL: + return fCurrencySymbols.getFormalCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT: + return fCurrencySymbols.getVariantCurrencySymbol(status); + case UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN: + return UnicodeString(); + default: + return fCurrencySymbols.getCurrencySymbol(status); } } UnicodeString MutablePatternModifier::toUnicodeString() const { // Never called by AffixUtils - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/deps/icu-small/source/i18n/number_patternmodifier.h b/deps/icu-small/source/i18n/number_patternmodifier.h index 5ba842d5692460..4f825e1ed21916 100644 --- a/deps/icu-small/source/i18n/number_patternmodifier.h +++ b/deps/icu-small/source/i18n/number_patternmodifier.h @@ -116,8 +116,10 @@ class U_I18N_API MutablePatternModifier * Whether to force a plus sign on positive numbers. * @param perMille * Whether to substitute the percent sign in the pattern with a permille sign. + * @param approximately + * Whether to prepend approximately to the sign */ - void setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille); + void setPatternAttributes(UNumberSignDisplay signDisplay, bool perMille, bool approximately); /** * Sets locale-specific details that affect the symbols substituted into the pattern string affixes. @@ -193,6 +195,11 @@ class U_I18N_API MutablePatternModifier */ UnicodeString getSymbol(AffixPatternType type) const U_OVERRIDE; + /** + * Returns the currency symbol for the unit width specified in setSymbols() + */ + UnicodeString getCurrencySymbolForUnitWidth(UErrorCode& status) const; + UnicodeString toUnicodeString() const; private: @@ -204,6 +211,7 @@ class U_I18N_API MutablePatternModifier Field fField; UNumberSignDisplay fSignDisplay; bool fPerMilleReplacesPercent; + bool fApproximately; // Symbol details (initialized in setSymbols) const DecimalFormatSymbols *fSymbols; diff --git a/deps/icu-small/source/i18n/number_patternstring.cpp b/deps/icu-small/source/i18n/number_patternstring.cpp index ac9e8b7e8e4d75..e819d39e96769d 100644 --- a/deps/icu-small/source/i18n/number_patternstring.cpp +++ b/deps/icu-small/source/i18n/number_patternstring.cpp @@ -50,7 +50,7 @@ PatternParser::parseToExistingProperties(const UnicodeString& pattern, DecimalFo char16_t ParsedPatternInfo::charAt(int32_t flags, int32_t index) const { const Endpoints& endpoints = getEndpoints(flags); if (index < 0 || index >= endpoints.end - endpoints.start) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } return pattern.charAt(endpoints.start + index); } @@ -115,6 +115,10 @@ bool ParsedPatternInfo::hasBody() const { return positive.integerTotal > 0; } +bool ParsedPatternInfo::currencyAsDecimal() const { + return positive.hasCurrencyDecimal; +} + ///////////////////////////////////////////////////// /// BEGIN RECURSIVE DESCENT PARSER IMPLEMENTATION /// ///////////////////////////////////////////////////// @@ -127,8 +131,20 @@ UChar32 ParsedPatternInfo::ParserState::peek() { } } +UChar32 ParsedPatternInfo::ParserState::peek2() { + if (offset == pattern.length()) { + return -1; + } + int32_t cp1 = pattern.char32At(offset); + int32_t offset2 = offset + U16_LENGTH(cp1); + if (offset2 == pattern.length()) { + return -1; + } + return pattern.char32At(offset2); +} + UChar32 ParsedPatternInfo::ParserState::next() { - int codePoint = peek(); + int32_t codePoint = peek(); offset += U16_LENGTH(codePoint); return codePoint; } @@ -286,6 +302,35 @@ void ParsedPatternInfo::consumeFormat(UErrorCode& status) { currentSubpattern->widthExceptAffixes += 1; consumeFractionFormat(status); if (U_FAILURE(status)) { return; } + } else if (state.peek() == u'¤') { + // Check if currency is a decimal separator + switch (state.peek2()) { + case u'#': + case u'0': + case u'1': + case u'2': + case u'3': + case u'4': + case u'5': + case u'6': + case u'7': + case u'8': + case u'9': + break; + default: + // Currency symbol followed by a non-numeric character; + // treat as a normal affix. + return; + } + // Currency symbol is followed by a numeric character; + // treat as a decimal separator. + currentSubpattern->hasCurrencySign = true; + currentSubpattern->hasCurrencyDecimal = true; + currentSubpattern->hasDecimal = true; + currentSubpattern->widthExceptAffixes += 1; + state.next(); // consume the symbol + consumeFractionFormat(status); + if (U_FAILURE(status)) { return; } } } @@ -565,6 +610,9 @@ PatternParser::patternInfoToProperties(DecimalFormatProperties& properties, Pars properties.decimalSeparatorAlwaysShown = false; } + // Persist the currency as decimal separator + properties.currencyAsDecimal = positive.hasCurrencyDecimal; + // Scientific notation settings if (positive.exponentZeros > 0) { properties.exponentSignAlwaysShown = positive.exponentHasPlusSign; @@ -750,7 +798,11 @@ UnicodeString PatternStringUtils::propertiesToPatternString(const DecimalFormatP } // Decimal separator if (magnitude == 0 && (alwaysShowDecimal || mN < 0)) { - sb.append(u'.'); + if (properties.currencyAsDecimal) { + sb.append(u'¤'); + } else { + sb.append(u'.'); + } } if (!useGrouping) { continue; @@ -820,7 +872,7 @@ UnicodeString PatternStringUtils::propertiesToPatternString(const DecimalFormatP // Copy the positive digit format into the negative. // This is optional; the pattern is the same as if '#' were appended here instead. // NOTE: It is not safe to append the UnicodeString to itself, so we need to copy. - // See http://bugs.icu-project.org/trac/ticket/13707 + // See https://unicode-org.atlassian.net/browse/ICU-13707 UnicodeString copy(sb); sb.append(copy, afterPrefixPos, beforeSuffixPos - afterPrefixPos); sb.append(affixProvider.get().getString(AffixPatternProvider::AFFIX_NEG_SUFFIX)); @@ -869,6 +921,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo UnicodeString table[LEN][2]; int standIdx = toLocalized ? 0 : 1; int localIdx = toLocalized ? 1 : 0; + // TODO: Add approximately sign here? table[0][standIdx] = u"%"; table[0][localIdx] = symbols.getConstSymbol(DecimalFormatSymbols::kPercentSymbol); table[1][standIdx] = u"‰"; @@ -1001,6 +1054,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, PatternSignType patternSignType, + bool approximately, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output) { @@ -1012,7 +1066,7 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& // (If not, we will use the positive subpattern.) bool useNegativeAffixPattern = patternInfo.hasNegativeSubpattern() && (patternSignType == PATTERN_SIGN_TYPE_NEG - || (patternInfo.negativeHasMinusSign() && plusReplacesMinusSign)); + || (patternInfo.negativeHasMinusSign() && (plusReplacesMinusSign || approximately))); // Resolve the flags for the affix pattern. int flags = 0; @@ -1034,10 +1088,24 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& } else if (patternSignType == PATTERN_SIGN_TYPE_NEG) { prependSign = true; } else { - prependSign = plusReplacesMinusSign; + prependSign = plusReplacesMinusSign || approximately; } - // Compute the length of the affix pattern. + // What symbols should take the place of the sign placeholder? + const char16_t* signSymbols = u"-"; + if (approximately) { + if (plusReplacesMinusSign) { + signSymbols = u"~+"; + } else if (patternSignType == PATTERN_SIGN_TYPE_NEG) { + signSymbols = u"~-"; + } else { + signSymbols = u"~"; + } + } else if (plusReplacesMinusSign) { + signSymbols = u"+"; + } + + // Compute the number of tokens in the affix pattern (signSymbols is considered one token). int length = patternInfo.length(flags) + (prependSign ? 1 : 0); // Finally, set the result into the StringBuilder. @@ -1051,8 +1119,13 @@ void PatternStringUtils::patternInfoToStringBuilder(const AffixPatternProvider& } else { candidate = patternInfo.charAt(flags, index); } - if (plusReplacesMinusSign && candidate == u'-') { - candidate = u'+'; + if (candidate == u'-') { + if (u_strlen(signSymbols) == 1) { + candidate = signSymbols[0]; + } else { + output.append(signSymbols[0]); + candidate = signSymbols[1]; + } } if (perMilleReplacesPercent && candidate == u'%') { candidate = u'‰'; @@ -1127,7 +1200,7 @@ PatternSignType PatternStringUtils::resolveSignDisplay(UNumberSignDisplay signDi break; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; return PATTERN_SIGN_TYPE_POS; } diff --git a/deps/icu-small/source/i18n/number_patternstring.h b/deps/icu-small/source/i18n/number_patternstring.h index 3e962cc134f98f..94afda372296ae 100644 --- a/deps/icu-small/source/i18n/number_patternstring.h +++ b/deps/icu-small/source/i18n/number_patternstring.h @@ -62,6 +62,7 @@ struct U_I18N_API ParsedSubpatternInfo { bool hasPercentSign = false; bool hasPerMilleSign = false; bool hasCurrencySign = false; + bool hasCurrencyDecimal = false; bool hasMinusSign = false; bool hasPlusSign = false; @@ -104,6 +105,8 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor bool hasBody() const U_OVERRIDE; + bool currencyAsDecimal() const U_OVERRIDE; + private: struct U_I18N_API ParserState { const UnicodeString& pattern; // reference to the parent @@ -119,8 +122,13 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor return *this; } + /** Returns the next code point, or -1 if string is too short. */ UChar32 peek(); + /** Returns the code point after the next code point, or -1 if string is too short. */ + UChar32 peek2(); + + /** Returns the next code point and then steps forward. */ UChar32 next(); // TODO: We don't currently do anything with the message string. @@ -243,9 +251,9 @@ class U_I18N_API PatternStringUtils { * it should not be ignored if maxFrac is 2 or more (but a roundingIncrement of * 0.005 is treated like 0.001 for significance). * - * This test is needed for both NumberPropertyMapper::oldToNew and + * This test is needed for both NumberPropertyMapper::oldToNew and * PatternStringUtils::propertiesToPatternString. In Java it cannot be - * exported by NumberPropertyMapper (package provate) so it is in + * exported by NumberPropertyMapper (package private) so it is in * PatternStringUtils, do the same in C. * * @param roundIncr @@ -308,6 +316,7 @@ class U_I18N_API PatternStringUtils { */ static void patternInfoToStringBuilder(const AffixPatternProvider& patternInfo, bool isPrefix, PatternSignType patternSignType, + bool approximately, StandardPlural::Form plural, bool perMilleReplacesPercent, UnicodeString& output); diff --git a/deps/icu-small/source/i18n/number_rounding.cpp b/deps/icu-small/source/i18n/number_rounding.cpp index 40392ee857e493..877df63c8f68ef 100644 --- a/deps/icu-small/source/i18n/number_rounding.cpp +++ b/deps/icu-small/source/i18n/number_rounding.cpp @@ -13,6 +13,7 @@ #include "double-conversion.h" #include "number_roundingutils.h" #include "number_skeletons.h" +#include "number_decnum.h" #include "putilimp.h" #include "string_segment.h" @@ -35,8 +36,10 @@ void number::impl::parseIncrementOption(const StringSegment &segment, // Utilize DecimalQuantity/decNumber to parse this for us. DecimalQuantity dq; UErrorCode localStatus = U_ZERO_ERROR; - dq.setToDecNumber({buffer.data(), buffer.length()}, localStatus); - if (U_FAILURE(localStatus)) { + DecNum decnum; + decnum.setTo({buffer.data(), buffer.length()}, localStatus); + dq.setToDecNum(decnum, localStatus); + if (U_FAILURE(localStatus) || decnum.isSpecial()) { // throw new SkeletonSyntaxException("Invalid rounding increment", segment, e); status = U_NUMBER_SKELETON_SYNTAX_ERROR; return; @@ -498,10 +501,10 @@ void RoundingImpl::apply(impl::DecimalQuantity &value, UErrorCode& status) const case Precision::RND_CURRENCY: // Call .withCurrency() before .apply()! - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (fPrecision.fTrailingZeroDisplay == UNUM_TRAILING_ZERO_AUTO || diff --git a/deps/icu-small/source/i18n/number_scientific.cpp b/deps/icu-small/source/i18n/number_scientific.cpp index 33862d7a887ef4..d365d982d4ce85 100644 --- a/deps/icu-small/source/i18n/number_scientific.cpp +++ b/deps/icu-small/source/i18n/number_scientific.cpp @@ -96,7 +96,7 @@ bool ScientificModifier::isStrong() const { bool ScientificModifier::containsField(Field field) const { (void)field; // This method is not used for inner modifiers. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } void ScientificModifier::getParameters(Parameters& output) const { @@ -115,7 +115,7 @@ bool ScientificModifier::semanticallyEquivalent(const Modifier& other) const { // Note: Visual Studio does not compile this function without full name space. Why? icu::number::impl::ScientificHandler::ScientificHandler(const Notation *notation, const DecimalFormatSymbols *symbols, - const MicroPropsGenerator *parent) : + const MicroPropsGenerator *parent) : fSettings(notation->fUnion.scientific), fSymbols(symbols), fParent(parent) {} void ScientificHandler::processQuantity(DecimalQuantity &quantity, MicroProps µs, diff --git a/deps/icu-small/source/i18n/number_scientific.h b/deps/icu-small/source/i18n/number_scientific.h index a55d5ed1d410de..a40a6e416d1929 100644 --- a/deps/icu-small/source/i18n/number_scientific.h +++ b/deps/icu-small/source/i18n/number_scientific.h @@ -52,7 +52,7 @@ class ScientificHandler : public UMemory, public MicroPropsGenerator, public Mul int32_t getMultiplier(int32_t magnitude) const U_OVERRIDE; private: - const Notation::ScientificSettings& fSettings; + const Notation::ScientificSettings fSettings; const DecimalFormatSymbols *fSymbols; const MicroPropsGenerator *fParent; diff --git a/deps/icu-small/source/i18n/number_skeletons.cpp b/deps/icu-small/source/i18n/number_skeletons.cpp index 97d74303a4358e..de70c5cedff3ca 100644 --- a/deps/icu-small/source/i18n/number_skeletons.cpp +++ b/deps/icu-small/source/i18n/number_skeletons.cpp @@ -74,6 +74,7 @@ void U_CALLCONV initNumberSkeletons(UErrorCode& status) { b.add(u"rounding-mode-half-down", STEM_ROUNDING_MODE_HALF_DOWN, status); b.add(u"rounding-mode-half-up", STEM_ROUNDING_MODE_HALF_UP, status); b.add(u"rounding-mode-unnecessary", STEM_ROUNDING_MODE_UNNECESSARY, status); + b.add(u"integer-width-trunc", STEM_INTEGER_WIDTH_TRUNC, status); b.add(u"group-off", STEM_GROUP_OFF, status); b.add(u"group-min2", STEM_GROUP_MIN2, status); b.add(u"group-auto", STEM_GROUP_AUTO, status); @@ -176,7 +177,7 @@ Notation stem_to_object::notation(skeleton::StemEnum stem) { case STEM_NOTATION_SIMPLE: return Notation::simple(); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -189,7 +190,7 @@ MeasureUnit stem_to_object::unit(skeleton::StemEnum stem) { case STEM_PERMILLE: return MeasureUnit::getPermille(); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -204,7 +205,7 @@ Precision stem_to_object::precision(skeleton::StemEnum stem) { case STEM_PRECISION_CURRENCY_CASH: return Precision::currency(UCURR_USAGE_CASH); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -233,7 +234,7 @@ UNumberFormatRoundingMode stem_to_object::roundingMode(skeleton::StemEnum stem) case STEM_ROUNDING_MODE_UNNECESSARY: return UNUM_ROUND_UNNECESSARY; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -348,7 +349,7 @@ void enum_to_stem_string::roundingMode(UNumberFormatRoundingMode value, UnicodeS sb.append(u"rounding-mode-unnecessary", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -370,7 +371,7 @@ void enum_to_stem_string::groupingStrategy(UNumberGroupingStrategy value, Unicod sb.append(u"group-thousands", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -398,7 +399,7 @@ void enum_to_stem_string::unitWidth(UNumberUnitWidth value, UnicodeString& sb) { sb.append(u"unit-width-hidden", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -432,7 +433,7 @@ void enum_to_stem_string::signDisplay(UNumberSignDisplay value, UnicodeString& s sb.append(u"sign-accounting-negative", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -446,7 +447,7 @@ enum_to_stem_string::decimalSeparatorDisplay(UNumberDecimalSeparatorDisplay valu sb.append(u"decimal-always", -1); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -700,6 +701,11 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se macros.roundingMode = stem_to_object::roundingMode(stem); return STATE_NULL; + case STEM_INTEGER_WIDTH_TRUNC: + CHECK_NULL(seen, integerWidth, status); + macros.integerWidth = IntegerWidth::zeroFillTo(0).truncateAt(0); + return STATE_NULL; + case STEM_GROUP_OFF: case STEM_GROUP_MIN2: case STEM_GROUP_AUTO: @@ -785,7 +791,7 @@ skeleton::parseStem(const StringSegment& segment, const UCharsTrie& stemTrie, Se return STATE_SCALE; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -1352,7 +1358,9 @@ bool blueprint_helpers::parseFracSigOption(const StringSegment& segment, MacroPr priority = UNUM_ROUNDING_PRIORITY_STRICT; offset++; } else { - U_ASSERT(offset < segment.length()); + // Invalid digits option for fraction rounder + status = U_NUMBER_SKELETON_SYNTAX_ERROR; + return false; } if (offset < segment.length()) { // Invalid digits option for fraction rounder @@ -1391,18 +1399,14 @@ void blueprint_helpers::parseIncrementOption(const StringSegment &segment, Macro number::impl::parseIncrementOption(segment, macros.precision, status); } -void blueprint_helpers::generateIncrementOption(double increment, int32_t trailingZeros, UnicodeString& sb, +void blueprint_helpers::generateIncrementOption(double increment, int32_t minFrac, UnicodeString& sb, UErrorCode&) { // Utilize DecimalQuantity/double_conversion to format this for us. DecimalQuantity dq; dq.setToDouble(increment); dq.roundToInfinity(); + dq.setMinFraction(minFrac); sb.append(dq.toPlainString()); - - // We might need to append extra trailing zeros for min fraction... - if (trailingZeros > 0) { - appendMultiple(sb, u'0', trailingZeros); - } } void blueprint_helpers::parseIntegerWidthOption(const StringSegment& segment, MacroProps& macros, @@ -1491,7 +1495,7 @@ void blueprint_helpers::parseScaleOption(const StringSegment& segment, MacroProp LocalPointer decnum(new DecNum(), status); if (U_FAILURE(status)) { return; } decnum->setTo({buffer.data(), buffer.length()}, status); - if (U_FAILURE(status)) { + if (U_FAILURE(status) || decnum->isSpecial()) { // This is a skeleton syntax error; don't let the low-level decnum error bubble up status = U_NUMBER_SKELETON_SYNTAX_ERROR; return; @@ -1626,7 +1630,7 @@ bool GeneratorHelpers::precision(const MacroProps& macros, UnicodeString& sb, UE sb.append(u"precision-increment/", -1); blueprint_helpers::generateIncrementOption( impl.fIncrement, - impl.fMinFrac - impl.fMaxFrac, + impl.fMinFrac, sb, status); } else if (macros.precision.fType == Precision::RND_CURRENCY) { @@ -1677,10 +1681,15 @@ bool GeneratorHelpers::integerWidth(const MacroProps& macros, UnicodeString& sb, // Error or Default return false; } + const auto& minMaxInt = macros.integerWidth.fUnion.minMaxInt; + if (minMaxInt.fMinInt == 0 && minMaxInt.fMaxInt == 0) { + sb.append(u"integer-width-trunc", -1); + return true; + } sb.append(u"integer-width/", -1); blueprint_helpers::generateIntegerWidthOption( - macros.integerWidth.fUnion.minMaxInt.fMinInt, - macros.integerWidth.fUnion.minMaxInt.fMaxInt, + minMaxInt.fMinInt, + minMaxInt.fMaxInt, sb, status); return true; diff --git a/deps/icu-small/source/i18n/number_skeletons.h b/deps/icu-small/source/i18n/number_skeletons.h index af636504283059..be41f1b3237a94 100644 --- a/deps/icu-small/source/i18n/number_skeletons.h +++ b/deps/icu-small/source/i18n/number_skeletons.h @@ -92,6 +92,7 @@ enum StemEnum { STEM_ROUNDING_MODE_HALF_DOWN, STEM_ROUNDING_MODE_HALF_UP, STEM_ROUNDING_MODE_UNNECESSARY, + STEM_INTEGER_WIDTH_TRUNC, STEM_GROUP_OFF, STEM_GROUP_MIN2, STEM_GROUP_AUTO, @@ -285,7 +286,7 @@ bool parseTrailingZeroOption(const StringSegment& segment, MacroProps& macros, U void parseIncrementOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status); void -generateIncrementOption(double increment, int32_t trailingZeros, UnicodeString& sb, UErrorCode& status); +generateIncrementOption(double increment, int32_t minFrac, UnicodeString& sb, UErrorCode& status); void parseIntegerWidthOption(const StringSegment& segment, MacroProps& macros, UErrorCode& status); diff --git a/deps/icu-small/source/i18n/number_types.h b/deps/icu-small/source/i18n/number_types.h index 8078851ba3fdb3..84846efb9242ac 100644 --- a/deps/icu-small/source/i18n/number_types.h +++ b/deps/icu-small/source/i18n/number_types.h @@ -62,26 +62,29 @@ enum AffixPatternType { // Represents a plus sign symbol '+'. TYPE_PLUS_SIGN = -2, + // Represents an approximately sign symbol '~'. + TYPE_APPROXIMATELY_SIGN = -3, + // Represents a percent sign symbol '%'. - TYPE_PERCENT = -3, + TYPE_PERCENT = -4, // Represents a permille sign symbol '‰'. - TYPE_PERMILLE = -4, + TYPE_PERMILLE = -5, // Represents a single currency symbol '¤'. - TYPE_CURRENCY_SINGLE = -5, + TYPE_CURRENCY_SINGLE = -6, // Represents a double currency symbol '¤¤'. - TYPE_CURRENCY_DOUBLE = -6, + TYPE_CURRENCY_DOUBLE = -7, // Represents a triple currency symbol '¤¤¤'. - TYPE_CURRENCY_TRIPLE = -7, + TYPE_CURRENCY_TRIPLE = -8, // Represents a quadruple currency symbol '¤¤¤¤'. - TYPE_CURRENCY_QUAD = -8, + TYPE_CURRENCY_QUAD = -9, // Represents a quintuple currency symbol '¤¤¤¤¤'. - TYPE_CURRENCY_QUINT = -9, + TYPE_CURRENCY_QUINT = -10, // Represents a sequence of six or more currency symbols. TYPE_CURRENCY_OVERFLOW = -15 @@ -137,6 +140,11 @@ class U_I18N_API AffixPatternProvider { * number instead of rendering the number. */ virtual bool hasBody() const = 0; + + /** + * True if the currency symbol should replace the decimal separator. + */ + virtual bool currencyAsDecimal() const = 0; }; diff --git a/deps/icu-small/source/i18n/number_usageprefs.cpp b/deps/icu-small/source/i18n/number_usageprefs.cpp index ed426da086e327..5d93d12cce78f1 100644 --- a/deps/icu-small/source/i18n/number_usageprefs.cpp +++ b/deps/icu-small/source/i18n/number_usageprefs.cpp @@ -133,7 +133,7 @@ void mixedMeasuresToMicros(const MaybeStackVector &measures, DecimalQua default: U_ASSERT(0 == "Found a Measure Number which is neither a double nor an int"); - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; break; } diff --git a/deps/icu-small/source/i18n/number_utils.cpp b/deps/icu-small/source/i18n/number_utils.cpp index bef7ea6c61f30b..ad7053214077b0 100644 --- a/deps/icu-small/source/i18n/number_utils.cpp +++ b/deps/icu-small/source/i18n/number_utils.cpp @@ -70,7 +70,7 @@ const char16_t* utils::getPatternForStyle(const Locale& locale, const char* nsNa break; default: patternKey = "decimalFormat"; // silence compiler error - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } LocalUResourceBundlePointer res(ures_open(nullptr, locale.getName(), &status)); if (U_FAILURE(status)) { return u""; } @@ -180,12 +180,6 @@ void DecNum::_setTo(const char* str, int32_t maxDigits, UErrorCode& status) { status = U_UNSUPPORTED_ERROR; return; } - - // For consistency with Java BigDecimal, no support for DecNum that is NaN or Infinity! - if (decNumberIsSpecial(fData.getAlias())) { - status = U_UNSUPPORTED_ERROR; - return; - } } void @@ -252,6 +246,18 @@ bool DecNum::isZero() const { return decNumberIsZero(fData.getAlias()); } +bool DecNum::isSpecial() const { + return decNumberIsSpecial(fData.getAlias()); +} + +bool DecNum::isInfinity() const { + return decNumberIsInfinite(fData.getAlias()); +} + +bool DecNum::isNaN() const { + return decNumberIsNaN(fData.getAlias()); +} + void DecNum::toString(ByteSink& output, UErrorCode& status) const { if (U_FAILURE(status)) { return; diff --git a/deps/icu-small/source/i18n/numfmt.cpp b/deps/icu-small/source/i18n/numfmt.cpp index bffefa5e3998b8..b8ce1c930f9dbe 100644 --- a/deps/icu-small/source/i18n/numfmt.cpp +++ b/deps/icu-small/source/i18n/numfmt.cpp @@ -122,7 +122,7 @@ static const UChar * const gLastResortNumberPatterns[UNUM_FORMAT_STYLE_COUNT] = gLastResortIsoCurrencyPat, // UNUM_CURRENCY_ISO gLastResortPluralCurrencyPat, // UNUM_CURRENCY_PLURAL gLastResortAccountingCurrencyPat, // UNUM_CURRENCY_ACCOUNTING - gLastResortCurrencyPat, // UNUM_CASH_CURRENCY + gLastResortCurrencyPat, // UNUM_CASH_CURRENCY NULL, // UNUM_DECIMAL_COMPACT_SHORT NULL, // UNUM_DECIMAL_COMPACT_LONG gLastResortCurrencyPat, // UNUM_CURRENCY_STANDARD @@ -285,7 +285,7 @@ NumberFormat::operator=(const NumberFormat& rhs) // ------------------------------------- -UBool +bool NumberFormat::operator==(const Format& that) const { // Format::operator== guarantees this cast is safe @@ -434,13 +434,13 @@ NumberFormat::format(int64_t number, // ------------------------------------- -// Decimal Number format() default implementation +// Decimal Number format() default implementation // Subclasses do not normally override this function, but rather the DigitList // formatting functions.. // The expected call chain from here is // this function -> // NumberFormat::format(Formattable -> -// DecimalFormat::format(DigitList +// DecimalFormat::format(DigitList // // Or, for subclasses of Formattable that do not know about DigitList, // this Function -> @@ -860,7 +860,7 @@ class ICUNumberFormatFactory : public ICUResourceBundleFactory { public: virtual ~ICUNumberFormatFactory(); protected: - virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /* service */, UErrorCode& status) const { + virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /* service */, UErrorCode& status) const override { return NumberFormat::makeInstance(loc, (UNumberFormatStyle)kind, status); } }; @@ -884,7 +884,7 @@ class NFFactory : public LocaleKeyFactory { virtual ~NFFactory(); - virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const + virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override { if (handlesKey(key, status)) { const LocaleKey& lkey = (const LocaleKey&)key; @@ -907,7 +907,7 @@ class NFFactory : public LocaleKeyFactory { * otherwise). This can be called often and might need to be * cached if it is expensive to create. */ - virtual const Hashtable* getSupportedIDs(UErrorCode& status) const + virtual const Hashtable* getSupportedIDs(UErrorCode& status) const override { if (U_SUCCESS(status)) { if (!_ids) { @@ -943,11 +943,11 @@ class ICUNumberFormatService : public ICULocaleService { virtual ~ICUNumberFormatService(); - virtual UObject* cloneInstance(UObject* instance) const { + virtual UObject* cloneInstance(UObject* instance) const override { return ((NumberFormat*)instance)->clone(); } - virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /* actualID */, UErrorCode& status) const { + virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /* actualID */, UErrorCode& status) const override { LocaleKey& lkey = (LocaleKey&)key; int32_t kind = lkey.kind(); Locale loc; @@ -955,7 +955,7 @@ class ICUNumberFormatService : public ICULocaleService { return NumberFormat::makeInstance(loc, (UNumberFormatStyle)kind, status); } - virtual UBool isDefault() const { + virtual UBool isDefault() const override { return countFactories() == 1; } }; @@ -1066,7 +1066,7 @@ NumberFormat::createInstance(const Locale& loc, UNumberFormatStyle kind, UErrorC } return result; } - + // ------------------------------------- // Checks if the thousand/10 thousand grouping is used in the @@ -1412,7 +1412,7 @@ NumberFormat::makeInstance(const Locale& desiredLocale, if (U_FAILURE(status)) { return NULL; } - if(style==UNUM_CURRENCY || style == UNUM_CURRENCY_ISO || style == UNUM_CURRENCY_ACCOUNTING + if(style==UNUM_CURRENCY || style == UNUM_CURRENCY_ISO || style == UNUM_CURRENCY_ACCOUNTING || style == UNUM_CASH_CURRENCY || style == UNUM_CURRENCY_STANDARD){ const UChar* currPattern = symbolsToAdopt->getCurrencyPattern(); if(currPattern!=NULL){ diff --git a/deps/icu-small/source/i18n/numparse_affixes.cpp b/deps/icu-small/source/i18n/numparse_affixes.cpp index cef1685d03cd85..14140065983866 100644 --- a/deps/icu-small/source/i18n/numparse_affixes.cpp +++ b/deps/icu-small/source/i18n/numparse_affixes.cpp @@ -101,7 +101,7 @@ void AffixPatternMatcherBuilder::consumeToken(AffixPatternType type, UChar32 cp, addMatcher(fWarehouse.currency(status)); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } else if (fIgnorables != nullptr && fIgnorables->getSet()->contains(cp)) { @@ -294,18 +294,20 @@ void AffixMatcherWarehouse::createAffixMatchers(const AffixPatternProvider& patt } // Generate Prefix + // TODO: Handle approximately sign? bool hasPrefix = false; PatternStringUtils::patternInfoToStringBuilder( - patternInfo, true, type, StandardPlural::OTHER, false, sb); + patternInfo, true, type, false, StandardPlural::OTHER, false, sb); fAffixPatternMatchers[numAffixPatternMatchers] = AffixPatternMatcher::fromAffixPattern( sb, *fTokenWarehouse, parseFlags, &hasPrefix, status); AffixPatternMatcher* prefix = hasPrefix ? &fAffixPatternMatchers[numAffixPatternMatchers++] : nullptr; // Generate Suffix + // TODO: Handle approximately sign? bool hasSuffix = false; PatternStringUtils::patternInfoToStringBuilder( - patternInfo, false, type, StandardPlural::OTHER, false, sb); + patternInfo, false, type, false, StandardPlural::OTHER, false, sb); fAffixPatternMatchers[numAffixPatternMatchers] = AffixPatternMatcher::fromAffixPattern( sb, *fTokenWarehouse, parseFlags, &hasSuffix, status); AffixPatternMatcher* suffix = hasSuffix ? &fAffixPatternMatchers[numAffixPatternMatchers++] diff --git a/deps/icu-small/source/i18n/numparse_affixes.h b/deps/icu-small/source/i18n/numparse_affixes.h index 511c73c745380d..a82b731ab5b752 100644 --- a/deps/icu-small/source/i18n/numparse_affixes.h +++ b/deps/icu-small/source/i18n/numparse_affixes.h @@ -52,7 +52,7 @@ class U_I18N_API CodePointMatcher : public NumberParseMatcher, public UMemory { // (See digitlst.h, pluralaffix.h, datefmt.h, and others for similar examples.) // Note: These need to be outside of the numparse::impl namespace, or Clang will generate a compile error. #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN -template class U_I18N_API MaybeStackArray; +template class U_I18N_API MaybeStackArray; template class U_I18N_API MaybeStackArray; template class U_I18N_API MemoryPool; template class U_I18N_API numparse::impl::CompactUnicodeString<4>; diff --git a/deps/icu-small/source/i18n/numparse_currency.cpp b/deps/icu-small/source/i18n/numparse_currency.cpp index 6b53a73edf3b85..7bbb060f3de406 100644 --- a/deps/icu-small/source/i18n/numparse_currency.cpp +++ b/deps/icu-small/source/i18n/numparse_currency.cpp @@ -42,7 +42,7 @@ CombinedCurrencyMatcher::CombinedCurrencyMatcher(const CurrencySymbols& currency // TODO: Figure out how to make this faster and re-enable. // Computing the "lead code points" set for fastpathing is too slow to use in production. - // See http://bugs.icu-project.org/trac/ticket/13584 + // See https://unicode-org.atlassian.net/browse/ICU-13584 // // Compute the full set of characters that could be the first in a currency to allow for // // efficient smoke test. // fLeadCodePoints.add(fCurrency1.char32At(0)); diff --git a/deps/icu-small/source/i18n/numparse_decimal.cpp b/deps/icu-small/source/i18n/numparse_decimal.cpp index cf1e8156726d01..8b99fd7ad4fa10 100644 --- a/deps/icu-small/source/i18n/numparse_decimal.cpp +++ b/deps/icu-small/source/i18n/numparse_decimal.cpp @@ -88,7 +88,7 @@ DecimalMatcher::DecimalMatcher(const DecimalFormatSymbols& symbols, const Groupe grouping2 = grouper.getSecondary(); // Fraction grouping parsing is disabled for now but could be enabled later. - // See http://bugs.icu-project.org/trac/ticket/10794 + // See https://unicode-org.atlassian.net/browse/ICU-10794 // fractionGrouping = 0 != (parseFlags & PARSE_FLAG_FRACTION_GROUPING_ENABLED); } diff --git a/deps/icu-small/source/i18n/numparse_decimal.h b/deps/icu-small/source/i18n/numparse_decimal.h index ec6c76487e44fc..07c9afeccc9d64 100644 --- a/deps/icu-small/source/i18n/numparse_decimal.h +++ b/deps/icu-small/source/i18n/numparse_decimal.h @@ -39,7 +39,7 @@ class DecimalMatcher : public NumberParseMatcher, public UMemory { bool groupingDisabled; // Fraction grouping parsing is disabled for now but could be enabled later. - // See http://bugs.icu-project.org/trac/ticket/10794 + // See https://unicode-org.atlassian.net/browse/ICU-10794 // bool fractionGrouping; /** If true, do not accept numbers in the fraction */ diff --git a/deps/icu-small/source/i18n/numparse_impl.cpp b/deps/icu-small/source/i18n/numparse_impl.cpp index 4b76da1c149a74..91c60747f2129f 100644 --- a/deps/icu-small/source/i18n/numparse_impl.cpp +++ b/deps/icu-small/source/i18n/numparse_impl.cpp @@ -285,7 +285,7 @@ void NumberParserImpl::parseGreedy(StringSegment& segment, ParsedNumber& result, i++; continue; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // NOTE: If we get here, the greedy parse completed without consuming the entire string. diff --git a/deps/icu-small/source/i18n/numrange_capi.cpp b/deps/icu-small/source/i18n/numrange_capi.cpp index a440a53fe6b173..bd3a9ef5e82528 100644 --- a/deps/icu-small/source/i18n/numrange_capi.cpp +++ b/deps/icu-small/source/i18n/numrange_capi.cpp @@ -115,7 +115,9 @@ unumrf_formatDoubleRange( auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity1.clear(); + result->fData.quantity2.clear(); result->fData.quantity1.setToDouble(first); result->fData.quantity2.setToDouble(second); formatter->fFormatter.formatImpl(result->fData, first == second, *ec); @@ -132,7 +134,9 @@ unumrf_formatDecimalRange( auto* result = UFormattedNumberRangeApiHelper::validate(uresult, *ec); if (U_FAILURE(*ec)) { return; } - result->fData.getStringRef().clear(); + result->fData.resetString(); + result->fData.quantity1.clear(); + result->fData.quantity2.clear(); result->fData.quantity1.setToDecNumber({first, firstLen}, *ec); result->fData.quantity2.setToDecNumber({second, secondLen}, *ec); formatter->fFormatter.formatImpl(result->fData, first == second, *ec); diff --git a/deps/icu-small/source/i18n/numrange_impl.cpp b/deps/icu-small/source/i18n/numrange_impl.cpp index aa713f1398b502..3c440c193c7bd5 100644 --- a/deps/icu-small/source/i18n/numrange_impl.cpp +++ b/deps/icu-small/source/i18n/numrange_impl.cpp @@ -30,7 +30,8 @@ constexpr int8_t identity2d(UNumberRangeIdentityFallback a, UNumberRangeIdentity struct NumberRangeData { SimpleFormatter rangePattern; - SimpleFormatter approximatelyPattern; + // Note: approximatelyPattern is unused since ICU 69. + // SimpleFormatter approximatelyPattern; }; class NumberRangeDataSink : public ResourceSink { @@ -46,12 +47,16 @@ class NumberRangeDataSink : public ResourceSink { continue; // have already seen this pattern } fData.rangePattern = {value.getUnicodeString(status), status}; - } else if (uprv_strcmp(key, "approximately") == 0) { + } + /* + // Note: approximatelyPattern is unused since ICU 69. + else if (uprv_strcmp(key, "approximately") == 0) { if (hasApproxData()) { continue; // have already seen this pattern } fData.approximatelyPattern = {value.getUnicodeString(status), status}; } + */ } } @@ -59,21 +64,26 @@ class NumberRangeDataSink : public ResourceSink { return fData.rangePattern.getArgumentLimit() != 0; } + /* + // Note: approximatelyPattern is unused since ICU 69. bool hasApproxData() { return fData.approximatelyPattern.getArgumentLimit() != 0; } + */ bool isComplete() { - return hasRangeData() && hasApproxData(); + return hasRangeData() /* && hasApproxData() */; } void fillInDefaults(UErrorCode& status) { if (!hasRangeData()) { fData.rangePattern = {u"{0}–{1}", status}; } + /* if (!hasApproxData()) { fData.approximatelyPattern = {u"~{0}", status}; } + */ } private: @@ -116,7 +126,8 @@ NumberRangeFormatterImpl::NumberRangeFormatterImpl(const RangeMacroProps& macros formatterImpl2(macros.formatter2.fMacros, status), fSameFormatters(macros.singleFormatter), fCollapse(macros.collapse), - fIdentityFallback(macros.identityFallback) { + fIdentityFallback(macros.identityFallback), + fApproximatelyFormatter(status) { const char* nsName = formatterImpl1.getRawMicroProps().nsName; if (uprv_strcmp(nsName, formatterImpl2.getRawMicroProps().nsName) != 0) { @@ -128,7 +139,16 @@ NumberRangeFormatterImpl::NumberRangeFormatterImpl(const RangeMacroProps& macros getNumberRangeData(macros.locale.getName(), nsName, data, status); if (U_FAILURE(status)) { return; } fRangeFormatter = data.rangePattern; - fApproximatelyModifier = {data.approximatelyPattern, kUndefinedField, false}; + + if (fSameFormatters && ( + fIdentityFallback == UNUM_IDENTITY_FALLBACK_APPROXIMATELY || + fIdentityFallback == UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE)) { + MacroProps approximatelyMacros(macros.formatter1.fMacros); + approximatelyMacros.approximately = true; + // Use in-place construction because NumberFormatterImpl has internal self-pointers + fApproximatelyFormatter.~NumberFormatterImpl(); + new (&fApproximatelyFormatter) NumberFormatterImpl(approximatelyMacros, status); + } // TODO: Get locale from PluralRules instead? fPluralRanges = StandardPluralRanges::forLocale(macros.locale, status); @@ -209,7 +229,7 @@ void NumberRangeFormatterImpl::format(UFormattedNumberRangeData& data, bool equa break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -232,12 +252,14 @@ void NumberRangeFormatterImpl::formatApproximately (UFormattedNumberRangeData& d UErrorCode& status) const { if (U_FAILURE(status)) { return; } if (fSameFormatters) { - int32_t length = NumberFormatterImpl::writeNumber(micros1, data.quantity1, data.getStringRef(), 0, status); - // HEURISTIC: Desired modifier order: inner, middle, approximately, outer. - length += micros1.modInner->apply(data.getStringRef(), 0, length, status); - length += micros1.modMiddle->apply(data.getStringRef(), 0, length, status); - length += fApproximatelyModifier.apply(data.getStringRef(), 0, length, status); - micros1.modOuter->apply(data.getStringRef(), 0, length, status); + // Re-format using the approximately formatter: + MicroProps microsAppx; + data.quantity1.resetExponent(); + fApproximatelyFormatter.preProcess(data.quantity1, microsAppx, status); + int32_t length = NumberFormatterImpl::writeNumber(microsAppx, data.quantity1, data.getStringRef(), 0, status); + length += microsAppx.modInner->apply(data.getStringRef(), 0, length, status); + length += microsAppx.modMiddle->apply(data.getStringRef(), 0, length, status); + microsAppx.modOuter->apply(data.getStringRef(), 0, length, status); } else { formatRange(data, micros1, micros2, status); } @@ -363,7 +385,10 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data, } length1 += NumberFormatterImpl::writeNumber(micros1, data.quantity1, string, UPRV_INDEX_0, status); - length2 += NumberFormatterImpl::writeNumber(micros2, data.quantity2, string, UPRV_INDEX_2, status); + // ICU-21684: Write the second number to a temp string to avoid repeated insert operations + FormattedStringBuilder tempString; + NumberFormatterImpl::writeNumber(micros2, data.quantity2, tempString, 0, status); + length2 += string.insert(UPRV_INDEX_2, tempString, status); // TODO: Support padding? diff --git a/deps/icu-small/source/i18n/numrange_impl.h b/deps/icu-small/source/i18n/numrange_impl.h index b81a311a5f393d..ac1d8a58972743 100644 --- a/deps/icu-small/source/i18n/numrange_impl.h +++ b/deps/icu-small/source/i18n/numrange_impl.h @@ -56,7 +56,7 @@ class NumberRangeFormatterImpl : public UMemory { UNumberRangeIdentityFallback fIdentityFallback; SimpleFormatter fRangeFormatter; - SimpleModifier fApproximatelyModifier; + NumberFormatterImpl fApproximatelyFormatter; StandardPluralRanges fPluralRanges; diff --git a/deps/icu-small/source/i18n/numsys.cpp b/deps/icu-small/source/i18n/numsys.cpp index d8b901c0d74b68..44aaf8e2a5f987 100644 --- a/deps/icu-small/source/i18n/numsys.cpp +++ b/deps/icu-small/source/i18n/numsys.cpp @@ -72,7 +72,7 @@ NumberingSystem::NumberingSystem() { * @draft ICU 4.2 */ -NumberingSystem::NumberingSystem(const NumberingSystem& other) +NumberingSystem::NumberingSystem(const NumberingSystem& other) : UObject(other) { *this=other; } @@ -128,7 +128,7 @@ NumberingSystem::createInstance(const Locale & inLocale, UErrorCode& status) { if ( count > 0 ) { // @numbers keyword was specified in the locale U_ASSERT(count < ULOC_KEYWORDS_CAPACITY); buffer[count] = '\0'; // Make sure it is null terminated. - if ( !uprv_strcmp(buffer,gDefault) || !uprv_strcmp(buffer,gNative) || + if ( !uprv_strcmp(buffer,gDefault) || !uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gTraditional) || !uprv_strcmp(buffer,gFinance)) { nsResolved = FALSE; } @@ -159,10 +159,10 @@ NumberingSystem::createInstance(const Locale & inLocale, UErrorCode& status) { u_UCharsToChars(nsName, buffer, count); buffer[count] = '\0'; // Make sure it is null terminated. nsResolved = TRUE; - } + } if (!nsResolved) { // Fallback behavior per TR35 - traditional falls back to native, finance and native fall back to default - if (!uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gFinance)) { + if (!uprv_strcmp(buffer,gNative) || !uprv_strcmp(buffer,gFinance)) { uprv_strcpy(buffer,gDefault); } else if (!uprv_strcmp(buffer,gTraditional)) { uprv_strcpy(buffer,gNative); @@ -314,7 +314,7 @@ U_CFUNC void initNumsysNames(UErrorCode &status) { const char *nsName = ures_getKey(nsCurrent.getAlias()); LocalPointer newElem(new UnicodeString(nsName, -1, US_INV), status); if (U_SUCCESS(status)) { - numsysNames->addElement(newElem.getAlias(), status); + numsysNames->addElementX(newElem.getAlias(), status); if (U_SUCCESS(status)) { newElem.orphan(); // on success, the numsysNames vector owns newElem. } diff --git a/deps/icu-small/source/i18n/numsys_impl.h b/deps/icu-small/source/i18n/numsys_impl.h index c0690b47d78802..e76e634dd23c07 100644 --- a/deps/icu-small/source/i18n/numsys_impl.h +++ b/deps/icu-small/source/i18n/numsys_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "unicode/numsys.h" #include "uvector.h" #include "unicode/strenum.h" diff --git a/deps/icu-small/source/i18n/olsontz.cpp b/deps/icu-small/source/i18n/olsontz.cpp index 67aa1f7af81d68..cae471a5a25c60 100644 --- a/deps/icu-small/source/i18n/olsontz.cpp +++ b/deps/icu-small/source/i18n/olsontz.cpp @@ -206,7 +206,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top, if (U_SUCCESS(ec)) { UnicodeString ruleID(TRUE, ruleIdUStr, len); UResourceBundle *rule = TimeZone::loadRule(top, ruleID, NULL, ec); - const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); + const int32_t *ruleData = ures_getIntVector(rule, &len, &ec); if (U_SUCCESS(ec) && len == 11) { UnicodeString emptyStr; finalZone = new SimpleTimeZone( @@ -225,7 +225,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top, finalStartYear = ruleYear; // Note: Setting finalStartYear to the finalZone is problematic. When a date is around - // year boundary, SimpleTimeZone may return false result when DST is observed at the + // year boundary, SimpleTimeZone may return false result when DST is observed at the // beginning of year. We could apply safe margin (day or two), but when one of recurrent // rules falls around year boundary, it could return false result. Without setting the // start year, finalZone works fine around the year boundary of the start year. @@ -311,7 +311,7 @@ OlsonTimeZone::~OlsonTimeZone() { /** * Returns true if the two TimeZone objects are equal. */ -UBool OlsonTimeZone::operator==(const TimeZone& other) const { +bool OlsonTimeZone::operator==(const TimeZone& other) const { return ((this == &other) || (typeid(*this) == typeid(other) && TimeZone::operator==(other) && @@ -440,7 +440,7 @@ void printTime(double ms) { int32_t year, month, dom, dow; double millis=0; double days = ClockMath::floorDivide(((double)ms), (double)U_MILLIS_PER_DAY, millis); - + Grego::dayToFields(days, year, month, dom, dow); U_DEBUG_TZ_MSG((" getHistoricalOffset: time %.1f (%04d.%02d.%02d+%.1fh)\n", ms, year, month+1, dom, (millis/kOneHour))); @@ -449,7 +449,7 @@ void printTime(double ms) { int64_t OlsonTimeZone::transitionTimeInSeconds(int16_t transIdx) const { - U_ASSERT(transIdx >= 0 && transIdx < transitionCount()); + U_ASSERT(transIdx >= 0 && transIdx < transitionCount()); if (transIdx < transitionCountPre32) { return (((int64_t)((uint32_t)transitionTimesPre32[transIdx << 1])) << 32) @@ -504,7 +504,7 @@ OlsonTimeZone::getHistoricalOffset(UDate date, UBool local, UBool dstToStd = dstBefore && !dstAfter; UBool stdToDst = !dstBefore && dstAfter; - + if (offsetAfter - offsetBefore >= 0) { // Positive transition, which makes a non-existing local time range if (((NonExistingTimeOpt & kStdDstMask) == kStandard && dstToStd) @@ -590,7 +590,7 @@ UBool OlsonTimeZone::useDaylightTime() const { } return FALSE; } -int32_t +int32_t OlsonTimeZone::getDSTSavings() const{ if (finalZone != NULL){ return finalZone->getDSTSavings(); @@ -622,7 +622,7 @@ OlsonTimeZone::hasSameRules(const TimeZone &other) const { if (typeMapData == z->typeMapData) { return TRUE; } - + // If the pointers are not equal, the zones may still // be equal if their rules and transitions are equal if ((finalZone == NULL && z->finalZone != NULL) @@ -695,7 +695,7 @@ OlsonTimeZone::deleteTransitionRules(void) { static void U_CALLCONV initRules(OlsonTimeZone *This, UErrorCode &status) { This->initTransitionRules(status); } - + void OlsonTimeZone::checkTransitionRules(UErrorCode& status) const { OlsonTimeZone *ncThis = const_cast(this); @@ -806,7 +806,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) { } } if (finalZone != NULL) { - // Get the first occurence of final rule starts + // Get the first occurrence of final rule starts UDate startTime = (UDate)finalStartMillis; TimeZoneRule *firstFinalRule = NULL; diff --git a/deps/icu-small/source/i18n/olsontz.h b/deps/icu-small/source/i18n/olsontz.h index 6bedb8792b0cd4..75d86781edd49a 100644 --- a/deps/icu-small/source/i18n/olsontz.h +++ b/deps/icu-small/source/i18n/olsontz.h @@ -44,52 +44,52 @@ class SimpleTimeZone; * * a. Zone (table). A zone is a table resource contains several * type of resources below: - * + * * - typeOffsets:intvector (Required) - * + * * Sets of UTC raw/dst offset pairs in seconds. Entries at * 2n represents raw offset and 2n+1 represents dst offset * paired with the raw offset at 2n. The very first pair represents * the initial zone offset (before the first transition) always. * - * - trans:intvector (Optional) - * + * - trans:intvector (Optional) + * * List of transition times represented by 32bit seconds from the * epoch (1970-01-01T00:00Z) in ascending order. - * + * * - transPre32/transPost32:intvector (Optional) - * + * * List of transition times before/after 32bit minimum seconds. * Each time is represented by a pair of 32bit integer. - * + * * - typeMap:bin (Optional) - * + * * Array of bytes representing the mapping between each transition * time (transPre32/trans/transPost32) and its corresponding offset * data (typeOffsets). - * + * * - finalRule:string (Optional) - * + * * If a recurrent transition rule is applicable to a zone forever * after the final transition time, finalRule represents the rule * in Rules data. - * + * * - finalRaw:int (Optional) - * + * * When finalRule is available, finalRaw is required and specifies * the raw (base) offset of the rule. - * + * * - finalYear:int (Optional) - * + * * When finalRule is available, finalYear is required and specifies * the start year of the rule. - * + * * - links:intvector (Optional) - * + * * When this zone data is shared with other zones, links specifies * all zones including the zone itself. Each zone is referenced by * integer index. - * + * * b. Link (int, length 1). A link zone is an int resource. The * integer is the zone number of the target zone. The key of this * resource is an alternate name for the target zone. This data @@ -146,12 +146,12 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { /** * Returns true if the two TimeZone objects are equal. */ - virtual UBool operator==(const TimeZone& other) const; + virtual bool operator==(const TimeZone& other) const override; /** * TimeZone API. */ - virtual OlsonTimeZone* clone() const; + virtual OlsonTimeZone* clone() const override; /** * TimeZone API. @@ -161,14 +161,14 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { /** * TimeZone API. */ - virtual UClassID getDynamicClassID() const; - + virtual UClassID getDynamicClassID() const override; + /** * TimeZone API. Do not call this; prefer getOffset(UDate,...). */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, - int32_t millis, UErrorCode& ec) const; + int32_t millis, UErrorCode& ec) const override; /** * TimeZone API. Do not call this; prefer getOffset(UDate,...). @@ -176,13 +176,13 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, - UErrorCode& ec) const; + UErrorCode& ec) const override; /** * TimeZone API. */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; /** * BasicTimeZone API. @@ -190,14 +190,14 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; /** * TimeZone API. This method has no effect since objects of this * class are quasi-immutable (the base class allows the ID to be * changed). */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * TimeZone API. For a historical zone, the raw offset can change @@ -205,7 +205,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * expected behavior, this method returns the raw offset for the * current moment in time. */ - virtual int32_t getRawOffset() const; + virtual int32_t getRawOffset() const override; /** * TimeZone API. For a historical zone, whether DST is used or @@ -213,22 +213,22 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * behavior, this method returns true if DST is observed at any * point in the current year. */ - virtual UBool useDaylightTime() const; + virtual UBool useDaylightTime() const override; /** * TimeZone API. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& ec) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& ec) const override; /** * TimeZone API. */ - virtual int32_t getDSTSavings() const; + virtual int32_t getDSTSavings() const override; /** * TimeZone API. Also comare historic transitions. */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * BasicTimeZone API. @@ -238,7 +238,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param result Receives the first transition after the base time. * @return true if the transition is found. */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * BasicTimeZone API. @@ -248,7 +248,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param result Receives the most recent transition before the base time. * @return true if the transition is found. */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * BasicTimeZone API. @@ -258,7 +258,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param status Receives error status code. * @return The number of TimeZoneRules representing time transitions. */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -276,7 +276,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone { * @param status Receives error status code. */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; /** * Internal API returning the canonical ID of this zone. diff --git a/deps/icu-small/source/i18n/persncal.cpp b/deps/icu-small/source/i18n/persncal.cpp index ba306653af28e0..d30577f337f79c 100644 --- a/deps/icu-small/source/i18n/persncal.cpp +++ b/deps/icu-small/source/i18n/persncal.cpp @@ -70,7 +70,7 @@ static const int32_t PERSIAN_EPOCH = 1948320; // Constructors... //------------------------------------------------------------------------- -const char *PersianCalendar::getType() const { +const char *PersianCalendar::getType() const { return "persian"; } @@ -113,7 +113,7 @@ UBool PersianCalendar::isLeapYear(int32_t year) ClockMath::floorDivide(25 * year + 11, 33, remainder); return (remainder < 8); } - + /** * Return the day # on which the given year starts. Days are counted * from the Persian epoch, origin 0. @@ -121,7 +121,7 @@ UBool PersianCalendar::isLeapYear(int32_t year) int32_t PersianCalendar::yearStart(int32_t year) { return handleComputeMonthStart(year,0,FALSE); } - + /** * Return the day # on which the given month starts. Days are counted * from the Persian epoch, origin 0. @@ -132,7 +132,7 @@ int32_t PersianCalendar::yearStart(int32_t year) { int32_t PersianCalendar::monthStart(int32_t year, int32_t month) const { return handleComputeMonthStart(year,month,TRUE); } - + //---------------------------------------------------------------------- // Calendar framework //---------------------------------------------------------------------- @@ -159,7 +159,7 @@ int32_t PersianCalendar::handleGetMonthLength(int32_t extendedYear, int32_t mont int32_t PersianCalendar::handleGetYearLength(int32_t extendedYear) const { return isLeapYear(extendedYear) ? 366 : 365; } - + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -205,7 +205,7 @@ int32_t PersianCalendar::handleGetExtendedYear() { *

    9. DAY_OF_MONTH *
    10. DAY_OF_YEAR *
    11. EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. */ @@ -231,13 +231,13 @@ void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu internalSet(UCAL_MONTH, month); internalSet(UCAL_DAY_OF_MONTH, dayOfMonth); internalSet(UCAL_DAY_OF_YEAR, dayOfYear); -} +} UBool PersianCalendar::inDaylightTime(UErrorCode& status) const { // copied from GregorianCalendar - if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) + if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) return FALSE; // Force an update of the state of the Calendar. @@ -292,3 +292,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PersianCalendar) U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/persncal.h b/deps/icu-small/source/i18n/persncal.h index f330ea8a0319b2..d0f2ee5ec209e0 100644 --- a/deps/icu-small/source/i18n/persncal.h +++ b/deps/icu-small/source/i18n/persncal.h @@ -58,79 +58,79 @@ class PersianCalendar : public Calendar { */ enum EMonths { /** - * Constant for Farvardin, the 1st month of the Persian year. + * Constant for Farvardin, the 1st month of the Persian year. * @internal */ FARVARDIN = 0, /** - * Constant for Ordibehesht, the 2nd month of the Persian year. + * Constant for Ordibehesht, the 2nd month of the Persian year. * @internal */ ORDIBEHESHT = 1, /** - * Constant for Khordad, the 3rd month of the Persian year. - * @internal + * Constant for Khordad, the 3rd month of the Persian year. + * @internal */ KHORDAD = 2, /** - * Constant for Tir, the 4th month of the Persian year. - * @internal + * Constant for Tir, the 4th month of the Persian year. + * @internal */ TIR = 3, /** - * Constant for Mordad, the 5th month of the Persian year. - * @internal + * Constant for Mordad, the 5th month of the Persian year. + * @internal */ MORDAD = 4, /** - * Constant for Shahrivar, the 6th month of the Persian year. - * @internal + * Constant for Shahrivar, the 6th month of the Persian year. + * @internal */ SHAHRIVAR = 5, /** - * Constant for Mehr, the 7th month of the Persian year. - * @internal + * Constant for Mehr, the 7th month of the Persian year. + * @internal */ MEHR = 6, /** - * Constant for Aban, the 8th month of the Persian year. - * @internal + * Constant for Aban, the 8th month of the Persian year. + * @internal */ ABAN = 7, /** - * Constant for Azar, the 9th month of the Persian year. - * @internal + * Constant for Azar, the 9th month of the Persian year. + * @internal */ AZAR = 8, /** - * Constant for Dei, the 10th month of the Persian year. - * @internal + * Constant for Dei, the 10th month of the Persian year. + * @internal */ DEI = 9, /** - * Constant for Bahman, the 11th month of the Persian year. - * @internal + * Constant for Bahman, the 11th month of the Persian year. + * @internal */ BAHMAN = 10, /** - * Constant for Esfand, the 12th month of the Persian year. - * @internal + * Constant for Esfand, the 12th month of the Persian year. + * @internal */ ESFAND = 11, - + PERSIAN_MONTH_MAX - }; + }; @@ -164,14 +164,14 @@ class PersianCalendar : public Calendar { // TODO: copy c'tor, etc // clone - virtual PersianCalendar* clone() const; + virtual PersianCalendar* clone() const override; private: /** * Determine whether a year is a leap year in the Persian calendar */ static UBool isLeapYear(int32_t year); - + /** * Return the day # on which the given year starts. Days are counted * from the Hijri epoch, origin 0. @@ -186,7 +186,7 @@ class PersianCalendar : public Calendar { * @param year The hijri shamsi month, 0-based */ int32_t monthStart(int32_t year, int32_t month) const; - + //---------------------------------------------------------------------- // Calendar framework //---------------------------------------------------------------------- @@ -194,8 +194,8 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; - + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; + /** * Return the length (in days) of the given month. * @@ -203,14 +203,14 @@ class PersianCalendar : public Calendar { * @param year The hijri shamsi month, 0-based * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; - + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; + /** * Return the number of days in the given Persian year * @internal */ - virtual int32_t handleGetYearLength(int32_t extendedYear) const; - + virtual int32_t handleGetYearLength(int32_t extendedYear) const override; + //------------------------------------------------------------------------- // Functions for converting from field values to milliseconds.... //------------------------------------------------------------------------- @@ -219,7 +219,7 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; + virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const override; //------------------------------------------------------------------------- // Functions for converting from milliseconds to field values @@ -228,7 +228,7 @@ class PersianCalendar : public Calendar { /** * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Override Calendar to compute several fields specific to the Persian @@ -240,22 +240,22 @@ class PersianCalendar : public Calendar { *
    12. DAY_OF_MONTH *
    13. DAY_OF_YEAR *
    14. EXTENDED_YEAR - * + * * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this * method is called. The getGregorianXxx() methods return Gregorian * calendar equivalents for the given Julian day. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; // UObject stuff - public: + public: /** * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -276,7 +276,7 @@ class PersianCalendar : public Calendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: PersianCalendar(); // default constructor not implemented @@ -292,29 +292,32 @@ class PersianCalendar : public Calendar { * false, otherwise. * @internal */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; /** * Returns true because the Persian Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END #endif #endif + + + diff --git a/deps/icu-small/source/i18n/plurfmt.cpp b/deps/icu-small/source/i18n/plurfmt.cpp index aac35c5b094ff9..65e275eeeb7536 100644 --- a/deps/icu-small/source/i18n/plurfmt.cpp +++ b/deps/icu-small/source/i18n/plurfmt.cpp @@ -381,13 +381,13 @@ PluralFormat::operator=(const PluralFormat& other) { return *this; } -UBool +bool PluralFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const PluralFormat& o = (const PluralFormat&)other; return @@ -400,7 +400,7 @@ PluralFormat::operator==(const Format& other) const { *pluralRulesWrapper.pluralRules == *o.pluralRulesWrapper.pluralRules); } -UBool +bool PluralFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/plurrule.cpp b/deps/icu-small/source/i18n/plurrule.cpp index bc106acce23aef..d1918c4698138b 100644 --- a/deps/icu-small/source/i18n/plurrule.cpp +++ b/deps/icu-small/source/i18n/plurrule.cpp @@ -379,6 +379,14 @@ static double scaleForInt(double d) { return scale; } +static const double powers10[7] = {1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0}; // powers of 10 for 0..6 +static double applyExponent(double source, int32_t exponent) { + if (exponent >= 0 && exponent <= 6) { + return source * powers10[exponent]; + } + return source * pow(10.0, exponent); +} + /** * Helper method for the overrides of getSamples() for double and FixedDecimal * return value types. Provide only one of an allocated array of doubles or @@ -416,7 +424,7 @@ getSamplesFromString(const UnicodeString &samples, double *destDbl, if (isDouble) { double sampleValue = fixed.source; if (fixed.visibleDecimalDigitCount == 0 || sampleValue != floor(sampleValue)) { - destDbl[sampleCount++] = sampleValue; + destDbl[sampleCount++] = applyExponent(sampleValue, fixed.exponent); } } else { destFd[sampleCount++] = fixed; @@ -547,40 +555,40 @@ PluralRules::getKeywordOther() const { return UnicodeString(TRUE, PLURAL_KEYWORD_OTHER, 5); } -UBool +bool PluralRules::operator==(const PluralRules& other) const { const UnicodeString *ptrKeyword; UErrorCode status= U_ZERO_ERROR; if ( this == &other ) { - return TRUE; + return true; } LocalPointer myKeywordList(getKeywords(status)); LocalPointer otherKeywordList(other.getKeywords(status)); if (U_FAILURE(status)) { - return FALSE; + return false; } if (myKeywordList->count(status)!=otherKeywordList->count(status)) { - return FALSE; + return false; } myKeywordList->reset(status); while ((ptrKeyword=myKeywordList->snext(status))!=nullptr) { if (!other.isKeyword(*ptrKeyword)) { - return FALSE; + return false; } } otherKeywordList->reset(status); while ((ptrKeyword=otherKeywordList->snext(status))!=nullptr) { if (!this->isKeyword(*ptrKeyword)) { - return FALSE; + return false; } } if (U_FAILURE(status)) { - return FALSE; + return false; } - return TRUE; + return true; } @@ -1037,7 +1045,7 @@ RuleChain::RuleChain(const RuleChain& other) : fIntegerSamples(other.fIntegerSamples), fDecimalSamplesUnbounded(other.fDecimalSamplesUnbounded), fIntegerSamplesUnbounded(other.fIntegerSamplesUnbounded), fInternalStatus(other.fInternalStatus) { if (U_FAILURE(this->fInternalStatus)) { - return; // stop early if the object we are copying from is invalid. + return; // stop early if the object we are copying from is invalid. } if (other.ruleHeader != nullptr) { this->ruleHeader = new OrConstraint(*(other.ruleHeader)); @@ -1545,7 +1553,7 @@ PluralKeywordEnumeration::PluralKeywordEnumeration(RuleChain *header, UErrorCode status = U_MEMORY_ALLOCATION_ERROR; return; } - fKeywordNames.addElement(newElem, status); + fKeywordNames.addElementX(newElem, status); if (U_FAILURE(status)) { delete newElem; return; @@ -1562,7 +1570,7 @@ PluralKeywordEnumeration::PluralKeywordEnumeration(RuleChain *header, UErrorCode status = U_MEMORY_ALLOCATION_ERROR; return; } - fKeywordNames.addElement(newElem, status); + fKeywordNames.addElementX(newElem, status); if (U_FAILURE(status)) { delete newElem; return; @@ -1608,7 +1616,7 @@ PluralOperand tokenTypeToPluralOperand(tokenType tt) { case tVariableC: return PLURAL_OPERAND_E; default: - UPRV_UNREACHABLE; // unexpected. + UPRV_UNREACHABLE_EXIT; // unexpected. } } @@ -1619,7 +1627,7 @@ FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e, int32_t c) FixedDecimal::FixedDecimal(double n, int32_t v, int64_t f, int32_t e) { init(n, v, f, e); // check values. TODO make into unit test. - // + // // long visiblePower = (int) Math.pow(10, v); // if (decimalDigits > visiblePower) { // throw new IllegalArgumentException(); @@ -1829,7 +1837,7 @@ int32_t FixedDecimal::decimals(double n) { // v is the number of visible fraction digits in the displayed form of the number. // Example: n = 1001.234, v = 6, result = 234000 // TODO: need to think through how this is used in the plural rule context. -// This function can easily encounter integer overflow, +// This function can easily encounter integer overflow, // and can easily return noise digits when the precision of a double is exceeded. int64_t FixedDecimal::getFractionalDigits(double n, int32_t v) { @@ -1873,15 +1881,15 @@ void FixedDecimal::adjustForMinFractionDigits(int32_t minFractionDigits) { double FixedDecimal::getPluralOperand(PluralOperand operand) const { switch(operand) { - case PLURAL_OPERAND_N: return source; - case PLURAL_OPERAND_I: return static_cast(intValue); + case PLURAL_OPERAND_N: return (exponent == 0 ? source : source * pow(10, exponent)); + case PLURAL_OPERAND_I: return (double) longValue(); case PLURAL_OPERAND_F: return static_cast(decimalDigits); case PLURAL_OPERAND_T: return static_cast(decimalDigitsWithoutTrailingZeros); case PLURAL_OPERAND_V: return visibleDecimalDigitCount; case PLURAL_OPERAND_E: return exponent; case PLURAL_OPERAND_C: return exponent; default: - UPRV_UNREACHABLE; // unexpected. + UPRV_UNREACHABLE_EXIT; // unexpected. } } @@ -1923,6 +1931,18 @@ UnicodeString FixedDecimal::toString() const { return UnicodeString(buffer, -1, US_INV); } +double FixedDecimal::doubleValue() const { + return (isNegative ? -source : source) * pow(10, exponent); +} + +int64_t FixedDecimal::longValue() const { + if (exponent == 0) { + return intValue; + } else { + return (long) (pow(10, exponent) * intValue); + } +} + PluralAvailableLocalesEnumeration::PluralAvailableLocalesEnumeration(UErrorCode &status) { fOpenStatus = status; diff --git a/deps/icu-small/source/i18n/plurrule_impl.h b/deps/icu-small/source/i18n/plurrule_impl.h index 69d44f83d4a0fa..7274da58f0652c 100644 --- a/deps/icu-small/source/i18n/plurrule_impl.h +++ b/deps/icu-small/source/i18n/plurrule_impl.h @@ -324,10 +324,14 @@ class U_I18N_API FixedDecimal: public IFixedDecimal, public UObject { static int64_t getFractionalDigits(double n, int32_t v); static int32_t decimals(double n); + FixedDecimal& operator=(const FixedDecimal& other) = default; bool operator==(const FixedDecimal &other) const; UnicodeString toString() const; + double doubleValue() const; + int64_t longValue() const; + double source; int32_t visibleDecimalDigitCount; int64_t decimalDigits; @@ -355,7 +359,7 @@ class AndConstraint : public UMemory { tokenType digitsType = none; // n | i | v | f constraint. AndConstraint *next = nullptr; // Internal error status, used for errors that occur during the copy constructor. - UErrorCode fInternalStatus = U_ZERO_ERROR; + UErrorCode fInternalStatus = U_ZERO_ERROR; AndConstraint() = default; AndConstraint(const AndConstraint& other); @@ -407,10 +411,10 @@ class PluralKeywordEnumeration : public StringEnumeration { PluralKeywordEnumeration(RuleChain *header, UErrorCode& status); virtual ~PluralKeywordEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector fKeywordNames; @@ -421,9 +425,9 @@ class U_I18N_API PluralAvailableLocalesEnumeration: public StringEnumeration { public: PluralAvailableLocalesEnumeration(UErrorCode &status); virtual ~PluralAvailableLocalesEnumeration(); - virtual const char* next(int32_t *resultLength, UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual const char* next(int32_t *resultLength, UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: UErrorCode fOpenStatus; UResourceBundle *fLocales = nullptr; diff --git a/deps/icu-small/source/i18n/quant.cpp b/deps/icu-small/source/i18n/quant.cpp index b0e7a3ed52c240..ed3393338775e9 100644 --- a/deps/icu-small/source/i18n/quant.cpp +++ b/deps/icu-small/source/i18n/quant.cpp @@ -58,7 +58,7 @@ Quantifier* Quantifier::clone() const { UnicodeMatcher* Quantifier::toMatcher() const { Quantifier *nonconst_this = const_cast(this); UnicodeMatcher *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } diff --git a/deps/icu-small/source/i18n/quant.h b/deps/icu-small/source/i18n/quant.h index df6924cc127ba6..427a6b048081ee 100644 --- a/deps/icu-small/source/i18n/quant.h +++ b/deps/icu-small/source/i18n/quant.h @@ -39,13 +39,13 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { * and return the pointer. * @return the UnicodeMatcher pointer. */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const override; /** * Implement UnicodeFunctor * @return a copy of the object. */ - virtual Quantifier* clone() const; + virtual Quantifier* clone() const override; /** * Implement UnicodeMatcher @@ -72,7 +72,7 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; /** * Implement UnicodeMatcher @@ -81,29 +81,29 @@ class Quantifier : public UnicodeFunctor, public UnicodeMatcher { * @return A reference to 'result'. */ virtual UnicodeString& toPattern(UnicodeString& result, - UBool escapeUnprintable = false) const; + UBool escapeUnprintable = false) const override; /** * Implement UnicodeMatcher * @param v the given index value. * @return true if this rule matches the given index value. */ - virtual UBool matchesIndexValue(uint8_t v) const; + virtual UBool matchesIndexValue(uint8_t v) const override; /** * Implement UnicodeMatcher */ - virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; + virtual void addMatchSetTo(UnicodeSet& toUnionTo) const override; /** * UnicodeFunctor API */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/quantityformatter.h b/deps/icu-small/source/i18n/quantityformatter.h index 30bef08634a3f4..841798cf889255 100644 --- a/deps/icu-small/source/i18n/quantityformatter.h +++ b/deps/icu-small/source/i18n/quantityformatter.h @@ -36,10 +36,10 @@ class FormattedStringBuilder; * There must be a pattern for the "other" variant. * Then use the format() method. *

      - * Concurrent calls only to const methods on a QuantityFormatter object are + * Concurrent calls only to const methods on a QuantityFormatter object are * safe, but concurrent const and non-const method calls on a QuantityFormatter * object are not safe and require synchronization. - * + * */ class U_I18N_API QuantityFormatter : public UMemory { public: @@ -94,7 +94,7 @@ class U_I18N_API QuantityFormatter : public UMemory { * Formats a number with this object appending the result to appendTo. * At least the "other" variant must be added to this object for this * method to work. - * + * * @param number the single number. * @param fmt formats the number * @param rules computes the plural variant to use. diff --git a/deps/icu-small/source/i18n/rbnf.cpp b/deps/icu-small/source/i18n/rbnf.cpp index c25e61e6b28d94..7f54fd7a33f062 100644 --- a/deps/icu-small/source/i18n/rbnf.cpp +++ b/deps/icu-small/source/i18n/rbnf.cpp @@ -83,34 +83,34 @@ class LocalizationInfo : public UMemory { protected: virtual ~LocalizationInfo(); uint32_t refcount; - + public: LocalizationInfo() : refcount(0) {} - + LocalizationInfo* ref(void) { ++refcount; return this; } - + LocalizationInfo* unref(void) { if (refcount && --refcount == 0) { delete this; } return NULL; } - - virtual UBool operator==(const LocalizationInfo* rhs) const; - inline UBool operator!=(const LocalizationInfo* rhs) const { return !operator==(rhs); } - + + virtual bool operator==(const LocalizationInfo* rhs) const; + inline bool operator!=(const LocalizationInfo* rhs) const { return !operator==(rhs); } + virtual int32_t getNumberOfRuleSets(void) const = 0; virtual const UChar* getRuleSetName(int32_t index) const = 0; virtual int32_t getNumberOfDisplayLocales(void) const = 0; virtual const UChar* getLocaleName(int32_t index) const = 0; virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const = 0; - + virtual int32_t indexForLocale(const UChar* locale) const; virtual int32_t indexForRuleSet(const UChar* ruleset) const; - + // virtual UClassID getDynamicClassID() const = 0; // static UClassID getStaticClassID(void); }; @@ -120,7 +120,7 @@ LocalizationInfo::~LocalizationInfo() {} //UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(LocalizationInfo) // if both strings are NULL, this returns TRUE -static UBool +static UBool streq(const UChar* lhs, const UChar* rhs) { if (rhs == lhs) { return TRUE; @@ -131,18 +131,18 @@ streq(const UChar* lhs, const UChar* rhs) { return FALSE; } -UBool +bool LocalizationInfo::operator==(const LocalizationInfo* rhs) const { if (rhs) { if (this == rhs) { - return TRUE; + return true; } - + int32_t rsc = getNumberOfRuleSets(); if (rsc == rhs->getNumberOfRuleSets()) { for (int i = 0; i < rsc; ++i) { if (!streq(getRuleSetName(i), rhs->getRuleSetName(i))) { - return FALSE; + return false; } } int32_t dlc = getNumberOfDisplayLocales(); @@ -152,19 +152,19 @@ LocalizationInfo::operator==(const LocalizationInfo* rhs) const { int32_t ix = rhs->indexForLocale(locale); // if no locale, ix is -1, getLocaleName returns null, so streq returns false if (!streq(locale, rhs->getLocaleName(ix))) { - return FALSE; + return false; } for (int j = 0; j < rsc; ++j) { if (!streq(getDisplayName(i, j), rhs->getDisplayName(ix, j))) { - return FALSE; + return false; } } } - return TRUE; + return true; } } } - return FALSE; + return false; } int32_t @@ -199,22 +199,22 @@ class VArray { Fn_Deleter deleter; public: VArray() : buf(NULL), cap(0), size(0), deleter(NULL) {} - + VArray(Fn_Deleter del) : buf(NULL), cap(0), size(0), deleter(del) {} - + ~VArray() { if (deleter) { for (int i = 0; i < size; ++i) { (*deleter)(buf[i]); } } - uprv_free(buf); + uprv_free(buf); } - + int32_t length() { return size; } - + void add(void* elem, UErrorCode& status) { if (U_SUCCESS(status)) { if (size == cap) { @@ -242,7 +242,7 @@ class VArray { buf[size++] = elem; } } - + void** release(void) { void** result = buf; buf = NULL; @@ -266,20 +266,20 @@ friend class LocDataParser; : info(i), data(d), numRuleSets(numRS), numLocales(numLocs) { } - + public: static StringLocalizationInfo* create(const UnicodeString& info, UParseError& perror, UErrorCode& status); - + virtual ~StringLocalizationInfo(); - virtual int32_t getNumberOfRuleSets(void) const { return numRuleSets; } - virtual const UChar* getRuleSetName(int32_t index) const; - virtual int32_t getNumberOfDisplayLocales(void) const { return numLocales; } - virtual const UChar* getLocaleName(int32_t index) const; - virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const; - + virtual int32_t getNumberOfRuleSets(void) const override { return numRuleSets; } + virtual const UChar* getRuleSetName(int32_t index) const override; + virtual int32_t getNumberOfDisplayLocales(void) const override { return numLocales; } + virtual const UChar* getLocaleName(int32_t index) const override; + virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const override; + // virtual UClassID getDynamicClassID() const; // static UClassID getStaticClassID(void); - + private: void init(UErrorCode& status) const; }; @@ -304,20 +304,20 @@ class LocDataParser { UChar ch; UParseError& pe; UErrorCode& ec; - + public: - LocDataParser(UParseError& parseError, UErrorCode& status) + LocDataParser(UParseError& parseError, UErrorCode& status) : data(NULL), e(NULL), p(NULL), ch(0xffff), pe(parseError), ec(status) {} ~LocDataParser() {} - + /* * On a successful parse, return a StringLocalizationInfo*, otherwise delete locData, set perror and status, * and return NULL. The StringLocalizationInfo will adopt locData if it is created. */ StringLocalizationInfo* parse(UChar* data, int32_t len); - + private: - + inline void inc(void) { ++p; ch = 0xffff; @@ -347,9 +347,9 @@ class LocDataParser { return *list == c; } void parseError(const char* msg); - + StringLocalizationInfo* doParse(void); - + UChar** nextArray(int32_t& requiredLength); UChar* nextString(void); }; @@ -367,17 +367,17 @@ class LocDataParser { } UPRV_BLOCK_MACRO_END #define EXPLANATION_ARG #endif + - -static const UChar DQUOTE_STOPLIST[] = { +static const UChar DQUOTE_STOPLIST[] = { QUOTE, 0 }; -static const UChar SQUOTE_STOPLIST[] = { +static const UChar SQUOTE_STOPLIST[] = { TICK, 0 }; -static const UChar NOQUOTE_STOPLIST[] = { +static const UChar NOQUOTE_STOPLIST[] = { SPACE, COMMA, CLOSE_ANGLE, OPEN_ANGLE, TICK, QUOTE, 0 }; @@ -461,11 +461,11 @@ LocDataParser::doParse(void) { if (U_SUCCESS(ec)) { int32_t numLocs = array.length() - 2; // subtract first, NULL UChar*** result = (UChar***)array.release(); - + return new StringLocalizationInfo(data, result, requiredLength-2, numLocs); // subtract first, NULL } } - + ERROR("Unknown error"); } @@ -474,7 +474,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { if (U_FAILURE(ec)) { return NULL; } - + skipWhitespace(); if (!checkInc(OPEN_ANGLE)) { ERROR("Missing open angle"); @@ -514,7 +514,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { ec = U_ILLEGAL_ARGUMENT_ERROR; ERROR("Array not of required length"); } - + return (UChar**)array.release(); } ERROR("Unknown Error"); @@ -523,7 +523,7 @@ LocDataParser::nextArray(int32_t& requiredLength) { UChar* LocDataParser::nextString() { UChar* result = NULL; - + skipWhitespace(); if (p < e) { const UChar* terminators; @@ -540,7 +540,7 @@ LocDataParser::nextString() { if (p == e) { ERROR("Unexpected end of data"); } - + UChar x = *p; if (p > start) { ch = x; @@ -588,7 +588,7 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) u_strncpy(pe.postContext, p, (int32_t)(limit-p)); pe.postContext[limit-p] = 0; pe.offset = (int32_t)(p - data); - + #ifdef RBNF_DEBUG fprintf(stderr, "%s at or near character %ld: ", EXPLANATION_ARG, p-data); @@ -597,7 +597,7 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) msg.append((UChar)0x002f); /* SOLIDUS/SLASH */ msg.append(p, limit-p); msg.append(UNICODE_STRING_SIMPLE("'")); - + char buf[128]; int32_t len = msg.extract(0, msg.length(), buf, 128); if (len >= 128) { @@ -608,12 +608,12 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) fprintf(stderr, "%s\n", buf); fflush(stderr); #endif - + uprv_free(data); data = NULL; p = NULL; e = NULL; - + if (U_SUCCESS(ec)) { ec = U_PARSE_ERROR; } @@ -621,17 +621,17 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG) //UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringLocalizationInfo) -StringLocalizationInfo* +StringLocalizationInfo* StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, UErrorCode& status) { if (U_FAILURE(status)) { return NULL; } - + int32_t len = info.length(); if (len == 0) { return NULL; // no error; } - + UChar* p = (UChar*)uprv_malloc(len * sizeof(UChar)); if (!p) { status = U_MEMORY_ALLOCATION_ERROR; @@ -641,7 +641,7 @@ StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, U if (!U_FAILURE(status)) { status = U_ZERO_ERROR; // clear warning about non-termination } - + LocDataParser parser(perror, status); return parser.parse(p, len); } @@ -683,7 +683,7 @@ StringLocalizationInfo::getDisplayName(int32_t localeIndex, int32_t ruleIndex) c // ---------- -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const UnicodeString& locs, const Locale& alocale, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -708,7 +708,7 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, locinfo, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const UnicodeString& locs, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -733,7 +733,7 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, locinfo, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, LocalizationInfo* info, const Locale& alocale, UParseError& perror, UErrorCode& status) : fRuleSets(NULL) @@ -757,9 +757,9 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, info, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, - UParseError& perror, - UErrorCode& status) +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, + UParseError& perror, + UErrorCode& status) : fRuleSets(NULL) , ruleSetDescriptions(NULL) , numRuleSets(0) @@ -781,10 +781,10 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, init(description, NULL, perror, status); } -RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, +RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description, const Locale& aLocale, - UParseError& perror, - UErrorCode& status) + UParseError& perror, + UErrorCode& status) : fRuleSets(NULL) , ruleSetDescriptions(NULL) , numRuleSets(0) @@ -936,11 +936,11 @@ RuleBasedNumberFormat::clone() const return new RuleBasedNumberFormat(*this); } -UBool +bool RuleBasedNumberFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (typeid(*this) == typeid(other)) { @@ -950,10 +950,10 @@ RuleBasedNumberFormat::operator==(const Format& other) const // the info here is just derived from that. if (locale == rhs.locale && lenient == rhs.lenient && - (localizations == NULL - ? rhs.localizations == NULL - : (rhs.localizations == NULL - ? FALSE + (localizations == NULL + ? rhs.localizations == NULL + : (rhs.localizations == NULL + ? false : *localizations == rhs.localizations))) { NFRuleSet** p = fRuleSets; @@ -961,7 +961,7 @@ RuleBasedNumberFormat::operator==(const Format& other) const if (p == NULL) { return q == NULL; } else if (q == NULL) { - return FALSE; + return false; } while (*p && *q && (**p == **q)) { ++p; @@ -971,7 +971,7 @@ RuleBasedNumberFormat::operator==(const Format& other) const } } - return FALSE; + return false; } UnicodeString @@ -1026,7 +1026,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetNames() const return result; } -int32_t +int32_t RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales(void) const { if (localizations) { return localizations->getNumberOfDisplayLocales(); @@ -1034,7 +1034,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales(void) const { return 0; } -Locale +Locale RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& status) const { if (U_FAILURE(status)) { return Locale(""); @@ -1063,10 +1063,10 @@ RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& st return retLocale; } -UnicodeString +UnicodeString RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& localeParam) { if (localizations && index >= 0 && index < localizations->getNumberOfRuleSets()) { - UnicodeString localeName(localeParam.getBaseName(), -1, UnicodeString::kInvariant); + UnicodeString localeName(localeParam.getBaseName(), -1, UnicodeString::kInvariant); int32_t len = localeName.length(); UChar* localeStr = localeName.getBuffer(len + 1); while (len >= 0) { @@ -1076,8 +1076,8 @@ RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& locale UnicodeString name(TRUE, localizations->getDisplayName(ix, index), -1); return name; } - - // trim trailing portion, skipping over ommitted sections + + // trim trailing portion, skipping over omitted sections do { --len;} while (len > 0 && localeStr[len] != 0x005f); // underscore while (len > 0 && localeStr[len-1] == 0x005F) --len; } @@ -1089,7 +1089,7 @@ RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& locale return bogus; } -UnicodeString +UnicodeString RuleBasedNumberFormat::getRuleSetDisplayName(const UnicodeString& ruleSetName, const Locale& localeParam) { if (localizations) { UnicodeString rsn(ruleSetName); @@ -1408,7 +1408,7 @@ RuleBasedNumberFormat::setLenient(UBool enabled) #endif -void +void RuleBasedNumberFormat::setDefaultRuleSet(const UnicodeString& ruleSetName, UErrorCode& status) { if (U_SUCCESS(status)) { if (ruleSetName.isEmpty()) { @@ -1440,7 +1440,7 @@ RuleBasedNumberFormat::getDefaultRuleSetName() const { return result; } -void +void RuleBasedNumberFormat::initDefaultRuleSet() { defaultRuleSet = NULL; @@ -1501,7 +1501,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali } // start by stripping the trailing whitespace from all the rules - // (this is all the whitespace follwing each semicolon in the + // (this is all the whitespace following each semicolon in the // description). This allows us to look for rule-set boundaries // by searching for ";%" without having to worry about whitespace // between the ; and the % @@ -1612,7 +1612,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali // by appending more rule sets to the end) // {dlf} Initialization of a fraction rule set requires the default rule - // set to be known. For purposes of initialization, this is always the + // set to be known. For purposes of initialization, this is always the // last public rule set, no matter what the localization data says. initDefaultRuleSet(); @@ -1631,7 +1631,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali // The C code keeps the localization array as is, rather than building // a separate array of the public rule set names, so we have less work // to do here-- but we still need to check the names. - + if (localizationInfos) { // confirm the names, if any aren't in the rules, that's an error // it is ok if the rules contain public rule sets that are not in this list @@ -1658,10 +1658,10 @@ RuleBasedNumberFormat::setContext(UDisplayContext value, UErrorCode& status) { NumberFormat::setContext(value, status); if (U_SUCCESS(status)) { - if (!capitalizationInfoSet && - (value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE)) { - initCapitalizationContextInfo(locale); - capitalizationInfoSet = TRUE; + if (!capitalizationInfoSet && + (value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE)) { + initCapitalizationContextInfo(locale); + capitalizationInfoSet = TRUE; } #if !UCONFIG_NO_BREAK_ITERATION if ( capitalizationBrkIter == NULL && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE || diff --git a/deps/icu-small/source/i18n/rbt.cpp b/deps/icu-small/source/i18n/rbt.cpp index 65199478449014..1de53e6071c477 100644 --- a/deps/icu-small/source/i18n/rbt.cpp +++ b/deps/icu-small/source/i18n/rbt.cpp @@ -62,7 +62,7 @@ void RuleBasedTransliterator::_construct(const UnicodeString& rules, * @param rules rules, separated by ';' * @param direction either FORWARD or REVERSE. * @param adoptedFilter the filter for this transliterator. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code. * @exception IllegalArgumentException if rules are malformed @@ -235,16 +235,16 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& } // Transliterator locking. Rule-based Transliterators are not thread safe; concurrent - // operations must be prevented. + // operations must be prevented. // A Complication: compound transliterators can result in recursive entries to this - // function, sometimes with different "This" objects, always with the same text. + // function, sometimes with different "This" objects, always with the same text. // Double-locking must be prevented in these cases. - // + // UBool lockedMutexAtThisLevel = FALSE; // Test whether this request is operating on the same text string as - // some other transliteration that is still in progress and holding the + // some other transliteration that is still in progress and holding the // transliteration mutex. If so, do not lock the transliteration // mutex again. // @@ -265,7 +265,7 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& gLockedText = &text; lockedMutexAtThisLevel = TRUE; } - + // Check to make sure we don't dereference a null pointer. if (fData != NULL) { while (index.start < index.limit && diff --git a/deps/icu-small/source/i18n/rbt.h b/deps/icu-small/source/i18n/rbt.h index 4d9991c48f8b72..8a43c90d462bee 100644 --- a/deps/icu-small/source/i18n/rbt.h +++ b/deps/icu-small/source/i18n/rbt.h @@ -144,7 +144,7 @@ class RuleBasedTransliterator : public Transliterator { * Implement Transliterator API. * @internal Use transliterator factory methods instead since this class will be removed in that release. */ - virtual RuleBasedTransliterator* clone() const; + virtual RuleBasedTransliterator* clone() const override; protected: /** @@ -152,7 +152,7 @@ class RuleBasedTransliterator : public Transliterator { * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets, - UBool isIncremental) const; + UBool isIncremental) const override; public: /** @@ -168,19 +168,19 @@ class RuleBasedTransliterator : public Transliterator { * @internal Use transliterator factory methods instead since this class will be removed in that release. */ virtual UnicodeString& toRules(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; protected: /** * Implement Transliterator framework */ - virtual void handleGetSourceSet(UnicodeSet& result) const; + virtual void handleGetSourceSet(UnicodeSet& result) const override; public: /** * Override Transliterator framework */ - virtual UnicodeSet& getTargetSet(UnicodeSet& result) const; + virtual UnicodeSet& getTargetSet(UnicodeSet& result) const override; /** * Return the class ID for this class. This is useful only for @@ -200,12 +200,12 @@ class RuleBasedTransliterator : public Transliterator { * is to implement a simple version of RTTI, since not all C++ * compilers support genuine RTTI. Polymorphic operator==() and * clone() methods call this method. - * + * * @return The class ID for this object. All objects of a given * class have the same class ID. Objects of other classes have * different class IDs. */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; private: diff --git a/deps/icu-small/source/i18n/rbt_data.cpp b/deps/icu-small/source/i18n/rbt_data.cpp index 7a9707b988b42e..f3985fc7685d03 100644 --- a/deps/icu-small/source/i18n/rbt_data.cpp +++ b/deps/icu-small/source/i18n/rbt_data.cpp @@ -51,7 +51,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData& new UnicodeString(*(const UnicodeString*)e->value.pointer); // Exit out if value could not be created. if (value == NULL) { - return; + return; } variableNames.put(*(UnicodeString*)e->key.pointer, value, status); } @@ -72,7 +72,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData& } } } - // Remove the array and exit if memory allocation error occured. + // Remove the array and exit if memory allocation error occurred. if (U_FAILURE(status)) { for (int32_t n = i-1; n >= 0; n--) { delete variables[n]; diff --git a/deps/icu-small/source/i18n/rbt_pars.cpp b/deps/icu-small/source/i18n/rbt_pars.cpp index 69465aecb9b142..2f207a8deb01e5 100644 --- a/deps/icu-small/source/i18n/rbt_pars.cpp +++ b/deps/icu-small/source/i18n/rbt_pars.cpp @@ -148,12 +148,12 @@ class ParseData : public UMemory, public SymbolTable { virtual ~ParseData(); - virtual const UnicodeString* lookup(const UnicodeString& s) const; + virtual const UnicodeString* lookup(const UnicodeString& s) const override; - virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const; + virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const override; virtual UnicodeString parseReference(const UnicodeString& text, - ParsePosition& pos, int32_t limit) const; + ParsePosition& pos, int32_t limit) const override; /** * Return true if the given character is a matcher standin or a plain * character (non standin). @@ -369,10 +369,10 @@ int32_t RuleHalf::parse(const UnicodeString& rule, int32_t pos, int32_t limit, U if (cursorOffset > 0 && cursor != cursorOffsetPos) { return syntaxError(U_MISPLACED_CURSOR_OFFSET, rule, start, status); } - + return pos; } - + /** * Parse a section of one side of a rule, stopping at either * the limit, the END_OF_RULE character, an operator, or a @@ -409,7 +409,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l int32_t varStart = -1; // Most recent $variableReference int32_t varLimit = -1; int32_t bufStart = buf.length(); - + while (pos < limit && !done) { // Since all syntax characters are in the BMP, fetching // 16-bit code units suffices here. @@ -437,7 +437,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (U_FAILURE(status)) { return syntaxError(U_MALFORMED_SET, rule, start, status); } - pos = pp.getIndex(); + pos = pp.getIndex(); continue; } // Handle escapes @@ -505,7 +505,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l } switch (c) { - + //------------------------------------------------------ // Elements allowed within and out of segments //------------------------------------------------------ @@ -522,15 +522,15 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l // bufSegStart is the offset in buf to the first // character of the segment we are parsing. int32_t bufSegStart = buf.length(); - + // Record segment number now, since nextSegmentNumber // will be incremented during the call to parseSection // if there are nested segments. int32_t segmentNumber = nextSegmentNumber++; // 1-based - + // Parse the segment pos = parseSection(rule, pos, limit, buf, UnicodeString(TRUE, ILLEGAL_SEG, -1), TRUE, status); - + // After parsing a segment, the relevant characters are // in buf, starting at offset bufSegStart. Extract them // into a string matcher, and replace them with a @@ -541,7 +541,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (m == NULL) { return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status); } - + // Record and associate object and segment number parser.setSegmentObject(segmentNumber, m, status); buf.truncate(bufSegStart); @@ -559,20 +559,20 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l !ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) { return syntaxError(U_INVALID_FUNCTION, rule, start, status); } - + Transliterator *t = single->createInstance(); delete single; if (t == NULL) { return syntaxError(U_INVALID_FUNCTION, rule, start, status); } - + // bufSegStart is the offset in buf to the first // character of the segment we are parsing. int32_t bufSegStart = buf.length(); - + // Parse the segment pos = parseSection(rule, iref, limit, buf, UnicodeString(TRUE, ILLEGAL_FUNC, -1), TRUE, status); - + // After parsing a segment, the relevant characters are // in buf, starting at offset bufSegStart. UnicodeString output; @@ -582,7 +582,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l if (r == NULL) { return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status); } - + // Replace the buffer contents with a stand-in buf.truncate(bufSegStart); buf.append(parser.generateStandInFor(r, status)); @@ -864,7 +864,7 @@ TransliteratorParser::parse(const UnicodeString& rules, /** * Return the compound filter parsed by parse(). Caller owns result. - */ + */ UnicodeSet* TransliteratorParser::orphanCompoundFilter() { UnicodeSet* f = compoundFilter; compoundFilter = NULL; @@ -893,7 +893,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, UBool parsingIDs = TRUE; int32_t ruleCount = 0; - + while (!dataVector.isEmpty()) { delete (TransliterationRuleData*)(dataVector.orphanElementAt(0)); } @@ -956,7 +956,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, // keep track of how many rules we've seen ++ruleCount; - + // We've found the start of a rule or ID. c is its first // character, and pos points past c. --pos; @@ -972,13 +972,17 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, } int32_t p = pos; - + if (!parsingIDs) { if (curData != NULL) { + U_ASSERT(!dataVector.hasDeleter()); if (direction == UTRANS_FORWARD) dataVector.addElement(curData, status); else dataVector.insertElementAt(curData, 0, status); + if (U_FAILURE(status)) { + delete curData; + } curData = NULL; } parsingIDs = TRUE; @@ -1031,10 +1035,14 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, status = U_MEMORY_ALLOCATION_ERROR; return; } + U_ASSERT(idBlockVector.hasDeleter()); if (direction == UTRANS_FORWARD) - idBlockVector.addElement(tempstr, status); + idBlockVector.adoptElement(tempstr, status); else idBlockVector.insertElementAt(tempstr, 0, status); + if (U_FAILURE(status)) { + return; + } idBlockResult.remove(); parsingIDs = FALSE; curData = new TransliterationRuleData(status); @@ -1069,21 +1077,31 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, tempstr = new UnicodeString(idBlockResult); // NULL pointer check if (tempstr == NULL) { + // TODO: Testing, forcing this path, shows many memory leaks. ICU-21701 + // intltest translit/TransliteratorTest/TestInstantiation status = U_MEMORY_ALLOCATION_ERROR; return; } if (direction == UTRANS_FORWARD) - idBlockVector.addElement(tempstr, status); + idBlockVector.adoptElement(tempstr, status); else idBlockVector.insertElementAt(tempstr, 0, status); + if (U_FAILURE(status)) { + return; + } } else if (!parsingIDs && curData != NULL) { - if (direction == UTRANS_FORWARD) + if (direction == UTRANS_FORWARD) { dataVector.addElement(curData, status); - else + } else { dataVector.insertElementAt(curData, 0, status); + } + if (U_FAILURE(status)) { + delete curData; + curData = nullptr; + } } - + if (U_SUCCESS(status)) { // Convert the set vector to an array int32_t i, dataVectorSize = dataVector.size(); @@ -1106,7 +1124,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, data->variables[j] = static_cast(variablesVector.elementAt(j)); } - + data->variableNames.removeAll(); int32_t p = UHASH_FIRST; const UHashElement* he = variableNames.nextElement(p); @@ -1129,7 +1147,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule, (direction == UTRANS_REVERSE && compoundFilterOffset != ruleCount)) { status = U_MISPLACED_COMPOUND_FILTER; } - } + } for (i = 0; i < dataVectorSize; i++) { TransliterationRuleData* data = (TransliterationRuleData*)dataVector.elementAt(i); @@ -1149,7 +1167,7 @@ void TransliteratorParser::setVariableRange(int32_t start, int32_t end, UErrorCo status = U_MALFORMED_PRAGMA; return; } - + curData->variablesBase = (UChar) start; if (dataVector.size() == 0) { variableNext = (UChar) start; @@ -1214,12 +1232,12 @@ UBool TransliteratorParser::resemblesPragma(const UnicodeString& rule, int32_t p */ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos, int32_t limit, UErrorCode& status) { int32_t array[2]; - + // resemblesPragma() has already returned true, so we // know that pos points to /use\s/i; we can skip 4 characters // immediately pos += 4; - + // Here are the pragmas we recognize: // use variable range 0xE000 0xEFFF; // use maximum backup 16; @@ -1230,25 +1248,25 @@ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos setVariableRange(array[0], array[1], status); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_MAXIMUM_BACKUP, -1), array); if (p >= 0) { pragmaMaximumBackup(array[0]); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_NFD_RULES, -1), NULL); if (p >= 0) { pragmaNormalizeRules(UNORM_NFD); return p; } - + p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(TRUE, PRAGMA_NFC_RULES, -1), NULL); if (p >= 0) { pragmaNormalizeRules(UNORM_NFC); return p; } - + // Syntax error: unable to parse pragma return -1; } @@ -1345,7 +1363,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos, if (left->anchorStart || left->anchorEnd || right->anchorStart || right->anchorEnd) { return syntaxError(U_MALFORMED_VARIABLE_DEFINITION, rule, start, status); - } + } // We allow anything on the right, including an empty string. UnicodeString* value = new UnicodeString(right->text); // NULL pointer check @@ -1379,7 +1397,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos, syntaxError(U_INTERNAL_TRANSLITERATOR_ERROR, rule, start, status); // will never happen } } - + // If the direction we want doesn't match the rule // direction, do nothing. if (op != FWDREV_RULE_OP && @@ -1477,20 +1495,20 @@ int32_t TransliteratorParser::syntaxError(UErrorCode parseErrorCode, { parseError.offset = pos; parseError.line = 0 ; /* we are not using line numbers */ - + // for pre-context const int32_t LEN = U_PARSE_CONTEXT_LEN - 1; int32_t start = uprv_max(pos - LEN, 0); int32_t stop = pos; - + rule.extract(start,stop-start,parseError.preContext); //null terminate the buffer parseError.preContext[stop-start] = 0; - + //for post-context start = pos; stop = uprv_min(pos + LEN, rule.length()); - + rule.extract(start,stop-start,parseError.postContext); //null terminate the buffer parseError.postContext[stop-start]= 0; @@ -1523,7 +1541,7 @@ UChar TransliteratorParser::parseSet(const UnicodeString& rule, */ UChar TransliteratorParser::generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status) { // assert(obj != null); - + // Look up previous stand-in, if any. This is a short list // (typical n is 0, 1, or 2); linear search is optimal. for (int32_t i=0; ivariablesBase + i); } } - + if (variableNext >= variableLimit) { delete adopted; status = U_VARIABLE_RANGE_EXHAUSTED; return 0; } variablesVector.addElement(adopted, status); + if (U_FAILURE(status)) { + delete adopted; + return 0; + } return variableNext++; } @@ -1577,13 +1599,17 @@ void TransliteratorParser::setSegmentObject(int32_t seg, StringMatcher* adopted, if (segmentObjects.size() < seg) { segmentObjects.setSize(seg, status); } + if (U_FAILURE(status)) { + return; + } int32_t index = getSegmentStandin(seg, status) - curData->variablesBase; if (segmentObjects.elementAt(seg-1) != NULL || variablesVector.elementAt(index) != NULL) { // should never happen - status = U_INTERNAL_TRANSLITERATOR_ERROR; + if (U_SUCCESS(status)) {status = U_INTERNAL_TRANSLITERATOR_ERROR;} return; } + // Note: neither segmentObjects or variablesVector has an object deleter function. segmentObjects.setElementAt(adopted, seg-1); variablesVector.setElementAt(adopted, index); } diff --git a/deps/icu-small/source/i18n/rbt_pars.h b/deps/icu-small/source/i18n/rbt_pars.h index 9336d410d351e5..d1a4cd6997c6da 100644 --- a/deps/icu-small/source/i18n/rbt_pars.h +++ b/deps/icu-small/source/i18n/rbt_pars.h @@ -84,8 +84,8 @@ class TransliteratorParser : public UMemory { * Temporary table of variable names. When parsing is complete, this is * copied into data.variableNames. */ - Hashtable variableNames; - + Hashtable variableNames; + /** * String of standins for segments. Used during the parsing of a single * rule. segmentStandins.charAt(0) is the standin for "$1" and corresponds @@ -95,7 +95,7 @@ class TransliteratorParser : public UMemory { /** * Vector of StringMatcher objects for segments. Used during the - * parsing of a single rule. + * parsing of a single rule. * segmentStandins.charAt(0) is the standin for "$1" and corresponds * to StringMatcher object segmentObjects.elementAt(0), etc. */ @@ -156,7 +156,7 @@ class TransliteratorParser : public UMemory { * call returns. * @param rules rules, separated by ';' * @param direction either FORWARD or REVERSE. - * @param pe Struct to recieve information on position + * @param pe Struct to receive information on position * of error if an error is encountered * @param ec Output param set to success/failure code. */ @@ -168,7 +168,7 @@ class TransliteratorParser : public UMemory { /** * Return the compound filter parsed by parse(). Caller owns result. * @return the compound filter parsed by parse(). - */ + */ UnicodeSet* orphanCompoundFilter(); private: @@ -328,7 +328,7 @@ class TransliteratorParser : public UMemory { * Copy constructor */ TransliteratorParser(const TransliteratorParser&); - + /** * Assignment operator */ diff --git a/deps/icu-small/source/i18n/rbt_rule.cpp b/deps/icu-small/source/i18n/rbt_rule.cpp index cd7bd5d9dfb655..6cc5325c467eab 100644 --- a/deps/icu-small/source/i18n/rbt_rule.cpp +++ b/deps/icu-small/source/i18n/rbt_rule.cpp @@ -126,7 +126,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input, return; } } - + key = NULL; if (keyLength > 0) { key = new StringMatcher(pattern, anteContextLength, anteContextLength + keyLength, @@ -137,7 +137,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input, return; } } - + int32_t postContextLength = pattern.length() - keyLength - anteContextLength; postContext = NULL; if (postContextLength > 0) { @@ -259,7 +259,7 @@ UBool TransliterationRule::masks(const TransliterationRule& r2) const { * r1: aakkkpppp * r2: aaakkkkkpppp * ^ - * + * * The strings must be aligned at the first character of the * key. The length of r1 to the left of the alignment point * must be <= the length of r2 to the left; ditto for the @@ -337,10 +337,10 @@ static inline int32_t posAfter(const Replaceable& str, int32_t pos) { * context and key characters match, but the text is not long * enough to match all of them. A full match means all context * and key characters match. - * + * * If a full match is obtained, perform a replacement, update pos, * and return U_MATCH. Otherwise both text and pos are unchanged. - * + * * @param text the text * @param pos the position indices * @param incremental if TRUE, test for partial matches that may @@ -383,7 +383,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, // 32-bit code points. This works because stand-ins are // always in the BMP and because we are doing a literal match // operation, which can be done 16-bits at a time. - + int32_t anteLimit = posBefore(text, pos.contextStart); UMatchDegree match; @@ -401,13 +401,13 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, minOText = posAfter(text, oText); // ------------------------ Start Anchor ------------------------ - + if (((flags & ANCHOR_START) != 0) && oText != anteLimit) { return U_MISMATCH; } // -------------------- Key and Post Context -------------------- - + oText = pos.start; if (key != NULL) { @@ -433,9 +433,9 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, return match; } } - + // ------------------------- Stop Anchor ------------------------ - + if (((flags & ANCHOR_END)) != 0) { if (oText != pos.contextLimit) { return U_MISMATCH; @@ -444,7 +444,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text, return U_PARTIAL_MATCH; } } - + // =========================== REPLACE ========================== // We have a full match. The key is between pos.start and diff --git a/deps/icu-small/source/i18n/rbt_rule.h b/deps/icu-small/source/i18n/rbt_rule.h index 76feeee3913e6a..b927f5d6c05c11 100644 --- a/deps/icu-small/source/i18n/rbt_rule.h +++ b/deps/icu-small/source/i18n/rbt_rule.h @@ -261,10 +261,10 @@ class TransliterationRule : public UMemory { * context and key characters match, but the text is not long * enough to match all of them. A full match means all context * and key characters match. - * + * * If a full match is obtained, perform a replacement, update pos, * and return U_MATCH. Otherwise both text and pos are unchanged. - * + * * @param text the text * @param pos the position indices * @param incremental if true, test for partial matches that may diff --git a/deps/icu-small/source/i18n/rbt_set.cpp b/deps/icu-small/source/i18n/rbt_set.cpp index 939c0ea39ade63..abc4413c2c6f61 100644 --- a/deps/icu-small/source/i18n/rbt_set.cpp +++ b/deps/icu-small/source/i18n/rbt_set.cpp @@ -143,19 +143,19 @@ static void maskingError(const icu::TransliterationRule& rule1, int32_t len; parseError.line = parseError.offset = -1; - + // for pre-context rule1.toRule(r, FALSE); len = uprv_min(r.length(), U_PARSE_CONTEXT_LEN-1); r.extract(0, len, parseError.preContext); - parseError.preContext[len] = 0; - + parseError.preContext[len] = 0; + //for post-context r.truncate(0); rule2.toRule(r, FALSE); len = uprv_min(r.length(), U_PARSE_CONTEXT_LEN-1); r.extract(0, len, parseError.postContext); - parseError.postContext[len] = 0; + parseError.postContext[len] = 0; } U_NAMESPACE_BEGIN @@ -197,7 +197,7 @@ TransliterationRuleSet::TransliterationRuleSet(const TransliterationRuleSet& oth status = U_MEMORY_ALLOCATION_ERROR; break; } - ruleVector->addElement(tempTranslitRule, status); + ruleVector->addElementX(tempTranslitRule, status); if (U_FAILURE(status)) { break; } @@ -251,7 +251,7 @@ void TransliterationRuleSet::addRule(TransliterationRule* adoptedRule, delete adoptedRule; return; } - ruleVector->addElement(adoptedRule, status); + ruleVector->addElementX(adoptedRule, status); int32_t len; if ((len = adoptedRule->getContextLength()) > maxContextLength) { @@ -316,16 +316,16 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status) for (j=0; j= 0) { if (indexValue[j] == x) { - v.addElement(ruleVector->elementAt(j), status); + v.addElementX(ruleVector->elementAt(j), status); } } else { // If the indexValue is < 0, then the first key character is // a set, and we must use the more time-consuming // matchesIndexValue check. In practice this happens - // rarely, so we seldom tread this code path. + // rarely, so we seldom treat this code path. TransliterationRule* r = (TransliterationRule*) ruleVector->elementAt(j); if (r->matchesIndexValue((uint8_t)x)) { - v.addElement(r, status); + v.addElementX(r, status); } } } @@ -396,7 +396,7 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status) * @param text the text to be transliterated * @param pos the position indices, which will be updated * @param incremental if TRUE, assume new text may be inserted - * at index.limit, and return FALSE if thre is a partial match. + * at index.limit, and return FALSE if there is a partial match. * @return TRUE unless a U_PARTIAL_MATCH has been obtained, * indicating that transliteration should stop until more text * arrives. diff --git a/deps/icu-small/source/i18n/rbt_set.h b/deps/icu-small/source/i18n/rbt_set.h index b1163a0193f862..3a2890e8ec7973 100644 --- a/deps/icu-small/source/i18n/rbt_set.h +++ b/deps/icu-small/source/i18n/rbt_set.h @@ -120,7 +120,7 @@ class TransliterationRuleSet : public UMemory { * @param status Output parameter filled in with success or failure status. */ virtual void freeze(UParseError& parseError, UErrorCode& status); - + /** * Transliterate the given text with the given UTransPosition * indices. Return true if the transliteration should continue @@ -129,7 +129,7 @@ class TransliterationRuleSet : public UMemory { * @param text the text to be transliterated * @param index the position indices, which will be updated * @param isIncremental if true, assume new text may be inserted - * at index.limit, and return false if thre is a partial match. + * at index.limit, and return false if thrre is a partial match. * @return true unless a U_PARTIAL_MATCH has been obtained, * indicating that transliteration should stop until more text * arrives. diff --git a/deps/icu-small/source/i18n/rbtz.cpp b/deps/icu-small/source/i18n/rbtz.cpp index 9d8eea9263a280..495d8310d00298 100644 --- a/deps/icu-small/source/i18n/rbtz.cpp +++ b/deps/icu-small/source/i18n/rbtz.cpp @@ -25,12 +25,19 @@ U_NAMESPACE_BEGIN /** * A struct representing a time zone transition */ -struct Transition { +struct Transition : public UMemory { UDate time; TimeZoneRule* from; TimeZoneRule* to; }; +U_CDECL_BEGIN +static void U_CALLCONV +deleteTransition(void* obj) { + delete static_cast(obj); +} +U_CDECL_END + static UBool compareRules(UVector* rules1, UVector* rules2) { if (rules1 == NULL && rules2 == NULL) { return TRUE; @@ -88,59 +95,61 @@ RuleBasedTimeZone::operator=(const RuleBasedTimeZone& right) { return *this; } -UBool +bool RuleBasedTimeZone::operator==(const TimeZone& that) const { if (this == &that) { - return TRUE; + return true; } - if (typeid(*this) != typeid(that) - || BasicTimeZone::operator==(that) == FALSE) { - return FALSE; + if (typeid(*this) != typeid(that) || !BasicTimeZone::operator==(that)) { + return false; } RuleBasedTimeZone *rbtz = (RuleBasedTimeZone*)&that; if (*fInitialRule != *(rbtz->fInitialRule)) { - return FALSE; + return false; } if (compareRules(fHistoricRules, rbtz->fHistoricRules) && compareRules(fFinalRules, rbtz->fFinalRules)) { - return TRUE; + return true; } - return FALSE; + return false; } -UBool +bool RuleBasedTimeZone::operator!=(const TimeZone& that) const { return !operator==(that); } void RuleBasedTimeZone::addTransitionRule(TimeZoneRule* rule, UErrorCode& status) { + LocalPointerlpRule(rule); if (U_FAILURE(status)) { return; } AnnualTimeZoneRule* atzrule = dynamic_cast(rule); - if (atzrule != NULL && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR) { + if (atzrule != nullptr && atzrule->getEndYear() == AnnualTimeZoneRule::MAX_YEAR) { // A final rule - if (fFinalRules == NULL) { - fFinalRules = new UVector(status); + if (fFinalRules == nullptr) { + LocalPointer lpFinalRules(new UVector(uprv_deleteUObject, nullptr, status), status); if (U_FAILURE(status)) { return; } + fFinalRules = lpFinalRules.orphan(); } else if (fFinalRules->size() >= 2) { // Cannot handle more than two final rules status = U_INVALID_STATE_ERROR; return; } - fFinalRules->addElement((void*)rule, status); + fFinalRules->adoptElement(lpRule.orphan(), status); } else { // Non-final rule - if (fHistoricRules == NULL) { - fHistoricRules = new UVector(status); + if (fHistoricRules == nullptr) { + LocalPointer lpHistoricRules(new UVector(uprv_deleteUObject, nullptr, status), status); if (U_FAILURE(status)) { return; } + fHistoricRules = lpHistoricRules.orphan(); } - fHistoricRules->addElement((void*)rule, status); + fHistoricRules->adoptElement(lpRule.orphan(), status); } // Mark dirty, so transitions are recalculated at next complete() call fUpToDate = FALSE; @@ -176,7 +185,6 @@ RuleBasedTimeZone::complete(UErrorCode& status) { return; } - UBool *done = NULL; // Create a TimezoneTransition and add to the list if (fHistoricRules != NULL || fFinalRules != NULL) { TimeZoneRule *curRule = fInitialRule; @@ -187,13 +195,13 @@ RuleBasedTimeZone::complete(UErrorCode& status) { if (fHistoricRules != NULL && fHistoricRules->size() > 0) { int32_t i; int32_t historicCount = fHistoricRules->size(); - done = (UBool*)uprv_malloc(sizeof(UBool) * historicCount); + LocalMemory done((bool *)uprv_malloc(sizeof(bool) * historicCount)); if (done == NULL) { status = U_MEMORY_ALLOCATION_ERROR; goto cleanup; } for (i = 0; i < historicCount; i++) { - done[i] = FALSE; + done[i] = false; } while (TRUE) { int32_t curStdOffset = curRule->getRawOffset(); @@ -214,7 +222,7 @@ RuleBasedTimeZone::complete(UErrorCode& status) { avail = r->getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false, tt); if (!avail) { // No more transitions from this rule - skip this rule next time - done[i] = TRUE; + done[i] = true; } else { r->getName(name); if (*r == *curRule || @@ -267,20 +275,21 @@ RuleBasedTimeZone::complete(UErrorCode& status) { } if (fHistoricTransitions == NULL) { - fHistoricTransitions = new UVector(status); + LocalPointer lpHistoricTransitions( + new UVector(deleteTransition, nullptr, status), status); if (U_FAILURE(status)) { goto cleanup; } + fHistoricTransitions = lpHistoricTransitions.orphan(); } - Transition *trst = (Transition*)uprv_malloc(sizeof(Transition)); - if (trst == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; + LocalPointer trst(new Transition, status); + if (U_FAILURE(status)) { goto cleanup; } trst->time = nextTransitionTime; trst->from = curRule; trst->to = nextRule; - fHistoricTransitions->addElement(trst, status); + fHistoricTransitions->adoptElement(trst.orphan(), status); if (U_FAILURE(status)) { goto cleanup; } @@ -290,10 +299,12 @@ RuleBasedTimeZone::complete(UErrorCode& status) { } if (fFinalRules != NULL) { if (fHistoricTransitions == NULL) { - fHistoricTransitions = new UVector(status); + LocalPointer lpHistoricTransitions( + new UVector(deleteTransition, nullptr, status), status); if (U_FAILURE(status)) { goto cleanup; } + fHistoricTransitions = lpHistoricTransitions.orphan(); } // Append the first transition for each TimeZoneRule *rule0 = (TimeZoneRule*)fFinalRules->elementAt(0); @@ -306,16 +317,10 @@ RuleBasedTimeZone::complete(UErrorCode& status) { status = U_INVALID_STATE_ERROR; goto cleanup; } - Transition *final0 = (Transition*)uprv_malloc(sizeof(Transition)); - if (final0 == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - goto cleanup; - } - Transition *final1 = (Transition*)uprv_malloc(sizeof(Transition)); - if (final1 == NULL) { - uprv_free(final0); - status = U_MEMORY_ALLOCATION_ERROR; - goto cleanup; + LocalPointer final0(new Transition, status); + LocalPointer final1(new Transition, status); + if (U_FAILURE(status)) { + goto cleanup; } if (tt0 < tt1) { final0->time = tt0; @@ -332,27 +337,18 @@ RuleBasedTimeZone::complete(UErrorCode& status) { final1->from = rule1; final1->to = rule0; } - fHistoricTransitions->addElement(final0, status); - if (U_FAILURE(status)) { - goto cleanup; - } - fHistoricTransitions->addElement(final1, status); + fHistoricTransitions->adoptElement(final0.orphan(), status); + fHistoricTransitions->adoptElement(final1.orphan(), status); if (U_FAILURE(status)) { goto cleanup; } } } fUpToDate = TRUE; - if (done != NULL) { - uprv_free(done); - } return; cleanup: deleteTransitions(); - if (done != NULL) { - uprv_free(done); - } fUpToDate = FALSE; } @@ -449,7 +445,7 @@ RuleBasedTimeZone::getOffsetInternal(UDate date, UBool local, } if (rule == NULL) { // no final rules or the given time is before the first transition - // specified by the final rules -> use the last rule + // specified by the final rules -> use the last rule rule = ((Transition*)fHistoricTransitions->elementAt(idx))->to; } } else { @@ -629,16 +625,10 @@ RuleBasedTimeZone::deleteRules(void) { delete fInitialRule; fInitialRule = NULL; if (fHistoricRules != NULL) { - while (!fHistoricRules->isEmpty()) { - delete (TimeZoneRule*)(fHistoricRules->orphanElementAt(0)); - } delete fHistoricRules; fHistoricRules = NULL; } if (fFinalRules != NULL) { - while (!fFinalRules->isEmpty()) { - delete (AnnualTimeZoneRule*)(fFinalRules->orphanElementAt(0)); - } delete fFinalRules; fFinalRules = NULL; } @@ -647,10 +637,6 @@ RuleBasedTimeZone::deleteRules(void) { void RuleBasedTimeZone::deleteTransitions(void) { if (fHistoricTransitions != NULL) { - while (!fHistoricTransitions->isEmpty()) { - Transition *trs = (Transition*)fHistoricTransitions->orphanElementAt(0); - uprv_free(trs); - } delete fHistoricTransitions; } fHistoricTransitions = NULL; @@ -658,32 +644,24 @@ RuleBasedTimeZone::deleteTransitions(void) { UVector* RuleBasedTimeZone::copyRules(UVector* source) { - if (source == NULL) { - return NULL; + if (source == nullptr) { + return nullptr; } UErrorCode ec = U_ZERO_ERROR; int32_t size = source->size(); - UVector *rules = new UVector(size, ec); + LocalPointer rules(new UVector(uprv_deleteUObject, nullptr, size, ec), ec); if (U_FAILURE(ec)) { - return NULL; + return nullptr; } int32_t i; for (i = 0; i < size; i++) { - rules->addElement(((TimeZoneRule*)source->elementAt(i))->clone(), ec); + LocalPointer rule(((TimeZoneRule*)source->elementAt(i))->clone(), ec); + rules->adoptElement(rule.orphan(), ec); if (U_FAILURE(ec)) { - break; + return nullptr; } } - if (U_FAILURE(ec)) { - // In case of error, clean up - for (i = 0; i < rules->size(); i++) { - TimeZoneRule *rule = (TimeZoneRule*)rules->orphanElementAt(i); - delete rule; - } - delete rules; - return NULL; - } - return rules; + return rules.orphan(); } TimeZoneRule* @@ -749,7 +727,7 @@ RuleBasedTimeZone::findNext(UDate base, UBool inclusive, UDate& transitionTime, result = *tzt; found = TRUE; } else { - int32_t idx = fHistoricTransitions->size() - 1; + int32_t idx = fHistoricTransitions->size() - 1; tzt = (Transition*)fHistoricTransitions->elementAt(idx); tt = tzt->time; if (inclusive && tt == base) { @@ -832,7 +810,7 @@ RuleBasedTimeZone::findPrev(UDate base, UBool inclusive, UDate& transitionTime, result = *tzt; found = TRUE; } else if (tt < base) { - int32_t idx = fHistoricTransitions->size() - 1; + int32_t idx = fHistoricTransitions->size() - 1; tzt = (Transition*)fHistoricTransitions->elementAt(idx); tt = tzt->time; if (inclusive && tt == base) { @@ -956,3 +934,4 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ //eof + diff --git a/deps/icu-small/source/i18n/regexcmp.cpp b/deps/icu-small/source/i18n/regexcmp.cpp index 6c3a9e10ba12f2..89cb6584251fff 100644 --- a/deps/icu-small/source/i18n/regexcmp.cpp +++ b/deps/icu-small/source/i18n/regexcmp.cpp @@ -53,7 +53,7 @@ U_NAMESPACE_BEGIN // //------------------------------------------------------------------------------ RegexCompile::RegexCompile(RegexPattern *rxp, UErrorCode &status) : - fParenStack(status), fSetStack(status), fSetOpStack(status) + fParenStack(status), fSetStack(uprv_deleteUObject, nullptr, status), fSetOpStack(status) { // Lazy init of all shared global sets (needed for init()'s empty text) RegexStaticSets::initGlobals(&status); @@ -278,11 +278,6 @@ void RegexCompile::compile( if (U_FAILURE(*fStatus)) { // Bail out if the pattern had errors. - // Set stack cleanup: a successful compile would have left it empty, - // but errors can leave temporary sets hanging around. - while (!fSetStack.empty()) { - delete (UnicodeSet *)fSetStack.pop(); - } return; } @@ -447,7 +442,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doBadNamedCapture: error(U_REGEX_INVALID_CAPTURE_GROUP_NAME); break; - + case doOpenCaptureParen: // Open Capturing Paren, possibly named. // Compile to a @@ -473,7 +468,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_START_CAPTURE, varsLoc); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. Depending on what follows in the pattern, the // NOPs may be changed to SAVE_STATE or JMP ops, with a target // address of the end of the parenthesized group. @@ -515,7 +510,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(plain, *fStatus); // Begin a new frame. @@ -540,7 +535,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_STO_SP, varLoc); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs. Depending on what follows in the pattern, the // NOPs may be changed to SAVE_STATE or JMP ops, with a target // address of the end of the parenthesized group. @@ -594,7 +589,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the NOPs. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookAhead, *fStatus); // Frame type. @@ -627,7 +622,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_STATE_SAVE, 0); // dest address will be patched later. appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the StateSave and NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(negLookAhead, *fStatus); // Frame type @@ -679,7 +674,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the URX_LB_CONT and the NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookBehind, *fStatus); // Frame type @@ -734,7 +729,7 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the URX_LB_CONT and the NOP. fParenStack.push(fModeFlags, *fStatus); // Match mode state fParenStack.push(lookBehindN, *fStatus); // Frame type @@ -748,7 +743,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doConditionalExpr: // Conditionals such as (?(1)a:b) case doPerlInline: - // Perl inline-condtionals. (?{perl code}a|b) We're not perl, no way to do them. + // Perl inline-conditionals. (?{perl code}a|b) We're not perl, no way to do them. error(U_REGEX_UNIMPLEMENTED); break; @@ -1009,7 +1004,7 @@ UBool RegexCompile::doParseActions(int32_t action) case doIntervalInit: // The '{' opening an interval quantifier was just scanned. - // Init the counter varaiables that will accumulate the values as the digits + // Init the counter variables that will accumulate the values as the digits // are scanned. fIntervalLow = 0; fIntervalUpper = -1; @@ -1344,7 +1339,7 @@ UBool RegexCompile::doParseActions(int32_t action) error(U_MEMORY_ALLOCATION_ERROR); } break; - + case doContinueNamedBackRef: fCaptureName->append(fC.fChar); break; @@ -1372,7 +1367,7 @@ UBool RegexCompile::doParseActions(int32_t action) fCaptureName = NULL; break; } - + case doPossessivePlus: // Possessive ++ quantifier. // Compiles to @@ -1485,8 +1480,8 @@ UBool RegexCompile::doParseActions(int32_t action) case 0x78: /* 'x' */ bit = UREGEX_COMMENTS; break; case 0x2d: /* '-' */ fSetModeFlag = FALSE; break; default: - UPRV_UNREACHABLE; // Should never happen. Other chars are filtered out - // by the scanner. + UPRV_UNREACHABLE_EXIT; // Should never happen. Other chars are filtered out + // by the scanner. } if (fSetModeFlag) { fNewModeFlags |= bit; @@ -1522,9 +1517,9 @@ UBool RegexCompile::doParseActions(int32_t action) appendOp(URX_NOP, 0); appendOp(URX_NOP, 0); - // On the Parentheses stack, start a new frame and add the postions + // On the Parentheses stack, start a new frame and add the positions // of the two NOPs (a normal non-capturing () frame, except for the - // saving of the orignal mode flags.) + // saving of the original mode flags.) fParenStack.push(fModeFlags, *fStatus); fParenStack.push(flags, *fStatus); // Frame Marker fParenStack.push(fRXPat->fCompiledPat->size()-2, *fStatus); // The first NOP @@ -1656,13 +1651,16 @@ UBool RegexCompile::doParseActions(int32_t action) } case doSetBegin: - fixLiterals(FALSE); - fSetStack.push(new UnicodeSet(), *fStatus); - fSetOpStack.push(setStart, *fStatus); - if ((fModeFlags & UREGEX_CASE_INSENSITIVE) != 0) { - fSetOpStack.push(setCaseClose, *fStatus); + { + fixLiterals(FALSE); + LocalPointer lpSet(new UnicodeSet(), *fStatus); + fSetStack.push(lpSet.orphan(), *fStatus); + fSetOpStack.push(setStart, *fStatus); + if ((fModeFlags & UREGEX_CASE_INSENSITIVE) != 0) { + fSetOpStack.push(setCaseClose, *fStatus); + } + break; } - break; case doSetBeginDifference1: // We have scanned something like [[abc]-[ @@ -1860,7 +1858,7 @@ UBool RegexCompile::doParseActions(int32_t action) } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (U_FAILURE(*fStatus)) { @@ -1967,17 +1965,17 @@ int32_t RegexCompile::buildOp(int32_t type, int32_t val) { return 0; } if (type < 0 || type > 255) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (val > 0x00ffffff) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (val < 0) { if (!(type == URX_RESERVED_OP_N || type == URX_RESERVED_OP)) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } if (URX_TYPE(val) != 0xff) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } type = URX_RESERVED_OP_N; } @@ -2373,7 +2371,7 @@ void RegexCompile::handleCloseParen() { default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // remember the next location in the compiled pattern. @@ -2396,7 +2394,7 @@ void RegexCompile::compileSet(UnicodeSet *theSet) return; } // Remove any strings from the set. - // There shoudn't be any, but just in case. + // There shouldn't be any, but just in case. // (Case Closure can add them; if we had a simple case closure available that // ignored strings, that would be better.) theSet->removeAllStrings(); @@ -2428,7 +2426,11 @@ void RegexCompile::compileSet(UnicodeSet *theSet) theSet->freeze(); int32_t setNumber = fRXPat->fSets->size(); fRXPat->fSets->addElement(theSet, *fStatus); - appendOp(URX_SETREF, setNumber); + if (U_SUCCESS(*fStatus)) { + appendOp(URX_SETREF, setNumber); + } else { + delete theSet; + } } } } @@ -2565,8 +2567,8 @@ UBool RegexCompile::compileInlineInterval() { //------------------------------------------------------------------------------ // -// caseInsensitiveStart given a single code point from a pattern string, determine the -// set of characters that could potentially begin a case-insensitive +// caseInsensitiveStart given a single code point from a pattern string, determine the +// set of characters that could potentially begin a case-insensitive // match of a string beginning with that character, using full Unicode // case insensitive matching. // @@ -2579,7 +2581,7 @@ UBool RegexCompile::compileInlineInterval() { // The pattern could match a string beginning with a German sharp-s // // To the ordinary case closure for a character c, we add all other -// characters cx where the case closure of cx incudes a string form that begins +// characters cx where the case closure of cx includes a string form that begins // with the original character c. // // This function could be made smarter. The full pattern string is available @@ -2593,48 +2595,49 @@ void RegexCompile::findCaseInsensitiveStarters(UChar32 c, UnicodeSet *starterCh // Machine Generated below. // It may need updating with new versions of Unicode. // Intltest test RegexTest::TestCaseInsensitiveStarters will fail if an update is needed. -// The update tool is here: svn+ssh://source.icu-project.org/repos/icu/tools/trunk/unicode/c/genregexcasing +// The update tool is here: +// https://github.com/unicode-org/icu/tree/main/tools/unicode/c/genregexcasing // Machine Generated Data. Do not hand edit. static const UChar32 RECaseFixCodePoints[] = { - 0x61, 0x66, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x77, 0x79, 0x2bc, - 0x3ac, 0x3ae, 0x3b1, 0x3b7, 0x3b9, 0x3c1, 0x3c5, 0x3c9, 0x3ce, 0x565, - 0x574, 0x57e, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, - 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f60, 0x1f61, + 0x61, 0x66, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x77, 0x79, 0x2bc, + 0x3ac, 0x3ae, 0x3b1, 0x3b7, 0x3b9, 0x3c1, 0x3c5, 0x3c9, 0x3ce, 0x565, + 0x574, 0x57e, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, + 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f70, 0x1f74, 0x1f7c, 0x110000}; static const int16_t RECaseFixStringOffsets[] = { - 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xd, 0xe, 0xf, 0x10, - 0x11, 0x12, 0x13, 0x17, 0x1b, 0x20, 0x21, 0x2a, 0x2e, 0x2f, - 0x30, 0x34, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41, 0x43, - 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x57, + 0x0, 0x1, 0x6, 0x7, 0x8, 0x9, 0xd, 0xe, 0xf, 0x10, + 0x11, 0x12, 0x13, 0x17, 0x1b, 0x20, 0x21, 0x2a, 0x2e, 0x2f, + 0x30, 0x34, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41, 0x43, + 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5b, 0x5d, 0x5f, 0x61, 0x63, 0x65, 0x66, 0x67, 0}; static const int16_t RECaseFixCounts[] = { - 0x1, 0x5, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, - 0x1, 0x1, 0x4, 0x4, 0x5, 0x1, 0x9, 0x4, 0x1, 0x1, - 0x4, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x1, 0x5, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x4, 0x4, 0x5, 0x1, 0x9, 0x4, 0x1, 0x1, + 0x4, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0}; static const UChar RECaseFixData[] = { - 0x1e9a, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0x1e96, 0x130, 0x1f0, 0xdf, - 0x1e9e, 0xfb05, 0xfb06, 0x1e97, 0x1e98, 0x1e99, 0x149, 0x1fb4, 0x1fc4, 0x1fb3, - 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc3, 0x1fc6, 0x1fc7, 0x1fcc, 0x390, 0x1fd2, 0x1fd3, - 0x1fd6, 0x1fd7, 0x1fe4, 0x3b0, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fe2, 0x1fe3, - 0x1fe6, 0x1fe7, 0x1ff3, 0x1ff6, 0x1ff7, 0x1ffc, 0x1ff4, 0x587, 0xfb13, 0xfb14, - 0xfb15, 0xfb17, 0xfb16, 0x1f80, 0x1f88, 0x1f81, 0x1f89, 0x1f82, 0x1f8a, 0x1f83, - 0x1f8b, 0x1f84, 0x1f8c, 0x1f85, 0x1f8d, 0x1f86, 0x1f8e, 0x1f87, 0x1f8f, 0x1f90, - 0x1f98, 0x1f91, 0x1f99, 0x1f92, 0x1f9a, 0x1f93, 0x1f9b, 0x1f94, 0x1f9c, 0x1f95, - 0x1f9d, 0x1f96, 0x1f9e, 0x1f97, 0x1f9f, 0x1fa0, 0x1fa8, 0x1fa1, 0x1fa9, 0x1fa2, - 0x1faa, 0x1fa3, 0x1fab, 0x1fa4, 0x1fac, 0x1fa5, 0x1fad, 0x1fa6, 0x1fae, 0x1fa7, + 0x1e9a, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0x1e96, 0x130, 0x1f0, 0xdf, + 0x1e9e, 0xfb05, 0xfb06, 0x1e97, 0x1e98, 0x1e99, 0x149, 0x1fb4, 0x1fc4, 0x1fb3, + 0x1fb6, 0x1fb7, 0x1fbc, 0x1fc3, 0x1fc6, 0x1fc7, 0x1fcc, 0x390, 0x1fd2, 0x1fd3, + 0x1fd6, 0x1fd7, 0x1fe4, 0x3b0, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fe2, 0x1fe3, + 0x1fe6, 0x1fe7, 0x1ff3, 0x1ff6, 0x1ff7, 0x1ffc, 0x1ff4, 0x587, 0xfb13, 0xfb14, + 0xfb15, 0xfb17, 0xfb16, 0x1f80, 0x1f88, 0x1f81, 0x1f89, 0x1f82, 0x1f8a, 0x1f83, + 0x1f8b, 0x1f84, 0x1f8c, 0x1f85, 0x1f8d, 0x1f86, 0x1f8e, 0x1f87, 0x1f8f, 0x1f90, + 0x1f98, 0x1f91, 0x1f99, 0x1f92, 0x1f9a, 0x1f93, 0x1f9b, 0x1f94, 0x1f9c, 0x1f95, + 0x1f9d, 0x1f96, 0x1f9e, 0x1f97, 0x1f9f, 0x1fa0, 0x1fa8, 0x1fa1, 0x1fa9, 0x1fa2, + 0x1faa, 0x1fa3, 0x1fab, 0x1fa4, 0x1fac, 0x1fa5, 0x1fad, 0x1fa6, 0x1fae, 0x1fa7, 0x1faf, 0x1fb2, 0x1fc2, 0x1ff2, 0}; // End of machine generated data. if (c < UCHAR_MIN_VALUE || c > UCHAR_MAX_VALUE) { // This function should never be called with an invalid input character. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } else if (u_hasBinaryProperty(c, UCHAR_CASE_SENSITIVE)) { UChar32 caseFoldedC = u_foldCase(c, U_FOLD_CASE_DEFAULT); starterChars->set(caseFoldedC, caseFoldedC); @@ -2919,7 +2922,7 @@ void RegexCompile::matchStartType() { break; - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. case URX_DOTANY_ALL: // . matches one or two. case URX_DOTANY: case URX_DOTANY_UNIX: @@ -3127,10 +3130,10 @@ void RegexCompile::matchStartType() { case URX_LB_END: case URX_LBN_CONT: case URX_LBN_END: - UPRV_UNREACHABLE; // Shouldn't get here. These ops should be - // consumed by the scan in URX_LA_START and LB_START + UPRV_UNREACHABLE_EXIT; // Shouldn't get here. These ops should be + // consumed by the scan in URX_LA_START and LB_START default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3286,7 +3289,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { case URX_BACKSLASH_R: case URX_BACKSLASH_V: case URX_ONECHAR_I: - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. case URX_DOTANY_ALL: // . matches one or two. case URX_DOTANY: case URX_DOTANY_UNIX: @@ -3406,7 +3409,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { loc++; op = (int32_t)fRXPat->fCompiledPat->elementAti(loc); if (URX_TYPE(op) == URX_LA_START) { - // The boilerplate for look-ahead includes two LA_END insturctions, + // The boilerplate for look-ahead includes two LA_END instructions, // Depth will be decremented by each one when it is seen. depth += 2; } @@ -3450,7 +3453,7 @@ int32_t RegexCompile::minMatchLength(int32_t start, int32_t end) { break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3546,7 +3549,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { // Call the max length unbounded, and stop further checking. case URX_BACKREF: // BackRef. Must assume that it might be a zero length match case URX_BACKREF_I: - case URX_BACKSLASH_X: // Grahpeme Cluster. Minimum is 1, max unbounded. + case URX_BACKSLASH_X: // Grapheme Cluster. Minimum is 1, max unbounded. currentLen = INT32_MAX; break; @@ -3682,7 +3685,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { U_ASSERT(loopEndLoc >= loc+4); int64_t blockLen = maxMatchLength(loc+4, loopEndLoc-1); // Recursive call. - int64_t updatedLen = (int64_t)currentLen + blockLen * maxLoopCount; + int64_t updatedLen = (int64_t)currentLen + blockLen * maxLoopCount; if (updatedLen >= INT32_MAX) { currentLen = INT32_MAX; break; @@ -3696,7 +3699,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { case URX_CTR_LOOP_NG: // These opcodes will be skipped over by code for URX_CTR_INIT. // We shouldn't encounter them here. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case URX_LOOP_SR_I: case URX_LOOP_DOT_I: @@ -3716,7 +3719,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { // End of look-ahead ops should always be consumed by the processing at // the URX_LA_START op. - // UPRV_UNREACHABLE; + // UPRV_UNREACHABLE_EXIT; case URX_LB_START: { @@ -3735,7 +3738,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -3890,7 +3893,7 @@ void RegexCompile::stripNOPs() { default: // Some op is unaccounted for. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -3927,7 +3930,7 @@ void RegexCompile::error(UErrorCode e) { UErrorCode status = U_ZERO_ERROR; // throwaway status for extracting context // Fill in the context. - // Note: extractBetween() pins supplied indicies to the string bounds. + // Note: extractBetween() pins supplied indices to the string bounds. uprv_memset(fParseErr->preContext, 0, sizeof(fParseErr->preContext)); uprv_memset(fParseErr->postContext, 0, sizeof(fParseErr->postContext)); utext_extract(fRXPat->fPattern, fScanIndex-U_PARSE_CONTEXT_LEN+1, fScanIndex, fParseErr->preContext, U_PARSE_CONTEXT_LEN, &status); @@ -4057,7 +4060,7 @@ void RegexCompile::nextChar(RegexPatternChar &c) { // // We are in free-spacing and comments mode. // Scan through any white space and comments, until we - // reach a significant character or the end of inut. + // reach a significant character or the end of input. for (;;) { if (c.fChar == (UChar32)-1) { break; // End of Input @@ -4385,7 +4388,7 @@ static inline void addIdentifierIgnorable(UnicodeSet *set, UErrorCode& ec) { // // Create a Unicode Set from a Unicode Property expression. -// This is common code underlying both \p{...} ane [:...:] expressions. +// This is common code underlying both \p{...} and [:...:] expressions. // Includes trying the Java "properties" that aren't supported as // normal ICU UnicodeSet properties // @@ -4578,6 +4581,13 @@ UnicodeSet *RegexCompile::createSetForProperty(const UnicodeString &propName, UB } while (false); // End of do loop block. Code above breaks out of the block on success or hard failure. if (U_SUCCESS(status)) { + // ICU 70 adds emoji properties of strings, but as long as Java does not say how to + // deal with properties of strings and character classes with strings, we ignore them. + // Just in case something downstream might stumble over the strings, + // we remove them from the set. + // Note that when we support strings, the complement of a property (as with \P) + // should be implemented as .complement().removeAllStrings() (code point complement). + set->removeAllStrings(); U_ASSERT(set.isValid()); if (negated) { set->complement(); @@ -4611,6 +4621,13 @@ void RegexCompile::setEval(int32_t nextOp) { fSetOpStack.popi(); U_ASSERT(fSetStack.empty() == FALSE); rightOperand = (UnicodeSet *)fSetStack.peek(); + // ICU 70 adds emoji properties of strings, but createSetForProperty() removes all strings + // (see comments there). + // We also do not yet support string literals in character classes, + // so there should not be any strings. + // Note that when we support strings, the complement of a set (as with ^ or \P) + // should be implemented as .complement().removeAllStrings() (code point complement). + U_ASSERT(!rightOperand->hasStrings()); switch (pendingSetOperation) { case setNegation: rightOperand->complement(); @@ -4641,7 +4658,7 @@ void RegexCompile::setEval(int32_t nextOp) { delete rightOperand; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } } @@ -4649,8 +4666,10 @@ void RegexCompile::setEval(int32_t nextOp) { void RegexCompile::setPushOp(int32_t op) { setEval(op); fSetOpStack.push(op, *fStatus); - fSetStack.push(new UnicodeSet(), *fStatus); + LocalPointer lpSet(new UnicodeSet(), *fStatus); + fSetStack.push(lpSet.orphan(), *fStatus); } U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/regexcmp.h b/deps/icu-small/source/i18n/regexcmp.h index 5804ff302674a1..9e1aa170f08689 100644 --- a/deps/icu-small/source/i18n/regexcmp.h +++ b/deps/icu-small/source/i18n/regexcmp.h @@ -59,7 +59,7 @@ class U_I18N_API RegexCompile : public UMemory { void compile(const UnicodeString &pat, UParseError &pp, UErrorCode &e); void compile(UText *pat, UParseError &pp, UErrorCode &e); - + virtual ~RegexCompile(); @@ -182,7 +182,7 @@ class U_I18N_API RegexCompile : public UMemory { // string will be cleared. int64_t fPatternLength; // Length of the input pattern string. - + UVector32 fParenStack; // parentheses stack. Each frame consists of // the positions of compiled pattern operations // needing fixup, followed by negative value. The @@ -209,7 +209,7 @@ class U_I18N_API RegexCompile : public UMemory { // initially scanned. Each new interval // encountered overwrites these values. // -1 for the upper interval value means none - // was specified (unlimited occurences.) + // was specified (unlimited occurrences.) int64_t fNameStartPos; // Starting position of a \N{NAME} name in a // pattern, valid while remainder of name is @@ -228,7 +228,7 @@ class U_I18N_API RegexCompile : public UMemory { // in this string while being scanned. }; -// Constant values to be pushed onto fSetOpStack while scanning & evalueating [set expressions] +// Constant values to be pushed onto fSetOpStack while scanning & evaluating [set expressions] // The high 16 bits are the operator precedence, and the low 16 are a code for the operation itself. enum SetOperations { diff --git a/deps/icu-small/source/i18n/regexcst.h b/deps/icu-small/source/i18n/regexcst.h index 526c253e3bcb8d..d44c2aec2be343 100644 --- a/deps/icu-small/source/i18n/regexcst.h +++ b/deps/icu-small/source/i18n/regexcst.h @@ -7,8 +7,8 @@ // It is generated by the Perl script "regexcst.pl" from // the rule parser state definitions file "regexcst.txt". // -// Copyright (C) 2002-2016 International Business Machines Corporation -// and others. All rights reserved. +// Copyright (C) 2002-2016 International Business Machines Corporation +// and others. All rights reserved. // //--------------------------------------------------------------------------------- #ifndef RBBIRPT_H @@ -152,208 +152,208 @@ static const struct RegexTableEl gRuleParseStateTable[] = { {doNOP, 0, 0, 0, TRUE} , {doPatStart, 255, 2,0, FALSE} // 1 start , {doLiteralChar, 254, 14,0, TRUE} // 2 term - , {doLiteralChar, 130, 14,0, TRUE} // 3 - , {doSetBegin, 91 /* [ */, 123, 205, TRUE} // 4 - , {doNOP, 40 /* ( */, 27,0, TRUE} // 5 - , {doDotAny, 46 /* . */, 14,0, TRUE} // 6 - , {doCaret, 94 /* ^ */, 14,0, TRUE} // 7 - , {doDollar, 36 /* $ */, 14,0, TRUE} // 8 - , {doNOP, 92 /* \ */, 89,0, TRUE} // 9 - , {doOrOperator, 124 /* | */, 2,0, TRUE} // 10 - , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 11 - , {doPatFinish, 253, 2,0, FALSE} // 12 - , {doRuleError, 255, 206,0, FALSE} // 13 + , {doLiteralChar, 130, 14,0, TRUE} // 3 + , {doSetBegin, 91 /* [ */, 123, 205, TRUE} // 4 + , {doNOP, 40 /* ( */, 27,0, TRUE} // 5 + , {doDotAny, 46 /* . */, 14,0, TRUE} // 6 + , {doCaret, 94 /* ^ */, 14,0, TRUE} // 7 + , {doDollar, 36 /* $ */, 14,0, TRUE} // 8 + , {doNOP, 92 /* \ */, 89,0, TRUE} // 9 + , {doOrOperator, 124 /* | */, 2,0, TRUE} // 10 + , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 11 + , {doPatFinish, 253, 2,0, FALSE} // 12 + , {doRuleError, 255, 206,0, FALSE} // 13 , {doNOP, 42 /* * */, 68,0, TRUE} // 14 expr-quant - , {doNOP, 43 /* + */, 71,0, TRUE} // 15 - , {doNOP, 63 /* ? */, 74,0, TRUE} // 16 - , {doIntervalInit, 123 /* { */, 77,0, TRUE} // 17 - , {doNOP, 40 /* ( */, 23,0, TRUE} // 18 - , {doNOP, 255, 20,0, FALSE} // 19 + , {doNOP, 43 /* + */, 71,0, TRUE} // 15 + , {doNOP, 63 /* ? */, 74,0, TRUE} // 16 + , {doIntervalInit, 123 /* { */, 77,0, TRUE} // 17 + , {doNOP, 40 /* ( */, 23,0, TRUE} // 18 + , {doNOP, 255, 20,0, FALSE} // 19 , {doOrOperator, 124 /* | */, 2,0, TRUE} // 20 expr-cont - , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 21 - , {doNOP, 255, 2,0, FALSE} // 22 + , {doCloseParen, 41 /* ) */, 255,0, TRUE} // 21 + , {doNOP, 255, 2,0, FALSE} // 22 , {doSuppressComments, 63 /* ? */, 25,0, TRUE} // 23 open-paren-quant - , {doNOP, 255, 27,0, FALSE} // 24 + , {doNOP, 255, 27,0, FALSE} // 24 , {doNOP, 35 /* # */, 50, 14, TRUE} // 25 open-paren-quant2 - , {doNOP, 255, 29,0, FALSE} // 26 + , {doNOP, 255, 29,0, FALSE} // 26 , {doSuppressComments, 63 /* ? */, 29,0, TRUE} // 27 open-paren - , {doOpenCaptureParen, 255, 2, 14, FALSE} // 28 + , {doOpenCaptureParen, 255, 2, 14, FALSE} // 28 , {doOpenNonCaptureParen, 58 /* : */, 2, 14, TRUE} // 29 open-paren-extended - , {doOpenAtomicParen, 62 /* > */, 2, 14, TRUE} // 30 - , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE} // 31 - , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE} // 32 - , {doNOP, 60 /* < */, 46,0, TRUE} // 33 - , {doNOP, 35 /* # */, 50, 2, TRUE} // 34 - , {doBeginMatchMode, 105 /* i */, 53,0, FALSE} // 35 - , {doBeginMatchMode, 100 /* d */, 53,0, FALSE} // 36 - , {doBeginMatchMode, 109 /* m */, 53,0, FALSE} // 37 - , {doBeginMatchMode, 115 /* s */, 53,0, FALSE} // 38 - , {doBeginMatchMode, 117 /* u */, 53,0, FALSE} // 39 - , {doBeginMatchMode, 119 /* w */, 53,0, FALSE} // 40 - , {doBeginMatchMode, 120 /* x */, 53,0, FALSE} // 41 - , {doBeginMatchMode, 45 /* - */, 53,0, FALSE} // 42 - , {doConditionalExpr, 40 /* ( */, 206,0, TRUE} // 43 - , {doPerlInline, 123 /* { */, 206,0, TRUE} // 44 - , {doBadOpenParenType, 255, 206,0, FALSE} // 45 + , {doOpenAtomicParen, 62 /* > */, 2, 14, TRUE} // 30 + , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE} // 31 + , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE} // 32 + , {doNOP, 60 /* < */, 46,0, TRUE} // 33 + , {doNOP, 35 /* # */, 50, 2, TRUE} // 34 + , {doBeginMatchMode, 105 /* i */, 53,0, FALSE} // 35 + , {doBeginMatchMode, 100 /* d */, 53,0, FALSE} // 36 + , {doBeginMatchMode, 109 /* m */, 53,0, FALSE} // 37 + , {doBeginMatchMode, 115 /* s */, 53,0, FALSE} // 38 + , {doBeginMatchMode, 117 /* u */, 53,0, FALSE} // 39 + , {doBeginMatchMode, 119 /* w */, 53,0, FALSE} // 40 + , {doBeginMatchMode, 120 /* x */, 53,0, FALSE} // 41 + , {doBeginMatchMode, 45 /* - */, 53,0, FALSE} // 42 + , {doConditionalExpr, 40 /* ( */, 206,0, TRUE} // 43 + , {doPerlInline, 123 /* { */, 206,0, TRUE} // 44 + , {doBadOpenParenType, 255, 206,0, FALSE} // 45 , {doOpenLookBehind, 61 /* = */, 2, 20, TRUE} // 46 open-paren-lookbehind - , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE} // 47 - , {doBeginNamedCapture, 129, 64,0, FALSE} // 48 - , {doBadOpenParenType, 255, 206,0, FALSE} // 49 + , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE} // 47 + , {doBeginNamedCapture, 129, 64,0, FALSE} // 48 + , {doBadOpenParenType, 255, 206,0, FALSE} // 49 , {doNOP, 41 /* ) */, 255,0, TRUE} // 50 paren-comment - , {doMismatchedParenErr, 253, 206,0, FALSE} // 51 - , {doNOP, 255, 50,0, TRUE} // 52 + , {doMismatchedParenErr, 253, 206,0, FALSE} // 51 + , {doNOP, 255, 50,0, TRUE} // 52 , {doMatchMode, 105 /* i */, 53,0, TRUE} // 53 paren-flag - , {doMatchMode, 100 /* d */, 53,0, TRUE} // 54 - , {doMatchMode, 109 /* m */, 53,0, TRUE} // 55 - , {doMatchMode, 115 /* s */, 53,0, TRUE} // 56 - , {doMatchMode, 117 /* u */, 53,0, TRUE} // 57 - , {doMatchMode, 119 /* w */, 53,0, TRUE} // 58 - , {doMatchMode, 120 /* x */, 53,0, TRUE} // 59 - , {doMatchMode, 45 /* - */, 53,0, TRUE} // 60 - , {doSetMatchMode, 41 /* ) */, 2,0, TRUE} // 61 - , {doMatchModeParen, 58 /* : */, 2, 14, TRUE} // 62 - , {doBadModeFlag, 255, 206,0, FALSE} // 63 + , {doMatchMode, 100 /* d */, 53,0, TRUE} // 54 + , {doMatchMode, 109 /* m */, 53,0, TRUE} // 55 + , {doMatchMode, 115 /* s */, 53,0, TRUE} // 56 + , {doMatchMode, 117 /* u */, 53,0, TRUE} // 57 + , {doMatchMode, 119 /* w */, 53,0, TRUE} // 58 + , {doMatchMode, 120 /* x */, 53,0, TRUE} // 59 + , {doMatchMode, 45 /* - */, 53,0, TRUE} // 60 + , {doSetMatchMode, 41 /* ) */, 2,0, TRUE} // 61 + , {doMatchModeParen, 58 /* : */, 2, 14, TRUE} // 62 + , {doBadModeFlag, 255, 206,0, FALSE} // 63 , {doContinueNamedCapture, 129, 64,0, TRUE} // 64 named-capture - , {doContinueNamedCapture, 128, 64,0, TRUE} // 65 - , {doOpenCaptureParen, 62 /* > */, 2, 14, TRUE} // 66 - , {doBadNamedCapture, 255, 206,0, FALSE} // 67 + , {doContinueNamedCapture, 128, 64,0, TRUE} // 65 + , {doOpenCaptureParen, 62 /* > */, 2, 14, TRUE} // 66 + , {doBadNamedCapture, 255, 206,0, FALSE} // 67 , {doNGStar, 63 /* ? */, 20,0, TRUE} // 68 quant-star - , {doPossessiveStar, 43 /* + */, 20,0, TRUE} // 69 - , {doStar, 255, 20,0, FALSE} // 70 + , {doPossessiveStar, 43 /* + */, 20,0, TRUE} // 69 + , {doStar, 255, 20,0, FALSE} // 70 , {doNGPlus, 63 /* ? */, 20,0, TRUE} // 71 quant-plus - , {doPossessivePlus, 43 /* + */, 20,0, TRUE} // 72 - , {doPlus, 255, 20,0, FALSE} // 73 + , {doPossessivePlus, 43 /* + */, 20,0, TRUE} // 72 + , {doPlus, 255, 20,0, FALSE} // 73 , {doNGOpt, 63 /* ? */, 20,0, TRUE} // 74 quant-opt - , {doPossessiveOpt, 43 /* + */, 20,0, TRUE} // 75 - , {doOpt, 255, 20,0, FALSE} // 76 + , {doPossessiveOpt, 43 /* + */, 20,0, TRUE} // 75 + , {doOpt, 255, 20,0, FALSE} // 76 , {doNOP, 128, 79,0, FALSE} // 77 interval-open - , {doIntervalError, 255, 206,0, FALSE} // 78 + , {doIntervalError, 255, 206,0, FALSE} // 78 , {doIntevalLowerDigit, 128, 79,0, TRUE} // 79 interval-lower - , {doNOP, 44 /* , */, 83,0, TRUE} // 80 - , {doIntervalSame, 125 /* } */, 86,0, TRUE} // 81 - , {doIntervalError, 255, 206,0, FALSE} // 82 + , {doNOP, 44 /* , */, 83,0, TRUE} // 80 + , {doIntervalSame, 125 /* } */, 86,0, TRUE} // 81 + , {doIntervalError, 255, 206,0, FALSE} // 82 , {doIntervalUpperDigit, 128, 83,0, TRUE} // 83 interval-upper - , {doNOP, 125 /* } */, 86,0, TRUE} // 84 - , {doIntervalError, 255, 206,0, FALSE} // 85 + , {doNOP, 125 /* } */, 86,0, TRUE} // 84 + , {doIntervalError, 255, 206,0, FALSE} // 85 , {doNGInterval, 63 /* ? */, 20,0, TRUE} // 86 interval-type - , {doPossessiveInterval, 43 /* + */, 20,0, TRUE} // 87 - , {doInterval, 255, 20,0, FALSE} // 88 + , {doPossessiveInterval, 43 /* + */, 20,0, TRUE} // 87 + , {doInterval, 255, 20,0, FALSE} // 88 , {doBackslashA, 65 /* A */, 2,0, TRUE} // 89 backslash - , {doBackslashB, 66 /* B */, 2,0, TRUE} // 90 - , {doBackslashb, 98 /* b */, 2,0, TRUE} // 91 - , {doBackslashd, 100 /* d */, 14,0, TRUE} // 92 - , {doBackslashD, 68 /* D */, 14,0, TRUE} // 93 - , {doBackslashG, 71 /* G */, 2,0, TRUE} // 94 - , {doBackslashh, 104 /* h */, 14,0, TRUE} // 95 - , {doBackslashH, 72 /* H */, 14,0, TRUE} // 96 - , {doNOP, 107 /* k */, 115,0, TRUE} // 97 - , {doNamedChar, 78 /* N */, 14,0, FALSE} // 98 - , {doProperty, 112 /* p */, 14,0, FALSE} // 99 - , {doProperty, 80 /* P */, 14,0, FALSE} // 100 - , {doBackslashR, 82 /* R */, 14,0, TRUE} // 101 - , {doEnterQuoteMode, 81 /* Q */, 2,0, TRUE} // 102 - , {doBackslashS, 83 /* S */, 14,0, TRUE} // 103 - , {doBackslashs, 115 /* s */, 14,0, TRUE} // 104 - , {doBackslashv, 118 /* v */, 14,0, TRUE} // 105 - , {doBackslashV, 86 /* V */, 14,0, TRUE} // 106 - , {doBackslashW, 87 /* W */, 14,0, TRUE} // 107 - , {doBackslashw, 119 /* w */, 14,0, TRUE} // 108 - , {doBackslashX, 88 /* X */, 14,0, TRUE} // 109 - , {doBackslashZ, 90 /* Z */, 2,0, TRUE} // 110 - , {doBackslashz, 122 /* z */, 2,0, TRUE} // 111 - , {doBackRef, 128, 14,0, TRUE} // 112 - , {doEscapeError, 253, 206,0, FALSE} // 113 - , {doEscapedLiteralChar, 255, 14,0, TRUE} // 114 + , {doBackslashB, 66 /* B */, 2,0, TRUE} // 90 + , {doBackslashb, 98 /* b */, 2,0, TRUE} // 91 + , {doBackslashd, 100 /* d */, 14,0, TRUE} // 92 + , {doBackslashD, 68 /* D */, 14,0, TRUE} // 93 + , {doBackslashG, 71 /* G */, 2,0, TRUE} // 94 + , {doBackslashh, 104 /* h */, 14,0, TRUE} // 95 + , {doBackslashH, 72 /* H */, 14,0, TRUE} // 96 + , {doNOP, 107 /* k */, 115,0, TRUE} // 97 + , {doNamedChar, 78 /* N */, 14,0, FALSE} // 98 + , {doProperty, 112 /* p */, 14,0, FALSE} // 99 + , {doProperty, 80 /* P */, 14,0, FALSE} // 100 + , {doBackslashR, 82 /* R */, 14,0, TRUE} // 101 + , {doEnterQuoteMode, 81 /* Q */, 2,0, TRUE} // 102 + , {doBackslashS, 83 /* S */, 14,0, TRUE} // 103 + , {doBackslashs, 115 /* s */, 14,0, TRUE} // 104 + , {doBackslashv, 118 /* v */, 14,0, TRUE} // 105 + , {doBackslashV, 86 /* V */, 14,0, TRUE} // 106 + , {doBackslashW, 87 /* W */, 14,0, TRUE} // 107 + , {doBackslashw, 119 /* w */, 14,0, TRUE} // 108 + , {doBackslashX, 88 /* X */, 14,0, TRUE} // 109 + , {doBackslashZ, 90 /* Z */, 2,0, TRUE} // 110 + , {doBackslashz, 122 /* z */, 2,0, TRUE} // 111 + , {doBackRef, 128, 14,0, TRUE} // 112 + , {doEscapeError, 253, 206,0, FALSE} // 113 + , {doEscapedLiteralChar, 255, 14,0, TRUE} // 114 , {doBeginNamedBackRef, 60 /* < */, 117,0, TRUE} // 115 named-backref - , {doBadNamedCapture, 255, 206,0, FALSE} // 116 + , {doBadNamedCapture, 255, 206,0, FALSE} // 116 , {doContinueNamedBackRef, 129, 119,0, TRUE} // 117 named-backref-2 - , {doBadNamedCapture, 255, 206,0, FALSE} // 118 + , {doBadNamedCapture, 255, 206,0, FALSE} // 118 , {doContinueNamedBackRef, 129, 119,0, TRUE} // 119 named-backref-3 - , {doContinueNamedBackRef, 128, 119,0, TRUE} // 120 - , {doCompleteNamedBackRef, 62 /* > */, 14,0, TRUE} // 121 - , {doBadNamedCapture, 255, 206,0, FALSE} // 122 + , {doContinueNamedBackRef, 128, 119,0, TRUE} // 120 + , {doCompleteNamedBackRef, 62 /* > */, 14,0, TRUE} // 121 + , {doBadNamedCapture, 255, 206,0, FALSE} // 122 , {doSetNegate, 94 /* ^ */, 126,0, TRUE} // 123 set-open - , {doSetPosixProp, 58 /* : */, 128,0, FALSE} // 124 - , {doNOP, 255, 126,0, FALSE} // 125 + , {doSetPosixProp, 58 /* : */, 128,0, FALSE} // 124 + , {doNOP, 255, 126,0, FALSE} // 125 , {doSetLiteral, 93 /* ] */, 141,0, TRUE} // 126 set-open2 - , {doNOP, 255, 131,0, FALSE} // 127 + , {doNOP, 255, 131,0, FALSE} // 127 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 128 set-posix - , {doNOP, 58 /* : */, 131,0, FALSE} // 129 - , {doRuleError, 255, 206,0, FALSE} // 130 + , {doNOP, 58 /* : */, 131,0, FALSE} // 129 + , {doRuleError, 255, 206,0, FALSE} // 130 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 131 set-start - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 132 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 133 - , {doNOP, 45 /* - */, 137,0, TRUE} // 134 - , {doNOP, 38 /* & */, 139,0, TRUE} // 135 - , {doSetLiteral, 255, 141,0, TRUE} // 136 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 132 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 133 + , {doNOP, 45 /* - */, 137,0, TRUE} // 134 + , {doNOP, 38 /* & */, 139,0, TRUE} // 135 + , {doSetLiteral, 255, 141,0, TRUE} // 136 , {doRuleError, 45 /* - */, 206,0, FALSE} // 137 set-start-dash - , {doSetAddDash, 255, 141,0, FALSE} // 138 + , {doSetAddDash, 255, 141,0, FALSE} // 138 , {doRuleError, 38 /* & */, 206,0, FALSE} // 139 set-start-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 140 + , {doSetAddAmp, 255, 141,0, FALSE} // 140 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 141 set-after-lit - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 142 - , {doNOP, 45 /* - */, 178,0, TRUE} // 143 - , {doNOP, 38 /* & */, 169,0, TRUE} // 144 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 145 - , {doSetNoCloseError, 253, 206,0, FALSE} // 146 - , {doSetLiteral, 255, 141,0, TRUE} // 147 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 142 + , {doNOP, 45 /* - */, 178,0, TRUE} // 143 + , {doNOP, 38 /* & */, 169,0, TRUE} // 144 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 145 + , {doSetNoCloseError, 253, 206,0, FALSE} // 146 + , {doSetLiteral, 255, 141,0, TRUE} // 147 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 148 set-after-set - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 149 - , {doNOP, 45 /* - */, 171,0, TRUE} // 150 - , {doNOP, 38 /* & */, 166,0, TRUE} // 151 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 152 - , {doSetNoCloseError, 253, 206,0, FALSE} // 153 - , {doSetLiteral, 255, 141,0, TRUE} // 154 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 149 + , {doNOP, 45 /* - */, 171,0, TRUE} // 150 + , {doNOP, 38 /* & */, 166,0, TRUE} // 151 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 152 + , {doSetNoCloseError, 253, 206,0, FALSE} // 153 + , {doSetLiteral, 255, 141,0, TRUE} // 154 , {doSetEnd, 93 /* ] */, 255,0, TRUE} // 155 set-after-range - , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 156 - , {doNOP, 45 /* - */, 174,0, TRUE} // 157 - , {doNOP, 38 /* & */, 176,0, TRUE} // 158 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 159 - , {doSetNoCloseError, 253, 206,0, FALSE} // 160 - , {doSetLiteral, 255, 141,0, TRUE} // 161 + , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 156 + , {doNOP, 45 /* - */, 174,0, TRUE} // 157 + , {doNOP, 38 /* & */, 176,0, TRUE} // 158 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 159 + , {doSetNoCloseError, 253, 206,0, FALSE} // 160 + , {doSetLiteral, 255, 141,0, TRUE} // 161 , {doSetBeginUnion, 91 /* [ */, 123, 148, TRUE} // 162 set-after-op - , {doSetOpError, 93 /* ] */, 206,0, FALSE} // 163 - , {doNOP, 92 /* \ */, 191,0, TRUE} // 164 - , {doSetLiteral, 255, 141,0, TRUE} // 165 + , {doSetOpError, 93 /* ] */, 206,0, FALSE} // 163 + , {doNOP, 92 /* \ */, 191,0, TRUE} // 164 + , {doSetLiteral, 255, 141,0, TRUE} // 165 , {doSetBeginIntersection1, 91 /* [ */, 123, 148, TRUE} // 166 set-set-amp - , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 167 - , {doSetAddAmp, 255, 141,0, FALSE} // 168 + , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 167 + , {doSetAddAmp, 255, 141,0, FALSE} // 168 , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 169 set-lit-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 170 + , {doSetAddAmp, 255, 141,0, FALSE} // 170 , {doSetBeginDifference1, 91 /* [ */, 123, 148, TRUE} // 171 set-set-dash - , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 172 - , {doSetAddDash, 255, 141,0, FALSE} // 173 + , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 172 + , {doSetAddDash, 255, 141,0, FALSE} // 173 , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 174 set-range-dash - , {doSetAddDash, 255, 141,0, FALSE} // 175 + , {doSetAddDash, 255, 141,0, FALSE} // 175 , {doSetIntersection2, 38 /* & */, 162,0, TRUE} // 176 set-range-amp - , {doSetAddAmp, 255, 141,0, FALSE} // 177 + , {doSetAddAmp, 255, 141,0, FALSE} // 177 , {doSetDifference2, 45 /* - */, 162,0, TRUE} // 178 set-lit-dash - , {doSetAddDash, 91 /* [ */, 141,0, FALSE} // 179 - , {doSetAddDash, 93 /* ] */, 141,0, FALSE} // 180 - , {doNOP, 92 /* \ */, 183,0, TRUE} // 181 - , {doSetRange, 255, 155,0, TRUE} // 182 + , {doSetAddDash, 91 /* [ */, 141,0, FALSE} // 179 + , {doSetAddDash, 93 /* ] */, 141,0, FALSE} // 180 + , {doNOP, 92 /* \ */, 183,0, TRUE} // 181 + , {doSetRange, 255, 155,0, TRUE} // 182 , {doSetOpError, 115 /* s */, 206,0, FALSE} // 183 set-lit-dash-escape - , {doSetOpError, 83 /* S */, 206,0, FALSE} // 184 - , {doSetOpError, 119 /* w */, 206,0, FALSE} // 185 - , {doSetOpError, 87 /* W */, 206,0, FALSE} // 186 - , {doSetOpError, 100 /* d */, 206,0, FALSE} // 187 - , {doSetOpError, 68 /* D */, 206,0, FALSE} // 188 - , {doSetNamedRange, 78 /* N */, 155,0, FALSE} // 189 - , {doSetRange, 255, 155,0, TRUE} // 190 + , {doSetOpError, 83 /* S */, 206,0, FALSE} // 184 + , {doSetOpError, 119 /* w */, 206,0, FALSE} // 185 + , {doSetOpError, 87 /* W */, 206,0, FALSE} // 186 + , {doSetOpError, 100 /* d */, 206,0, FALSE} // 187 + , {doSetOpError, 68 /* D */, 206,0, FALSE} // 188 + , {doSetNamedRange, 78 /* N */, 155,0, FALSE} // 189 + , {doSetRange, 255, 155,0, TRUE} // 190 , {doSetProp, 112 /* p */, 148,0, FALSE} // 191 set-escape - , {doSetProp, 80 /* P */, 148,0, FALSE} // 192 - , {doSetNamedChar, 78 /* N */, 141,0, FALSE} // 193 - , {doSetBackslash_s, 115 /* s */, 155,0, TRUE} // 194 - , {doSetBackslash_S, 83 /* S */, 155,0, TRUE} // 195 - , {doSetBackslash_w, 119 /* w */, 155,0, TRUE} // 196 - , {doSetBackslash_W, 87 /* W */, 155,0, TRUE} // 197 - , {doSetBackslash_d, 100 /* d */, 155,0, TRUE} // 198 - , {doSetBackslash_D, 68 /* D */, 155,0, TRUE} // 199 - , {doSetBackslash_h, 104 /* h */, 155,0, TRUE} // 200 - , {doSetBackslash_H, 72 /* H */, 155,0, TRUE} // 201 - , {doSetBackslash_v, 118 /* v */, 155,0, TRUE} // 202 - , {doSetBackslash_V, 86 /* V */, 155,0, TRUE} // 203 - , {doSetLiteralEscaped, 255, 141,0, TRUE} // 204 + , {doSetProp, 80 /* P */, 148,0, FALSE} // 192 + , {doSetNamedChar, 78 /* N */, 141,0, FALSE} // 193 + , {doSetBackslash_s, 115 /* s */, 155,0, TRUE} // 194 + , {doSetBackslash_S, 83 /* S */, 155,0, TRUE} // 195 + , {doSetBackslash_w, 119 /* w */, 155,0, TRUE} // 196 + , {doSetBackslash_W, 87 /* W */, 155,0, TRUE} // 197 + , {doSetBackslash_d, 100 /* d */, 155,0, TRUE} // 198 + , {doSetBackslash_D, 68 /* D */, 155,0, TRUE} // 199 + , {doSetBackslash_h, 104 /* h */, 155,0, TRUE} // 200 + , {doSetBackslash_H, 72 /* H */, 155,0, TRUE} // 201 + , {doSetBackslash_v, 118 /* v */, 155,0, TRUE} // 202 + , {doSetBackslash_V, 86 /* V */, 155,0, TRUE} // 203 + , {doSetLiteralEscaped, 255, 141,0, TRUE} // 204 , {doSetFinish, 255, 14,0, FALSE} // 205 set-finish , {doExit, 255, 206,0, TRUE} // 206 errorDeath }; diff --git a/deps/icu-small/source/i18n/regexcst.pl b/deps/icu-small/source/i18n/regexcst.pl index 3ae259048aec43..7636757331d921 100755 --- a/deps/icu-small/source/i18n/regexcst.pl +++ b/deps/icu-small/source/i18n/regexcst.pl @@ -8,7 +8,7 @@ # ******************************************************************** # # regexcst.pl -# Compile the regular expression paser state table data into initialized C data. +# Compile the regular expression parser state table data into initialized C data. # Usage: # cd icu4c/source/i18n # perl regexcst.pl < regexcst.txt > regexcst.h @@ -222,7 +222,7 @@ print "U_NAMESPACE_BEGIN\n"; # -# Emit the constants for indicies of Unicode Sets +# Emit the constants for indices of Unicode Sets # Define one constant for each of the character classes encountered. # At the same time, store the index corresponding to the set name back into hash. # @@ -261,7 +261,7 @@ print " rbbiLastAction};\n\n"; # -# Emit the struct definition for transtion table elements. +# Emit the struct definition for transition table elements. # print "//-------------------------------------------------------------------------------\n"; print "//\n"; @@ -330,3 +330,6 @@ print "U_NAMESPACE_END\n"; print "#endif\n"; + + + diff --git a/deps/icu-small/source/i18n/regeximp.cpp b/deps/icu-small/source/i18n/regeximp.cpp index 454e7f836b3111..d55566962587e4 100644 --- a/deps/icu-small/source/i18n/regeximp.cpp +++ b/deps/icu-small/source/i18n/regeximp.cpp @@ -55,7 +55,7 @@ UChar32 CaseFoldingUTextIterator::next() { } return foldedC; } - + UBool CaseFoldingUTextIterator::inExpansion() { return fFoldChars != NULL; @@ -103,7 +103,7 @@ UChar32 CaseFoldingUCharIterator::next() { } return foldedC; } - + UBool CaseFoldingUCharIterator::inExpansion() { return fFoldChars != NULL; @@ -117,3 +117,4 @@ int64_t CaseFoldingUCharIterator::getIndex() { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/regeximp.h b/deps/icu-small/source/i18n/regeximp.h index 9155cd3a31bbe1..bb0e1e838de651 100644 --- a/deps/icu-small/source/i18n/regeximp.h +++ b/deps/icu-small/source/i18n/regeximp.h @@ -26,7 +26,7 @@ U_NAMESPACE_BEGIN // For debugging, define REGEX_DEBUG // To define with configure, -// CPPFLAGS="-DREGEX_DEBUG" ./runConfigureICU --enable-debug --disable-release Linux +// CPPFLAGS="-DREGEX_DEBUG" ./runConfigureICU --enable-debug --disable-release Linux #ifdef REGEX_DEBUG // @@ -37,7 +37,7 @@ U_NAMESPACE_BEGIN #define REGEX_DUMP_DEBUG #define REGEX_RUN_DEBUG -// End of #defines inteded to be directly set. +// End of #defines intended to be directly set. #include #endif @@ -140,7 +140,7 @@ enum { URX_DOLLAR_M = 42, // $ in multi-line mode. URX_CARET_M = 43, // ^ in multi-line mode. URX_LB_START = 44, // LookBehind Start. - // Paramater is data location + // Parameter is data location URX_LB_CONT = 45, // LookBehind Continue. // Param 0: the data location // Param 1: The minimum length of the look-behind match @@ -243,7 +243,7 @@ enum { "DOLLAR_MD", \ "URX_BACKSLASH_H", \ "URX_BACKSLASH_R", \ - "URX_BACKSLASH_V" + "URX_BACKSLASH_V" // @@ -371,7 +371,7 @@ class CaseFoldingUTextIterator: public UMemory { UBool inExpansion(); // True if last char returned from next() and the // next to be returned both originated from a string - // folding of the same code point from the orignal UText. + // folding of the same code point from the original UText. private: UText &fUText; const UChar *fFoldChars; @@ -395,7 +395,7 @@ class CaseFoldingUCharIterator: public UMemory { UBool inExpansion(); // True if last char returned from next() and the // next to be returned both originated from a string - // folding of the same code point from the orignal UText. + // folding of the same code point from the original UText. int64_t getIndex(); // Return the current input buffer index. @@ -411,3 +411,4 @@ class CaseFoldingUCharIterator: public UMemory { U_NAMESPACE_END #endif + diff --git a/deps/icu-small/source/i18n/regexst.cpp b/deps/icu-small/source/i18n/regexst.cpp index 7e3992fc80339d..97e417ab5a8f34 100644 --- a/deps/icu-small/source/i18n/regexst.cpp +++ b/deps/icu-small/source/i18n/regexst.cpp @@ -84,7 +84,7 @@ RegexStaticSets::RegexStaticSets(UErrorCode *status) { fPropSets[URX_GC_T].applyPattern(UnicodeString(TRUE, gGC_TPattern, -1), *status).freeze(); fPropSets[URX_GC_LV].applyPattern(UnicodeString(TRUE, gGC_LVPattern, -1), *status).freeze(); fPropSets[URX_GC_LVT].applyPattern(UnicodeString(TRUE, gGC_LVTPattern, -1), *status).freeze(); - + // // "Normal" is the set of characters that don't need special handling @@ -121,10 +121,10 @@ RegexStaticSets::RegexStaticSets(UErrorCode *status) { fRuleSets[kRuleSet_digit_char-128].add(u'0', u'9').freeze(); fRuleSets[kRuleSet_ascii_letter-128].add(u'A', u'Z').add(u'a', u'z').freeze(); fRuleDigitsAlias = &fRuleSets[kRuleSet_digit_char-128]; - + // Finally, initialize an empty UText string for utility purposes fEmptyText = utext_openUChars(nullptr, nullptr, 0, status); - + } diff --git a/deps/icu-small/source/i18n/regexst.h b/deps/icu-small/source/i18n/regexst.h index 3de470e5db1b44..bcb393dd3f3c22 100644 --- a/deps/icu-small/source/i18n/regexst.h +++ b/deps/icu-small/source/i18n/regexst.h @@ -37,7 +37,7 @@ class RegexStaticSets : public UMemory { static RegexStaticSets *gStaticSets; // Ptr to all lazily initialized constant // shared sets. - RegexStaticSets(UErrorCode *status); + RegexStaticSets(UErrorCode *status); ~RegexStaticSets(); static void initGlobals(UErrorCode *status); @@ -57,3 +57,4 @@ class RegexStaticSets : public UMemory { U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS #endif // REGEXST_H + diff --git a/deps/icu-small/source/i18n/region.cpp b/deps/icu-small/source/i18n/region.cpp index 8364bd1c1b2280..2e013708bb88e3 100644 --- a/deps/icu-small/source/i18n/region.cpp +++ b/deps/icu-small/source/i18n/region.cpp @@ -128,12 +128,12 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { buf[rangeMarkerLocation] = 0; while ( buf[rangeMarkerLocation-1] <= endRange ) { LocalPointer newRegion(new UnicodeString(buf), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); buf[rangeMarkerLocation-1]++; } } else { LocalPointer newRegion(new UnicodeString(regionName), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); } } @@ -147,38 +147,25 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { buf[rangeMarkerLocation] = 0; while ( buf[rangeMarkerLocation-1] <= endRange ) { LocalPointer newRegion(new UnicodeString(buf), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); buf[rangeMarkerLocation-1]++; } } else { LocalPointer newRegion(new UnicodeString(regionName), status); - allRegions->addElement(newRegion.orphan(),status); + allRegions->addElementX(newRegion.orphan(),status); } } while ( ures_hasNext(regionUnknown.getAlias()) ) { LocalPointer regionName (new UnicodeString(ures_getNextUnicodeString(regionUnknown.getAlias(),NULL,&status),status)); - allRegions->addElement(regionName.orphan(),status); + allRegions->addElementX(regionName.orphan(),status); } while ( ures_hasNext(worldContainment.getAlias()) ) { UnicodeString *continentName = new UnicodeString(ures_getNextUnicodeString(worldContainment.getAlias(),NULL,&status)); - continents->addElement(continentName,status); + continents->addElementX(continentName,status); } - UResourceBundle *groupingBundle = nullptr; - while ( ures_hasNext(groupingContainment.getAlias()) ) { - groupingBundle = ures_getNextResource(groupingContainment.getAlias(), groupingBundle, &status); - if (U_FAILURE(status)) { - break; - } - UnicodeString *groupingName = new UnicodeString(ures_getKey(groupingBundle), -1, US_INV); - if (groupingName) { - groupings->addElement(groupingName,status); - } - } - ures_close(groupingBundle); - for ( int32_t i = 0 ; i < allRegions->size() ; i++ ) { LocalPointer r(new Region(), status); if ( U_FAILURE(status) ) { @@ -203,6 +190,29 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { uhash_put(newRegionIDMap.getAlias(),idStrAlias,(void *)(r.orphan()),&status); // regionIDMap takes ownership } + UResourceBundle *groupingBundle = nullptr; + while ( ures_hasNext(groupingContainment.getAlias()) ) { + groupingBundle = ures_getNextResource(groupingContainment.getAlias(), groupingBundle, &status); + if (U_FAILURE(status)) { + break; + } + UnicodeString *groupingName = new UnicodeString(ures_getKey(groupingBundle), -1, US_INV); + groupings->addElementX(groupingName,status); + Region *grouping = (Region *) uhash_get(newRegionIDMap.getAlias(),groupingName); + if (grouping != NULL) { + for (int32_t i = 0; i < ures_getSize(groupingBundle); i++) { + UnicodeString child = ures_getUnicodeStringByIndex(groupingBundle, i, &status); + if (U_SUCCESS(status)) { + if (grouping->containedRegions == NULL) { + grouping->containedRegions = new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status); + } + grouping->containedRegions->addElementX(new UnicodeString(child), status); + } + } + } + } + ures_close(groupingBundle); + // Process the territory aliases while ( ures_hasNext(territoryAlias.getAlias()) ) { LocalUResourceBundlePointer res(ures_getNextResource(territoryAlias.getAlias(),NULL,&status)); @@ -218,7 +228,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { uhash_put(newRegionAliases.getAlias(),(void *)aliasFromStr.orphan(), (void *)aliasToRegion,&status); } else { if ( aliasFromRegion == NULL ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it. - LocalPointer newRgn(new Region, status); + LocalPointer newRgn(new Region, status); if ( U_SUCCESS(status) ) { aliasFromRegion = newRgn.orphan(); } else { @@ -257,7 +267,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { Region *target = (Region *)uhash_get(newRegionIDMap.getAlias(),(void *)¤tRegion); if (target) { LocalPointer preferredValue(new UnicodeString(target->idStr), status); - aliasFromRegion->preferredValues->addElement((void *)preferredValue.orphan(),status); // may add null if err + aliasFromRegion->preferredValues->addElementX((void *)preferredValue.orphan(),status); // may add null if err } currentRegion.remove(); } @@ -354,7 +364,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { return; // error out } childStr->fastCopyFrom(childRegion->idStr); - parentRegion->containedRegions->addElement((void *)childStr.orphan(),status); + parentRegion->containedRegions->addElementX((void *)childStr.orphan(),status); // Set the parent region to be the containing region of the child. // Regions of type GROUPING can't be set as the parent, since another region @@ -378,9 +388,9 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) { if( U_FAILURE(status) ) { return; // error out } - availableRegions[ar->fType]->addElement((void *)arString.orphan(),status); + availableRegions[ar->fType]->addElementX((void *)arString.orphan(),status); } - + ucln_i18n_registerCleanup(UCLN_I18N_REGION, region_cleanup); // copy hashtables numericCodeMap = newNumericCodeMap.orphan(); @@ -439,7 +449,7 @@ Region::~Region () { * Returns true if the two regions are equal. * Per PMC, just use pointer compare, since we have at most one instance of each Region. */ -UBool +bool Region::operator==(const Region &that) const { return (idStr == that.idStr); } @@ -448,7 +458,7 @@ Region::operator==(const Region &that) const { * Returns true if the two regions are NOT equal; that is, if operator ==() returns false. * Per PMC, just use pointer compare, since we have at most one instance of each Region. */ -UBool +bool Region::operator!=(const Region &that) const { return (idStr != that.idStr); } @@ -617,13 +627,13 @@ Region::getContainedRegions( URegionType type, UErrorCode &status ) const { const char *regionId = cr->next(NULL,status); const Region *r = Region::getInstance(regionId,status); if ( r->getType() == type) { - result->addElement((void *)&r->idStr,status); + result->addElementX((void *)&r->idStr,status); } else { StringEnumeration *children = r->getContainedRegions(type, status); for ( int32_t j = 0 ; j < children->count(status) ; j++ ) { const char *id2 = children->next(NULL,status); const Region *r2 = Region::getInstance(id2,status); - result->addElement((void *)&r2->idStr,status); + result->addElementX((void *)&r2->idStr,status); } delete children; } @@ -703,7 +713,7 @@ RegionNameEnumeration::RegionNameEnumeration(UVector *fNameList, UErrorCode& sta for ( int32_t i = 0 ; i < fNameList->size() ; i++ ) { UnicodeString* this_region_name = (UnicodeString *)fNameList->elementAt(i); UnicodeString* new_region_name = new UnicodeString(*this_region_name); - fRegionNames->addElement((void *)new_region_name,status); + fRegionNames->addElementX((void *)new_region_name,status); } } else { diff --git a/deps/icu-small/source/i18n/region_impl.h b/deps/icu-small/source/i18n/region_impl.h index c0702af7dfb3d1..62acaa4511b49f 100644 --- a/deps/icu-small/source/i18n/region_impl.h +++ b/deps/icu-small/source/i18n/region_impl.h @@ -17,7 +17,7 @@ #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING - + #include "uvector.h" #include "unicode/strenum.h" @@ -29,10 +29,10 @@ class RegionNameEnumeration : public StringEnumeration { RegionNameEnumeration(UVector *fNameList, UErrorCode& status); virtual ~RegionNameEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t pos; UVector *fRegionNames; diff --git a/deps/icu-small/source/i18n/reldatefmt.cpp b/deps/icu-small/source/i18n/reldatefmt.cpp index d41ff22b9c212a..6ef516079862e8 100644 --- a/deps/icu-small/source/i18n/reldatefmt.cpp +++ b/deps/icu-small/source/i18n/reldatefmt.cpp @@ -588,7 +588,7 @@ struct RelDateTimeFmtDataSink : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, - UBool /*noFallback*/, UErrorCode &errorCode) { + UBool /*noFallback*/, UErrorCode &errorCode) override { // Main entry point to sink ResourceTable table = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } @@ -1126,7 +1126,7 @@ void RelativeDateTimeFormatter::formatRelativeImpl( // leaves some holes (even for data that is currently available, such as quarter). // When the new CLDR data is available, update the data storage accordingly, // rewrite this to use it directly, and rewrite the old format method to call this - // new one; that is covered by http://bugs.icu-project.org/trac/ticket/12171. + // new one; that is covered by https://unicode-org.atlassian.net/browse/ICU-12171. UDateDirection direction = UDAT_DIRECTION_COUNT; if (offset > -2.1 && offset < 2.1) { // Allow a 1% epsilon, so offsets in -1.01..-0.99 map to LAST @@ -1139,7 +1139,7 @@ void RelativeDateTimeFormatter::formatRelativeImpl( case 100/* 1*/: direction = UDAT_DIRECTION_NEXT; break; case 200/* 2*/: direction = UDAT_DIRECTION_NEXT_2; break; default: break; - } + } } UDateAbsoluteUnit absunit = UDAT_ABSOLUTE_UNIT_COUNT; switch (unit) { diff --git a/deps/icu-small/source/i18n/reldtfmt.cpp b/deps/icu-small/source/i18n/reldtfmt.cpp index 2bc59c5128b43a..5fdef1c0d676d4 100644 --- a/deps/icu-small/source/i18n/reldtfmt.cpp +++ b/deps/icu-small/source/i18n/reldtfmt.cpp @@ -135,7 +135,7 @@ RelativeDateFormat* RelativeDateFormat::clone() const { return new RelativeDateFormat(*this); } -UBool RelativeDateFormat::operator==(const Format& other) const { +bool RelativeDateFormat::operator==(const Format& other) const { if(DateFormat::operator==(other)) { // The DateFormat::operator== check for fCapitalizationContext equality above // is sufficient to check equality of all derived context-related data. @@ -146,7 +146,7 @@ UBool RelativeDateFormat::operator==(const Format& other) const { fTimePattern==that->fTimePattern && fLocale==that->fLocale ); } - return FALSE; + return false; } static const UChar APOSTROPHE = (UChar)0x0027; @@ -154,11 +154,11 @@ static const UChar APOSTROPHE = (UChar)0x0027; UnicodeString& RelativeDateFormat::format( Calendar& cal, UnicodeString& appendTo, FieldPosition& pos) const { - + UErrorCode status = U_ZERO_ERROR; UnicodeString relativeDayString; UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status); - + // calculate the difference, in days, between 'cal' and now. int dayDiff = dayDifference(cal, status); @@ -170,7 +170,7 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal, relativeDayString.setTo(theString, len); } - if ( relativeDayString.length() > 0 && !fDatePattern.isEmpty() && + if ( relativeDayString.length() > 0 && !fDatePattern.isEmpty() && (fTimePattern.isEmpty() || fCombinedFormat == NULL || fCombinedHasDateAtStart)) { #if !UCONFIG_NO_BREAK_ITERATION // capitalize relativeDayString according to context for relative, set formatter no context @@ -221,8 +221,8 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal, UnicodeString& -RelativeDateFormat::format(const Formattable& obj, - UnicodeString& appendTo, +RelativeDateFormat::format(const Formattable& obj, + UnicodeString& appendTo, FieldPosition& pos, UErrorCode& status) const { @@ -258,7 +258,7 @@ void RelativeDateFormat::parse( const UnicodeString& text, cal.setTime(Calendar::getNow(),status); cal.add(UCAL_DATE,fDates[n].offset, status); - if(U_FAILURE(status)) { + if(U_FAILURE(status)) { // failure in setting calendar field, set offset to beginning of rel day string pos.setErrorIndex(startIndex); } else { @@ -289,7 +289,7 @@ void RelativeDateFormat::parse( const UnicodeString& text, // Set the calendar to now+offset tempCal->setTime(Calendar::getNow(),status); tempCal->add(UCAL_DATE,fDates[n].offset, status); - if(U_FAILURE(status)) { + if(U_FAILURE(status)) { pos.setErrorIndex(startIndex); delete tempCal; return; @@ -485,7 +485,7 @@ struct RelDateFmtDataSink : public ResourceSink { virtual ~RelDateFmtDataSink(); virtual void put(const char *key, ResourceValue &value, - UBool /*noFallback*/, UErrorCode &errorCode) { + UBool /*noFallback*/, UErrorCode &errorCode) override { ResourceTable relDayTable = value.getTable(errorCode); int32_t n = 0; int32_t len = 0; @@ -582,7 +582,7 @@ int32_t RelativeDateFormat::dayDifference(Calendar &cal, UErrorCode &status) { nowCal->setTime(Calendar::getNow(), status); // For the day difference, we are interested in the difference in the (modified) julian day number - // which is midnight to midnight. Using fieldDifference() is NOT correct here, because + // which is midnight to midnight. Using fieldDifference() is NOT correct here, because // 6pm Jan 4th to 10am Jan 5th should be considered "tomorrow". int32_t dayDiff = cal.get(UCAL_JULIAN_DAY, status) - nowCal->get(UCAL_JULIAN_DAY, status); diff --git a/deps/icu-small/source/i18n/reldtfmt.h b/deps/icu-small/source/i18n/reldtfmt.h index b36171ce1c6b55..98b333a02be205 100644 --- a/deps/icu-small/source/i18n/reldtfmt.h +++ b/deps/icu-small/source/i18n/reldtfmt.h @@ -71,7 +71,7 @@ class RelativeDateFormat : public DateFormat { * @return A copy of the object. * @internal ICU 3.8 */ - virtual RelativeDateFormat* clone() const; + virtual RelativeDateFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -80,7 +80,7 @@ class RelativeDateFormat : public DateFormat { * @return true if the given Format objects are semantically equal. * @internal ICU 3.8 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; using DateFormat::format; @@ -103,7 +103,7 @@ class RelativeDateFormat : public DateFormat { */ virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Format an object to produce a string. This method handles Formattable @@ -122,7 +122,7 @@ class RelativeDateFormat : public DateFormat { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** @@ -146,7 +146,7 @@ class RelativeDateFormat : public DateFormat { */ virtual void parse( const UnicodeString& text, Calendar& cal, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Parse a date/time string starting at the given parse position. For @@ -187,7 +187,7 @@ class RelativeDateFormat : public DateFormat { * @internal ICU 3.8 */ virtual UDate parse( const UnicodeString& text, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Return a single pattern string generated by combining the patterns for the @@ -242,10 +242,10 @@ class RelativeDateFormat : public DateFormat { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @internal ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; private: SimpleDateFormat *fDateTimeFormatter; @@ -327,7 +327,7 @@ class RelativeDateFormat : public DateFormat { * other classes have different class IDs. * @internal ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; diff --git a/deps/icu-small/source/i18n/rematch.cpp b/deps/icu-small/source/i18n/rematch.cpp index e358dbd1e983f8..7d6eaeed8bb22e 100644 --- a/deps/icu-small/source/i18n/rematch.cpp +++ b/deps/icu-small/source/i18n/rematch.cpp @@ -719,7 +719,7 @@ UBool RegexMatcher::find(UErrorCode &status) { if (findProgressInterrupt(startPos, status)) return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_START: // Matches are only possible at the start of the input string @@ -767,7 +767,7 @@ UBool RegexMatcher::find(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_STRING: case START_CHAR: @@ -799,7 +799,7 @@ UBool RegexMatcher::find(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_LINE: { @@ -879,10 +879,15 @@ UBool RegexMatcher::find(UErrorCode &status) { } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown value in fPattern->fStartType, should be from StartOfMatch enum. But + // we have reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; + return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -993,7 +998,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { if (findProgressInterrupt(startPos, status)) return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_START: // Matches are only possible at the start of the input string @@ -1035,7 +1040,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_STRING: case START_CHAR: @@ -1064,7 +1069,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { return FALSE; } } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; case START_LINE: { @@ -1135,10 +1140,15 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) { } default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown value in fPattern->fStartType, should be from StartOfMatch enum. But + // we have reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; + return FALSE; } - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } @@ -2005,7 +2015,7 @@ static UText *utext_extract_replace(UText *src, UText *dest, int64_t start, int6 return dest; } - // Caller did not provide a prexisting UText. + // Caller did not provide a preexisting UText. // Open a new one, and have it adopt the text buffer storage. if (U_FAILURE(*status)) { return NULL; @@ -3717,7 +3727,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { } if (success && inputItr.inExpansion()) { - // We otained a match by consuming part of a string obtained from + // We obtained a match by consuming part of a string obtained from // case-folding a single code point of the input text. // This does not count as an overall match. success = FALSE; @@ -3962,7 +3972,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { break; } - // Look-behind match is good. Restore the orignal input string region, + // Look-behind match is good. Restore the original input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. fActiveStart = fData[opValue+2]; @@ -4051,7 +4061,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { // Look-behind expression matched, which means look-behind test as // a whole Fails - // Restore the orignal input string length, which had been truncated + // Restore the original input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. fActiveStart = fData[opValue+2]; @@ -4234,7 +4244,11 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) { default: // Trouble. The compiled pattern contains an entry with an // unrecognized type tag. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown opcode type in opType = URX_TYPE(pat[fp->fPatIdx]). But we have + // reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; } if (U_FAILURE(status)) { @@ -5187,7 +5201,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu } if (success && inputItr.inExpansion()) { - // We otained a match by consuming part of a string obtained from + // We obtained a match by consuming part of a string obtained from // case-folding a single code point of the input text. // This does not count as an overall match. success = FALSE; @@ -5409,7 +5423,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu break; } - // Look-behind match is good. Restore the orignal input string region, + // Look-behind match is good. Restore the original input string region, // which had been truncated to pin the end of the lookbehind match to the // position being looked-behind. fActiveStart = fData[opValue+2]; @@ -5489,7 +5503,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu // Look-behind expression matched, which means look-behind test as // a whole Fails - // Restore the orignal input string length, which had been truncated + // Restore the original input string length, which had been truncated // inorder to pin the end of the lookbehind match // to the position being looked-behind. fActiveStart = fData[opValue+2]; @@ -5672,7 +5686,11 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu default: // Trouble. The compiled pattern contains an entry with an // unrecognized type tag. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_ASSERT; + // Unknown opcode type in opType = URX_TYPE(pat[fp->fPatIdx]). But we have + // reports of this in production code, don't use UPRV_UNREACHABLE_EXIT. + // See ICU-21669. + status = U_INTERNAL_PROGRAM_ERROR; } if (U_FAILURE(status)) { @@ -5712,3 +5730,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RegexMatcher) U_NAMESPACE_END #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/remtrans.h b/deps/icu-small/source/i18n/remtrans.h index 13de01594a3fd9..398cc5177cd57c 100644 --- a/deps/icu-small/source/i18n/remtrans.h +++ b/deps/icu-small/source/i18n/remtrans.h @@ -47,7 +47,7 @@ class RemoveTransliterator : public Transliterator { * Transliterator API. * @return A copy of the object. */ - virtual RemoveTransliterator* clone() const; + virtual RemoveTransliterator* clone() const override; /** * Implements {@link Transliterator#handleTransliterate}. @@ -59,12 +59,12 @@ class RemoveTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/repattrn.cpp b/deps/icu-small/source/i18n/repattrn.cpp index 34886624891f49..8c94948d29a43c 100644 --- a/deps/icu-small/source/i18n/repattrn.cpp +++ b/deps/icu-small/source/i18n/repattrn.cpp @@ -118,8 +118,8 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) { int32_t numSets = other.fSets->size(); fSets8 = new Regex8BitSet[numSets]; if (fSets8 == NULL) { - fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; - return *this; + fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; + return *this; } for (i=1; ifFlags == other.fFlags && this->fDeferredStatus == other.fDeferredStatus) { if (this->fPatternString != NULL && other.fPatternString != NULL) { return *(this->fPatternString) == *(other.fPatternString); } else if (this->fPattern == NULL) { if (other.fPattern == NULL) { - return TRUE; + return true; } } else if (other.fPattern != NULL) { UTEXT_SETNATIVEINDEX(this->fPattern, 0); @@ -305,7 +305,7 @@ UBool RegexPattern::operator ==(const RegexPattern &other) const { return utext_equals(this->fPattern, other.fPattern); } } - return FALSE; + return false; } //--------------------------------------------------------------------- @@ -663,7 +663,7 @@ int32_t RegexPattern::split(const UnicodeString &input, int32_t r = 0; // Check m's status to make sure all is ok. if (U_SUCCESS(m.fDeferredStatus)) { - r = m.split(input, dest, destCapacity, status); + r = m.split(input, dest, destCapacity, status); } return r; } @@ -684,7 +684,7 @@ int32_t RegexPattern::split(UText *input, int32_t r = 0; // Check m's status to make sure all is ok. if (U_SUCCESS(m.fDeferredStatus)) { - r = m.split(input, dest, destCapacity, status); + r = m.split(input, dest, destCapacity, status); } return r; } diff --git a/deps/icu-small/source/i18n/rulebasedcollator.cpp b/deps/icu-small/source/i18n/rulebasedcollator.cpp index 917482d65bb4d6..5e5cc3db626433 100644 --- a/deps/icu-small/source/i18n/rulebasedcollator.cpp +++ b/deps/icu-small/source/i18n/rulebasedcollator.cpp @@ -66,8 +66,8 @@ class FixedSortKeyByteSink : public SortKeyByteSink { virtual ~FixedSortKeyByteSink(); private: - virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length); - virtual UBool Resize(int32_t appendCapacity, int32_t length); + virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) override; + virtual UBool Resize(int32_t appendCapacity, int32_t length) override; }; FixedSortKeyByteSink::~FixedSortKeyByteSink() {} @@ -98,8 +98,8 @@ class CollationKeyByteSink : public SortKeyByteSink { virtual ~CollationKeyByteSink(); private: - virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length); - virtual UBool Resize(int32_t appendCapacity, int32_t length); + virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) override; + virtual UBool Resize(int32_t appendCapacity, int32_t length) override; CollationKey &key_; }; @@ -239,21 +239,21 @@ RuleBasedCollator &RuleBasedCollator::operator=(const RuleBasedCollator &other) UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RuleBasedCollator) -UBool +bool RuleBasedCollator::operator==(const Collator& other) const { - if(this == &other) { return TRUE; } - if(!Collator::operator==(other)) { return FALSE; } + if(this == &other) { return true; } + if(!Collator::operator==(other)) { return false; } const RuleBasedCollator &o = static_cast(other); - if(*settings != *o.settings) { return FALSE; } - if(data == o.data) { return TRUE; } + if(*settings != *o.settings) { return false; } + if(data == o.data) { return true; } UBool thisIsRoot = data->base == NULL; UBool otherIsRoot = o.data->base == NULL; U_ASSERT(!thisIsRoot || !otherIsRoot); // otherwise their data pointers should be == - if(thisIsRoot != otherIsRoot) { return FALSE; } + if(thisIsRoot != otherIsRoot) { return false; } if((thisIsRoot || !tailoring->rules.isEmpty()) && (otherIsRoot || !o.tailoring->rules.isEmpty())) { // Shortcut: If both collators have valid rule strings, then compare those. - if(tailoring->rules == o.tailoring->rules) { return TRUE; } + if(tailoring->rules == o.tailoring->rules) { return true; } } // Different rule strings can result in the same or equivalent tailoring. // The rule strings are optional in ICU resource bundles, although included by default. @@ -261,14 +261,14 @@ RuleBasedCollator::operator==(const Collator& other) const { UErrorCode errorCode = U_ZERO_ERROR; LocalPointer thisTailored(getTailoredSet(errorCode)); LocalPointer otherTailored(o.getTailoredSet(errorCode)); - if(U_FAILURE(errorCode)) { return FALSE; } - if(*thisTailored != *otherTailored) { return FALSE; } + if(U_FAILURE(errorCode)) { return false; } + if(*thisTailored != *otherTailored) { return false; } // For completeness, we should compare all of the mappings; // or we should create a list of strings, sort it with one collator, // and check if both collators compare adjacent strings the same // (order & strength, down to quaternary); or similar. // Testing equality of collators seems unusual. - return TRUE; + return true; } int32_t @@ -830,7 +830,7 @@ class UTF16NFDIterator : public NFDIterator { public: UTF16NFDIterator(const UChar *text, const UChar *textLimit) : s(text), limit(textLimit) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { if(s == limit) { return U_SENTINEL; } UChar32 c = *s++; if(limit == NULL && c == 0) { @@ -882,7 +882,7 @@ class UTF8NFDIterator : public NFDIterator { UTF8NFDIterator(const uint8_t *text, int32_t textLength) : s(text), pos(0), length(textLength) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { if(pos == length || (s[pos] == 0 && length < 0)) { return U_SENTINEL; } UChar32 c; U8_NEXT_OR_FFFD(s, pos, length, c); @@ -899,7 +899,7 @@ class FCDUTF8NFDIterator : public NFDIterator { FCDUTF8NFDIterator(const CollationData *data, const uint8_t *text, int32_t textLength) : u8ci(data, FALSE, text, 0, textLength) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { UErrorCode errorCode = U_ZERO_ERROR; return u8ci.nextCodePoint(errorCode); } @@ -911,7 +911,7 @@ class UIterNFDIterator : public NFDIterator { public: UIterNFDIterator(UCharIterator &it) : iter(it) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { return uiter_next32(&iter); } private: @@ -923,7 +923,7 @@ class FCDUIterNFDIterator : public NFDIterator { FCDUIterNFDIterator(const CollationData *data, UCharIterator &it, int32_t startIndex) : uici(data, FALSE, it, startIndex) {} protected: - virtual UChar32 nextRawCodePoint() { + virtual UChar32 nextRawCodePoint() override { UErrorCode errorCode = U_ZERO_ERROR; return uici.nextCodePoint(errorCode); } @@ -1398,7 +1398,7 @@ class PartLevelCallback : public CollationKeys::LevelCallback { levelCapacity = sink.GetRemainingCapacity(); } virtual ~PartLevelCallback() {} - virtual UBool needToWrite(Collation::Level l) { + virtual UBool needToWrite(Collation::Level l) override { if(!sink.Overflowed()) { // Remember a level that will be at least partially written. level = l; diff --git a/deps/icu-small/source/i18n/scriptset.cpp b/deps/icu-small/source/i18n/scriptset.cpp index 18a3b263b71027..6a1db8c01c3562 100644 --- a/deps/icu-small/source/i18n/scriptset.cpp +++ b/deps/icu-small/source/i18n/scriptset.cpp @@ -44,13 +44,13 @@ ScriptSet & ScriptSet::operator =(const ScriptSet &other) { return *this; } -UBool ScriptSet::operator == (const ScriptSet &other) const { +bool ScriptSet::operator == (const ScriptSet &other) const { for (uint32_t i=0; ibreakIter = other.m_search_->breakIter; m_search_->isCanonicalMatch = other.m_search_->isCanonicalMatch; m_search_->isOverlap = other.m_search_->isOverlap; @@ -83,7 +83,7 @@ USearchAttributeValue SearchIterator::getAttribute( case USEARCH_OVERLAP : return (m_search_->isOverlap == TRUE ? USEARCH_ON : USEARCH_OFF); case USEARCH_CANONICAL_MATCH : - return (m_search_->isCanonicalMatch == TRUE ? USEARCH_ON : + return (m_search_->isCanonicalMatch == TRUE ? USEARCH_ON : USEARCH_OFF); case USEARCH_ELEMENT_COMPARISON : { @@ -98,7 +98,7 @@ USearchAttributeValue SearchIterator::getAttribute( return USEARCH_DEFAULT; } } - + int32_t SearchIterator::getMatchedStart() const { return m_search_->matchedIndex; @@ -108,20 +108,20 @@ int32_t SearchIterator::getMatchedLength() const { return m_search_->matchedLength; } - + void SearchIterator::getMatchedText(UnicodeString &result) const { int32_t matchedindex = m_search_->matchedIndex; int32_t matchedlength = m_search_->matchedLength; if (matchedindex != USEARCH_DONE && matchedlength != 0) { - result.setTo(m_search_->text + matchedindex, matchedlength); + result.setTo(m_search_->text + matchedindex, matchedlength); } else { result.remove(); } } - -void SearchIterator::setBreakIterator(BreakIterator *breakiter, + +void SearchIterator::setBreakIterator(BreakIterator *breakiter, UErrorCode &status) { if (U_SUCCESS(status)) { @@ -139,11 +139,11 @@ void SearchIterator::setBreakIterator(BreakIterator *breakiter, // any subclass of BreakIterator should work fine here... m_search_->breakIter = (UBreakIterator *) breakiter; #endif - + m_breakiterator_ = breakiter; } } - + const BreakIterator * SearchIterator::getBreakIterator(void) const { return m_breakiterator_; @@ -170,7 +170,7 @@ void SearchIterator::setText(CharacterIterator &text, UErrorCode &status) setText(m_text_, status); } } - + const UnicodeString & SearchIterator::getText(void) const { return m_text_; @@ -178,10 +178,10 @@ const UnicodeString & SearchIterator::getText(void) const // operator overloading ---------------------------------------------- -UBool SearchIterator::operator==(const SearchIterator &that) const +bool SearchIterator::operator==(const SearchIterator &that) const { if (this == &that) { - return TRUE; + return true; } return (m_breakiterator_ == that.m_breakiterator_ && m_search_->isCanonicalMatch == that.m_search_->isCanonicalMatch && @@ -191,7 +191,7 @@ UBool SearchIterator::operator==(const SearchIterator &that) const m_search_->matchedLength == that.m_search_->matchedLength && m_search_->textLength == that.m_search_->textLength && getOffset() == that.getOffset() && - (uprv_memcmp(m_search_->text, that.m_search_->text, + (uprv_memcmp(m_search_->text, that.m_search_->text, m_search_->textLength * sizeof(UChar)) == 0)); } @@ -206,7 +206,7 @@ int32_t SearchIterator::first(UErrorCode &status) return handleNext(0, status); } -int32_t SearchIterator::following(int32_t position, +int32_t SearchIterator::following(int32_t position, UErrorCode &status) { if (U_FAILURE(status)) { @@ -215,7 +215,7 @@ int32_t SearchIterator::following(int32_t position, setOffset(position, status); return handleNext(position, status); } - + int32_t SearchIterator::last(UErrorCode &status) { if (U_FAILURE(status)) { @@ -225,7 +225,7 @@ int32_t SearchIterator::last(UErrorCode &status) return handlePrev(m_search_->textLength, status); } -int32_t SearchIterator::preceding(int32_t position, +int32_t SearchIterator::preceding(int32_t position, UErrorCode &status) { if (U_FAILURE(status)) { @@ -244,19 +244,19 @@ int32_t SearchIterator::next(UErrorCode &status) m_search_->reset = FALSE; if (m_search_->isForwardSearching == TRUE) { int32_t textlength = m_search_->textLength; - if (offset == textlength || matchindex == textlength || - (matchindex != USEARCH_DONE && + if (offset == textlength || matchindex == textlength || + (matchindex != USEARCH_DONE && matchindex + matchlength >= textlength)) { // not enough characters to match setMatchNotFound(); - return USEARCH_DONE; + return USEARCH_DONE; } } else { - // switching direction. - // if matchedIndex == USEARCH_DONE, it means that either a + // switching direction. + // if matchedIndex == USEARCH_DONE, it means that either a // setOffset has been called or that previous ran off the text - // string. the iterator would have been set to offset 0 if a + // string. the iterator would have been set to offset 0 if a // match is not found. m_search_->isForwardSearching = TRUE; if (m_search_->matchedIndex != USEARCH_DONE) { @@ -293,13 +293,13 @@ int32_t SearchIterator::previous(UErrorCode &status) else { offset = getOffset(); } - + int32_t matchindex = m_search_->matchedIndex; if (m_search_->isForwardSearching == TRUE) { - // switching direction. - // if matchedIndex == USEARCH_DONE, it means that either a + // switching direction. + // if matchedIndex == USEARCH_DONE, it means that either a // setOffset has been called or that next ran off the text - // string. the iterator would have been set to offset textLength if + // string. the iterator would have been set to offset textLength if // a match is not found. m_search_->isForwardSearching = FALSE; if (matchindex != USEARCH_DONE) { @@ -310,7 +310,7 @@ int32_t SearchIterator::previous(UErrorCode &status) if (offset == 0 || matchindex == 0) { // not enough characters to match setMatchNotFound(); - return USEARCH_DONE; + return USEARCH_DONE; } } @@ -319,7 +319,7 @@ int32_t SearchIterator::previous(UErrorCode &status) matchindex += m_search_->matchedLength - 2; } - return handlePrev(matchindex, status); + return handlePrev(matchindex, status); } return handlePrev(offset, status); @@ -358,7 +358,7 @@ SearchIterator::SearchIterator() m_breakiterator_ = NULL; } -SearchIterator::SearchIterator(const UnicodeString &text, +SearchIterator::SearchIterator(const UnicodeString &text, BreakIterator *breakiter) : m_breakiterator_(breakiter), m_text_(text) @@ -376,7 +376,7 @@ SearchIterator::SearchIterator(const UnicodeString &text, m_search_->textLength = text.length(); } -SearchIterator::SearchIterator(CharacterIterator &text, +SearchIterator::SearchIterator(CharacterIterator &text, BreakIterator *breakiter) : m_breakiterator_(breakiter) { @@ -424,12 +424,12 @@ void SearchIterator::setMatchStart(int32_t position) m_search_->matchedIndex = position; } -void SearchIterator::setMatchNotFound() +void SearchIterator::setMatchNotFound() { setMatchStart(USEARCH_DONE); setMatchLength(0); UErrorCode status = U_ZERO_ERROR; - // by default no errors should be returned here since offsets are within + // by default no errors should be returned here since offsets are within // range. if (m_search_->isForwardSearching) { setOffset(m_search_->textLength, status); diff --git a/deps/icu-small/source/i18n/selfmt.cpp b/deps/icu-small/source/i18n/selfmt.cpp index 47e53d75dec36f..bb18e84ef65736 100644 --- a/deps/icu-small/source/i18n/selfmt.cpp +++ b/deps/icu-small/source/i18n/selfmt.cpp @@ -164,19 +164,19 @@ SelectFormat::operator=(const SelectFormat& other) { return *this; } -UBool +bool SelectFormat::operator==(const Format& other) const { if (this == &other) { - return TRUE; + return true; } if (!Format::operator==(other)) { - return FALSE; + return false; } const SelectFormat& o = (const SelectFormat&)other; return msgPattern == o.msgPattern; } -UBool +bool SelectFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/selfmtimpl.h b/deps/icu-small/source/i18n/selfmtimpl.h index 74d6dc218135e7..a36d1a5c347fb4 100644 --- a/deps/icu-small/source/i18n/selfmtimpl.h +++ b/deps/icu-small/source/i18n/selfmtimpl.h @@ -1,10 +1,10 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /******************************************************************** - * COPYRIGHT: + * COPYRIGHT: * Copyright (c) 1997-2011, International Business Machines Corporation and * others. All Rights Reserved. - * Copyright (C) 2010 , Yahoo! Inc. + * Copyright (C) 2010 , Yahoo! Inc. ******************************************************************** * File selectfmtimpl.h * diff --git a/deps/icu-small/source/i18n/simpletz.cpp b/deps/icu-small/source/i18n/simpletz.cpp index 0007d4aec8977e..d9b0cd8e1e629d 100644 --- a/deps/icu-small/source/i18n/simpletz.cpp +++ b/deps/icu-small/source/i18n/simpletz.cpp @@ -231,7 +231,7 @@ SimpleTimeZone::operator=(const SimpleTimeZone &right) // ------------------------------------- -UBool +bool SimpleTimeZone::operator==(const TimeZone& that) const { return ((this == &that) || @@ -289,7 +289,7 @@ SimpleTimeZone::setStartYear(int32_t year) * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month). *

    15. If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].) *
    16. If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -305,7 +305,7 @@ SimpleTimeZone::setStartYear(int32_t year) * @param time the daylight savings starting time. Please see the member * description for an example. */ - + void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UErrorCode& status) @@ -321,17 +321,17 @@ SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t da // ------------------------------------- -void -SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, - int32_t time, TimeMode mode, UErrorCode& status) +void +SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, + int32_t time, TimeMode mode, UErrorCode& status) { setStartRule(month, dayOfMonth, 0, time, mode, status); } // ------------------------------------- -void -SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, +void +SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode& status) { setStartRule(month, after ? dayOfMonth : -dayOfMonth, @@ -373,8 +373,8 @@ SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayO // ------------------------------------- -void -SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, +void +SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, TimeMode mode, UErrorCode& status) { setEndRule(month, dayOfMonth, 0, time, mode, status); @@ -382,8 +382,8 @@ SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, // ------------------------------------- -void -SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, +void +SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, int32_t time, TimeMode mode, UBool after, UErrorCode& status) { setEndRule(month, after ? dayOfMonth : -dayOfMonth, @@ -411,9 +411,9 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, return getOffset(era, year, month, day, dayOfWeek, millis, Grego::monthLength(year, month), status); } -int32_t +int32_t SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, + uint8_t dayOfWeek, int32_t millis, int32_t /*monthLength*/, UErrorCode& status) const { // Check the month before calling Grego::monthLength(). This @@ -438,9 +438,9 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, status); } -int32_t +int32_t SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, + uint8_t dayOfWeek, int32_t millis, int32_t monthLength, int32_t prevMonthLength, UErrorCode& status) const { @@ -466,7 +466,7 @@ SimpleTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, int32_t result = rawOffset; // Bail out if we are before the onset of daylight savings time - if(!useDaylight || year < startYear || era != GregorianCalendar::AD) + if(!useDaylight || year < startYear || era != GregorianCalendar::AD) return result; // Check for southern hemisphere. We assume that the start and end @@ -570,7 +570,7 @@ SimpleTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExistingT * @return 1 if the date is after the rule date, -1 if the date is before * the rule date, or 0 if the date is equal to the rule date. */ -int32_t +int32_t SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen, int8_t dayOfMonth, int8_t dayOfWeek, int32_t millis, int32_t millisDelta, @@ -585,7 +585,7 @@ SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen dayOfWeek = (int8_t)(1 + (dayOfWeek % 7)); // dayOfWeek is one-based if (dayOfMonth > monthLen) { dayOfMonth = 1; - /* When incrementing the month, it is desirible to overflow + /* When incrementing the month, it is desirable to overflow * from DECEMBER to DECEMBER+1, since we use the result to * compare against a real month. Wraparound of the value * leads to bug 4173604. */ @@ -631,7 +631,7 @@ SimpleTimeZone::compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen if (ruleDay > 0) ruleDayOfMonth = 1 + (ruleDay - 1) * 7 + (7 + ruleDayOfWeek - (dayOfWeek - dayOfMonth + 1)) % 7; - + // if ruleDay is negative (we assume it's not zero here), we have to do // the same calculation figuring backward from the last day of the month. else @@ -686,8 +686,8 @@ SimpleTimeZone::setRawOffset(int32_t offsetMillis) // ------------------------------------- -void -SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) +void +SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) { if (millisSavedDuringDST == 0) { status = U_ILLEGAL_ARGUMENT_ERROR; @@ -700,7 +700,7 @@ SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) // ------------------------------------- -int32_t +int32_t SimpleTimeZone::getDSTSavings() const { return dstSavings; @@ -745,7 +745,7 @@ UBool SimpleTimeZone::inDaylightTime(UDate date, UErrorCode& status) const * @param other the TimeZone object to be compared with * @return true if the given zone has the same rules and offset as this one */ -UBool +UBool SimpleTimeZone::hasSameRules(const TimeZone& other) const { if (this == &other) return TRUE; @@ -836,7 +836,7 @@ SimpleTimeZone::hasSameRules(const TimeZone& other) const * This method also recognizes a startDay or endDay of zero as indicating * no DST. */ -void +void SimpleTimeZone::decodeRules(UErrorCode& status) { decodeStartRule(status); @@ -867,8 +867,8 @@ SimpleTimeZone::decodeRules(UErrorCode& status) * While arguably the start range should still be 0..ONEDAY-1, we keep * the start and end ranges the same for consistency. */ -void -SimpleTimeZone::decodeStartRule(UErrorCode& status) +void +SimpleTimeZone::decodeStartRule(UErrorCode& status) { if(U_FAILURE(status)) return; @@ -922,8 +922,8 @@ SimpleTimeZone::decodeStartRule(UErrorCode& status) * analogous to decodeStartRule(). * @see decodeStartRule */ -void -SimpleTimeZone::decodeEndRule(UErrorCode& status) +void +SimpleTimeZone::decodeEndRule(UErrorCode& status) { if(U_FAILURE(status)) return; @@ -1140,14 +1140,14 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { // For now, use ID + "(DST)" as the name dstRule = new AnnualTimeZoneRule(tzid+UnicodeString(DST_STR), getRawOffset(), getDSTSavings(), dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR); - + // Check for Null pointer if (dstRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; deleteTransitionRules(); return; } - + // Calculate the first DST start time dstRule->getFirstStart(getRawOffset(), 0, firstDstStart); @@ -1168,7 +1168,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, false, endTime, timeRuleType); break; } - + // Check for Null pointer if (dtRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1178,7 +1178,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { // For now, use ID + "(STD)" as the name stdRule = new AnnualTimeZoneRule(tzid+UnicodeString(STD_STR), getRawOffset(), 0, dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR); - + //Check for Null pointer if (stdRule == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1212,7 +1212,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) { deleteTransitionRules(); return; } - + } else { // Create a TimeZoneRule for initial time initialRule = new InitialTimeZoneRule(tzid, getRawOffset(), 0); diff --git a/deps/icu-small/source/i18n/smpdtfmt.cpp b/deps/icu-small/source/i18n/smpdtfmt.cpp index a3ec7cb026591c..91748d82f9fd64 100644 --- a/deps/icu-small/source/i18n/smpdtfmt.cpp +++ b/deps/icu-small/source/i18n/smpdtfmt.cpp @@ -64,6 +64,7 @@ #include "uassert.h" #include "cmemory.h" #include "umutex.h" +#include "mutex.h" #include #include "smpdtfst.h" #include "sharednumberformat.h" @@ -227,7 +228,7 @@ static const int32_t gFieldRangeBias[] = { }; // When calendar uses hebr numbering (i.e. he@calendar=hebrew), -// offset the years within the current millenium down to 1-999 +// offset the years within the current millennium down to 1-999 static const int32_t HEBREW_CAL_CUR_MILLENIUM_START_YEAR = 5000; static const int32_t HEBREW_CAL_CUR_MILLENIUM_END_YEAR = 6000; @@ -594,11 +595,29 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other) fLocale = other.fLocale; // TimeZoneFormat can now be set independently via setter. - // If it is NULL, it will be lazily initialized from locale + // If it is NULL, it will be lazily initialized from locale. delete fTimeZoneFormat; - fTimeZoneFormat = NULL; - if (other.fTimeZoneFormat) { - fTimeZoneFormat = new TimeZoneFormat(*other.fTimeZoneFormat); + fTimeZoneFormat = nullptr; + TimeZoneFormat *otherTZFormat; + { + // Synchronization is required here, when accessing other.fTimeZoneFormat, + // because another thread may be concurrently executing other.tzFormat(), + // a logically const function that lazily creates other.fTimeZoneFormat. + // + // Without synchronization, reordered memory writes could allow us + // to see a non-null fTimeZoneFormat before the object itself was + // fully initialized. In case of a race, it doesn't matter whether + // we see a null or a fully initialized other.fTimeZoneFormat, + // only that we avoid seeing a partially initialized object. + // + // Once initialized, no const function can modify fTimeZoneFormat, + // meaning that once we have safely grabbed the other.fTimeZoneFormat + // pointer, continued synchronization is not required to use it. + Mutex m(&LOCK); + otherTZFormat = other.fTimeZoneFormat; + } + if (otherTZFormat) { + fTimeZoneFormat = new TimeZoneFormat(*otherTZFormat); } #if !UCONFIG_NO_BREAK_ITERATION @@ -639,7 +658,7 @@ SimpleDateFormat::clone() const //---------------------------------------------------------------------- -UBool +bool SimpleDateFormat::operator==(const Format& other) const { if (DateFormat::operator==(other)) { @@ -654,7 +673,7 @@ SimpleDateFormat::operator==(const Format& other) const fHaveDefaultCentury == that->fHaveDefaultCentury && fDefaultCenturyStart == that->fDefaultCenturyStart); } - return FALSE; + return false; } //---------------------------------------------------------------------- @@ -1855,7 +1874,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, } } else { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } appendTo += zoneString; @@ -1863,7 +1882,10 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, break; case UDAT_QUARTER_FIELD: - if (count >= 4) + if (count >= 5) + _appendSymbol(appendTo, value/3, fSymbols->fNarrowQuarters, + fSymbols->fNarrowQuartersCount); + else if (count == 4) _appendSymbol(appendTo, value/3, fSymbols->fQuarters, fSymbols->fQuartersCount); else if (count == 3) @@ -1874,7 +1896,10 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo, break; case UDAT_STANDALONE_QUARTER_FIELD: - if (count >= 4) + if (count >= 5) + _appendSymbol(appendTo, value/3, fSymbols->fStandaloneNarrowQuarters, + fSymbols->fStandaloneNarrowQuartersCount); + else if (count == 4) _appendSymbol(appendTo, value/3, fSymbols->fStandaloneQuarters, fSymbols->fStandaloneQuartersCount); else if (count == 3) @@ -2192,7 +2217,7 @@ SimpleDateFormat::zeroPaddingNumber( //---------------------------------------------------------------------- /** - * Return true if the given format character, occuring count + * Return true if the given format character, occurring count * times, represents a numeric field. */ UBool SimpleDateFormat::isNumeric(UChar formatChar, int32_t count) { @@ -2561,10 +2586,10 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition& if (btz != NULL) { if (tzTimeType == UTZFMT_TIME_TYPE_STANDARD) { btz->getOffsetFromLocal(localMillis, - BasicTimeZone::kStandard, BasicTimeZone::kStandard, raw, dst, status); + UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER, raw, dst, status); } else { btz->getOffsetFromLocal(localMillis, - BasicTimeZone::kDaylight, BasicTimeZone::kDaylight, raw, dst, status); + UCAL_TZ_LOCAL_DAYLIGHT_FORMER, UCAL_TZ_LOCAL_DAYLIGHT_LATTER, raw, dst, status); } } else { // No good way to resolve ambiguous time at transition, @@ -2831,7 +2856,7 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern, continue; // Do not update p. } } - // hack around oldleniency being a bit of a catch-all bucket and we're just adding support specifically for paritial matches + // hack around oldleniency being a bit of a catch-all bucket and we're just adding support specifically for partial matches if(partialMatchLenient && oldLeniency) { break; } @@ -3452,7 +3477,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC return pos.getIndex(); } else { // count >= 3 // i.e., QQQ or QQQQ - // Want to be able to parse both short and long forms. + // Want to be able to parse short, long, and narrow forms. // Try count == 4 first: int32_t newStart = 0; @@ -3466,6 +3491,11 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC fSymbols->fShortQuarters, fSymbols->fShortQuartersCount, cal)) > 0) return newStart; } + if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 5) { + if ((newStart = matchQuarterString(text, start, UCAL_MONTH, + fSymbols->fNarrowQuarters, fSymbols->fNarrowQuartersCount, cal)) > 0) + return newStart; + } if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status)) return newStart; // else we allowing parsing as number, below @@ -3498,6 +3528,11 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC fSymbols->fStandaloneShortQuarters, fSymbols->fStandaloneShortQuartersCount, cal)) > 0) return newStart; } + if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 5) { + if ((newStart = matchQuarterString(text, start, UCAL_MONTH, + fSymbols->fStandaloneNarrowQuarters, fSymbols->fStandaloneNarrowQuartersCount, cal)) > 0) + return newStart; + } if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status)) return newStart; // else we allowing parsing as number, below @@ -4308,19 +4343,10 @@ SimpleDateFormat::skipUWhiteSpace(const UnicodeString& text, int32_t pos) const // Lazy TimeZoneFormat instantiation, semantically const. TimeZoneFormat * SimpleDateFormat::tzFormat(UErrorCode &status) const { - if (fTimeZoneFormat == NULL) { - umtx_lock(&LOCK); - { - if (fTimeZoneFormat == NULL) { - TimeZoneFormat *tzfmt = TimeZoneFormat::createInstance(fLocale, status); - if (U_FAILURE(status)) { - return NULL; - } - - const_cast(this)->fTimeZoneFormat = tzfmt; - } - } - umtx_unlock(&LOCK); + Mutex m(&LOCK); + if (fTimeZoneFormat == nullptr && U_SUCCESS(status)) { + const_cast(this)->fTimeZoneFormat = + TimeZoneFormat::createInstance(fLocale, status); } return fTimeZoneFormat; } diff --git a/deps/icu-small/source/i18n/smpdtfst.cpp b/deps/icu-small/source/i18n/smpdtfst.cpp index ff0dec232d29f7..db59a4b4ab7f8f 100644 --- a/deps/icu-small/source/i18n/smpdtfst.cpp +++ b/deps/icu-small/source/i18n/smpdtfst.cpp @@ -110,7 +110,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde if (U_FAILURE(status)) { return NULL; } - + switch (fieldIndex) { case UDAT_YEAR_FIELD: case UDAT_MONTH_FIELD: @@ -118,7 +118,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde case UDAT_STANDALONE_DAY_FIELD: case UDAT_STANDALONE_MONTH_FIELD: return gStaticSets->fDateIgnorables; - + case UDAT_HOUR_OF_DAY1_FIELD: case UDAT_HOUR_OF_DAY0_FIELD: case UDAT_MINUTE_FIELD: @@ -126,7 +126,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde case UDAT_HOUR1_FIELD: case UDAT_HOUR0_FIELD: return gStaticSets->fTimeIgnorables; - + default: return gStaticSets->fOtherIgnorables; } diff --git a/deps/icu-small/source/i18n/smpdtfst.h b/deps/icu-small/source/i18n/smpdtfst.h index ed8ce4371f6d6d..cc80909c88e93a 100644 --- a/deps/icu-small/source/i18n/smpdtfst.h +++ b/deps/icu-small/source/i18n/smpdtfst.h @@ -33,12 +33,12 @@ class SimpleDateFormatStaticSets : public UMemory public: SimpleDateFormatStaticSets(UErrorCode &status); ~SimpleDateFormatStaticSets(); - + static void initSets(UErrorCode *status); static UBool cleanup(); - + static UnicodeSet *getIgnorables(UDateFormatField fieldIndex); - + private: UnicodeSet *fDateIgnorables; UnicodeSet *fTimeIgnorables; diff --git a/deps/icu-small/source/i18n/sortkey.cpp b/deps/icu-small/source/i18n/sortkey.cpp index 430fd5d3500948..441d15d42635bd 100644 --- a/deps/icu-small/source/i18n/sortkey.cpp +++ b/deps/icu-small/source/i18n/sortkey.cpp @@ -137,7 +137,7 @@ CollationKey::setToBogus() return *this; } -UBool +bool CollationKey::operator==(const CollationKey& source) const { return getLength() == source.getLength() && @@ -278,7 +278,7 @@ CollationKey::hashCode() const U_NAMESPACE_END U_CAPI int32_t U_EXPORT2 -ucol_keyHashCode(const uint8_t *key, +ucol_keyHashCode(const uint8_t *key, int32_t length) { return icu::computeHashCode(key, length); diff --git a/deps/icu-small/source/i18n/strmatch.cpp b/deps/icu-small/source/i18n/strmatch.cpp index 97c0fba6f1ddb7..a20f7873fec73e 100644 --- a/deps/icu-small/source/i18n/strmatch.cpp +++ b/deps/icu-small/source/i18n/strmatch.cpp @@ -69,7 +69,7 @@ StringMatcher* StringMatcher::clone() const { UnicodeMatcher* StringMatcher::toMatcher() const { StringMatcher *nonconst_this = const_cast(this); UnicodeMatcher *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } @@ -80,7 +80,7 @@ UnicodeMatcher* StringMatcher::toMatcher() const { UnicodeReplacer* StringMatcher::toReplacer() const { StringMatcher *nonconst_this = const_cast(this); UnicodeReplacer *nonconst_base = static_cast(nonconst_this); - + return nonconst_base; } @@ -221,9 +221,9 @@ int32_t StringMatcher::replace(Replaceable& text, int32_t start, int32_t limit, int32_t& /*cursor*/) { - + int32_t outLen = 0; - + // Copy segment with out-of-band data int32_t dest = limit; // If there was no match, that means that a quantifier @@ -234,9 +234,9 @@ int32_t StringMatcher::replace(Replaceable& text, outLen = matchLimit - matchStart; } } - + text.handleReplaceBetween(start, limit, UnicodeString()); // delete original text - + return outLen; } diff --git a/deps/icu-small/source/i18n/strmatch.h b/deps/icu-small/source/i18n/strmatch.h index 84b1d47398fd60..6d2e392e654c7b 100644 --- a/deps/icu-small/source/i18n/strmatch.h +++ b/deps/icu-small/source/i18n/strmatch.h @@ -68,7 +68,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @param o the object to be copied. */ StringMatcher(const StringMatcher& o); - + /** * Destructor */ @@ -78,21 +78,21 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * Implement UnicodeFunctor * @return a copy of the object. */ - virtual StringMatcher* clone() const; + virtual StringMatcher* clone() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeMatcher* pointer * and return the pointer. * @return the UnicodeMatcher point. */ - virtual UnicodeMatcher* toMatcher() const; + virtual UnicodeMatcher* toMatcher() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer * and return the pointer. * @return the UnicodeReplacer pointer. */ - virtual UnicodeReplacer* toReplacer() const; + virtual UnicodeReplacer* toReplacer() const override; /** * Implement UnicodeMatcher @@ -119,7 +119,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico virtual UMatchDegree matches(const Replaceable& text, int32_t& offset, int32_t limit, - UBool incremental); + UBool incremental) override; /** * Implement UnicodeMatcher @@ -128,7 +128,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @return A reference to 'result'. */ virtual UnicodeString& toPattern(UnicodeString& result, - UBool escapeUnprintable = false) const; + UBool escapeUnprintable = false) const override; /** * Implement UnicodeMatcher @@ -137,20 +137,20 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * offset). This is used by RuleBasedTransliterator for * indexing. * @param v the given value - * @return true if this matcher will match a character c, + * @return true if this matcher will match a character c, * where c & 0xFF == v */ - virtual UBool matchesIndexValue(uint8_t v) const; + virtual UBool matchesIndexValue(uint8_t v) const override; /** * Implement UnicodeMatcher */ - virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; + virtual void addMatchSetTo(UnicodeSet& toUnionTo) const override; /** * Implement UnicodeFunctor */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * Replace characters in 'text' from 'start' to 'limit' with the @@ -172,7 +172,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico virtual int32_t replace(Replaceable& text, int32_t start, int32_t limit, - int32_t& cursor); + int32_t& cursor) override; /** * Returns a string representation of this replacer. If the @@ -188,7 +188,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * @return a reference to 'result'. */ virtual UnicodeString& toReplacerPattern(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; /** * Remove any match data. This must be called before performing a @@ -199,7 +199,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -211,7 +211,7 @@ class StringMatcher : public UnicodeFunctor, public UnicodeMatcher, public Unico * into the given set. * @param toUnionTo the set into which to union the output characters */ - virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; + virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const override; private: diff --git a/deps/icu-small/source/i18n/strrepl.cpp b/deps/icu-small/source/i18n/strrepl.cpp index e9e71ee540606a..9fafeb2659ce47 100644 --- a/deps/icu-small/source/i18n/strrepl.cpp +++ b/deps/icu-small/source/i18n/strrepl.cpp @@ -199,7 +199,7 @@ int32_t StringReplacer::replace(Replaceable& text, // Delete the old text (the key) text.handleReplaceBetween(start + outLen, limit + outLen, UnicodeString()); - } + } if (hasCursor) { // Adjust the cursor for positions outside the key. These diff --git a/deps/icu-small/source/i18n/strrepl.h b/deps/icu-small/source/i18n/strrepl.h index 7f74d0d94507f6..8063626a333bb9 100644 --- a/deps/icu-small/source/i18n/strrepl.h +++ b/deps/icu-small/source/i18n/strrepl.h @@ -111,13 +111,13 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * Implement UnicodeFunctor */ - virtual StringReplacer* clone() const; + virtual StringReplacer* clone() const override; /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer * and return the pointer. */ - virtual UnicodeReplacer* toReplacer() const; + virtual UnicodeReplacer* toReplacer() const override; /** * UnicodeReplacer API @@ -125,23 +125,23 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { virtual int32_t replace(Replaceable& text, int32_t start, int32_t limit, - int32_t& cursor); + int32_t& cursor) override; /** * UnicodeReplacer API */ virtual UnicodeString& toReplacerPattern(UnicodeString& result, - UBool escapeUnprintable) const; + UBool escapeUnprintable) const override; /** * Implement UnicodeReplacer */ - virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const; + virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const override; /** * UnicodeFunctor API */ - virtual void setData(const TransliterationRuleData*); + virtual void setData(const TransliterationRuleData*) override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -151,7 +151,7 @@ class StringReplacer : public UnicodeFunctor, public UnicodeReplacer { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/stsearch.cpp b/deps/icu-small/source/i18n/stsearch.cpp index 003d86b64016f0..1bade8fbd1108b 100644 --- a/deps/icu-small/source/i18n/stsearch.cpp +++ b/deps/icu-small/source/i18n/stsearch.cpp @@ -205,17 +205,17 @@ StringSearch & StringSearch::operator=(const StringSearch &that) return *this; } -UBool StringSearch::operator==(const SearchIterator &that) const +bool StringSearch::operator==(const SearchIterator &that) const { if (this == &that) { - return TRUE; + return true; } if (SearchIterator::operator ==(that)) { StringSearch &thatsrch = (StringSearch &)that; return (this->m_pattern_ == thatsrch.m_pattern_ && this->m_strsrch_->collator == thatsrch.m_strsrch_->collator); } - return FALSE; + return false; } // public get and set methods ---------------------------------------- @@ -335,14 +335,14 @@ int32_t StringSearch::handleNext(int32_t position, UErrorCode &status) // the flipping direction issue has already been handled // in next() // for boundary check purposes. this will ensure that the - // next match will not preceed the current offset + // next match will not precede the current offset // note search->matchedIndex will always be set to something // in the code m_search_->matchedIndex = position - 1; } ucol_setOffset(m_strsrch_->textIter, position, &status); - + #if 0 for (;;) { if (m_search_->isCanonicalMatch) { @@ -380,22 +380,22 @@ int32_t StringSearch::handleNext(int32_t position, UErrorCode &status) // then we don't need to check the match boundaries here because // usearch_handleNextXXX will already have done it. if (m_search_->isCanonicalMatch) { - // *could* actually use exact here 'cause no extra accents allowed... - usearch_handleNextCanonical(m_strsrch_, &status); + // *could* actually use exact here 'cause no extra accents allowed... + usearch_handleNextCanonical(m_strsrch_, &status); } else { - usearch_handleNextExact(m_strsrch_, &status); + usearch_handleNextExact(m_strsrch_, &status); } - + if (U_FAILURE(status)) { - return USEARCH_DONE; + return USEARCH_DONE; } - + if (m_search_->matchedIndex == USEARCH_DONE) { - ucol_setOffset(m_strsrch_->textIter, m_search_->textLength, &status); + ucol_setOffset(m_strsrch_->textIter, m_search_->textLength, &status); } else { - ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, &status); + ucol_setOffset(m_strsrch_->textIter, m_search_->matchedIndex, &status); } - + return m_search_->matchedIndex; #endif } @@ -431,7 +431,7 @@ int32_t StringSearch::handlePrev(int32_t position, UErrorCode &status) setMatchNotFound(); return USEARCH_DONE; } - + for (;;) { if (m_search_->isCanonicalMatch) { // can't use exact here since extra accents are allowed. @@ -457,18 +457,18 @@ int32_t StringSearch::handlePrev(int32_t position, UErrorCode &status) } #else ucol_setOffset(m_strsrch_->textIter, position, &status); - + if (m_search_->isCanonicalMatch) { - // *could* use exact match here since extra accents *not* allowed! - usearch_handlePreviousCanonical(m_strsrch_, &status); + // *could* use exact match here since extra accents *not* allowed! + usearch_handlePreviousCanonical(m_strsrch_, &status); } else { - usearch_handlePreviousExact(m_strsrch_, &status); + usearch_handlePreviousExact(m_strsrch_, &status); } - + if (U_FAILURE(status)) { - return USEARCH_DONE; + return USEARCH_DONE; } - + return m_search_->matchedIndex; #endif } diff --git a/deps/icu-small/source/i18n/taiwncal.cpp b/deps/icu-small/source/i18n/taiwncal.cpp index 1a6a0e2e78d201..27352aa10c32b2 100644 --- a/deps/icu-small/source/i18n/taiwncal.cpp +++ b/deps/icu-small/source/i18n/taiwncal.cpp @@ -30,7 +30,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TaiwanCalendar) static const int32_t kTaiwanEraStart = 1911; // 1911 (Gregorian) -static const int32_t kGregorianEpoch = 1970; +static const int32_t kGregorianEpoch = 1970; TaiwanCalendar::TaiwanCalendar(const Locale& aLocale, UErrorCode& success) : GregorianCalendar(aLocale, success) @@ -135,7 +135,7 @@ void TaiwanCalendar::timeToFields(UDate theTime, UBool quick, UErrorCode& status /** * The system maintains a static default century start date and Year. They are - * initialized the first time they are used. Once the system default century date + * initialized the first time they are used. Once the system default century date * and year are set, they do not change. */ static UDate gSystemDefaultCenturyStart = DBL_MIN; diff --git a/deps/icu-small/source/i18n/taiwncal.h b/deps/icu-small/source/i18n/taiwncal.h index bf384fa714f05b..ab6b6aff099e28 100644 --- a/deps/icu-small/source/i18n/taiwncal.h +++ b/deps/icu-small/source/i18n/taiwncal.h @@ -91,7 +91,7 @@ class TaiwanCalendar : public GregorianCalendar { * @return return a polymorphic copy of this calendar. * @internal */ - virtual TaiwanCalendar* clone() const; + virtual TaiwanCalendar* clone() const override; public: /** @@ -104,7 +104,7 @@ class TaiwanCalendar : public GregorianCalendar { * same class ID. Objects of other classes have different class IDs. * @internal */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -125,7 +125,7 @@ class TaiwanCalendar : public GregorianCalendar { * @return calendar type * @internal */ - virtual const char * getType() const; + virtual const char * getType() const override; private: TaiwanCalendar(); // default constructor not implemented @@ -139,13 +139,13 @@ class TaiwanCalendar : public GregorianCalendar { * @return the extended year * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; /** * Subclasses may override this method to compute several fields - * specific to each calendar system. + * specific to each calendar system. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode& status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode& status) override; /** * Subclass API for defining limits of different types. * @param field one of the field numbers @@ -153,26 +153,26 @@ class TaiwanCalendar : public GregorianCalendar { * LEAST_MAXIMUM, or MAXIMUM * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /** * Returns true because the Taiwan Calendar does have a default century * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * Returns the date of the start of the default century * @return start of century - in milliseconds since epoch, 1970 * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * Returns the year in which the default century begins * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END @@ -181,3 +181,4 @@ U_NAMESPACE_END #endif // _TAIWNCAL //eof + diff --git a/deps/icu-small/source/i18n/timezone.cpp b/deps/icu-small/source/i18n/timezone.cpp index fe564e6530e7b1..8115a45e0ac4d1 100644 --- a/deps/icu-small/source/i18n/timezone.cpp +++ b/deps/icu-small/source/i18n/timezone.cpp @@ -311,7 +311,7 @@ void U_CALLCONV initStaticTimeZones() { // be valid even if we can't load the time zone UDataMemory. ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup); - // new can't fail below, as we use placement new into staticly allocated space. + // new can't fail below, as we use placement new into statically allocated space. new(gRawGMT) SimpleTimeZone(0, UnicodeString(TRUE, GMT_ID, GMT_ID_LENGTH)); new(gRawUNKNOWN) SimpleTimeZone(0, UnicodeString(TRUE, UNKNOWN_ZONE_ID, UNKNOWN_ZONE_ID_LENGTH)); @@ -376,7 +376,7 @@ TimeZone::operator=(const TimeZone &right) // ------------------------------------- -UBool +bool TimeZone::operator==(const TimeZone& that) const { return typeid(*this) == typeid(that) && @@ -445,7 +445,7 @@ TimeZone::createTimeZone(const UnicodeString& ID) if (result == NULL) { U_DEBUG_TZ_MSG(("failed to load time zone with id - falling to Etc/Unknown(GMT)")); const TimeZone& unknown = getUnknown(); - // Unknown zone uses staticly allocated memory, so creation of it can never fail due to OOM. + // Unknown zone uses statically allocated memory, so creation of it can never fail due to OOM. result = unknown.clone(); } return result; @@ -530,7 +530,7 @@ TimeZone::detectHostTimeZone() static UMutex gDefaultZoneMutex; /** - * Initialize DEFAULT_ZONE from the system default time zone. + * Initialize DEFAULT_ZONE from the system default time zone. * Upon return, DEFAULT_ZONE will not be NULL, unless operator new() * returns NULL. */ @@ -544,7 +544,7 @@ static void U_CALLCONV initDefault() if (DEFAULT_ZONE != NULL) { return; } - + // NOTE: this code is safely single threaded, being only // run via umtx_initOnce(). // @@ -951,15 +951,15 @@ class TZEnumeration : public StringEnumeration { virtual ~TZEnumeration(); - virtual StringEnumeration *clone() const { + virtual StringEnumeration *clone() const override { return new TZEnumeration(*this); } - virtual int32_t count(UErrorCode& status) const { + virtual int32_t count(UErrorCode& status) const override { return U_FAILURE(status) ? 0 : len; } - virtual const UnicodeString* snext(UErrorCode& status) { + virtual const UnicodeString* snext(UErrorCode& status) override { if (U_SUCCESS(status) && map != NULL && pos < len) { getID(map[pos], status); ++pos; @@ -968,13 +968,13 @@ class TZEnumeration : public StringEnumeration { return 0; } - virtual void reset(UErrorCode& /*status*/) { + virtual void reset(UErrorCode& /*status*/) override { pos = 0; } public: static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; TZEnumeration::~TZEnumeration() { @@ -994,22 +994,41 @@ TimeZone::createTimeZoneIDEnumeration( return TZEnumeration::create(zoneType, region, rawOffset, ec); } +StringEnumeration* U_EXPORT2 +TimeZone::createEnumeration(UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, NULL, status); +} + +StringEnumeration* U_EXPORT2 +TimeZone::createEnumerationForRawOffset(int32_t rawOffset, UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, status); +} + +StringEnumeration* U_EXPORT2 +TimeZone::createEnumerationForRegion(const char* region, UErrorCode& status) { + return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, region, NULL, status); +} + +// +// Next 3 methods are equivalent to above, but ignores UErrorCode. +// These methods were deprecated in ICU 70. + StringEnumeration* U_EXPORT2 TimeZone::createEnumeration() { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, NULL, ec); + return createEnumeration(ec); } StringEnumeration* U_EXPORT2 TimeZone::createEnumeration(int32_t rawOffset) { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, ec); + return createEnumerationForRawOffset(rawOffset, ec); } StringEnumeration* U_EXPORT2 -TimeZone::createEnumeration(const char* country) { +TimeZone::createEnumeration(const char* region) { UErrorCode ec = U_ZERO_ERROR; - return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, country, NULL, ec); + return createEnumerationForRegion(region, ec); } // --------------------------------------- @@ -1106,7 +1125,7 @@ TimeZone::dereferOlsonLink(const UnicodeString& id) { // open the zone bundle by index ures_getByKey(rb, kZONES, rb, &ec); - ures_getByIndex(rb, idx, rb, &ec); + ures_getByIndex(rb, idx, rb, &ec); if (U_SUCCESS(ec)) { if (ures_getType(rb) == URES_INT) { @@ -1244,7 +1263,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc tzfmt->format(UTZFMT_STYLE_GENERIC_SHORT, *this, date, result, &timeType); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } // Generic format many use Localized GMT as the final fallback. // When Localized GMT format is used, the result might not be @@ -1272,7 +1291,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc tzfmt->formatOffsetISO8601Basic(offset, FALSE, FALSE, FALSE, result, status); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } else { @@ -1287,7 +1306,7 @@ TimeZone::getDisplayName(UBool inDaylight, EDisplayType style, const Locale& loc nameType = inDaylight ? UTZNM_SHORT_DAYLIGHT : UTZNM_SHORT_STANDARD; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } LocalPointer tznames(TimeZoneNames::createInstance(locale, status)); if (U_FAILURE(status)) { @@ -1691,7 +1710,7 @@ TimeZone::getIDForWindowsID(const UnicodeString& winid, const char* region, Unic const UChar *tzids = ures_getStringByKey(zones, region, &len, &tmperr); // use tmperr, because // regional mapping is optional if (U_SUCCESS(tmperr)) { - // first ID delimited by space is the defasult one + // first ID delimited by space is the default one const UChar *end = u_strchr(tzids, (UChar)0x20); if (end == NULL) { id.setTo(tzids, -1); diff --git a/deps/icu-small/source/i18n/titletrn.cpp b/deps/icu-small/source/i18n/titletrn.cpp index a6beac214915cc..9c39b4676ad1cf 100644 --- a/deps/icu-small/source/i18n/titletrn.cpp +++ b/deps/icu-small/source/i18n/titletrn.cpp @@ -88,7 +88,7 @@ void TitlecaseTransliterator::handleTransliterate( // Our mode; we are either converting letter toTitle or // toLower. UBool doTitle = TRUE; - + // Determine if there is a preceding context of cased case-ignorable*, // in which case we want to start in toLower mode. If the // prior context is anything else (including empty) then start @@ -106,7 +106,7 @@ void TitlecaseTransliterator::handleTransliterate( } // else (type<0) case-ignorable: continue } - + // Convert things after a cased character toLower; things // after an uncased, non-case-ignorable character toTitle. Case-ignorable // characters are copied directly and do not change the mode. diff --git a/deps/icu-small/source/i18n/titletrn.h b/deps/icu-small/source/i18n/titletrn.h index 4e45ac6f81fabc..8409519818af12 100644 --- a/deps/icu-small/source/i18n/titletrn.h +++ b/deps/icu-small/source/i18n/titletrn.h @@ -52,12 +52,12 @@ class TitlecaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual TitlecaseTransliterator* clone() const; + virtual TitlecaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -76,7 +76,7 @@ class TitlecaseTransliterator : public CaseMapTransliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; private: /** diff --git a/deps/icu-small/source/i18n/tmunit.cpp b/deps/icu-small/source/i18n/tmunit.cpp index b96dfbb5726b6f..361aecb92eda33 100644 --- a/deps/icu-small/source/i18n/tmunit.cpp +++ b/deps/icu-small/source/i18n/tmunit.cpp @@ -19,25 +19,25 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnit) /* * There are only 7 time units. - * So, TimeUnit could be made as singleton + * So, TimeUnit could be made as singleton * (similar to uniset_props.cpp, or unorm.cpp, - * in which a static TimeUnit* array is created, and + * in which a static TimeUnit* array is created, and * the creatInstance() returns a const TimeUnit*). * But the constraint is TimeUnit is a data member of Measure. * But Measure (which is an existing API) does not expect it's "unit" member * as singleton. Meaure takes ownership of the "unit" member. * In its constructor, it does not take a const "unit" pointer. * Also, Measure can clone and destruct the "unit" pointer. - * In order to preserve the old behavior and let Measure handle singleton "unit", - * 1. a flag need to be added in Measure; + * In order to preserve the old behavior and let Measure handle singleton "unit", + * 1. a flag need to be added in Measure; * 2. a new constructor which takes const "unit" as parameter need to be added, * and this new constructor will set the flag on. * 3. clone and destructor need to check upon this flag to distinguish on how - * to handle the "unit". - * + * to handle the "unit". + * * Since TimeUnit is such a light weight object, comparing with the heavy weight * format operation, we decided to avoid the above complication. - * + * * So, both TimeUnit and CurrencyUnit (the 2 subclasses of MeasureUnit) are * immutable and non-singleton. * @@ -45,18 +45,18 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnit) * If an application needs to create a long list of TimeUnitAmount on the same * time unit but different number, for example, * 1 hour, 2 hour, 3 hour, ................. 10,000 hour, - * there might be performance hit because 10,000 TimeUnit object, + * there might be performance hit because 10,000 TimeUnit object, * although all are the same time unit, will be created in heap and deleted. * * To address this performance issue, if there is any in the future, - * we should and need to change TimeUnitAmount and CurrencyAmount to be + * we should and need to change TimeUnitAmount and CurrencyAmount to be * immutable by allowing a setter on the number. - * Or we need to add 2 parallel mutable classes in order to + * Or we need to add 2 parallel mutable classes in order to * preserve the existing API. * Or we can use freezable. */ -TimeUnit* U_EXPORT2 -TimeUnit::createInstance(TimeUnit::UTimeUnitFields timeUnitField, +TimeUnit* U_EXPORT2 +TimeUnit::createInstance(TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) { if (U_FAILURE(status)) { return NULL; @@ -94,15 +94,15 @@ TimeUnit::TimeUnit(TimeUnit::UTimeUnitFields timeUnitField) { initTime("second"); break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } -TimeUnit::TimeUnit(const TimeUnit& other) +TimeUnit::TimeUnit(const TimeUnit& other) : MeasureUnit(other), fTimeUnitField(other.fTimeUnitField) { } -TimeUnit* +TimeUnit* TimeUnit::clone() const { return new TimeUnit(*this); } diff --git a/deps/icu-small/source/i18n/tmutamt.cpp b/deps/icu-small/source/i18n/tmutamt.cpp index a143bcf8f7c2ac..2753c29374a108 100644 --- a/deps/icu-small/source/i18n/tmutamt.cpp +++ b/deps/icu-small/source/i18n/tmutamt.cpp @@ -5,7 +5,7 @@ * Copyright (C) 2008, Google, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* - */ + */ #include "unicode/tmutamt.h" @@ -16,17 +16,17 @@ U_NAMESPACE_BEGIN UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeUnitAmount) -TimeUnitAmount::TimeUnitAmount(const Formattable& number, +TimeUnitAmount::TimeUnitAmount(const Formattable& number, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) : Measure(number, TimeUnit::createInstance(timeUnitField, status), status) { } -TimeUnitAmount::TimeUnitAmount(double amount, +TimeUnitAmount::TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status) -: Measure(Formattable(amount), +: Measure(Formattable(amount), TimeUnit::createInstance(timeUnitField, status), status) { } @@ -38,24 +38,24 @@ TimeUnitAmount::TimeUnitAmount(const TimeUnitAmount& other) } -TimeUnitAmount& +TimeUnitAmount& TimeUnitAmount::operator=(const TimeUnitAmount& other) { Measure::operator=(other); return *this; } -UBool +bool TimeUnitAmount::operator==(const UObject& other) const { return Measure::operator==(other); } -TimeUnitAmount* +TimeUnitAmount* TimeUnitAmount::clone() const { return new TimeUnitAmount(*this); } - + TimeUnitAmount::~TimeUnitAmount() { } @@ -71,7 +71,7 @@ TimeUnit::UTimeUnitFields TimeUnitAmount::getTimeUnitField() const { return getTimeUnit().getTimeUnitField(); } - + U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/tmutfmt.cpp b/deps/icu-small/source/i18n/tmutfmt.cpp index 231ea5799c3764..057bb634ebbb24 100644 --- a/deps/icu-small/source/i18n/tmutfmt.cpp +++ b/deps/icu-small/source/i18n/tmutfmt.cpp @@ -327,7 +327,7 @@ TimeUnitFormat::setup(UErrorCode& err) { } UnicodeString* pluralCount; while ((pluralCount = const_cast(keywords->snext(err))) != NULL) { - pluralCounts.addElement(pluralCount, err); + pluralCounts.addElementX(pluralCount, err); } readFromCurrentLocale(UTMUTFMT_FULL_STYLE, gUnitsTag, pluralCounts, err); checkConsistency(UTMUTFMT_FULL_STYLE, gUnitsTag, err); @@ -362,7 +362,7 @@ struct TimeUnitFormatReadSink : public ResourceSink { virtual ~TimeUnitFormatReadSink(); - virtual void put(const char *key, ResourceValue &value, UBool, UErrorCode &errorCode) { + virtual void put(const char *key, ResourceValue &value, UBool, UErrorCode &errorCode) override { // Skip all put() calls except the first one -- discard all fallback data. if (beenHere) { return; diff --git a/deps/icu-small/source/i18n/tolowtrn.cpp b/deps/icu-small/source/i18n/tolowtrn.cpp index 02ec05cd52ad7a..289327874e3185 100644 --- a/deps/icu-small/source/i18n/tolowtrn.cpp +++ b/deps/icu-small/source/i18n/tolowtrn.cpp @@ -27,7 +27,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LowercaseTransliterator) /** * Constructs a transliterator. */ -LowercaseTransliterator::LowercaseTransliterator() : +LowercaseTransliterator::LowercaseTransliterator() : CaseMapTransliterator(UNICODE_STRING("Any-Lower", 9), ucase_toFullLower) { } diff --git a/deps/icu-small/source/i18n/tolowtrn.h b/deps/icu-small/source/i18n/tolowtrn.h index 2fbfb90e1bface..951128ec77eaa3 100644 --- a/deps/icu-small/source/i18n/tolowtrn.h +++ b/deps/icu-small/source/i18n/tolowtrn.h @@ -50,12 +50,12 @@ class LowercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual LowercaseTransliterator* clone() const; + virtual LowercaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/toupptrn.h b/deps/icu-small/source/i18n/toupptrn.h index e96ca8f0ba530a..755e9edfcb5748 100644 --- a/deps/icu-small/source/i18n/toupptrn.h +++ b/deps/icu-small/source/i18n/toupptrn.h @@ -50,12 +50,12 @@ class UppercaseTransliterator : public CaseMapTransliterator { * Transliterator API. * @return a copy of the object. */ - virtual UppercaseTransliterator* clone() const; + virtual UppercaseTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/translit.cpp b/deps/icu-small/source/i18n/translit.cpp index c2a15837bedb0d..c7d6b510576d24 100644 --- a/deps/icu-small/source/i18n/translit.cpp +++ b/deps/icu-small/source/i18n/translit.cpp @@ -249,7 +249,7 @@ void Transliterator::transliterate(Replaceable& text) const { * pending transliterations, clients should call {@link * #finishKeyboardTransliteration} after the last call to this * method has been made. - * + * * @param text the buffer holding transliterated and untransliterated text * @param index an array of three integers. * @@ -453,7 +453,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // the changes made during the pass, extends the pass by one code point, // and tries again. //---------------------------------------------------------------------- - + // globalLimit is the limit value for the entire operation. We // set index.limit to the end of each unfiltered run before // calling handleTransliterate(), so we need to maintain the real @@ -461,7 +461,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // update globalLimit for insertions or deletions that have // happened. int32_t globalLimit = index.limit; - + // If there is a non-null filter, then break the input text up. Say the // input text has the form: // xxxabcxxdefxx @@ -471,7 +471,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // Each pass through the loop consumes a run of filtered // characters (which are ignored) and a subsequent run of // unfiltered characters (which are transliterated). - + for (;;) { if (filter != NULL) { @@ -507,7 +507,7 @@ void Transliterator::filteredTransliterate(Replaceable& text, // complete the transliteration for this run. UBool isIncrementalRun = (index.limit < globalLimit ? FALSE : incremental); - + int32_t delta; // Implement rollback. To understand the need for rollback, @@ -933,15 +933,15 @@ Transliterator::createInstance(const UnicodeString& ID, return NULL; } LocalPointer lpGlobalFilter(globalFilter); - + TransliteratorIDParser::instantiateList(list, status); if (U_FAILURE(status)) { return NULL; } - + U_ASSERT(list.size() > 0); Transliterator* t = NULL; - + if (list.size() > 1 || canonID.indexOf(ID_DELIM) >= 0) { // [NOTE: If it's a compoundID, we instantiate a CompoundTransliterator even if it only // has one child transliterator. This is so that toRules() will return the right thing @@ -1093,6 +1093,8 @@ Transliterator::createFromRules(const UnicodeString& ID, } else { UVector transliterators(status); + // TODO ICU-21701 missing U_FAILURE check here. + // Error and nullptr checking through this whole block looks suspect. int32_t passNumber = 1; int32_t limit = parser.idBlockVector.size(); @@ -1108,10 +1110,15 @@ Transliterator::createFromRules(const UnicodeString& ID, delete temp; return nullptr; } - if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) + if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) { transliterators.addElement(temp, status); - else + if (U_FAILURE(status)) { + delete temp; + return nullptr; + } + } else { delete temp; + } } } if (!parser.dataVector.isEmpty()) { @@ -1127,6 +1134,13 @@ Transliterator::createFromRules(const UnicodeString& ID, return t; } transliterators.addElement(temprbt, status); + if (U_FAILURE(status)) { + delete temprbt; + return t; + } + // TODO: ICU-21701 the transliterators vector will leak its contents if anything goes wrong. + // Under normal operation, the CompoundTransliterator constructor adopts the + // the contents of the vector. } } @@ -1290,7 +1304,7 @@ void Transliterator::_registerAlias(const UnicodeString& aliasID, /** * Unregisters a transliterator or class. This may be either * a system transliterator or a user transliterator or class. - * + * * @param ID the ID of the transliterator or class * @see #registerInstance @@ -1494,13 +1508,13 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { * is the ID of the system transliterator being defined. These * are public IDs enumerated by Transliterator.getAvailableIDs(), * unless the second field is "internal". - * + * * is a ResourceReader resource name. Currently these refer * to file names under com/ibm/text/resources. This string is passed * directly to ResourceReader, together with . - * + * * is either "FORWARD" or "REVERSE". - * + * * is a string to be passed directly to * Transliterator.getInstance(). The returned Transliterator object * then has its ID changed to and is returned. @@ -1546,10 +1560,10 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { // 'file' or 'internal'; // row[2]=resource, row[3]=direction { - + resString = ures_getStringByKey(res, "resource", &len, &lstatus); UBool visible = (type == 0x0066 /*f*/); - UTransDirection dir = + UTransDirection dir = (ures_getUnicodeStringByKey(res, "direction", &lstatus).charAt(0) == 0x0046 /*F*/) ? UTRANS_FORWARD : UTRANS_REVERSE; @@ -1575,7 +1589,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { // Manually add prototypes that the system knows about to the // cache. This is how new non-rule-based transliterators are // added to the system. - + // This is to allow for null pointer check NullTransliterator* tempNullTranslit = new NullTransliterator(); LowercaseTransliterator* tempLowercaseTranslit = new LowercaseTransliterator(); @@ -1589,7 +1603,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) { #endif // Check for null pointers if (tempNullTranslit == NULL || tempLowercaseTranslit == NULL || tempUppercaseTranslit == NULL || - tempTitlecaseTranslit == NULL || tempUnicodeTranslit == NULL || + tempTitlecaseTranslit == NULL || tempUnicodeTranslit == NULL || #if !UCONFIG_NO_BREAK_ITERATION tempBreakTranslit == NULL || #endif diff --git a/deps/icu-small/source/i18n/transreg.cpp b/deps/icu-small/source/i18n/transreg.cpp index 8c90effcc2a348..726ad56f0f6f20 100644 --- a/deps/icu-small/source/i18n/transreg.cpp +++ b/deps/icu-small/source/i18n/transreg.cpp @@ -154,22 +154,23 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, pos = aliasesOrRules.indexOf(noIDBlock, pos + 1); } - UVector transliterators(ec); + UVector transliterators(uprv_deleteUObject, nullptr, ec); UnicodeString idBlock; int32_t blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff)); while (blockSeparatorPos >= 0) { aliasesOrRules.extract(0, blockSeparatorPos, idBlock); aliasesOrRules.remove(0, blockSeparatorPos + 1); if (!idBlock.isEmpty()) - transliterators.addElement(Transliterator::createInstance(idBlock, UTRANS_FORWARD, pe, ec), ec); + transliterators.adoptElement(Transliterator::createInstance(idBlock, UTRANS_FORWARD, pe, ec), ec); if (!transes->isEmpty()) - transliterators.addElement(transes->orphanElementAt(0), ec); + transliterators.adoptElement(transes->orphanElementAt(0), ec); blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff)); } if (!aliasesOrRules.isEmpty()) - transliterators.addElement(Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec), ec); + transliterators.adoptElement(Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec), ec); while (!transes->isEmpty()) - transliterators.addElement(transes->orphanElementAt(0), ec); + transliterators.adoptElement(transes->orphanElementAt(0), ec); + transliterators.setDeleter(nullptr); if (U_SUCCESS(ec)) { t = new CompoundTransliterator(ID, transliterators, @@ -186,7 +187,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe, } break; case RULES: - UPRV_UNREACHABLE; // don't call create() if isRuleBased() returns TRUE! + UPRV_UNREACHABLE_EXIT; // don't call create() if isRuleBased() returns TRUE! } return t; } @@ -543,7 +544,7 @@ TransliteratorRegistry::TransliteratorRegistry(UErrorCode& status) : variantList.setComparer(uhash_compareCaselessUnicodeString); UnicodeString *emptyString = new UnicodeString(); if (emptyString != NULL) { - variantList.addElement(emptyString, status); + variantList.adoptElement(emptyString, status); } availableIDs.setDeleter(uprv_deleteUObject); availableIDs.setComparer(uhash_compareCaselessUnicodeString); @@ -592,7 +593,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, if (entry->entryType == TransliteratorEntry::RULES_FORWARD || entry->entryType == TransliteratorEntry::RULES_REVERSE || entry->entryType == TransliteratorEntry::LOCALE_RULES) { - + if (parser.idBlockVector.isEmpty() && parser.dataVector.isEmpty()) { entry->u.data = 0; entry->entryType = TransliteratorEntry::ALIAS; @@ -611,6 +612,8 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, entry->entryType = TransliteratorEntry::COMPOUND_RBT; entry->compoundFilter = parser.orphanCompoundFilter(); entry->u.dataVector = new UVector(status); + // TODO ICU-21701: missing check for nullptr and failed status. + // Unclear how best to bail out. entry->stringArg.remove(); int32_t limit = parser.idBlockVector.size(); @@ -626,6 +629,9 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID, if (!parser.dataVector.isEmpty()) { TransliterationRuleData* data = (TransliterationRuleData*)parser.dataVector.orphanElementAt(0); entry->u.dataVector->addElement(data, status); + if (U_FAILURE(status)) { + delete data; + } entry->stringArg += (UChar)0xffff; // use U+FFFF to mark position of RBTs in ID block } } @@ -951,7 +957,7 @@ void TransliteratorRegistry::registerEntry(const UnicodeString& ID, if (newID != NULL) { // NUL-terminate the ID string newID->getTerminatedBuffer(); - availableIDs.addElement(newID, status); + availableIDs.adoptElement(newID, status); } } } else { @@ -992,7 +998,7 @@ void TransliteratorRegistry::registerSTV(const UnicodeString& source, } UnicodeString *variantEntry = new UnicodeString(variant); if (variantEntry != NULL) { - variantList.addElement(variantEntry, status); + variantList.adoptElement(variantEntry, status); if (U_SUCCESS(status)) { variantListIndex = variantList.size() - 1; } @@ -1194,12 +1200,12 @@ TransliteratorEntry* TransliteratorRegistry::find(const UnicodeString& ID) { * Top-level find method. Attempt to find a source-target/variant in * either the dynamic or the static (locale resource) store. Perform * fallback. - * + * * Lookup sequence for ss_SS_SSS-tt_TT_TTT/v: * * ss_SS_SSS-tt_TT_TTT/v -- in hashtable * ss_SS_SSS-tt_TT_TTT/v -- in ss_SS_SSS (no fallback) - * + * * repeat with t = tt_TT_TTT, tt_TT, tt, and tscript * * ss_SS_SSS-t/ * @@ -1214,7 +1220,7 @@ TransliteratorEntry* TransliteratorRegistry::find(const UnicodeString& ID) { TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, UnicodeString& target, UnicodeString& variant) { - + TransliteratorSpec src(source); TransliteratorSpec trg(target); TransliteratorEntry* entry; @@ -1232,13 +1238,13 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, } if (variant.length() != 0) { - + // Seek exact match in hashtable entry = findInDynamicStore(src, trg, variant); if (entry != 0) { return entry; } - + // Seek exact match in locale resources entry = findInStaticStore(src, trg, variant); if (entry != 0) { @@ -1254,7 +1260,7 @@ TransliteratorEntry* TransliteratorRegistry::find(UnicodeString& source, if (entry != 0) { return entry; } - + // Seek match in locale resources entry = findInStaticStore(src, trg, NO_VARIANT); if (entry != 0) { @@ -1320,7 +1326,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID return t; case TransliteratorEntry::COMPOUND_RBT: { - UVector* rbts = new UVector(entry->u.dataVector->size(), status); + UVector* rbts = new UVector(uprv_deleteUObject, nullptr, entry->u.dataVector->size(), status); // Check for null pointer if (rbts == NULL) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1334,12 +1340,13 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID if (tl == 0) status = U_MEMORY_ALLOCATION_ERROR; else - rbts->addElement(tl, status); + rbts->adoptElement(tl, status); } if (U_FAILURE(status)) { delete rbts; return 0; } + rbts->setDeleter(nullptr); aliasReturn = new TransliteratorAlias(ID, entry->stringArg, rbts, entry->compoundFilter); } if (aliasReturn == 0) { @@ -1360,7 +1367,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID // we modify the registry with the parsed data and retry. { TransliteratorParser parser(status); - + // We use the file name, taken from another resource bundle // 2-d array at static init time, as a locale language. We're // just using the locale mechanism to map through to a file @@ -1369,7 +1376,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID //UResourceBundle *bundle = ures_openDirect(0, ch, &status); UnicodeString rules = entry->stringArg; //ures_close(bundle); - + //if (U_FAILURE(status)) { // We have a failure of some kind. Remove the ID from the // registry so we don't keep trying. NOTE: This will throw off @@ -1379,7 +1386,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID // or unrecoverable run time memory failures. // remove(ID); //} else { - + // If the status indicates a failure, then we don't have any // rules -- there is probably an installation error. The list // in the root locale should correspond to all the installed @@ -1395,7 +1402,7 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID } return 0; default: - UPRV_UNREACHABLE; // can't get here + UPRV_UNREACHABLE_EXIT; // can't get here } } U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/transreg.h b/deps/icu-small/source/i18n/transreg.h index 0a0698862be1ac..686e62ae33cd33 100644 --- a/deps/icu-small/source/i18n/transreg.h +++ b/deps/icu-small/source/i18n/transreg.h @@ -103,7 +103,7 @@ class TransliteratorAlias : public UMemory { // null, zero, empty. // 2. CompoundRBT // Here ID is the ID, aliasID is the idBlock, trans is the - // contained RBT, and idSplitPoint is the offet in aliasID + // contained RBT, and idSplitPoint is the offset in aliasID // where the contained RBT goes. compoundFilter is the // compound filter, and it is _not_ owned. // 3. Rules @@ -170,7 +170,7 @@ class TransliteratorRegistry : public UMemory { * @param ID the given ID * @param aliasReturn output param to receive TransliteratorAlias; * should be NULL on entry - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code. */ @@ -293,7 +293,7 @@ class TransliteratorRegistry : public UMemory { * Return a registered source specifier. * @param index which specifier to return, from 0 to n-1, where * n = countAvailableSources() - * @param result fill-in paramter to receive the source specifier. + * @param result fill-in parameter to receive the source specifier. * If index is out of range, result will be empty. * @return reference to result */ @@ -314,7 +314,7 @@ class TransliteratorRegistry : public UMemory { * @param index which specifier to return, from 0 to n-1, where * n = countAvailableTargets(source) * @param source the source specifier - * @param result fill-in paramter to receive the target specifier. + * @param result fill-in parameter to receive the target specifier. * If source is invalid or if index is out of range, result will * be empty. * @return reference to result @@ -345,7 +345,7 @@ class TransliteratorRegistry : public UMemory { * n = countAvailableVariants(source, target) * @param source the source specifier * @param target the target specifier - * @param result fill-in paramter to receive the variant + * @param result fill-in parameter to receive the variant * specifier. If source is invalid or if target is invalid or if * index is out of range, result will be empty. * @return reference to result @@ -417,11 +417,11 @@ class TransliteratorRegistry : public UMemory { public: Enumeration(const TransliteratorRegistry& reg); virtual ~Enumeration(); - virtual int32_t count(UErrorCode& status) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); + virtual int32_t count(UErrorCode& status) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; static UClassID U_EXPORT2 getStaticClassID(); - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: int32_t index; const TransliteratorRegistry& reg; diff --git a/deps/icu-small/source/i18n/tridpars.cpp b/deps/icu-small/source/i18n/tridpars.cpp index eb6c6bbba3a9a9..0ca168e7a3e30b 100644 --- a/deps/icu-small/source/i18n/tridpars.cpp +++ b/deps/icu-small/source/i18n/tridpars.cpp @@ -153,10 +153,10 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, single = specsToID(specsA, FORWARD); // Null pointers check if (b == NULL || single == NULL) { - delete b; - delete single; - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + delete b; + delete single; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->canonID.append(OPEN_REV) .append(b->canonID).append(CLOSE_REV); @@ -169,10 +169,10 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, single = specsToID(specsB, FORWARD); // Check for null pointer. if (a == NULL || single == NULL) { - delete a; - delete single; - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + delete a; + delete single; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->canonID.append(OPEN_REV) .append(a->canonID).append(CLOSE_REV); @@ -193,8 +193,8 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos, } // Check for NULL pointer if (single == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + status = U_MEMORY_ALLOCATION_ERROR; + return NULL; } single->filter = specsA->filter; } @@ -364,6 +364,8 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d int32_t pos = 0; int32_t withParens = 1; list.removeAllElements(); + UObjectDeleter *save = list.setDeleter(_deleteSingleID); + UnicodeSet* filter; globalFilter = NULL; canonID.truncate(0); @@ -392,7 +394,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d break; } if (dir == FORWARD) { - list.addElement(single, ec); + list.adoptElement(single, ec); } else { list.insertElementAt(single, 0, ec); } @@ -442,10 +444,10 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d goto FAIL; } + list.setDeleter(save); return TRUE; FAIL: - UObjectDeleter *save = list.setDeleter(_deleteSingleID); list.removeAllElements(); list.setDeleter(save); delete globalFilter; @@ -494,9 +496,8 @@ void TransliteratorIDParser::instantiateList(UVector& list, ec = U_INVALID_ID; goto RETURN; } - tlist.addElement(t, ec); + tlist.adoptElement(t, ec); if (U_FAILURE(ec)) { - delete t; goto RETURN; } } @@ -509,10 +510,7 @@ void TransliteratorIDParser::instantiateList(UVector& list, // Should never happen ec = U_INTERNAL_TRANSLITERATOR_ERROR; } - tlist.addElement(t, ec); - if (U_FAILURE(ec)) { - delete t; - } + tlist.adoptElement(t, ec); } RETURN: @@ -525,9 +523,8 @@ void TransliteratorIDParser::instantiateList(UVector& list, while (tlist.size() > 0) { t = (Transliterator*) tlist.orphanElementAt(0); - list.addElement(t, ec); + list.adoptElement(t, ec); if (U_FAILURE(ec)) { - delete t; list.removeAllElements(); break; } @@ -664,16 +661,16 @@ void TransliteratorIDParser::registerSpecialInverse(const UnicodeString& target, UnicodeString *tempus = new UnicodeString(inverseTarget); // Used for null pointer check before usage. if (tempus == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; + status = U_MEMORY_ALLOCATION_ERROR; + return; } SPECIAL_INVERSES->put(target, tempus, status); if (bidirectional) { - tempus = new UnicodeString(target); - if (tempus == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; - } + tempus = new UnicodeString(target); + if (tempus == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } SPECIAL_INVERSES->put(inverseTarget, tempus, status); } } @@ -911,8 +908,8 @@ void U_CALLCONV TransliteratorIDParser::init(UErrorCode &status) { SPECIAL_INVERSES = new Hashtable(TRUE, status); if (SPECIAL_INVERSES == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; - return; + status = U_MEMORY_ALLOCATION_ERROR; + return; } SPECIAL_INVERSES->setValueDeleter(uprv_deleteUObject); } diff --git a/deps/icu-small/source/i18n/tridpars.h b/deps/icu-small/source/i18n/tridpars.h index cd56146023162f..03d68ccac910c9 100644 --- a/deps/icu-small/source/i18n/tridpars.h +++ b/deps/icu-small/source/i18n/tridpars.h @@ -61,7 +61,7 @@ class TransliteratorIDParser /* not : public UObject because all methods are sta * 'sawSource' is true if there was an explicit source in the * parsed id. If there was no explicit source, then an implied * source of ANY is returned and 'sawSource' is set to false. - * + * * 'filter' is the parsed filter pattern, or null if there was no * filter. */ @@ -222,7 +222,7 @@ class TransliteratorIDParser /* not : public UObject because all methods are sta * @param source the given source. * @param target the given target. * @param variant the given variant - * @param isSourcePresent If true then the source is present. + * @param isSourcePresent If true then the source is present. * If the source is not present, ANY will be * given as the source, and isSourcePresent will be null * @return an array of 4 strings: source, target, variant, and diff --git a/deps/icu-small/source/i18n/tzfmt.cpp b/deps/icu-small/source/i18n/tzfmt.cpp index e70005a384085e..ef3cfad80ce1d6 100644 --- a/deps/icu-small/source/i18n/tzfmt.cpp +++ b/deps/icu-small/source/i18n/tzfmt.cpp @@ -106,7 +106,7 @@ static const UChar ALT_GMT_STRINGS[][4] = { }; // Order of GMT offset pattern parsing, *_HMS must be evaluated first -// because *_HM is most likely a substring of *_HMS +// because *_HM is most likely a substring of *_HMS static const int32_t PARSE_GMT_OFFSET_TYPES[] = { UTZFMT_PAT_POSITIVE_HMS, UTZFMT_PAT_NEGATIVE_HMS, @@ -270,7 +270,7 @@ GMTOffsetField::isValid(FieldType type, int32_t width) { case SECOND: return (width == 2); default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } return (width > 0); } @@ -296,7 +296,7 @@ inline uint8_t GMTOffsetField::getWidth() const { return fWidth; } - + inline const UChar* GMTOffsetField::getPatternText(void) const { return fText; @@ -316,7 +316,7 @@ U_CDECL_END // ------------------------------------------------------------------ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneFormat) -TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status) +TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status) : fLocale(locale), fTimeZoneNames(NULL), fTimeZoneGenericNames(NULL), fDefParseOptionFlags(0), fTZDBTimeZoneNames(NULL) { @@ -482,11 +482,11 @@ TimeZoneFormat::operator=(const TimeZoneFormat& other) { } -UBool +bool TimeZoneFormat::operator==(const Format& other) const { TimeZoneFormat* tzfmt = (TimeZoneFormat*)&other; - UBool isEqual = + bool isEqual = fLocale == tzfmt->fLocale && fGMTPattern == tzfmt->fGMTPattern && fGMTZeroFormat == tzfmt->fGMTZeroFormat @@ -555,7 +555,7 @@ TimeZoneFormat::getDefaultParseOptions(void) const { } -UnicodeString& +UnicodeString& TimeZoneFormat::getGMTPattern(UnicodeString& pattern) const { return pattern.setTo(fGMTPattern); } @@ -595,7 +595,7 @@ TimeZoneFormat::setGMTOffsetPattern(UTimeZoneFormatGMTOffsetPatternType type, co required = FIELDS_HMS; break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } UVector* patternItems = parseOffsetPattern(pattern, required, status); @@ -828,7 +828,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par int32_t offset; // Styles using localized GMT format as fallback - UBool fallbackLocalizedGMT = + UBool fallbackLocalizedGMT = (style == UTZFMT_STYLE_SPECIFIC_LONG || style == UTZFMT_STYLE_GENERIC_LONG || style == UTZFMT_STYLE_GENERIC_LOCATION); UBool fallbackShortLocalizedGMT = (style == UTZFMT_STYLE_SPECIFIC_SHORT || style == UTZFMT_STYLE_GENERIC_SHORT); @@ -1033,7 +1033,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par break; default: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } int32_t len = 0; @@ -2459,7 +2459,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType != GMTOffsetField::TEXT) { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2485,7 +2485,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType == GMTOffsetField::TEXT) { if (text.length() > 0) { GMTOffsetField* textfld = GMTOffsetField::createText(text, status); - result->addElement(textfld, status); + result->addElementX(textfld, status); if (U_FAILURE(status)) { break; } @@ -2494,7 +2494,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re } else { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2512,7 +2512,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType != GMTOffsetField::TEXT) { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); if (U_FAILURE(status)) { break; } @@ -2532,12 +2532,12 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re if (itemType == GMTOffsetField::TEXT) { if (text.length() > 0) { GMTOffsetField* tfld = GMTOffsetField::createText(text, status); - result->addElement(tfld, status); + result->addElementX(tfld, status); } } else { if (GMTOffsetField::isValid(itemType, itemLength)) { GMTOffsetField* fld = GMTOffsetField::createTimeField(itemType, static_cast(itemLength), status); - result->addElement(fld, status); + result->addElementX(fld, status); } else { status = U_ILLEGAL_ARGUMENT_ERROR; } @@ -2729,7 +2729,7 @@ class ZoneIdMatchHandler : public TextTrieMapSearchResultHandler { ZoneIdMatchHandler(); virtual ~ZoneIdMatchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; const UChar* getID(); int32_t getMatchLen(); private: @@ -2737,7 +2737,7 @@ class ZoneIdMatchHandler : public TextTrieMapSearchResultHandler { const UChar* fID; }; -ZoneIdMatchHandler::ZoneIdMatchHandler() +ZoneIdMatchHandler::ZoneIdMatchHandler() : fLen(0), fID(NULL) { } @@ -2780,15 +2780,17 @@ static void U_CALLCONV initZoneIdTrie(UErrorCode &status) { status = U_MEMORY_ALLOCATION_ERROR; return; } - StringEnumeration *tzenum = TimeZone::createEnumeration(); - const UnicodeString *id; - while ((id = tzenum->snext(status)) != NULL) { - const UChar* uid = ZoneMeta::findTimeZoneID(*id); - if (uid) { - gZoneIdTrie->put(uid, const_cast(uid), status); + StringEnumeration *tzenum = TimeZone::createEnumeration(status); + if (U_SUCCESS(status)) { + const UnicodeString *id; + while ((id = tzenum->snext(status)) != NULL) { + const UChar* uid = ZoneMeta::findTimeZoneID(*id); + if (uid) { + gZoneIdTrie->put(uid, const_cast(uid), status); + } } + delete tzenum; } - delete tzenum; } @@ -2803,7 +2805,7 @@ TimeZoneFormat::parseZoneID(const UnicodeString& text, ParsePosition& pos, Unico if (U_SUCCESS(status)) { LocalPointer handler(new ZoneIdMatchHandler()); - gZoneIdTrie->search(text, start, handler.getAlias(), status); + gZoneIdTrie->search(text, start, handler.getAlias(), status); len = handler->getMatchLen(); if (len > 0) { tzID.setTo(handler->getID(), -1); @@ -2853,7 +2855,7 @@ TimeZoneFormat::parseShortZoneID(const UnicodeString& text, ParsePosition& pos, if (U_SUCCESS(status)) { LocalPointer handler(new ZoneIdMatchHandler()); - gShortZoneIdTrie->search(text, start, handler.getAlias(), status); + gShortZoneIdTrie->search(text, start, handler.getAlias(), status); len = handler->getMatchLen(); if (len > 0) { tzID.setTo(handler->getID(), -1); diff --git a/deps/icu-small/source/i18n/tzgnames.cpp b/deps/icu-small/source/i18n/tzgnames.cpp index e056461dc30a63..ed5f42d7bc1d6d 100644 --- a/deps/icu-small/source/i18n/tzgnames.cpp +++ b/deps/icu-small/source/i18n/tzgnames.cpp @@ -195,7 +195,7 @@ class GNameSearchHandler : public TextTrieMapSearchResultHandler { GNameSearchHandler(uint32_t types); virtual ~GNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; UVector* getMatches(int32_t& maxMatchLen); private: @@ -244,7 +244,7 @@ GNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *node, gmatch->gnameInfo = nameinfo; gmatch->matchLength = matchLength; gmatch->timeType = UTZFMT_TIME_TYPE_UNKNOWN; - fResults->addElement(gmatch, status); + fResults->addElementX(gmatch, status); if (U_FAILURE(status)) { uprv_free(gmatch); } else { @@ -328,7 +328,7 @@ class TZGNCore : public UMemory { // --------------------------------------------------- -// TZGNCore - core implmentation of TimeZoneGenericNames +// TZGNCore - core implementation of TimeZoneGenericNames // // TimeZoneGenericNames is parallel to TimeZoneNames, // but handles run-time generated time zone names. @@ -554,7 +554,7 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID) { // If this is not the primary zone in the country, // use the exemplar city name. - // getExemplarLocationName should retur non-empty string + // getExemplarLocationName should return non-empty string // if the time zone is associated with a region UnicodeString city; @@ -1287,7 +1287,7 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) { return instance; } -UBool +bool TimeZoneGenericNames::operator==(const TimeZoneGenericNames& other) const { // Just compare if the other object also use the same // ref entry diff --git a/deps/icu-small/source/i18n/tzgnames.h b/deps/icu-small/source/i18n/tzgnames.h index bcdf0f399ba8a1..26112c5db65f70 100644 --- a/deps/icu-small/source/i18n/tzgnames.h +++ b/deps/icu-small/source/i18n/tzgnames.h @@ -10,8 +10,8 @@ #define __TZGNAMES_H /** - * \file - * \brief C API: Time zone generic names classe + * \file + * \brief C API: Time zone generic names classes */ #include "unicode/utypes.h" @@ -45,8 +45,8 @@ class U_I18N_API TimeZoneGenericNames : public UMemory { static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status); - virtual UBool operator==(const TimeZoneGenericNames& other) const; - virtual UBool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);} + virtual bool operator==(const TimeZoneGenericNames& other) const; + virtual bool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);} virtual TimeZoneGenericNames* clone() const; UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, diff --git a/deps/icu-small/source/i18n/tznames.cpp b/deps/icu-small/source/i18n/tznames.cpp index d789c123630260..5c504d01cb6342 100644 --- a/deps/icu-small/source/i18n/tznames.cpp +++ b/deps/icu-small/source/i18n/tznames.cpp @@ -104,24 +104,24 @@ class TimeZoneNamesDelegate : public TimeZoneNames { TimeZoneNamesDelegate(const Locale& locale, UErrorCode& status); virtual ~TimeZoneNamesDelegate(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual UBool operator!=(const TimeZoneNames& other) const {return !operator==(other);} - virtual TimeZoneNamesDelegate* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual bool operator!=(const TimeZoneNames& other) const {return !operator==(other);} + virtual TimeZoneNamesDelegate* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const; + UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const override; - void loadAllDisplayNames(UErrorCode& status); - void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const; + void loadAllDisplayNames(UErrorCode& status) override; + void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const override; - MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; private: TimeZoneNamesDelegate(); TimeZoneNamesCacheEntry* fTZnamesCacheEntry; @@ -219,10 +219,10 @@ TimeZoneNamesDelegate::~TimeZoneNamesDelegate() { umtx_unlock(&gTimeZoneNamesLock); } -UBool +bool TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // Just compare if the other object also use the same // cache entry @@ -230,7 +230,7 @@ TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const { if (rhs) { return fTZnamesCacheEntry == rhs->fTZnamesCacheEntry; } - return FALSE; + return false; } TimeZoneNamesDelegate* @@ -345,7 +345,7 @@ TimeZoneNames::getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, return name; } -// Empty default implementation, to be overriden in tznames_impl.cpp. +// Empty default implementation, to be overridden in tznames_impl.cpp. void TimeZoneNames::loadAllDisplayNames(UErrorCode& /*status*/) { } @@ -419,7 +419,7 @@ TimeZoneNames::MatchInfoCollection::addZone(UTimeZoneNameType nameType, int32_t status = U_MEMORY_ALLOCATION_ERROR; return; } - matches(status)->addElement(matchInfo, status); + matches(status)->addElementX(matchInfo, status); if (U_FAILURE(status)) { delete matchInfo; } @@ -436,7 +436,7 @@ TimeZoneNames::MatchInfoCollection::addMetaZone(UTimeZoneNameType nameType, int3 status = U_MEMORY_ALLOCATION_ERROR; return; } - matches(status)->addElement(matchInfo, status); + matches(status)->addElementX(matchInfo, status); if (U_FAILURE(status)) { delete matchInfo; } diff --git a/deps/icu-small/source/i18n/tznames_impl.cpp b/deps/icu-small/source/i18n/tznames_impl.cpp index 180b7fefbf3623..d450b7456489bf 100644 --- a/deps/icu-small/source/i18n/tznames_impl.cpp +++ b/deps/icu-small/source/i18n/tznames_impl.cpp @@ -155,12 +155,12 @@ CharacterNode::addValue(void *value, UObjectDeleter *valueDeleter, UErrorCode &s } return; } - values->addElement(fValues, status); + values->addElementX(fValues, status); fValues = values; fHasValuesVector = TRUE; } // Add the new value. - ((UVector *)fValues)->addElement(value, status); + ((UVector *)fValues)->addElementX(value, status); } } @@ -174,7 +174,7 @@ TextTrieMapSearchResultHandler::~TextTrieMapSearchResultHandler(){ // TextTrieMap class implementation // --------------------------------------------------- TextTrieMap::TextTrieMap(UBool ignoreCase, UObjectDeleter *valueDeleter) -: fIgnoreCase(ignoreCase), fNodes(NULL), fNodesCapacity(0), fNodesCount(0), +: fIgnoreCase(ignoreCase), fNodes(NULL), fNodesCapacity(0), fNodesCount(0), fLazyContents(NULL), fIsEmpty(TRUE), fValueDeleter(valueDeleter) { } @@ -189,7 +189,7 @@ TextTrieMap::~TextTrieMap() { if (fValueDeleter) { fValueDeleter(fLazyContents->elementAt(i+1)); } - } + } delete fLazyContents; } } @@ -206,7 +206,7 @@ int32_t TextTrieMap::isEmpty() const { // We defer actually building the TextTrieMap node structure until the first time a // search is performed. put() simply saves the parameters in case we do // eventually need to build it. -// +// void TextTrieMap::put(const UnicodeString &key, void *value, ZNStringPool &sp, UErrorCode &status) { const UChar *s = sp.get(key, status); @@ -233,7 +233,7 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) { U_ASSERT(fLazyContents != NULL); UChar *s = const_cast(key); - fLazyContents->addElement(s, status); + fLazyContents->addElementX(s, status); if (U_FAILURE(status)) { if (fValueDeleter) { fValueDeleter((void*) key); @@ -241,7 +241,7 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) { return; } - fLazyContents->addElement(value, status); + fLazyContents->addElementX(value, status); } void @@ -373,7 +373,7 @@ void TextTrieMap::buildTrie(UErrorCode &status) { putImpl(keyString, val, status); } delete fLazyContents; - fLazyContents = NULL; + fLazyContents = NULL; } } @@ -470,9 +470,9 @@ ZNStringPool::ZNStringPool(UErrorCode &status) { return; } - fHash = uhash_open(uhash_hashUChars /* keyHash */, - uhash_compareUChars /* keyComp */, - uhash_compareUChars /* valueComp */, + fHash = uhash_open(uhash_hashUChars /* keyHash */, + uhash_compareUChars /* keyComp */, + uhash_compareUChars /* valueComp */, &status); if (U_FAILURE(status)) { return; @@ -521,19 +521,19 @@ const UChar *ZNStringPool::get(const UChar *s, UErrorCode &status) { } fChunks->fNext = oldChunk; } - + UChar *destString = &fChunks->fStrings[fChunks->fLimit]; u_strcpy(destString, s); fChunks->fLimit += (length + 1); uhash_put(fHash, destString, destString, &status); return destString; -} +} // // ZNStringPool::adopt() Put a string into the hash, but do not copy the string data // into the pool's storage. Used for strings from resource bundles, -// which will perisist for the life of the zone string formatter, and +// which will persist for the life of the zone string formatter, and // therefore can be used directly without copying. const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) { const UChar *pooledString; @@ -550,7 +550,7 @@ const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) { return s; } - + const UChar *ZNStringPool::get(const UnicodeString &s, UErrorCode &status) { UnicodeString &nonConstStr = const_cast(s); return this->get(nonConstStr.getTerminatedBuffer(), status); @@ -776,7 +776,7 @@ struct ZNames::ZNamesLoader : public ResourceSink { clear(); ures_getAllItemsWithFallback(zoneStrings, key, *this, localStatus); - // Ignore errors, but propogate possible warnings. + // Ignore errors, but propagate possible warnings. if (U_SUCCESS(localStatus)) { errorCode = localStatus; } @@ -794,7 +794,7 @@ struct ZNames::ZNamesLoader : public ResourceSink { } virtual void put(const char* key, ResourceValue& value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { ResourceTable namesTable = value.getTable(errorCode); if (U_FAILURE(errorCode)) { return; } for (int32_t i = 0; namesTable.getKeyAndValue(i, key, value); ++i) { @@ -857,10 +857,10 @@ class MetaZoneIDsEnumeration : public StringEnumeration { MetaZoneIDsEnumeration(UVector* mzIDs); virtual ~MetaZoneIDsEnumeration(); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; - virtual const UnicodeString* snext(UErrorCode& status); - virtual void reset(UErrorCode& status); - virtual int32_t count(UErrorCode& status) const; + virtual UClassID getDynamicClassID(void) const override; + virtual const UnicodeString* snext(UErrorCode& status) override; + virtual void reset(UErrorCode& status) override; + virtual int32_t count(UErrorCode& status) const override; private: int32_t fLen; int32_t fPos; @@ -870,11 +870,11 @@ class MetaZoneIDsEnumeration : public StringEnumeration { UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MetaZoneIDsEnumeration) -MetaZoneIDsEnumeration::MetaZoneIDsEnumeration() +MetaZoneIDsEnumeration::MetaZoneIDsEnumeration() : fLen(0), fPos(0), fMetaZoneIDs(NULL), fLocalVector(NULL) { } -MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(const UVector& mzIDs) +MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(const UVector& mzIDs) : fPos(0), fMetaZoneIDs(&mzIDs), fLocalVector(NULL) { fLen = fMetaZoneIDs->size(); } @@ -920,7 +920,7 @@ class ZNameSearchHandler : public TextTrieMapSearchResultHandler { ZNameSearchHandler(uint32_t types); virtual ~ZNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; TimeZoneNames::MatchInfoCollection* getMatches(int32_t& maxMatchLen); private: @@ -929,7 +929,7 @@ class ZNameSearchHandler : public TextTrieMapSearchResultHandler { TimeZoneNames::MatchInfoCollection* fResults; }; -ZNameSearchHandler::ZNameSearchHandler(uint32_t types) +ZNameSearchHandler::ZNameSearchHandler(uint32_t types) : fTypes(types), fMaxMatchLen(0), fResults(NULL) { } @@ -1104,13 +1104,13 @@ TimeZoneNamesImpl::cleanup() { } } -UBool +bool TimeZoneNamesImpl::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // No implementation for now - return FALSE; + return false; } TimeZoneNamesImpl* @@ -1165,7 +1165,7 @@ TimeZoneNamesImpl::_getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCod OlsonToMetaMappingEntry *map = (OlsonToMetaMappingEntry *)mappings->elementAt(i); const UChar *mzID = map->mzid; if (!mzIDs->contains((void *)mzID)) { - mzIDs->addElement((void *)mzID, status); + mzIDs->addElementX((void *)mzID, status); } } if (U_SUCCESS(status)) { @@ -1194,7 +1194,7 @@ TimeZoneNamesImpl::getReferenceZoneID(const UnicodeString& mzID, const char* reg return TimeZoneNamesImpl::_getReferenceZoneID(mzID, region, tzID); } -// static implementaion of getReferenceZoneID +// static implementation of getReferenceZoneID UnicodeString& TimeZoneNamesImpl::_getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) { ZoneMeta::getZoneIdByMetazone(mzID, UnicodeString(region, -1, US_INV), tzID); @@ -1560,7 +1560,7 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink { } virtual void put(const char *key, ResourceValue &value, UBool noFallback, - UErrorCode &status) { + UErrorCode &status) override { ResourceTable timeZonesTable = value.getTable(status); if (U_FAILURE(status)) { return; } for (int32_t i = 0; timeZonesTable.getKeyAndValue(i, key, value); ++i) { @@ -1891,7 +1891,7 @@ class TZDBNameSearchHandler : public TextTrieMapSearchResultHandler { TZDBNameSearchHandler(uint32_t types, const char* region); virtual ~TZDBNameSearchHandler(); - UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status); + UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override; TimeZoneNames::MatchInfoCollection* getMatches(int32_t& maxMatchLen); private: @@ -1901,7 +1901,7 @@ class TZDBNameSearchHandler : public TextTrieMapSearchResultHandler { const char* fRegion; }; -TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region) +TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region) : fTypes(types), fMaxMatchLen(0), fResults(NULL), fRegion(region) { } @@ -2156,13 +2156,13 @@ TZDBTimeZoneNames::TZDBTimeZoneNames(const Locale& locale) TZDBTimeZoneNames::~TZDBTimeZoneNames() { } -UBool +bool TZDBTimeZoneNames::operator==(const TimeZoneNames& other) const { if (this == &other) { - return TRUE; + return true; } // No implementation for now - return FALSE; + return false; } TZDBTimeZoneNames* diff --git a/deps/icu-small/source/i18n/tznames_impl.h b/deps/icu-small/source/i18n/tznames_impl.h index 417c0511f81f8a..d047fa3541870e 100644 --- a/deps/icu-small/source/i18n/tznames_impl.h +++ b/deps/icu-small/source/i18n/tznames_impl.h @@ -74,7 +74,7 @@ class U_I18N_API ZNStringPool: public UMemory { */ struct CharacterNode { // No constructor or destructor. - // We malloc and free an uninitalized array of CharacterNode objects + // We malloc and free an uninitialized array of CharacterNode objects // and clear and delete them ourselves. void clear(); @@ -173,24 +173,24 @@ class TimeZoneNamesImpl : public TimeZoneNames { virtual ~TimeZoneNamesImpl(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual TimeZoneNamesImpl* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual TimeZoneNamesImpl* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const; + UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const override; - TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; - void loadAllDisplayNames(UErrorCode& status); - void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const; + void loadAllDisplayNames(UErrorCode& status) override; + void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const override; static UnicodeString& getDefaultExemplarLocationName(const UnicodeString& tzID, UnicodeString& name); @@ -235,19 +235,19 @@ class TZDBTimeZoneNames : public TimeZoneNames { TZDBTimeZoneNames(const Locale& locale); virtual ~TZDBTimeZoneNames(); - virtual UBool operator==(const TimeZoneNames& other) const; - virtual TZDBTimeZoneNames* clone() const; + virtual bool operator==(const TimeZoneNames& other) const override; + virtual TZDBTimeZoneNames* clone() const override; - StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; - StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const; + StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const override; + StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const override; - UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const; - UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const; + UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const override; + UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const override; - UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const; - UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const; + UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const override; + UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const override; - TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; + TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override; // When TZDBNames for the metazone is not available, this method returns NULL, // but does NOT set U_MISSING_RESOURCE_ERROR to status. diff --git a/deps/icu-small/source/i18n/tzrule.cpp b/deps/icu-small/source/i18n/tzrule.cpp index c4bf386fd4996c..a60fffbe020295 100644 --- a/deps/icu-small/source/i18n/tzrule.cpp +++ b/deps/icu-small/source/i18n/tzrule.cpp @@ -53,7 +53,7 @@ TimeZoneRule::operator=(const TimeZoneRule& right) { return *this; } -UBool +bool TimeZoneRule::operator==(const TimeZoneRule& that) const { return ((this == &that) || (typeid(*this) == typeid(that) && @@ -62,7 +62,7 @@ TimeZoneRule::operator==(const TimeZoneRule& that) const { fDSTSavings == that.fDSTSavings)); } -UBool +bool TimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -120,14 +120,14 @@ InitialTimeZoneRule::operator=(const InitialTimeZoneRule& right) { return *this; } -UBool +bool InitialTimeZoneRule::operator==(const TimeZoneRule& that) const { return ((this == &that) || (typeid(*this) == typeid(that) && TimeZoneRule::operator==(that))); } -UBool +bool InitialTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -182,7 +182,7 @@ const int32_t AnnualTimeZoneRule::MAX_YEAR = 0x7FFFFFFF; /* max signed int32 */ AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, - int32_t dstSavings, + int32_t dstSavings, const DateTimeRule& dateTimeRule, int32_t startYear, int32_t endYear) @@ -192,7 +192,7 @@ AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, - int32_t dstSavings, + int32_t dstSavings, DateTimeRule* dateTimeRule, int32_t startYear, int32_t endYear) @@ -226,13 +226,13 @@ AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule& right) { return *this; } -UBool +bool AnnualTimeZoneRule::operator==(const TimeZoneRule& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } AnnualTimeZoneRule *atzr = (AnnualTimeZoneRule*)&that; return (*fDateTimeRule == *(atzr->fDateTimeRule) && @@ -240,7 +240,7 @@ AnnualTimeZoneRule::operator==(const TimeZoneRule& that) const { fEndYear == atzr->fEndYear); } -UBool +bool AnnualTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -440,36 +440,36 @@ TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule& right) { UErrorCode status = U_ZERO_ERROR; initStartTimes(right.fStartTimes, right.fNumStartTimes, status); //TODO - status? - fTimeRuleType = right.fTimeRuleType; + fTimeRuleType = right.fTimeRuleType; } return *this; } -UBool +bool TimeArrayTimeZoneRule::operator==(const TimeZoneRule& that) const { if (this == &that) { - return TRUE; + return true; } - if (typeid(*this) != typeid(that) || TimeZoneRule::operator==(that) == FALSE) { - return FALSE; + if (typeid(*this) != typeid(that) || !TimeZoneRule::operator==(that)) { + return false; } TimeArrayTimeZoneRule *tatzr = (TimeArrayTimeZoneRule*)&that; if (fTimeRuleType != tatzr->fTimeRuleType || fNumStartTimes != tatzr->fNumStartTimes) { - return FALSE; + return false; } // Compare start times - UBool res = TRUE; + bool res = true; for (int32_t i = 0; i < fNumStartTimes; i++) { if (fStartTimes[i] != tatzr->fStartTimes[i]) { - res = FALSE; + res = false; break; } } return res; } -UBool +bool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule& that) const { return !operator==(that); } @@ -626,3 +626,4 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ //eof + diff --git a/deps/icu-small/source/i18n/tztrans.cpp b/deps/icu-small/source/i18n/tztrans.cpp index 3199b78ea833e9..900e4be5408e1b 100644 --- a/deps/icu-small/source/i18n/tztrans.cpp +++ b/deps/icu-small/source/i18n/tztrans.cpp @@ -63,28 +63,28 @@ TimeZoneTransition::operator=(const TimeZoneTransition& right) { return *this; } -UBool +bool TimeZoneTransition::operator==(const TimeZoneTransition& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that)) { - return FALSE; + return false; } if (fTime != that.fTime) { - return FALSE; + return false; } if ((fFrom == NULL && that.fFrom == NULL) || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) { if ((fTo == NULL && that.fTo == NULL) || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) { - return TRUE; + return true; } } - return FALSE; + return false; } -UBool +bool TimeZoneTransition::operator!=(const TimeZoneTransition& that) const { return !operator==(that); } diff --git a/deps/icu-small/source/i18n/ucal.cpp b/deps/icu-small/source/i18n/ucal.cpp index 39a9508ca93443..33f72589c502c8 100644 --- a/deps/icu-small/source/i18n/ucal.cpp +++ b/deps/icu-small/source/i18n/ucal.cpp @@ -157,8 +157,8 @@ ucal_open( const UChar* zoneID, if (U_FAILURE(*status)) { return nullptr; } - - LocalPointer zone( (zoneID==nullptr) ? TimeZone::createDefault() + + LocalPointer zone( (zoneID==nullptr) ? TimeZone::createDefault() : _createTimeZone(zoneID, len, status), *status); if (U_FAILURE(*status)) { @@ -193,12 +193,12 @@ ucal_close(UCalendar *cal) } } -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_clone(const UCalendar* cal, UErrorCode* status) { if(U_FAILURE(*status)) return 0; - + Calendar* res = ((Calendar*)cal)->clone(); if(res == 0) { @@ -283,7 +283,7 @@ ucal_getTimeZoneDisplayName(const UCalendar* cal, } U_CAPI UBool U_EXPORT2 -ucal_inDaylightTime( const UCalendar* cal, +ucal_inDaylightTime( const UCalendar* cal, UErrorCode* status ) { @@ -570,7 +570,7 @@ ucal_getLimit( const UCalendar* cal, } U_CAPI const char * U_EXPORT2 -ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status) +ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status) { if (cal == nullptr) { if (U_SUCCESS(*status)) { @@ -667,7 +667,7 @@ static const UEnumeration defaultKeywordValues = { ulist_close_keyword_values_iterator, ulist_count_keyword_values, uenum_unextDefault, - ulist_next_keyword_value, + ulist_next_keyword_value, ulist_reset_keyword_values_iterator }; @@ -698,7 +698,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool // Resolve region char prefRegion[ULOC_COUNTRY_CAPACITY]; (void)ulocimp_getRegionForSupplementalData(locale, TRUE, prefRegion, sizeof(prefRegion), status); - + // Read preferred calendar values from supplementalData calendarPreference UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status); ures_getByKey(rb, "calendarPreferenceData", rb, status); @@ -768,7 +768,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool return en; } -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type, UDate* transition, UErrorCode* status) { diff --git a/deps/icu-small/source/i18n/ucln_in.cpp b/deps/icu-small/source/i18n/ucln_in.cpp index 74c8acfab13ea4..f29cbe41dde05f 100644 --- a/deps/icu-small/source/i18n/ucln_in.cpp +++ b/deps/icu-small/source/i18n/ucln_in.cpp @@ -62,3 +62,4 @@ void ucln_i18n_registerCleanup(ECleanupI18NType type, ucln_registerAutomaticCleanup(); #endif } + diff --git a/deps/icu-small/source/i18n/ucol.cpp b/deps/icu-small/source/i18n/ucol.cpp index 7d3392da223503..f59333ede3c890 100644 --- a/deps/icu-small/source/i18n/ucol.cpp +++ b/deps/icu-small/source/i18n/ucol.cpp @@ -369,7 +369,7 @@ ucol_getStrength(const UCollator *coll) return ucol_getAttribute(coll, UCOL_STRENGTH, &status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getReorderCodes(const UCollator *coll, int32_t *dest, int32_t destCapacity, @@ -381,7 +381,7 @@ ucol_getReorderCodes(const UCollator *coll, return Collator::fromUCollator(coll)->getReorderCodes(dest, destCapacity, *status); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setReorderCodes(UCollator* coll, const int32_t* reorderCodes, int32_t reorderCodesLength, @@ -393,7 +393,7 @@ ucol_setReorderCodes(UCollator* coll, Collator::fromUCollator(coll)->setReorderCodes(reorderCodes, reorderCodesLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getEquivalentReorderCodes(int32_t reorderCode, int32_t* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/ucol_res.cpp b/deps/icu-small/source/i18n/ucol_res.cpp index aa4027eb87212b..b277cf3b280a5f 100644 --- a/deps/icu-small/source/i18n/ucol_res.cpp +++ b/deps/icu-small/source/i18n/ucol_res.cpp @@ -623,7 +623,7 @@ struct KeywordsSink : public ResourceSink { virtual ~KeywordsSink(); virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/, - UErrorCode &errorCode) { + UErrorCode &errorCode) override { if (U_FAILURE(errorCode)) { return; } ResourceTable collations = value.getTable(errorCode); for (int32_t i = 0; collations.getKeyAndValue(i, key, value); ++i) { diff --git a/deps/icu-small/source/i18n/ucol_sit.cpp b/deps/icu-small/source/i18n/ucol_sit.cpp index d6bbf97b310bd3..4dc81aebcc942d 100644 --- a/deps/icu-small/source/i18n/ucol_sit.cpp +++ b/deps/icu-small/source/i18n/ucol_sit.cpp @@ -153,7 +153,7 @@ ucol_sit_letterToAttributeValue(char letter, UErrorCode *status) { *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: unknown letter %c: %s\n", __FILE__, __LINE__, letter, u_errorName(*status)); -#endif +#endif return UCOL_DEFAULT; } @@ -209,7 +209,7 @@ _processCollatorOption(CollatorSpec *spec, uint32_t option, const char* string, if((*(++string) != '_' && *string) || U_FAILURE(*status)) { #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: unknown collator option at '%s': %s\n", __FILE__, __LINE__, string, u_errorName(*status)); -#endif +#endif *status = U_ILLEGAL_ARGUMENT_ERROR; } return string; @@ -235,7 +235,7 @@ readHexCodeUnit(const char **string, UErrorCode *status) *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: Bad hex char at '%s': %s\n", __FILE__, __LINE__, *string, u_errorName(*status)); -#endif +#endif return 0; } result = (result << 4) | (UChar)value; @@ -247,7 +247,7 @@ readHexCodeUnit(const char **string, UErrorCode *status) *status = U_ILLEGAL_ARGUMENT_ERROR; #ifdef UCOL_TRACE_SIT fprintf(stderr, "%s:%d: Short (only %d digits, wanted 4) at '%s': %s\n", __FILE__, __LINE__, noDigits,*string, u_errorName(*status)); -#endif +#endif } return result; } diff --git a/deps/icu-small/source/i18n/ucoleitr.cpp b/deps/icu-small/source/i18n/ucoleitr.cpp index 6842061bab0912..596ce032956d0c 100644 --- a/deps/icu-small/source/i18n/ucoleitr.cpp +++ b/deps/icu-small/source/i18n/ucoleitr.cpp @@ -11,7 +11,7 @@ * Modification History: * * Date Name Description -* 02/15/2001 synwee Modified all methods to process its own function +* 02/15/2001 synwee Modified all methods to process its own function * instead of calling the equivalent c++ api (coleitr.h) * 2012-2014 markus Rewritten in C++ again. ******************************************************************************/ @@ -313,7 +313,7 @@ ucol_reset(UCollationElements *elems) } U_CAPI int32_t U_EXPORT2 -ucol_next(UCollationElements *elems, +ucol_next(UCollationElements *elems, UErrorCode *status) { if (U_FAILURE(*status)) { @@ -397,7 +397,7 @@ UCollationPCE::previousProcessed( // buffer raw CEs up to non-ignorable primary RCEBuffer rceb; int32_t ce; - + // **** do we need to reset rceb, or will it always be empty at this point **** do { high = cei->getOffset(); @@ -433,14 +433,14 @@ UCollationPCE::previousProcessed( finish: if (pceBuffer.isEmpty()) { // **** Is -1 the right value for ixLow, ixHigh? **** - if (ixLow != NULL) { - *ixLow = -1; - } - - if (ixHigh != NULL) { - *ixHigh = -1 - ; - } + if (ixLow != NULL) { + *ixLow = -1; + } + + if (ixHigh != NULL) { + *ixHigh = -1 + ; + } return UCOL_PROCESSED_NULLORDER; } @@ -511,19 +511,19 @@ ucol_setOffset(UCollationElements *elems, } U_CAPI int32_t U_EXPORT2 -ucol_primaryOrder (int32_t order) +ucol_primaryOrder (int32_t order) { return (order >> 16) & 0xffff; } U_CAPI int32_t U_EXPORT2 -ucol_secondaryOrder (int32_t order) +ucol_secondaryOrder (int32_t order) { return (order >> 8) & 0xff; } U_CAPI int32_t U_EXPORT2 -ucol_tertiaryOrder (int32_t order) +ucol_tertiaryOrder (int32_t order) { return order & 0xff; } diff --git a/deps/icu-small/source/i18n/udat.cpp b/deps/icu-small/source/i18n/udat.cpp index 016805aab66fdd..d9549d04c57994 100644 --- a/deps/icu-small/source/i18n/udat.cpp +++ b/deps/icu-small/source/i18n/udat.cpp @@ -34,7 +34,7 @@ U_NAMESPACE_USE /** * Verify that fmt is a SimpleDateFormat. Invalid error if not. * @param fmt the UDateFormat, definitely a DateFormat, maybe something else - * @param status error code, will be set to failure if there is a familure or the fmt is NULL. + * @param status error code, will be set to failure if there is a failure or the fmt is NULL. */ static void verifyIsSimpleDateFormat(const UDateFormat* fmt, UErrorCode *status) { if(U_SUCCESS(*status) && @@ -425,8 +425,8 @@ udat_setLenient( UDateFormat* fmt, } U_CAPI UBool U_EXPORT2 -udat_getBooleanAttribute(const UDateFormat* fmt, - UDateFormatBooleanAttribute attr, +udat_getBooleanAttribute(const UDateFormat* fmt, + UDateFormatBooleanAttribute attr, UErrorCode* status) { if(U_FAILURE(*status)) return FALSE; @@ -435,9 +435,9 @@ udat_getBooleanAttribute(const UDateFormat* fmt, } U_CAPI void U_EXPORT2 -udat_setBooleanAttribute(UDateFormat *fmt, - UDateFormatBooleanAttribute attr, - UBool newValue, +udat_setBooleanAttribute(UDateFormat *fmt, + UDateFormatBooleanAttribute attr, + UBool newValue, UErrorCode* status) { if(U_FAILURE(*status)) return; @@ -457,7 +457,7 @@ udat_setCalendar(UDateFormat* fmt, ((DateFormat*)fmt)->setCalendar(*((Calendar*)calendarToSet)); } -U_CAPI const UNumberFormat* U_EXPORT2 +U_CAPI const UNumberFormat* U_EXPORT2 udat_getNumberFormatForField(const UDateFormat* fmt, UChar field) { UErrorCode status = U_ZERO_ERROR; @@ -472,7 +472,7 @@ udat_getNumberFormat(const UDateFormat* fmt) return (const UNumberFormat*) ((DateFormat*)fmt)->getNumberFormat(); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 udat_adoptNumberFormatForFields( UDateFormat* fmt, const UChar* fields, UNumberFormat* numberFormatToSet, @@ -480,7 +480,7 @@ udat_adoptNumberFormatForFields( UDateFormat* fmt, { verifyIsSimpleDateFormat(fmt, status); if (U_FAILURE(*status)) return; - + if (fields!=NULL) { UnicodeString overrideFields(fields); ((SimpleDateFormat*)fmt)->adoptNumberFormat(overrideFields, (NumberFormat*)numberFormatToSet, *status); @@ -587,7 +587,7 @@ udat_applyPattern( UDateFormat *format, if(U_FAILURE(status)) { return; } - + if(localized) ((SimpleDateFormat*)format)->applyLocalizedPattern(pat, status); else @@ -704,6 +704,10 @@ udat_getSymbols(const UDateFormat *fmt, res = syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED); break; + case UDAT_NARROW_QUARTERS: + res = syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::NARROW); + break; + case UDAT_STANDALONE_QUARTERS: res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE); break; @@ -712,6 +716,10 @@ udat_getSymbols(const UDateFormat *fmt, res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + res = syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::NARROW); + break; + case UDAT_CYCLIC_YEARS_WIDE: res = syms->getYearNames(count, DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE); break; @@ -842,6 +850,10 @@ udat_countSymbols( const UDateFormat *fmt, syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED); break; + case UDAT_NARROW_QUARTERS: + syms->getQuarters(count, DateFormatSymbols::FORMAT, DateFormatSymbols::NARROW); + break; + case UDAT_STANDALONE_QUARTERS: syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE); break; @@ -850,6 +862,10 @@ udat_countSymbols( const UDateFormat *fmt, syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + syms->getQuarters(count, DateFormatSymbols::STANDALONE, DateFormatSymbols::NARROW); + break; + case UDAT_CYCLIC_YEARS_WIDE: syms->getYearNames(count, DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE); break; @@ -1048,6 +1064,13 @@ class DateFormatSymbolsSingleSetter /* not : public UObject because all methods setSymbol(syms->fShortQuarters, syms->fShortQuartersCount, index, value, valueLength, errorCode); } + static void + setNarrowQuarter(DateFormatSymbols *syms, int32_t index, + const UChar *value, int32_t valueLength, UErrorCode &errorCode) + { + setSymbol(syms->fNarrowQuarters, syms->fNarrowQuartersCount, index, value, valueLength, errorCode); + } + static void setStandaloneQuarter(DateFormatSymbols *syms, int32_t index, const UChar *value, int32_t valueLength, UErrorCode &errorCode) @@ -1062,6 +1085,13 @@ class DateFormatSymbolsSingleSetter /* not : public UObject because all methods setSymbol(syms->fStandaloneShortQuarters, syms->fStandaloneShortQuartersCount, index, value, valueLength, errorCode); } + static void + setStandaloneNarrowQuarter(DateFormatSymbols *syms, int32_t index, + const UChar *value, int32_t valueLength, UErrorCode &errorCode) + { + setSymbol(syms->fStandaloneNarrowQuarters, syms->fStandaloneNarrowQuartersCount, index, value, valueLength, errorCode); + } + static void setShortYearNames(DateFormatSymbols *syms, int32_t index, const UChar *value, int32_t valueLength, UErrorCode &errorCode) @@ -1179,6 +1209,10 @@ udat_setSymbols( UDateFormat *format, DateFormatSymbolsSingleSetter::setShortQuarter(syms, index, value, valueLength, *status); break; + case UDAT_NARROW_QUARTERS: + DateFormatSymbolsSingleSetter::setNarrowQuarter(syms, index, value, valueLength, *status); + break; + case UDAT_STANDALONE_QUARTERS: DateFormatSymbolsSingleSetter::setStandaloneQuarter(syms, index, value, valueLength, *status); break; @@ -1187,6 +1221,10 @@ udat_setSymbols( UDateFormat *format, DateFormatSymbolsSingleSetter::setStandaloneShortQuarter(syms, index, value, valueLength, *status); break; + case UDAT_STANDALONE_NARROW_QUARTERS: + DateFormatSymbolsSingleSetter::setStandaloneNarrowQuarter(syms, index, value, valueLength, *status); + break; + case UDAT_CYCLIC_YEARS_ABBREVIATED: DateFormatSymbolsSingleSetter::setShortYearNames(syms, index, value, valueLength, *status); break; @@ -1206,7 +1244,7 @@ udat_setSymbols( UDateFormat *format, default: *status = U_UNSUPPORTED_ERROR; break; - + } } @@ -1247,7 +1285,7 @@ udat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* st /** * Verify that fmt is a RelativeDateFormat. Invalid error if not. * @param fmt the UDateFormat, definitely a DateFormat, maybe something else - * @param status error code, will be set to failure if there is a familure or the fmt is NULL. + * @param status error code, will be set to failure if there is a failure or the fmt is NULL. */ static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *status) { if(U_SUCCESS(*status) && @@ -1257,7 +1295,7 @@ static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *statu } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 udat_toPatternRelativeDate(const UDateFormat *fmt, UChar *result, int32_t resultLength, @@ -1282,7 +1320,7 @@ udat_toPatternRelativeDate(const UDateFormat *fmt, return datePattern.extract(result, resultLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 udat_toPatternRelativeTime(const UDateFormat *fmt, UChar *result, int32_t resultLength, @@ -1307,7 +1345,7 @@ udat_toPatternRelativeTime(const UDateFormat *fmt, return timePattern.extract(result, resultLength, *status); } -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 udat_applyPatternRelative(UDateFormat *format, const UChar *datePattern, int32_t datePatternLength, diff --git a/deps/icu-small/source/i18n/uitercollationiterator.h b/deps/icu-small/source/i18n/uitercollationiterator.h index 3a7b1a0ec23b47..e0da353f268ba9 100644 --- a/deps/icu-small/source/i18n/uitercollationiterator.h +++ b/deps/icu-small/source/i18n/uitercollationiterator.h @@ -39,22 +39,22 @@ class U_I18N_API UIterCollationIterator : public CollationIterator { virtual ~UIterCollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; UCharIterator &iter; }; @@ -71,22 +71,23 @@ class U_I18N_API FCDUIterCollationIterator : public UIterCollationIterator { virtual ~FCDUIterCollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; + + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; private: /** diff --git a/deps/icu-small/source/i18n/ulocdata.cpp b/deps/icu-small/source/i18n/ulocdata.cpp index 3046167b328db8..68b9e0cf6344cf 100644 --- a/deps/icu-small/source/i18n/ulocdata.cpp +++ b/deps/icu-small/source/i18n/ulocdata.cpp @@ -104,8 +104,8 @@ U_CAPI USet* U_EXPORT2 ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn, uint32_t options, ULocaleDataExemplarSetType extype, UErrorCode *status){ - static const char* const exemplarSetTypes[] = { "ExemplarCharacters", - "AuxExemplarCharacters", + static const char* const exemplarSetTypes[] = { "ExemplarCharacters", + "AuxExemplarCharacters", "ExemplarCharactersIndex", "ExemplarCharactersPunctuation"}; const UChar *exemplarChars = NULL; @@ -195,15 +195,15 @@ static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, co char region[ULOC_COUNTRY_CAPACITY]; UResourceBundle *rb; UResourceBundle *measTypeBundle = NULL; - + ulocimp_getRegionForSupplementalData(localeID, TRUE, region, ULOC_COUNTRY_CAPACITY, status); - + rb = ures_openDirect(NULL, "supplementalData", status); ures_getByKey(rb, "measurementData", rb, status); if (rb != NULL) { UResourceBundle *measDataBundle = ures_getByKey(rb, region, NULL, status); if (U_SUCCESS(*status)) { - measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status); + measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status); } if (*status == U_MISSING_RESOURCE_ERROR) { *status = U_ZERO_ERROR; diff --git a/deps/icu-small/source/i18n/umsg.cpp b/deps/icu-small/source/i18n/umsg.cpp index 2aae3a4d4393e3..c2d5a9a1f5a757 100644 --- a/deps/icu-small/source/i18n/umsg.cpp +++ b/deps/icu-small/source/i18n/umsg.cpp @@ -18,7 +18,7 @@ * * 08/5/2001 Ram Added C wrappers for C++ API. Changed implementation of old API's * Removed pattern parser. -* +* */ #include "unicode/utypes.h" @@ -67,8 +67,8 @@ u_formatMessage(const char *locale, ...) { va_list ap; - int32_t actLen; - //argument checking defered to subsequent method calls + int32_t actLen; + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -89,7 +89,7 @@ u_vformatMessage( const char *locale, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status); int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status); umsg_close(fmt); @@ -108,7 +108,7 @@ u_formatMessageWithError(const char *locale, { va_list ap; int32_t actLen; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -130,7 +130,7 @@ u_vformatMessageWithError( const char *locale, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,parseError,status); int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status); umsg_close(fmt); @@ -152,7 +152,7 @@ u_parseMessage( const char *locale, ...) { va_list ap; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -171,7 +171,7 @@ u_vparseMessage(const char *locale, va_list ap, UErrorCode *status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status); int32_t count = 0; umsg_vparse(fmt,source,sourceLength,&count,ap,status); @@ -190,7 +190,7 @@ u_parseMessageWithError(const char *locale, { va_list ap; - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls // start vararg processing va_start(ap, status); @@ -209,7 +209,7 @@ u_vparseMessageWithError(const char *locale, UParseError *error, UErrorCode* status) { - //argument checking defered to subsequent method calls + //argument checking deferred to subsequent method calls UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,error,status); int32_t count = 0; umsg_vparse(fmt,source,sourceLength,&count,ap,status); @@ -286,7 +286,7 @@ umsg_clone(const UMessageFormat *fmt, *status = U_MEMORY_ALLOCATION_ERROR; return 0; } - return retVal; + return retVal; } U_CAPI void U_EXPORT2 @@ -296,7 +296,7 @@ umsg_setLocale(UMessageFormat *fmt, const char* locale) if(fmt==NULL){ return; } - ((MessageFormat*)fmt)->setLocale(Locale(locale)); + ((MessageFormat*)fmt)->setLocale(Locale(locale)); } U_CAPI const char* U_EXPORT2 @@ -331,12 +331,12 @@ umsg_applyPattern(UMessageFormat *fmt, } // UnicodeString(pattern, -1) calls u_strlen(). - ((MessageFormat*)fmt)->applyPattern(UnicodeString(pattern,patternLength),*parseError,*status); + ((MessageFormat*)fmt)->applyPattern(UnicodeString(pattern,patternLength),*parseError,*status); } U_CAPI int32_t U_EXPORT2 umsg_toPattern(const UMessageFormat *fmt, - UChar* result, + UChar* result, int32_t resultLength, UErrorCode* status) { @@ -368,12 +368,12 @@ umsg_format( const UMessageFormat *fmt, ...) { va_list ap; - int32_t actLen; - //argument checking defered to last method call umsg_vformat which - //saves time when arguments are valid and we dont care when arguments are not + int32_t actLen; + //argument checking deferred to last method call umsg_vformat which + //saves time when arguments are valid and we don't care when arguments are not //since we return an error anyway - + // start vararg processing va_start(ap, status); @@ -411,7 +411,7 @@ umsg_vformat( const UMessageFormat *fmt, // iterate through the vararg list, and get the arguments out for(int32_t i = 0; i < count; ++i) { - + UChar *stringVal; double tDouble=0; int32_t tInt =0; @@ -422,12 +422,12 @@ umsg_vformat( const UMessageFormat *fmt, tempDate = va_arg(ap, UDate); args[i].setDate(tempDate); break; - + case Formattable::kDouble: tDouble =va_arg(ap, double); args[i].setDouble(tDouble); break; - + case Formattable::kLong: tInt = va_arg(ap, int32_t); args[i].setLong(tInt); @@ -437,7 +437,7 @@ umsg_vformat( const UMessageFormat *fmt, tInt64 = va_arg(ap, int64_t); args[i].setInt64(tInt64); break; - + case Formattable::kString: // For some reason, a temporary is needed stringVal = va_arg(ap, UChar*); @@ -447,7 +447,7 @@ umsg_vformat( const UMessageFormat *fmt, *status=U_ILLEGAL_ARGUMENT_ERROR; } break; - + case Formattable::kArray: // throw away this argument // this is highly platform-dependent, and probably won't work @@ -463,12 +463,12 @@ umsg_vformat( const UMessageFormat *fmt, default: // Unknown/unsupported argument type. - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } UnicodeString resultStr; FieldPosition fieldPosition(FieldPosition::DONT_CARE); - + /* format the message */ ((const MessageFormat*)fmt)->format(args,count,resultStr,fieldPosition,*status); @@ -490,8 +490,8 @@ umsg_parse( const UMessageFormat *fmt, ...) { va_list ap; - //argument checking defered to last method call umsg_vparse which - //saves time when arguments are valid and we dont care when arguments are not + //argument checking deferred to last method call umsg_vparse which + //saves time when arguments are valid and we don't care when arguments are not //since we return an error anyway // start vararg processing @@ -590,11 +590,11 @@ umsg_vparse(const UMessageFormat *fmt, // support kObject. When MessageFormat is changed to // understand MeasureFormats, modify this code to do the // right thing. [alan] - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; // better not happen! case Formattable::kArray: - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } } @@ -613,7 +613,7 @@ umsg_vparse(const UMessageFormat *fmt, #define MAppend(c) if (len < destCapacity) dest[len++] = c; else len++ -int32_t umsg_autoQuoteApostrophe(const UChar* pattern, +int32_t umsg_autoQuoteApostrophe(const UChar* pattern, int32_t patternLength, UChar* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/unesctrn.cpp b/deps/icu-small/source/i18n/unesctrn.cpp index 604cb0a4ba007f..0636fe1d149b60 100644 --- a/deps/icu-small/source/i18n/unesctrn.cpp +++ b/deps/icu-small/source/i18n/unesctrn.cpp @@ -85,9 +85,9 @@ static UChar* copySpec(const UChar* spec) { } ++len; UChar *result = (UChar *)uprv_malloc(len*sizeof(UChar)); - // Check for memory allocation error. + // Check for memory allocation error. if (result != NULL) { - uprv_memcpy(result, spec, (size_t)len*sizeof(result[0])); + uprv_memcpy(result, spec, (size_t)len*sizeof(result[0])); } return result; } diff --git a/deps/icu-small/source/i18n/unesctrn.h b/deps/icu-small/source/i18n/unesctrn.h index 57dd8d32cf53f3..e905c5bc5f5c6c 100644 --- a/deps/icu-small/source/i18n/unesctrn.h +++ b/deps/icu-small/source/i18n/unesctrn.h @@ -77,12 +77,12 @@ class UnescapeTransliterator : public Transliterator { /** * Transliterator API. */ - virtual UnescapeTransliterator* clone() const; + virtual UnescapeTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -101,7 +101,7 @@ class UnescapeTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; }; diff --git a/deps/icu-small/source/i18n/uni2name.cpp b/deps/icu-small/source/i18n/uni2name.cpp index 729a1e5fa82a62..904da0207bc239 100644 --- a/deps/icu-small/source/i18n/uni2name.cpp +++ b/deps/icu-small/source/i18n/uni2name.cpp @@ -87,7 +87,7 @@ void UnicodeNameTransliterator::handleTransliterate(Replaceable& text, UTransPos offsets.start = offsets.limit; return; } - + int32_t cursor = offsets.start; int32_t limit = offsets.limit; diff --git a/deps/icu-small/source/i18n/uni2name.h b/deps/icu-small/source/i18n/uni2name.h index 99309c8e0f8785..1e01d784237a67 100644 --- a/deps/icu-small/source/i18n/uni2name.h +++ b/deps/icu-small/source/i18n/uni2name.h @@ -48,12 +48,12 @@ class UnicodeNameTransliterator : public Transliterator { /** * Transliterator API. */ - virtual UnicodeNameTransliterator* clone() const; + virtual UnicodeNameTransliterator* clone() const override; /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -72,7 +72,7 @@ class UnicodeNameTransliterator : public Transliterator { * pos.contextLimit. Otherwise, assume the text is complete. */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, - UBool isIncremental) const; + UBool isIncremental) const override; private: /** diff --git a/deps/icu-small/source/i18n/unicode/alphaindex.h b/deps/icu-small/source/i18n/unicode/alphaindex.h index d72abce9acd3ec..d0cdd817fba64e 100644 --- a/deps/icu-small/source/i18n/unicode/alphaindex.h +++ b/deps/icu-small/source/i18n/unicode/alphaindex.h @@ -44,7 +44,7 @@ typedef enum UAlphabeticIndexLabelType { U_ALPHAINDEX_NORMAL = 0, /** - * Undeflow Label. The bucket with this label contains names + * Underflow Label. The bucket with this label contains names * in scripts that sort before any of the bucket labels in this index. * @stable ICU 4.8 */ @@ -61,7 +61,7 @@ typedef enum UAlphabeticIndexLabelType { U_ALPHAINDEX_INFLOW = 2, /** - * Overflow Label. Te bucket with this label contains names in scripts + * Overflow Label. The bucket with this label contains names in scripts * that sort after all of the bucket labels in this index. * @stable ICU 4.8 */ @@ -87,7 +87,7 @@ class UVector; * AlphabeticIndex supports the creation of a UI index appropriate for a given language. * It can support either direct use, or use with a client that doesn't support localized collation. * The following is an example of what an index might look like in a UI: - * + * *
        *  ... A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  ...
        *
      @@ -309,17 +309,17 @@ class U_I18N_API AlphabeticIndex: public UObject {
            */
            AlphabeticIndex(const Locale &locale, UErrorCode &status);
       
      -   /**
      +   /** 
            * Construct an AlphabeticIndex that uses a specific collator.
      -     *
      +     * 
            * The index will be created with no labels; the addLabels() function must be called
            * after creation to add the desired labels to the index.
      -     *
      -     * The index adopts the collator, and is responsible for deleting it.
      +     * 
      +     * The index adopts the collator, and is responsible for deleting it. 
            * The caller should make no further use of the collator after creating the index.
      -     *
      +     * 
            * @param collator The collator to use to order the contents of this index.
      -     * @param status Error code, will be set with the reason if the
      +     * @param status Error code, will be set with the reason if the 
            *               operation fails.
            * @stable ICU 51
            */
      @@ -330,7 +330,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
            * that are already in the index; they do not replace the existing
            * ones.
            * @param additions The additional characters to add to the index, such as A-Z.
      -     * @param status Error code, will be set with the reason if the
      +     * @param status Error code, will be set with the reason if the 
            *               operation fails.
            * @return this, for chaining
            * @stable ICU 4.8
      @@ -345,7 +345,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
            * when creating this Index.
            *
            * @param locale The locale whose index characters are to be added.
      -     * @param status Error code, will be set with the reason if the
      +     * @param status Error code, will be set with the reason if the 
            *               operation fails.
            * @return this, for chaining
            * @stable ICU 4.8
      @@ -647,7 +647,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
       private:
            /**
             * No Copy constructor.
      -      * @internal
      +      * @internal (private)
             */
            AlphabeticIndex(const AlphabeticIndex &other);
       
      @@ -658,15 +658,15 @@ class U_I18N_API AlphabeticIndex: public UObject {
       
           /**
            * No Equality operators.
      -     * @internal
      +     * @internal (private)
            */
      -     virtual UBool operator==(const AlphabeticIndex& other) const;
      +     virtual bool operator==(const AlphabeticIndex& other) const;
       
           /**
            * Inequality operator.
      -     * @internal
      +     * @internal (private)
            */
      -     virtual UBool operator!=(const AlphabeticIndex& other) const;
      +     virtual bool operator!=(const AlphabeticIndex& other) const;
       
            // Common initialization, for use from all constructors.
            void init(const Locale *locale, UErrorCode &status);
      @@ -723,7 +723,7 @@ class U_I18N_API AlphabeticIndex: public UObject {
           /**
            * Holds all user records before they are distributed into buckets.
            * Type of contents is (Record *)
      -     * @internal
      +     * @internal (private)
            */
           UVector  *inputList_;
       
      diff --git a/deps/icu-small/source/i18n/unicode/basictz.h b/deps/icu-small/source/i18n/unicode/basictz.h
      index ea8720ed13cf41..250ea309279aa7 100644
      --- a/deps/icu-small/source/i18n/unicode/basictz.h
      +++ b/deps/icu-small/source/i18n/unicode/basictz.h
      @@ -10,7 +10,7 @@
       #define BASICTZ_H
       
       /**
      - * \file
      + * \file 
        * \brief C++ API: ICU TimeZone base class
        */
       
      @@ -49,7 +49,7 @@ class U_I18N_API BasicTimeZone: public TimeZone {
            * @return clone, or nullptr if an error occurred
            * @stable ICU 3.8
            */
      -    virtual BasicTimeZone* clone() const = 0;
      +    virtual BasicTimeZone* clone() const override = 0;
       
           /**
            * Gets the first time zone transition after the base time.
      @@ -84,7 +84,7 @@ class U_I18N_API BasicTimeZone: public TimeZone {
            *              changes will be ignored, except either of them is zero.
            *              For example, a transition from rawoffset 3:00/dstsavings 1:00
            *              to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison,
      -     *              but a transtion from rawoffset 2:00/dstsavings 1:00 to
      +     *              but a transition from rawoffset 2:00/dstsavings 1:00 to
            *              rawoffset 3:00/dstsavings 0:00 is included.
            * @param ec    Output param to filled in with a success or an error.
            * @return      true if the other time zone has the equivalent transitions in the
      @@ -226,8 +226,11 @@ class U_I18N_API BasicTimeZone: public TimeZone {
           /**
            * Gets the set of TimeZoneRule instances applicable to the specified time and after.
            * @param start     The start date used for extracting time zone rules
      -     * @param initial   Receives the InitialTimeZone, always not NULL
      -     * @param transitionRules   Receives the transition rules, could be NULL
      +     * @param initial   Output parameter, receives the InitialTimeZone.
      +     *                  Always not nullptr (except in case of error)
      +     * @param transitionRules   Output parameter, a UVector of transition rules.
      +     *                  May be nullptr, if there are no transition rules.
      +     *                  The caller owns the returned vector; the UVector owns the rules.
            * @param status    Receives error status code
            */
           void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
      diff --git a/deps/icu-small/source/i18n/unicode/calendar.h b/deps/icu-small/source/i18n/unicode/calendar.h
      index be774ab26fb619..c1bdf9282038b1 100644
      --- a/deps/icu-small/source/i18n/unicode/calendar.h
      +++ b/deps/icu-small/source/i18n/unicode/calendar.h
      @@ -449,21 +449,21 @@ class U_I18N_API Calendar : public UObject {
            * represented time, use equals() instead.
            *
            * @param that  The Calendar object to be compared with.
      -     * @return      True if the given Calendar is the same as this Calendar; false
      +     * @return      true if the given Calendar is the same as this Calendar; false
            *              otherwise.
            * @stable ICU 2.0
            */
      -    virtual UBool operator==(const Calendar& that) const;
      +    virtual bool operator==(const Calendar& that) const;
       
           /**
            * Compares the inequality of two Calendar objects.
            *
            * @param that  The Calendar object to be compared with.
      -     * @return      True if the given Calendar is not the same as this Calendar; false
      +     * @return      true if the given Calendar is not the same as this Calendar; false
            *              otherwise.
            * @stable ICU 2.0
            */
      -    UBool operator!=(const Calendar& that) const {return !operator==(that);}
      +    bool operator!=(const Calendar& that) const {return !operator==(that);}
       
           /**
            * Returns true if the given Calendar object is equivalent to this
      @@ -1341,7 +1341,7 @@ class U_I18N_API Calendar : public UObject {
            *           same class ID. Objects of other classes have different class IDs.
            * @stable ICU 2.0
            */
      -    virtual UClassID getDynamicClassID(void) const = 0;
      +    virtual UClassID getDynamicClassID(void) const override = 0;
       
           /**
            * Returns the calendar type name string for this Calendar object.
      diff --git a/deps/icu-small/source/i18n/unicode/choicfmt.h b/deps/icu-small/source/i18n/unicode/choicfmt.h
      index cb01fca253355d..0e7ae186d4d670 100644
      --- a/deps/icu-small/source/i18n/unicode/choicfmt.h
      +++ b/deps/icu-small/source/i18n/unicode/choicfmt.h
      @@ -251,7 +251,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            * @return a copy of this object
            * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
            */
      -    virtual ChoiceFormat* clone() const;
      +    virtual ChoiceFormat* clone() const override;
       
           /**
            * Returns true if the given Format objects are semantically equal.
      @@ -261,7 +261,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            * @return         true if other is the same as this.
            * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
            */
      -    virtual UBool operator==(const Format& other) const;
      +    virtual bool operator==(const Format& other) const override;
       
           /**
            * Sets the pattern.
      @@ -375,7 +375,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            */
           virtual UnicodeString& format(double number,
                                         UnicodeString& appendTo,
      -                                  FieldPosition& pos) const;
      +                                  FieldPosition& pos) const override;
           /**
            * Formats an int32_t number using this object's choices.
            *
      @@ -389,7 +389,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            */
           virtual UnicodeString& format(int32_t number,
                                         UnicodeString& appendTo,
      -                                  FieldPosition& pos) const;
      +                                  FieldPosition& pos) const override;
       
           /**
            * Formats an int64_t number using this object's choices.
      @@ -404,7 +404,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            */
           virtual UnicodeString& format(int64_t number,
                                         UnicodeString& appendTo,
      -                                  FieldPosition& pos) const;
      +                                  FieldPosition& pos) const override;
       
           /**
            * Formats an array of objects using this object's choices.
      @@ -444,7 +444,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
           */
           virtual void parse(const UnicodeString& text,
                              Formattable& result,
      -                       ParsePosition& parsePosition) const;
      +                       ParsePosition& parsePosition) const override;
       
           /**
            * Returns a unique class ID POLYMORPHICALLY. Part of ICU's "poor man's RTTI".
      @@ -454,7 +454,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
            *                  other classes have different class IDs.
            * @deprecated ICU 49 Use MessageFormat instead, with plural and select arguments.
            */
      -    virtual UClassID getDynamicClassID(void) const;
      +    virtual UClassID getDynamicClassID(void) const override;
       
           /**
            * Returns the class ID for this class.  This is useful only for
      @@ -528,7 +528,7 @@ class U_I18N_API ChoiceFormat: public NumberFormat {
                   const UnicodeString &source, int32_t sourceOffset);
       
           /**
      -     * Some of the ChoiceFormat constructors do not have a UErrorCode paramater.
      +     * Some of the ChoiceFormat constructors do not have a UErrorCode parameter.
            * We need _some_ way to provide one for the MessagePattern constructor.
            * Alternatively, the MessagePattern could be a pointer field, but that is
            * not nice either.
      diff --git a/deps/icu-small/source/i18n/unicode/coleitr.h b/deps/icu-small/source/i18n/unicode/coleitr.h
      index 2696b588278cde..4e68c6f1749a8a 100644
      --- a/deps/icu-small/source/i18n/unicode/coleitr.h
      +++ b/deps/icu-small/source/i18n/unicode/coleitr.h
      @@ -8,7 +8,7 @@
        */
       
       /**
      - * \file
      + * \file 
        * \brief C++ API: Collation Element Iterator.
        */
       
      @@ -25,7 +25,7 @@
       * 08/03/98    erm         Synched with 1.2 version CollationElementIterator.java
       * 12/10/99    aliu        Ported Thai collation support from Java.
       * 01/25/01    swquek      Modified into a C++ wrapper calling C APIs (ucoliter.h)
      -* 02/19/01    swquek      Removed CollationElementsIterator() since it is
      +* 02/19/01    swquek      Removed CollationElementsIterator() since it is 
       *                         private constructor and no calls are made to it
       * 2012-2014   markus      Rewritten in C++ again.
       */
      @@ -56,10 +56,10 @@ class UCollationPCE;
       class UVector32;
       
       /**
      -* The CollationElementIterator class is used as an iterator to walk through
      +* The CollationElementIterator class is used as an iterator to walk through     
       * each character of an international string. Use the iterator to return the
      -* ordering priority of the positioned character. The ordering priority of a
      -* character, which we refer to as a key, defines how a character is collated in
      +* ordering priority of the positioned character. The ordering priority of a 
      +* character, which we refer to as a key, defines how a character is collated in 
       * the given collation object.
       * For example, consider the following in Slovak and in traditional Spanish collation:
       * 
      @@ -69,9 +69,9 @@ class UVector32;
       * 
       \htmlonly       "æb"-> the first key is key('a'), the second key is key('e'), and
       *        the third key is key('b'). \endhtmlonly 
      * The key of a character, is an integer composed of primary order(short), -* secondary order(char), and tertiary order(char). Java strictly defines the +* secondary order(char), and tertiary order(char). Java strictly defines the * size and signedness of its primitive data types. Therefore, the static -* functions primaryOrder(), secondaryOrder(), and tertiaryOrder() return +* functions primaryOrder(), secondaryOrder(), and tertiaryOrder() return * int32_t to ensure the correctness of the key value. *

      Example of the iterator usage: (without error checking) *

      @@ -97,21 +97,21 @@ class UVector32;
       * the comparison level of the collator. The method previous() returns the
       * collation order of the previous character based on the comparison level of
       * the collator. The Collation Element Iterator moves only in one direction
      -* between calls to reset(), setOffset(), or setText(). That is, next()
      -* and previous() can not be inter-used. Whenever previous() is to be called after
      +* between calls to reset(), setOffset(), or setText(). That is, next() 
      +* and previous() can not be inter-used. Whenever previous() is to be called after 
       * next() or vice versa, reset(), setOffset() or setText() has to be called first
       * to reset the status, shifting pointers to either the end or the start of
       * the string (reset() or setText()), or the specified position (setOffset()).
       * Hence at the next call of next() or previous(), the first or last collation order,
      -* or collation order at the spefcifieid position will be returned. If a change of
      +* or collation order at the specified position will be returned. If a change of
       * direction is done without one of these calls, the result is undefined.
       * 

      * The result of a forward iterate (next()) and reversed result of the backward * iterate (previous()) on the same string are equivalent, if collation orders * with the value 0 are ignored. -* Character based on the comparison level of the collator. A collation order -* consists of primary order, secondary order and tertiary order. The data -* type of the collation order is int32_t. +* Character based on the comparison level of the collator. A collation order +* consists of primary order, secondary order and tertiary order. The data +* type of the collation order is int32_t. * * Note, CollationElementIterator should not be subclassed. * @see Collator @@ -119,13 +119,13 @@ class UVector32; * @version 1.8 Jan 16 2001 */ class U_I18N_API CollationElementIterator U_FINAL : public UObject { -public: +public: // CollationElementIterator public data member ------------------------------ enum { /** - * NULLORDER indicates that an error has occured while processing + * NULLORDER indicates that an error has occurred while processing * @stable ICU 2.0 */ NULLORDER = (int32_t)0xffffffff @@ -141,7 +141,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { */ CollationElementIterator(const CollationElementIterator& other); - /** + /** * Destructor * @stable ICU 2.0 */ @@ -156,7 +156,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * @return true if "other" is the same as "this" * @stable ICU 2.0 */ - UBool operator==(const CollationElementIterator& other) const; + bool operator==(const CollationElementIterator& other) const; /** * Returns true if "other" is not the same as "this". @@ -165,7 +165,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * @return true if "other" is not the same as "this" * @stable ICU 2.0 */ - UBool operator!=(const CollationElementIterator& other) const; + bool operator!=(const CollationElementIterator& other) const; /** * Resets the cursor to the beginning of the string. @@ -176,8 +176,8 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { /** * Gets the ordering priority of the next character in the string. * @param status the error code status. - * @return the next character's ordering. otherwise returns NULLORDER if an - * error has occured or if the end of string has been reached + * @return the next character's ordering. otherwise returns NULLORDER if an + * error has occurred or if the end of string has been reached * @stable ICU 2.0 */ int32_t next(UErrorCode& status); @@ -185,8 +185,8 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { /** * Get the ordering priority of the previous collation element in the string. * @param status the error code status. - * @return the previous element's ordering. otherwise returns NULLORDER if an - * error has occured or if the start of string has been reached + * @return the previous element's ordering. otherwise returns NULLORDER if an + * error has occurred or if the start of string has been reached * @stable ICU 2.0 */ int32_t previous(UErrorCode& status); @@ -216,11 +216,11 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { static inline int32_t tertiaryOrder(int32_t order); /** - * Return the maximum length of any expansion sequences that end with the + * Return the maximum length of any expansion sequences that end with the * specified comparison order. * @param order a collation order returned by previous or next. - * @return maximum size of the expansion sequences ending with the collation - * element or 1 if collation element does not occur at the end of any + * @return maximum size of the expansion sequences ending with the collation + * element or 1 if collation element does not occur at the end of any * expansion sequence * @stable ICU 2.0 */ @@ -279,7 +279,7 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -312,9 +312,9 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { friend class UCollationPCE; /** - * CollationElementIterator constructor. This takes the source string and the - * collation object. The cursor will walk thru the source string based on the - * predefined collation rules. If the source string is empty, NULLORDER will + * CollationElementIterator constructor. This takes the source string and the + * collation object. The cursor will walk thru the source string based on the + * predefined collation rules. If the source string is empty, NULLORDER will * be returned on the calls to next(). * @param sourceText the source string. * @param order the collation object. @@ -332,9 +332,9 @@ class U_I18N_API CollationElementIterator U_FINAL : public UObject { // but only contain the part of RBC== related to data and rules. /** - * CollationElementIterator constructor. This takes the source string and the - * collation object. The cursor will walk thru the source string based on the - * predefined collation rules. If the source string is empty, NULLORDER will + * CollationElementIterator constructor. This takes the source string and the + * collation object. The cursor will walk thru the source string based on the + * predefined collation rules. If the source string is empty, NULLORDER will * be returned on the calls to next(). * @param sourceText the source string. * @param order the collation object. diff --git a/deps/icu-small/source/i18n/unicode/coll.h b/deps/icu-small/source/i18n/unicode/coll.h index c750711fc158cf..9e0050ba6ce73e 100644 --- a/deps/icu-small/source/i18n/unicode/coll.h +++ b/deps/icu-small/source/i18n/unicode/coll.h @@ -253,7 +253,7 @@ class U_I18N_API Collator : public UObject { * @return true if other is the same as this. * @stable ICU 2.0 */ - virtual UBool operator==(const Collator& other) const; + virtual bool operator==(const Collator& other) const; /** * Returns true if "other" is not the same as "this". @@ -262,7 +262,7 @@ class U_I18N_API Collator : public UObject { * @return true if other is not the same as this. * @stable ICU 2.0 */ - virtual UBool operator!=(const Collator& other) const; + virtual bool operator!=(const Collator& other) const; /** * Makes a copy of this object. @@ -864,7 +864,7 @@ class U_I18N_API Collator : public UObject { * IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; + virtual UClassID getDynamicClassID(void) const override = 0; /** * Universal attribute setter @@ -1094,7 +1094,7 @@ class U_I18N_API Collator : public UObject { /** * Default constructor. * Constructor is different from the old default Collator constructor. - * The task for determing the default collation strength and normalization + * The task for determining the default collation strength and normalization * mode is left to the child class. * @stable ICU 2.0 */ diff --git a/deps/icu-small/source/i18n/unicode/curramt.h b/deps/icu-small/source/i18n/unicode/curramt.h index 9c8496381d7aa3..818b11ae5bd8e5 100644 --- a/deps/icu-small/source/i18n/unicode/curramt.h +++ b/deps/icu-small/source/i18n/unicode/curramt.h @@ -23,10 +23,10 @@ #include "unicode/currunit.h" /** - * \file + * \file * \brief C++ API: Currency Amount Object. */ - + U_NAMESPACE_BEGIN /** @@ -69,7 +69,7 @@ class U_I18N_API CurrencyAmount: public Measure { * @stable ICU 3.0 */ CurrencyAmount(const CurrencyAmount& other); - + /** * Assignment operator * @stable ICU 3.0 @@ -81,14 +81,14 @@ class U_I18N_API CurrencyAmount: public Measure { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual CurrencyAmount* clone() const; + virtual CurrencyAmount* clone() const override; /** * Destructor * @stable ICU 3.0 */ virtual ~CurrencyAmount(); - + /** * Returns a unique class ID for this object POLYMORPHICALLY. * This method implements a simple form of RTTI used by ICU. @@ -97,7 +97,7 @@ class U_I18N_API CurrencyAmount: public Measure { * different class IDs. * @stable ICU 3.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/currpinf.h b/deps/icu-small/source/i18n/unicode/currpinf.h index 1b93be08316827..e3ca34b26f27a3 100644 --- a/deps/icu-small/source/i18n/unicode/currpinf.h +++ b/deps/icu-small/source/i18n/unicode/currpinf.h @@ -29,13 +29,13 @@ class PluralRules; class Hashtable; /** - * This class represents the information needed by - * DecimalFormat to format currency plural, - * such as "3.00 US dollars" or "1.00 US dollar". + * This class represents the information needed by + * DecimalFormat to format currency plural, + * such as "3.00 US dollars" or "1.00 US dollar". * DecimalFormat creates for itself an instance of - * CurrencyPluralInfo from its locale data. + * CurrencyPluralInfo from its locale data. * If you need to change any of these symbols, you can get the - * CurrencyPluralInfo object from your + * CurrencyPluralInfo object from your * DecimalFormat and modify it. * * Following are the information needed for currency plural format and parse: @@ -61,7 +61,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * @param status output param set to success/failure code on exit * @stable ICU 4.2 */ - CurrencyPluralInfo(const Locale& locale, UErrorCode& status); + CurrencyPluralInfo(const Locale& locale, UErrorCode& status); /** * Copy constructor @@ -92,7 +92,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - UBool operator==(const CurrencyPluralInfo& info) const; + bool operator==(const CurrencyPluralInfo& info) const; /** @@ -100,7 +100,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - UBool operator!=(const CurrencyPluralInfo& info) const; + bool operator!=(const CurrencyPluralInfo& info) const; /** @@ -120,7 +120,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { const PluralRules* getPluralRules() const; /** - * Given a plural count, gets currency plural pattern of this locale, + * Given a plural count, gets currency plural pattern of this locale, * used for currency plural format * * @param pluralCount currency plural count @@ -129,10 +129,10 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * @stable ICU 4.2 */ UnicodeString& getCurrencyPluralPattern(const UnicodeString& pluralCount, - UnicodeString& result) const; + UnicodeString& result) const; /** - * Get locale + * Get locale * * @return locale * @stable ICU 4.2 @@ -157,16 +157,16 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * Set currency plural pattern. * The currency plural pattern is set when CurrencyPluralInfo * instance is created. - * You can call this method to reset currency plural pattern only if + * You can call this method to reset currency plural pattern only if * you want to modify the default currency plural pattern of the locale. * - * @param pluralCount the plural count for which the currency pattern will + * @param pluralCount the plural count for which the currency pattern will * be overridden. * @param pattern the new currency plural pattern * @param status output param set to success/failure code on exit * @stable ICU 4.2 */ - void setCurrencyPluralPattern(const UnicodeString& pluralCount, + void setCurrencyPluralPattern(const UnicodeString& pluralCount, const UnicodeString& pattern, UErrorCode& status); @@ -184,7 +184,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { * * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -198,7 +198,7 @@ class U_I18N_API CurrencyPluralInfo : public UObject { friend class DecimalFormatImpl; void initialize(const Locale& loc, UErrorCode& status); - + void setupCurrencyPluralPattern(const Locale& loc, UErrorCode& status); /* @@ -259,10 +259,10 @@ class U_I18N_API CurrencyPluralInfo : public UObject { }; -inline UBool +inline bool CurrencyPluralInfo::operator!=(const CurrencyPluralInfo& info) const { return !operator==(info); -} +} U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/currunit.h b/deps/icu-small/source/i18n/unicode/currunit.h index 090b964a0decee..8da3f1ffd8711a 100644 --- a/deps/icu-small/source/i18n/unicode/currunit.h +++ b/deps/icu-small/source/i18n/unicode/currunit.h @@ -22,10 +22,10 @@ #include "unicode/measunit.h" /** - * \file + * \file * \brief C++ API: Currency Unit Information. */ - + U_NAMESPACE_BEGIN /** @@ -94,7 +94,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit { * have the same class as returned by getDynamicClassID(). * @stable ICU 3.0 */ - virtual CurrencyUnit* clone() const; + virtual CurrencyUnit* clone() const override; /** * Destructor @@ -110,7 +110,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit { * different class IDs. * @stable ICU 3.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/datefmt.h b/deps/icu-small/source/i18n/unicode/datefmt.h index bbba0785edaccc..027fb1712f4164 100644 --- a/deps/icu-small/source/i18n/unicode/datefmt.h +++ b/deps/icu-small/source/i18n/unicode/datefmt.h @@ -52,7 +52,7 @@ class DateTimePatternGenerator; */ #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN && !defined(U_IN_DOXYGEN) template class U_I18N_API EnumSet; #endif /** \endcond */ @@ -229,13 +229,13 @@ class U_I18N_API DateFormat : public Format { * @return clone, or nullptr if an error occurred * @stable ICU 2.0 */ - virtual DateFormat* clone() const = 0; + virtual DateFormat* clone() const override = 0; /** * Equality operator. Returns true if the two formats have the same behavior. * @stable ICU 2.0 */ - virtual UBool operator==(const Format&) const; + virtual bool operator==(const Format&) const override; using Format::format; @@ -257,7 +257,7 @@ class U_I18N_API DateFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Format an object to produce a string. This method handles Formattable @@ -277,7 +277,7 @@ class U_I18N_API DateFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Formats a date into a date/time string. This is an abstract method which * concrete subclasses must implement. @@ -291,12 +291,12 @@ class U_I18N_API DateFormat : public Format { * statfieldPositionus.getEndIndex will be set to 0 and 4, respectively. *

      Notice * that if the same time field appears more than once in a pattern, the status will - * be set for the first occurence of that time field. For instance, + * be set for the first occurrence of that time field. For instance, * formatting a UDate to the time string "1 PM PDT (Pacific Daylight Time)" * using the pattern "h a z (zzzz)" and the alignment field * DateFormat::TIMEZONE_FIELD, the offsets fieldPosition.beginIndex and * fieldPosition.getEndIndex will be set to 5 and 8, respectively, for the first - * occurence of the timezone pattern character 'z'. + * occurrence of the timezone pattern character 'z'. * * @param cal Calendar set to the date and time to be formatted * into a date/time string. When the calendar type is @@ -349,12 +349,12 @@ class U_I18N_API DateFormat : public Format { * statfieldPositionus.getEndIndex will be set to 0 and 4, respectively. *

      Notice * that if the same time field appears more than once in a pattern, the status will - * be set for the first occurence of that time field. For instance, + * be set for the first occurrence of that time field. For instance, * formatting a UDate to the time string "1 PM PDT (Pacific Daylight Time)" * using the pattern "h a z (zzzz)" and the alignment field * DateFormat::TIMEZONE_FIELD, the offsets fieldPosition.beginIndex and * fieldPosition.getEndIndex will be set to 5 and 8, respectively, for the first - * occurence of the timezone pattern character 'z'. + * occurrence of the timezone pattern character 'z'. * * @param date UDate to be formatted into a date/time string. * @param appendTo Output parameter to receive result. @@ -523,7 +523,7 @@ class U_I18N_API DateFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * Create a default date/time formatter that uses the SHORT style for both @@ -604,7 +604,7 @@ class U_I18N_API DateFormat : public Format { #endif /* U_HIDE_INTERNAL_API */ /** - * Creates a date/time formatter for the given skeleton and + * Creates a date/time formatter for the given skeleton and * default locale. * * @param skeleton The skeleton e.g "yMMMMd." Fields in the skeleton can @@ -680,20 +680,20 @@ class U_I18N_API DateFormat : public Format { * lenient parsing, the parser may use heuristics to interpret inputs that * do not precisely match this object's format. Without lenient parsing, * inputs must match this object's format more closely. - * - * Note: ICU 53 introduced finer grained control of leniency (and added - * new control points) making the preferred method a combination of - * setCalendarLenient() & setBooleanAttribute() calls. - * This method supports prior functionality but may not support all - * future leniency control & behavior of DateFormat. For control of pre 53 leniency, - * Calendar and DateFormat whitespace & numeric tolerance, this method is safe to - * use. However, mixing leniency control via this method and modification of the - * newer attributes via setBooleanAttribute() may produce undesirable + * + * Note: ICU 53 introduced finer grained control of leniency (and added + * new control points) making the preferred method a combination of + * setCalendarLenient() & setBooleanAttribute() calls. + * This method supports prior functionality but may not support all + * future leniency control & behavior of DateFormat. For control of pre 53 leniency, + * Calendar and DateFormat whitespace & numeric tolerance, this method is safe to + * use. However, mixing leniency control via this method and modification of the + * newer attributes via setBooleanAttribute() may produce undesirable * results. * * @param lenient True specifies date/time interpretation to be lenient. * @see Calendar::setLenient - * @stable ICU 2.0 + * @stable ICU 2.0 */ virtual void setLenient(UBool lenient); @@ -799,7 +799,7 @@ class U_I18N_API DateFormat : public Format { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @stable ICU 53 */ virtual void setContext(UDisplayContext value, UErrorCode& status); @@ -810,7 +810,7 @@ class U_I18N_API DateFormat : public Format { * @param type The UDisplayContextType whose value to return * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @return The UDisplayContextValue for the specified type. * @stable ICU 53 */ @@ -828,8 +828,8 @@ class U_I18N_API DateFormat : public Format { */ virtual DateFormat& U_EXPORT2 setBooleanAttribute(UDateFormatBooleanAttribute attr, - UBool newvalue, - UErrorCode &status); + UBool newvalue, + UErrorCode &status); /** * Returns a boolean from this DateFormat @@ -892,7 +892,7 @@ class U_I18N_API DateFormat : public Format { */ static DateFormat* U_EXPORT2 create(EStyle timeStyle, EStyle dateStyle, const Locale& inLocale); - + /** * enum set of active boolean attributes for this instance */ diff --git a/deps/icu-small/source/i18n/unicode/dcfmtsym.h b/deps/icu-small/source/i18n/unicode/dcfmtsym.h index d0f844a51a369f..c5f7404416fda3 100644 --- a/deps/icu-small/source/i18n/unicode/dcfmtsym.h +++ b/deps/icu-small/source/i18n/unicode/dcfmtsym.h @@ -169,8 +169,14 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @stable ICU 54 */ kExponentMultiplicationSymbol, +#ifndef U_HIDE_INTERNAL_API + /** Approximately sign. + * @internal + */ + kApproximatelySignSymbol, +#endif /* U_HIDE_INTERNAL_API */ /** count symbol constants */ - kFormatSymbolCount = kNineDigitSymbol + 2 + kFormatSymbolCount = kExponentMultiplicationSymbol + 2 }; /** @@ -255,7 +261,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @return true if another object is semantically equal to this one. * @stable ICU 2.0 */ - UBool operator==(const DecimalFormatSymbols& other) const; + bool operator==(const DecimalFormatSymbols& other) const; /** * Return true if another object is semantically unequal to this one. @@ -264,7 +270,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * @return true if another object is semantically unequal to this one. * @stable ICU 2.0 */ - UBool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); } + bool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); } /** * Get one of the format symbols by its enum constant. @@ -284,12 +290,12 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * @param symbol Constant to indicate a number format symbol. * @param value value of the format symbol - * @param propogateDigits If false, setting the zero digit will not automatically set 1-9. + * @param propagateDigits If false, setting the zero digit will not automatically set 1-9. * The default behavior is to automatically set 1-9 if zero is being set and the value * it is being set to corresponds to a known Unicode zero digit. * @stable ICU 2.0 */ - void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits); + void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propagateDigits); #ifndef U_HIDE_INTERNAL_API /** @@ -353,7 +359,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -419,7 +425,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * This is not currently stable API, but if you think it should be stable, * post a comment on the following ticket and the ICU team will take a look: - * http://bugs.icu-project.org/trac/ticket/13580 + * https://unicode-org.atlassian.net/browse/ICU-13580 * * @param symbol Constant to indicate a number format symbol. * @return the format symbol by the param 'symbol' @@ -436,7 +442,7 @@ class U_I18N_API DecimalFormatSymbols : public UObject { * * This is not currently stable API, but if you think it should be stable, * post a comment on the following ticket and the ICU team will take a look: - * http://bugs.icu-project.org/trac/ticket/13580 + * https://unicode-org.atlassian.net/browse/ICU-13580 * * @param digit The digit, an integer between 0 and 9 inclusive. * If outside the range 0 to 9, the zero digit is returned. diff --git a/deps/icu-small/source/i18n/unicode/decimfmt.h b/deps/icu-small/source/i18n/unicode/decimfmt.h index b0da8efb1e68b5..ab6cd14e187ec3 100644 --- a/deps/icu-small/source/i18n/unicode/decimfmt.h +++ b/deps/icu-small/source/i18n/unicode/decimfmt.h @@ -909,7 +909,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - UBool operator==(const Format& other) const U_OVERRIDE; + bool operator==(const Format& other) const U_OVERRIDE; using NumberFormat::format; @@ -1831,13 +1831,13 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This means a minimum of 2 integer digits, 1 fraction digit, and * a maximum of 2 fraction digits. *

      -     * .      Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
      +     * .      Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
            * 
      * In negative patterns, the minimum and maximum counts are ignored; * these are presumed to be set in the positive pattern. * * @param pattern The pattern to be applied. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be @@ -1873,13 +1873,13 @@ class U_I18N_API DecimalFormat : public NumberFormat { * This means a minimum of 2 integer digits, 1 fraction digit, and * a maximum of 2 fraction digits. * - * Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses. + * Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses. * * In negative patterns, the minimum and maximum counts are ignored; * these are presumed to be set in the positive pattern. * * @param pattern The localized pattern to be applied. - * @param parseError Struct to recieve information on position + * @param parseError Struct to receive information on position * of error if an error is encountered * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be @@ -2072,7 +2072,7 @@ class U_I18N_API DecimalFormat : public NumberFormat { * You can use the returned LocalizedNumberFormatter to format numbers and * get a FormattedNumber, which contains a string as well as additional * annotations about the formatted value. - * + * * If a memory allocation failure occurs, the return value of this method * might be null. If you are concerned about correct recovery from * out-of-memory situations, use this pattern: diff --git a/deps/icu-small/source/i18n/unicode/dtfmtsym.h b/deps/icu-small/source/i18n/unicode/dtfmtsym.h index f368eaef551434..200b3a6ef17a11 100644 --- a/deps/icu-small/source/i18n/unicode/dtfmtsym.h +++ b/deps/icu-small/source/i18n/unicode/dtfmtsym.h @@ -174,7 +174,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @return true if other is semantically equal to this. * @stable ICU 2.0 */ - UBool operator==(const DateFormatSymbols& other) const; + bool operator==(const DateFormatSymbols& other) const; /** * Return true if another object is semantically unequal to this one. @@ -183,7 +183,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 2.0 */ - UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } + bool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } /** * Gets abbreviated era strings. For example: "AD" and "BC". @@ -388,8 +388,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * Gets quarter strings by width and context. For example: "1st Quarter", "2nd Quarter", etc. * @param count Filled in with length of the array. * @param context The formatting context, either FORMAT or STANDALONE - * @param width The width of returned strings, either WIDE or ABBREVIATED. There - * are no NARROW quarters. + * @param width The width of returned strings, either WIDE, ABBREVIATED, or NARROW. * @return the quarter strings. (DateFormatSymbols retains ownership.) * @stable ICU 3.6 */ @@ -401,8 +400,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * @param quarters The new quarter strings. (not adopted; caller retains ownership) * @param count Filled in with length of the array. * @param context The formatting context, either FORMAT or STANDALONE - * @param width The width of returned strings, either WIDE or ABBREVIATED. There - * are no NARROW quarters. + * @param width The width of returned strings, either WIDE, ABBREVIATED, or NARROW. * @stable ICU 3.6 */ void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width); @@ -554,7 +552,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { /** * Sets timezone strings. These strings are stored in a 2-dimensional array. *

      Note: SimpleDateFormat no longer use the zone strings stored in - * a DateFormatSymbols. Therefore, the time zone strings set by this mthod + * a DateFormatSymbols. Therefore, the time zone strings set by this method * have no effects in an instance of SimpleDateFormat for formatting time * zones. * @param strings The timezone strings as a 2-d array to be copied. (not adopted; caller retains ownership) @@ -599,7 +597,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; /* The following type and kCapContextUsageTypeCount cannot be #ifndef U_HIDE_INTERNAL_API, - they are needed for .h file declarations. */ + they are needed for .h file declarations. */ /** * Constants for capitalization context usage types. * @internal @@ -630,7 +628,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -775,6 +773,13 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { UnicodeString *fShortQuarters; int32_t fShortQuartersCount; + /** + * Narrow quarters. For example: "1", "2", etc. + * (In many, but not all, locales, this is the same as "Q", but there are locales for which this isn't true.) + */ + UnicodeString *fNarrowQuarters; + int32_t fNarrowQuartersCount; + /** * Standalone quarter strings. For example: "1st quarter", "2nd quarter", etc. */ @@ -787,6 +792,13 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { UnicodeString *fStandaloneShortQuarters; int32_t fStandaloneShortQuartersCount; + /** + * Standalone narrow quarter strings. For example: "1", "2", etc. + * (In many, but not all, locales, this is the same as "q", but there are locales for which this isn't true.) + */ + UnicodeString *fStandaloneNarrowQuarters; + int32_t fStandaloneNarrowQuartersCount; + /** * All leap month patterns, for example "{0}bis". */ @@ -816,7 +828,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * entry containing the localized names for a single TimeZone. * * Each such row contains (with i ranging from 0..n-1): - * + * * zoneStrings[i][0] - time zone ID * example: America/Los_Angeles * zoneStrings[i][1] - long name of zone in standard time @@ -902,7 +914,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { int32_t fStandaloneNarrowDayPeriodsCount; private: - /** valid/actual locale information + /** valid/actual locale information * these are always ICU locales, so the length should not be a problem */ char validLocale[ULOC_FULLNAME_CAPACITY]; @@ -926,7 +938,7 @@ class U_I18N_API DateFormatSymbols U_FINAL : public UObject { * Copy or alias an array in another object, as appropriate. * * @param dstArray the copy destination array. - * @param dstCount fill in with the lenth of 'dstArray'. + * @param dstCount fill in with the length of 'dstArray'. * @param srcArray the source array to be copied. * @param srcCount the length of items to be copied from the 'srcArray'. */ diff --git a/deps/icu-small/source/i18n/unicode/dtitvfmt.h b/deps/icu-small/source/i18n/unicode/dtitvfmt.h index 4a1ab801a04c9d..85a1b365d83f4a 100644 --- a/deps/icu-small/source/i18n/unicode/dtitvfmt.h +++ b/deps/icu-small/source/i18n/unicode/dtitvfmt.h @@ -434,7 +434,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return A copy of the object. * @stable ICU 4.0 */ - virtual DateIntervalFormat* clone() const; + virtual DateIntervalFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -443,7 +443,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return true if the given Format objects are semantically equal. * @stable ICU 4.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if the given Format objects are not semantically equal. @@ -452,7 +452,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @return true if the given Format objects are not semantically equal. * @stable ICU 4.0 */ - UBool operator!=(const Format& other) const; + bool operator!=(const Format& other) const; using Format::format; @@ -479,7 +479,7 @@ class U_I18N_API DateIntervalFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& fieldPosition, - UErrorCode& status) const ; + UErrorCode& status) const override; @@ -595,7 +595,7 @@ class U_I18N_API DateIntervalFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** @@ -652,7 +652,6 @@ class U_I18N_API DateIntervalFormat : public Format { */ virtual void setTimeZone(const TimeZone& zone); -#ifndef U_FORCE_HIDE_DRAFT_API /** * Set a particular UDisplayContext value in the formatter, such as * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted @@ -663,7 +662,7 @@ class U_I18N_API DateIntervalFormat : public Format { * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be * updated with any new status from the function. - * @draft ICU 68 + * @stable ICU 68 */ virtual void setContext(UDisplayContext value, UErrorCode& status); @@ -675,10 +674,9 @@ class U_I18N_API DateIntervalFormat : public Format { * status, the function will do nothing; otherwise this will be * updated with any new status from the function. * @return The UDisplayContextValue for the specified type. - * @draft ICU 68 + * @stable ICU 68 */ virtual UDisplayContext getContext(UDisplayContextType type, UErrorCode& status) const; -#endif // U_FORCE_HIDE_DRAFT_API /** * Return the class ID for this class. This is useful only for comparing to @@ -704,7 +702,7 @@ class U_I18N_API DateIntervalFormat : public Format { * other classes have different class IDs. * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: @@ -742,7 +740,7 @@ class U_I18N_API DateIntervalFormat : public Format { * Whether the first date in interval pattern is later date or not. * Fallback format set the default ordering. * And for a particular interval pattern, the order can be - * overriden by prefixing the interval pattern with "latestFirst:" or + * overridden by prefixing the interval pattern with "latestFirst:" or * "earliestFirst:" * For example, given 2 date, Jan 10, 2007 to Feb 10, 2007. * if the fallback format is "{0} - {1}", @@ -893,7 +891,7 @@ class U_I18N_API DateIntervalFormat : public Format { void setFallbackPattern(UCalendarDateFields field, const UnicodeString& skeleton, UErrorCode& status); - + /** @@ -1199,7 +1197,7 @@ class U_I18N_API DateIntervalFormat : public Format { UDisplayContext fCapitalizationContext; }; -inline UBool +inline bool DateIntervalFormat::operator!=(const Format& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/unicode/dtitvinf.h b/deps/icu-small/source/i18n/unicode/dtitvinf.h index 8452614bfb8d87..b5afc064678224 100644 --- a/deps/icu-small/source/i18n/unicode/dtitvinf.h +++ b/deps/icu-small/source/i18n/unicode/dtitvinf.h @@ -45,7 +45,7 @@ U_NAMESPACE_BEGIN *

      * For power users, who want to create their own date interval patterns, * or want to re-set date interval patterns, they could do so by - * directly creating DateIntervalInfo and manupulating it. + * directly creating DateIntervalInfo and manipulating it. * *

      * Logically, the interval patterns are mappings @@ -114,7 +114,7 @@ U_NAMESPACE_BEGIN * the first date in the interval pattern for this locale is earlier date. * If the fallback format is "{1} - {0}", it means the first date is the * later date. - * For a particular interval pattern, the default order can be overriden + * For a particular interval pattern, the default order can be overridden * by prefixing "latestFirst:" or "earliestFirst:" to the interval pattern. * For example, if the fallback format is "{0}-{1}", * but for skeleton "yMMMd", the interval pattern when day is different is @@ -214,7 +214,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * @return true if other is semantically equal to this. * @stable ICU 4.0 */ - virtual UBool operator==(const DateIntervalInfo& other) const; + virtual bool operator==(const DateIntervalInfo& other) const; /** * Return true if another object is semantically unequal to this one. @@ -223,7 +223,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 4.0 */ - UBool operator!=(const DateIntervalInfo& other) const; + bool operator!=(const DateIntervalInfo& other) const; @@ -319,7 +319,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -406,7 +406,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { * and the best match skeleton. * * TODO (xji): set field weight or - * isolate the funtionality in DateTimePatternGenerator + * isolate the functionality in DateTimePatternGenerator * @param skeleton input skeleton * @param bestMatchDistanceInfo the difference between input skeleton * and best match skeleton. @@ -508,7 +508,7 @@ class U_I18N_API DateIntervalInfo U_FINAL : public UObject { };// end class DateIntervalInfo -inline UBool +inline bool DateIntervalInfo::operator!=(const DateIntervalInfo& other) const { return !operator==(other); } @@ -521,3 +521,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/dtptngen.h b/deps/icu-small/source/i18n/unicode/dtptngen.h index dab7dcfb3dc61a..250a0e089fed6b 100644 --- a/deps/icu-small/source/i18n/unicode/dtptngen.h +++ b/deps/icu-small/source/i18n/unicode/dtptngen.h @@ -120,7 +120,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { * @return true if other is semantically equal to this. * @stable ICU 3.8 */ - UBool operator==(const DateTimePatternGenerator& other) const; + bool operator==(const DateTimePatternGenerator& other) const; /** * Return true if another object is semantically unequal to this one. @@ -129,7 +129,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { * @return true if other is semantically unequal to this. * @stable ICU 3.8 */ - UBool operator!=(const DateTimePatternGenerator& other) const; + bool operator!=(const DateTimePatternGenerator& other) const; /** * Utility to return a unique skeleton from a given pattern. For example, @@ -202,7 +202,7 @@ class U_I18N_API DateTimePatternGenerator : public UObject { /** * Adds a pattern to the generator. If the pattern has the same skeleton as * an existing pattern, and the override parameter is set, then the previous - * value is overriden. Otherwise, the previous value is retained. In either + * value is overridden. Otherwise, the previous value is retained. In either * case, the conflicting status is set and previous vale is stored in * conflicting pattern. *

      @@ -495,9 +495,9 @@ class U_I18N_API DateTimePatternGenerator : public UObject { /** * Get the default hour cycle for a locale. Uses the locale that the * DateTimePatternGenerator was initially created with. - * + * * Cannot be used on an empty DateTimePatternGenerator instance. - * + * * @param status Output param set to success/failure code on exit, which * which must not indicate a failure before the function call. * Set to U_UNSUPPORTED_ERROR if used on an empty instance. @@ -507,13 +507,13 @@ class U_I18N_API DateTimePatternGenerator : public UObject { UDateFormatHourCycle getDefaultHourCycle(UErrorCode& status) const; #endif /* #if !UCONFIG_NO_FORMATTING */ - + /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/deps/icu-small/source/i18n/unicode/dtrule.h b/deps/icu-small/source/i18n/unicode/dtrule.h index dba28bf2dc4ede..19e94bc981c817 100644 --- a/deps/icu-small/source/i18n/unicode/dtrule.h +++ b/deps/icu-small/source/i18n/unicode/dtrule.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Rule for specifying date and time in an year */ @@ -27,7 +27,7 @@ U_NAMESPACE_BEGIN * DateTimeRule is a class representing a time in a year by * a rule specified by month, day of month, day of week and * time in the day. - * + * * @stable ICU 3.8 */ class U_I18N_API DateTimeRule : public UObject { @@ -40,11 +40,11 @@ class U_I18N_API DateTimeRule : public UObject { enum DateRuleType { DOM = 0, /**< The exact day of month, for example, March 11. */ - DOW, /**< The Nth occurence of the day of week, + DOW, /**< The Nth occurrence of the day of week, for example, 2nd Sunday in March. */ - DOW_GEQ_DOM, /**< The first occurence of the day of week on or after the day of monnth, + DOW_GEQ_DOM, /**< The first occurrence of the day of week on or after the day of monnth, for example, first Sunday on or after March 8. */ - DOW_LEQ_DOM /**< The last occurence of the day of week on or before the day of month, + DOW_LEQ_DOM /**< The last occurrence of the day of week on or before the day of month, for example, first Sunday on or before March 14. */ }; @@ -62,7 +62,7 @@ class U_I18N_API DateTimeRule : public UObject { * Constructs a DateTimeRule by the day of month and * the time rule. The date rule type for an instance created by * this constructor is DOM. - * + * * @param month The rule month, for example, Calendar::JANUARY * @param dayOfMonth The day of month, 1-based. * @param millisInDay The milliseconds in the rule date. @@ -74,10 +74,10 @@ class U_I18N_API DateTimeRule : public UObject { int32_t millisInDay, TimeRuleType timeType); /** - * Constructs a DateTimeRule by the day of week and its oridinal + * Constructs a DateTimeRule by the day of week and its ordinal * number and the time rule. The date rule type for an instance created * by this constructor is DOW. - * + * * @param month The rule month, for example, Calendar::JANUARY. * @param weekInMonth The ordinal number of the day of week. Negative number * may be used for specifying a rule date counted from the @@ -96,7 +96,7 @@ class U_I18N_API DateTimeRule : public UObject { * on or after/before the day of month and the time rule. The date rule * type for an instance created by this constructor is either * DOM_GEQ_DOM or DOM_LEQ_DOM. - * + * * @param month The rule month, for example, Calendar::JANUARY * @param dayOfMonth The day of month, 1-based. * @param dayOfWeek The day of week, for example, Calendar::SUNDAY. @@ -144,7 +144,7 @@ class U_I18N_API DateTimeRule : public UObject { * @return true if the given DateTimeRule objects are semantically equal. * @stable ICU 3.8 */ - UBool operator==(const DateTimeRule& that) const; + bool operator==(const DateTimeRule& that) const; /** * Return true if the given DateTimeRule objects are semantically unequal. Objects @@ -153,7 +153,7 @@ class U_I18N_API DateTimeRule : public UObject { * @return true if the given DateTimeRule objects are semantically unequal. * @stable ICU 3.8 */ - UBool operator!=(const DateTimeRule& that) const; + bool operator!=(const DateTimeRule& that) const; /** * Gets the date rule type, such as DOM @@ -194,7 +194,7 @@ class U_I18N_API DateTimeRule : public UObject { int32_t getRuleDayOfWeek(void) const; /** - * Gets the ordinal number of the occurence of the day of week + * Gets the ordinal number of the occurrence of the day of week * in the month. When the date rule type is not DOW, * the value is always 0. * @return The rule day of week ordinal number in the month. @@ -243,7 +243,7 @@ class U_I18N_API DateTimeRule : public UObject { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/fieldpos.h b/deps/icu-small/source/i18n/unicode/fieldpos.h index 6c28d2d3159b66..b985f3b2f76db4 100644 --- a/deps/icu-small/source/i18n/unicode/fieldpos.h +++ b/deps/icu-small/source/i18n/unicode/fieldpos.h @@ -20,7 +20,7 @@ // ***************************************************************************** // This file was generated from the java source file FieldPosition.java // ***************************************************************************** - + #ifndef FIELDPOS_H #define FIELDPOS_H @@ -29,7 +29,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: FieldPosition identifies the fields in a formatted output. */ @@ -71,14 +71,14 @@ U_NAMESPACE_BEGIN * double doubleNum[] = {123456789.0, -12345678.9, 1234567.89, -123456.789, * 12345.6789, -1234.56789, 123.456789, -12.3456789, 1.23456789}; * int dNumSize = (int)(sizeof(doubleNum)/sizeof(double)); - * + * * UErrorCode status = U_ZERO_ERROR; * DecimalFormat* fmt = (DecimalFormat*) NumberFormat::createInstance(status); * fmt->setDecimalSeparatorAlwaysShown(true); - * + * * const int tempLen = 20; * char temp[tempLen]; - * + * * for (int i=0; i * If there is no match when parsing, a parse failure UErrorCode is - * retured for methods which take no ParsePosition. For the method + * returned for methods which take no ParsePosition. For the method * that takes a ParsePosition, the index parameter is left unchanged. *

      * User subclasses are not supported. While clients may write @@ -111,7 +111,7 @@ class U_I18N_API Format : public UObject { * Objects of different subclasses are considered unequal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const = 0; + virtual bool operator==(const Format& other) const = 0; /** * Return true if the given Format objects are not semantically @@ -120,7 +120,7 @@ class U_I18N_API Format : public UObject { * @return Return true if the given Format objects are not semantically. * @stable ICU 2.0 */ - UBool operator!=(const Format& other) const { return !operator==(other); } + bool operator!=(const Format& other) const { return !operator==(other); } /** * Clone this object polymorphically. The caller is responsible @@ -245,7 +245,7 @@ class U_I18N_API Format : public UObject { UErrorCode& status) const; /** Get the locale for this format object. You can choose between valid and actual locale. - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale * @stable ICU 2.8 @@ -254,7 +254,7 @@ class U_I18N_API Format : public UObject { #ifndef U_HIDE_INTERNAL_API /** Get the locale for this format object. You can choose between valid and actual locale. - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale * @internal @@ -283,12 +283,12 @@ class U_I18N_API Format : public UObject { */ Format& operator=(const Format&); // Does nothing; for subclasses - + /** * Simple function for initializing a UParseError from a UnicodeString. * * @param pattern The pattern to copy into the parseError - * @param pos The position in pattern where the error occured + * @param pos The position in pattern where the error occurred * @param parseError The UParseError object to fill in * @stable ICU 2.4 */ diff --git a/deps/icu-small/source/i18n/unicode/formattedvalue.h b/deps/icu-small/source/i18n/unicode/formattedvalue.h index f4e588d01cbddf..5febea066180a0 100644 --- a/deps/icu-small/source/i18n/unicode/formattedvalue.h +++ b/deps/icu-small/source/i18n/unicode/formattedvalue.h @@ -20,7 +20,7 @@ U_NAMESPACE_BEGIN /** * \file * \brief C++ API: Abstract operations for localized strings. - * + * * This file contains declarations for classes that deal with formatted strings. A number * of APIs throughout ICU use these classes for expressing their localized output. */ @@ -65,7 +65,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { /** * Sets a constraint on the field category. - * + * * When this instance of ConstrainedFieldPosition is passed to FormattedValue#nextPosition, * positions are skipped unless they have the given category. * @@ -89,7 +89,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory { /** * Sets a constraint on the category and field. - * + * * When this instance of ConstrainedFieldPosition is passed to FormattedValue#nextPosition, * positions are skipped unless they have the given category and field. * diff --git a/deps/icu-small/source/i18n/unicode/fpositer.h b/deps/icu-small/source/i18n/unicode/fpositer.h index 35aa5da20f2cfa..0e38d0b78b3a48 100644 --- a/deps/icu-small/source/i18n/unicode/fpositer.h +++ b/deps/icu-small/source/i18n/unicode/fpositer.h @@ -84,7 +84,7 @@ class U_I18N_API FieldPositionIterator : public UObject { * equal array of run values. * @stable ICU 4.4 */ - UBool operator==(const FieldPositionIterator&) const; + bool operator==(const FieldPositionIterator&) const; /** * Returns the complement of the result of operator== @@ -92,7 +92,7 @@ class U_I18N_API FieldPositionIterator : public UObject { * @return the complement of the result of operator== * @stable ICU 4.4 */ - UBool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); } + bool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); } /** * If the current position is valid, updates the FieldPosition values, advances the iterator, @@ -104,7 +104,7 @@ class U_I18N_API FieldPositionIterator : public UObject { private: /** * Sets the data used by the iterator, and resets the position. - * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid + * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid * (length is not a multiple of 3, or start >= limit for any run). */ void setData(UVector32 *adopt, UErrorCode& status); diff --git a/deps/icu-small/source/i18n/unicode/gender.h b/deps/icu-small/source/i18n/unicode/gender.h index 5ae111a3aa816a..cf7fee963e1fe8 100644 --- a/deps/icu-small/source/i18n/unicode/gender.h +++ b/deps/icu-small/source/i18n/unicode/gender.h @@ -67,7 +67,7 @@ class U_I18N_API GenderInfo : public UObject { /** * Determines the gender of a list as a whole given the gender of each * of the elements. - * + * * @param genders the gender of each element in the list. * @param length the length of gender array. * @param status Output param set to success/failure code on exit, which diff --git a/deps/icu-small/source/i18n/unicode/gregocal.h b/deps/icu-small/source/i18n/unicode/gregocal.h index 139258d822a30c..4c2be18251faa9 100644 --- a/deps/icu-small/source/i18n/unicode/gregocal.h +++ b/deps/icu-small/source/i18n/unicode/gregocal.h @@ -35,13 +35,13 @@ #include "unicode/calendar.h" /** - * \file + * \file * \brief C++ API: Concrete class which provides the standard calendar. */ U_NAMESPACE_BEGIN -/** +/** * Concrete class which provides the standard calendar used by most of the world. *

      * The standard (Gregorian) calendar has 2 eras, BC and AD. @@ -78,9 +78,9 @@ U_NAMESPACE_BEGIN * \code * // get the supported ids for GMT-08:00 (Pacific Standard Time) * UErrorCode success = U_ZERO_ERROR; - * const StringEnumeration *ids = TimeZone::createEnumeration(-8 * 60 * 60 * 1000); + * const StringEnumeration *ids = TimeZone::createEnumeration(-8 * 60 * 60 * 1000, success); * // if no ids were returned, something is wrong. get out. - * if (ids == 0 || ids->count(success) == 0) { + * if (U_FAILURE(success)) { * return; * } * @@ -141,7 +141,7 @@ U_NAMESPACE_BEGIN * cout << "DST_OFFSET: " << (calendar->get( UCAL_DST_OFFSET, success )/(60*60*1000)) << endl; // in hours * * if (U_FAILURE(success)) { - * cout << "An error occured. success=" << u_errorName(success) << endl; + * cout << "An error occurred. success=" << u_errorName(success) << endl; * } * * delete ids; @@ -303,7 +303,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return return a polymorphic copy of this calendar. * @stable ICU 2.0 */ - virtual GregorianCalendar* clone() const; + virtual GregorianCalendar* clone() const override; /** * Sets the GregorianCalendar change date. This is the point when the switch from @@ -347,10 +347,10 @@ class U_I18N_API GregorianCalendar: public Calendar { * Returns true if the given Calendar object is equivalent to this * one. Calendar override. * - * @param other the Calendar to be compared with this Calendar + * @param other the Calendar to be compared with this Calendar * @stable ICU 2.4 */ - virtual UBool isEquivalentTo(const Calendar& other) const; + virtual UBool isEquivalentTo(const Calendar& other) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -364,7 +364,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * an error status. * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ - virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); + virtual void roll(EDateFields field, int32_t amount, UErrorCode& status) override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -378,7 +378,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * an error status. * @stable ICU 2.6. */ - virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status); + virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) override; #ifndef U_HIDE_DEPRECATED_API /** @@ -409,7 +409,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the minimum value that this field could have, given the current date. * @stable ICU 3.0 */ - int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const; + int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const override; #ifndef U_HIDE_DEPRECATED_API /** @@ -434,7 +434,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the maximum value that this field could have, given the current date. * @stable ICU 2.6 */ - virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const; + virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override; /** * (Overrides Calendar) Return true if the current date for this Calendar is in @@ -445,7 +445,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * false, otherwise. * @stable ICU 2.0 */ - virtual UBool inDaylightTime(UErrorCode& status) const; + virtual UBool inDaylightTime(UErrorCode& status) const override; public: @@ -459,7 +459,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return @@ -484,7 +484,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return legacy calendar type name string * @stable ICU 49 */ - virtual const char * getType() const; + virtual const char * getType() const override; private: GregorianCalendar(); // default constructor not implemented @@ -512,17 +512,17 @@ class U_I18N_API GregorianCalendar: public Calendar { * @internal */ virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, - UBool useMonth) const; + UBool useMonth) const override; /** * Subclasses may override this. This method calls * handleGetMonthLength() to obtain the calendar-specific month * length. - * @param bestField which field to use to calculate the date + * @param bestField which field to use to calculate the date * @return julian day specified by calendar fields. * @internal */ - virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) ; + virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) override; /** * Return the number of days in the given month of the given extended @@ -531,7 +531,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * implementation than the default implementation in Calendar. * @internal */ - virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; + virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override; /** * Return the number of days in the given extended year of this @@ -540,7 +540,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * default implementation in Calendar. * @stable ICU 2.0 */ - virtual int32_t handleGetYearLength(int32_t eyear) const; + virtual int32_t handleGetYearLength(int32_t eyear) const override; /** * return the length of the given month. @@ -567,7 +567,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * @internal */ int32_t yearLength(int32_t year) const; - + /** * return the length of the year field. * @return the length of the year field @@ -589,7 +589,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * Return the day number with respect to the epoch. January 1, 1970 (Gregorian) * is day zero. * @param status Fill-in parameter which receives the status of this operation. - * @return the day number with respect to the epoch. + * @return the day number with respect to the epoch. * @internal */ virtual UDate getEpochDay(UErrorCode& status); @@ -615,7 +615,7 @@ class U_I18N_API GregorianCalendar: public Calendar { * LEAST_MAXIMUM, or MAXIMUM * @internal */ - virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; + virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; /** * Return the extended year defined by the current fields. This will @@ -625,17 +625,17 @@ class U_I18N_API GregorianCalendar: public Calendar { * @return the extended year * @internal */ - virtual int32_t handleGetExtendedYear(); + virtual int32_t handleGetExtendedYear() override; - /** - * Subclasses may override this to convert from week fields + /** + * Subclasses may override this to convert from week fields * (YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case * where YEAR, EXTENDED_YEAR are not set. * The Gregorian implementation assumes a yearWoy in gregorian format, according to the current era. * @return the extended year, UCAL_EXTENDED_YEAR * @internal */ - virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy); + virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy) override; /** @@ -653,19 +653,19 @@ class U_I18N_API GregorianCalendar: public Calendar { * a calendar with the specified Julian/Gregorian cutover date. * @internal */ - virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); + virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; private: /** * Compute the julian day number of the given year. * @param isGregorian if true, using Gregorian calendar, otherwise using Julian calendar * @param year the given year. - * @param isLeap true if the year is a leap year. - * @return + * @param isLeap true if the year is a leap year. + * @return */ static double computeJulianDayOfYear(UBool isGregorian, int32_t year, UBool& isLeap); - + /** * Validates the values of the set time fields. True if they're all valid. * @return True if the set time fields are all valid. @@ -757,21 +757,21 @@ class U_I18N_API GregorianCalendar: public Calendar { /** * @return true if this calendar has the notion of a default century - * @internal + * @internal */ - virtual UBool haveDefaultCentury() const; + virtual UBool haveDefaultCentury() const override; /** * @return the start of the default century * @internal */ - virtual UDate defaultCenturyStart() const; + virtual UDate defaultCenturyStart() const override; /** * @return the beginning year of the default century - * @internal + * @internal */ - virtual int32_t defaultCenturyStartYear() const; + virtual int32_t defaultCenturyStartYear() const override; }; U_NAMESPACE_END @@ -782,3 +782,4 @@ U_NAMESPACE_END #endif // _GREGOCAL //eof + diff --git a/deps/icu-small/source/i18n/unicode/listformatter.h b/deps/icu-small/source/i18n/unicode/listformatter.h index 3cc750c8387499..d7ab1d20865a39 100644 --- a/deps/icu-small/source/i18n/unicode/listformatter.h +++ b/deps/icu-small/source/i18n/unicode/listformatter.h @@ -257,7 +257,7 @@ class U_I18N_API ListFormatter : public UObject{ #endif /* U_HIDE_INTERNAL_API */ private: - + /** * Creates a ListFormatter appropriate for a locale and style. * diff --git a/deps/icu-small/source/i18n/unicode/measfmt.h b/deps/icu-small/source/i18n/unicode/measfmt.h index f48dada2abf02a..893076145f5f31 100644 --- a/deps/icu-small/source/i18n/unicode/measfmt.h +++ b/deps/icu-small/source/i18n/unicode/measfmt.h @@ -23,7 +23,7 @@ #include "unicode/udat.h" /** - * \file + * \file * \brief C++ API: Compatibility APIs for measure formatting. */ @@ -40,10 +40,10 @@ enum UMeasureFormatWidth { // Wide, short, and narrow must be first and in this order. /** * Spell out measure units. - * @stable ICU 53 + * @stable ICU 53 */ UMEASFMT_WIDTH_WIDE, - + /** * Abbreviate measure units. * @stable ICU 53 @@ -72,7 +72,7 @@ enum UMeasureFormatWidth { #endif // U_HIDE_DEPRECATED_API }; /** @stable ICU 53 */ -typedef enum UMeasureFormatWidth UMeasureFormatWidth; +typedef enum UMeasureFormatWidth UMeasureFormatWidth; U_NAMESPACE_BEGIN @@ -148,13 +148,13 @@ class U_I18N_API MeasureFormat : public Format { * Return true if given Format objects are semantically equal. * @stable ICU 53 */ - virtual UBool operator==(const Format &other) const; + virtual bool operator==(const Format &other) const override; /** * Clones this object polymorphically. * @stable ICU 53 */ - virtual MeasureFormat *clone() const; + virtual MeasureFormat *clone() const override; /** * Formats object to produce a string. @@ -164,7 +164,7 @@ class U_I18N_API MeasureFormat : public Format { const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, - UErrorCode &status) const; + UErrorCode &status) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -176,7 +176,7 @@ class U_I18N_API MeasureFormat : public Format { virtual void parseObject( const UnicodeString &source, Formattable &reslt, - ParsePosition &pos) const; + ParsePosition &pos) const override; #endif // U_FORCE_HIDE_DRAFT_API /** @@ -286,7 +286,7 @@ class U_I18N_API MeasureFormat : public Format { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: /** @@ -295,7 +295,7 @@ class U_I18N_API MeasureFormat : public Format { */ MeasureFormat(); -#ifndef U_HIDE_INTERNAL_API +#ifndef U_HIDE_INTERNAL_API /** * ICU use only. @@ -360,7 +360,7 @@ class U_I18N_API MeasureFormat : public Format { const MeasureFormatCacheData *cache; const SharedNumberFormat *numberFormat; const SharedPluralRules *pluralRules; - UMeasureFormatWidth fWidth; + UMeasureFormatWidth fWidth; // Declared outside of MeasureFormatSharedData because ListFormatter // objects are relatively cheap to copy; therefore, they don't need to be diff --git a/deps/icu-small/source/i18n/unicode/measunit.h b/deps/icu-small/source/i18n/unicode/measunit.h index 0985ba0706eaa4..61da62e71f2271 100644 --- a/deps/icu-small/source/i18n/unicode/measunit.h +++ b/deps/icu-small/source/i18n/unicode/measunit.h @@ -107,12 +107,14 @@ typedef enum UMeasurePrefix { */ UMEASURE_PREFIX_YOTTA = UMEASURE_PREFIX_ONE + 24, +#ifndef U_HIDE_INTERNAL_API /** * ICU use only. * Used to determine the set of base-10 SI prefixes. * @internal */ UMEASURE_PREFIX_INTERNAL_MAX_SI = UMEASURE_PREFIX_YOTTA, +#endif /* U_HIDE_INTERNAL_API */ /** * SI prefix: zetta, 10^21. @@ -433,14 +435,14 @@ class U_I18N_API MeasureUnit: public UObject { * to the given object. * @stable ICU 3.0 */ - virtual UBool operator==(const UObject& other) const; + virtual bool operator==(const UObject& other) const; /** * Inequality operator. Return true if this object is not equal * to the given object. * @stable ICU 53 */ - UBool operator!=(const UObject& other) const { + bool operator!=(const UObject& other) const { return !(*this == other); } @@ -577,7 +579,6 @@ class U_I18N_API MeasureUnit: public UObject { */ MeasureUnit product(const MeasureUnit& other, UErrorCode& status) const; -#ifndef U_HIDE_DRAFT_API /** * Gets the list of SINGLE units contained within a MIXED or COMPOUND unit. * @@ -591,10 +592,9 @@ class U_I18N_API MeasureUnit: public UObject { * * @param status Set if an error occurs. * @return A pair with the list of units as a LocalArray and the number of units in the list. - * @draft ICU 68 + * @stable ICU 68 */ inline std::pair, int32_t> splitToSingleUnits(UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API /** * getAvailable gets all of the available units. @@ -664,7 +664,7 @@ class U_I18N_API MeasureUnit: public UObject { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; #ifndef U_HIDE_INTERNAL_API /** @@ -955,6 +955,24 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getSquareYard(); +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of concentr: item. + * Caller owns returned value and must free it. + * Also see {@link #getItem()}. + * @param status ICU error code. + * @draft ICU 70 + */ + static MeasureUnit *createItem(UErrorCode &status); + + /** + * Returns by value, unit of concentr: item. + * Also see {@link #createItem()}. + * @draft ICU 70 + */ + static MeasureUnit getItem(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of concentr: karat. * Caller owns returned value and must free it. @@ -1805,6 +1823,24 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getThermUs(); +#ifndef U_HIDE_DRAFT_API + /** + * Returns by pointer, unit of force: kilowatt-hour-per-100-kilometer. + * Caller owns returned value and must free it. + * Also see {@link #getKilowattHourPer100Kilometer()}. + * @param status ICU error code. + * @draft ICU 70 + */ + static MeasureUnit *createKilowattHourPer100Kilometer(UErrorCode &status); + + /** + * Returns by value, unit of force: kilowatt-hour-per-100-kilometer. + * Also see {@link #createKilowattHourPer100Kilometer()}. + * @draft ICU 70 + */ + static MeasureUnit getKilowattHourPer100Kilometer(); +#endif /* U_HIDE_DRAFT_API */ + /** * Returns by pointer, unit of force: newton. * Caller owns returned value and must free it. @@ -1901,23 +1937,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getMegahertz(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of graphics: dot. * Caller owns returned value and must free it. * Also see {@link #getDot()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDot(UErrorCode &status); /** * Returns by value, unit of graphics: dot. * Also see {@link #createDot()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDot(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of graphics: dot-per-centimeter. @@ -2079,23 +2113,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getDecimeter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of length: earth-radius. * Caller owns returned value and must free it. * Also see {@link #getEarthRadius()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createEarthRadius(UErrorCode &status); /** * Returns by value, unit of length: earth-radius. * Also see {@link #createEarthRadius()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getEarthRadius(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of length: fathom. @@ -2385,41 +2417,37 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getYard(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of light: candela. * Caller owns returned value and must free it. * Also see {@link #getCandela()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createCandela(UErrorCode &status); /** * Returns by value, unit of light: candela. * Also see {@link #createCandela()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getCandela(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of light: lumen. * Caller owns returned value and must free it. * Also see {@link #getLumen()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createLumen(UErrorCode &status); /** * Returns by value, unit of light: lumen. * Also see {@link #createLumen()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getLumen(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of light: lux. @@ -2501,23 +2529,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getEarthMass(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of mass: grain. * Caller owns returned value and must free it. * Also see {@link #getGrain()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createGrain(UErrorCode &status); /** * Returns by value, unit of mass: grain. * Also see {@link #createGrain()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getGrain(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of mass: gram. @@ -3335,77 +3361,69 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getDeciliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dessert-spoon. * Caller owns returned value and must free it. * Also see {@link #getDessertSpoon()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDessertSpoon(UErrorCode &status); /** * Returns by value, unit of volume: dessert-spoon. * Also see {@link #createDessertSpoon()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDessertSpoon(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dessert-spoon-imperial. * Caller owns returned value and must free it. * Also see {@link #getDessertSpoonImperial()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDessertSpoonImperial(UErrorCode &status); /** * Returns by value, unit of volume: dessert-spoon-imperial. * Also see {@link #createDessertSpoonImperial()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDessertSpoonImperial(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: dram. * Caller owns returned value and must free it. * Also see {@link #getDram()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDram(UErrorCode &status); /** * Returns by value, unit of volume: dram. * Also see {@link #createDram()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDram(); -#endif /* U_HIDE_DRAFT_API */ -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: drop. * Caller owns returned value and must free it. * Also see {@link #getDrop()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createDrop(UErrorCode &status); /** * Returns by value, unit of volume: drop. * Also see {@link #createDrop()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getDrop(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: fluid-ounce. @@ -3487,23 +3505,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getHectoliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: jigger. * Caller owns returned value and must free it. * Also see {@link #getJigger()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createJigger(UErrorCode &status); /** * Returns by value, unit of volume: jigger. * Also see {@link #createJigger()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getJigger(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: liter. @@ -3553,23 +3569,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getMilliliter(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: pinch. * Caller owns returned value and must free it. * Also see {@link #getPinch()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createPinch(UErrorCode &status); /** * Returns by value, unit of volume: pinch. * Also see {@link #createPinch()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getPinch(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: pint. @@ -3619,23 +3633,21 @@ class U_I18N_API MeasureUnit: public UObject { */ static MeasureUnit getQuart(); -#ifndef U_HIDE_DRAFT_API /** * Returns by pointer, unit of volume: quart-imperial. * Caller owns returned value and must free it. * Also see {@link #getQuartImperial()}. * @param status ICU error code. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit *createQuartImperial(UErrorCode &status); /** * Returns by value, unit of volume: quart-imperial. * Also see {@link #createQuartImperial()}. - * @draft ICU 68 + * @stable ICU 68 */ static MeasureUnit getQuartImperial(); -#endif /* U_HIDE_DRAFT_API */ /** * Returns by pointer, unit of volume: tablespoon. @@ -3724,15 +3736,13 @@ class U_I18N_API MeasureUnit: public UObject { friend class number::impl::LongNameHandler; }; -#ifndef U_HIDE_DRAFT_API -// inline impl of @draft ICU 68 method +// inline impl of @stable ICU 68 method inline std::pair, int32_t> MeasureUnit::splitToSingleUnits(UErrorCode& status) const { int32_t length; auto array = splitToSingleUnitsImpl(length, status); return std::make_pair(std::move(array), length); } -#endif // U_HIDE_DRAFT_API U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/measure.h b/deps/icu-small/source/i18n/unicode/measure.h index 0ed02626b13b8f..7b118acfcfaf5a 100644 --- a/deps/icu-small/source/i18n/unicode/measure.h +++ b/deps/icu-small/source/i18n/unicode/measure.h @@ -18,10 +18,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: MeasureUnit object. */ - + #if !UCONFIG_NO_FORMATTING #include "unicode/fmtable.h" @@ -81,13 +81,13 @@ class U_I18N_API Measure: public UObject { * @stable ICU 3.0 */ virtual ~Measure(); - + /** * Equality operator. Return true if this object is equal * to the given object. * @stable ICU 3.0 */ - UBool operator==(const UObject& other) const; + bool operator==(const UObject& other) const; /** * Return a reference to the numeric value of this object. The @@ -127,7 +127,7 @@ class U_I18N_API Measure: public UObject { * other classes have different class IDs. * @stable ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; protected: /** diff --git a/deps/icu-small/source/i18n/unicode/msgfmt.h b/deps/icu-small/source/i18n/unicode/msgfmt.h index 14b57a114dc3a5..c949132fdae73b 100644 --- a/deps/icu-small/source/i18n/unicode/msgfmt.h +++ b/deps/icu-small/source/i18n/unicode/msgfmt.h @@ -420,7 +420,7 @@ class U_I18N_API MessageFormat : public Format { * result and should delete it when done. * @stable ICU 2.0 */ - virtual MessageFormat* clone() const; + virtual MessageFormat* clone() const override; /** * Returns true if the given Format objects are semantically equal. @@ -429,7 +429,7 @@ class U_I18N_API MessageFormat : public Format { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Sets the locale to be used for creating argument Format objects. @@ -589,7 +589,7 @@ class U_I18N_API MessageFormat : public Format { * arguments. If numbered, the formatName is the * corresponding UnicodeStrings (e.g. "0", "1", "2"...). * The returned Format object should not be deleted by the caller, - * nor should the ponter of other object . The pointer and its + * nor should the pointer of other object . The pointer and its * contents remain valid only until the next call to any method * of this class is made with this object. * @param formatName the name or number specifying a format @@ -715,7 +715,7 @@ class U_I18N_API MessageFormat : public Format { virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Formats the given array of arguments into a user-defined argument name @@ -790,7 +790,7 @@ class U_I18N_API MessageFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Convert an 'apostrophe-friendly' pattern into a standard @@ -850,7 +850,7 @@ class U_I18N_API MessageFormat : public Format { * other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for @@ -898,7 +898,7 @@ class U_I18N_API MessageFormat : public Format { public: PluralSelectorProvider(const MessageFormat &mf, UPluralType type); virtual ~PluralSelectorProvider(); - virtual UnicodeString select(void *ctx, double number, UErrorCode& ec) const; + virtual UnicodeString select(void *ctx, double number, UErrorCode& ec) const override; void reset(); private: @@ -1088,22 +1088,22 @@ class U_I18N_API MessageFormat : public Format { */ class U_I18N_API DummyFormat : public Format { public: - virtual UBool operator==(const Format&) const; - virtual DummyFormat* clone() const; + virtual bool operator==(const Format&) const override; + virtual DummyFormat* clone() const override; virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, UErrorCode& status) const; virtual UnicodeString& format(const Formattable&, UnicodeString& appendTo, FieldPosition&, - UErrorCode& status) const; + UErrorCode& status) const override; virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; virtual void parseObject(const UnicodeString&, Formattable&, - ParsePosition&) const; + ParsePosition&) const override; }; friend class MessageFormatAdapter; // getFormatTypeList() access diff --git a/deps/icu-small/source/i18n/unicode/nounit.h b/deps/icu-small/source/i18n/unicode/nounit.h index cee45e352df473..96aca35d0132e9 100644 --- a/deps/icu-small/source/i18n/unicode/nounit.h +++ b/deps/icu-small/source/i18n/unicode/nounit.h @@ -18,8 +18,6 @@ #include "unicode/measunit.h" -#ifndef U_HIDE_DRAFT_API - /** * \file * \brief C++ API: units for percent and permille @@ -31,7 +29,7 @@ U_NAMESPACE_BEGIN * Dimensionless unit for percent and permille. * Prior to ICU 68, this namespace was a class with the same name. * @see NumberFormatter - * @draft ICU 68 + * @stable ICU 68 */ namespace NoUnit { /** @@ -42,7 +40,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as the default MeasureUnit constructor. * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 base() { return MeasureUnit(); @@ -56,7 +54,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as MeasureUnit::getPercent(). * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 percent() { return MeasureUnit::getPercent(); @@ -70,7 +68,7 @@ namespace NoUnit { * Since ICU 68, this function returns the same value as MeasureUnit::getPermille(). * * @return a MeasureUnit instance - * @draft ICU 68 + * @stable ICU 68 */ static inline MeasureUnit U_EXPORT2 permille() { return MeasureUnit::getPermille(); @@ -79,7 +77,6 @@ namespace NoUnit { U_NAMESPACE_END -#endif /* U_HIDE_DRAFT_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ #endif /* U_SHOW_CPLUSPLUS_API */ diff --git a/deps/icu-small/source/i18n/unicode/numberformatter.h b/deps/icu-small/source/i18n/unicode/numberformatter.h index b987e64b937455..ece433b55f09ea 100644 --- a/deps/icu-small/source/i18n/unicode/numberformatter.h +++ b/deps/icu-small/source/i18n/unicode/numberformatter.h @@ -29,7 +29,7 @@ /** * \file * \brief C++ API: All-in-one formatter for localized numbers, currencies, and units. - * + * * For a full list of options, see icu::number::NumberFormatterSettings. * *

      @@ -1517,6 +1517,9 @@ struct U_I18N_API MacroProps : public UMemory {
           /** @internal */
           UNumberSignDisplay sign = UNUM_SIGN_COUNT;
       
      +    /** @internal */
      +    bool approximately = false;
      +
           /** @internal */
           UNumberDecimalSeparatorDisplay decimal = UNUM_DECIMAL_SEPARATOR_COUNT;
       
      @@ -2164,7 +2167,6 @@ class U_I18N_API NumberFormatterSettings {
            */
           Derived scale(const Scale &scale) &&;
       
      -#ifndef U_HIDE_DRAFT_API
           /**
            * Specifies the usage for which numbers will be formatted ("person-height",
            * "road", "rainfall", etc.)
      @@ -2203,9 +2205,9 @@ class U_I18N_API NumberFormatterSettings {
            * @param usage A `usage` parameter from the units resource. See the
            * unitPreferenceData in *source/data/misc/units.txt*, generated from
            * `unitPreferenceData` in [CLDR's
      -     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/master/common/supplemental/units.xml).
      +     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/main/common/supplemental/units.xml).
            * @return The fluent chain.
      -     * @draft ICU 68
      +     * @stable ICU 68
            */
           Derived usage(StringPiece usage) const &;
       
      @@ -2214,10 +2216,9 @@ class U_I18N_API NumberFormatterSettings {
            *
            * @param usage The unit `usage`.
            * @return The fluent chain.
      -     * @draft ICU 68
      +     * @stable ICU 68
            */
           Derived usage(StringPiece usage) &&;
      -#endif // U_HIDE_DRAFT_API
       
       #ifndef U_HIDE_DRAFT_API
       #ifndef U_HIDE_INTERNAL_API
      @@ -2486,6 +2487,12 @@ class U_I18N_API LocalizedNumberFormatter
       
       #ifndef U_HIDE_INTERNAL_API
       
      +            
      +    /**
      +     * @internal
      +     */
      +    const DecimalFormatSymbols* getDecimalFormatSymbols() const;
      +    
           /** Internal method.
            * @internal
            */
      @@ -2715,7 +2722,6 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
           template
           inline StringClass toDecimalNumber(UErrorCode& status) const;
       
      -#ifndef U_HIDE_DRAFT_API
       	/**
            * Gets the resolved output unit.
            *
      @@ -2725,10 +2731,11 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
            * as "foot-and-inch" or "hour-and-minute-and-second".
            *
            * @return `MeasureUnit`.
      -     * @draft ICU 68
      +     * @stable ICU 68
            */
           MeasureUnit getOutputUnit(UErrorCode& status) const;
       
      +#ifndef U_HIDE_INTERNAL_API
           /**
            * Gets the gender of the formatted output. Returns "" when the gender is
            * unknown, or for ungendered languages.
      @@ -2736,9 +2743,6 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
            * @internal ICU 69 technology preview.
            */
           const char *getGender(UErrorCode& status) const;
      -#endif // U_HIDE_DRAFT_API
      -
      -#ifndef U_HIDE_INTERNAL_API
       
           /**
            *  Gets the raw DecimalQuantity for plural rule selection.
      diff --git a/deps/icu-small/source/i18n/unicode/numberrangeformatter.h b/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
      index 432f2f6095dedf..363f7d48cfe169 100644
      --- a/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
      +++ b/deps/icu-small/source/i18n/unicode/numberrangeformatter.h
      @@ -608,12 +608,11 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
           /** @copydoc FormattedValue::nextPosition() */
           UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
       
      -#ifndef U_HIDE_DRAFT_API
           /**
            * Extracts the formatted range as a pair of decimal numbers. This endpoint
            * is useful for obtaining the exact number being printed after scaling
            * and rounding have been applied by the number range formatting pipeline.
      -     *
      +     * 
            * The syntax of the unformatted numbers is a "numeric string"
            * as defined in the Decimal Arithmetic Specification, available at
            * http://speleotrove.com/decimal
      @@ -626,11 +625,10 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
            *         for example, std::string.
            * @param status Set if an error occurs.
            * @return A pair of StringClasses containing the numeric strings.
      -     * @draft ICU 68
      +     * @stable ICU 68
            */
           template
           inline std::pair getDecimalNumbers(UErrorCode& status) const;
      -#endif // U_HIDE_DRAFT_API
       
           /**
            * Returns whether the pair of numbers was successfully formatted as a range or whether an identity fallback was
      @@ -643,6 +641,15 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
            */
           UNumberRangeIdentityResult getIdentityResult(UErrorCode& status) const;
       
      +#ifndef U_HIDE_DRAFT_API
      +    /**
      +     * Default constructor; makes an empty FormattedNumberRange.
      +     * @draft ICU 70
      +     */
      +    FormattedNumberRange()
      +        : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
      +#endif  /* U_HIDE_DRAFT_API */
      +
           /**
            * Copying not supported; use move constructor instead.
            */
      @@ -705,8 +712,7 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
           friend struct impl::UFormattedNumberRangeImpl;
       };
       
      -#ifndef U_HIDE_DRAFT_API
      -// inline impl of @draft ICU 68 method
      +// inline impl of @stable ICU 68 method
       template
       std::pair FormattedNumberRange::getDecimalNumbers(UErrorCode& status) const {
           StringClass str1;
      @@ -716,7 +722,6 @@ std::pair FormattedNumberRange::getDecimalNumbers(UErr
           getDecimalNumbers(sink1, sink2, status);
           return std::make_pair(str1, str2);
       }
      -#endif // U_HIDE_DRAFT_API
       
       /**
        * See the main description in numberrangeformatter.h for documentation and examples.
      diff --git a/deps/icu-small/source/i18n/unicode/numfmt.h b/deps/icu-small/source/i18n/unicode/numfmt.h
      index 058ccb38c7f1a4..135fe5b66093a9 100644
      --- a/deps/icu-small/source/i18n/unicode/numfmt.h
      +++ b/deps/icu-small/source/i18n/unicode/numfmt.h
      @@ -16,7 +16,7 @@
       *   04/17/97    aliu        Changed DigitCount to int per code review.
       *    07/20/98    stephen        JDK 1.2 sync up. Added scientific support.
       *                            Changed naming conventions to match C++ guidelines
      -*                            Derecated Java style constants (eg, INTEGER_FIELD)
      +*                            Deprecated Java style constants (eg, INTEGER_FIELD)
       ********************************************************************************
       */
       
      @@ -79,7 +79,7 @@ class StringEnumeration;
        *    #include "unicode/unistr.h"
        *    #include "unicode/ustream.h"
        *    using namespace std;
      - *
      + *    
        *    int main() {
        *        double myNumber = 7.0;
        *        UnicodeString myString;
      @@ -266,7 +266,7 @@ class U_I18N_API NumberFormat : public Format {
            * @return clone, or nullptr if an error occurred
            * @stable ICU 2.0
            */
      -    virtual NumberFormat* clone() const = 0;
      +    virtual NumberFormat* clone() const override = 0;
       
           /**
            * Return true if the given Format objects are semantically equal.
      @@ -274,7 +274,7 @@ class U_I18N_API NumberFormat : public Format {
            * @return    true if the given Format objects are semantically equal.
            * @stable ICU 2.0
            */
      -    virtual UBool operator==(const Format& other) const;
      +    virtual bool operator==(const Format& other) const override;
       
       
           using Format::format;
      @@ -297,7 +297,7 @@ class U_I18N_API NumberFormat : public Format {
           virtual UnicodeString& format(const Formattable& obj,
                                         UnicodeString& appendTo,
                                         FieldPosition& pos,
      -                                  UErrorCode& status) const;
      +                                  UErrorCode& status) const override;
       
           /**
            * Format an object to produce a string.  This method handles
      @@ -318,7 +318,7 @@ class U_I18N_API NumberFormat : public Format {
           virtual UnicodeString& format(const Formattable& obj,
                                         UnicodeString& appendTo,
                                         FieldPositionIterator* posIter,
      -                                  UErrorCode& status) const;
      +                                  UErrorCode& status) const override;
       
           /**
            * Parse a string to produce an object.  This methods handles
      @@ -350,7 +350,7 @@ class U_I18N_API NumberFormat : public Format {
            */
           virtual void parseObject(const UnicodeString& source,
                                    Formattable& result,
      -                             ParsePosition& parse_pos) const;
      +                             ParsePosition& parse_pos) const override;
       
           /**
            * Format a double number. These methods call the NumberFormat
      @@ -685,7 +685,7 @@ class U_I18N_API NumberFormat : public Format {
            * true, the string "1234." would be parsed as the integer value
            * 1234 and parsing would stop at the "." character.  Of course,
            * the exact format accepted by the parse operation is locale
      -     * dependant and determined by sub-classes of NumberFormat.
      +     * dependent and determined by sub-classes of NumberFormat.
            * @return    true if this format will parse numbers as integers
            *            only.
            * @stable ICU 2.0
      @@ -1041,7 +1041,7 @@ class U_I18N_API NumberFormat : public Format {
       
           /**
            * Get the rounding mode. This will always return NumberFormat::ERoundingMode::kRoundUnnecessary
      -     * if the subclass does not support rounding.
      +     * if the subclass does not support rounding. 
            * @return A rounding mode
            * @stable ICU 60
            */
      @@ -1077,7 +1077,7 @@ class U_I18N_API NumberFormat : public Format {
            * other classes have different class IDs.
            * @stable ICU 2.0
            */
      -    virtual UClassID getDynamicClassID(void) const = 0;
      +    virtual UClassID getDynamicClassID(void) const override = 0;
       
       protected:
       
      @@ -1238,12 +1238,12 @@ class U_I18N_API SimpleNumberFormatFactory : public NumberFormatFactory {
           /**
            * @stable ICU 2.6
            */
      -    virtual UBool visible(void) const;
      +    virtual UBool visible(void) const override;
       
           /**
            * @stable ICU 2.6
            */
      -    virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const;
      +    virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const override;
       };
       #endif /* #if !UCONFIG_NO_SERVICE */
       
      diff --git a/deps/icu-small/source/i18n/unicode/numsys.h b/deps/icu-small/source/i18n/unicode/numsys.h
      index efdf0c0f669a35..4f839d0f354eff 100644
      --- a/deps/icu-small/source/i18n/unicode/numsys.h
      +++ b/deps/icu-small/source/i18n/unicode/numsys.h
      @@ -42,7 +42,7 @@ U_NAMESPACE_BEGIN
       constexpr const size_t kInternalNumSysNameCapacity = 8;
       
       /**
      - * Defines numbering systems. A numbering system describes the scheme by which
      + * Defines numbering systems. A numbering system describes the scheme by which 
        * numbers are to be presented to the end user.  In its simplest form, a numbering
        * system describes the set of digit characters that are to be used to display
        * numbers, such as Western digits, Thai digits, Arabic-Indic digits, etc., in a
      @@ -100,7 +100,7 @@ class U_I18N_API NumberingSystem : public UObject {
           static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status);
       
           /**
      -     * Create a numbering system using the specified radix, type, and description.
      +     * Create a numbering system using the specified radix, type, and description. 
            * @param radix         The radix (base) for this numbering system.
            * @param isAlgorithmic true if the numbering system is algorithmic rather than numeric.
            * @param description   The string representing the set of digits used in a numeric system, or the name of the RBNF
      @@ -192,7 +192,7 @@ class U_I18N_API NumberingSystem : public UObject {
            *
            * @stable ICU 4.2
            */
      -    virtual UClassID getDynamicClassID() const;
      +    virtual UClassID getDynamicClassID() const override;
       
       
       private:
      diff --git a/deps/icu-small/source/i18n/unicode/plurfmt.h b/deps/icu-small/source/i18n/unicode/plurfmt.h
      index fde2abcfae5ac2..db16054605731f 100644
      --- a/deps/icu-small/source/i18n/unicode/plurfmt.h
      +++ b/deps/icu-small/source/i18n/unicode/plurfmt.h
      @@ -70,7 +70,7 @@ class NFRule;
        *     use the predefined keywords. The whole plural formatting of messages can
        *     be done using localized patterns from resource bundles. For predefined plural
        *     rules, see the CLDR Language Plural Rules page at
      - *    http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
      + *     https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html
        * 
        * 

      *

      Usage of PluralFormat

      @@ -389,7 +389,7 @@ class U_I18N_API PluralFormat : public Format { FieldPosition& pos, UErrorCode& status) const; -#ifndef U_HIDE_DEPRECATED_API +#ifndef U_HIDE_DEPRECATED_API /** * Sets the locale used by this PluraFormat object. * Note: Calling this method resets this PluraFormat object, @@ -434,7 +434,7 @@ class U_I18N_API PluralFormat : public Format { * @return true if other is semantically equal to this. * @stable ICU 4.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if another object is semantically unequal to this one. @@ -443,19 +443,19 @@ class U_I18N_API PluralFormat : public Format { * @return true if other is semantically unequal to this. * @stable ICU 4.0 */ - virtual UBool operator!=(const Format& other) const; + virtual bool operator!=(const Format& other) const; /** * Clones this Format object polymorphically. The caller owns the * result and should delete it when done. * @stable ICU 4.0 */ - virtual PluralFormat* clone() const; + virtual PluralFormat* clone() const override; /** * Formats a plural message for a number taken from a Formattable object. * - * @param obj The object containing a number for which the + * @param obj The object containing a number for which the * plural message should be formatted. * The object must be of a numeric type. * @param appendTo output parameter to receive result. @@ -469,7 +469,7 @@ class U_I18N_API PluralFormat : public Format { UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Returns the pattern from applyPattern() or constructor(). @@ -505,7 +505,7 @@ class U_I18N_API PluralFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -520,7 +520,7 @@ class U_I18N_API PluralFormat : public Format { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: /** @@ -548,7 +548,7 @@ class U_I18N_API PluralFormat : public Format { virtual ~PluralSelectorAdapter(); - virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const; + virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const override; void reset(); diff --git a/deps/icu-small/source/i18n/unicode/plurrule.h b/deps/icu-small/source/i18n/unicode/plurrule.h index 19956cd32c6180..e90cd66a7f7c4e 100644 --- a/deps/icu-small/source/i18n/unicode/plurrule.h +++ b/deps/icu-small/source/i18n/unicode/plurrule.h @@ -71,8 +71,8 @@ class UFormattedNumberRangeData; * default rule(other) is returned. * * For more information, details, and tips for writing rules, see the - * LDML spec, C.11 Language Plural Rules: - * http://www.unicode.org/draft/reports/tr35/tr35.html#Language_Plural_Rules + * LDML spec, Part 3.5 Language Plural Rules: + * https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules * * Examples:
        *   "one: n is 1; few: n in 2..4"
      @@ -200,7 +200,7 @@ class UFormattedNumberRangeData; *

      * ICU defines plural rules for many locales based on CLDR Language Plural Rules. * For these predefined rules, see CLDR page at - * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html *

      */ class U_I18N_API PluralRules : public UObject { @@ -373,25 +373,23 @@ class U_I18N_API PluralRules : public UObject { */ UnicodeString select(const number::FormattedNumber& number, UErrorCode& status) const; -#ifndef U_HIDE_DRAFT_API /** * Given a formatted number range, returns the overall plural form of the * range. For example, "3-5" returns "other" in English. * * To get a FormattedNumberRange, see NumberRangeFormatter. - * + * * This method only works if PluralRules was created with a locale. If it was created * from PluralRules::createRules(), this method sets status code U_UNSUPPORTED_ERROR. - * + * * @param range The number range onto which the rules will be applied. * @param status Set if an error occurs while selecting plural keyword. * This could happen if the FormattedNumberRange is invalid, * or if plural ranges data is unavailable. * @return The keyword of the selected rule. - * @draft ICU 68 + * @stable ICU 68 */ UnicodeString select(const number::FormattedNumberRange& range, UErrorCode& status) const; -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API /** @@ -534,21 +532,21 @@ class U_I18N_API PluralRules : public UObject { * Compares the equality of two PluralRules objects. * * @param other The other PluralRules object to be compared with. - * @return True if the given PluralRules is the same as this + * @return true if the given PluralRules is the same as this * PluralRules; false otherwise. * @stable ICU 4.0 */ - virtual UBool operator==(const PluralRules& other) const; + virtual bool operator==(const PluralRules& other) const; /** * Compares the inequality of two PluralRules objects. * * @param other The PluralRules object to be compared with. - * @return True if the given PluralRules is not the same as this + * @return true if the given PluralRules is not the same as this * PluralRules; false otherwise. * @stable ICU 4.0 */ - UBool operator!=(const PluralRules& other) const {return !operator==(other);} + bool operator!=(const PluralRules& other) const {return !operator==(other);} /** @@ -564,7 +562,7 @@ class U_I18N_API PluralRules : public UObject { * * @stable ICU 4.0 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: diff --git a/deps/icu-small/source/i18n/unicode/rbnf.h b/deps/icu-small/source/i18n/unicode/rbnf.h index ce60b9bec6853a..0a5a378e13b0b5 100644 --- a/deps/icu-small/source/i18n/unicode/rbnf.h +++ b/deps/icu-small/source/i18n/unicode/rbnf.h @@ -108,7 +108,7 @@ enum URBNFRuleSetTag { *

      In these rules, the base value is spelled out explicitly and set off from the * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable * to all numbers from its own base value to one less than the next rule's base value. The - * ">>" token is called a substitution and tells the fomatter to + * ">>" token is called a substitution and tells the formatter to * isolate the number's ones digit, format it using this same set of rules, and place the * result at the position of the ">>" token. Text in brackets is omitted if * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24 @@ -698,7 +698,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @return A copy of the object. * @stable ICU 2.6 */ - virtual RuleBasedNumberFormat* clone() const; + virtual RuleBasedNumberFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. @@ -707,7 +707,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.6 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; //----------------------------------------------------------------------- // public API functions @@ -793,7 +793,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(int32_t number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified 64-bit number using the default ruleset. @@ -805,7 +805,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(int64_t number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified number using the default ruleset. * @param number The number to format. @@ -816,7 +816,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual UnicodeString& format(double number, UnicodeString& toAppendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Formats the specified number using the named ruleset. @@ -888,13 +888,13 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { virtual UnicodeString& format(const number::impl::DecimalQuantity &number, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; public: using NumberFormat::parse; /** - * Parses the specfied string, beginning at the specified position, according + * Parses the specified string, beginning at the specified position, according * to this formatter's rules. This will match the string against all of the * formatter's public rule sets and return the value corresponding to the longest * parseable substring. This function's behavior is affected by the lenient @@ -909,7 +909,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { */ virtual void parse(const UnicodeString& text, Formattable& result, - ParsePosition& parsePosition) const; + ParsePosition& parsePosition) const override; #if !UCONFIG_NO_COLLATION @@ -946,7 +946,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @see RuleBasedCollator * @stable ICU 2.0 */ - virtual void setLenient(UBool enabled); + virtual void setLenient(UBool enabled) override; /** * Returns true if lenient-parse mode is turned on. Lenient parsing is off @@ -955,7 +955,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @see #setLenient * @stable ICU 2.0 */ - virtual inline UBool isLenient(void) const; + virtual inline UBool isLenient(void) const override; #endif @@ -984,24 +984,24 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * @param value The UDisplayContext value to set. * @param status Input/output status. If at entry this indicates a failure * status, the function will do nothing; otherwise this will be - * updated with any new status from the function. + * updated with any new status from the function. * @stable ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; /** * Get the rounding mode. * @return A rounding mode * @stable ICU 60 */ - virtual ERoundingMode getRoundingMode(void) const; + virtual ERoundingMode getRoundingMode(void) const override; /** * Set the rounding mode. * @param roundingMode A rounding mode * @stable ICU 60 */ - virtual void setRoundingMode(ERoundingMode roundingMode); + virtual void setRoundingMode(ERoundingMode roundingMode) override; public: /** @@ -1016,7 +1016,7 @@ class U_I18N_API RuleBasedNumberFormat : public NumberFormat { * * @stable ICU 2.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Sets the decimal format symbols, which is generally not changed diff --git a/deps/icu-small/source/i18n/unicode/rbtz.h b/deps/icu-small/source/i18n/unicode/rbtz.h index 9fc0fd4657e7b8..1eca70c338bf60 100644 --- a/deps/icu-small/source/i18n/unicode/rbtz.h +++ b/deps/icu-small/source/i18n/unicode/rbtz.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Rule based customizable time zone */ @@ -76,7 +76,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { *semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Return true if the given TimeZone objects are @@ -86,20 +86,21 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZone& that) const; + virtual bool operator!=(const TimeZone& that) const; /** - * Adds the TimeZoneRule which represents time transitions. - * The TimeZoneRule must have start times, that is, the result - * of isTransitionRule() must be true. Otherwise, U_ILLEGAL_ARGUMENT_ERROR + * Adds the `TimeZoneRule` which represents time transitions. + * The `TimeZoneRule` must have start times, that is, the result + * of `isTransitionRule()` must be true. Otherwise, U_ILLEGAL_ARGUMENT_ERROR * is set to the error code. - * The input TimeZoneRule is adopted by this - * RuleBasedTimeZone on successful completion of this method, - * thus, the caller must not delete it when no error is returned. - * After all rules are added, the caller must call complete() method to - * make this RuleBasedTimeZone ready to handle common time + * The input `TimeZoneRule` is adopted by this `RuleBasedTimeZone`; + * the caller must not delete it. Should an error condition prevent + * the successful adoption of the rule, this function will delete it. + * + * After all rules are added, the caller must call `complete()` method to + * make this `RuleBasedTimeZone` ready to handle common time * zone functions. - * @param rule The TimeZoneRule. + * @param rule The `TimeZoneRule`. * @param status Output param to filled in with a success or an error. * @stable ICU 3.8 */ @@ -123,7 +124,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual RuleBasedTimeZone* clone() const; + virtual RuleBasedTimeZone* clone() const override; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -150,7 +151,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -173,7 +174,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Returns the time zone raw and GMT offset for the given moment @@ -198,7 +199,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; /** * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -207,7 +208,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 3.8 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -216,7 +217,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 3.8 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Queries if this time zone uses daylight savings time. @@ -224,7 +225,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * false, otherwise. * @stable ICU 3.8 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -240,7 +241,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * false, otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -251,7 +252,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * with the possible exception of the ID * @stable ICU 3.8 */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * Gets the first time zone transition after the base time. @@ -261,7 +262,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -271,7 +272,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -281,7 +282,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -300,7 +301,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -310,7 +311,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ private: @@ -360,7 +361,7 @@ class U_I18N_API RuleBasedTimeZone : public BasicTimeZone { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/regex.h b/deps/icu-small/source/i18n/unicode/regex.h index 8ee74c39038163..f8e32922f4e3b1 100644 --- a/deps/icu-small/source/i18n/unicode/regex.h +++ b/deps/icu-small/source/i18n/unicode/regex.h @@ -119,7 +119,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @return true if the objects are equivalent. * @stable ICU 2.4 */ - UBool operator==(const RegexPattern& that) const; + bool operator==(const RegexPattern& that) const; /** * Comparison operator. Two RegexPattern objects are considered equal if they @@ -129,7 +129,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @return true if the objects are different. * @stable ICU 2.4 */ - inline UBool operator!=(const RegexPattern& that) const {return ! operator ==(that);} + inline bool operator!=(const RegexPattern& that) const {return ! operator ==(that);} /** * Assignment operator. After assignment, this RegexPattern will behave identically @@ -346,7 +346,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { */ virtual RegexMatcher *matcher(const UnicodeString &input, UErrorCode &status) const; - + private: /** * Cause a compilation error if an application accidentally attempts to @@ -426,8 +426,8 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * @stable ICU 2.4 */ virtual UnicodeString pattern() const; - - + + /** * Returns the regular expression from which this pattern was compiled. This method will work * even if the pattern was compiled from a UnicodeString. @@ -484,9 +484,9 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -528,9 +528,9 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -554,7 +554,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * of fields, the trailing part of the input string, including any * field delimiters, is placed in the last destination string. * @param status A reference to a UErrorCode to receive any errors. - * @return The number of destination strings used. + * @return The number of destination strings used. * * @stable ICU 4.6 */ @@ -569,7 +569,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { * * @stable ICU 2.4 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -601,7 +601,7 @@ class U_I18N_API RegexPattern U_FINAL : public UObject { // >= this value. For some patterns, this calculated // value may be less than the true shortest // possible match. - + int32_t fFrameSize; // Size of a state stack frame in the // execution engine. @@ -771,7 +771,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** - * Resets the matcher, then attempts to match the input beginning + * Resets the matcher, then attempts to match the input beginning * at the specified startIndex, and extending to the end of the input. * The input region is reset to include the entire input string. * A successful match must extend to the end of the input. @@ -785,7 +785,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Attempts to match the input string, starting from the beginning of the region, - * against the pattern. Like the matches() method, this function + * against the pattern. Like the matches() method, this function * always starts at the beginning of the input region; * unlike that function, it does not require that the entire region be matched. * @@ -911,7 +911,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * * @stable ICU 4.6 */ - virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; + virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; /** * Returns a shallow clone of the entire live input string with the UText current native index @@ -1123,14 +1123,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * without changing any other aspect of the matching state. * The new and previous text strings must have the same content. * - * This function is intended for use in environments where ICU is operating on + * This function is intended for use in environments where ICU is operating on * strings that may move around in memory. It provides a mechanism for notifying * ICU that the string has been relocated, and providing a new UText to access the * string in its new position. * * Note that the regular expression implementation never copies the underlying text - * of a string being matched, but always operates directly on the original text - * provided by the user. Refreshing simply drops the references to the old text + * of a string being matched, but always operates directly on the original text + * provided by the user. Refreshing simply drops the references to the old text * and replaces them with references to the new. * * Caution: this function is normally used only by very specialized, @@ -1140,7 +1140,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @param input The new (moved) text string. * @param status Receives errors detected by this function. * - * @stable ICU 4.8 + * @stable ICU 4.8 */ virtual RegexMatcher &refreshInputText(UText *input, UErrorCode &status); @@ -1168,7 +1168,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 2.4 */ virtual const UnicodeString &input() const; - + /** * Returns the input string being matched. This is the live input text; it should not be * altered or deleted. This method will work even if the input was originally supplied as @@ -1178,7 +1178,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *inputText() const; - + /** * Returns the input string being matched, either by copying it into the provided * UText parameter or by returning a shallow clone of the live input. Note that copying @@ -1190,7 +1190,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *getInput(UText *dest, UErrorCode &status) const; - + /** Sets the limits of this matcher's region. * The region is the part of the input string that will be searched to find a match. @@ -1212,14 +1212,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { */ virtual RegexMatcher ®ion(int64_t start, int64_t limit, UErrorCode &status); - /** + /** * Identical to region(start, limit, status) but also allows a start position without * resetting the region state. * @param regionStart The region start * @param regionLimit the limit of the region * @param startIndex The (native) index within the region bounds at which to begin searches. * @param status A reference to a UErrorCode to receive any errors. - * If startIndex is not within the specified region bounds, + * If startIndex is not within the specified region bounds, * U_INDEX_OUTOFBOUNDS_ERROR is returned. * @stable ICU 4.6 */ @@ -1296,14 +1296,14 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { **/ virtual RegexMatcher &useTransparentBounds(UBool b); - + /** * Return true if this matcher is using anchoring bounds. * By default, matchers use anchoring region bounds. * * @return true if this matcher is using anchoring bounds. * @stable ICU 4.0 - */ + */ virtual UBool hasAnchoringBounds() const; @@ -1396,7 +1396,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *replaceAll(UText *replacement, UText *dest, UErrorCode &status); - + /** * Replaces the first substring of the input that matches @@ -1419,7 +1419,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 2.4 */ virtual UnicodeString replaceFirst(const UnicodeString &replacement, UErrorCode &status); - + /** * Replaces the first substring of the input that matches @@ -1446,8 +1446,8 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.6 */ virtual UText *replaceFirst(UText *replacement, UText *dest, UErrorCode &status); - - + + /** * Implements a replace operation intended to be used as part of an * incremental find-and-replace. @@ -1477,8 +1477,8 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { */ virtual RegexMatcher &appendReplacement(UnicodeString &dest, const UnicodeString &replacement, UErrorCode &status); - - + + /** * Implements a replace operation intended to be used as part of an * incremental find-and-replace. @@ -1595,10 +1595,10 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { UText *dest[], int32_t destCapacity, UErrorCode &status); - + /** * Set a processing time limit for match operations with this Matcher. - * + * * Some patterns, when matching certain strings, can run in exponential time. * For practical purposes, the match operation may appear to be in an * infinite loop. @@ -1649,7 +1649,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * @stable ICU 4.0 */ virtual void setStackLimit(int32_t limit, UErrorCode &status); - + /** * Get the size of the heap storage available for use by the back tracking stack. * @@ -1681,7 +1681,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Get the callback function for this URegularExpression. * - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setMatchCallback() was called. @@ -1714,7 +1714,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { /** * Get the find progress callback function for this URegularExpression. * - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setFindProgressCallback() was called. @@ -1746,7 +1746,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: // Constructors and other object boilerplate are private. @@ -1783,9 +1783,9 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // Call user find callback function, if set. Return true if operation should be interrupted. inline UBool findProgressInterrupt(int64_t matchIndex, UErrorCode &status); - + int64_t appendGroup(int32_t groupNum, UText *dest, UErrorCode &status) const; - + UBool findUsingChunk(UErrorCode &status); void MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &status); UBool isChunkWordBoundary(int32_t pos); @@ -1800,13 +1800,13 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // Only created if the pattern contains backreferences. int64_t fInputLength; // Full length of the input text. int32_t fFrameSize; // The size of a frame in the backtrack stack. - + int64_t fRegionStart; // Start of the input region, default = 0. int64_t fRegionLimit; // End of input region, default to input.length. - + int64_t fAnchorStart; // Region bounds for anchoring operations (^ or $). int64_t fAnchorLimit; // See useAnchoringBounds - + int64_t fLookStart; // Region bounds for look-ahead/behind and int64_t fLookLimit; // and other boundary tests. See // useTransparentBounds @@ -1828,7 +1828,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { // or -1 if there was no previous match. int64_t fAppendPosition; // First position after the end of the previous // appendReplacement(). As described by the - // JavaDoc for Java Matcher, where it is called + // JavaDoc for Java Matcher, where it is called // "append position" UBool fHitEnd; // True if the last match touched the end of input. UBool fRequireEnd; // True if the last match required end-of-input @@ -1844,7 +1844,7 @@ class U_I18N_API RegexMatcher U_FINAL : public UObject { int32_t fTimeLimit; // Max time (in arbitrary steps) to let the // match engine run. Zero for unlimited. - + int32_t fTime; // Match time, accumulates while matching. int32_t fTickCounter; // Low bits counter for time. Counts down StateSaves. // Kept separately from fTime to keep as much diff --git a/deps/icu-small/source/i18n/unicode/region.h b/deps/icu-small/source/i18n/unicode/region.h index 66f5f920757348..ba4a650f4f9ca6 100644 --- a/deps/icu-small/source/i18n/unicode/region.h +++ b/deps/icu-small/source/i18n/unicode/region.h @@ -11,7 +11,7 @@ #define REGION_H /** - * \file + * \file * \brief C++ API: Region classes (territory containment) */ @@ -30,23 +30,23 @@ U_NAMESPACE_BEGIN /** - * Region is the class representing a Unicode Region Code, also known as a + * Region is the class representing a Unicode Region Code, also known as a * Unicode Region Subtag, which is defined based upon the BCP 47 standard. We often think of * "regions" as "countries" when defining the characteristics of a locale. Region codes There are different * types of region codes that are important to distinguish. *

      - * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or - * selected economic and other grouping" as defined in - * UN M.49 (http://unstats.un.org/unsd/methods/m49/m49regin.htm). - * These are typically 3-digit codes, but contain some 2-letter codes, such as the LDML code QO + * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or + * selected economic and other grouping" as defined in + * UN M.49 (http://unstats.un.org/unsd/methods/m49/m49regin.htm). + * These are typically 3-digit codes, but contain some 2-letter codes, such as the LDML code QO * added for Outlying Oceania. Not all UNM.49 codes are defined in LDML, but most of them are. * Macroregions are represented in ICU by one of three region types: WORLD ( region code 001 ), * CONTINENTS ( regions contained directly by WORLD ), and SUBCONTINENTS ( things contained directly * by a continent ). *

      * TERRITORY - A Region that is not a Macroregion. These are typically codes for countries, but also - * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code - * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate + * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code + * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate * codes. The codes are typically 2-letter codes aligned with the ISO 3166 standard, but BCP47 allows * for the use of 3-digit codes in the future. *

      @@ -57,7 +57,7 @@ U_NAMESPACE_BEGIN * usually due to a country splitting into multiple territories or changing its name. *

      * GROUPING - A widely understood grouping of territories that has a well defined membership such - * that a region code has been assigned for it. Some of these are UNM.49 codes that do't fall into + * that a region code has been assigned for it. Some of these are UNM.49 codes that do't fall into * the world/continent/sub-continent hierarchy, while others are just well known groupings that have * their own region code. Region "EU" (European Union) is one such region code that is a grouping. * Groupings will never be returned by the getContainingRegion() API, since a different type of region @@ -81,27 +81,27 @@ class U_I18N_API Region : public UObject { * Returns true if the two regions are equal. * @stable ICU 51 */ - UBool operator==(const Region &that) const; + bool operator==(const Region &that) const; /** * Returns true if the two regions are NOT equal; that is, if operator ==() returns false. * @stable ICU 51 */ - UBool operator!=(const Region &that) const; - + bool operator!=(const Region &that) const; + /** * Returns a pointer to a Region using the given region code. The region code can be either 2-letter ISO code, * 3-letter ISO code, UNM.49 numeric code, or other valid Unicode Region Code as defined by the LDML specification. * The identifier will be canonicalized internally using the supplemental metadata as defined in the CLDR. * If the region code is NULL or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ) - * @stable ICU 51 + * @stable ICU 51 */ static const Region* U_EXPORT2 getInstance(const char *region_code, UErrorCode &status); /** * Returns a pointer to a Region using the given numeric region code. If the numeric region code is not recognized, * the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ). - * @stable ICU 51 + * @stable ICU 51 */ static const Region* U_EXPORT2 getInstance (int32_t code, UErrorCode &status); @@ -110,12 +110,12 @@ class U_I18N_API Region : public UObject { * @stable ICU 55 */ static StringEnumeration* U_EXPORT2 getAvailable(URegionType type, UErrorCode &status); - + /** * Returns a pointer to the region that contains this region. Returns NULL if this region is code "001" (World) * or "ZZ" (Unknown region). For example, calling this method with region "IT" (Italy) returns the * region "039" (Southern Europe). - * @stable ICU 51 + * @stable ICU 51 */ const Region* getContainingRegion() const; @@ -125,7 +125,7 @@ class U_I18N_API Region : public UObject { * that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "URGN_DEPRECATED", or "URGN_UNKNOWN" * are not appropriate for use in this API. NULL will be returned in this case. For example, calling this method * with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "150" ( Europe ). - * @stable ICU 51 + * @stable ICU 51 */ const Region* getContainingRegion(URegionType type) const; @@ -148,10 +148,10 @@ class U_I18N_API Region : public UObject { * @stable ICU 55 */ StringEnumeration* getContainedRegions( URegionType type, UErrorCode &status ) const; - + /** * Returns true if this region contains the supplied other region anywhere in the region hierarchy. - * @stable ICU 51 + * @stable ICU 51 */ UBool contains(const Region &other) const; @@ -159,33 +159,33 @@ class U_I18N_API Region : public UObject { * For deprecated regions, return an enumeration over the IDs of the regions that are the preferred replacement * regions for this region. Returns null for a non-deprecated region. For example, calling this method with region * "SU" (Soviet Union) would return a list of the regions containing "RU" (Russia), "AM" (Armenia), "AZ" (Azerbaijan), etc... - * @stable ICU 55 + * @stable ICU 55 */ StringEnumeration* getPreferredValues(UErrorCode &status) const; /** * Return this region's canonical region code. - * @stable ICU 51 + * @stable ICU 51 */ const char* getRegionCode() const; /** * Return this region's numeric code. * Returns a negative value if the given region does not have a numeric code assigned to it. - * @stable ICU 51 + * @stable ICU 51 */ int32_t getNumericCode() const; /** * Returns the region type of this region. - * @stable ICU 51 + * @stable ICU 51 */ URegionType getType() const; #ifndef U_HIDE_INTERNAL_API /** * Cleans up statically allocated memory. - * @internal + * @internal */ static void cleanupRegionData(); #endif /* U_HIDE_INTERNAL_API */ @@ -209,7 +209,7 @@ class U_I18N_API Region : public UObject { * Initializes the region data from the ICU resource bundles. The region data * contains the basic relationships such as which regions are known, what the numeric * codes are, any known aliases, and the territory containment data. - * + * * If the region data has already loaded, then this method simply returns without doing * anything meaningful. */ diff --git a/deps/icu-small/source/i18n/unicode/reldatefmt.h b/deps/icu-small/source/i18n/unicode/reldatefmt.h index f3feeead87b6bc..2a3742fd63c392 100644 --- a/deps/icu-small/source/i18n/unicode/reldatefmt.h +++ b/deps/icu-small/source/i18n/unicode/reldatefmt.h @@ -560,7 +560,7 @@ class U_I18N_API RelativeDateTimeFormatter : public UObject { * * This method returns a String. To get more information about the * formatting result, use formatNumericToValue(). - * + * * @param offset The signed offset for the specified unit. This * will be formatted according to this object's * NumberFormat object. @@ -586,7 +586,7 @@ class U_I18N_API RelativeDateTimeFormatter : public UObject { * * This method returns a FormattedRelativeDateTime, which exposes more * information than the String returned by formatNumeric(). - * + * * @param offset The signed offset for the specified unit. This * will be formatted according to this object's * NumberFormat object. diff --git a/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h b/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h index a56b8ca2685cf2..aa7e80543e4066 100644 --- a/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h +++ b/deps/icu-small/source/i18n/unicode/scientificnumberformatter.h @@ -19,7 +19,7 @@ #include "unicode/unistr.h" /** - * \file + * \file * \brief C++ API: Formats in scientific notation. */ @@ -159,14 +159,14 @@ class U_I18N_API ScientificNumberFormatter : public UObject { class U_I18N_API SuperscriptStyle : public Style { public: - virtual SuperscriptStyle *clone() const; + virtual SuperscriptStyle *clone() const override; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, - UErrorCode &status) const; + UErrorCode &status) const override; }; class U_I18N_API MarkupStyle : public Style { @@ -177,14 +177,14 @@ class U_I18N_API ScientificNumberFormatter : public UObject { : Style(), fBeginMarkup(beginMarkup), fEndMarkup(endMarkup) { } - virtual MarkupStyle *clone() const; + virtual MarkupStyle *clone() const override; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, - UErrorCode &status) const; + UErrorCode &status) const override; private: UnicodeString fBeginMarkup; UnicodeString fEndMarkup; @@ -219,4 +219,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ -#endif +#endif diff --git a/deps/icu-small/source/i18n/unicode/search.h b/deps/icu-small/source/i18n/unicode/search.h index 3074839b5fbafc..295a3ce67e9cf5 100644 --- a/deps/icu-small/source/i18n/unicode/search.h +++ b/deps/icu-small/source/i18n/unicode/search.h @@ -17,10 +17,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: SearchIterator object. */ - + #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION #include "unicode/uobject.h" @@ -42,27 +42,27 @@ U_NAMESPACE_BEGIN /** * - * SearchIterator is an abstract base class that provides + * SearchIterator is an abstract base class that provides * methods to search for a pattern within a text string. Instances of - * SearchIterator maintain a current position and scans over the - * target text, returning the indices the pattern is matched and the length + * SearchIterator maintain a current position and scans over the + * target text, returning the indices the pattern is matched and the length * of each match. *

      - * SearchIterator defines a protocol for text searching. - * Subclasses provide concrete implementations of various search algorithms. - * For example, StringSearch implements language-sensitive pattern - * matching based on the comparison rules defined in a - * RuleBasedCollator object. - *

      - * Other options for searching includes using a BreakIterator to restrict + * SearchIterator defines a protocol for text searching. + * Subclasses provide concrete implementations of various search algorithms. + * For example, StringSearch implements language-sensitive pattern + * matching based on the comparison rules defined in a + * RuleBasedCollator object. + *

      + * Other options for searching includes using a BreakIterator to restrict * the points at which matches are detected. *

      * SearchIterator provides an API that is similar to that of - * other text iteration classes such as BreakIterator. Using - * this class, it is easy to scan through text looking for all occurances of - * a given pattern. The following example uses a StringSearch - * object to find all instances of "fox" in the target string. Any other - * subclass of SearchIterator can be used in an identical + * other text iteration classes such as BreakIterator. Using + * this class, it is easy to scan through text looking for all occurrences of + * a given pattern. The following example uses a StringSearch + * object to find all instances of "fox" in the target string. Any other + * subclass of SearchIterator can be used in an identical * manner. *

      
        * UnicodeString target("The quick brown fox jumped over the lazy fox");
      @@ -70,7 +70,7 @@ U_NAMESPACE_BEGIN
        *
        * SearchIterator *iter  = new StringSearch(pattern, target);
        * UErrorCode      error = U_ZERO_ERROR;
      - * for (int pos = iter->first(error); pos != USEARCH_DONE;
      + * for (int pos = iter->first(error); pos != USEARCH_DONE; 
        *                               pos = iter->next(error)) {
        *     printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength());
        * }
      @@ -85,9 +85,9 @@ class U_I18N_API SearchIterator : public UObject {
       
           // public constructors and destructors -------------------------------
       
      -    /**
      -    * Copy constructor that creates a SearchIterator instance with the same
      -    * behavior, and iterating over the same text.
      +    /** 
      +    * Copy constructor that creates a SearchIterator instance with the same 
      +    * behavior, and iterating over the same text. 
           * @param other the SearchIterator instance to be copied.
           * @stable ICU 2.0
           */
      @@ -102,14 +102,14 @@ class U_I18N_API SearchIterator : public UObject {
           // public get and set methods ----------------------------------------
       
           /**
      -     * Sets the index to point to the given position, and clears any state
      +     * Sets the index to point to the given position, and clears any state 
            * that's affected.
            * 

      - * This method takes the argument index and sets the position in the text - * string accordingly without checking if the index is pointing to a - * valid starting point to begin searching. + * This method takes the argument index and sets the position in the text + * string accordingly without checking if the index is pointing to a + * valid starting point to begin searching. * @param position within the text to be set. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs * @stable ICU 2.0 @@ -127,7 +127,7 @@ class U_I18N_API SearchIterator : public UObject { virtual int32_t getOffset(void) const = 0; /** - * Sets the text searching attributes located in the enum + * Sets the text searching attributes located in the enum * USearchAttribute with values from the enum USearchAttributeValue. * USEARCH_DEFAULT can be used for all attributes for resetting. * @param attribute text attribute (enum USearchAttribute) to be set @@ -139,23 +139,23 @@ class U_I18N_API SearchIterator : public UObject { USearchAttributeValue value, UErrorCode &status); - /** + /** * Gets the text searching attributes * @param attribute text attribute (enum USearchAttribute) to be retrieve * @return text attribute value * @stable ICU 2.0 */ USearchAttributeValue getAttribute(USearchAttribute attribute) const; - + /** * Returns the index to the match in the text string that was searched. - * This call returns a valid result only after a successful call to + * This call returns a valid result only after a successful call to * first, next, previous, or last. - * Just after construction, or after a searching method returns + * Just after construction, or after a searching method returns * USEARCH_DONE, this method will return USEARCH_DONE. *

      * Use getMatchedLength to get the matched string length. - * @return index of a substring within the text string that is being + * @return index of a substring within the text string that is being * searched. * @see #first * @see #next @@ -166,10 +166,10 @@ class U_I18N_API SearchIterator : public UObject { int32_t getMatchedStart(void) const; /** - * Returns the length of text in the string which matches the search - * pattern. This call returns a valid result only after a successful call + * Returns the length of text in the string which matches the search + * pattern. This call returns a valid result only after a successful call * to first, next, previous, or last. - * Just after construction, or after a searching method returns + * Just after construction, or after a searching method returns * USEARCH_DONE, this method will return 0. * @return The length of the match in the target text, or 0 if there * is no match currently. @@ -180,13 +180,13 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ int32_t getMatchedLength(void) const; - + /** - * Returns the text that was matched by the most recent call to + * Returns the text that was matched by the most recent call to * first, next, previous, or last. - * If the iterator is not pointing at a valid match (e.g. just after - * construction or after USEARCH_DONE has been returned, - * returns an empty string. + * If the iterator is not pointing at a valid match (e.g. just after + * construction or after USEARCH_DONE has been returned, + * returns an empty string. * @param result stores the matched string or an empty string if a match * is not found. * @see #first @@ -196,16 +196,16 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ void getMatchedText(UnicodeString &result) const; - + /** * Set the BreakIterator that will be used to restrict the points - * at which matches are detected. The user is responsible for deleting + * at which matches are detected. The user is responsible for deleting * the breakiterator. - * @param breakiter A BreakIterator that will be used to restrict the - * points at which matches are detected. If a match is - * found, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match will be rejected and another will be searched + * @param breakiter A BreakIterator that will be used to restrict the + * points at which matches are detected. If a match is + * found, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match will be rejected and another will be searched * for. If this parameter is NULL, no break * detection is attempted. * @param status for errors if it occurs @@ -213,10 +213,10 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ void setBreakIterator(BreakIterator *breakiter, UErrorCode &status); - + /** - * Returns the BreakIterator that is used to restrict the points at - * which matches are detected. This will be the same object that was + * Returns the BreakIterator that is used to restrict the points at + * which matches are detected. This will be the same object that was * passed to the constructor or to setBreakIterator. * Note that NULL is a legal value; it means that break * detection should not be attempted. @@ -227,34 +227,34 @@ class U_I18N_API SearchIterator : public UObject { const BreakIterator * getBreakIterator(void) const; /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different + * Set the string text to be searched. Text iteration will hence begin at + * the start of the text string. This method is useful if you want to + * re-use an iterator to search for the same pattern within a different * body of text. The user is responsible for deleting the text. * @param text string to be searched. - * @param status for errors. If the text length is 0, + * @param status for errors. If the text length is 0, * an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(const UnicodeString &text, UErrorCode &status); + virtual void setText(const UnicodeString &text, UErrorCode &status); /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different + * Set the string text to be searched. Text iteration will hence begin at + * the start of the text string. This method is useful if you want to + * re-use an iterator to search for the same pattern within a different * body of text. *

      - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * The user is responsible for deleting the text. * @param text string iterator to be searched. - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ virtual void setText(CharacterIterator &text, UErrorCode &status); - + /** * Return the string text to be searched. * @return text string to be searched. @@ -265,27 +265,27 @@ class U_I18N_API SearchIterator : public UObject { // operator overloading ---------------------------------------------- /** - * Equality operator. + * Equality operator. * @param that SearchIterator instance to be compared. - * @return true if both BreakIterators are of the same class, have the + * @return true if both BreakIterators are of the same class, have the * same behavior, terates over the same text and have the same * attributes. false otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const SearchIterator &that) const; + virtual bool operator==(const SearchIterator &that) const; /** - * Not-equal operator. + * Not-equal operator. * @param that SearchIterator instance to be compared. * @return false if operator== returns true, and vice versa. * @stable ICU 2.0 */ - UBool operator!=(const SearchIterator &that) const; + bool operator!=(const SearchIterator &that) const; // public methods ---------------------------------------------------- /** - * Returns a copy of SearchIterator with the same behavior, and + * Returns a copy of SearchIterator with the same behavior, and * iterating over the same text, as this one. Note that all data will be * replicated, except for the text string to be searched. * @return cloned object @@ -294,14 +294,14 @@ class U_I18N_API SearchIterator : public UObject { virtual SearchIterator* safeClone(void) const = 0; /** - * Returns the first index at which the string text matches the search - * pattern. The iterator is adjusted so that its current index (as - * returned by getOffset) is the match position if one + * Returns the first index at which the string text matches the search + * pattern. The iterator is adjusted so that its current index (as + * returned by getOffset) is the match position if one * was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE * @param status for errors if it occurs - * @return The character index of the first match, or + * @return The character index of the first match, or * USEARCH_DONE if there are no matches. * @see #getOffset * @stable ICU 2.0 @@ -309,33 +309,33 @@ class U_I18N_API SearchIterator : public UObject { int32_t first(UErrorCode &status); /** - * Returns the first index equal or greater than position at which the - * string text matches the search pattern. The iterator is adjusted so - * that its current index (as returned by getOffset) is the + * Returns the first index equal or greater than position at which the + * string text matches the search pattern. The iterator is adjusted so + * that its current index (as returned by getOffset) is the * match position if one was found. * If a match is not found, USEARCH_DONE will be returned and the * iterator will be adjusted to the index USEARCH_DONE. * @param position where search if to start from. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs - * @return The character index of the first match following - * position, or USEARCH_DONE if there are no + * @return The character index of the first match following + * position, or USEARCH_DONE if there are no * matches. * @see #getOffset * @stable ICU 2.0 */ int32_t following(int32_t position, UErrorCode &status); - + /** - * Returns the last index in the target text at which it matches the - * search pattern. The iterator is adjusted so that its current index - * (as returned by getOffset) is the match position if one was + * Returns the last index in the target text at which it matches the + * search pattern. The iterator is adjusted so that its current index + * (as returned by getOffset) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param status for errors if it occurs - * @return The index of the first match, or USEARCH_DONE if + * @return The index of the first match, or USEARCH_DONE if * there are no matches. * @see #getOffset * @stable ICU 2.0 @@ -343,11 +343,11 @@ class U_I18N_API SearchIterator : public UObject { int32_t last(UErrorCode &status); /** - * Returns the first index less than position at which the string - * text matches the search pattern. The iterator is adjusted so that its - * current index (as returned by getOffset) is the match - * position if one was found. If a match is not found, - * USEARCH_DONE will be returned and the iterator will be + * Returns the first index less than position at which the string + * text matches the search pattern. The iterator is adjusted so that its + * current index (as returned by getOffset) is the match + * position if one was found. If a match is not found, + * USEARCH_DONE will be returned and the iterator will be * adjusted to the index USEARCH_DONE *

      * When USEARCH_OVERLAP option is off, the last index of the @@ -356,11 +356,11 @@ class U_I18N_API SearchIterator : public UObject { * position. * * @param position where search is to start from. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs - * @return The character index of the first match preceding - * position, or USEARCH_DONE if there are + * @return The character index of the first match preceding + * position, or USEARCH_DONE if there are * no matches. * @see #getOffset * @stable ICU 2.0 @@ -370,10 +370,10 @@ class U_I18N_API SearchIterator : public UObject { /** * Returns the index of the next point at which the text matches the * search pattern, starting from the current position - * The iterator is adjusted so that its current index (as returned by + * The iterator is adjusted so that its current index (as returned by * getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to a position after the end of the text + * the iterator will be adjusted to a position after the end of the text * string. * @param status for errors if it occurs * @return The index of the next match after the current position, @@ -384,9 +384,9 @@ class U_I18N_API SearchIterator : public UObject { int32_t next(UErrorCode &status); /** - * Returns the index of the previous point at which the string text + * Returns the index of the previous point at which the string text * matches the search pattern, starting at the current position. - * The iterator is adjusted so that its current index (as returned by + * The iterator is adjusted so that its current index (as returned by * getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE @@ -398,12 +398,12 @@ class U_I18N_API SearchIterator : public UObject { */ int32_t previous(UErrorCode &status); - /** + /** * Resets the iteration. - * Search will begin at the start of the text string if a forward - * iteration is initiated before a backwards iteration. Otherwise if a - * backwards iteration is initiated before a forwards iteration, the - * search will begin at the end of the text string. + * Search will begin at the start of the text string if a forward + * iteration is initiated before a backwards iteration. Otherwise if a + * backwards iteration is initiated before a forwards iteration, the + * search will begin at the end of the text string. * @stable ICU 2.0 */ virtual void reset(); @@ -426,7 +426,7 @@ class U_I18N_API SearchIterator : public UObject { * @stable ICU 2.0 */ BreakIterator *m_breakiterator_; - + /** * Unicode string version of the search text * @stable ICU 2.0 @@ -445,35 +445,35 @@ class U_I18N_API SearchIterator : public UObject { /** * Constructor for use by subclasses. * @param text The target text to be searched. - * @param breakiter A {@link BreakIterator} that is used to restrict the - * points at which matches are detected. If - * handleNext or handlePrev finds a - * match, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match is rejected and handleNext or - * handlePrev is called again. If this parameter - * is NULL, no break detection is attempted. + * @param breakiter A {@link BreakIterator} that is used to restrict the + * points at which matches are detected. If + * handleNext or handlePrev finds a + * match, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match is rejected and handleNext or + * handlePrev is called again. If this parameter + * is NULL, no break detection is attempted. * @see #handleNext * @see #handlePrev * @stable ICU 2.0 */ - SearchIterator(const UnicodeString &text, + SearchIterator(const UnicodeString &text, BreakIterator *breakiter = NULL); /** * Constructor for use by subclasses. *

      - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param text The target text to be searched. - * @param breakiter A {@link BreakIterator} that is used to restrict the - * points at which matches are detected. If - * handleNext or handlePrev finds a - * match, but the match's start or end index is not a - * boundary as determined by the BreakIterator, - * the match is rejected and handleNext or - * handlePrev is called again. If this parameter + * @param breakiter A {@link BreakIterator} that is used to restrict the + * points at which matches are detected. If + * handleNext or handlePrev finds a + * match, but the match's start or end index is not a + * boundary as determined by the BreakIterator, + * the match is rejected and handleNext or + * handlePrev is called again. If this parameter * is NULL, no break detection is attempted. * @see #handleNext * @see #handlePrev @@ -497,20 +497,20 @@ class U_I18N_API SearchIterator : public UObject { * subclasses to provide different search algorithms. *

      * If a match is found, the implementation should return the index at - * which the match starts and should call - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the + * which the match starts and should call + * setMatchLength with the number of characters + * in the target text that make up the match. If no match is found, the * method should return USEARCH_DONE. *

      - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * should start. * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found + * @return index at which the match starts, else if match is not found * USEARCH_DONE is returned * @see #setMatchLength * @stable ICU 2.0 */ - virtual int32_t handleNext(int32_t position, UErrorCode &status) + virtual int32_t handleNext(int32_t position, UErrorCode &status) = 0; /** @@ -519,20 +519,20 @@ class U_I18N_API SearchIterator : public UObject { * subclasses to provide different search algorithms. *

      * If a match is found, the implementation should return the index at - * which the match starts and should call - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the + * which the match starts and should call + * setMatchLength with the number of characters + * in the target text that make up the match. If no match is found, the * method should return USEARCH_DONE. *

      - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * should start. * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found + * @return index at which the match starts, else if match is not found * USEARCH_DONE is returned * @see #setMatchLength * @stable ICU 2.0 */ - virtual int32_t handlePrev(int32_t position, UErrorCode &status) + virtual int32_t handlePrev(int32_t position, UErrorCode &status) = 0; /** @@ -560,15 +560,15 @@ class U_I18N_API SearchIterator : public UObject { virtual void setMatchStart(int32_t position); /** - * sets match not found + * sets match not found * @stable ICU 2.0 */ void setMatchNotFound(); }; -inline UBool SearchIterator::operator!=(const SearchIterator &that) const +inline bool SearchIterator::operator!=(const SearchIterator &that) const { - return !operator==(that); + return !operator==(that); } U_NAMESPACE_END @@ -577,3 +577,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/selfmt.h b/deps/icu-small/source/i18n/unicode/selfmt.h index 9b98f6db7adb76..bdce00e593ea6b 100644 --- a/deps/icu-small/source/i18n/unicode/selfmt.h +++ b/deps/icu-small/source/i18n/unicode/selfmt.h @@ -259,7 +259,7 @@ class U_I18N_API SelectFormat : public Format { * @return true if other is semantically equal to this. * @stable ICU 4.4 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; /** * Return true if another object is semantically unequal to this one. @@ -268,14 +268,14 @@ class U_I18N_API SelectFormat : public Format { * @return true if other is semantically unequal to this. * @stable ICU 4.4 */ - virtual UBool operator!=(const Format& other) const; + virtual bool operator!=(const Format& other) const; /** * Clones this Format object polymorphically. The caller owns the * result and should delete it when done. * @stable ICU 4.4 */ - virtual SelectFormat* clone() const; + virtual SelectFormat* clone() const override; /** * Format an object to produce a string. @@ -295,7 +295,7 @@ class U_I18N_API SelectFormat : public Format { UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Returns the pattern from applyPattern() or constructor. @@ -331,7 +331,7 @@ class U_I18N_API SelectFormat : public Format { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& parse_pos) const; + ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -343,7 +343,7 @@ class U_I18N_API SelectFormat : public Format { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 4.4 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; private: friend class MessageFormat; diff --git a/deps/icu-small/source/i18n/unicode/simpletz.h b/deps/icu-small/source/i18n/unicode/simpletz.h index eb888cea675ea0..f5c155de466923 100644 --- a/deps/icu-small/source/i18n/unicode/simpletz.h +++ b/deps/icu-small/source/i18n/unicode/simpletz.h @@ -31,10 +31,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: SimpleTimeZone is a concrete subclass of TimeZone. */ - + #if !UCONFIG_NO_FORMATTING #include "unicode/basictz.h" @@ -107,11 +107,11 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * the same ID, raw GMT offset, and DST rules. * * @param that The SimpleTimeZone object to be compared with. - * @return True if the given time zone is equal to this time zone; false + * @return true if the given time zone is equal to this time zone; false * otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Constructs a SimpleTimeZone with the given raw GMT offset and time zone ID, @@ -134,7 +134,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

      - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -175,7 +175,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

      - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -219,7 +219,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * TimeZone.createInstance() to create a TimeZone instead of creating a * SimpleTimeZone directly with this constructor. *

      - * Various types of daylight-savings time rules can be specfied by using different + * Various types of daylight-savings time rules can be specified by using different * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a * complete explanation of how these parameters work, see the documentation for * setStartRule(). @@ -293,7 +293,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month).

    17. *
    18. If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].)
    19. *
    20. If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -337,7 +337,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * month, regardless of what day of the week it is (e.g., (-2, 0) is the * next-to-last day of the month).
    21. *
    22. If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. + * first specified day of the week on or after the specified day of the month. * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month * [or the 15th itself if the 15th is a Sunday].)
    23. *
    24. If dayOfWeek and DayOfWeekInMonth are both negative, they specify the @@ -571,7 +571,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 2.0 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -590,7 +590,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t milliseconds, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of * daylight savings. This is the offset to add *to* UTC to get local time. @@ -618,7 +618,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 2.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -628,7 +628,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ /** @@ -638,7 +638,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 2.0 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -647,7 +647,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 2.0 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Sets the amount of time in ms that the clock is advanced during DST. @@ -668,7 +668,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * but not 0. * @stable ICU 2.0 */ - virtual int32_t getDSTSavings(void) const; + virtual int32_t getDSTSavings(void) const override; /** * Queries if this TimeZone uses Daylight Savings Time. @@ -676,7 +676,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return True if this TimeZone uses Daylight Savings Time; false otherwise. * @stable ICU 2.0 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -693,7 +693,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * false otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -702,7 +702,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the given zone has the same rules and offset as this one * @stable ICU 2.0 */ - UBool hasSameRules(const TimeZone& other) const; + UBool hasSameRules(const TimeZone& other) const override; /** * Clones TimeZone objects polymorphically. Clients are responsible for deleting @@ -711,7 +711,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 2.0 */ - virtual SimpleTimeZone* clone() const; + virtual SimpleTimeZone* clone() const override; /** * Gets the first time zone transition after the base time. @@ -721,7 +721,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -731,7 +731,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -741,7 +741,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -760,7 +760,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; public: @@ -775,7 +775,7 @@ class U_I18N_API SimpleTimeZone: public BasicTimeZone { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Return the class ID for this class. This is useful only for comparing to a return diff --git a/deps/icu-small/source/i18n/unicode/smpdtfmt.h b/deps/icu-small/source/i18n/unicode/smpdtfmt.h index 3296c6b3ab75b6..733a1cff13b0bc 100644 --- a/deps/icu-small/source/i18n/unicode/smpdtfmt.h +++ b/deps/icu-small/source/i18n/unicode/smpdtfmt.h @@ -756,7 +756,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * names of the months), but not to provide the pattern. *

      * A numbering system override is a string containing either the name of a known numbering system, - * or a set of field and numbering system pairs that specify which fields are to be formattied with + * or a set of field and numbering system pairs that specify which fields are to be formatted with * the alternate numbering system. For example, to specify that all numeric fields in the specified * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, @@ -797,7 +797,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * names of the months), but not to provide the pattern. *

      * A numbering system override is a string containing either the name of a known numbering system, - * or a set of field and numbering system pairs that specify which fields are to be formattied with + * or a set of field and numbering system pairs that specify which fields are to be formatted with * the alternate numbering system. For example, to specify that all numeric fields in the specified * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, @@ -867,7 +867,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @return A copy of the object. * @stable ICU 2.0 */ - virtual SimpleDateFormat* clone() const; + virtual SimpleDateFormat* clone() const override; /** * Return true if the given Format objects are semantically equal. Objects @@ -876,7 +876,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @return true if the given Format objects are semantically equal. * @stable ICU 2.0 */ - virtual UBool operator==(const Format& other) const; + virtual bool operator==(const Format& other) const override; using DateFormat::format; @@ -899,7 +899,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { */ virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, - FieldPosition& pos) const; + FieldPosition& pos) const override; /** * Format a date or time, which is the standard millis since 24:00 GMT, Jan @@ -922,7 +922,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { virtual UnicodeString& format( Calendar& cal, UnicodeString& appendTo, FieldPositionIterator* posIter, - UErrorCode& status) const; + UErrorCode& status) const override; using DateFormat::parse; @@ -954,7 +954,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { */ virtual void parse( const UnicodeString& text, Calendar& cal, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** @@ -1097,7 +1097,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Set the calendar to be used by this date format. Initially, the default @@ -1108,7 +1108,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @param calendarToAdopt Calendar object to be adopted. * @stable ICU 2.0 */ - virtual void adoptCalendar(Calendar* calendarToAdopt); + virtual void adoptCalendar(Calendar* calendarToAdopt) override; /* Cannot use #ifndef U_HIDE_INTERNAL_API for the following methods since they are virtual */ /** @@ -1144,7 +1144,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * updated with any new status from the function. * @stable ICU 53 */ - virtual void setContext(UDisplayContext value, UErrorCode& status); + virtual void setContext(UDisplayContext value, UErrorCode& status) override; /** * Overrides base class method and @@ -1153,7 +1153,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * @param formatToAdopt the NumbeferFormat used * @stable ICU 54 */ - void adoptNumberFormat(NumberFormat *formatToAdopt); + void adoptNumberFormat(NumberFormat *formatToAdopt) override; /** * Allow the user to set the NumberFormat for several fields @@ -1299,7 +1299,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { int32_t maxDigits) const; /** - * Return true if the given format character, occuring count + * Return true if the given format character, occurring count * times, represents a numeric field. */ static UBool isNumeric(char16_t formatChar, int32_t count); @@ -1386,7 +1386,7 @@ class U_I18N_API SimpleDateFormat: public DateFormat { * * @param pattern the pattern string * @param patternOffset the starting offset into the pattern text. On - * outupt will be set the offset of the first non-literal character in the pattern + * output will be set the offset of the first non-literal character in the pattern * @param text the text being parsed * @param textOffset the starting offset into the text. On output * will be set to the offset of the character after the match diff --git a/deps/icu-small/source/i18n/unicode/sortkey.h b/deps/icu-small/source/i18n/unicode/sortkey.h index 14902668a2d4f2..b1231f18b78402 100644 --- a/deps/icu-small/source/i18n/unicode/sortkey.h +++ b/deps/icu-small/source/i18n/unicode/sortkey.h @@ -28,10 +28,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file - * \brief C++ API: Keys for comparing strings multiple times. + * \file + * \brief C++ API: Keys for comparing strings multiple times. */ - + #if !UCONFIG_NO_COLLATION #include "unicode/uobject.h" @@ -145,7 +145,7 @@ class U_I18N_API CollationKey : public UObject { * @return Returns true if two collation keys are equal, false otherwise. * @stable ICU 2.0 */ - UBool operator==(const CollationKey& source) const; + bool operator==(const CollationKey& source) const; /** * Compare if two collation keys are not the same. @@ -153,7 +153,7 @@ class U_I18N_API CollationKey : public UObject { * @return Returns true if two collation keys are different, false otherwise. * @stable ICU 2.0 */ - UBool operator!=(const CollationKey& source) const; + bool operator!=(const CollationKey& source) const; /** @@ -186,7 +186,7 @@ class U_I18N_API CollationKey : public UObject { uint8_t* toByteArray(int32_t& count) const; #endif -#ifndef U_HIDE_DEPRECATED_API +#ifndef U_HIDE_DEPRECATED_API /** * Convenience method which does a string(bit-wise) comparison of the * two collation keys. @@ -237,7 +237,7 @@ class U_I18N_API CollationKey : public UObject { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -316,7 +316,7 @@ class U_I18N_API CollationKey : public UObject { } fUnion; }; -inline UBool +inline bool CollationKey::operator!=(const CollationKey& other) const { return !(*this == other); diff --git a/deps/icu-small/source/i18n/unicode/stsearch.h b/deps/icu-small/source/i18n/unicode/stsearch.h index 3cfd68d64771b9..c23e651d897511 100644 --- a/deps/icu-small/source/i18n/unicode/stsearch.h +++ b/deps/icu-small/source/i18n/unicode/stsearch.h @@ -17,10 +17,10 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: Service for searching text based on RuleBasedCollator. */ - + #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION #include "unicode/tblcoll.h" @@ -29,7 +29,7 @@ U_NAMESPACE_BEGIN -/** +/** * * StringSearch is a SearchIterator that provides * language-sensitive text searching based on the comparison rules defined @@ -37,7 +37,7 @@ U_NAMESPACE_BEGIN * StringSearch ensures that language eccentricity can be * handled, e.g. for the German collator, characters ß and SS will be matched * if case is chosen to be ignored. - * See the + * See the * "ICU Collation Design Document" for more information. *

      * There are 2 match options for selection:
      @@ -46,7 +46,7 @@ U_NAMESPACE_BEGIN *
      * A pattern string P matches a text string S at the offsets [start, end] * if - *

      + * 
       
        * option 1. Some canonical equivalent of P matches some canonical equivalent
        *           of S'
        * option 2. P matches S' and if P starts or ends with a combining mark,
      @@ -55,10 +55,10 @@ U_NAMESPACE_BEGIN
        * 
      * Option 2. will be the default. *

      - * This search has APIs similar to that of other text iteration mechanisms - * such as the break iterators in BreakIterator. Using these - * APIs, it is easy to scan through text looking for all occurrences of - * a given pattern. This search iterator allows changing of direction by + * This search has APIs similar to that of other text iteration mechanisms + * such as the break iterators in BreakIterator. Using these + * APIs, it is easy to scan through text looking for all occurrences of + * a given pattern. This search iterator allows changing of direction by * calling a reset followed by a next or previous. * Though a direction change can occur without calling reset first, * this operation comes with some speed penalty. @@ -101,7 +101,7 @@ U_NAMESPACE_BEGIN * from getCollator and using the APIs in coll.h. * Lastly to update StringSearch to the new collator attributes, * reset has to be called. - *

      + *

      * Restriction:
      * Currently there are no composite characters that consists of a * character with combining class > 0 before a character with combining @@ -118,7 +118,7 @@ U_NAMESPACE_BEGIN * UErrorCode error = U_ZERO_ERROR; * StringSearch iter(pattern, target, Locale::getUS(), NULL, status); * for (int pos = iter.first(error); - * pos != USEARCH_DONE; + * pos != USEARCH_DONE; * pos = iter.next(error)) * { * printf("Found match at %d pos, length is %d\n", pos, iter.getMatchedLength()); @@ -139,120 +139,120 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator // public constructors and destructors -------------------------------- /** - * Creating a StringSearch instance using the argument locale - * language rule set. A collator will be created in the process, which - * will be owned by this instance and will be deleted during + * Creating a StringSearch instance using the argument locale + * language rule set. A collator will be created in the process, which + * will be owned by this instance and will be deleted during * destruction * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param locale A locale which defines the language-sensitive - * comparison rules used to determine whether text in the - * pattern and target matches. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param locale A locale which defines the language-sensitive + * comparison rules used to determine whether text in the + * pattern and target matches. + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. * @param status for errors if any. If pattern or text is NULL, or if - * either the length of pattern or text is 0 then an + * either the length of pattern or text is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, const UnicodeString &text, - const Locale &locale, + const Locale &locale, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument collator - * language rule set. Note, user retains the ownership of this collator, + * Creating a StringSearch instance using the argument collator + * language rule set. Note, user retains the ownership of this collator, * it does not get destroyed during this instance's destruction. * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param coll A RuleBasedCollator object which defines - * the language-sensitive comparison rules used to - * determine whether text in the pattern and target + * @param coll A RuleBasedCollator object which defines + * the language-sensitive comparison rules used to + * determine whether text in the pattern and target * matches. User is responsible for the clearing of this * object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - StringSearch(const UnicodeString &pattern, + StringSearch(const UnicodeString &pattern, const UnicodeString &text, - RuleBasedCollator *coll, + RuleBasedCollator *coll, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument locale - * language rule set. A collator will be created in the process, which - * will be owned by this instance and will be deleted during + * Creating a StringSearch instance using the argument locale + * language rule set. A collator will be created in the process, which + * will be owned by this instance and will be deleted during * destruction *

      - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param pattern The text for which this object will search. * @param text The text iterator in which to search for the pattern. - * @param locale A locale which defines the language-sensitive - * comparison rules used to determine whether text in the - * pattern and target matches. User is responsible for + * @param locale A locale which defines the language-sensitive + * comparison rules used to determine whether text in the + * pattern and target matches. User is responsible for * the clearing of this object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, CharacterIterator &text, - const Locale &locale, + const Locale &locale, BreakIterator *breakiter, UErrorCode &status); /** - * Creating a StringSearch instance using the argument collator - * language rule set. Note, user retains the ownership of this collator, + * Creating a StringSearch instance using the argument collator + * language rule set. Note, user retains the ownership of this collator, * it does not get destroyed during this instance's destruction. *

      - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param pattern The text for which this object will search. * @param text The text in which to search for the pattern. - * @param coll A RuleBasedCollator object which defines - * the language-sensitive comparison rules used to - * determine whether text in the pattern and target + * @param coll A RuleBasedCollator object which defines + * the language-sensitive comparison rules used to + * determine whether text in the pattern and target * matches. User is responsible for the clearing of this * object. - * @param breakiter A BreakIterator object used to constrain - * the matches that are found. Matches whose start and end - * indices in the target text are not boundaries as - * determined by the BreakIterator are - * ignored. If this behavior is not desired, + * @param breakiter A BreakIterator object used to constrain + * the matches that are found. Matches whose start and end + * indices in the target text are not boundaries as + * determined by the BreakIterator are + * ignored. If this behavior is not desired, * NULL can be passed in instead. - * @param status for errors if any. If either the length of pattern or + * @param status for errors if any. If either the length of pattern or * text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ StringSearch(const UnicodeString &pattern, CharacterIterator &text, - RuleBasedCollator *coll, + RuleBasedCollator *coll, BreakIterator *breakiter, UErrorCode &status); /** - * Copy constructor that creates a StringSearch instance with the same + * Copy constructor that creates a StringSearch instance with the same * behavior, and iterating over the same text. * @param that StringSearch instance to be copied. * @stable ICU 2.0 @@ -290,31 +290,31 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator StringSearch & operator=(const StringSearch &that); /** - * Equality operator. + * Equality operator. * @param that instance to be compared. - * @return true if both instances have the same attributes, - * breakiterators, collators and iterate over the same text + * @return true if both instances have the same attributes, + * breakiterators, collators and iterate over the same text * while looking for the same pattern. * @stable ICU 2.0 */ - virtual UBool operator==(const SearchIterator &that) const; + virtual bool operator==(const SearchIterator &that) const override; // public get and set methods ---------------------------------------- /** - * Sets the index to point to the given position, and clears any state + * Sets the index to point to the given position, and clears any state * that's affected. *

      - * This method takes the argument index and sets the position in the text - * string accordingly without checking if the index is pointing to a - * valid starting point to begin searching. + * This method takes the argument index and sets the position in the text + * string accordingly without checking if the index is pointing to a + * valid starting point to begin searching. * @param position within the text to be set. If position is less - * than or greater than the text range for searching, + * than or greater than the text range for searching, * an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param status for errors if it occurs * @stable ICU 2.0 */ - virtual void setOffset(int32_t position, UErrorCode &status); + virtual void setOffset(int32_t position, UErrorCode &status) override; /** * Return the current index in the text being searched. @@ -324,68 +324,68 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator * @return current index in the text being searched. * @stable ICU 2.0 */ - virtual int32_t getOffset(void) const; + virtual int32_t getOffset(void) const override; /** * Set the target text to be searched. - * Text iteration will hence begin at the start of the text string. - * This method is - * useful if you want to re-use an iterator to search for the same + * Text iteration will hence begin at the start of the text string. + * This method is + * useful if you want to re-use an iterator to search for the same * pattern within a different body of text. * @param text text string to be searched - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(const UnicodeString &text, UErrorCode &status); - + virtual void setText(const UnicodeString &text, UErrorCode &status) override; + /** * Set the target text to be searched. - * Text iteration will hence begin at the start of the text string. - * This method is - * useful if you want to re-use an iterator to search for the same + * Text iteration will hence begin at the start of the text string. + * This method is + * useful if you want to re-use an iterator to search for the same * pattern within a different body of text. - * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text + * Note: No parsing of the text within the CharacterIterator + * will be done during searching for this version. The block of text * in CharacterIterator will be used as it is. * @param text text string to be searched - * @param status for errors if any. If the text length is 0 then an + * @param status for errors if any. If the text length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ - virtual void setText(CharacterIterator &text, UErrorCode &status); + virtual void setText(CharacterIterator &text, UErrorCode &status) override; /** * Gets the collator used for the language rules. *

      * Caller may modify but must not delete the RuleBasedCollator! - * Modifications to this collator will affect the original collator passed in to + * Modifications to this collator will affect the original collator passed in to * the StringSearch> constructor or to setCollator, if any. * @return collator used for string search * @stable ICU 2.0 */ RuleBasedCollator * getCollator() const; - + /** - * Sets the collator used for the language rules. User retains the - * ownership of this collator, thus the responsibility of deletion lies + * Sets the collator used for the language rules. User retains the + * ownership of this collator, thus the responsibility of deletion lies * with the user. The iterator's position will not be changed by this method. - * @param coll collator + * @param coll collator * @param status for errors if any * @stable ICU 2.0 */ void setCollator(RuleBasedCollator *coll, UErrorCode &status); - + /** * Sets the pattern used for matching. * The iterator's position will not be changed by this method. * @param pattern search pattern to be found - * @param status for errors if any. If the pattern length is 0 then an + * @param status for errors if any. If the pattern length is 0 then an * U_ILLEGAL_ARGUMENT_ERROR is returned. * @stable ICU 2.0 */ void setPattern(const UnicodeString &pattern, UErrorCode &status); - + /** * Gets the search pattern. * @return pattern used for matching @@ -395,32 +395,32 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator // public methods ---------------------------------------------------- - /** + /** * Reset the iteration. - * Search will begin at the start of the text string if a forward - * iteration is initiated before a backwards iteration. Otherwise if - * a backwards iteration is initiated before a forwards iteration, the + * Search will begin at the start of the text string if a forward + * iteration is initiated before a backwards iteration. Otherwise if + * a backwards iteration is initiated before a forwards iteration, the * search will begin at the end of the text string. * @stable ICU 2.0 */ - virtual void reset(); + virtual void reset() override; /** - * Returns a copy of StringSearch with the same behavior, and + * Returns a copy of StringSearch with the same behavior, and * iterating over the same text, as this one. Note that all data will be * replicated, except for the user-specified collator and the * breakiterator. * @return cloned object * @stable ICU 2.0 */ - virtual StringSearch * safeClone() const; - + virtual StringSearch * safeClone() const override; + /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * * @stable ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -435,27 +435,27 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator /** * Search forward for matching text, starting at a given location. - * Clients should not call this method directly; instead they should + * Clients should not call this method directly; instead they should * call {@link SearchIterator#next }. *

      * If a match is found, this method returns the index at which the match - * starts and calls {@link SearchIterator#setMatchLength } with the number - * of characters in the target text that make up the match. If no match + * starts and calls {@link SearchIterator#setMatchLength } with the number + * of characters in the target text that make up the match. If no match * is found, the method returns USEARCH_DONE. *

      - * The StringSearch is adjusted so that its current index - * (as returned by {@link #getOffset }) is the match position if one was + * The StringSearch is adjusted so that its current index + * (as returned by {@link #getOffset }) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the StringSearch will be adjusted to the index USEARCH_DONE. - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * starts * @param status for errors if any occurs - * @return The index at which the matched text in the target starts, or + * @return The index at which the matched text in the target starts, or * USEARCH_DONE if no match was found. * @stable ICU 2.0 */ - virtual int32_t handleNext(int32_t position, UErrorCode &status); + virtual int32_t handleNext(int32_t position, UErrorCode &status) override; /** * Search backward for matching text, starting at a given location. @@ -463,24 +463,24 @@ class U_I18N_API StringSearch U_FINAL : public SearchIterator * SearchIterator.previous(), which this method overrides. *

      * If a match is found, this method returns the index at which the match - * starts and calls {@link SearchIterator#setMatchLength } with the number - * of characters in the target text that make up the match. If no match + * starts and calls {@link SearchIterator#setMatchLength } with the number + * of characters in the target text that make up the match. If no match * is found, the method returns USEARCH_DONE. *

      - * The StringSearch is adjusted so that its current index - * (as returned by {@link #getOffset }) is the match position if one was + * The StringSearch is adjusted so that its current index + * (as returned by {@link #getOffset }) is the match position if one was * found. * If a match is not found, USEARCH_DONE will be returned and * the StringSearch will be adjusted to the index USEARCH_DONE. - * @param position The index in the target text at which the search + * @param position The index in the target text at which the search * starts. * @param status for errors if any occurs - * @return The index at which the matched text in the target starts, or + * @return The index at which the matched text in the target starts, or * USEARCH_DONE if no match was found. * @stable ICU 2.0 */ - virtual int32_t handlePrev(int32_t position, UErrorCode &status); - + virtual int32_t handlePrev(int32_t position, UErrorCode &status) override; + private : StringSearch(); // default constructor not implemented @@ -506,3 +506,4 @@ U_NAMESPACE_END #endif /* U_SHOW_CPLUSPLUS_API */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/tblcoll.h b/deps/icu-small/source/i18n/unicode/tblcoll.h index 1709e836dd4e98..2de1af85392fc8 100644 --- a/deps/icu-small/source/i18n/unicode/tblcoll.h +++ b/deps/icu-small/source/i18n/unicode/tblcoll.h @@ -223,14 +223,14 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return true if arguments is the same as this object. * @stable ICU 2.0 */ - virtual UBool operator==(const Collator& other) const; + virtual bool operator==(const Collator& other) const override; /** * Makes a copy of this object. * @return a copy of this object, owned by the caller * @stable ICU 2.0 */ - virtual RuleBasedCollator* clone() const; + virtual RuleBasedCollator* clone() const override; /** * Creates a collation element iterator for the source string. The caller of @@ -274,7 +274,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { **/ virtual UCollationResult compare(const UnicodeString& source, const UnicodeString& target, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Does the same thing as compare but limits the comparison to a specified @@ -292,7 +292,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual UCollationResult compare(const UnicodeString& source, const UnicodeString& target, int32_t length, - UErrorCode &status) const; + UErrorCode &status) const override; /** * The comparison function compares the character data stored in two @@ -312,7 +312,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compare(const char16_t* source, int32_t sourceLength, const char16_t* target, int32_t targetLength, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Compares two strings using the Collator. @@ -327,7 +327,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compare(UCharIterator &sIter, UCharIterator &tIter, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Compares two UTF-8 strings using the Collator. @@ -344,7 +344,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual UCollationResult compareUTF8(const StringPiece &source, const StringPiece &target, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Transforms the string into a series of characters @@ -362,7 +362,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual CollationKey& getCollationKey(const UnicodeString& source, CollationKey& key, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Transforms a specified region of the string into a series of characters @@ -382,14 +382,14 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual CollationKey& getCollationKey(const char16_t *source, int32_t sourceLength, CollationKey& key, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Generates the hash code for the rule-based collation object. * @return the hash code. * @stable ICU 2.0 */ - virtual int32_t hashCode() const; + virtual int32_t hashCode() const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -402,7 +402,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * was instantiated from rules, locale is empty. * @deprecated ICU 2.8 likely to change in ICU 3.0, based on feedback */ - virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; + virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -417,7 +417,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param info the version # information, the result will be filled in * @stable ICU 2.0 */ - virtual void getVersion(UVersionInfo info) const; + virtual void getVersion(UVersionInfo info) const override; #ifndef U_HIDE_DEPRECATED_API /** @@ -449,7 +449,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** * Returns the class ID for this class. This is useful only for comparing to @@ -511,7 +511,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual void setAttribute(UColAttribute attr, UColAttributeValue value, - UErrorCode &status); + UErrorCode &status) override; /** * Universal attribute getter. @@ -521,7 +521,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual UColAttributeValue getAttribute(UColAttribute attr, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Sets the variable top to the top of the specified reordering group. @@ -539,7 +539,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see getMaxVariable * @stable ICU 53 */ - virtual Collator &setMaxVariable(UColReorderCode group, UErrorCode &errorCode); + virtual Collator &setMaxVariable(UColReorderCode group, UErrorCode &errorCode) override; /** * Returns the maximum reordering group whose characters are affected by UCOL_ALTERNATE_HANDLING. @@ -547,7 +547,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see setMaxVariable * @stable ICU 53 */ - virtual UColReorderCode getMaxVariable() const; + virtual UColReorderCode getMaxVariable() const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -566,7 +566,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return variable top primary weight * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status); + virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &status) override; /** * Sets the variable top to the primary weight of the specified string. @@ -583,7 +583,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @return variable top primary weight * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual uint32_t setVariableTop(const UnicodeString &varTop, UErrorCode &status); + virtual uint32_t setVariableTop(const UnicodeString &varTop, UErrorCode &status) override; /** * Sets the variable top to the specified primary weight. @@ -596,7 +596,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param status error code * @deprecated ICU 53 Call setMaxVariable() instead. */ - virtual void setVariableTop(uint32_t varTop, UErrorCode &status); + virtual void setVariableTop(uint32_t varTop, UErrorCode &status) override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -606,7 +606,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @see getMaxVariable * @stable ICU 2.0 */ - virtual uint32_t getVariableTop(UErrorCode &status) const; + virtual uint32_t getVariableTop(UErrorCode &status) const override; /** * Get a UnicodeSet that contains all the characters and sequences tailored in @@ -617,7 +617,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * in the root collator. The object must be disposed of by using delete * @stable ICU 2.4 */ - virtual UnicodeSet *getTailoredSet(UErrorCode &status) const; + virtual UnicodeSet *getTailoredSet(UErrorCode &status) const override; /** * Get the sort key as an array of bytes from a UnicodeString. @@ -634,7 +634,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.0 */ virtual int32_t getSortKey(const UnicodeString& source, uint8_t *result, - int32_t resultLength) const; + int32_t resultLength) const override; /** * Get the sort key as an array of bytes from a char16_t buffer. @@ -653,7 +653,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @stable ICU 2.2 */ virtual int32_t getSortKey(const char16_t *source, int32_t sourceLength, - uint8_t *result, int32_t resultLength) const; + uint8_t *result, int32_t resultLength) const override; /** * Retrieves the reordering codes for this collator. @@ -670,7 +670,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual int32_t getReorderCodes(int32_t *dest, int32_t destCapacity, - UErrorCode& status) const; + UErrorCode& status) const override; /** * Sets the ordering of scripts for this collator. @@ -685,7 +685,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual void setReorderCodes(const int32_t* reorderCodes, int32_t reorderCodesLength, - UErrorCode& status) ; + UErrorCode& status) override; /** * Implements ucol_strcollUTF8(). @@ -694,7 +694,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual UCollationResult internalCompareUTF8( const char *left, int32_t leftLength, const char *right, int32_t rightLength, - UErrorCode &errorCode) const; + UErrorCode &errorCode) const override; /** Get the short definition string for a collator. This internal API harvests the collator's * locale and the attribute set and produces a string that can be used for opening @@ -722,7 +722,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { virtual int32_t internalGetShortDefinitionString(const char *locale, char *buffer, int32_t capacity, - UErrorCode &status) const; + UErrorCode &status) const override; /** * Implements ucol_nextSortKeyPart(). @@ -730,7 +730,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { */ virtual int32_t internalNextSortKeyPart( UCharIterator *iter, uint32_t state[2], - uint8_t *dest, int32_t count, UErrorCode &errorCode) const; + uint8_t *dest, int32_t count, UErrorCode &errorCode) const override; // Do not enclose the default constructor with #ifndef U_HIDE_INTERNAL_API /** @@ -806,7 +806,7 @@ class U_I18N_API RuleBasedCollator U_FINAL : public Collator { * @param actualLocale the actual locale * @internal */ - virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale, const Locale& actualLocale); + virtual void setLocales(const Locale& requestedLocale, const Locale& validLocale, const Locale& actualLocale) override; private: friend class CollationElementIterator; diff --git a/deps/icu-small/source/i18n/unicode/timezone.h b/deps/icu-small/source/i18n/unicode/timezone.h index 73cae44d533365..382ad97d5bf381 100644 --- a/deps/icu-small/source/i18n/unicode/timezone.h +++ b/deps/icu-small/source/i18n/unicode/timezone.h @@ -34,7 +34,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: TimeZone object */ @@ -184,10 +184,10 @@ class U_I18N_API TimeZone : public UObject { * @param zoneType The system time zone type. * @param region The ISO 3166 two-letter country code or UN M.49 * three-digit area code. When NULL, no filtering - * done by region. + * done by region. * @param rawOffset An offset from GMT in milliseconds, ignoring * the effect of daylight savings time, if any. - * When NULL, no filtering done by zone offset. + * When NULL, no filtering done by zone offset. * @param ec Output param to filled in with a success or * an error. * @return an enumeration object, owned by the caller. @@ -199,15 +199,28 @@ class U_I18N_API TimeZone : public UObject { const int32_t* rawOffset, UErrorCode& ec); +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over all recognized time zone IDs. (i.e., * all strings that createTimeZone() accepts) * * @return an enumeration object, owned by the caller. - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumeration(UErrorCode&) instead. */ static StringEnumeration* U_EXPORT2 createEnumeration(); +#endif // U_HIDE_DEPRECATED_API + /** + * Returns an enumeration over all recognized time zone IDs. (i.e., + * all strings that createTimeZone() accepts) + * + * @param status Receives the status. + * @return an enumeration object, owned by the caller. + * @stable ICU 70 + */ + static StringEnumeration* U_EXPORT2 createEnumeration(UErrorCode& status); + +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over time zone IDs with a given raw * offset from GMT. There may be several times zones with the @@ -223,21 +236,57 @@ class U_I18N_API TimeZone : public UObject { * @param rawOffset an offset from GMT in milliseconds, ignoring * the effect of daylight savings time, if any * @return an enumeration object, owned by the caller - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumerationForRawOffset(int32_t,UErrorCode&) instead. */ static StringEnumeration* U_EXPORT2 createEnumeration(int32_t rawOffset); +#endif // U_HIDE_DEPRECATED_API + /** + * Returns an enumeration over time zone IDs with a given raw + * offset from GMT. There may be several times zones with the + * same GMT offset that differ in the way they handle daylight + * savings time. For example, the state of Arizona doesn't + * observe daylight savings time. If you ask for the time zone + * IDs corresponding to GMT-7:00, you'll get back an enumeration + * over two time zone IDs: "America/Denver," which corresponds to + * Mountain Standard Time in the winter and Mountain Daylight Time + * in the summer, and "America/Phoenix", which corresponds to + * Mountain Standard Time year-round, even in the summer. + * + * @param rawOffset an offset from GMT in milliseconds, ignoring + * the effect of daylight savings time, if any + * @param status Receives the status. + * @return an enumeration object, owned by the caller + * @stable ICU 70 + */ + static StringEnumeration* U_EXPORT2 createEnumerationForRawOffset(int32_t rawOffset, UErrorCode& status); + +#ifndef U_HIDE_DEPRECATED_API /** * Returns an enumeration over time zone IDs associated with the - * given country. Some zones are affiliated with no country + * given region. Some zones are affiliated with no region * (e.g., "UTC"); these may also be retrieved, as a group. * - * @param country The ISO 3166 two-letter country code, or NULL to - * retrieve zones not affiliated with any country. + * @param region The ISO 3166 two-letter country code, or NULL to + * retrieve zones not affiliated with any region. * @return an enumeration object, owned by the caller - * @stable ICU 2.4 + * @deprecated ICU 70 Use createEnumerationForRegion(const char*,UErrorCode&) instead. + */ + static StringEnumeration* U_EXPORT2 createEnumeration(const char* region); +#endif // U_HIDE_DEPRECATED_API + + /** + * Returns an enumeration over time zone IDs associated with the + * given region. Some zones are affiliated with no region + * (e.g., "UTC"); these may also be retrieved, as a group. + * + * @param region The ISO 3166 two-letter country code, or NULL to + * retrieve zones not affiliated with any region. + * @param status Receives the status. + * @return an enumeration object, owned by the caller + * @stable ICU 70 */ - static StringEnumeration* U_EXPORT2 createEnumeration(const char* country); + static StringEnumeration* U_EXPORT2 createEnumerationForRegion(const char* region, UErrorCode& status); /** * Returns the number of IDs in the equivalency group that @@ -282,9 +331,9 @@ class U_I18N_API TimeZone : public UObject { * system configuration. If the host system detection routines fail, * or if they specify a TimeZone or TimeZone offset which is not * recognized, then the special TimeZone "Etc/Unknown" is returned. - * + * * Note that ICU4C does not change the default time zone unless - * `TimeZone::adoptDefault(TimeZone*)` or + * `TimeZone::adoptDefault(TimeZone*)` or * `TimeZone::setDefault(const TimeZone&)` is explicitly called by a * user. This method does not update the current ICU's default, * and may return a different TimeZone from the one returned by @@ -454,22 +503,22 @@ class U_I18N_API TimeZone : public UObject { * IDs, but subclasses are expected to also compare the fields they add.) * * @param that The TimeZone object to be compared with. - * @return True if the given TimeZone is equal to this TimeZone; false + * @return true if the given TimeZone is equal to this TimeZone; false * otherwise. * @stable ICU 2.0 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const; /** * Returns true if the two TimeZones are NOT equal; that is, if operator==() returns * false. * * @param that The TimeZone object to be compared with. - * @return True if the given TimeZone is not equal to this TimeZone; false + * @return true if the given TimeZone is not equal to this TimeZone; false * otherwise. * @stable ICU 2.0 */ - UBool operator!=(const TimeZone& that) const {return !operator==(that);} + bool operator!=(const TimeZone& that) const {return !operator==(that);} /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -698,7 +747,7 @@ class U_I18N_API TimeZone : public UObject { * @stable ICU 2.0 */ UnicodeString& getDisplayName(UBool inDaylight, EDisplayType style, const Locale& locale, UnicodeString& result) const; - + /** * Queries if this time zone uses daylight savings time. * @return true if this time zone uses daylight savings time, @@ -730,7 +779,7 @@ class U_I18N_API TimeZone : public UObject { * always returns a BasicTimeZone) provides a series of methods allowing * historic and future time zone rule iteration, so you can check if daylight saving * time is observed or not within a given period. - * + * * @stable ICU 2.0 */ virtual UBool useDaylightTime(void) const = 0; @@ -790,8 +839,8 @@ class U_I18N_API TimeZone : public UObject { * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ - virtual UClassID getDynamicClassID(void) const = 0; - + virtual UClassID getDynamicClassID(void) const override = 0; + /** * Returns the amount of time to be added to local standard time * to get local wall clock time. @@ -816,7 +865,7 @@ class U_I18N_API TimeZone : public UObject { * When the time zone is not associated with a specific location, * for example - "Etc/UTC", "EST5EDT", then this method returns * "001" (UN M.49 area code for World). - * + * * @param id The system time zone ID. * @param region Output buffer for receiving the region code. * @param capacity The size of the output buffer. @@ -824,10 +873,10 @@ class U_I18N_API TimeZone : public UObject { * is not a known system time zone ID, * U_ILLEGAL_ARGUMENT_ERROR is set. * @return The length of the output region code. - * @stable ICU 4.8 - */ - static int32_t U_EXPORT2 getRegion(const UnicodeString& id, - char *region, int32_t capacity, UErrorCode& status); + * @stable ICU 4.8 + */ + static int32_t U_EXPORT2 getRegion(const UnicodeString& id, + char *region, int32_t capacity, UErrorCode& status); protected: @@ -923,7 +972,7 @@ class U_I18N_API TimeZone : public UObject { * Parses the given custom time zone identifier * @param id id A string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or * GMT[+-]hh. - * @param sign Receves parsed sign, 1 for positive, -1 for negative. + * @param sign Receives parsed sign, 1 for positive, -1 for negative. * @param hour Receives parsed hour field * @param minute Receives parsed minute field * @param second Receives parsed second field @@ -951,7 +1000,7 @@ class U_I18N_API TimeZone : public UObject { * @param min offset minutes * @param sec offset seconds * @param negative sign of the offset, true for negative offset. - * @param id Receves the format result (normalized custom ID) + * @param id Receives the format result (normalized custom ID) * @return The reference to id */ static UnicodeString& formatCustomID(int32_t hour, int32_t min, int32_t sec, diff --git a/deps/icu-small/source/i18n/unicode/tmunit.h b/deps/icu-small/source/i18n/unicode/tmunit.h index 2e949ddfbd560d..24abb49f198274 100644 --- a/deps/icu-small/source/i18n/unicode/tmunit.h +++ b/deps/icu-small/source/i18n/unicode/tmunit.h @@ -73,7 +73,7 @@ class U_I18N_API TimeUnit: public MeasureUnit { * Override clone. * @stable ICU 4.2 */ - virtual TimeUnit* clone() const; + virtual TimeUnit* clone() const override; /** * Copy operator. @@ -95,7 +95,7 @@ class U_I18N_API TimeUnit: public MeasureUnit { * different class IDs. * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * Returns the class ID for this class. This is used to compare to diff --git a/deps/icu-small/source/i18n/unicode/tmutamt.h b/deps/icu-small/source/i18n/unicode/tmutamt.h index bb9144e2d072dc..88e892fb0c26c2 100644 --- a/deps/icu-small/source/i18n/unicode/tmutamt.h +++ b/deps/icu-small/source/i18n/unicode/tmutamt.h @@ -5,7 +5,7 @@ * Copyright (C) 2009-2010, Google, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* - */ + */ #ifndef __TMUTAMT_H__ #define __TMUTAMT_H__ @@ -38,27 +38,27 @@ class U_I18N_API TimeUnitAmount: public Measure { public: /** * Construct TimeUnitAmount object with the given number and the - * given time unit. + * given time unit. * @param number a numeric object; number.isNumeric() must be true * @param timeUnitField the time unit field of a time unit - * @param status the input-output error code. + * @param status the input-output error code. * If the number is not numeric or the timeUnitField * is not valid, * then this will be set to a failing value: * U_ILLEGAL_ARGUMENT_ERROR. * @stable ICU 4.2 */ - TimeUnitAmount(const Formattable& number, + TimeUnitAmount(const Formattable& number, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode& status); /** * Construct TimeUnitAmount object with the given numeric amount and the - * given time unit. + * given time unit. * @param amount a numeric amount. * @param timeUnitField the time unit field on which a time unit amount * object will be created. - * @param status the input-output error code. + * @param status the input-output error code. * If the timeUnitField is not valid, * then this will be set to a failing value: * U_ILLEGAL_ARGUMENT_ERROR. @@ -69,7 +69,7 @@ class U_I18N_API TimeUnitAmount: public Measure { /** - * Copy constructor + * Copy constructor * @stable ICU 4.2 */ TimeUnitAmount(const TimeUnitAmount& other); @@ -83,36 +83,36 @@ class U_I18N_API TimeUnitAmount: public Measure { /** - * Clone. + * Clone. * @return a polymorphic clone of this object. The result will have the same class as returned by getDynamicClassID(). * @stable ICU 4.2 */ - virtual TimeUnitAmount* clone() const; - + virtual TimeUnitAmount* clone() const override; + /** * Destructor * @stable ICU 4.2 */ virtual ~TimeUnitAmount(); - - /** - * Equality operator. + + /** + * Equality operator. * @param other the object to compare to. * @return true if this object is equal to the given object. * @stable ICU 4.2 */ - virtual UBool operator==(const UObject& other) const; + virtual bool operator==(const UObject& other) const; - /** - * Not-equality operator. + /** + * Not-equality operator. * @param other the object to compare to. * @return true if this object is not equal to the given object. * @stable ICU 4.2 */ - UBool operator!=(const UObject& other) const; + bool operator!=(const UObject& other) const; /** @@ -140,7 +140,7 @@ class U_I18N_API TimeUnitAmount: public Measure { * other classes have different class IDs. * @stable ICU 4.2 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; /** @@ -160,7 +160,7 @@ class U_I18N_API TimeUnitAmount: public Measure { -inline UBool +inline bool TimeUnitAmount::operator!=(const UObject& other) const { return !operator==(other); } diff --git a/deps/icu-small/source/i18n/unicode/tmutfmt.h b/deps/icu-small/source/i18n/unicode/tmutfmt.h index ad871f7c09fd4f..02e0563a010e63 100644 --- a/deps/icu-small/source/i18n/unicode/tmutfmt.h +++ b/deps/icu-small/source/i18n/unicode/tmutfmt.h @@ -126,7 +126,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { * @return A copy of the object. * @deprecated ICU 53 */ - virtual TimeUnitFormat* clone() const; + virtual TimeUnitFormat* clone() const override; /** * Assignment operator @@ -134,15 +134,6 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { */ TimeUnitFormat& operator=(const TimeUnitFormat& other); - /** - * Return true if the given Format objects are not semantically equal. - * Objects of different subclasses are considered unequal. - * @param other the object to be compared with. - * @return true if the given Format objects are not semantically equal. - * @deprecated ICU 53 - */ - UBool operator!=(const Format& other) const; - /** * Set the locale used for formatting or parsing. * @param locale the locale to be set @@ -167,7 +158,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { */ virtual void parseObject(const UnicodeString& source, Formattable& result, - ParsePosition& pos) const; + ParsePosition& pos) const override; /** * Return the class ID for this class. This is useful only for comparing to @@ -193,7 +184,7 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { * other classes have different class IDs. * @deprecated ICU 53 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; private: Hashtable* fTimeUnitToCountToPatterns[TimeUnit::UTIMEUNIT_FIELD_COUNT]; @@ -236,11 +227,6 @@ class U_I18N_API TimeUnitFormat: public MeasureFormat { friend struct TimeUnitFormatReadSink; }; -inline UBool -TimeUnitFormat::operator!=(const Format& other) const { - return !operator==(other); -} - U_NAMESPACE_END #endif /* U_HIDE_DEPRECATED_API */ diff --git a/deps/icu-small/source/i18n/unicode/translit.h b/deps/icu-small/source/i18n/unicode/translit.h index 0556b740fab792..56eb6448ca4589 100644 --- a/deps/icu-small/source/i18n/unicode/translit.h +++ b/deps/icu-small/source/i18n/unicode/translit.h @@ -18,7 +18,7 @@ /** * \file - * \brief C++ API: Tranforms text from one format to another. + * \brief C++ API: Transforms text from one format to another. */ #if !UCONFIG_NO_TRANSLITERATION @@ -157,7 +157,7 @@ class TransliteratorIDParser; * transliterator B decrements character values, then A * is an inverse of B and vice versa. If we compose A * with B in a compound transliterator, the result is the - * indentity transliterator, that is, a transliterator that does not + * identity transliterator, that is, a transliterator that does not * change its input text. * * The Transliterator method getInverse() @@ -219,7 +219,7 @@ class TransliteratorIDParser; * acts a template; future calls to {@link #createInstance } with the ID * of the registered object return clones of that object. Thus any * object passed to registerInstance() must implement - * clone() propertly. To register a transliterator subclass + * clone() properly. To register a transliterator subclass * without instantiating it (until it is needed), users may call * {@link #registerFactory }. In this case, the objects are * instantiated by invoking the zero-argument public constructor of @@ -317,7 +317,7 @@ class TransliteratorIDParser; * replacement. The cursor is the point in the text at which the * next replacement, if any, will be applied. The cursor is usually * placed within the replacement text; however, it can actually be - * placed into the precending or following context by using the + * placed into the preceding or following context by using the * special character '@'. Examples: * *

      @@ -1061,7 +1061,7 @@ class U_I18N_API Transliterator : public UObject {
            *
            * @param ID a valid ID, as enumerated by getAvailableIDs()
            * @param dir        either FORWARD or REVERSE.
      -     * @param parseError Struct to recieve information on position
      +     * @param parseError Struct to receive information on position
            *                   of error if an error is encountered
            * @param status     Output param to filled in with a success or an error.
            * @return A Transliterator object with the given ID
      @@ -1380,7 +1380,7 @@ class U_I18N_API Transliterator : public UObject {
            * Return a registered source specifier.
            * @param index which specifier to return, from 0 to n-1, where
            * n = countAvailableSources()
      -     * @param result fill-in paramter to receive the source specifier.
      +     * @param result fill-in parameter to receive the source specifier.
            * If index is out of range, result will be empty.
            * @return reference to result
            * @stable ICU 2.0
      @@ -1403,7 +1403,7 @@ class U_I18N_API Transliterator : public UObject {
            * @param index which specifier to return, from 0 to n-1, where
            * n = countAvailableTargets(source)
            * @param source the source specifier
      -     * @param result fill-in paramter to receive the target specifier.
      +     * @param result fill-in parameter to receive the target specifier.
            * If source is invalid or if index is out of range, result will
            * be empty.
            * @return reference to result
      @@ -1430,7 +1430,7 @@ class U_I18N_API Transliterator : public UObject {
            * n = countAvailableVariants(source, target)
            * @param source the source specifier
            * @param target the target specifier
      -     * @param result fill-in paramter to receive the variant
      +     * @param result fill-in parameter to receive the variant
            * specifier.  If source is invalid or if target is invalid or if
            * index is out of range, result will be empty.
            * @return reference to result
      @@ -1527,7 +1527,7 @@ class U_I18N_API Transliterator : public UObject {
            * different class IDs.
            * @stable ICU 2.0
            */
      -    virtual UClassID getDynamicClassID(void) const = 0;
      +    virtual UClassID getDynamicClassID(void) const override = 0;
       
       private:
           static UBool initializeRegistry(UErrorCode &status);
      diff --git a/deps/icu-small/source/i18n/unicode/tzfmt.h b/deps/icu-small/source/i18n/unicode/tzfmt.h
      index 4411865984b54e..6db8477026a931 100644
      --- a/deps/icu-small/source/i18n/unicode/tzfmt.h
      +++ b/deps/icu-small/source/i18n/unicode/tzfmt.h
      @@ -299,7 +299,7 @@ class U_I18N_API TimeZoneFormat : public Format {
            *                Objects of different subclasses are considered unequal.
            * @stable ICU 50
            */
      -    virtual UBool operator==(const Format& other) const;
      +    virtual bool operator==(const Format& other) const override;
       
           /**
            * Clone this object polymorphically. The caller is responsible
      @@ -307,7 +307,7 @@ class U_I18N_API TimeZoneFormat : public Format {
            * @return A copy of the object
            * @stable ICU 50
            */
      -    virtual TimeZoneFormat* clone() const;
      +    virtual TimeZoneFormat* clone() const override;
       
           /**
            * Creates an instance of TimeZoneFormat for the given locale.
      @@ -327,7 +327,7 @@ class U_I18N_API TimeZoneFormat : public Format {
           const TimeZoneNames* getTimeZoneNames() const;
       
           /**
      -     * Sets the time zone display name data to this format instnace.
      +     * Sets the time zone display name data to this format instance.
            * The caller should not delete the TimeZoenNames object after it is adopted
            * by this call.
            * @param tznames TimeZoneNames object to be adopted.
      @@ -336,7 +336,7 @@ class U_I18N_API TimeZoneFormat : public Format {
           void adoptTimeZoneNames(TimeZoneNames *tznames);
       
           /**
      -     * Sets the time zone display name data to this format instnace.
      +     * Sets the time zone display name data to this format instance.
            * @param tznames TimeZoneNames object to be set.
            * @stable ICU 50
            */
      @@ -355,7 +355,7 @@ class U_I18N_API TimeZoneFormat : public Format {
            * Sets the localized GMT format pattern. The pattern must contain
            * a single argument {0}, for example "GMT {0}".
            * @param pattern The localized GMT format pattern to be used by this object.
      -     * @param status Recieves the status.
      +     * @param status Receives the status.
            * @see #getGMTPattern
            * @stable ICU 50
            */
      @@ -437,7 +437,7 @@ class U_I18N_API TimeZoneFormat : public Format {
            * Sets the default parse options.
            * 

      Note: By default, an instance of TimeZoneFormat * created by {@link #createInstance} has no parse options set (UTZFMT_PARSE_OPTION_NONE). - * To specify multipe options, use bitwise flags of UTimeZoneFormatParseOption. + * To specify multiple options, use bitwise flags of UTimeZoneFormatParseOption. * @see #UTimeZoneFormatParseOption * @stable ICU 50 */ @@ -590,7 +590,7 @@ class U_I18N_API TimeZoneFormat : public Format { * @param text The text contains a time zone string at the position. * @param style The format style * @param pos The position. - * @param parseOptions The parse options repesented by bitwise flags of UTimeZoneFormatParseOption. + * @param parseOptions The parse options represented by bitwise flags of UTimeZoneFormatParseOption. * @param timeType The output argument for receiving the time type (standard/daylight/unknown), * or NULL if the information is not necessary. * @return A TimeZone, or null if the input could not be parsed. @@ -636,7 +636,7 @@ class U_I18N_API TimeZoneFormat : public Format { * @stable ICU 50 */ virtual UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, - FieldPosition& pos, UErrorCode& status) const; + FieldPosition& pos, UErrorCode& status) const override; /** * Parse a string to produce an object. This methods handles parsing of @@ -650,7 +650,7 @@ class U_I18N_API TimeZoneFormat : public Format { * delete it when done. * @stable ICU 50 */ - virtual void parseObject(const UnicodeString& source, Formattable& result, ParsePosition& parse_pos) const; + virtual void parseObject(const UnicodeString& source, Formattable& result, ParsePosition& parse_pos) const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -662,7 +662,7 @@ class U_I18N_API TimeZoneFormat : public Format { * ICU "poor man's RTTI", returns a UClassID for the actual class. * @stable ICU 50 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; protected: /** @@ -1058,7 +1058,7 @@ class U_I18N_API TimeZoneFormat : public Format { * Returns the time zone ID of a match at the specified index within * the MatchInfoCollection. * @param matches the collection of matches - * @param idx the index withing matches + * @param idx the index within matches * @param tzID receives the resolved time zone ID * @return a reference to tzID. */ diff --git a/deps/icu-small/source/i18n/unicode/tznames.h b/deps/icu-small/source/i18n/unicode/tznames.h index 19858cd7e2cf6d..b32e9562d5e663 100644 --- a/deps/icu-small/source/i18n/unicode/tznames.h +++ b/deps/icu-small/source/i18n/unicode/tznames.h @@ -142,7 +142,7 @@ class U_I18N_API TimeZoneNames : public UObject { * @return Return true if the given Format objects are semantically equal. * @stable ICU 50 */ - virtual UBool operator==(const TimeZoneNames& other) const = 0; + virtual bool operator==(const TimeZoneNames& other) const = 0; /** * Return true if the given TimeZoneNames objects are not semantically @@ -151,7 +151,7 @@ class U_I18N_API TimeZoneNames : public UObject { * @return Return true if the given Format objects are not semantically equal. * @stable ICU 50 */ - UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); } + bool operator!=(const TimeZoneNames& other) const { return !operator==(other); } /** * Clone this object polymorphically. The caller is responsible diff --git a/deps/icu-small/source/i18n/unicode/tzrule.h b/deps/icu-small/source/i18n/unicode/tzrule.h index 2a983ef58ac448..ab0b97b6fd26fe 100644 --- a/deps/icu-small/source/i18n/unicode/tzrule.h +++ b/deps/icu-small/source/i18n/unicode/tzrule.h @@ -10,7 +10,7 @@ #define TZRULE_H /** - * \file + * \file * \brief C++ API: Time zone rule classes */ @@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN * TimeZoneRule is a class representing a rule for time zone. * TimeZoneRule has a set of time zone attributes, such as zone name, * raw offset (UTC offset for standard time) and daylight saving time offset. - * + * * @stable ICU 3.8 */ class U_I18N_API TimeZoneRule : public UObject { @@ -56,7 +56,7 @@ class U_I18N_API TimeZoneRule : public UObject { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -65,7 +65,7 @@ class U_I18N_API TimeZoneRule : public UObject { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const; /** * Fills in "name" with the name of this time zone. @@ -231,7 +231,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual InitialTimeZoneRule* clone() const; + virtual InitialTimeZoneRule* clone() const override; /** * Assignment operator. @@ -247,7 +247,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -256,7 +256,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the time when this rule takes effect in the given year. @@ -280,7 +280,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -293,7 +293,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -306,7 +306,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -323,7 +323,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -340,7 +340,7 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; public: /** @@ -367,14 +367,14 @@ class U_I18N_API InitialTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; /** * AnnualTimeZoneRule is a class used for representing a time zone * rule which takes effect annually. The calendar system used for the rule is * is based on Gregorian calendar - * + * * @stable ICU 3.8 */ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { @@ -442,7 +442,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual AnnualTimeZoneRule* clone() const; + virtual AnnualTimeZoneRule* clone() const override; /** * Assignment operator. @@ -458,7 +458,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -467,7 +467,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the start date/time rule used by this rule. @@ -515,7 +515,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -528,7 +528,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -541,7 +541,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -558,7 +558,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -575,7 +575,7 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; private: @@ -608,13 +608,13 @@ class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; /** * TimeArrayTimeZoneRule represents a time zone rule whose start times are * defined by an array of milliseconds since the standard base time. - * + * * @stable ICU 3.8 */ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { @@ -658,7 +658,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return A copy of the object. * @stable ICU 3.8 */ - virtual TimeArrayTimeZoneRule* clone() const; + virtual TimeArrayTimeZoneRule* clone() const override; /** * Assignment operator. @@ -674,7 +674,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZoneRule& that) const; + virtual bool operator==(const TimeZoneRule& that) const override; /** * Return true if the given TimeZoneRule objects are semantically unequal. Objects @@ -683,13 +683,13 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the given TimeZoneRule objects are semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZoneRule& that) const; + virtual bool operator!=(const TimeZoneRule& that) const override; /** * Gets the time type of the start times used by this rule. The return value * is either DateTimeRule::WALL_TIME or STANDARD_TIME * or UTC_TIME. - * + * * @return The time type used of the start times used by this rule. * @stable ICU 3.8 */ @@ -721,7 +721,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @return true if the other TimeZoneRule is equivalent to this one. * @stable ICU 3.8 */ - virtual UBool isEquivalentTo(const TimeZoneRule& that) const; + virtual UBool isEquivalentTo(const TimeZoneRule& that) const override; /** * Gets the very first time when this rule takes effect. @@ -734,7 +734,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the final time when this rule takes effect. @@ -747,7 +747,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * "result" is unchanged. * @stable ICU 3.8 */ - virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const; + virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const override; /** * Gets the first time when this rule takes effect after the specified time. @@ -764,7 +764,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; /** * Gets the most recent time when this rule takes effect before the specified time. @@ -781,7 +781,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * @stable ICU 3.8 */ virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, - UBool inclusive, UDate& result) const; + UBool inclusive, UDate& result) const override; private: @@ -819,7 +819,7 @@ class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; diff --git a/deps/icu-small/source/i18n/unicode/tztrans.h b/deps/icu-small/source/i18n/unicode/tztrans.h index e87fea7c3cee7f..5adbeb35e43a66 100644 --- a/deps/icu-small/source/i18n/unicode/tztrans.h +++ b/deps/icu-small/source/i18n/unicode/tztrans.h @@ -10,7 +10,7 @@ #define TZTRANS_H /** - * \file + * \file * \brief C++ API: Time zone transition */ @@ -37,7 +37,7 @@ class U_I18N_API TimeZoneTransition : public UObject { /** * Constructs a TimeZoneTransition with the time and the rules before/after * the transition. - * + * * @param time The time of transition in milliseconds since the base time. * @param from The time zone rule used before the transition. * @param to The time zone rule used after the transition. @@ -86,7 +86,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * @return true if the given TimeZoneTransition objects are semantically equal. * @stable ICU 3.8 */ - UBool operator==(const TimeZoneTransition& that) const; + bool operator==(const TimeZoneTransition& that) const; /** * Return true if the given TimeZoneTransition objects are semantically unequal. Objects @@ -95,7 +95,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * @return true if the given TimeZoneTransition objects are semantically unequal. * @stable ICU 3.8 */ - UBool operator!=(const TimeZoneTransition& that) const; + bool operator!=(const TimeZoneTransition& that) const; /** * Returns the time of transition in milliseconds. @@ -187,7 +187,7 @@ class U_I18N_API TimeZoneTransition : public UObject { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/unicode/ucal.h b/deps/icu-small/source/i18n/unicode/ucal.h index 04c4a25de99951..94abae83919a85 100644 --- a/deps/icu-small/source/i18n/unicode/ucal.h +++ b/deps/icu-small/source/i18n/unicode/ucal.h @@ -171,7 +171,7 @@ */ typedef void* UCalendar; -/** Possible types of UCalendars +/** Possible types of UCalendars * @stable ICU 2.0 */ enum UCalendarType { @@ -196,25 +196,25 @@ enum UCalendarType { /** @stable ICU 2.0 */ typedef enum UCalendarType UCalendarType; -/** Possible fields in a UCalendar +/** Possible fields in a UCalendar * @stable ICU 2.0 */ enum UCalendarDateFields { - /** - * Field number indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar. + /** + * Field number indicating the era, e.g., AD or BC in the Gregorian (Julian) calendar. * This is a calendar-specific value. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_ERA, /** * Field number indicating the year. This is a calendar-specific value. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_YEAR, /** - * Field number indicating the month. This is a calendar-specific value. + * Field number indicating the month. This is a calendar-specific value. * The first month of the year is * JANUARY; the last depends on the number of months in a year. * @see #UCAL_JANUARY @@ -230,7 +230,7 @@ enum UCalendarDateFields { * @see #UCAL_NOVEMBER * @see #UCAL_DECEMBER * @see #UCAL_UNDECIMBER - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MONTH, @@ -243,7 +243,7 @@ enum UCalendarDateFields { * the year. * @see ucal_getAttribute * @see ucal_setAttribute - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_WEEK_OF_YEAR, @@ -258,7 +258,7 @@ enum UCalendarDateFields { * @see ucal_setAttribute * @see #UCAL_FIRST_DAY_OF_WEEK * @see #UCAL_MINIMAL_DAYS_IN_FIRST_WEEK - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_WEEK_OF_MONTH, @@ -267,14 +267,14 @@ enum UCalendarDateFields { * day of the month. This is a synonym for DAY_OF_MONTH. * The first day of the month has value 1. * @see #UCAL_DAY_OF_MONTH - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DATE, /** * Field number indicating the day * number within the current year. The first day of the year has value 1. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_YEAR, @@ -290,7 +290,7 @@ enum UCalendarDateFields { * @see #UCAL_THURSDAY * @see #UCAL_FRIDAY * @see #UCAL_SATURDAY - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_WEEK, @@ -315,7 +315,7 @@ enum UCalendarDateFields { * DAY_OF_WEEK_IN_MONTH 5 and the end of 4. * @see #UCAL_DAY_OF_WEEK * @see #UCAL_WEEK_OF_MONTH - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DAY_OF_WEEK_IN_MONTH, @@ -326,7 +326,7 @@ enum UCalendarDateFields { * @see #UCAL_AM * @see #UCAL_PM * @see #UCAL_HOUR - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_AM_PM, @@ -337,7 +337,7 @@ enum UCalendarDateFields { * E.g., at 10:04:15.250 PM the HOUR is 10. * @see #UCAL_AM_PM * @see #UCAL_HOUR_OF_DAY - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_HOUR, @@ -346,7 +346,7 @@ enum UCalendarDateFields { * hour of the day. HOUR_OF_DAY is used for the 24-hour clock. * E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22. * @see #UCAL_HOUR - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_HOUR_OF_DAY, @@ -354,7 +354,7 @@ enum UCalendarDateFields { * Field number indicating the * minute within the hour. * E.g., at 10:04:15.250 PM the UCAL_MINUTE is 4. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MINUTE, @@ -362,7 +362,7 @@ enum UCalendarDateFields { * Field number indicating the * second within the minute. * E.g., at 10:04:15.250 PM the UCAL_SECOND is 15. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_SECOND, @@ -370,26 +370,26 @@ enum UCalendarDateFields { * Field number indicating the * millisecond within the second. * E.g., at 10:04:15.250 PM the UCAL_MILLISECOND is 250. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_MILLISECOND, /** * Field number indicating the * raw offset from GMT in milliseconds. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_ZONE_OFFSET, /** * Field number indicating the * daylight savings offset in milliseconds. - * @stable ICU 2.6 + * @stable ICU 2.6 */ UCAL_DST_OFFSET, - + /** - * Field number + * Field number * indicating the extended year corresponding to the * UCAL_WEEK_OF_YEAR field. This may be one greater or less * than the value of UCAL_EXTENDED_YEAR. @@ -398,7 +398,7 @@ enum UCalendarDateFields { UCAL_YEAR_WOY, /** - * Field number + * Field number * indicating the localized day of week. This will be a value from 1 * to 7 inclusive, with 1 being the localized first day of the week. * @stable ICU 2.6 @@ -406,15 +406,15 @@ enum UCalendarDateFields { UCAL_DOW_LOCAL, /** - * Year of this calendar system, encompassing all supra-year fields. For example, + * Year of this calendar system, encompassing all supra-year fields. For example, * in Gregorian/Julian calendars, positive Extended Year values indicate years AD, - * 1 BC = 0 extended, 2 BC = -1 extended, and so on. - * @stable ICU 2.8 + * 1 BC = 0 extended, 2 BC = -1 extended, and so on. + * @stable ICU 2.8 */ UCAL_EXTENDED_YEAR, /** - * Field number + * Field number * indicating the modified Julian day number. This is different from * the conventional Julian day number in two regards. First, it * demarcates days at local zone midnight, rather than noon GMT. @@ -423,13 +423,13 @@ enum UCalendarDateFields { * the date-related fields. * @stable ICU 2.8 */ - UCAL_JULIAN_DAY, + UCAL_JULIAN_DAY, /** - * Ranges from 0 to 23:59:59.999 (regardless of DST). This field behaves exactly - * like a composite of all time-related fields, not including the zone fields. As such, + * Ranges from 0 to 23:59:59.999 (regardless of DST). This field behaves exactly + * like a composite of all time-related fields, not including the zone fields. As such, * it also reflects discontinuities of those fields on DST transition days. On a day - * of DST onset, it will jump forward. On a day of DST cessation, it will jump + * of DST onset, it will jump forward. On a day of DST cessation, it will jump * backward. This reflects the fact that it must be combined with the DST_OFFSET field * to obtain a unique local time value. * @stable ICU 2.8 @@ -470,7 +470,7 @@ typedef enum UCalendarDateFields UCalendarDateFields; * who create locale resources for the field of first-day-of-week should be aware of * this. For instance, in US locale, first-day-of-week is set to 1, i.e., UCAL_SUNDAY. */ -/** Possible days of the week in a UCalendar +/** Possible days of the week in a UCalendar * @stable ICU 2.0 */ enum UCalendarDaysOfWeek { @@ -531,7 +531,7 @@ enum UCalendarMonths { /** @stable ICU 2.0 */ typedef enum UCalendarMonths UCalendarMonths; -/** Possible AM/PM values in a UCalendar +/** Possible AM/PM values in a UCalendar * @stable ICU 2.0 */ enum UCalendarAMPMs { @@ -571,13 +571,13 @@ enum USystemTimeZoneType { /** @stable ICU 4.8 */ typedef enum USystemTimeZoneType USystemTimeZoneType; -/** +/** * Create an enumeration over system time zone IDs with the given - * filter conditions. + * filter conditions. * @param zoneType The system time zone type. * @param region The ISO 3166 two-letter country code or UN M.49 * three-digit area code. When NULL, no filtering - * done by region. + * done by region. * @param rawOffset An offset from GMT in milliseconds, ignoring the * effect of daylight savings time, if any. When NULL, * no filtering done by zone offset. @@ -586,7 +586,7 @@ typedef enum USystemTimeZoneType USystemTimeZoneType; * using enum_close(), or NULL upon failure. In case of failure, * *ec will indicate the error. * @stable ICU 4.8 - */ + */ U_CAPI UEnumeration* U_EXPORT2 ucal_openTimeZoneIDEnumeration(USystemTimeZoneType zoneType, const char* region, const int32_t* rawOffset, UErrorCode* ec); @@ -630,7 +630,7 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec); * routines fail, or if they specify a TimeZone or TimeZone offset * which is not recognized, then the special TimeZone "Etc/Unknown" * is returned. - * + * * The default may be changed with `ucal_setDefaultTimeZone()` or with * the C++ TimeZone API, `TimeZone::adoptDefault(TimeZone*)`. * @@ -642,9 +642,9 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec); * * @return The result string length, not including the terminating * null - * + * * @see #UCAL_UNKNOWN_ZONE_ID - * + * * @stable ICU 2.6 */ U_CAPI int32_t U_EXPORT2 @@ -668,27 +668,27 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec); * system. If the host system detection routines fail, or if they specify * a TimeZone or TimeZone offset which is not recognized, then the special * TimeZone "Etc/Unknown" is returned. - * + * * Note that host time zone and the ICU default time zone can be different. - * + * * The ICU default time zone does not change once initialized unless modified * by calling `ucal_setDefaultTimeZone()` or with the C++ TimeZone API, * `TimeZone::adoptDefault(TimeZone*)`. - * + * * If the host operating system configuration has changed since ICU has * initialized then the returned value can be different than the ICU default * time zone, even if the default has not changed. * *

      This function is not thread safe.

      - * + * * @param result A buffer to receive the result, or NULL * @param resultCapacity The capacity of the result buffer * @param ec input/output error code * @return The result string length, not including the terminating * null - * + * * @see #UCAL_UNKNOWN_ZONE_ID - * + * * @stable ICU 65 */ U_CAPI int32_t U_EXPORT2 @@ -719,7 +719,7 @@ ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec); * @return The current date and time. * @stable ICU 2.0 */ -U_CAPI UDate U_EXPORT2 +U_CAPI UDate U_EXPORT2 ucal_getNow(void); /** @@ -731,7 +731,7 @@ ucal_getNow(void); * the UCalendar returned by the function is initialized with GMT zone with TimeZone ID * UCAL_UNKNOWN_ZONE_ID ("Etc/Unknown") without any errors/warnings. If you want * to check if a TimeZone ID is valid prior to this function, use ucal_getCanonicalTimeZoneID. - * + * * @param zoneID The desired TimeZone ID. If 0, use the default time zone. * @param len The length of zoneID, or -1 if null-terminated. * @param locale The desired locale @@ -745,7 +745,7 @@ ucal_getNow(void); * @see #UCAL_UNKNOWN_ZONE_ID * @stable ICU 2.0 */ -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_open(const UChar* zoneID, int32_t len, const char* locale, @@ -758,7 +758,7 @@ ucal_open(const UChar* zoneID, * @param cal The UCalendar to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_close(UCalendar *cal); #if U_SHOW_CPLUSPLUS_API @@ -788,7 +788,7 @@ U_NAMESPACE_END * @return A pointer to a UCalendar identical to cal. * @stable ICU 4.0 */ -U_CAPI UCalendar* U_EXPORT2 +U_CAPI UCalendar* U_EXPORT2 ucal_clone(const UCalendar* cal, UErrorCode* status); @@ -801,30 +801,30 @@ ucal_clone(const UCalendar* cal, * @param status A pointer to an UErrorCode to receive any errors. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setTimeZone(UCalendar* cal, const UChar* zoneID, int32_t len, UErrorCode* status); -/** - * Get the ID of the UCalendar's time zone. - * - * @param cal The UCalendar to query. - * @param result Receives the UCalendar's time zone ID. - * @param resultLength The maximum size of result. - * @param status Receives the status. - * @return The total buffer size needed; if greater than resultLength, the output was truncated. - * @stable ICU 51 - */ -U_CAPI int32_t U_EXPORT2 +/** + * Get the ID of the UCalendar's time zone. + * + * @param cal The UCalendar to query. + * @param result Receives the UCalendar's time zone ID. + * @param resultLength The maximum size of result. + * @param status Receives the status. + * @return The total buffer size needed; if greater than resultLength, the output was truncated. + * @stable ICU 51 + */ +U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneID(const UCalendar *cal, UChar *result, int32_t resultLength, UErrorCode *status); /** - * Possible formats for a UCalendar's display name + * Possible formats for a UCalendar's display name * @stable ICU 2.0 */ enum UCalendarDisplayNameType { @@ -854,7 +854,7 @@ typedef enum UCalendarDisplayNameType UCalendarDisplayNameType; * @return The total buffer size needed; if greater than resultLength, the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneDisplayName(const UCalendar* cal, UCalendarDisplayNameType type, const char* locale, @@ -870,7 +870,7 @@ ucal_getTimeZoneDisplayName(const UCalendar* cal, * @return true if cal is currently in daylight savings time, false otherwise * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_inDaylightTime(const UCalendar* cal, UErrorCode* status ); @@ -921,7 +921,7 @@ U_CAPI UDate U_EXPORT2 ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode); /** - * Types of UCalendar attributes + * Types of UCalendar attributes * @stable ICU 2.0 */ enum UCalendarAttribute { @@ -998,7 +998,7 @@ typedef enum UCalendarWallTimeOption UCalendarWallTimeOption; * @see ucal_setAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getAttribute(const UCalendar* cal, UCalendarAttribute attr); @@ -1013,7 +1013,7 @@ ucal_getAttribute(const UCalendar* cal, * @see ucal_getAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setAttribute(UCalendar* cal, UCalendarAttribute attr, int32_t newValue); @@ -1027,7 +1027,7 @@ ucal_setAttribute(UCalendar* cal, * @see ucal_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ucal_getAvailable(int32_t localeIndex); /** @@ -1038,7 +1038,7 @@ ucal_getAvailable(int32_t localeIndex); * @see ucal_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_countAvailable(void); /** @@ -1052,7 +1052,7 @@ ucal_countAvailable(void); * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI UDate U_EXPORT2 +U_CAPI UDate U_EXPORT2 ucal_getMillis(const UCalendar* cal, UErrorCode* status); @@ -1067,7 +1067,7 @@ ucal_getMillis(const UCalendar* cal, * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setMillis(UCalendar* cal, UDate dateTime, UErrorCode* status ); @@ -1086,7 +1086,7 @@ ucal_setMillis(UCalendar* cal, * @see ucal_setDateTime * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setDate(UCalendar* cal, int32_t year, int32_t month, @@ -1110,7 +1110,7 @@ ucal_setDate(UCalendar* cal, * @see ucal_setDate * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_setDateTime(UCalendar* cal, int32_t year, int32_t month, @@ -1129,7 +1129,7 @@ ucal_setDateTime(UCalendar* cal, * @return true if cal1 and cal2 are equivalent, false otherwise. * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_equivalentTo(const UCalendar* cal1, const UCalendar* cal2); @@ -1151,7 +1151,7 @@ ucal_equivalentTo(const UCalendar* cal1, * @see ucal_roll * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_add(UCalendar* cal, UCalendarDateFields field, int32_t amount, @@ -1181,7 +1181,7 @@ ucal_add(UCalendar* cal, * @see ucal_add * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_roll(UCalendar* cal, UCalendarDateFields field, int32_t amount, @@ -1203,7 +1203,7 @@ ucal_roll(UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_get(const UCalendar* cal, UCalendarDateFields field, UErrorCode* status ); @@ -1223,7 +1223,7 @@ ucal_get(const UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_set(UCalendar* cal, UCalendarDateFields field, int32_t value); @@ -1243,7 +1243,7 @@ ucal_set(UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_isSet(const UCalendar* cal, UCalendarDateFields field); @@ -1261,7 +1261,7 @@ ucal_isSet(const UCalendar* cal, * @see ucal_clear * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_clearField(UCalendar* cal, UCalendarDateFields field); @@ -1275,11 +1275,11 @@ ucal_clearField(UCalendar* cal, * @see ucal_clearField * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucal_clear(UCalendar* calendar); /** - * Possible limit values for a UCalendar + * Possible limit values for a UCalendar * @stable ICU 2.0 */ enum UCalendarLimitType { @@ -1289,7 +1289,7 @@ enum UCalendarLimitType { UCAL_MAXIMUM, /** Greatest minimum value */ UCAL_GREATEST_MINIMUM, - /** Leaest maximum value */ + /** Least maximum value */ UCAL_LEAST_MAXIMUM, /** Actual minimum value */ UCAL_ACTUAL_MINIMUM, @@ -1314,7 +1314,7 @@ typedef enum UCalendarLimitType UCalendarLimitType; * @return The requested value. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getLimit(const UCalendar* cal, UCalendarDateFields field, UCalendarLimitType type, @@ -1322,7 +1322,7 @@ ucal_getLimit(const UCalendar* cal, /** Get the locale for this calendar object. You can choose between valid and actual locale. * @param cal The calendar object - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale name * @stable ICU 2.8 @@ -1399,24 +1399,24 @@ ucal_getKeywordValuesForLocale(const char* key, enum UCalendarWeekdayType { /** * Designates a full weekday (no part of the day is included in the weekend). - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKDAY, /** * Designates a full weekend day (the entire day is included in the weekend). - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND, /** * Designates a day that starts as a weekday and transitions to the weekend. * Call ucal_getWeekendTransition() to get the time of transition. - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND_ONSET, /** * Designates a day that starts as the weekend and transitions to a weekday. * Call ucal_getWeekendTransition() to get the time of transition. - * @stable ICU 4.4 + * @stable ICU 4.4 */ UCAL_WEEKEND_CEASE }; @@ -1488,7 +1488,7 @@ ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status); * * A typical way of using this function is to call it first with the largest field of interest, then * with progressively smaller fields. - * + * * @param cal The UCalendar to compare and update. * @param target The target date to compare to the current calendar setting. * @param field The field to compare; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH, @@ -1499,7 +1499,7 @@ ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status); * @return The date difference for the specified field. * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucal_getFieldDifference(UCalendar* cal, UDate target, UCalendarDateFields field, @@ -1553,7 +1553,7 @@ typedef enum UTimeZoneTransitionType UTimeZoneTransitionType; /**< @stable ICU 5 * otherwise. * @stable ICU 50 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType type, UDate* transition, UErrorCode* status); diff --git a/deps/icu-small/source/i18n/unicode/ucol.h b/deps/icu-small/source/i18n/unicode/ucol.h index 6122cc1d59cbf3..6d22eb6069ec87 100644 --- a/deps/icu-small/source/i18n/unicode/ucol.h +++ b/deps/icu-small/source/i18n/unicode/ucol.h @@ -26,7 +26,7 @@ /** * \file - * \brief C API: Collator + * \brief C API: Collator * *

      Collator C API

      * @@ -34,12 +34,12 @@ * string comparison. You use this service to build * searching and sorting routines for natural language text. *

      - * For more information about the collation service see + * For more information about the collation service see * the User Guide. *

      - * Collation service provides correct sorting orders for most locales supported in ICU. + * Collation service provides correct sorting orders for most locales supported in ICU. * If specific data for a locale is not available, the orders eventually falls back - * to the CLDR root sort order. + * to the CLDR root sort order. *

      * Sort ordering may be customized by providing your own set of rules. For more on * this subject see the @@ -55,7 +55,7 @@ * For usage in C programs. */ struct UCollator; -/** structure representing a collator object instance +/** structure representing a collator object instance * @stable ICU 2.0 */ typedef struct UCollator UCollator; @@ -70,7 +70,7 @@ typedef struct UCollator UCollator; * target string in the ucol_strcoll() method. * @see ucol_strcoll() *

      - * Possible values for a comparison result + * Possible values for a comparison result * @stable ICU 2.0 */ typedef enum { @@ -85,8 +85,8 @@ typedef enum { /** Enum containing attribute values for controlling collation behavior. * Here are all the allowable values. Not every attribute can take every value. The only - * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined - * value for that locale + * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined + * value for that locale * @stable ICU 2.0 */ typedef enum { @@ -108,21 +108,21 @@ typedef enum { UCOL_IDENTICAL=15, UCOL_STRENGTH_LIMIT, - /** Turn the feature off - works for UCOL_FRENCH_COLLATION, + /** Turn the feature off - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE & UCOL_DECOMPOSITION_MODE*/ UCOL_OFF = 16, - /** Turn the feature on - works for UCOL_FRENCH_COLLATION, + /** Turn the feature on - works for UCOL_FRENCH_COLLATION, UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE & UCOL_DECOMPOSITION_MODE*/ UCOL_ON = 17, - + /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be shifted */ UCOL_SHIFTED = 20, /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be non ignorable */ UCOL_NON_IGNORABLE = 21, - /** Valid for UCOL_CASE_FIRST - + /** Valid for UCOL_CASE_FIRST - lower case sorts before upper case */ UCOL_LOWER_FIRST = 24, /** upper case sorts before lower case */ @@ -151,55 +151,55 @@ typedef enum { * A special reordering code that is used to specify the default * reordering codes for a locale. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_DEFAULT = -1, /** * A special reordering code that is used to specify no reordering codes. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_NONE = USCRIPT_UNKNOWN, /** * A special reordering code that is used to specify all other codes used for * reordering except for the codes lised as UColReorderCode values and those * listed explicitly in a reordering. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_OTHERS = USCRIPT_UNKNOWN, /** * Characters with the space property. * This is equivalent to the rule value "space". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_SPACE = 0x1000, /** * The first entry in the enumeration of reordering groups. This is intended for use in * range checking and enumeration of the reorder codes. * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_FIRST = UCOL_REORDER_CODE_SPACE, /** * Characters with the punctuation property. * This is equivalent to the rule value "punct". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_PUNCTUATION = 0x1001, /** * Characters with the symbol property. * This is equivalent to the rule value "symbol". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_SYMBOL = 0x1002, /** * Characters with the currency property. * This is equivalent to the rule value "currency". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_CURRENCY = 0x1003, /** * Characters with the digit property. * This is equivalent to the rule value "digit". * @stable ICU 4.8 - */ + */ UCOL_REORDER_CODE_DIGIT = 0x1004, #ifndef U_HIDE_DEPRECATED_API /** @@ -215,7 +215,7 @@ typedef enum { * level to UCOL_PRIMARY to ignore secondary and tertiary differences. * Use this to set the strength of a Collator object. * Example of primary difference, "abc" < "abd" - * + * * Diacritical differences on the same base letter represent a secondary * difference. Set comparison level to UCOL_SECONDARY to ignore tertiary * differences. Use this to set the strength of a Collator object. @@ -231,7 +231,7 @@ typedef enum { * unicode spellings. UCOL_IDENTICAL. * For example, "ä" == "ä". * - * UCollationStrength is also used to determine the strength of sort keys + * UCollationStrength is also used to determine the strength of sort keys * generated from UCollator objects * These values can be now found in the UColAttributeValue enum. * @stable ICU 2.0 @@ -239,7 +239,7 @@ typedef enum { typedef UColAttributeValue UCollationStrength; /** Attributes that collation service understands. All the attributes can take UCOL_DEFAULT - * value, as well as the values specific to each one. + * value, as well as the values specific to each one. * @stable ICU 2.0 */ typedef enum { @@ -249,32 +249,32 @@ typedef enum { * weights in the order they appear. * @stable ICU 2.0 */ - UCOL_FRENCH_COLLATION, + UCOL_FRENCH_COLLATION, /** Attribute for handling variable elements. * Acceptable values are UCOL_NON_IGNORABLE (default) - * which treats all the codepoints with non-ignorable + * which treats all the codepoints with non-ignorable * primary weights in the same way, - * and UCOL_SHIFTED which causes codepoints with primary + * and UCOL_SHIFTED which causes codepoints with primary * weights that are equal or below the variable top value - * to be ignored on primary level and moved to the quaternary + * to be ignored on primary level and moved to the quaternary * level. * @stable ICU 2.0 */ - UCOL_ALTERNATE_HANDLING, + UCOL_ALTERNATE_HANDLING, /** Controls the ordering of upper and lower case letters. * Acceptable values are UCOL_OFF (default), which orders * upper and lower case letters in accordance to their tertiary - * weights, UCOL_UPPER_FIRST which forces upper case letters to - * sort before lower case letters, and UCOL_LOWER_FIRST which does + * weights, UCOL_UPPER_FIRST which forces upper case letters to + * sort before lower case letters, and UCOL_LOWER_FIRST which does * the opposite. * @stable ICU 2.0 */ - UCOL_CASE_FIRST, + UCOL_CASE_FIRST, /** Controls whether an extra case level (positioned before the third - * level) is generated or not. Acceptable values are UCOL_OFF (default), + * level) is generated or not. Acceptable values are UCOL_OFF (default), * when case level is not generated, and UCOL_ON which causes the case * level to be generated. Contents of the case level are affected by - * the value of UCOL_CASE_FIRST attribute. A simple way to ignore + * the value of UCOL_CASE_FIRST attribute. A simple way to ignore * accent differences in a string is to set the strength to UCOL_PRIMARY * and enable case level. * @stable ICU 2.0 @@ -282,14 +282,14 @@ typedef enum { UCOL_CASE_LEVEL, /** Controls whether the normalization check and necessary normalizations * are performed. When set to UCOL_OFF (default) no normalization check - * is performed. The correctness of the result is guaranteed only if the + * is performed. The correctness of the result is guaranteed only if the * input data is in so-called FCD form (see users manual for more info). * When set to UCOL_ON, an incremental check is performed to see whether * the input data is in the FCD form. If the data is not in the FCD form, * incremental NFD normalization is performed. * @stable ICU 2.0 */ - UCOL_NORMALIZATION_MODE, + UCOL_NORMALIZATION_MODE, /** An alias for UCOL_NORMALIZATION_MODE attribute. * @stable ICU 2.0 */ @@ -298,7 +298,7 @@ typedef enum { * UCOL_TERTIARY, UCOL_QUATERNARY or UCOL_IDENTICAL. The usual strength * for most locales (except Japanese) is tertiary. * - * Quaternary strength + * Quaternary strength * is useful when combined with shifted setting for alternate handling * attribute and for JIS X 4061 collation, when it is used to distinguish * between Katakana and Hiragana. @@ -306,13 +306,13 @@ typedef enum { * is affected only by the number of non-ignorable code points in * the string. * - * Identical strength is rarely useful, as it amounts + * Identical strength is rarely useful, as it amounts * to codepoints of the NFD form of the string. * @stable ICU 2.0 */ - UCOL_STRENGTH, + UCOL_STRENGTH, #ifndef U_HIDE_DEPRECATED_API - /** When turned on, this attribute positions Hiragana before all + /** When turned on, this attribute positions Hiragana before all * non-ignorables on quaternary level This is a sneaky way to produce JIS * sort order. * @@ -343,7 +343,7 @@ typedef enum { * * @stable ICU 2.8 */ - UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, + UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API, * it is needed for layout of RuleBasedCollator object. */ @@ -356,7 +356,7 @@ typedef enum { #endif // U_FORCE_HIDE_DEPRECATED_API } UColAttribute; -/** Options for retrieving the rule string +/** Options for retrieving the rule string * @stable ICU 2.0 */ typedef enum { @@ -365,7 +365,7 @@ typedef enum { * Same as calling the version of getRules() without UColRuleOption. * @stable ICU 2.0 */ - UCOL_TAILORING_ONLY, + UCOL_TAILORING_ONLY, /** * Retrieves the "UCA rules" concatenated with the tailoring rules. * The "UCA rules" are an approximation of the root collator's sort order. @@ -373,7 +373,7 @@ typedef enum { * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales * @stable ICU 2.0 */ - UCOL_FULL_RULES + UCOL_FULL_RULES } UColRuleOption ; /** @@ -386,11 +386,11 @@ typedef enum { * or in language tag syntax ("el-u-kf-upper"). * See User Guide: Collation API. * - * The UCollator pointer is used in all the calls to the Collation + * The UCollator pointer is used in all the calls to the Collation * service. After finished, collator must be disposed of by calling * {@link #ucol_close }. - * @param loc The locale containing the required collation rules. - * Special values for locales can be passed in - + * @param loc The locale containing the required collation rules. + * Special values for locales can be passed in - * if NULL is passed for the locale, the default locale * collation rules will be used. If empty string ("") or * "root" are passed, the root collator will be returned. @@ -401,7 +401,7 @@ typedef enum { * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_open(const char *loc, UErrorCode *status); /** @@ -418,7 +418,7 @@ ucol_open(const char *loc, UErrorCode *status); * UCOL_DEFAULT (set the mode according to the rules) * @param strength The default collation strength; one of UCOL_PRIMARY, UCOL_SECONDARY, * UCOL_TERTIARY, UCOL_IDENTICAL,UCOL_DEFAULT_STRENGTH - can be also set in the rules. - * @param parseError A pointer to UParseError to recieve information about errors + * @param parseError A pointer to UParseError to receive information about errors * occurred during parsing. This argument can currently be set * to NULL, but at users own risk. Please provide a real structure. * @param status A pointer to a UErrorCode to receive any errors @@ -429,7 +429,7 @@ ucol_open(const char *loc, UErrorCode *status); * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_openRules( const UChar *rules, int32_t rulesLength, UColAttributeValue normalizationMode, @@ -438,31 +438,31 @@ ucol_openRules( const UChar *rules, UErrorCode *status); #ifndef U_HIDE_DEPRECATED_API -/** +/** * Open a collator defined by a short form string. * The structure and the syntax of the string is defined in the "Naming collators" - * section of the users guide: + * section of the users guide: * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme - * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final + * Attributes are overridden by the subsequent attributes. So, for "S2_S3", final * strength will be 3. 3066bis locale overrides individual locale parts. - * The call to this function is equivalent to a call to ucol_open, followed by a + * The call to this function is equivalent to a call to ucol_open, followed by a * series of calls to ucol_setAttribute and ucol_setVariableTop. - * @param definition A short string containing a locale and a set of attributes. + * @param definition A short string containing a locale and a set of attributes. * Attributes not explicitly mentioned are left at the default * state for a locale. * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param forceDefaults if false, the settings that are the same as the collator + * @param forceDefaults if false, the settings that are the same as the collator * default settings will not be applied (for example, setting - * French secondary on a French collator would not be executed). - * If true, all the settings will be applied regardless of the + * French secondary on a French collator would not be executed). + * If true, all the settings will be applied regardless of the * collator default value. If the definition * strings are to be cached, should be set to false. - * @param status Error code. Apart from regular error conditions connected to + * @param status Error code. Apart from regular error conditions connected to * instantiating collators (like out of memory or similar), this * API will return an error if an invalid attribute or attribute/value * combination is specified. - * @return A pointer to a UCollator or 0 if an error occured (including an + * @return A pointer to a UCollator or 0 if an error occurred (including an * invalid attribute). * @see ucol_open * @see ucol_setAttribute @@ -482,11 +482,11 @@ ucol_openFromShortString( const char *definition, /** * Get a set containing the contractions defined by the collator. The set includes * both the root collator's contractions and the contractions defined by the collator. This set - * will contain only strings. If a tailoring explicitly suppresses contractions from + * will contain only strings. If a tailoring explicitly suppresses contractions from * the root collator (like Russian), removed contractions will not be in the resulting set. - * @param coll collator + * @param coll collator * @param conts the set to hold the result. It gets emptied before - * contractions are added. + * contractions are added. * @param status to hold the error code * @return the size of the contraction set * @@ -514,7 +514,7 @@ ucol_getContractionsAndExpansions( const UCollator *coll, USet *contractions, USet *expansions, UBool addPrefixes, UErrorCode *status); -/** +/** * Close a UCollator. * Once closed, a UCollator should not be used. Every open collator should * be closed. Otherwise, a memory leak will result. @@ -524,7 +524,7 @@ ucol_getContractionsAndExpansions( const UCollator *coll, * @see ucol_safeClone * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_close(UCollator *coll); #if U_SHOW_CPLUSPLUS_API @@ -561,31 +561,31 @@ U_NAMESPACE_END * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UCollationResult U_EXPORT2 +U_CAPI UCollationResult U_EXPORT2 ucol_strcoll( const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); -/** -* Compare two strings in UTF-8. -* The strings will be compared using the options already specified. -* Note: When input string contains malformed a UTF-8 byte sequence, +/** +* Compare two strings in UTF-8. +* The strings will be compared using the options already specified. +* Note: When input string contains malformed a UTF-8 byte sequence, * this function treats these bytes as REPLACEMENT CHARACTER (U+FFFD). -* @param coll The UCollator containing the comparison rules. -* @param source The source UTF-8 string. -* @param sourceLength The length of source, or -1 if null-terminated. -* @param target The target UTF-8 string. -* @param targetLength The length of target, or -1 if null-terminated. -* @param status A pointer to a UErrorCode to receive any errors -* @return The result of comparing the strings; one of UCOL_EQUAL, -* UCOL_GREATER, UCOL_LESS -* @see ucol_greater -* @see ucol_greaterOrEqual -* @see ucol_equal -* @stable ICU 50 -*/ +* @param coll The UCollator containing the comparison rules. +* @param source The source UTF-8 string. +* @param sourceLength The length of source, or -1 if null-terminated. +* @param target The target UTF-8 string. +* @param targetLength The length of target, or -1 if null-terminated. +* @param status A pointer to a UErrorCode to receive any errors +* @return The result of comparing the strings; one of UCOL_EQUAL, +* UCOL_GREATER, UCOL_LESS +* @see ucol_greater +* @see ucol_greaterOrEqual +* @see ucol_equal +* @stable ICU 50 +*/ U_CAPI UCollationResult U_EXPORT2 ucol_strcollUTF8( const UCollator *coll, @@ -609,7 +609,7 @@ ucol_strcollUTF8( * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_greater(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); @@ -628,7 +628,7 @@ ucol_greater(const UCollator *coll, * @see ucol_equal * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_greaterOrEqual(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); @@ -647,13 +647,13 @@ ucol_greaterOrEqual(const UCollator *coll, * @see ucol_greaterOrEqual * @stable ICU 2.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 ucol_equal(const UCollator *coll, const UChar *source, int32_t sourceLength, const UChar *target, int32_t targetLength); /** - * Compare two UTF-8 encoded trings. + * Compare two UTF-8 encoded strings. * The strings will be compared using the options already specified. * @param coll The UCollator containing the comparison rules. * @param sIter The source string iterator. @@ -664,7 +664,7 @@ ucol_equal(const UCollator *coll, * @see ucol_strcoll * @stable ICU 2.6 */ -U_CAPI UCollationResult U_EXPORT2 +U_CAPI UCollationResult U_EXPORT2 ucol_strcollIter( const UCollator *coll, UCharIterator *sIter, UCharIterator *tIter, @@ -679,19 +679,19 @@ ucol_strcollIter( const UCollator *coll, * @see ucol_setStrength * @stable ICU 2.0 */ -U_CAPI UCollationStrength U_EXPORT2 +U_CAPI UCollationStrength U_EXPORT2 ucol_getStrength(const UCollator *coll); /** * Set the collation strength used in a UCollator. * The strength influences how strings are compared. * @param coll The UCollator to set. - * @param strength The desired collation strength; one of UCOL_PRIMARY, + * @param strength The desired collation strength; one of UCOL_PRIMARY, * UCOL_SECONDARY, UCOL_TERTIARY, UCOL_QUATERNARY, UCOL_IDENTICAL, UCOL_DEFAULT * @see ucol_getStrength * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setStrength(UCollator *coll, UCollationStrength strength); @@ -700,9 +700,9 @@ ucol_setStrength(UCollator *coll, * These reordering codes are a combination of UScript codes and UColReorderCode entries. * @param coll The UCollator to query. * @param dest The array to fill with the script ordering. - * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function + * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function * will only return the length of the result without writing any codes (pre-flighting). - * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a + * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a * failure before the function call. * @return The number of reordering codes written to the dest array. * @see ucol_setReorderCodes @@ -711,41 +711,41 @@ ucol_setStrength(UCollator *coll, * @see UColReorderCode * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getReorderCodes(const UCollator* coll, int32_t* dest, int32_t destCapacity, UErrorCode *pErrorCode); -/** +/** * Sets the reordering codes for this collator. * Collation reordering allows scripts and some other groups of characters * to be moved relative to each other. This reordering is done on top of - * the DUCET/CLDR standard collation order. Reordering can specify groups to be placed + * the DUCET/CLDR standard collation order. Reordering can specify groups to be placed * at the start and/or the end of the collation order. These groups are specified using * UScript codes and UColReorderCode entries. * - *

      By default, reordering codes specified for the start of the order are placed in the + *

      By default, reordering codes specified for the start of the order are placed in the * order given after several special non-script blocks. These special groups of characters * are space, punctuation, symbol, currency, and digit. These special groups are represented with - * UColReorderCode entries. Script groups can be intermingled with + * UColReorderCode entries. Script groups can be intermingled with * these special non-script groups if those special groups are explicitly specified in the reordering. * - *

      The special code OTHERS stands for any script that is not explicitly + *

      The special code OTHERS stands for any script that is not explicitly * mentioned in the list of reordering codes given. Anything that is after OTHERS * will go at the very end of the reordering in the order given. * *

      The special reorder code DEFAULT will reset the reordering for this collator * to the default for this collator. The default reordering may be the DUCET/CLDR order or may be a reordering that - * was specified when this collator was created from resource data or from rules. The + * was specified when this collator was created from resource data or from rules. The * DEFAULT code must be the sole code supplied when it is used. * If not, then U_ILLEGAL_ARGUMENT_ERROR will be set. * *

      The special reorder code NONE will remove any reordering for this collator. - * The result of setting no reordering will be to have the DUCET/CLDR ordering used. The + * The result of setting no reordering will be to have the DUCET/CLDR ordering used. The * NONE code must be the sole code supplied when it is used. * * @param coll The UCollator to set. - * @param reorderCodes An array of script codes in the new order. This can be NULL if the + * @param reorderCodes An array of script codes in the new order. This can be NULL if the * length is also set to 0. An empty array will clear any reordering codes on the collator. * @param reorderCodesLength The length of reorderCodes. * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate a @@ -755,8 +755,8 @@ ucol_getReorderCodes(const UCollator* coll, * @see UScriptCode * @see UColReorderCode * @stable ICU 4.8 - */ -U_CAPI void U_EXPORT2 + */ +U_CAPI void U_EXPORT2 ucol_setReorderCodes(UCollator* coll, const int32_t* reorderCodes, int32_t reorderCodesLength, @@ -772,7 +772,7 @@ ucol_setReorderCodes(UCollator* coll, * @param dest The array to fill with the script ordering. * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function * will only return the length of the result without writing any codes (pre-flighting). - * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate + * @param pErrorCode Must be a valid pointer to an error code value, which must not indicate * a failure before the function call. * @return The number of reordering codes written to the dest array. * @see ucol_setReorderCodes @@ -781,7 +781,7 @@ ucol_setReorderCodes(UCollator* coll, * @see UColReorderCode * @stable ICU 4.8 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getEquivalentReorderCodes(int32_t reorderCode, int32_t* dest, int32_t destCapacity, @@ -799,7 +799,7 @@ ucol_getEquivalentReorderCodes(int32_t reorderCode, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getDisplayName( const char *objLoc, const char *dispLoc, UChar *result, @@ -815,7 +815,7 @@ ucol_getDisplayName( const char *objLoc, * @see ucol_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 ucol_getAvailable(int32_t localeIndex); /** @@ -826,7 +826,7 @@ ucol_getAvailable(int32_t localeIndex); * @see ucol_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_countAvailable(void); #if !UCONFIG_NO_SERVICE @@ -930,26 +930,26 @@ ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity, * Get the collation tailoring rules from a UCollator. * The rules will follow the rule syntax. * @param coll The UCollator to query. - * @param length + * @param length * @return The collation tailoring rules. * @stable ICU 2.0 */ -U_CAPI const UChar* U_EXPORT2 -ucol_getRules( const UCollator *coll, +U_CAPI const UChar* U_EXPORT2 +ucol_getRules( const UCollator *coll, int32_t *length); #ifndef U_HIDE_DEPRECATED_API /** Get the short definition string for a collator. This API harvests the collator's - * locale and the attribute set and produces a string that can be used for opening + * locale and the attribute set and produces a string that can be used for opening * a collator with the same attributes using the ucol_openFromShortString API. * This string will be normalized. * The structure and the syntax of the string is defined in the "Naming collators" - * section of the users guide: + * section of the users guide: * https://unicode-org.github.io/icu/userguide/collation/concepts#collator-naming-scheme * This API supports preflighting. * @param coll a collator * @param locale a locale that will appear as a collators locale in the resulting - * short string definition. If NULL, the locale will be harvested + * short string definition. If NULL, the locale will be harvested * from the collator. * @param buffer space to hold the resulting string * @param capacity capacity of the buffer @@ -968,21 +968,21 @@ ucol_getShortDefinitionString(const UCollator *coll, /** Verifies and normalizes short definition string. * Normalized short definition string has all the option sorted by the argument name, - * so that equivalent definition strings are the same. + * so that equivalent definition strings are the same. * This API supports preflighting. * @param source definition string * @param destination space to hold the resulting string * @param capacity capacity of the buffer * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param status Error code. This API will return an error if an invalid attribute - * or attribute/value combination is specified. All the preflighting + * @param status Error code. This API will return an error if an invalid attribute + * or attribute/value combination is specified. All the preflighting * errors are also featured * @return length of the resulting normalized string. * * @see ucol_openFromShortString * @see ucol_getShortDefinitionString - * + * * @deprecated ICU 54 */ @@ -999,7 +999,7 @@ ucol_normalizeShortDefinitionString(const char *source, * Get a sort key for a string from a UCollator. * Sort keys may be compared using strcmp. * - * Note that sort keys are often less efficient than simply doing comparison. + * Note that sort keys are often less efficient than simply doing comparison. * For more details, see the ICU User Guide. * * Like ICU functions that write to an output buffer, the buffer contents @@ -1017,7 +1017,7 @@ ucol_normalizeShortDefinitionString(const char *source, * @see ucol_keyHashCode * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getSortKey(const UCollator *coll, const UChar *source, int32_t sourceLength, @@ -1034,29 +1034,29 @@ ucol_getSortKey(const UCollator *coll, * The generated sort key may or may not be compatible with * sort keys generated using ucol_getSortKey(). * @param coll The UCollator containing the collation rules. - * @param iter UCharIterator containing the string we need + * @param iter UCharIterator containing the string we need * the sort key to be calculated for. * @param state Opaque state of sortkey iteration. * @param dest Buffer to hold the resulting sortkey part * @param count number of sort key bytes required. * @param status error code indicator. * @return the actual number of bytes of a sortkey. It can be - * smaller than count if we have reached the end of + * smaller than count if we have reached the end of * the sort key. * @stable ICU 2.6 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_nextSortKeyPart(const UCollator *coll, UCharIterator *iter, uint32_t state[2], uint8_t *dest, int32_t count, UErrorCode *status); -/** enum that is taken by ucol_getBound API - * See below for explanation - * do not change the values assigned to the - * members of this enum. Underlying code - * depends on them having these numbers +/** enum that is taken by ucol_getBound API + * See below for explanation + * do not change the values assigned to the + * members of this enum. Underlying code + * depends on them having these numbers * @stable ICU 2.0 */ typedef enum { @@ -1077,11 +1077,11 @@ typedef enum { /** * Produce a bound for a given sortkey and a number of levels. - * Return value is always the number of bytes needed, regardless of + * Return value is always the number of bytes needed, regardless of * whether the result buffer was big enough or even valid.
      * Resulting bounds can be used to produce a range of strings that are * between upper and lower bounds. For example, if bounds are produced - * for a sortkey of string "smith", strings between upper and lower + * for a sortkey of string "smith", strings between upper and lower * bounds with one level would include "Smith", "SMITH", "sMiTh".
      * There are two upper bounds that can be produced. If UCOL_BOUND_UPPER * is produced, strings matched would be as above. However, if bound @@ -1091,28 +1091,28 @@ typedef enum { * TestBounds. * Sort keys may be compared using strcmp. * @param source The source sortkey. - * @param sourceLength The length of source, or -1 if null-terminated. - * (If an unmodified sortkey is passed, it is always null + * @param sourceLength The length of source, or -1 if null-terminated. + * (If an unmodified sortkey is passed, it is always null * terminated). - * @param boundType Type of bound required. It can be UCOL_BOUND_LOWER, which - * produces a lower inclusive bound, UCOL_BOUND_UPPER, that - * produces upper bound that matches strings of the same length - * or UCOL_BOUND_UPPER_LONG that matches strings that have the + * @param boundType Type of bound required. It can be UCOL_BOUND_LOWER, which + * produces a lower inclusive bound, UCOL_BOUND_UPPER, that + * produces upper bound that matches strings of the same length + * or UCOL_BOUND_UPPER_LONG that matches strings that have the * same starting substring as the source string. - * @param noOfLevels Number of levels required in the resulting bound (for most - * uses, the recommended value is 1). See users guide for + * @param noOfLevels Number of levels required in the resulting bound (for most + * uses, the recommended value is 1). See users guide for * explanation on number of levels a sortkey can have. * @param result A pointer to a buffer to receive the resulting sortkey. * @param resultLength The maximum size of result. - * @param status Used for returning error code if something went wrong. If the + * @param status Used for returning error code if something went wrong. If the * number of levels requested is higher than the number of levels - * in the source key, a warning (U_SORT_KEY_TOO_SHORT_WARNING) is + * in the source key, a warning (U_SORT_KEY_TOO_SHORT_WARNING) is * issued. - * @return The size needed to fully store the bound. + * @return The size needed to fully store the bound. * @see ucol_keyHashCode * @stable ICU 2.1 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getBound(const uint8_t *source, int32_t sourceLength, UColBoundMode boundType, @@ -1120,7 +1120,7 @@ ucol_getBound(const uint8_t *source, uint8_t *result, int32_t resultLength, UErrorCode *status); - + /** * Gets the version information for a Collator. Version is currently * an opaque 32-bit number which depends, among other things, on major @@ -1168,7 +1168,7 @@ ucol_getUCAVersion(const UCollator* coll, UVersionInfo info); * Example (uncompressed): *

      191B1D 01 050505 01 910505 00
        * 1F2123 01 050505 01 910505 00
      - * will be merged as + * will be merged as *
      191B1D 02 1F2123 01 050505 02 050505 01 910505 02 910505 00
      * * If the destination buffer is not big enough, then its contents are undefined. @@ -1189,7 +1189,7 @@ ucol_getUCAVersion(const UCollator* coll, UVersionInfo info); * in which cases the contents of dest is undefined * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, const uint8_t *src2, int32_t src2Length, uint8_t *dest, int32_t destCapacity); @@ -1197,7 +1197,7 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, /** * Universal attribute setter * @param coll collator which attributes are to be changed - * @param attr attribute type + * @param attr attribute type * @param value attribute value * @param status to indicate whether the operation went on smoothly or there were errors * @see UColAttribute @@ -1205,7 +1205,7 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length, * @see ucol_getAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status); /** @@ -1219,7 +1219,7 @@ ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, * @see ucol_setAttribute * @stable ICU 2.0 */ -U_CAPI UColAttributeValue U_EXPORT2 +U_CAPI UColAttributeValue U_EXPORT2 ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status); /** @@ -1272,16 +1272,16 @@ ucol_getMaxVariable(const UCollator *coll); * @see ucol_restoreVariableTop * @deprecated ICU 53 Call ucol_setMaxVariable() instead. */ -U_DEPRECATED uint32_t U_EXPORT2 -ucol_setVariableTop(UCollator *coll, - const UChar *varTop, int32_t len, +U_DEPRECATED uint32_t U_EXPORT2 +ucol_setVariableTop(UCollator *coll, + const UChar *varTop, int32_t len, UErrorCode *status); #endif /* U_HIDE_DEPRECATED_API */ -/** - * Gets the variable top value of a Collator. +/** + * Gets the variable top value of a Collator. * @param coll collator which variable top needs to be retrieved - * @param status error code (not changed by function). If error code is set, + * @param status error code (not changed by function). If error code is set, * the return value is undefined. * @return the variable top primary weight * @see ucol_getMaxVariable @@ -1306,7 +1306,7 @@ U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode * @see ucol_setVariableTop * @deprecated ICU 53 Call ucol_setMaxVariable() instead. */ -U_DEPRECATED void U_EXPORT2 +U_DEPRECATED void U_EXPORT2 ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status); #endif /* U_HIDE_DEPRECATED_API */ @@ -1314,15 +1314,15 @@ ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *stat * Thread safe cloning operation. The result is a clone of a given collator. * @param coll collator to be cloned * @param stackBuffer Deprecated functionality as of ICU 52, use NULL.
      - * user allocated space for the new clone. - * If NULL new memory will be allocated. + * user allocated space for the new clone. + * If NULL new memory will be allocated. * If buffer is not large enough, new memory will be allocated. * Clients can use the U_COL_SAFECLONE_BUFFERSIZE. * @param pBufferSize Deprecated functionality as of ICU 52, use NULL or 1.
      - * pointer to size of allocated space. - * If *pBufferSize == 0, a sufficient size for use in cloning will + * pointer to size of allocated space. + * If *pBufferSize == 0, a sufficient size for use in cloning will * be returned ('pre-flighting') - * If *pBufferSize is not enough for a stack-based safe clone, + * If *pBufferSize is not enough for a stack-based safe clone, * new memory will be allocated. * @param status to indicate whether the operation went on smoothly or there were errors * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any @@ -1333,7 +1333,7 @@ ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *stat * @see ucol_close * @stable ICU 2.0 */ -U_CAPI UCollator* U_EXPORT2 +U_CAPI UCollator* U_EXPORT2 ucol_safeClone(const UCollator *coll, void *stackBuffer, int32_t *pBufferSize, @@ -1349,21 +1349,21 @@ ucol_safeClone(const UCollator *coll, #endif /* U_HIDE_DEPRECATED_API */ /** - * Returns current rules. Delta defines whether full rules are returned or just the tailoring. - * Returns number of UChars needed to store rules. If buffer is NULL or bufferLen is not enough + * Returns current rules. Delta defines whether full rules are returned or just the tailoring. + * Returns number of UChars needed to store rules. If buffer is NULL or bufferLen is not enough * to store rules, will store up to available space. * * ucol_getRules() should normally be used instead. * See https://unicode-org.github.io/icu/userguide/collation/customization#building-on-existing-locales * @param coll collator to get the rules from - * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. + * @param delta one of UCOL_TAILORING_ONLY, UCOL_FULL_RULES. * @param buffer buffer to store the result in. If NULL, you'll get no rules. * @param bufferLen length of buffer to store rules in. If less than needed you'll get only the part that fits in. * @return current rules * @stable ICU 2.0 * @see UCOL_FULL_RULES */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen); #ifndef U_HIDE_DEPRECATED_API @@ -1376,7 +1376,7 @@ ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int3 * locale. For description see the definition of * ULocDataLocaleType in uloc.h * @param status error code of the operation - * @return real locale name from which the collation data comes. + * @return real locale name from which the collation data comes. * If the collator was instantiated from rules, returns * NULL. * @deprecated ICU 2.8 Use ucol_getLocaleByType instead @@ -1394,7 +1394,7 @@ ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *statu * locale. For description see the definition of * ULocDataLocaleType in uloc.h * @param status error code of the operation - * @return real locale name from which the collation data comes. + * @return real locale name from which the collation data comes. * If the collator was instantiated from rules, returns * NULL. * @stable ICU 2.8 @@ -1403,7 +1403,7 @@ U_CAPI const char * U_EXPORT2 ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status); /** - * Get a Unicode set that contains all the characters and sequences tailored in + * Get a Unicode set that contains all the characters and sequences tailored in * this collator. The result must be disposed of by using uset_close. * @param coll The UCollator for which we want to get tailored chars * @param status error code of the operation @@ -1434,18 +1434,18 @@ ucol_getUnsafeSet( const UCollator *coll, /** Touches all resources needed for instantiating a collator from a short string definition, * thus filling up the cache. - * @param definition A short string containing a locale and a set of attributes. + * @param definition A short string containing a locale and a set of attributes. * Attributes not explicitly mentioned are left at the default * state for a locale. * @param parseError if not NULL, structure that will get filled with error's pre * and post context in case of error. - * @param forceDefaults if false, the settings that are the same as the collator + * @param forceDefaults if false, the settings that are the same as the collator * default settings will not be applied (for example, setting - * French secondary on a French collator would not be executed). - * If true, all the settings will be applied regardless of the + * French secondary on a French collator would not be executed). + * If true, all the settings will be applied regardless of the * collator default value. If the definition * strings are to be cached, should be set to false. - * @param status Error code. Apart from regular error conditions connected to + * @param status Error code. Apart from regular error conditions connected to * instantiating collators (like out of memory or similar), this * API will return an error if an invalid attribute or attribute/value * combination is specified. @@ -1459,7 +1459,7 @@ ucol_prepareShortStringOpen( const char *definition, UErrorCode *status); #endif /* U_HIDE_INTERNAL_API */ -/** Creates a binary image of a collator. This binary image can be stored and +/** Creates a binary image of a collator. This binary image can be stored and * later used to instantiate a collator using ucol_openBinary. * This API supports preflighting. * @param coll Collator @@ -1476,8 +1476,8 @@ ucol_cloneBinary(const UCollator *coll, UErrorCode *status); /** Opens a collator from a collator binary image created using - * ucol_cloneBinary. Binary image used in instantiation of the - * collator remains owned by the user and should stay around for + * ucol_cloneBinary. Binary image used in instantiation of the + * collator remains owned by the user and should stay around for * the lifetime of the collator. The API also takes a base collator * which must be the root collator. * @param bin binary image owned by the user and required through the @@ -1493,8 +1493,8 @@ ucol_cloneBinary(const UCollator *coll, * @stable ICU 3.2 */ U_CAPI UCollator* U_EXPORT2 -ucol_openBinary(const uint8_t *bin, int32_t length, - const UCollator *base, +ucol_openBinary(const uint8_t *bin, int32_t length, + const UCollator *base, UErrorCode *status); diff --git a/deps/icu-small/source/i18n/unicode/ucoleitr.h b/deps/icu-small/source/i18n/unicode/ucoleitr.h index e8bcd368d4f0a4..25efcf2a08e77e 100644 --- a/deps/icu-small/source/i18n/unicode/ucoleitr.h +++ b/deps/icu-small/source/i18n/unicode/ucoleitr.h @@ -11,7 +11,7 @@ * Modification History: * * Date Name Description -* 02/15/2001 synwee Modified all methods to process its own function +* 02/15/2001 synwee Modified all methods to process its own function * instead of calling the equivalent c++ api (coleitr.h) *******************************************************************************/ @@ -22,8 +22,8 @@ #if !UCONFIG_NO_COLLATION -/** - * This indicates an error has occurred during processing or if no more CEs is +/** + * This indicates an error has occurred during processing or if no more CEs is * to be returned. * @stable ICU 2.0 */ @@ -31,7 +31,7 @@ #include "unicode/ucol.h" -/** +/** * The UCollationElements struct. * For usage in C programs. * @stable ICU 2.0 @@ -42,10 +42,10 @@ typedef struct UCollationElements UCollationElements; * \file * \brief C API: UCollationElements * - * The UCollationElements API is used as an iterator to walk through each + * The UCollationElements API is used as an iterator to walk through each * character of an international string. Use the iterator to return the - * ordering priority of the positioned character. The ordering priority of a - * character, which we refer to as a key, defines how a character is collated + * ordering priority of the positioned character. The ordering priority of a + * character, which we refer to as a key, defines how a character is collated * in the given collation object. * For example, consider the following in Slovak and in traditional Spanish collation: *
      @@ -82,19 +82,19 @@ typedef struct UCollationElements UCollationElements;
        * ucol_next() returns the collation order of the next.
        * ucol_prev() returns the collation order of the previous character.
        * The Collation Element Iterator moves only in one direction between calls to
      - * ucol_reset. That is, ucol_next() and ucol_prev can not be inter-used.
      - * Whenever ucol_prev is to be called after ucol_next() or vice versa,
      - * ucol_reset has to be called first to reset the status, shifting pointers to
      - * either the end or the start of the string. Hence at the next call of
      - * ucol_prev or ucol_next, the first or last collation order will be returned.
      - * If a change of direction is done without a ucol_reset, the result is
      + * ucol_reset. That is, ucol_next() and ucol_prev can not be inter-used. 
      + * Whenever ucol_prev is to be called after ucol_next() or vice versa, 
      + * ucol_reset has to be called first to reset the status, shifting pointers to 
      + * either the end or the start of the string. Hence at the next call of 
      + * ucol_prev or ucol_next, the first or last collation order will be returned. 
      + * If a change of direction is done without a ucol_reset, the result is 
        * undefined.
      - * The result of a forward iterate (ucol_next) and reversed result of the
      - * backward iterate (ucol_prev) on the same string are equivalent, if
      + * The result of a forward iterate (ucol_next) and reversed result of the  
      + * backward iterate (ucol_prev) on the same string are equivalent, if 
        * collation orders with the value 0 are ignored.
      - * Character based on the comparison level of the collator.  A collation order
      - * consists of primary order, secondary order and tertiary order.  The data
      - * type of the collation order is int32_t.
      + * Character based on the comparison level of the collator.  A collation order 
      + * consists of primary order, secondary order and tertiary order.  The data 
      + * type of the collation order is int32_t. 
        *
        * @see UCollator
        */
      @@ -113,7 +113,7 @@ typedef struct UCollationElements UCollationElements;
        * @return a struct containing collation element information
        * @stable ICU 2.0
        */
      -U_CAPI UCollationElements* U_EXPORT2
      +U_CAPI UCollationElements* U_EXPORT2 
       ucol_openElements(const UCollator  *coll,
                         const UChar      *text,
                               int32_t    textLength,
      @@ -126,7 +126,7 @@ ucol_openElements(const UCollator  *coll,
        * @return       the hash code.
        * @stable ICU 2.0
        */
      -U_CAPI int32_t U_EXPORT2
      +U_CAPI int32_t U_EXPORT2 
       ucol_keyHashCode(const uint8_t* key, int32_t length);
       
       /**
      @@ -135,7 +135,7 @@ ucol_keyHashCode(const uint8_t* key, int32_t length);
        * @param elems The UCollationElements to close.
        * @stable ICU 2.0
        */
      -U_CAPI void U_EXPORT2
      +U_CAPI void U_EXPORT2 
       ucol_closeElements(UCollationElements *elems);
       
       /**
      @@ -147,7 +147,7 @@ ucol_closeElements(UCollationElements *elems);
        * @see ucol_previous
        * @stable ICU 2.0
        */
      -U_CAPI void U_EXPORT2
      +U_CAPI void U_EXPORT2 
       ucol_reset(UCollationElements *elems);
       
       /**
      @@ -155,41 +155,41 @@ ucol_reset(UCollationElements *elems);
        * A single character may contain more than one collation element.
        * @param elems The UCollationElements containing the text.
        * @param status A pointer to a UErrorCode to receive any errors.
      - * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER
      + * @return The next collation elements ordering, otherwise returns UCOL_NULLORDER 
        *         if an error has occurred or if the end of string has been reached
        * @stable ICU 2.0
        */
      -U_CAPI int32_t U_EXPORT2
      +U_CAPI int32_t U_EXPORT2 
       ucol_next(UCollationElements *elems, UErrorCode *status);
       
       /**
        * Get the ordering priority of the previous collation element in the text.
        * A single character may contain more than one collation element.
      - * Note that internally a stack is used to store buffered collation elements.
      + * Note that internally a stack is used to store buffered collation elements. 
        * @param elems The UCollationElements containing the text.
      - * @param status A pointer to a UErrorCode to receive any errors. Noteably
      + * @param status A pointer to a UErrorCode to receive any errors. Notably 
        *               a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack
        *               buffer has been exhausted.
      - * @return The previous collation elements ordering, otherwise returns
      - *         UCOL_NULLORDER if an error has occurred or if the start of string has
      + * @return The previous collation elements ordering, otherwise returns 
      + *         UCOL_NULLORDER if an error has occurred or if the start of string has 
        *         been reached.
        * @stable ICU 2.0
        */
      -U_CAPI int32_t U_EXPORT2
      +U_CAPI int32_t U_EXPORT2 
       ucol_previous(UCollationElements *elems, UErrorCode *status);
       
       /**
      - * Get the maximum length of any expansion sequences that end with the
      + * Get the maximum length of any expansion sequences that end with the 
        * specified comparison order.
        * This is useful for .... ?
        * @param elems The UCollationElements containing the text.
        * @param order A collation order returned by previous or next.
      - * @return maximum size of the expansion sequences ending with the collation
      - *         element or 1 if collation element does not occur at the end of any
      + * @return maximum size of the expansion sequences ending with the collation 
      + *         element or 1 if collation element does not occur at the end of any 
        *         expansion sequence
        * @stable ICU 2.0
        */
      -U_CAPI int32_t U_EXPORT2
      +U_CAPI int32_t U_EXPORT2 
       ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
       
       /**
      @@ -209,7 +209,7 @@ ucol_getMaxExpansion(const UCollationElements *elems, int32_t order);
        * @see ucol_getText
        * @stable ICU 2.0
        */
      -U_CAPI void U_EXPORT2
      +U_CAPI void U_EXPORT2 
       ucol_setText(      UCollationElements *elems,
                    const UChar              *text,
                          int32_t            textLength,
      @@ -224,7 +224,7 @@ ucol_setText(      UCollationElements *elems,
        * @see ucol_setOffset
        * @stable ICU 2.0
        */
      -U_CAPI int32_t U_EXPORT2
      +U_CAPI int32_t U_EXPORT2 
       ucol_getOffset(const UCollationElements *elems);
       
       /**
      @@ -239,7 +239,7 @@ ucol_getOffset(const UCollationElements *elems);
        * @see ucol_getOffset
        * @stable ICU 2.0
        */
      -U_CAPI void U_EXPORT2
      +U_CAPI void U_EXPORT2 
       ucol_setOffset(UCollationElements *elems,
                      int32_t             offset,
                      UErrorCode         *status);
      @@ -251,7 +251,7 @@ ucol_setOffset(UCollationElements *elems,
       * @stable ICU 2.6
       */
       U_CAPI int32_t U_EXPORT2
      -ucol_primaryOrder (int32_t order);
      +ucol_primaryOrder (int32_t order); 
       
       /**
       * Get the secondary order of a collation order.
      @@ -260,7 +260,7 @@ ucol_primaryOrder (int32_t order);
       * @stable ICU 2.6
       */
       U_CAPI int32_t U_EXPORT2
      -ucol_secondaryOrder (int32_t order);
      +ucol_secondaryOrder (int32_t order); 
       
       /**
       * Get the tertiary order of a collation order.
      @@ -269,7 +269,7 @@ ucol_secondaryOrder (int32_t order);
       * @stable ICU 2.6
       */
       U_CAPI int32_t U_EXPORT2
      -ucol_tertiaryOrder (int32_t order);
      +ucol_tertiaryOrder (int32_t order); 
       
       #endif /* #if !UCONFIG_NO_COLLATION */
       
      diff --git a/deps/icu-small/source/i18n/unicode/ucsdet.h b/deps/icu-small/source/i18n/unicode/ucsdet.h
      index 50281ad1fb54cb..8c62fde9d2eeed 100644
      --- a/deps/icu-small/source/i18n/unicode/ucsdet.h
      +++ b/deps/icu-small/source/i18n/unicode/ucsdet.h
      @@ -32,7 +32,7 @@
       #endif   // U_SHOW_CPLUSPLUS_API
       
       /**
      - * \file
      + * \file 
        * \brief C API: Charset Detection API
        *
        * This API provides a facility for detecting the
      @@ -53,7 +53,7 @@
        * Compact Encoding Detector, https://github.com/google/compact_enc_det.
        * It often gives more accurate results, especially with short input samples.
        */
      -
      + 
       
       struct UCharsetDetector;
       /**
      @@ -155,8 +155,8 @@ ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t
       
       /**
        * Return the charset that best matches the supplied input data.
      - *
      - * Note though, that because the detection
      + * 
      + * Note though, that because the detection 
        * only looks at the start of the input data,
        * there is a possibility that the returned charset will fail to handle
        * the full set of input data.
      @@ -180,7 +180,7 @@ ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t
        */
       U_CAPI const UCharsetMatch * U_EXPORT2
       ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
      -
      +    
       
       /**
        *  Find all charset matches that appear to be consistent with the input,
      @@ -193,14 +193,14 @@ ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status);
        *  

      * The returned UCharsetMatch objects are owned by the UCharsetDetector. * They will remain valid until the detector is closed or modified - * + * *

      - * Return an error if + * Return an error if *

        *
      • no charsets appear to match the input data.
      • *
      • no input text has been provided
      • *
      - * + * * @param ucsd the charset detector to be used. * @param matchesFound pointer to a variable that will be set to the * number of charsets identified that are consistent with @@ -300,7 +300,7 @@ ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status); * NUL character will be appended to the buffer if space is available. * * The number of UChars in the output string, not including the terminating - * NUL, is returned. + * NUL, is returned. * * If the supplied buffer is smaller than required to hold the output, * the contents of the buffer are undefined. The full output string length @@ -323,7 +323,7 @@ ucsdet_getUChars(const UCharsetMatch *ucsm, /** - * Get an iterator over the set of all detectable charsets - + * Get an iterator over the set of all detectable charsets - * over the charsets that are known to the charset detection * service. * @@ -418,3 +418,5 @@ ucsdet_setDetectableCharset(UCharsetDetector *ucsd, const char *encoding, UBool #endif #endif /* __UCSDET_H */ + + diff --git a/deps/icu-small/source/i18n/unicode/udat.h b/deps/icu-small/source/i18n/unicode/udat.h index 2963e5506c821d..0e6e6b76daa37d 100644 --- a/deps/icu-small/source/i18n/unicode/udat.h +++ b/deps/icu-small/source/i18n/unicode/udat.h @@ -1530,7 +1530,21 @@ typedef enum UDateFormatSymbolType { * udat_setSymbols not supported for UDAT_ZODIAC_NAMES_NARROW) * @stable ICU 54 */ - UDAT_ZODIAC_NAMES_NARROW + UDAT_ZODIAC_NAMES_NARROW, + +#ifndef U_HIDE_DRAFT_API + /** + * The narrow quarter names, for example 1 + * @draft ICU 70 + */ + UDAT_NARROW_QUARTERS, + + /** + * The narrow standalone quarter names, for example 1 + * @draft ICU 70 + */ + UDAT_STANDALONE_NARROW_QUARTERS +#endif // U_HIDE_DRAFT_API } UDateFormatSymbolType; struct UDateFormatSymbols; @@ -1566,7 +1580,7 @@ udat_getSymbols(const UDateFormat *fmt, /** * Count the number of particular symbols for an UDateFormat. -* This function is most useful as for detemining the loop termination condition +* This function is most useful as for determining the loop termination condition * for calls to {@link #udat_getSymbols }. * @param fmt The formatter to query. * @param type The type of symbols to count. One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS, diff --git a/deps/icu-small/source/i18n/unicode/udateintervalformat.h b/deps/icu-small/source/i18n/unicode/udateintervalformat.h index 9ed53a87d68904..8439444d07961b 100644 --- a/deps/icu-small/source/i18n/unicode/udateintervalformat.h +++ b/deps/icu-small/source/i18n/unicode/udateintervalformat.h @@ -48,7 +48,7 @@ * - The skeleton MMMd will produce * for en_US, "Mar 4-8" * for en_GB, "4-8 Mar" - * + * * Note: the "-" characters in the above sample output will actually be * Unicode 2013, EN_DASH, in all but the last example. * @@ -301,7 +301,6 @@ udtitvfmt_formatCalendarToResult( UFormattedDateInterval* result, UErrorCode* status); -#ifndef U_HIDE_DRAFT_API /** * Set a particular UDisplayContext value in the formatter, such as * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted @@ -311,7 +310,7 @@ udtitvfmt_formatCalendarToResult( * @param formatter The formatter for which to set a UDisplayContext value. * @param value The UDisplayContext value to set. * @param status A pointer to an UErrorCode to receive any errors - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status); @@ -323,13 +322,11 @@ udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErr * @param type The UDisplayContextType whose value to return * @param status A pointer to an UErrorCode to receive any errors * @return The UDisplayContextValue for the specified type. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UDisplayContext U_EXPORT2 udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status); -#endif /* U_HIDE_DRAFT_API */ - #endif /* #if !UCONFIG_NO_FORMATTING */ #endif diff --git a/deps/icu-small/source/i18n/unicode/udatpg.h b/deps/icu-small/source/i18n/unicode/udatpg.h index 893e1e6831ae34..efe4357bfeecd2 100644 --- a/deps/icu-small/source/i18n/unicode/udatpg.h +++ b/deps/icu-small/source/i18n/unicode/udatpg.h @@ -31,15 +31,15 @@ * \file * \brief C API: Wrapper for icu::DateTimePatternGenerator (unicode/dtptngen.h). * - * UDateTimePatternGenerator provides flexible generation of date format patterns, - * like "yy-MM-dd". The user can build up the generator by adding successive - * patterns. Once that is done, a query can be made using a "skeleton", which is - * a pattern which just includes the desired fields and lengths. The generator + * UDateTimePatternGenerator provides flexible generation of date format patterns, + * like "yy-MM-dd". The user can build up the generator by adding successive + * patterns. Once that is done, a query can be made using a "skeleton", which is + * a pattern which just includes the desired fields and lengths. The generator * will return the "best fit" pattern corresponding to that skeleton. *

      The main method people will use is udatpg_getBestPattern, since normally - * UDateTimePatternGenerator is pre-built with data from a particular locale. + * UDateTimePatternGenerator is pre-built with data from a particular locale. * However, generators can be built directly from other data as well. - *

      Issue: may be useful to also have a function that returns the list of + *

      Issue: may be useful to also have a function that returns the list of * fields in a pattern, in order, since we have that internally. * That would be useful for getting the UI order of field elements. */ @@ -218,13 +218,13 @@ udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode); /** * Get the best pattern matching the input skeleton. It is guaranteed to * have all of the fields in the skeleton. - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. * Consecutive calls to this function do not affect each other, * but this function cannot be used concurrently on a single generator object. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param skeleton * The skeleton is a pattern containing only the variable fields. @@ -247,13 +247,13 @@ udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, /** * Get the best pattern matching the input skeleton. It is guaranteed to * have all of the fields in the skeleton. - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. * Consecutive calls to this function do not affect each other, * but this function cannot be used concurrently on a single generator object. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param skeleton * The skeleton is a pattern containing only the variable fields. @@ -284,7 +284,7 @@ udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg, /** * Get a unique skeleton from a given pattern. For example, * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd". - * + * * Note that this function uses a non-const UDateTimePatternGenerator: * It uses a stateful pattern parser which is set up for each generator object, * rather than creating one for each function call. @@ -341,8 +341,8 @@ udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg, /** * Adds a pattern to the generator. If the pattern has the same skeleton as * an existing pattern, and the override parameter is set, then the previous - * value is overriden. Otherwise, the previous value is retained. In either - * case, the conflicting status is set and previous vale is stored in + * value is overridden. Otherwise, the previous value is retained. In either + * case, the conflicting status is set and previous vale is stored in * conflicting pattern. *

      * Note that single-field patterns (like "MMM") are automatically added, and @@ -351,14 +351,14 @@ udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg, * @param dtpg a pointer to UDateTimePatternGenerator. * @param pattern input pattern, such as "dd/MMM" * @param patternLength the length of pattern. - * @param override When existing values are to be overridden use true, + * @param override When existing values are to be overridden use true, * otherwise use false. * @param conflictingPattern Previous pattern with the same skeleton. * @param capacity the capacity of conflictingPattern. * @param pLength a pointer to the length of conflictingPattern. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call. - * @return conflicting status. The value could be UDATPG_NO_CONFLICT, + * @return conflicting status. The value could be UDATPG_NO_CONFLICT, * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT. * @stable ICU 3.8 */ @@ -533,7 +533,7 @@ udatpg_setDecimal(UDateTimePatternGenerator *dtpg, /** * Getter corresponding to setDecimal. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pLength A pointer that will receive the length of the decimal string. * @return corresponding to the decimal point. @@ -616,7 +616,7 @@ udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg, /** * Return a UEnumeration list of all the skeletons in canonical form. * Call udatpg_getPatternForSkeleton() to get the corresponding pattern. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call @@ -642,9 +642,9 @@ udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErr /** * Get the pattern corresponding to a given skeleton. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. - * @param skeleton + * @param skeleton * @param skeletonLength pointer to the length of skeleton. * @param pLength pointer to the length of return pattern. * @return pattern corresponding to a given skeleton. @@ -660,9 +660,9 @@ udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, /** * Return the default hour cycle for a locale. Uses the locale that the * UDateTimePatternGenerator was initially created with. - * + * * Cannot be used on an empty UDateTimePatternGenerator instance. - * + * * @param dtpg a pointer to UDateTimePatternGenerator. * @param pErrorCode a pointer to the UErrorCode which must not indicate a * failure before the function call. Set to U_UNSUPPORTED_ERROR diff --git a/deps/icu-small/source/i18n/unicode/uformattable.h b/deps/icu-small/source/i18n/unicode/uformattable.h index 6b8bee1f3dfe7c..4c4a307a24b4a1 100644 --- a/deps/icu-small/source/i18n/unicode/uformattable.h +++ b/deps/icu-small/source/i18n/unicode/uformattable.h @@ -173,7 +173,7 @@ ufmt_getDouble(UFormattable* fmt, UErrorCode *status); * as appropriate, is returned and the status is set to * U_INVALID_FORMAT_ERROR. If this object is of type UFMT_INT64 and * it fits within a long, then no precision is lost. If it is of - * type kDouble or kDecimalNumber, then a conversion is peformed, with + * type kDouble or kDecimalNumber, then a conversion is performed, with * truncation of any fractional part. If the type is UFMT_OBJECT and * the object is a Measure, then the result of * getNumber().getLong(status) is returned. If this object is @@ -195,7 +195,7 @@ ufmt_getLong(UFormattable* fmt, UErrorCode *status); * the maximum or minimum int64 value, as appropriate, is returned * and the status is set to U_INVALID_FORMAT_ERROR. If the * magnitude fits in an int64, then a casting conversion is - * peformed, with truncation of any fractional part. If the type + * performed, with truncation of any fractional part. If the type * is UFMT_OBJECT and the object is a Measure, then the result of * getNumber().getDouble(status) is returned. If this object is * neither a numeric type nor a Measure, then 0 is returned and @@ -267,7 +267,7 @@ ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status); * the full precision and range of the original input, unconstrained by * the limits of a double floating point or a 64 bit int. * - * This function is not thread safe, and therfore is not declared const, + * This function is not thread safe, and therefore is not declared const, * even though it is logically const. * The resulting buffer is owned by the UFormattable and is invalid if any other functions are * called on the UFormattable. diff --git a/deps/icu-small/source/i18n/unicode/uformattedvalue.h b/deps/icu-small/source/i18n/unicode/uformattedvalue.h index c964b3a74dd3a1..1a550e87589c10 100644 --- a/deps/icu-small/source/i18n/unicode/uformattedvalue.h +++ b/deps/icu-small/source/i18n/unicode/uformattedvalue.h @@ -13,7 +13,7 @@ /** * \file * \brief C API: Abstract operations for localized strings. - * + * * This file contains declarations for classes that deal with formatted strings. A number * of APIs throughout ICU use these classes for expressing their localized output. */ @@ -22,7 +22,7 @@ /** * All possible field categories in ICU. Every entry in this enum corresponds * to another enum that exists in ICU. - * + * * In the APIs that take a UFieldCategory, an int32_t type is used. Field * categories having any of the top four bits turned on are reserved as * private-use for external APIs implementing FormattedValue. This means that @@ -34,7 +34,7 @@ typedef enum UFieldCategory { /** * For an undefined field category. - * + * * @stable ICU 64 */ UFIELD_CATEGORY_UNDEFINED = 0, @@ -160,7 +160,7 @@ ucfpos_close(UConstrainedFieldPosition* ucfpos); /** * Sets a constraint on the field category. - * + * * When this instance of UConstrainedFieldPosition is passed to ufmtval_nextPosition, * positions are skipped unless they have the given category. * @@ -192,7 +192,7 @@ ucfpos_constrainCategory( /** * Sets a constraint on the category and field. - * + * * When this instance of UConstrainedFieldPosition is passed to ufmtval_nextPosition, * positions are skipped unless they have the given category and field. * diff --git a/deps/icu-small/source/i18n/unicode/ulistformatter.h b/deps/icu-small/source/i18n/unicode/ulistformatter.h index 28a1e580370006..8334c7852f0cc9 100644 --- a/deps/icu-small/source/i18n/unicode/ulistformatter.h +++ b/deps/icu-small/source/i18n/unicode/ulistformatter.h @@ -24,7 +24,7 @@ * \file * \brief C API: Format a list in a locale-appropriate way. * - * A UListFormatter is used to format a list of items in a locale-appropriate way, + * A UListFormatter is used to format a list of items in a locale-appropriate way, * using data from CLDR. * Example: Input data ["Alice", "Bob", "Charlie", "Delta"] will be formatted * as "Alice, Bob, Charlie, and Delta" in English. diff --git a/deps/icu-small/source/i18n/unicode/ulocdata.h b/deps/icu-small/source/i18n/unicode/ulocdata.h index 3977743e3238ec..3647df9596ae63 100644 --- a/deps/icu-small/source/i18n/unicode/ulocdata.h +++ b/deps/icu-small/source/i18n/unicode/ulocdata.h @@ -229,15 +229,15 @@ ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status); /** * Returns the element gives the normal business letter size, and customary units. * The units for the numbers are always in milli-meters. - * For US since 8.5 and 11 do not yeild an integral value when converted to milli-meters, + * For US since 8.5 and 11 do not yield an integral value when converted to milli-meters, * the values are rounded off. - * So for A4 size paper the height and width are 297 mm and 210 mm repectively, + * So for A4 size paper the height and width are 297 mm and 210 mm respectively, * and for US letter size the height and width are 279 mm and 216 mm respectively. * Please note that this API will change in ICU 3.6 and will use an ulocdata object. * * @param localeID The id of the locale for which the paper size information to be retrieved. - * @param height A pointer to int to recieve the height information. - * @param width A pointer to int to recieve the width information. + * @param height A pointer to int to receive the height information. + * @param width A pointer to int to receive the width information. * @param status Must be a valid pointer to an error code value, * which must not indicate a failure before the function call. * @stable ICU 2.8 @@ -247,7 +247,7 @@ ulocdata_getPaperSize(const char *localeID, int32_t *height, int32_t *width, UEr /** * Return the current CLDR version used by the library. - * @param versionArray fillin that will recieve the version number + * @param versionArray fill-in that will receive the version number * @param status error code - could be U_MISSING_RESOURCE_ERROR if the version was not found. * @stable ICU 4.2 */ diff --git a/deps/icu-small/source/i18n/unicode/umsg.h b/deps/icu-small/source/i18n/unicode/umsg.h index c087031c6d4e35..c955dc18ac4d4a 100644 --- a/deps/icu-small/source/i18n/unicode/umsg.h +++ b/deps/icu-small/source/i18n/unicode/umsg.h @@ -1,10 +1,10 @@ // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /******************************************************************** - * COPYRIGHT: + * COPYRIGHT: * Copyright (c) 1997-2011, International Business Machines Corporation and * others. All Rights Reserved. - * Copyright (C) 2010 , Yahoo! Inc. + * Copyright (C) 2010 , Yahoo! Inc. ******************************************************************** * * file name: umsg.h @@ -103,8 +103,8 @@ * u_uastrcpy(str, "MyDisk"); * u_uastrcpy(pattern, "The disk {1} contains {0,choice,0#no files|1#one file|1<{0,number,integer} files}"); * for(i=0; i<3; i++){ - * resultlength=0; - * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, testArgs[i], str); + * resultlength=0; + * resultLengthOut=u_formatMessage( "en_US", pattern, u_strlen(pattern), NULL, resultlength, &status, testArgs[i], str); * if(status==U_BUFFER_OVERFLOW_ERROR){ * status=U_ZERO_ERROR; * resultlength=resultLengthOut+1; @@ -178,7 +178,7 @@ * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_formatMessage(const char *locale, const UChar *pattern, int32_t patternLength, @@ -205,7 +205,7 @@ u_formatMessage(const char *locale, * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_vformatMessage( const char *locale, const UChar *pattern, int32_t patternLength, @@ -230,7 +230,7 @@ u_vformatMessage( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_parseMessage( const char *locale, const UChar *pattern, int32_t patternLength, @@ -255,7 +255,7 @@ u_parseMessage( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_vparseMessage(const char *locale, const UChar *pattern, int32_t patternLength, @@ -284,7 +284,7 @@ u_vparseMessage(const char *locale, * @see u_parseMessage * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_formatMessageWithError( const char *locale, const UChar *pattern, int32_t patternLength, @@ -313,7 +313,7 @@ u_formatMessageWithError( const char *locale, * output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 u_vformatMessageWithError( const char *locale, const UChar *pattern, int32_t patternLength, @@ -341,7 +341,7 @@ u_vformatMessageWithError( const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_parseMessageWithError(const char *locale, const UChar *pattern, int32_t patternLength, @@ -369,7 +369,7 @@ u_parseMessageWithError(const char *locale, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 u_vparseMessageWithError(const char *locale, const UChar *pattern, int32_t patternLength, @@ -380,7 +380,7 @@ u_vparseMessageWithError(const char *locale, UErrorCode* status); /*----------------------- New experimental API --------------------------- */ -/** +/** * The message format object * @stable ICU 2.0 */ @@ -392,14 +392,14 @@ typedef void* UMessageFormat; * @param pattern A pattern specifying the format to use. * @param patternLength Length of the pattern to use * @param locale The locale for which the messages are formatted. - * @param parseError A pointer to UParseError struct to receive any errors - * occured during parsing. Can be NULL. + * @param parseError A pointer to UParseError struct to receive any errors + * occurred during parsing. Can be NULL. * @param status A pointer to an UErrorCode to receive any errors. - * @return A pointer to a UMessageFormat to use for formatting - * messages, or 0 if an error occurred. + * @return A pointer to a UMessageFormat to use for formatting + * messages, or 0 if an error occurred. * @stable ICU 2.0 */ -U_CAPI UMessageFormat* U_EXPORT2 +U_CAPI UMessageFormat* U_EXPORT2 umsg_open( const UChar *pattern, int32_t patternLength, const char *locale, @@ -412,7 +412,7 @@ umsg_open( const UChar *pattern, * @param format The formatter to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_close(UMessageFormat* format); #if U_SHOW_CPLUSPLUS_API @@ -442,7 +442,7 @@ U_NAMESPACE_END * @return A pointer to a UDateFormat identical to fmt. * @stable ICU 2.0 */ -U_CAPI UMessageFormat U_EXPORT2 +U_CAPI UMessageFormat U_EXPORT2 umsg_clone(const UMessageFormat *fmt, UErrorCode *status); @@ -453,7 +453,7 @@ umsg_clone(const UMessageFormat *fmt, * @param locale The locale the formatter should use. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_setLocale(UMessageFormat *fmt, const char* locale); @@ -464,7 +464,7 @@ umsg_setLocale(UMessageFormat *fmt, * @return the locale. * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 umsg_getLocale(const UMessageFormat *fmt); /** @@ -472,14 +472,14 @@ umsg_getLocale(const UMessageFormat *fmt); * @param fmt The formatter to use * @param pattern The pattern to be applied. * @param patternLength Length of the pattern to use - * @param parseError Struct to receive information on position + * @param parseError Struct to receive information on position * of error if an error is encountered.Can be NULL. * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be * set to a failure result. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_applyPattern( UMessageFormat *fmt, const UChar* pattern, int32_t patternLength, @@ -493,13 +493,13 @@ umsg_applyPattern( UMessageFormat *fmt, * @param resultLength The maximum size of result. * @param status Output param set to success/failure code on * exit. If the pattern is invalid, this will be - * set to a failure result. + * set to a failure result. * @return the pattern of the format * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_toPattern(const UMessageFormat *fmt, - UChar* result, + UChar* result, int32_t resultLength, UErrorCode* status); @@ -512,13 +512,13 @@ umsg_toPattern(const UMessageFormat *fmt, * @param result A pointer to a buffer to receive the formatted message. * @param resultLength The maximum size of result. * @param status A pointer to an UErrorCode to receive any errors - * @param ... A variable-length argument list containing the arguments + * @param ... A variable-length argument list containing the arguments * specified in pattern. - * @return The total buffer size needed; if greater than resultLength, + * @return The total buffer size needed; if greater than resultLength, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_format( const UMessageFormat *fmt, UChar *result, int32_t resultLength, @@ -530,17 +530,17 @@ umsg_format( const UMessageFormat *fmt, * This function may perform re-ordering of the arguments depending on the * locale. For all numeric arguments, double is assumed unless the type is * explicitly integer. All choice format arguments must be of type double. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param result A pointer to a buffer to receive the formatted message. * @param resultLength The maximum size of result. - * @param ap A variable-length argument list containing the arguments + * @param ap A variable-length argument list containing the arguments * @param status A pointer to an UErrorCode to receive any errors * specified in pattern. - * @return The total buffer size needed; if greater than resultLength, + * @return The total buffer size needed; if greater than resultLength, * the output was truncated. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 umsg_vformat( const UMessageFormat *fmt, UChar *result, int32_t resultLength, @@ -552,7 +552,7 @@ umsg_vformat( const UMessageFormat *fmt, * For numeric arguments, this function will always use doubles. Integer types * should not be passed. * This function is not able to parse all output from {@link #umsg_format }. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param source The text to parse. * @param sourceLength The length of source, or -1 if null-terminated. * @param count Output param to receive number of elements returned. @@ -561,7 +561,7 @@ umsg_vformat( const UMessageFormat *fmt, * specified in pattern. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_parse( const UMessageFormat *fmt, const UChar *source, int32_t sourceLength, @@ -574,7 +574,7 @@ umsg_parse( const UMessageFormat *fmt, * For numeric arguments, this function will always use doubles. Integer types * should not be passed. * This function is not able to parse all output from {@link #umsg_format }. - * @param fmt The formatter to use + * @param fmt The formatter to use * @param source The text to parse. * @param sourceLength The length of source, or -1 if null-terminated. * @param count Output param to receive number of elements returned. @@ -584,7 +584,7 @@ umsg_parse( const UMessageFormat *fmt, * @see u_formatMessage * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 umsg_vparse(const UMessageFormat *fmt, const UChar *source, int32_t sourceLength, @@ -596,7 +596,7 @@ umsg_vparse(const UMessageFormat *fmt, /** * Convert an 'apostrophe-friendly' pattern into a standard * pattern. Standard patterns treat all apostrophes as - * quotes, which is problematic in some languages, e.g. + * quotes, which is problematic in some languages, e.g. * French, where apostrophe is commonly used. This utility * assumes that only an unpaired apostrophe immediately before * a brace is a true quote. Other unpaired apostrophes are paired, @@ -616,8 +616,8 @@ umsg_vparse(const UMessageFormat *fmt, * not * @stable ICU 3.4 */ -U_CAPI int32_t U_EXPORT2 -umsg_autoQuoteApostrophe(const UChar* pattern, +U_CAPI int32_t U_EXPORT2 +umsg_autoQuoteApostrophe(const UChar* pattern, int32_t patternLength, UChar* dest, int32_t destCapacity, diff --git a/deps/icu-small/source/i18n/unicode/unirepl.h b/deps/icu-small/source/i18n/unicode/unirepl.h index 891a1d527fd84a..7f6edcf61ad801 100644 --- a/deps/icu-small/source/i18n/unicode/unirepl.h +++ b/deps/icu-small/source/i18n/unicode/unirepl.h @@ -17,7 +17,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: UnicodeReplacer */ diff --git a/deps/icu-small/source/i18n/unicode/unum.h b/deps/icu-small/source/i18n/unicode/unum.h index 76c7d151357875..14f76168b61b5f 100644 --- a/deps/icu-small/source/i18n/unicode/unum.h +++ b/deps/icu-small/source/i18n/unicode/unum.h @@ -35,7 +35,7 @@ * \brief C API: Compatibility APIs for number formatting. * *

      Number Format C API

      - * + * *

      IMPORTANT: New users with are strongly encouraged to * see if unumberformatter.h fits their use case. Although not deprecated, * this header is provided for backwards compatibility only. @@ -143,7 +143,7 @@ */ typedef void* UNumberFormat; -/** The possible number format styles. +/** The possible number format styles. * @stable ICU 2.0 */ typedef enum UNumberFormatStyle { @@ -183,24 +183,24 @@ typedef enum UNumberFormatStyle { * @stable ICU 2.0 */ UNUM_SPELLOUT=5, - /** + /** * Ordinal rule-based format . The default ruleset can be specified/changed using * unum_setTextAttribute with UNUM_DEFAULT_RULESET; the available public rulesets * can be listed using unum_getTextAttribute with UNUM_PUBLIC_RULESETS. * @stable ICU 3.0 */ UNUM_ORDINAL=6, - /** - * Duration rule-based format + /** + * Duration rule-based format * @stable ICU 3.0 */ UNUM_DURATION=7, - /** + /** * Numbering system rule-based format * @stable ICU 4.2 */ UNUM_NUMBERING_SYSTEM=8, - /** + /** * Rule-based format defined by a pattern string. * @stable ICU 3.0 */ @@ -224,7 +224,7 @@ typedef enum UNumberFormatStyle { */ UNUM_CURRENCY_ACCOUNTING=12, /** - * Currency format with a currency symbol given CASH usage, e.g., + * Currency format with a currency symbol given CASH usage, e.g., * "NT$3" instead of "NT$3.23". * @stable ICU 54 */ @@ -298,7 +298,7 @@ typedef enum UNumberFormatRoundingMode { #endif /* U_HIDE_DEPRECATED_API */ UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1, UNUM_ROUND_HALFUP, - /** + /** * ROUND_UNNECESSARY reports an error if formatted result is not exact. * @stable ICU 4.8 */ @@ -322,7 +322,7 @@ typedef enum UNumberFormatRoundingMode { #endif // U_HIDE_DRAFT_API } UNumberFormatRoundingMode; -/** The possible number format pad positions. +/** The possible number format pad positions. * @stable ICU 2.0 */ typedef enum UNumberFormatPadPosition { @@ -412,29 +412,27 @@ typedef enum UNumberFormatFields { } UNumberFormatFields; -#ifndef U_HIDE_DRAFT_API /** * Selectors with special numeric values to use locale default minimum grouping * digits for the DecimalFormat/UNumberFormat setMinimumGroupingDigits method. * Do not use these constants with the [U]NumberFormatter API. * - * @draft ICU 68 + * @stable ICU 68 */ typedef enum UNumberFormatMinimumGroupingDigits { /** * Display grouping using the default strategy for all locales. - * @draft ICU 68 + * @stable ICU 68 */ UNUM_MINIMUM_GROUPING_DIGITS_AUTO = -2, /** * Display grouping using locale defaults, except do not show grouping on * values smaller than 10000 (such that there is a minimum of two digits * before the first separator). - * @draft ICU 68 + * @stable ICU 68 */ UNUM_MINIMUM_GROUPING_DIGITS_MIN2 = -3, } UNumberFormatMinimumGroupingDigits; -#endif // U_HIDE_DRAFT_API /** * Create and return a new UNumberFormat for formatting and parsing @@ -455,7 +453,7 @@ typedef enum UNumberFormatMinimumGroupingDigits { *

      NOTE:: New users with are strongly encouraged to * use unumf_openForSkeletonAndLocale instead of unum_open. * - * @param pattern A pattern specifying the format to use. + * @param pattern A pattern specifying the format to use. * This parameter is ignored unless the style is * UNUM_PATTERN_DECIMAL or UNUM_PATTERN_RULEBASED. * @param patternLength The number of characters in the pattern, or -1 @@ -473,7 +471,7 @@ typedef enum UNumberFormatMinimumGroupingDigits { * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI UNumberFormat* U_EXPORT2 +U_CAPI UNumberFormat* U_EXPORT2 unum_open( UNumberFormatStyle style, const UChar* pattern, int32_t patternLength, @@ -488,7 +486,7 @@ unum_open( UNumberFormatStyle style, * @param fmt The formatter to close. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_close(UNumberFormat* fmt); #if U_SHOW_CPLUSPLUS_API @@ -518,7 +516,7 @@ U_NAMESPACE_END * @return A pointer to a UNumberFormat identical to fmt. * @stable ICU 2.0 */ -U_CAPI UNumberFormat* U_EXPORT2 +U_CAPI UNumberFormat* U_EXPORT2 unum_clone(const UNumberFormat *fmt, UErrorCode *status); @@ -546,7 +544,7 @@ unum_clone(const UNumberFormat *fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_format( const UNumberFormat* fmt, int32_t number, UChar* result, @@ -578,7 +576,7 @@ unum_format( const UNumberFormat* fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatInt64(const UNumberFormat *fmt, int64_t number, UChar* result, @@ -610,7 +608,7 @@ unum_formatInt64(const UNumberFormat *fmt, * @see UFieldPosition * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDouble( const UNumberFormat* fmt, double number, UChar* result, @@ -695,9 +693,9 @@ unum_formatDoubleForFields(const UNumberFormat* format, * @see unum_parseInt64 * @see unum_parseDouble * @see UFieldPosition -* @stable ICU 4.4 +* @stable ICU 4.4 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDecimal( const UNumberFormat* fmt, const char * number, int32_t length, @@ -792,7 +790,7 @@ unum_formatUFormattable(const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_parse( const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -818,7 +816,7 @@ unum_parse( const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.8 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 unum_parseInt64(const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -844,7 +842,7 @@ unum_parseInt64(const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 2.0 */ -U_CAPI double U_EXPORT2 +U_CAPI double U_EXPORT2 unum_parseDouble( const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -879,7 +877,7 @@ unum_parseDouble( const UNumberFormat* fmt, * @see unum_formatDouble * @stable ICU 4.4 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_parseDecimal(const UNumberFormat* fmt, const UChar* text, int32_t textLength, @@ -959,7 +957,7 @@ unum_parseToUFormattable(const UNumberFormat* fmt, * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_applyPattern( UNumberFormat *format, UBool localized, const UChar *pattern, @@ -978,7 +976,7 @@ unum_applyPattern( UNumberFormat *format, * @see unum_countAvailable * @stable ICU 2.0 */ -U_CAPI const char* U_EXPORT2 +U_CAPI const char* U_EXPORT2 unum_getAvailable(int32_t localeIndex); /** @@ -990,7 +988,7 @@ unum_getAvailable(int32_t localeIndex); * @see unum_getAvailable * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_countAvailable(void); #if UCONFIG_HAVE_PARSEALLINPUT @@ -1067,7 +1065,7 @@ typedef enum UNumberFormatAttribute { */ UNUM_PARSE_ALL_INPUT = 20, #endif - /** + /** * Scale, which adjusts the position of the * decimal point when formatting. Amounts will be multiplied by 10 ^ (scale) * before they are formatted. The default value for the scale is 0 ( no adjustment ). @@ -1090,9 +1088,9 @@ typedef enum UNumberFormatAttribute { */ UNUM_MINIMUM_GROUPING_DIGITS = 22, - /** + /** * if this attribute is set to 0, it is set to UNUM_CURRENCY_STANDARD purpose, - * otherwise it is UNUM_CURRENCY_CASH purpose + * otherwise it is UNUM_CASH_CURRENCY purpose * Default: 0 (UNUM_CURRENCY_STANDARD purpose) * @stable ICU 54 */ @@ -1111,7 +1109,7 @@ typedef enum UNumberFormatAttribute { * @stable ICU 50 */ UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS = 0x1000, - /** + /** * if this attribute is set to 1, specifies that, if the pattern doesn't contain an exponent, the exponent will not be parsed. If the pattern does contain an exponent, this attribute has no effect. * Has no effect on formatting. * Default: 0 (unset) @@ -1119,8 +1117,8 @@ typedef enum UNumberFormatAttribute { */ UNUM_PARSE_NO_EXPONENT = 0x1001, - /** - * if this attribute is set to 1, specifies that, if the pattern contains a + /** + * if this attribute is set to 1, specifies that, if the pattern contains a * decimal mark the input is required to have one. If this attribute is set to 0, * specifies that input does not have to contain a decimal mark. * Has no effect on formatting. @@ -1171,7 +1169,7 @@ typedef enum UNumberFormatAttribute { * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_getAttribute(const UNumberFormat* fmt, UNumberFormatAttribute attr); @@ -1194,7 +1192,7 @@ unum_getAttribute(const UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setAttribute( UNumberFormat* fmt, UNumberFormatAttribute attr, int32_t newValue); @@ -1214,7 +1212,7 @@ unum_setAttribute( UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI double U_EXPORT2 +U_CAPI double U_EXPORT2 unum_getDoubleAttribute(const UNumberFormat* fmt, UNumberFormatAttribute attr); @@ -1232,7 +1230,7 @@ unum_getDoubleAttribute(const UNumberFormat* fmt, * @see unum_setTextAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setDoubleAttribute( UNumberFormat* fmt, UNumberFormatAttribute attr, double newValue); @@ -1289,7 +1287,7 @@ typedef enum UNumberFormatTextAttribute { * @see unum_setAttribute * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_getTextAttribute( const UNumberFormat* fmt, UNumberFormatTextAttribute tag, UChar* result, @@ -1312,7 +1310,7 @@ unum_getTextAttribute( const UNumberFormat* fmt, * @see unum_setAttribute * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 unum_setTextAttribute( UNumberFormat* fmt, UNumberFormatTextAttribute tag, const UChar* newValue, @@ -1335,7 +1333,7 @@ unum_setTextAttribute( UNumberFormat* fmt, * @see DecimalFormat * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_toPattern( const UNumberFormat* fmt, UBool isPatternLocalized, UChar* result, @@ -1383,7 +1381,7 @@ typedef enum UNumberFormatSymbol { /** Significant digit symbol * @stable ICU 3.0 */ UNUM_SIGNIFICANT_DIGIT_SYMBOL = 16, - /** The monetary grouping separator + /** The monetary grouping separator * @stable ICU 3.6 */ UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL = 17, @@ -1429,12 +1427,19 @@ typedef enum UNumberFormatSymbol { */ UNUM_EXPONENT_MULTIPLICATION_SYMBOL = 27, +#ifndef U_HIDE_INTERNAL_API + /** Approximately sign. + * @internal + */ + UNUM_APPROXIMATELY_SIGN_SYMBOL = 28, +#endif + #ifndef U_HIDE_DEPRECATED_API /** * One more than the highest normal UNumberFormatSymbol value. * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420. */ - UNUM_FORMAT_SYMBOL_COUNT = 28 + UNUM_FORMAT_SYMBOL_COUNT = 29 #endif /* U_HIDE_DEPRECATED_API */ } UNumberFormatSymbol; @@ -1486,7 +1491,7 @@ unum_setSymbol(UNumberFormat *fmt, * Get the locale for this number format object. * You can choose between valid and actual locale. * @param fmt The formatter to get the locale from - * @param type type of the locale we're looking for (valid or actual) + * @param type type of the locale we're looking for (valid or actual) * @param status error code for the operation * @return the locale name * @stable ICU 2.8 @@ -1494,7 +1499,7 @@ unum_setSymbol(UNumberFormat *fmt, U_CAPI const char* U_EXPORT2 unum_getLocaleByType(const UNumberFormat *fmt, ULocDataLocaleType type, - UErrorCode* status); + UErrorCode* status); /** * Set a particular UDisplayContext value in the formatter, such as diff --git a/deps/icu-small/source/i18n/unicode/unumberformatter.h b/deps/icu-small/source/i18n/unicode/unumberformatter.h index 341d9e4ad9c628..cb980cd94ddfc8 100644 --- a/deps/icu-small/source/i18n/unicode/unumberformatter.h +++ b/deps/icu-small/source/i18n/unicode/unumberformatter.h @@ -204,7 +204,6 @@ typedef enum UNumberUnitWidth { */ UNUM_UNIT_WIDTH_ISO_CODE = 3, -#ifndef U_HIDE_DRAFT_API /** * Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan * dollar in zh-TW. @@ -212,7 +211,7 @@ typedef enum UNumberUnitWidth { *

      * Behavior of this option with non-currency units is not defined at this time. * - * @draft ICU 68 + * @stable ICU 68 */ UNUM_UNIT_WIDTH_FORMAL = 4, @@ -223,10 +222,9 @@ typedef enum UNumberUnitWidth { *

      * Behavior of this option with non-currency units is not defined at this time. * - * @draft ICU 68 + * @stable ICU 68 */ UNUM_UNIT_WIDTH_VARIANT = 5, -#endif // U_HIDE_DRAFT_API /** * Format the number according to the specified unit, but do not display the unit. For currencies, apply @@ -503,10 +501,10 @@ typedef enum UNumberDecimalSeparatorDisplay { #ifndef U_FORCE_HIDE_DRAFT_API /** * An enum declaring how to render trailing zeros. - * + * * - UNUM_TRAILING_ZERO_AUTO: 0.90, 1.00, 1.10 * - UNUM_TRAILING_ZERO_HIDE_IF_WHOLE: 0.90, 1, 1.10 - * + * * @draft ICU 69 */ typedef enum UNumberTrailingZeroDisplay { @@ -772,7 +770,6 @@ unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPosition UErrorCode* ec); -#ifndef U_HIDE_DRAFT_API /** * Extracts the formatted number as a "numeric string" conforming to the * syntax defined in the Decimal Arithmetic Specification, available at @@ -789,7 +786,7 @@ unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPosition * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumf_resultToDecimalNumber( @@ -797,7 +794,6 @@ unumf_resultToDecimalNumber( char* dest, int32_t destCapacity, UErrorCode* ec); -#endif // U_HIDE_DRAFT_API /** diff --git a/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h b/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h index e1c5a5760fd55a..4e92fe29e25059 100644 --- a/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h +++ b/deps/icu-small/source/i18n/unicode/unumberrangeformatter.h @@ -193,20 +193,18 @@ typedef enum UNumberRangeIdentityResult { * @internal */ UNUM_IDENTITY_RESULT_COUNT -#endif +#endif /* U_HIDE_INTERNAL_API */ } UNumberRangeIdentityResult; -#ifndef U_HIDE_DRAFT_API - struct UNumberRangeFormatter; /** * C-compatible version of icu::number::LocalizedNumberRangeFormatter. * * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead. * - * @draft ICU 68 + * @stable ICU 68 */ typedef struct UNumberRangeFormatter UNumberRangeFormatter; @@ -217,7 +215,7 @@ struct UFormattedNumberRange; * * NOTE: This is a C-compatible API; C++ users should build against numberrangeformatter.h instead. * - * @draft ICU 68 + * @stable ICU 68 */ typedef struct UFormattedNumberRange UFormattedNumberRange; @@ -241,7 +239,7 @@ typedef struct UFormattedNumberRange UFormattedNumberRange; * @param perror A parse error struct populated if an error occurs when parsing. Can be NULL. * If no error occurs, perror->offset will be set to -1. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UNumberRangeFormatter* U_EXPORT2 unumrf_openForSkeletonWithCollapseAndIdentityFallback( @@ -260,7 +258,7 @@ unumrf_openForSkeletonWithCollapseAndIdentityFallback( * passed to a format function. * * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UFormattedNumberRange* U_EXPORT2 unumrf_openResult(UErrorCode* ec); @@ -279,7 +277,7 @@ unumrf_openResult(UErrorCode* ec); * @param second The second (usually larger) number in the range. * @param uresult The object that will be mutated to store the result; see unumrf_openResult. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_formatDoubleRange( @@ -307,7 +305,7 @@ unumrf_formatDoubleRange( * @param secondLen The length of the second decimal number string. * @param uresult The object that will be mutated to store the result; see unumrf_openResult. * @param ec Set if an error occurs. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_formatDecimalRange( @@ -332,7 +330,7 @@ unumrf_formatDecimalRange( * @param uresult The object containing the formatted number range. * @param ec Set if an error occurs. * @return A UFormattedValue owned by the input object. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI const UFormattedValue* U_EXPORT2 unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec); @@ -346,7 +344,7 @@ unumrf_resultAsValue(const UFormattedNumberRange* uresult, UErrorCode* ec); * @param uresult The object containing the formatted number range. * @param ec Set if an error occurs. * @return The identity result; see UNumberRangeIdentityResult. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI UNumberRangeIdentityResult U_EXPORT2 unumrf_resultGetIdentityResult( @@ -358,7 +356,7 @@ unumrf_resultGetIdentityResult( * Extracts the first formatted number as a decimal number. This endpoint * is useful for obtaining the exact number being printed after scaling * and rounding have been applied by the number range formatting pipeline. - * + * * The syntax of the unformatted number is a "numeric string" * as defined in the Decimal Arithmetic Specification, available at * http://speleotrove.com/decimal @@ -371,7 +369,7 @@ unumrf_resultGetIdentityResult( * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumrf_resultGetFirstDecimalNumber( @@ -385,7 +383,7 @@ unumrf_resultGetFirstDecimalNumber( * Extracts the second formatted number as a decimal number. This endpoint * is useful for obtaining the exact number being printed after scaling * and rounding have been applied by the number range formatting pipeline. - * + * * The syntax of the unformatted number is a "numeric string" * as defined in the Decimal Arithmetic Specification, available at * http://speleotrove.com/decimal @@ -398,7 +396,7 @@ unumrf_resultGetFirstDecimalNumber( * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for * preflighting. * @return Number of chars in the data. Does not include a trailing NUL. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 unumrf_resultGetSecondDecimalNumber( @@ -412,7 +410,7 @@ unumrf_resultGetSecondDecimalNumber( * Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale(). * * @param uformatter An object created by unumf_openForSkeletonAndLocale(). - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_close(UNumberRangeFormatter* uformatter); @@ -422,7 +420,7 @@ unumrf_close(UNumberRangeFormatter* uformatter); * Releases the UFormattedNumber created by unumf_openResult(). * * @param uresult An object created by unumf_openResult(). - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI void U_EXPORT2 unumrf_closeResult(UFormattedNumberRange* uresult); @@ -445,7 +443,7 @@ U_NAMESPACE_BEGIN * * @see LocalPointerBase * @see LocalPointer - * @draft ICU 68 + * @stable ICU 68 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeFormatter, unumrf_close); @@ -462,14 +460,12 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberRangeFormatterPointer, UNumberRangeForma * * @see LocalPointerBase * @see LocalPointer - * @draft ICU 68 + * @stable ICU 68 */ U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberRangePointer, UFormattedNumberRange, unumrf_closeResult); U_NAMESPACE_END #endif // U_SHOW_CPLUSPLUS_API -#endif // U_HIDE_DRAFT_API - #endif /* #if !UCONFIG_NO_FORMATTING */ #endif //__UNUMBERRANGEFORMATTER_H__ diff --git a/deps/icu-small/source/i18n/unicode/unumsys.h b/deps/icu-small/source/i18n/unicode/unumsys.h index c767cf3d79a09c..fe713ea77a6c6d 100644 --- a/deps/icu-small/source/i18n/unicode/unumsys.h +++ b/deps/icu-small/source/i18n/unicode/unumsys.h @@ -24,7 +24,7 @@ * \file * \brief C API: UNumberingSystem, information about numbering systems * - * Defines numbering systems. A numbering system describes the scheme by which + * Defines numbering systems. A numbering system describes the scheme by which * numbers are to be presented to the end user. In its simplest form, a numbering * system describes the set of digit characters that are to be used to display * numbers, such as Western digits, Thai digits, Arabic-Indic digits, etc., in a diff --git a/deps/icu-small/source/i18n/unicode/upluralrules.h b/deps/icu-small/source/i18n/unicode/upluralrules.h index 71a45ddf85b5cd..983651b1cac069 100644 --- a/deps/icu-small/source/i18n/unicode/upluralrules.h +++ b/deps/icu-small/source/i18n/unicode/upluralrules.h @@ -39,8 +39,9 @@ struct UFormattedNumberRange; * returns the keyword for the first condition that matches the number. * If none match, the default rule(other) is returned. * - * For more information, see the LDML spec, C.11 Language Plural Rules: - * http://www.unicode.org/reports/tr35/#Language_Plural_Rules + * For more information, see the + * LDML spec, Part 3.5 Language Plural Rules: + * https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules * * Keywords: ICU locale data has 6 predefined values - * 'zero', 'one', 'two', 'few', 'many' and 'other'. Callers need to check @@ -48,7 +49,7 @@ struct UFormattedNumberRange; * * These are based on CLDR Language Plural Rules. For these * predefined rules, see the CLDR page at - * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html */ /** @@ -180,7 +181,6 @@ uplrules_selectFormatted(const UPluralRules *uplrules, UChar *keyword, int32_t capacity, UErrorCode *status); -#ifndef U_HIDE_DRAFT_API /** * Given a formatted number range, returns the overall plural form of the * range. For example, "3-5" returns "other" in English. @@ -194,14 +194,13 @@ uplrules_selectFormatted(const UPluralRules *uplrules, * @param capacity The capacity of the keyword buffer. * @param status A pointer to a UErrorCode to receive any errors. * @return The length of the keyword. - * @draft ICU 68 + * @stable ICU 68 */ U_CAPI int32_t U_EXPORT2 uplrules_selectForRange(const UPluralRules *uplrules, const struct UFormattedNumberRange* urange, UChar *keyword, int32_t capacity, UErrorCode *status); -#endif // U_HIDE_DRAFT_API #ifndef U_HIDE_INTERNAL_API /** diff --git a/deps/icu-small/source/i18n/unicode/uregex.h b/deps/icu-small/source/i18n/unicode/uregex.h index 70956882471ab4..e946e632623a54 100644 --- a/deps/icu-small/source/i18n/unicode/uregex.h +++ b/deps/icu-small/source/i18n/unicode/uregex.h @@ -51,9 +51,9 @@ typedef struct URegularExpression URegularExpression; */ typedef enum URegexpFlag{ -#ifndef U_HIDE_DRAFT_API - /** Forces normalization of pattern and strings. - Not implemented yet, just a placeholder, hence draft. +#ifndef U_HIDE_DRAFT_API + /** Forces normalization of pattern and strings. + Not implemented yet, just a placeholder, hence draft. @draft ICU 2.4 */ UREGEX_CANON_EQ = 128, #endif /* U_HIDE_DRAFT_API */ @@ -66,10 +66,10 @@ typedef enum URegexpFlag{ /** If set, '.' matches line terminators, otherwise '.' matching stops at line end. * @stable ICU 2.4 */ UREGEX_DOTALL = 32, - - /** If set, treat the entire pattern as a literal string. - * Metacharacters or escape sequences in the input sequence will be given - * no special meaning. + + /** If set, treat the entire pattern as a literal string. + * Metacharacters or escape sequences in the input sequence will be given + * no special meaning. * * The flag UREGEX_CASE_INSENSITIVE retains its impact * on matching when used in conjunction with this flag. @@ -84,7 +84,7 @@ typedef enum URegexpFlag{ * otherwise, match only at start and end of input string. * @stable ICU 2.4 */ UREGEX_MULTILINE = 8, - + /** Unix-only line endings. * When this mode is enabled, only \\u000a is recognized as a line ending * in the behavior of ., ^, and $. @@ -117,9 +117,9 @@ typedef enum URegexpFlag{ * string form into an internal representation using the specified match mode flags. * The resulting regular expression handle can then be used to perform various * matching operations. + * * - * - * @param pattern The Regular Expression pattern to be compiled. + * @param pattern The Regular Expression pattern to be compiled. * @param patternLength The length of the pattern, or -1 if the pattern is * NUL terminated. * @param flags Flags that alter the default matching behavior for @@ -151,7 +151,7 @@ uregex_open( const UChar *pattern, * UText struct itself remains with the caller. This is to match the behavior of * uregex_open(). * - * @param pattern The Regular Expression pattern to be compiled. + * @param pattern The Regular Expression pattern to be compiled. * @param flags Flags that alter the default matching behavior for * the regular expression, UREGEX_CASE_INSENSITIVE, for * example. For default behavior, set this parameter to zero. @@ -178,8 +178,8 @@ uregex_openUText(UText *pattern, * This function is the same as uregex_open, except that the pattern * is supplied as an 8 bit char * string in the default code page. * - * @param pattern The Regular Expression pattern to be compiled, - * NUL terminated. + * @param pattern The Regular Expression pattern to be compiled, + * NUL terminated. * @param flags Flags that alter the default matching behavior for * the regular expression, UREGEX_CASE_INSENSITIVE, for * example. For default behavior, set this parameter to zero. @@ -210,7 +210,7 @@ uregex_openC( const char *pattern, * @param regexp The regular expression to be closed. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_close(URegularExpression *regexp); #if U_SHOW_CPLUSPLUS_API @@ -250,7 +250,7 @@ U_NAMESPACE_END * @return the cloned copy of the compiled regular expression. * @stable ICU 3.0 */ -U_CAPI URegularExpression * U_EXPORT2 +U_CAPI URegularExpression * U_EXPORT2 uregex_clone(const URegularExpression *regexp, UErrorCode *status); /** @@ -270,7 +270,7 @@ uregex_clone(const URegularExpression *regexp, UErrorCode *status); * will remain valid until the regular expression is closed. * @stable ICU 3.0 */ -U_CAPI const UChar * U_EXPORT2 +U_CAPI const UChar * U_EXPORT2 uregex_pattern(const URegularExpression *regexp, int32_t *patLength, UErrorCode *status); @@ -286,7 +286,7 @@ uregex_pattern(const URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_patternUText(const URegularExpression *regexp, UErrorCode *status); @@ -298,7 +298,7 @@ uregex_patternUText(const URegularExpression *regexp, * @see URegexpFlag * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_flags(const URegularExpression *regexp, UErrorCode *status); @@ -311,7 +311,7 @@ uregex_flags(const URegularExpression *regexp, * Regular expression matching operations work directly on the application's * string data. No copy is made. The subject string data must not be * altered after calling this function until after all regular expression - * operations involving this string data are completed. + * operations involving this string data are completed. *

      * Zero length strings are permitted. In this case, no subsequent match * operation will dereference the text string pointer. @@ -323,7 +323,7 @@ uregex_flags(const URegularExpression *regexp, * @param status Receives errors detected by this function. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setText(URegularExpression *regexp, const UChar *text, int32_t textLength, @@ -338,7 +338,7 @@ uregex_setText(URegularExpression *regexp, * Regular expression matching operations work directly on the application's * string data; only a shallow clone is made. The subject string data must not be * altered after calling this function until after all regular expression - * operations involving this string data are completed. + * operations involving this string data are completed. * * @param regexp The compiled regular expression. * @param text The subject text string. @@ -346,13 +346,13 @@ uregex_setText(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setUText(URegularExpression *regexp, UText *text, UErrorCode *status); /** - * Get the subject text that is currently associated with this + * Get the subject text that is currently associated with this * regular expression object. If the input was supplied using uregex_setText(), * that pointer will be returned. Otherwise, the characters in the input will * be extracted to a buffer and returned. In either case, ownership remains @@ -361,7 +361,7 @@ uregex_setUText(URegularExpression *regexp, * This function will work even if the input was originally specified as a UText. * * @param regexp The compiled regular expression. - * @param textLength The length of the string is returned in this output parameter. + * @param textLength The length of the string is returned in this output parameter. * A NULL pointer may be used here if the * text length is not needed, as would be the case if * the text is known in advance to be a NUL terminated @@ -371,13 +371,13 @@ uregex_setUText(URegularExpression *regexp, * this regular expression. * @stable ICU 3.0 */ -U_CAPI const UChar * U_EXPORT2 +U_CAPI const UChar * U_EXPORT2 uregex_getText(URegularExpression *regexp, int32_t *textLength, UErrorCode *status); /** - * Get the subject text that is currently associated with this + * Get the subject text that is currently associated with this * regular expression object. * * This function will work even if the input was originally specified as a UChar string. @@ -392,7 +392,7 @@ uregex_getText(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_getUText(URegularExpression *regexp, UText *dest, UErrorCode *status); @@ -402,19 +402,19 @@ uregex_getUText(URegularExpression *regexp, * without changing any other aspect of the matching state. * The new and previous text strings must have the same content. * - * This function is intended for use in environments where ICU is operating on + * This function is intended for use in environments where ICU is operating on * strings that may move around in memory. It provides a mechanism for notifying * ICU that the string has been relocated, and providing a new UText to access the * string in its new position. * * Note that the regular expression implementation never copies the underlying text - * of a string being matched, but always operates directly on the original text - * provided by the user. Refreshing simply drops the references to the old text + * of a string being matched, but always operates directly on the original text + * provided by the user. Refreshing simply drops the references to the old text * and replaces them with references to the new. * * Caution: this function is normally used only by very specialized - * system-level code. One example use case is with garbage collection - * that moves the text in memory. + * system-level code. One example use case is with garbage collection + * that moves the text in memory. * * @param regexp The compiled regular expression. * @param text The new (moved) text string. @@ -422,7 +422,7 @@ uregex_getUText(URegularExpression *regexp, * * @stable ICU 4.8 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_refreshUText(URegularExpression *regexp, UText *text, UErrorCode *status); @@ -447,7 +447,7 @@ uregex_refreshUText(URegularExpression *regexp, * @return true if there is a match * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_matches(URegularExpression *regexp, int32_t startIndex, UErrorCode *status); @@ -473,7 +473,7 @@ uregex_matches(URegularExpression *regexp, * @return true if there is a match * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_matches64(URegularExpression *regexp, int64_t startIndex, UErrorCode *status); @@ -486,7 +486,7 @@ uregex_matches64(URegularExpression *regexp, *

      If startIndex is >= 0 any input region that was set for this * URegularExpression is reset before the operation begins. * - *

      If the specified starting index == -1 the match begins at the start of the input + *

      If the specified starting index == -1 the match begins at the start of the input * region, or at the start of the full string if no region has been specified. * This corresponds directly with Matcher.lookingAt() in Java. * @@ -501,7 +501,7 @@ uregex_matches64(URegularExpression *regexp, * @return true if there is a match. * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_lookingAt(URegularExpression *regexp, int32_t startIndex, UErrorCode *status); @@ -515,7 +515,7 @@ uregex_lookingAt(URegularExpression *regexp, *

      If startIndex is >= 0 any input region that was set for this * URegularExpression is reset before the operation begins. * - *

      If the specified starting index == -1 the match begins at the start of the input + *

      If the specified starting index == -1 the match begins at the start of the input * region, or at the start of the full string if no region has been specified. * This corresponds directly with Matcher.lookingAt() in Java. * @@ -530,7 +530,7 @@ uregex_lookingAt(URegularExpression *regexp, * @return true if there is a match. * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_lookingAt64(URegularExpression *regexp, int64_t startIndex, UErrorCode *status); @@ -554,9 +554,9 @@ uregex_lookingAt64(URegularExpression *regexp, * @return true if a match is found. * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_find(URegularExpression *regexp, - int32_t startIndex, + int32_t startIndex, UErrorCode *status); /** @@ -579,15 +579,15 @@ uregex_find(URegularExpression *regexp, * @return true if a match is found. * @stable ICU 4.6 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_find64(URegularExpression *regexp, - int64_t startIndex, + int64_t startIndex, UErrorCode *status); /** - * Find the next pattern match in the input string. Begin searching - * the input at the location following the end of he previous match, - * or at the start of the string (or region) if there is no + * Find the next pattern match in the input string. Begin searching + * the input at the location following the end of he previous match, + * or at the start of the string (or region) if there is no * previous match. If a match is found, uregex_start(), uregex_end(), and * uregex_group() will provide more information regarding the match. * @@ -597,7 +597,7 @@ uregex_find64(URegularExpression *regexp, * @see uregex_reset * @stable ICU 3.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_findNext(URegularExpression *regexp, UErrorCode *status); @@ -608,7 +608,7 @@ uregex_findNext(URegularExpression *regexp, * @return the number of capture groups * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_groupCount(URegularExpression *regexp, UErrorCode *status); @@ -674,7 +674,7 @@ uregex_groupNumberFromCName(URegularExpression *regexp, * or -1 if no applicable match. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_group(URegularExpression *regexp, int32_t groupNum, UChar *dest, @@ -703,7 +703,7 @@ uregex_group(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_groupUText(URegularExpression *regexp, int32_t groupNum, UText *dest, @@ -720,11 +720,11 @@ uregex_groupUText(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param groupNum The capture group number * @param status A reference to a UErrorCode to receive any errors. - * @return the starting (native) position in the input of the text matched + * @return the starting (native) position in the input of the text matched * by the specified group. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_start(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -740,11 +740,11 @@ uregex_start(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param groupNum The capture group number * @param status A reference to a UErrorCode to receive any errors. - * @return the starting (native) position in the input of the text matched + * @return the starting (native) position in the input of the text matched * by the specified group. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_start64(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -762,7 +762,7 @@ uregex_start64(URegularExpression *regexp, * @return the (native) index of the position following the last matched character. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_end(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -781,7 +781,7 @@ uregex_end(URegularExpression *regexp, * @return the (native) index of the position following the last matched character. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_end64(URegularExpression *regexp, int32_t groupNum, UErrorCode *status); @@ -789,7 +789,7 @@ uregex_end64(URegularExpression *regexp, /** * Reset any saved state from the previous match. Has the effect of * causing uregex_findNext to begin at the specified index, and causing - * uregex_start(), uregex_end() and uregex_group() to return an error + * uregex_start(), uregex_end() and uregex_group() to return an error * indicating that there is no match information available. Clears any * match region that may have been set. * @@ -799,7 +799,7 @@ uregex_end64(URegularExpression *regexp, * @param status A reference to a UErrorCode to receive any errors. * @stable ICU 3.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_reset(URegularExpression *regexp, int32_t index, UErrorCode *status); @@ -808,7 +808,7 @@ uregex_reset(URegularExpression *regexp, * 64bit version of uregex_reset. * Reset any saved state from the previous match. Has the effect of * causing uregex_findNext to begin at the specified index, and causing - * uregex_start(), uregex_end() and uregex_group() to return an error + * uregex_start(), uregex_end() and uregex_group() to return an error * indicating that there is no match information available. Clears any * match region that may have been set. * @@ -818,7 +818,7 @@ uregex_reset(URegularExpression *regexp, * @param status A reference to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_reset64(URegularExpression *regexp, int64_t index, UErrorCode *status); @@ -826,7 +826,7 @@ uregex_reset64(URegularExpression *regexp, /** * Sets the limits of the matching region for this URegularExpression. * The region is the part of the input string that will be considered when matching. - * Invoking this method resets any saved state from the previous match, + * Invoking this method resets any saved state from the previous match, * then sets the region to start at the index specified by the start parameter * and end at the index specified by the end parameter. * @@ -853,7 +853,7 @@ uregex_setRegion(URegularExpression *regexp, * 64bit version of uregex_setRegion. * Sets the limits of the matching region for this URegularExpression. * The region is the part of the input string that will be considered when matching. - * Invoking this method resets any saved state from the previous match, + * Invoking this method resets any saved state from the previous match, * then sets the region to start at the index specified by the start parameter * and end at the index specified by the end parameter. * @@ -870,7 +870,7 @@ uregex_setRegion(URegularExpression *regexp, * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setRegion64(URegularExpression *regexp, int64_t regionStart, int64_t regionLimit, @@ -885,12 +885,12 @@ uregex_setRegion64(URegularExpression *regexp, * @param regexp The compiled regular expression. * @param regionStart The (native) index to begin searches at. * @param regionLimit The (native) index to end searches at (exclusive). - * @param startIndex The index in the input text at which the next + * @param startIndex The index in the input text at which the next * match operation should begin. * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_setRegionAndStart(URegularExpression *regexp, int64_t regionStart, int64_t regionLimit, @@ -920,7 +920,7 @@ uregex_regionStart(const URegularExpression *regexp, * @return The starting (native) index of this matcher's region. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_regionStart64(const URegularExpression *regexp, UErrorCode *status); @@ -949,7 +949,7 @@ uregex_regionEnd(const URegularExpression *regexp, * @return The ending point (native) of this matcher's region. * @stable ICU 4.6 */ -U_CAPI int64_t U_EXPORT2 +U_CAPI int64_t U_EXPORT2 uregex_regionEnd64(const URegularExpression *regexp, UErrorCode *status); @@ -987,8 +987,8 @@ uregex_hasTransparentBounds(const URegularExpression *regexp, * @param status A pointer to a UErrorCode to receive any errors. * @stable ICU 4.0 **/ -U_CAPI void U_EXPORT2 -uregex_useTransparentBounds(URegularExpression *regexp, +U_CAPI void U_EXPORT2 +uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status); @@ -1050,7 +1050,7 @@ uregex_hitEnd(const URegularExpression *regexp, * @return true if more input could cause the most recent match to no longer match. * @stable ICU 4.0 */ -U_CAPI UBool U_EXPORT2 +U_CAPI UBool U_EXPORT2 uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status); @@ -1063,7 +1063,7 @@ uregex_requireEnd(const URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace-all operation. * - * This method scans the input string looking for matches of the pattern. + * This method scans the input string looking for matches of the pattern. * Input that is not part of any match is copied unchanged to the * destination buffer. Matched regions are replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1082,7 +1082,7 @@ uregex_requireEnd(const URegularExpression *regexp, * is still the full length of the untruncated string. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_replaceAll(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1095,7 +1095,7 @@ uregex_replaceAll(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace-all operation. * - * This method scans the input string looking for matches of the pattern. + * This method scans the input string looking for matches of the pattern. * Input that is not part of any match is copied unchanged to the * destination buffer. Matched regions are replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1111,7 +1111,7 @@ uregex_replaceAll(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_replaceAllUText(URegularExpression *regexp, UText *replacement, UText *dest, @@ -1122,7 +1122,7 @@ uregex_replaceAllUText(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace operation. * - * This method scans the input string looking for a match of the pattern. + * This method scans the input string looking for a match of the pattern. * All input that is not part of the match is copied unchanged to the * destination buffer. The matched region is replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1141,7 +1141,7 @@ uregex_replaceAllUText(URegularExpression *regexp, * is still the full length of the untruncated string. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_replaceFirst(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1154,7 +1154,7 @@ uregex_replaceFirst(URegularExpression *regexp, * with the given replacement string. This is a convenience function that * provides a complete find-and-replace operation. * - * This method scans the input string looking for a match of the pattern. + * This method scans the input string looking for a match of the pattern. * All input that is not part of the match is copied unchanged to the * destination buffer. The matched region is replaced in the output * buffer by the replacement string. The replacement string may contain @@ -1170,7 +1170,7 @@ uregex_replaceFirst(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_replaceFirstUText(URegularExpression *regexp, UText *replacement, UText *dest, @@ -1199,7 +1199,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, *

      For simple, prepackaged, non-incremental find-and-replace * operations, see replaceFirst() or replaceAll().

      * - * @param regexp The regular expression object. + * @param regexp The regular expression object. * @param replacementText The string that will replace the matched portion of the * input string as it is copied to the destination buffer. * The replacement text may contain references ($1, for @@ -1214,7 +1214,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, * @param destCapacity The size of the output buffer, On return, this * parameter will be updated to reflect the space remaining * unused in the output buffer. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * @return The length of the result string. In the event that * destCapacity is inadequate, the full length of the * untruncated output string is returned. @@ -1222,7 +1222,7 @@ uregex_replaceFirstUText(URegularExpression *regexp, * @stable ICU 3.0 * */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_appendReplacement(URegularExpression *regexp, const UChar *replacementText, int32_t replacementLength, @@ -1242,17 +1242,17 @@ uregex_appendReplacement(URegularExpression *regexp, *

      For simple, prepackaged, non-incremental find-and-replace * operations, see replaceFirst() or replaceAll().

      * - * @param regexp The regular expression object. + * @param regexp The regular expression object. * @param replacementText The string that will replace the matched portion of the * input string as it is copied to the destination buffer. * The replacement text may contain references ($1, for * example) to capture groups from the match. * @param dest A mutable UText that will receive the result. Must not be NULL. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * * @stable ICU 4.6 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 uregex_appendReplacementUText(URegularExpression *regexp, UText *replacementText, UText *dest, @@ -1261,11 +1261,11 @@ uregex_appendReplacementUText(URegularExpression *regexp, /** * As the final step in a find-and-replace operation, append the remainder * of the input string, starting at the position following the last match, - * to the destination string. uregex_appendTail() is intended + * to the destination string. uregex_appendTail() is intended * to be invoked after one or more invocations of the * uregex_appendReplacement() function. * - * @param regexp The regular expression object. This is needed to + * @param regexp The regular expression object. This is needed to * obtain the input string and with the position * of the last match within it. * @param destBuf The buffer in which the results of the @@ -1275,14 +1275,14 @@ uregex_appendReplacementUText(URegularExpression *regexp, * @param destCapacity The size of the output buffer, On return, this * value will be updated to reflect the space remaining * unused in the output buffer. - * @param status A reference to a UErrorCode to receive any errors. + * @param status A reference to a UErrorCode to receive any errors. * @return The length of the result string. In the event that * destCapacity is inadequate, the full length of the * untruncated output string is returned. * * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_appendTail(URegularExpression *regexp, UChar **destBuf, int32_t *destCapacity, @@ -1291,11 +1291,11 @@ uregex_appendTail(URegularExpression *regexp, /** * As the final step in a find-and-replace operation, append the remainder * of the input string, starting at the position following the last match, - * to the destination string. uregex_appendTailUText() is intended + * to the destination string. uregex_appendTailUText() is intended * to be invoked after one or more invocations of the * uregex_appendReplacementUText() function. * - * @param regexp The regular expression object. This is needed to + * @param regexp The regular expression object. This is needed to * obtain the input string and with the position * of the last match within it. * @param dest A mutable UText that will receive the result. Must not be NULL. @@ -1306,7 +1306,7 @@ uregex_appendTail(URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI UText * U_EXPORT2 +U_CAPI UText * U_EXPORT2 uregex_appendTailUText(URegularExpression *regexp, UText *dest, UErrorCode *status); @@ -1323,9 +1323,9 @@ uregex_appendTailUText(URegularExpression *regexp, * * If the delimiter pattern includes capture groups, the captured text will * also appear in the destination array of output strings, interspersed - * with the fields. This is similar to Perl, but differs from Java, + * with the fields. This is similar to Perl, but differs from Java, * which ignores the presence of capture groups in the pattern. - * + * * Trailing empty fields will always be returned, assuming sufficient * destination capacity. This differs from the default behavior for Java * and Perl where trailing empty fields are not returned. @@ -1333,7 +1333,7 @@ uregex_appendTailUText(URegularExpression *regexp, * The number of strings produced by the split operation is returned. * This count includes the strings from capture groups in the delimiter pattern. * This behavior differs from Java, which ignores capture groups. - * + * * @param regexp The compiled regular expression. * @param destBuf A (UChar *) buffer to receive the fields that * are extracted from the input string. These @@ -1343,7 +1343,7 @@ uregex_appendTailUText(URegularExpression *regexp, * set to NULL. * @param destCapacity The capacity of the destBuf. * @param requiredCapacity The actual capacity required of the destBuf. - * If destCapacity is too small, requiredCapacity will return + * If destCapacity is too small, requiredCapacity will return * the total capacity required to hold all of the output, and * a U_BUFFER_OVERFLOW_ERROR will be returned. * @param destFields An array to be filled with the position of each @@ -1362,7 +1362,7 @@ uregex_appendTailUText(URegularExpression *regexp, * @return The number of fields into which the input string was split. * @stable ICU 3.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_split( URegularExpression *regexp, UChar *destBuf, int32_t destCapacity, @@ -1397,7 +1397,7 @@ uregex_split( URegularExpression *regexp, * * @stable ICU 4.6 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 uregex_splitUText(URegularExpression *regexp, UText *destFields[], int32_t destFieldsCapacity, @@ -1492,7 +1492,7 @@ uregex_getStackLimit(const URegularExpression *regexp, * @param context context pointer. The callback function will be invoked * with the context specified at the time that * uregex_setMatchCallback() is called. - * @param steps the accumulated processing time, in match steps, + * @param steps the accumulated processing time, in match steps, * for this matching operation. * @return true to continue the matching operation. * false to terminate the matching operation. @@ -1529,7 +1529,7 @@ uregex_setMatchCallback(URegularExpression *regexp, * Get the callback function for this URegularExpression. * * @param regexp The compiled regular expression. - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setMatchCallback() was called. @@ -1544,7 +1544,7 @@ uregex_getMatchCallback(const URegularExpression *regexp, /** * Function pointer for a regular expression find callback function. - * + * * When set, a callback function will be called during a find operation * and for operations that depend on find, such as findNext, split and some replace * operations like replaceFirst. @@ -1556,7 +1556,7 @@ uregex_getMatchCallback(const URegularExpression *regexp, * When invoked, this callback will specify the index at which a match operation is about * to be attempted, giving the application the opportunity to terminate a long-running * find operation. - * + * * If the call back function returns false, the find operation will be terminated early. * * Note: the callback function must not call other functions on this @@ -1600,7 +1600,7 @@ uregex_setFindProgressCallback(URegularExpression *regexp, * Get the find progress callback function for this URegularExpression. * * @param regexp The compiled regular expression. - * @param callback Out parameter, receives a pointer to the user-supplied + * @param callback Out parameter, receives a pointer to the user-supplied * callback function. * @param context Out parameter, receives the user context pointer that * was set when uregex_setFindProgressCallback() was called. diff --git a/deps/icu-small/source/i18n/unicode/uregion.h b/deps/icu-small/source/i18n/unicode/uregion.h index 4e4e6aac9f8fcc..25472ae6405b2c 100644 --- a/deps/icu-small/source/i18n/unicode/uregion.h +++ b/deps/icu-small/source/i18n/unicode/uregion.h @@ -17,7 +17,7 @@ * \file * \brief C API: URegion (territory containment and mapping) * - * URegion objects represent data associated with a particular Unicode Region Code, also known as a + * URegion objects represent data associated with a particular Unicode Region Code, also known as a * Unicode Region Subtag, which is defined based upon the BCP 47 standard. These include: * * Two-letter codes defined by ISO 3166-1, with special LDML treatment of certain private-use or * reserved codes; @@ -25,7 +25,7 @@ * URegion objects can also provide mappings to and from additional codes. There are different types * of regions that are important to distinguish: *

      - * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or + * Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or * selected economic and other grouping" as defined in UN M.49. These are typically 3-digit codes, * but contain some 2-letter codes for LDML extensions, such as "QO" for Outlying Oceania. * Macroregions are represented in ICU by one of three region types: WORLD (code 001), @@ -33,8 +33,8 @@ * by a continent ). *

      * TERRITORY - A Region that is not a Macroregion. These are typically codes for countries, but also - * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code - * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate + * include areas that are not separate countries, such as the code "AQ" for Antarctica or the code + * "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate * codes. The codes are typically 2-letter codes aligned with ISO 3166, but BCP47 allows for the use * of 3-digit codes in the future. *

      @@ -45,7 +45,7 @@ * usually due to a country splitting into multiple territories or changing its name. *

      * GROUPING - A widely understood grouping of territories that has a well defined membership such - * that a region code has been assigned for it. Some of these are UN M.49 codes that don't fall into + * that a region code has been assigned for it. Some of these are UN M.49 codes that don't fall into * the world/continent/sub-continent hierarchy, while others are just well-known groupings that have * their own region code. Region "EU" (European Union) is one such region code that is a grouping. * Groupings will never be returned by the uregion_getContainingRegion, since a different type of region @@ -59,51 +59,51 @@ * URegionType is an enumeration defining the different types of regions. Current possible * values are URGN_WORLD, URGN_CONTINENT, URGN_SUBCONTINENT, URGN_TERRITORY, URGN_GROUPING, * URGN_DEPRECATED, and URGN_UNKNOWN. - * - * @stable ICU 51 + * + * @stable ICU 51 */ typedef enum URegionType { /** * Type representing the unknown region. - * @stable ICU 51 + * @stable ICU 51 */ URGN_UNKNOWN, /** * Type representing a territory. - * @stable ICU 51 + * @stable ICU 51 */ URGN_TERRITORY, /** * Type representing the whole world. - * @stable ICU 51 + * @stable ICU 51 */ URGN_WORLD, /** * Type representing a continent. - * @stable ICU 51 + * @stable ICU 51 */ URGN_CONTINENT, /** * Type representing a sub-continent. - * @stable ICU 51 + * @stable ICU 51 */ URGN_SUBCONTINENT, /** * Type representing a grouping of territories that is not to be used in * the normal WORLD/CONTINENT/SUBCONTINENT/TERRITORY containment tree. - * @stable ICU 51 + * @stable ICU 51 */ URGN_GROUPING, /** * Type representing a region whose code has been deprecated, usually * due to a country splitting into multiple territories or changing its name. - * @stable ICU 51 + * @stable ICU 51 */ URGN_DEPRECATED, diff --git a/deps/icu-small/source/i18n/unicode/ureldatefmt.h b/deps/icu-small/source/i18n/unicode/ureldatefmt.h index b66139461b53ad..3c448900437e45 100644 --- a/deps/icu-small/source/i18n/unicode/ureldatefmt.h +++ b/deps/icu-small/source/i18n/unicode/ureldatefmt.h @@ -81,7 +81,7 @@ typedef enum UDateRelativeDateTimeFormatterStyle { typedef enum URelativeDateTimeUnit { /** * Specifies that relative unit is year, e.g. "last year", - * "in 5 years". + * "in 5 years". * @stable ICU 57 */ UDAT_REL_UNIT_YEAR, @@ -153,7 +153,7 @@ typedef enum URelativeDateTimeUnit { UDAT_REL_UNIT_WEDNESDAY, /** * Specifies that relative unit is Thursday, e.g. "last Thursday", - * "this Thursday", "next Thursday", "in 5 Thursdays". + * "this Thursday", "next Thursday", "in 5 Thursdays". * @stable ICU 57 */ UDAT_REL_UNIT_THURSDAY, diff --git a/deps/icu-small/source/i18n/unicode/usearch.h b/deps/icu-small/source/i18n/unicode/usearch.h index 26c22b7353953d..fd0b84f672353d 100644 --- a/deps/icu-small/source/i18n/unicode/usearch.h +++ b/deps/icu-small/source/i18n/unicode/usearch.h @@ -27,62 +27,63 @@ * \file * \brief C API: StringSearch * - * C APIs for an engine that provides language-sensitive text searching based + * C APIs for an engine that provides language-sensitive text searching based * on the comparison rules defined in a UCollator data struct, - * see ucol.h. This ensures that language eccentricity can be - * handled, e.g. for the German collator, characters ß and SS will be matched - * if case is chosen to be ignored. - * See the + * see ucol.h. This ensures that language eccentricity can be + * handled, e.g. for the German collator, characters ß and SS will be matched + * if case is chosen to be ignored. + * See the * "ICU Collation Design Document" for more information. - *

      - * The implementation may use a linear search or a modified form of the Boyer-Moore - * search; for more information on the latter see + *

      + * As of ICU4C 4.0 / ICU4J 53, the implementation uses a linear search. In previous versions, + * a modified form of the Boyer-Moore searching algorithm was used. For more information + * on the modified Boyer-Moore algorithm see * - * "Efficient Text Searching in Java", published in Java Report + * "Efficient Text Searching in Java", published in Java Report * in February, 1999. *

      * There are 2 match options for selection:
      - * Let S' be the sub-string of a text string S between the offsets start and + * Let S' be the sub-string of a text string S between the offsets start and * end . *
      - * A pattern string P matches a text string S at the offsets + * A pattern string P matches a text string S at the offsets * if - *

      - * option 1. Some canonical equivalent of P matches some canonical equivalent
      + * 
       
      + * option 1. Some canonical equivalent of P matches some canonical equivalent 
        *           of S'
      - * option 2. P matches S' and if P starts or ends with a combining mark,
      - *           there exists no non-ignorable combining mark before or after S'
      - *           in S respectively.
      + * option 2. P matches S' and if P starts or ends with a combining mark, 
      + *           there exists no non-ignorable combining mark before or after S' 
      + *           in S respectively. 
        * 
      * Option 2. will be the default. *

      - * This search has APIs similar to that of other text iteration mechanisms - * such as the break iterators in ubrk.h. Using these - * APIs, it is easy to scan through text looking for all occurrences of - * a given pattern. This search iterator allows changing of direction by - * calling a reset followed by a next or previous. - * Though a direction change can occur without calling reset first, + * This search has APIs similar to that of other text iteration mechanisms + * such as the break iterators in ubrk.h. Using these + * APIs, it is easy to scan through text looking for all occurrences of + * a given pattern. This search iterator allows changing of direction by + * calling a reset followed by a next or previous. + * Though a direction change can occur without calling reset first, * this operation comes with some speed penalty. - * Generally, match results in the forward direction will match the result + * Generally, match results in the forward direction will match the result * matches in the backwards direction in the reverse order *

      - * usearch.h provides APIs to specify the starting position + * usearch.h provides APIs to specify the starting position * within the text string to be searched, e.g. usearch_setOffset, - * usearch_preceding and usearch_following. Since the - * starting position will be set as it is specified, please take note that - * there are some dangerous positions which the search may render incorrect + * usearch_preceding and usearch_following. Since the + * starting position will be set as it is specified, please take note that + * there are some dangerous positions which the search may render incorrect * results: *

        *
      • The midst of a substring that requires normalization. *
      • If the following match is to be found, the position should not be the - * second character which requires to be swapped with the preceding - * character. Vice versa, if the preceding match is to be found, - * position to search from should not be the first character which + * second character which requires to be swapped with the preceding + * character. Vice versa, if the preceding match is to be found, + * position to search from should not be the first character which * requires to be swapped with the next character. E.g certain Thai and * Lao characters require swapping. - *
      • If a following pattern match is to be found, any position within a - * contracting sequence except the first will fail. Vice versa if a - * preceding pattern match is to be found, a invalid starting point + *
      • If a following pattern match is to be found, any position within a + * contracting sequence except the first will fail. Vice versa if a + * preceding pattern match is to be found, a invalid starting point * would be any character within a contracting sequence except the last. *
      *

      @@ -91,9 +92,9 @@ * boundaries given by the breakiterator. For instance the pattern "e" will * not be found in the string "\u00e9" if a character break iterator is used. *

      - * Options are provided to handle overlapping matches. - * E.g. In English, overlapping matches produces the result 0 and 2 - * for the pattern "abab" in the text "ababab", where else mutually + * Options are provided to handle overlapping matches. + * E.g. In English, overlapping matches produces the result 0 and 2 + * for the pattern "abab" in the text "ababab", where else mutually * exclusive matches only produce the result of 0. *

      * Options are also provided to implement "asymmetric search" as described in @@ -101,19 +102,19 @@ * UTS #10 Unicode Collation Algorithm, specifically the USearchAttribute * USEARCH_ELEMENT_COMPARISON and its values. *

      - * Though collator attributes will be taken into consideration while - * performing matches, there are no APIs here for setting and getting the + * Though collator attributes will be taken into consideration while + * performing matches, there are no APIs here for setting and getting the * attributes. These attributes can be set by getting the collator * from usearch_getCollator and using the APIs in ucol.h. - * Lastly to update String Search to the new collator attributes, + * Lastly to update String Search to the new collator attributes, * usearch_reset() has to be called. - *

      + *

      * Restriction:
      * Currently there are no composite characters that consists of a - * character with combining class > 0 before a character with combining - * class == 0. However, if such a character exists in the future, the + * character with combining class > 0 before a character with combining + * class == 0. However, if such a character exists in the future, the * search mechanism does not guarantee the results for option 1. - * + * *

      * Example of use:
      *

      
      @@ -125,14 +126,14 @@
        * u_uastrcpy(target, tgtstr);
        * u_uastrcpy(pattern, patstr);
        *
      - * UStringSearch *search = usearch_open(pattern, -1, target, -1, "en_US",
      + * UStringSearch *search = usearch_open(pattern, -1, target, -1, "en_US", 
        *                                  NULL, &status);
        * if (U_SUCCESS(status)) {
      - *     for (int pos = usearch_first(search, &status);
      - *          pos != USEARCH_DONE;
      + *     for (int pos = usearch_first(search, &status); 
      + *          pos != USEARCH_DONE; 
        *          pos = usearch_next(search, &status))
        *     {
      - *         printf("Found match at %d pos, length is %d\n", pos,
      + *         printf("Found match at %d pos, length is %d\n", pos, 
        *                                        usearch_getMatchedLength(search));
        *     }
        * }
      @@ -143,7 +144,7 @@
        */
       
       /**
      -* DONE is returned by previous() and next() after all valid matches have
      +* DONE is returned by previous() and next() after all valid matches have 
       * been returned, and by first() and last() if there are no matches at all.
       * @stable ICU 2.4
       */
      @@ -170,7 +171,7 @@ typedef enum {
            */
           USEARCH_OVERLAP = 0,
       #ifndef U_HIDE_DEPRECATED_API
      -    /**
      +    /** 
            * Option for canonical matches; option 1 in header documentation.
            * The default value will be USEARCH_OFF.
            * Note: Setting this option to USEARCH_ON currently has no effect on
      @@ -178,7 +179,7 @@ typedef enum {
            * canonical match behavior, you must set UCOL_NORMALIZATION_MODE
            * appropriately (to UCOL_OFF or UCOL_ON) in the UCollator used by
            * the UStringSearch object.
      -     * @see usearch_openFromCollator
      +     * @see usearch_openFromCollator 
            * @see usearch_getCollator
            * @see usearch_setCollator
            * @see ucol_getAttribute
      @@ -186,7 +187,7 @@ typedef enum {
            */
           USEARCH_CANONICAL_MATCH = 1,
       #endif  /* U_HIDE_DEPRECATED_API */
      -    /**
      +    /** 
            * Option to control how collation elements are compared.
            * The default value will be USEARCH_STANDARD_ELEMENT_COMPARISON.
            * @stable ICU 4.4
      @@ -206,7 +207,7 @@ typedef enum {
       * @stable ICU 2.4
       */
       typedef enum {
      -    /**
      +    /** 
            * Default value for any USearchAttribute
            * @stable ICU 2.4
            */
      @@ -215,20 +216,20 @@ typedef enum {
            * Value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH
            * @stable ICU 2.4
            */
      -    USEARCH_OFF,
      +    USEARCH_OFF, 
           /**
            * Value for USEARCH_OVERLAP and USEARCH_CANONICAL_MATCH
            * @stable ICU 2.4
            */
           USEARCH_ON,
      -    /**
      +    /** 
            * Value (default) for USEARCH_ELEMENT_COMPARISON;
            * standard collation element comparison at the specified collator
            * strength.
            * @stable ICU 4.4
            */
           USEARCH_STANDARD_ELEMENT_COMPARISON,
      -    /**
      +    /** 
            * Value for USEARCH_ELEMENT_COMPARISON;
            * collation element comparison is modified to effectively provide
            * behavior between the specified strength and strength - 1. Collation
      @@ -247,7 +248,7 @@ typedef enum {
            * @stable ICU 4.4
            */
           USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD,
      -    /**
      +    /** 
            * Value for USEARCH_ELEMENT_COMPARISON.
            * collation element comparison is modified to effectively provide
            * behavior between the specified strength and strength - 1. Collation
      @@ -293,14 +294,14 @@ typedef enum {
       * @param textlength length of the text string, -1 for null-termination
       * @param locale name of locale for the rules to be used
       * @param breakiter A BreakIterator that will be used to restrict the points
      -*                  at which matches are detected. If a match is found, but
      -*                  the match's start or end index is not a boundary as
      -*                  determined by the BreakIterator, the match will
      -*                  be rejected and another will be searched for.
      -*                  If this parameter is NULL, no break detection is
      +*                  at which matches are detected. If a match is found, but 
      +*                  the match's start or end index is not a boundary as 
      +*                  determined by the BreakIterator, the match will 
      +*                  be rejected and another will be searched for. 
      +*                  If this parameter is NULL, no break detection is 
       *                  attempted.
       * @param status for errors if it occurs. If pattern or text is NULL, or if
      -*               patternlength or textlength is 0 then an
      +*               patternlength or textlength is 0 then an 
       *               U_ILLEGAL_ARGUMENT_ERROR is returned.
       * @return search iterator data structure, or NULL if there is an error.
       * @stable ICU 2.4
      @@ -381,16 +382,16 @@ U_NAMESPACE_END
       /* get and set methods -------------------------------------------------- */
       
       /**
      -* Sets the current position in the text string which the next search will
      -* start from. Clears previous states.
      -* This method takes the argument index and sets the position in the text
      -* string accordingly without checking if the index is pointing to a
      -* valid starting point to begin searching.
      +* Sets the current position in the text string which the next search will 
      +* start from. Clears previous states. 
      +* This method takes the argument index and sets the position in the text 
      +* string accordingly without checking if the index is pointing to a 
      +* valid starting point to begin searching. 
       * Search positions that may render incorrect results are highlighted in the
       * header comments
       * @param strsrch search iterator data struct
       * @param position position to start next search from. If position is less
      -*          than or greater than the text range for searching,
      +*          than or greater than the text range for searching, 
       *          an U_INDEX_OUTOFBOUNDS_ERROR will be returned
       * @param status error status if any.
       * @stable ICU 2.4
      @@ -401,14 +402,14 @@ U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch,
       
       /**
       * Return the current index in the string text being searched.
      -* If the iteration has gone past the end of the text (or past the beginning
      +* If the iteration has gone past the end of the text (or past the beginning 
       * for a backwards search), USEARCH_DONE is returned.
       * @param strsrch search iterator data struct
       * @see #USEARCH_DONE
       * @stable ICU 2.4
       */
       U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch);
      -
      +    
       /**
       * Sets the text searching attributes located in the enum USearchAttribute
       * with values from the enum USearchAttributeValue.
      @@ -425,7 +426,7 @@ U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch         *strsrch,
                                                  USearchAttributeValue  value,
                                                  UErrorCode            *status);
       
      -/**
      +/**    
       * Gets the text searching attributes.
       * @param strsrch search iterator data struct
       * @param attribute text attribute to be retrieve
      @@ -439,15 +440,15 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
       
       /**
       * Returns the index to the match in the text string that was searched.
      -* This call returns a valid result only after a successful call to
      -* usearch_first, usearch_next, usearch_previous,
      +* This call returns a valid result only after a successful call to 
      +* usearch_first, usearch_next, usearch_previous, 
       * or usearch_last.
      -* Just after construction, or after a searching method returns
      +* Just after construction, or after a searching method returns 
       * USEARCH_DONE, this method will return USEARCH_DONE.
       * 

      * Use usearch_getMatchedLength to get the matched string length. * @param strsrch search iterator data struct -* @return index to a substring within the text string that is being +* @return index to a substring within the text string that is being * searched. * @see #usearch_first * @see #usearch_next @@ -458,16 +459,16 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute( */ U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart( const UStringSearch *strsrch); - + /** -* Returns the length of text in the string which matches the search pattern. -* This call returns a valid result only after a successful call to -* usearch_first, usearch_next, usearch_previous, +* Returns the length of text in the string which matches the search pattern. +* This call returns a valid result only after a successful call to +* usearch_first, usearch_next, usearch_previous, * or usearch_last. -* Just after construction, or after a searching method returns +* Just after construction, or after a searching method returns * USEARCH_DONE, this method will return 0. * @param strsrch search iterator data struct -* @return The length of the match in the string text, or 0 if there is no +* @return The length of the match in the string text, or 0 if there is no * match currently. * @see #usearch_first * @see #usearch_next @@ -480,17 +481,17 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength( const UStringSearch *strsrch); /** -* Returns the text that was matched by the most recent call to -* usearch_first, usearch_next, usearch_previous, +* Returns the text that was matched by the most recent call to +* usearch_first, usearch_next, usearch_previous, * or usearch_last. -* If the iterator is not pointing at a valid match (e.g. just after +* If the iterator is not pointing at a valid match (e.g. just after * construction or after USEARCH_DONE has been returned, returns * an empty string. If result is not large enough to store the matched text, -* result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR -* will be returned in status. result will be null-terminated whenever -* possible. If the buffer fits the matched text exactly, a null-termination +* result will be filled with the partial text and an U_BUFFER_OVERFLOW_ERROR +* will be returned in status. result will be null-terminated whenever +* possible. If the buffer fits the matched text exactly, a null-termination * is not possible, then a U_STRING_NOT_TERMINATED_ERROR set in status. -* Pre-flighting can be either done with length = 0 or the API +* Pre-flighting can be either done with length = 0 or the API * usearch_getMatchedLength. * @param strsrch search iterator data struct * @param result UChar buffer to store the matched string @@ -504,37 +505,37 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedLength( * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, - UChar *result, - int32_t resultCapacity, +U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, + UChar *result, + int32_t resultCapacity, UErrorCode *status); #if !UCONFIG_NO_BREAK_ITERATION /** -* Set the BreakIterator that will be used to restrict the points at which +* Set the BreakIterator that will be used to restrict the points at which * matches are detected. * @param strsrch search iterator data struct * @param breakiter A BreakIterator that will be used to restrict the points -* at which matches are detected. If a match is found, but -* the match's start or end index is not a boundary as -* determined by the BreakIterator, the match will -* be rejected and another will be searched for. -* If this parameter is NULL, no break detection is +* at which matches are detected. If a match is found, but +* the match's start or end index is not a boundary as +* determined by the BreakIterator, the match will +* be rejected and another will be searched for. +* If this parameter is NULL, no break detection is * attempted. * @param status for errors if it occurs * @see #usearch_getBreakIterator * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, UBreakIterator *breakiter, UErrorCode *status); /** -* Returns the BreakIterator that is used to restrict the points at which -* matches are detected. This will be the same object that was passed to the -* constructor or to usearch_setBreakIterator. Note that -* NULL +* Returns the BreakIterator that is used to restrict the points at which +* matches are detected. This will be the same object that was passed to the +* constructor or to usearch_setBreakIterator. Note that +* NULL * is a legal value; it means that break detection should not be attempted. * @param strsrch search iterator data struct * @return break iterator used @@ -543,12 +544,12 @@ U_CAPI void U_EXPORT2 usearch_setBreakIterator(UStringSearch *strsrch, */ U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator( const UStringSearch *strsrch); - + #endif /** -* Set the string text to be searched. Text iteration will hence begin at the -* start of the text string. This method is useful if you want to re-use an +* Set the string text to be searched. Text iteration will hence begin at the +* start of the text string. This method is useful if you want to re-use an * iterator to search for the same pattern within a different body of text. * * The UStringSearch retains a pointer to the text string. The caller must not @@ -557,13 +558,13 @@ U_CAPI const UBreakIterator * U_EXPORT2 usearch_getBreakIterator( * @param strsrch search iterator data struct * @param text new string to look for match * @param textlength length of the new string, -1 for null-termination -* @param status for errors if it occurs. If text is NULL, or textlength is 0 +* @param status for errors if it occurs. If text is NULL, or textlength is 0 * then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change * done to strsrch. * @see #usearch_getText * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, const UChar *text, int32_t textlength, UErrorCode *status); @@ -572,17 +573,17 @@ U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, * Return the string text to be searched. * @param strsrch search iterator data struct * @param length returned string text length -* @return string text +* @return string text * @see #usearch_setText * @stable ICU 2.4 */ -U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, +U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, int32_t *length); /** -* Gets the collator used for the language rules. +* Gets the collator used for the language rules. *

      -* Deleting the returned UCollator before calling +* Deleting the returned UCollator before calling * usearch_close would cause the string search to fail. * usearch_close will delete the collator if this search owns it. * @param strsrch search iterator data struct @@ -593,22 +594,22 @@ U_CAPI UCollator * U_EXPORT2 usearch_getCollator( const UStringSearch *strsrch); /** -* Sets the collator used for the language rules. User retains the ownership +* Sets the collator used for the language rules. User retains the ownership * of this collator, thus the responsibility of deletion lies with the user. -* This method causes internal data such as Boyer-Moore shift tables to -* be recalculated, but the iterator's position is unchanged. +* This method causes internal data such as the pattern collation elements +* and shift tables to be recalculated, but the iterator's position is unchanged. * @param strsrch search iterator data struct * @param collator to be used * @param status for errors if it occurs * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, const UCollator *collator, UErrorCode *status); /** * Sets the pattern used for matching. -* Internal data like the Boyer Moore table will be recalculated, but the +* Internal data like the pattern collation elements will be recalculated, but the * iterator's position is unchanged. * * The UStringSearch retains a pointer to the pattern string. The caller must not @@ -617,12 +618,12 @@ U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, * @param strsrch search iterator data struct * @param pattern string * @param patternlength pattern length, -1 for null-terminated string -* @param status for errors if it occurs. If text is NULL, or textlength is 0 +* @param status for errors if it occurs. If text is NULL, or textlength is 0 * then an U_ILLEGAL_ARGUMENT_ERROR is returned with no change * done to strsrch. * @stable ICU 2.4 */ -U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, +U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, const UChar *pattern, int32_t patternlength, UErrorCode *status); @@ -630,46 +631,46 @@ U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, /** * Gets the search pattern * @param strsrch search iterator data struct -* @param length return length of the pattern, -1 indicates that the pattern +* @param length return length of the pattern, -1 indicates that the pattern * is null-terminated * @return pattern string * @stable ICU 2.4 */ U_CAPI const UChar * U_EXPORT2 usearch_getPattern( - const UStringSearch *strsrch, + const UStringSearch *strsrch, int32_t *length); /* methods ------------------------------------------------------------- */ /** -* Returns the first index at which the string text matches the search -* pattern. -* The iterator is adjusted so that its current index (as returned by +* Returns the first index at which the string text matches the search +* pattern. +* The iterator is adjusted so that its current index (as returned by * usearch_getOffset) is the match position if one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The character index of the first match, or +* @return The character index of the first match, or * USEARCH_DONE if there are no matches. * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, UErrorCode *status); /** * Returns the first index equal or greater than position at which * the string text -* matches the search pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* matches the search pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE *

      * Search positions that may render incorrect results are highlighted in the -* header comments. If position is less than or greater than the text range +* header comments. If position is less than or greater than the text range * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned * @param strsrch search iterator data struct * @param position to start the search at @@ -680,38 +681,38 @@ U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, - int32_t position, +U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, + int32_t position, UErrorCode *status); - + /** -* Returns the last index in the target text at which it matches the search -* pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* Returns the last index in the target text at which it matches the search +* pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE. * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The index of the first match, or USEARCH_DONE if there +* @return The index of the first match, or USEARCH_DONE if there * are no matches. * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, UErrorCode *status); /** -* Returns the first index less than position at which the string text -* matches the search pattern. The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* Returns the first index less than position at which the string text +* matches the search pattern. The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE *

      * Search positions that may render incorrect results are highlighted in the -* header comments. If position is less than or greater than the text range +* header comments. If position is less than or greater than the text range * for searching, an U_INDEX_OUTOFBOUNDS_ERROR will be returned. *

      * When USEARCH_OVERLAP option is off, the last index of the @@ -727,35 +728,35 @@ U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, - int32_t position, +U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, + int32_t position, UErrorCode *status); - + /** * Returns the index of the next point at which the string text matches the * search pattern, starting from the current position. -* The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE * @param strsrch search iterator data struct * @param status for errors if it occurs -* @return The index of the next match after the current position, or +* @return The index of the next match after the current position, or * USEARCH_DONE if there are no more matches. * @see #usearch_first * @see #usearch_getOffset * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, UErrorCode *status); /** * Returns the index of the previous point at which the string text matches * the search pattern, starting at the current position. -* The iterator is adjusted so that its current -* index (as returned by usearch_getOffset) is the match position if +* The iterator is adjusted so that its current +* index (as returned by usearch_getOffset) is the match position if * one was found. * If a match is not found, USEARCH_DONE will be returned and * the iterator will be adjusted to the index USEARCH_DONE @@ -768,13 +769,13 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, * @see #USEARCH_DONE * @stable ICU 2.4 */ -U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, +U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, UErrorCode *status); - -/** + +/** * Reset the iteration. -* Search will begin at the start of the text string if a forward iteration -* is initiated before a backwards iteration. Otherwise if a backwards +* Search will begin at the start of the text string if a forward iteration +* is initiated before a backwards iteration. Otherwise if a backwards * iteration is initiated before a forwards iteration, the search will begin * at the end of the text string. * @param strsrch search iterator data struct @@ -805,7 +806,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * A match will not include a partial combining sequence. Combining * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match - * at all. Thus, for example, an A followed a combining accent mark will + * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless * the collation strength has been set to ignore all accents). * @@ -817,7 +818,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented * characters, for example) also must match completely. - * Searching for a single 's' in a string containing only a sharp-s will + * Searching for a single 's' in a string containing only a sharp-s will * find no match. * * @@ -832,7 +833,7 @@ U_CAPI void U_EXPORT2 usearch_reset(UStringSearch *strsrch); * in the input text. * This parameter may be NULL. * A value of -1 will be returned if no match was found. - * + * * @param status Report any errors. Note that no match found is not an error. * @return true if a match was found, false otherwise. * @@ -865,7 +866,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * A match will not include a partial combining sequence. Combining * character sequences are considered to be inseparable units, * and either match the pattern completely, or are considered to not match - * at all. Thus, for example, an A followed a combining accent mark will + * at all. Thus, for example, an A followed a combining accent mark will * not be found when searching for a plain (unaccented) A. (unless * the collation strength has been set to ignore all accents). * @@ -877,7 +878,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * Characters that expand to multiple collation elements * (German sharp-S becoming 'ss', or the composed forms of accented * characters, for example) also must match completely. - * Searching for a single 's' in a string containing only a sharp-s will + * Searching for a single 's' in a string containing only a sharp-s will * find no match. * * @@ -892,7 +893,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, * in the input text. * This parameter may be NULL. * A value of -1 will be returned if no match was found. - * + * * @param status Report any errors. Note that no match found is not an error. * @return true if a match was found, false otherwise. * diff --git a/deps/icu-small/source/i18n/unicode/uspoof.h b/deps/icu-small/source/i18n/unicode/uspoof.h index bf675bef51b51c..b674c91b2c246c 100644 --- a/deps/icu-small/source/i18n/unicode/uspoof.h +++ b/deps/icu-small/source/i18n/unicode/uspoof.h @@ -1134,7 +1134,7 @@ uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode * * @param sc The USpoofChecker * @param id1 The first of the two identifiers to be compared for * confusability. The strings are in UTF-16 format. - * @param length1 the length of the first identifer, expressed in + * @param length1 the length of the first identifier, expressed in * 16 bit UTF-16 code units, or -1 if the string is * nul terminated. * @param id2 The second of the two identifiers to be compared for diff --git a/deps/icu-small/source/i18n/unicode/utmscale.h b/deps/icu-small/source/i18n/unicode/utmscale.h index b7dca15367dcfe..5a0bdc68c66195 100644 --- a/deps/icu-small/source/i18n/unicode/utmscale.h +++ b/deps/icu-small/source/i18n/unicode/utmscale.h @@ -14,7 +14,7 @@ #if !UCONFIG_NO_FORMATTING -/** +/** * \file * \brief C API: Universal Time Scale * @@ -217,7 +217,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_UNIX_TIME, - + /** * Used in IUC4C. Data is a double. Value * is milliseconds since January 1, 1970. @@ -225,7 +225,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_ICU4C_TIME, - + /** * Used in Windows for file times. Data is an int64_t. Value * is ticks (1 tick == 100 nanoseconds) since January 1, 1601. @@ -233,7 +233,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_WINDOWS_FILE_TIME, - + /** * Used in the .NET framework's System.DateTime structure. Data is an int64_t. Value * is ticks (1 tick == 100 nanoseconds) since January 1, 0001. @@ -241,7 +241,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_DOTNET_DATE_TIME, - + /** * Used in older Macintosh systems. Data is int32_t or int64_t. Value * is seconds since January 1, 1904. @@ -249,7 +249,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_MAC_OLD_TIME, - + /** * Used in newer Macintosh systems. Data is a double. Value * is seconds since January 1, 2001. @@ -257,7 +257,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_MAC_TIME, - + /** * Used in Excel. Data is an ?unknown?. Value * is days since December 31, 1899. @@ -265,7 +265,7 @@ typedef enum UDateTimeScale { * @stable ICU 3.2 */ UDTS_EXCEL_TIME, - + /** * Used in DB2. Data is an ?unknown?. Value * is days since December 31, 1899. @@ -305,7 +305,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the units vale * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -315,7 +315,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch offset value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -325,7 +325,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum from value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -335,7 +335,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum from value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -345,7 +345,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum to value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -355,7 +355,7 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum to value * for a time scale. - * + * * @see utmscale_getTimeScaleValue * * @stable ICU 3.2 @@ -366,10 +366,10 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch plus one value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. May not * actually be equal to the epoch offset value plus one. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -379,10 +379,10 @@ typedef enum UTimeScaleValue { /** * The constant used to select the epoch plus one value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. May not * actually be equal to the epoch offset value plus one. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -392,9 +392,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the units round value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -404,9 +404,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the minimum safe rounding value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -416,9 +416,9 @@ typedef enum UTimeScaleValue { /** * The constant used to select the maximum safe rounding value * for a time scale. - * + * * NOTE: This is an internal value. DO NOT USE IT. - * + * * @see utmscale_getTimeScaleValue * * @internal ICU 3.2 @@ -430,7 +430,7 @@ typedef enum UTimeScaleValue { #ifndef U_HIDE_DEPRECATED_API /** * The number of time scale values, in other words limit of this enum. - * + * * @see utmscale_getTimeScaleValue * @deprecated ICU 59 The numeric value may change over time, see ICU ticket #12420. */ @@ -441,12 +441,12 @@ typedef enum UTimeScaleValue { /** * Get a value associated with a particular time scale. - * + * * @param timeScale The time scale * @param value A constant representing the value to get * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if arguments are invalid. * @return - the value. - * + * * @stable ICU 3.2 */ U_CAPI int64_t U_EXPORT2 @@ -460,7 +460,7 @@ U_CAPI int64_t U_EXPORT2 * @param otherTime The int64_t datetime * @param timeScale The time scale to convert from * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if the conversion is out of range. - * + * * @return The datetime converted to the universal time scale * * @stable ICU 3.2 @@ -476,7 +476,7 @@ U_CAPI int64_t U_EXPORT2 * @param universalTime The datetime in the universal time scale * @param timeScale The time scale to convert to * @param status The status code. Set to U_ILLEGAL_ARGUMENT_ERROR if the conversion is out of range. - * + * * @return The datetime converted to the given time scale * * @stable ICU 3.2 @@ -487,3 +487,4 @@ U_CAPI int64_t U_EXPORT2 #endif /* #if !UCONFIG_NO_FORMATTING */ #endif + diff --git a/deps/icu-small/source/i18n/unicode/utrans.h b/deps/icu-small/source/i18n/unicode/utrans.h index e959378285cfb8..1ad7dbda62f679 100644 --- a/deps/icu-small/source/i18n/unicode/utrans.h +++ b/deps/icu-small/source/i18n/unicode/utrans.h @@ -81,7 +81,7 @@ typedef void* UTransliterator; * @stable ICU 2.0 */ typedef enum UTransDirection { - + /** * UTRANS_FORWARD means from <source> to <target> for a * transliterator with ID <source>-<target>. For a transliterator @@ -133,7 +133,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t contextStart; - + /** * Ending index, exclusive, of the context to be considered for a * transliteration operation. The transliterator will ignore @@ -143,7 +143,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t contextLimit; - + /** * Beginning index, inclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is advanced past @@ -152,7 +152,7 @@ typedef struct UTransPosition { * @stable ICU 2.4 */ int32_t start; - + /** * Ending index, exclusive, of the text to be transliterated. * INPUT/OUTPUT parameter: This parameter is updated to reflect @@ -169,9 +169,9 @@ typedef struct UTransPosition { ********************************************************************/ /** - * Open a custom transliterator, given a custom rules string - * OR - * a system transliterator, given its ID. + * Open a custom transliterator, given a custom rules string + * OR + * a system transliterator, given its ID. * Any non-NULL result from this function should later be closed with * utrans_close(). * @@ -215,7 +215,7 @@ utrans_openU(const UChar *id, * inverse of trans, or NULL if the open call fails. * @stable ICU 2.0 */ -U_CAPI UTransliterator* U_EXPORT2 +U_CAPI UTransliterator* U_EXPORT2 utrans_openInverse(const UTransliterator* trans, UErrorCode* status); @@ -229,7 +229,7 @@ utrans_openInverse(const UTransliterator* trans, * utrans_xxx() functions, or NULL if the clone call fails. * @stable ICU 2.0 */ -U_CAPI UTransliterator* U_EXPORT2 +U_CAPI UTransliterator* U_EXPORT2 utrans_clone(const UTransliterator* trans, UErrorCode* status); @@ -239,7 +239,7 @@ utrans_clone(const UTransliterator* trans, * @param trans the transliterator to be closed. * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_close(UTransliterator* trans); #if U_SHOW_CPLUSPLUS_API @@ -293,7 +293,7 @@ utrans_getUnicodeID(const UTransliterator *trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_register(UTransliterator* adoptedTrans, UErrorCode* status); @@ -327,7 +327,7 @@ utrans_unregisterID(const UChar* id, int32_t idLength); * @see UnicodeSet * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_setFilter(UTransliterator* trans, const UChar* filterPattern, int32_t filterPatternLen, @@ -340,7 +340,7 @@ utrans_setFilter(UTransliterator* trans, * @return the number of system transliterators. * @stable ICU 2.0 */ -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 utrans_countAvailableIDs(void); /** @@ -382,7 +382,7 @@ utrans_openIDs(UErrorCode *pErrorCode); * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_trans(const UTransliterator* trans, UReplaceable* rep, const UReplaceableCallbacks* repFunc, @@ -433,7 +433,7 @@ utrans_trans(const UTransliterator* trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transIncremental(const UTransliterator* trans, UReplaceable* rep, const UReplaceableCallbacks* repFunc, @@ -470,7 +470,7 @@ utrans_transIncremental(const UTransliterator* trans, * @param status a pointer to the UErrorCode * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transUChars(const UTransliterator* trans, UChar* text, int32_t* textLength, @@ -505,7 +505,7 @@ utrans_transUChars(const UTransliterator* trans, * @see utrans_transIncremental * @stable ICU 2.0 */ -U_CAPI void U_EXPORT2 +U_CAPI void U_EXPORT2 utrans_transIncrementalUChars(const UTransliterator* trans, UChar* text, int32_t* textLength, @@ -569,16 +569,16 @@ utrans_getSourceSet(const UTransliterator* trans, /** * Deprecated, use utrans_openU() instead. - * Open a custom transliterator, given a custom rules string - * OR - * a system transliterator, given its ID. + * Open a custom transliterator, given a custom rules string + * OR + * a system transliterator, given its ID. * Any non-NULL result from this function should later be closed with * utrans_close(). * * @param id a valid ID, as returned by utrans_getAvailableID() * @param dir the desired direction * @param rules the transliterator rules. See the C++ header rbt.h - * for rules syntax. If NULL then a system transliterator matching + * for rules syntax. If NULL then a system transliterator matching * the ID is returned. * @param rulesLength the length of the rules, or -1 if the rules * are zero-terminated. @@ -590,11 +590,11 @@ utrans_getSourceSet(const UTransliterator* trans, * utrans_xxx() functions, or NULL if the open call fails. * @deprecated ICU 2.8 Use utrans_openU() instead, see utrans.h */ -U_DEPRECATED UTransliterator* U_EXPORT2 +U_DEPRECATED UTransliterator* U_EXPORT2 utrans_open(const char* id, UTransDirection dir, const UChar* rules, /* may be Null */ - int32_t rulesLength, /* -1 if null-terminated */ + int32_t rulesLength, /* -1 if null-terminated */ UParseError* parseError, /* may be Null */ UErrorCode* status); @@ -613,7 +613,7 @@ utrans_open(const char* id, * zero-termination. This may be greater than bufCapacity. * @deprecated ICU 2.8 Use utrans_getUnicodeID() instead, see utrans.h */ -U_DEPRECATED int32_t U_EXPORT2 +U_DEPRECATED int32_t U_EXPORT2 utrans_getID(const UTransliterator* trans, char* buf, int32_t bufCapacity); @@ -627,7 +627,7 @@ utrans_getID(const UTransliterator* trans, * @param id a zero-terminated ID * @deprecated ICU 2.8 Use utrans_unregisterID() instead, see utrans.h */ -U_DEPRECATED void U_EXPORT2 +U_DEPRECATED void U_EXPORT2 utrans_unregister(const char* id); /** @@ -648,7 +648,7 @@ utrans_unregister(const char* id); * zero-termination. This may be greater than bufCapacity. * @deprecated ICU 2.8 Use utrans_openIDs() instead, see utrans.h */ -U_DEPRECATED int32_t U_EXPORT2 +U_DEPRECATED int32_t U_EXPORT2 utrans_getAvailableID(int32_t index, char* buf, int32_t bufCapacity); diff --git a/deps/icu-small/source/i18n/unicode/vtzone.h b/deps/icu-small/source/i18n/unicode/vtzone.h index c0a2a14c897077..e7d2f515410ee1 100644 --- a/deps/icu-small/source/i18n/unicode/vtzone.h +++ b/deps/icu-small/source/i18n/unicode/vtzone.h @@ -14,7 +14,7 @@ #if U_SHOW_CPLUSPLUS_API /** - * \file + * \file * \brief C++ API: RFC2445 VTIMEZONE support */ @@ -72,7 +72,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { *semantically equal. * @stable ICU 3.8 */ - virtual UBool operator==(const TimeZone& that) const; + virtual bool operator==(const TimeZone& that) const override; /** * Return true if the given TimeZone objects are @@ -82,7 +82,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * semantically unequal. * @stable ICU 3.8 */ - virtual UBool operator!=(const TimeZone& that) const; + virtual bool operator!=(const TimeZone& that) const; /** * Create a VTimeZone instance by the time zone ID. @@ -105,7 +105,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { /** * Create a VTimeZone instance by RFC2445 VTIMEZONE data - * + * * @param vtzdata The string including VTIMEZONE data block * @param status Output param to filled in with a success or an error. * @return A VTimeZone initialized by the VTIMEZONE data or @@ -187,7 +187,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return A new copy of this TimeZone object. * @stable ICU 3.8 */ - virtual VTimeZone* clone() const; + virtual VTimeZone* clone() const override; /** * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add @@ -214,7 +214,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; + uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const override; /** * Gets the time zone offset, for current date, modified in case of @@ -237,7 +237,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { */ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, - int32_t monthLength, UErrorCode& status) const; + int32_t monthLength, UErrorCode& status) const override; /** * Returns the time zone raw and GMT offset for the given moment @@ -262,7 +262,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; + int32_t& dstOffset, UErrorCode& ec) const override; #ifndef U_FORCE_HIDE_DRAFT_API /** @@ -272,7 +272,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { virtual void getOffsetFromLocal( UDate date, UTimeZoneLocalOption nonExistingTimeOpt, UTimeZoneLocalOption duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const; + int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) const override; #endif /* U_FORCE_HIDE_DRAFT_API */ /** @@ -282,7 +282,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @param offsetMillis The new raw GMT offset for this time zone. * @stable ICU 3.8 */ - virtual void setRawOffset(int32_t offsetMillis); + virtual void setRawOffset(int32_t offsetMillis) override; /** * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add @@ -291,7 +291,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return The TimeZone's raw GMT offset. * @stable ICU 3.8 */ - virtual int32_t getRawOffset(void) const; + virtual int32_t getRawOffset(void) const override; /** * Queries if this time zone uses daylight savings time. @@ -299,7 +299,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * false, otherwise. * @stable ICU 3.8 */ - virtual UBool useDaylightTime(void) const; + virtual UBool useDaylightTime(void) const override; #ifndef U_FORCE_HIDE_DEPRECATED_API /** @@ -315,7 +315,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * false, otherwise. * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; + virtual UBool inDaylightTime(UDate date, UErrorCode& status) const override; #endif // U_FORCE_HIDE_DEPRECATED_API /** @@ -326,7 +326,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * with the possible exception of the ID * @stable ICU 3.8 */ - virtual UBool hasSameRules(const TimeZone& other) const; + virtual UBool hasSameRules(const TimeZone& other) const override; /** * Gets the first time zone transition after the base time. @@ -336,7 +336,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Gets the most recent time zone transition before the base time. @@ -346,7 +346,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return true if the transition is found. * @stable ICU 3.8 */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const; + virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) const override; /** * Returns the number of TimeZoneRules which represents time transitions, @@ -356,7 +356,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @return The number of TimeZoneRules representing time transitions. * @stable ICU 3.8 */ - virtual int32_t countTransitionRules(UErrorCode& status) const; + virtual int32_t countTransitionRules(UErrorCode& status) const override; /** * Gets the InitialTimeZoneRule and the set of TimeZoneRule @@ -375,7 +375,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * @stable ICU 3.8 */ virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const; + const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) const override; private: enum { DEFAULT_VTIMEZONE_LINES = 100 }; @@ -461,7 +461,7 @@ class U_I18N_API VTimeZone : public BasicTimeZone { * other classes have different class IDs. * @stable ICU 3.8 */ - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; }; U_NAMESPACE_END diff --git a/deps/icu-small/source/i18n/units_complexconverter.cpp b/deps/icu-small/source/i18n/units_complexconverter.cpp index db56f5ded9cf98..78cefbf7ebb733 100644 --- a/deps/icu-small/source/i18n/units_complexconverter.cpp +++ b/deps/icu-small/source/i18n/units_complexconverter.cpp @@ -164,7 +164,7 @@ MaybeStackVector ComplexUnitsConverter::convert(double quantity, if (i < n - 1) { // If quantity is at the limits of double's precision from an // integer value, we take that integer value. - int64_t flooredQuantity = floor(quantity * (1 + DBL_EPSILON)); + int64_t flooredQuantity = static_cast(floor(quantity * (1 + DBL_EPSILON))); if (uprv_isNaN(quantity)) { // With clang on Linux: floor does not support NaN, resulting in // a giant negative number. For now, we produce "0 feet, NaN @@ -183,7 +183,7 @@ MaybeStackVector ComplexUnitsConverter::convert(double quantity, } else { quantity = remainder; } - } + } } applyRounder(intValues, quantity, rounder, status); @@ -244,20 +244,20 @@ void ComplexUnitsConverter::applyRounder(MaybeStackArray &intValues, } // Check if there's a carry, and bubble it back up the resulting intValues. - int64_t carry = floor(unitsConverters_[lastIndex]->convertInverse(quantity) * (1 + DBL_EPSILON)); + int64_t carry = static_cast(floor(unitsConverters_[lastIndex]->convertInverse(quantity) * (1 + DBL_EPSILON))); if (carry <= 0) { return; } - quantity -= unitsConverters_[lastIndex]->convert(carry); + quantity -= unitsConverters_[lastIndex]->convert(static_cast(carry)); intValues[lastIndex - 1] += carry; // We don't use the first converter: that one is for the input unit for (int32_t j = lastIndex - 1; j > 0; j--) { - carry = floor(unitsConverters_[j]->convertInverse(intValues[j]) * (1 + DBL_EPSILON)); + carry = static_cast(floor(unitsConverters_[j]->convertInverse(static_cast(intValues[j])) * (1 + DBL_EPSILON))); if (carry <= 0) { return; } - intValues[j] -= round(unitsConverters_[j]->convert(carry)); + intValues[j] -= static_cast(round(unitsConverters_[j]->convert(static_cast(carry)))); intValues[j - 1] += carry; } } diff --git a/deps/icu-small/source/i18n/units_converter.cpp b/deps/icu-small/source/i18n/units_converter.cpp index 2854ad30b3288f..7e946e584bb76a 100644 --- a/deps/icu-small/source/i18n/units_converter.cpp +++ b/deps/icu-small/source/i18n/units_converter.cpp @@ -461,7 +461,7 @@ Convertibility U_I18N_API extractConvertibility(const MeasureUnitImpl &source, if (source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return UNCONVERTIBLE; } @@ -514,7 +514,7 @@ void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status) if (this->conversionRate_.source.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || this->conversionRate_.target.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return; } @@ -522,13 +522,13 @@ void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status) this->conversionRate_.target, ratesInfo, status); if (U_FAILURE(status)) return; if (unitsState == Convertibility::UNCONVERTIBLE) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return; } loadConversionRate(conversionRate_, conversionRate_.source, conversionRate_.target, unitsState, ratesInfo, status); - + } int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, @@ -540,7 +540,7 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, if (firstUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED || secondUnit.complexity == UMeasureUnitComplexity::UMEASURE_UNIT_MIXED) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return 0; } @@ -550,7 +550,7 @@ int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit, } if (unitsState == Convertibility::UNCONVERTIBLE || unitsState == Convertibility::RECIPROCAL) { - status = U_INTERNAL_PROGRAM_ERROR; + status = U_ARGUMENT_TYPE_MISMATCH; return 0; } diff --git a/deps/icu-small/source/i18n/units_converter.h b/deps/icu-small/source/i18n/units_converter.h index 1b83155a17b571..5c002f4147e6ab 100644 --- a/deps/icu-small/source/i18n/units_converter.h +++ b/deps/icu-small/source/i18n/units_converter.h @@ -75,7 +75,7 @@ struct U_I18N_API Factor { // Apply SI or binary prefix to the Factor. void applyPrefix(UMeasurePrefix unitPrefix); - // Does an in-place substition of the "symbolic constants" based on + // Does an in-place substitution of the "symbolic constants" based on // constantExponents (resetting the exponents). // // In ICU4J, see UnitConverter.Factor.getConversionRate(). @@ -208,7 +208,7 @@ class U_I18N_API UnitsConverter : public UMemory { /** * Initialises the object. - */ + */ void init(const ConversionRates &ratesInfo, UErrorCode &status); }; diff --git a/deps/icu-small/source/i18n/units_data.cpp b/deps/icu-small/source/i18n/units_data.cpp index 61f537479fa908..d1d1fc5bc05e4c 100644 --- a/deps/icu-small/source/i18n/units_data.cpp +++ b/deps/icu-small/source/i18n/units_data.cpp @@ -59,7 +59,7 @@ class ConversionRateDataSink : public ResourceSink { * @param noFallback Ignored. * @param status The standard ICU error code output parameter. */ - void put(const char *source, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char *source, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { if (U_FAILURE(status)) { return; } if (uprv_strcmp(source, "convertUnits") != 0) { // This is very strict, however it is the cheapest way to be sure @@ -146,7 +146,7 @@ class UnitPreferencesSink : public ResourceSink { * @param status The standard ICU error code output parameter. Note: if an * error is returned, outPrefs and outMetadata may be inconsistent. */ - void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) { + void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override { if (U_FAILURE(status)) { return; } if (uprv_strcmp(key, "unitPreferenceData") != 0) { // This is very strict, however it is the cheapest way to be sure diff --git a/deps/icu-small/source/i18n/units_router.cpp b/deps/icu-small/source/i18n/units_router.cpp index 51f66bfa892be7..0e6082fae5c438 100644 --- a/deps/icu-small/source/i18n/units_router.cpp +++ b/deps/icu-small/source/i18n/units_router.cpp @@ -66,9 +66,9 @@ void UnitsRouter::init(const MeasureUnit &inputUnit, StringPiece region, StringP UnitPreferences prefs(status); MeasureUnitImpl inputUnitImpl = MeasureUnitImpl::forMeasureUnitMaybeCopy(inputUnit, status); - MeasureUnit baseUnit = - (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)).build(status); - CharString category = getUnitQuantity(baseUnit.getIdentifier(), status); + MeasureUnitImpl baseUnitImpl = + (extractCompoundBaseUnit(inputUnitImpl, conversionRates, status)); + CharString category = getUnitQuantity(baseUnitImpl, status); if (U_FAILURE(status)) { return; } diff --git a/deps/icu-small/source/i18n/units_router.h b/deps/icu-small/source/i18n/units_router.h index c6e4e4f5288363..b3300f7e27737a 100644 --- a/deps/icu-small/source/i18n/units_router.h +++ b/deps/icu-small/source/i18n/units_router.h @@ -109,7 +109,7 @@ namespace units { * * NOTE: * the output units and their limits will be extracted from the units preferences database by knowing - * the followings: + * the following: * - input unit * - locale * - usage diff --git a/deps/icu-small/source/i18n/unum.cpp b/deps/icu-small/source/i18n/unum.cpp index de693fc7276244..7043f7adc12308 100644 --- a/deps/icu-small/source/i18n/unum.cpp +++ b/deps/icu-small/source/i18n/unum.cpp @@ -38,7 +38,7 @@ U_NAMESPACE_USE U_CAPI UNumberFormat* U_EXPORT2 -unum_open( UNumberFormatStyle style, +unum_open( UNumberFormatStyle style, const UChar* pattern, int32_t patternLength, const char* locale, @@ -93,11 +93,11 @@ unum_open( UNumberFormatStyle style, UParseError tErr; /* UnicodeString can handle the case when patternLength = -1. */ const UnicodeString pat(pattern, patternLength); - + if(parseErr==NULL){ parseErr = &tErr; } - + retVal = new RuleBasedNumberFormat(pat, Locale(locale), *parseErr, *status); } break; @@ -155,7 +155,7 @@ unum_clone(const UNumberFormat *fmt, { if(U_FAILURE(*status)) return 0; - + Format *res = 0; const NumberFormat* nf = reinterpret_cast(fmt); const DecimalFormat* df = dynamic_cast(nf); @@ -171,7 +171,7 @@ unum_clone(const UNumberFormat *fmt, *status = U_MEMORY_ALLOCATION_ERROR; return 0; } - + return (UNumberFormat*) res; } @@ -196,26 +196,26 @@ unum_formatInt64(const UNumberFormat* fmt, { if(U_FAILURE(*status)) return -1; - + UnicodeString res; if(!(result==NULL && resultLength==0)) { // NULL destination for pure preflighting: empty dummy string // otherwise, alias the destination buffer res.setTo(result, 0, resultLength); } - + FieldPosition fp; - + if(pos != 0) fp.setField(pos->field); - + ((const NumberFormat*)fmt)->format(number, res, fp, *status); if(pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -227,7 +227,7 @@ unum_formatDouble( const UNumberFormat* fmt, UFieldPosition *pos, /* 0 if ignore */ UErrorCode* status) { - + if(U_FAILURE(*status)) return -1; UnicodeString res; @@ -238,17 +238,17 @@ unum_formatDouble( const UNumberFormat* fmt, } FieldPosition fp; - + if(pos != 0) fp.setField(pos->field); - + ((const NumberFormat*)fmt)->format(number, res, fp, *status); - + if(pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -280,7 +280,7 @@ unum_formatDoubleForFields(const UNumberFormat* format, return res.extract(result, resultLength, *status); } -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDecimal(const UNumberFormat* fmt, const char * number, int32_t length, @@ -324,7 +324,7 @@ unum_formatDecimal(const UNumberFormat* fmt, -U_CAPI int32_t U_EXPORT2 +U_CAPI int32_t U_EXPORT2 unum_formatDoubleCurrency(const UNumberFormat* fmt, double number, UChar* currency, @@ -340,7 +340,7 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt, // otherwise, alias the destination buffer res.setTo(result, 0, resultLength); } - + FieldPosition fp; if (pos != 0) { fp.setField(pos->field); @@ -353,12 +353,12 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt, } Formattable n(tempCurrAmnt); ((const NumberFormat*)fmt)->format(n, res, fp, *status); - + if (pos != 0) { pos->beginIndex = fp.getBeginIndex(); pos->endIndex = fp.getEndIndex(); } - + return res.extract(result, resultLength, *status); } @@ -372,15 +372,15 @@ parseRes(Formattable& res, { if(U_FAILURE(*status)) return; - + const UnicodeString src((UBool)(textLength == -1), text, textLength); ParsePosition pp; - + if(parsePos != 0) pp.setIndex(*parsePos); - + ((const NumberFormat*)fmt)->parse(src, res, pp); - + if(pp.getErrorIndex() != -1) { *status = U_PARSE_ERROR; if(parsePos != 0) { @@ -614,7 +614,7 @@ unum_setDoubleAttribute( UNumberFormat* fmt, { NumberFormat* nf = reinterpret_cast(fmt); DecimalFormat* df = dynamic_cast(nf); - if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) { + if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) { df->setRoundingIncrement(newValue); } } @@ -706,27 +706,27 @@ unum_setTextAttribute( UNumberFormat* fmt, case UNUM_POSITIVE_PREFIX: df->setPositivePrefix(val); break; - + case UNUM_POSITIVE_SUFFIX: df->setPositiveSuffix(val); break; - + case UNUM_NEGATIVE_PREFIX: df->setNegativePrefix(val); break; - + case UNUM_NEGATIVE_SUFFIX: df->setNegativeSuffix(val); break; - + case UNUM_PADDING_CHARACTER: df->setPadCharacter(val); break; - + case UNUM_CURRENCY_CODE: df->setCurrency(val.getTerminatedBuffer(), *status); break; - + default: *status = U_UNSUPPORTED_ERROR; break; @@ -751,7 +751,7 @@ unum_toPattern( const UNumberFormat* fmt, { if(U_FAILURE(*status)) return -1; - + UnicodeString pat; if(!(result==NULL && resultLength==0)) { // NULL destination for pure preflighting: empty dummy string @@ -838,15 +838,15 @@ unum_applyPattern( UNumberFormat *fmt, { UErrorCode tStatus = U_ZERO_ERROR; UParseError tParseError; - + if(parseError == NULL){ parseError = &tParseError; } - + if(status==NULL){ status = &tStatus; } - + int32_t len = (patternLength == -1 ? u_strlen(pattern) : patternLength); const UnicodeString pat((UChar*)pattern, len, len); diff --git a/deps/icu-small/source/i18n/uregex.cpp b/deps/icu-small/source/i18n/uregex.cpp index 763a78a14a9b4d..514159e8b7af35 100644 --- a/deps/icu-small/source/i18n/uregex.cpp +++ b/deps/icu-small/source/i18n/uregex.cpp @@ -1169,7 +1169,7 @@ uregex_replaceAll(URegularExpression *regexp2, uregex_reset(regexp2, 0, status); - // Note: Seperate error code variables for findNext() and appendReplacement() + // Note: Separate error code variables for findNext() and appendReplacement() // are used so that destination buffer overflow errors // in appendReplacement won't stop findNext() from working. // appendReplacement() and appendTail() special case incoming buffer @@ -1353,7 +1353,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp, } // - // Validate all paramters + // Validate all parameters // if (validateRE(regexp, TRUE, status) == FALSE) { return 0; @@ -1497,7 +1497,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp, // Scan for Named Capture Group, ${name}. UnicodeString groupName; U16_FWD_1(replacementText, replIdx, replacementLength); - while (U_SUCCESS(*status) && c32 != RIGHTBRACKET) { + while (U_SUCCESS(*status) && c32 != RIGHTBRACKET) { if (replIdx >= replacementLength) { *status = U_REGEX_INVALID_CAPTURE_GROUP_NAME; break; @@ -1977,3 +1977,4 @@ uregex_splitUText(URegularExpression *regexp2, #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/uregexc.cpp b/deps/icu-small/source/i18n/uregexc.cpp index 8674b4f17f5876..c7d3bcd2c743fb 100644 --- a/deps/icu-small/source/i18n/uregexc.cpp +++ b/deps/icu-small/source/i18n/uregexc.cpp @@ -8,7 +8,7 @@ * file name: regexc.cpp * description: The purpose of this function is to separate the codepage * conversion from the rest of the uregex_ API. This can removes any -* dependency on codepage conversion, which reduces the overhead of +* dependency on codepage conversion, which reduces the overhead of */ #include "unicode/uregex.h" diff --git a/deps/icu-small/source/i18n/usearch.cpp b/deps/icu-small/source/i18n/usearch.cpp index 47da3d7364de3f..80b80fa3b43710 100644 --- a/deps/icu-small/source/i18n/usearch.cpp +++ b/deps/icu-small/source/i18n/usearch.cpp @@ -26,17 +26,13 @@ U_NAMESPACE_USE -// don't use Boyer-Moore -// (and if we decide to turn this on again there are several new TODOs that will need to be addressed) -#define BOYER_MOORE 0 - // internal definition --------------------------------------------------- #define LAST_BYTE_MASK_ 0xFF #define SECOND_LAST_BYTE_SHIFT_ 8 #define SUPPLEMENTARY_MIN_VALUE_ 0x10000 -static const Normalizer2Impl *g_nfcImpl = NULL; +static const Normalizer2Impl *g_nfcImpl = nullptr; // internal methods ------------------------------------------------- @@ -48,11 +44,11 @@ static const Normalizer2Impl *g_nfcImpl = NULL; */ static inline void setColEIterOffset(UCollationElements *elems, - int32_t offset) + int32_t offset, + UErrorCode &status) { // Note: Not "fast" any more after the 2013 collation rewrite. // We do not want to expose more internals than necessary. - UErrorCode status = U_ZERO_ERROR; ucol_setOffset(elems, offset, &status); } @@ -76,29 +72,10 @@ inline uint32_t getMask(UCollationStrength strength) } } -/** -* @param ce 32-bit collation element -* @return hash code -*/ -static -inline int hashFromCE32(uint32_t ce) -{ - int hc = (int)( - ((((((ce >> 24) * 37) + - (ce >> 16)) * 37) + - (ce >> 8)) * 37) + - ce); - hc %= MAX_TABLE_SIZE_; - if (hc < 0) { - hc += MAX_TABLE_SIZE_; - } - return hc; -} - U_CDECL_BEGIN static UBool U_CALLCONV usearch_cleanup(void) { - g_nfcImpl = NULL; + g_nfcImpl = nullptr; return TRUE; } U_CDECL_END @@ -112,7 +89,7 @@ U_CDECL_END static inline void initializeFCD(UErrorCode *status) { - if (g_nfcImpl == NULL) { + if (g_nfcImpl == nullptr) { g_nfcImpl = Normalizer2Factory::getNFCImpl(*status); ucln_i18n_registerCleanup(UCLN_I18N_USEARCH, usearch_cleanup); } @@ -175,18 +152,18 @@ inline int32_t getCE(const UStringSearch *strsrch, uint32_t sourcece) } /** -* Allocate a memory and returns NULL if it failed. +* Allocate a memory and returns nullptr if it failed. * Internal method, status assumed to be a success. * @param size to allocate * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return newly allocated array, NULL otherwise +* @return newly allocated array, nullptr otherwise */ static inline void * allocateMemory(uint32_t size, UErrorCode *status) { uint32_t *result = (uint32_t *)uprv_malloc(size); - if (result == NULL) { + if (result == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; } return result; @@ -197,7 +174,7 @@ inline void * allocateMemory(uint32_t size, UErrorCode *status) * Creates a new array if we run out of space. The caller will have to * manually deallocate the newly allocated array. * Internal method, status assumed to be success, caller has to check status -* before calling this method. destination not to be NULL and has at least +* before calling this method. destination not to be nullptr and has at least * size destinationlength. * @param destination target array * @param offset destination offset to add value @@ -222,7 +199,7 @@ inline int32_t * addTouint32_tArray(int32_t *destination, int32_t *temp = (int32_t *)allocateMemory( sizeof(int32_t) * newlength, status); if (U_FAILURE(*status)) { - return NULL; + return nullptr; } uprv_memcpy(temp, destination, sizeof(int32_t) * (size_t)offset); *destinationlength = newlength; @@ -237,7 +214,7 @@ inline int32_t * addTouint32_tArray(int32_t *destination, * Creates a new array if we run out of space. The caller will have to * manually deallocate the newly allocated array. * Internal method, status assumed to be success, caller has to check status -* before calling this method. destination not to be NULL and has at least +* before calling this method. destination not to be nullptr and has at least * size destinationlength. * @param destination target array * @param offset destination offset to add value @@ -263,7 +240,7 @@ inline int64_t * addTouint64_tArray(int64_t *destination, sizeof(int64_t) * newlength, status); if (U_FAILURE(*status)) { - return NULL; + return nullptr; } uprv_memcpy(temp, destination, sizeof(int64_t) * (size_t)offset); @@ -286,11 +263,9 @@ inline int64_t * addTouint64_tArray(int64_t *destination, * @param strsrch string search data * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return total number of expansions */ static -inline uint16_t initializePatternCETable(UStringSearch *strsrch, - UErrorCode *status) +inline void initializePatternCETable(UStringSearch *strsrch, UErrorCode *status) { UPattern *pattern = &(strsrch->pattern); uint32_t cetablesize = INITIAL_ARRAY_SIZE_; @@ -298,7 +273,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, uint32_t patternlength = pattern->textLength; UCollationElements *coleiter = strsrch->utilIter; - if (coleiter == NULL) { + if (coleiter == nullptr) { coleiter = ucol_openElements(strsrch->collator, pattern->text, patternlength, status); // status will be checked in ucol_next(..) later and if it is an @@ -310,7 +285,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, ucol_setText(coleiter, pattern->text, pattern->textLength, status); } if(U_FAILURE(*status)) { - return 0; + return; } if (pattern->ces != cetable && pattern->ces) { @@ -318,7 +293,6 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, } uint32_t offset = 0; - uint16_t result = 0; int32_t ce; while ((ce = ucol_next(coleiter, status)) != UCOL_NULLORDER && @@ -330,7 +304,7 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, patternlength - ucol_getOffset(coleiter) + 1, status); if (U_FAILURE(*status)) { - return 0; + return; } offset ++; if (cetable != temp && cetable != pattern->cesBuffer) { @@ -338,14 +312,11 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, } cetable = temp; } - result += (uint16_t)(ucol_getMaxExpansion(coleiter, ce) - 1); } cetable[offset] = 0; pattern->ces = cetable; pattern->cesLength = offset; - - return result; } /** @@ -358,11 +329,10 @@ inline uint16_t initializePatternCETable(UStringSearch *strsrch, * @param strsrch string search data * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return total number of expansions */ static -inline uint16_t initializePatternPCETable(UStringSearch *strsrch, - UErrorCode *status) +inline void initializePatternPCETable(UStringSearch *strsrch, + UErrorCode *status) { UPattern *pattern = &(strsrch->pattern); uint32_t pcetablesize = INITIAL_ARRAY_SIZE_; @@ -370,26 +340,25 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, uint32_t patternlength = pattern->textLength; UCollationElements *coleiter = strsrch->utilIter; - if (coleiter == NULL) { + if (coleiter == nullptr) { coleiter = ucol_openElements(strsrch->collator, pattern->text, patternlength, status); - // status will be checked in ucol_next(..) later and if it is an - // error UCOL_NULLORDER the result of ucol_next(..) and 0 will be + // status will be checked in nextProcessed(..) later and if it is an error + // then UCOL_PROCESSED_NULLORDER is returned by nextProcessed(..), so 0 will be // returned. strsrch->utilIter = coleiter; } else { ucol_setText(coleiter, pattern->text, pattern->textLength, status); } if(U_FAILURE(*status)) { - return 0; + return; } - if (pattern->pces != pcetable && pattern->pces != NULL) { + if (pattern->pces != pcetable && pattern->pces != nullptr) { uprv_free(pattern->pces); } uint32_t offset = 0; - uint16_t result = 0; int64_t pce; icu::UCollationPCE iter(coleiter); @@ -397,7 +366,7 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, // ** Should processed CEs be signed or unsigned? // ** (the rest of the code in this file seems to play fast-and-loose with // ** whether a CE is signed or unsigned. For example, look at routine above this one.) - while ((pce = iter.nextProcessed(NULL, NULL, status)) != UCOL_PROCESSED_NULLORDER && + while ((pce = iter.nextProcessed(nullptr, nullptr, status)) != UCOL_PROCESSED_NULLORDER && U_SUCCESS(*status)) { int64_t *temp = addTouint64_tArray(pcetable, offset, &pcetablesize, pce, @@ -405,7 +374,7 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, status); if (U_FAILURE(*status)) { - return 0; + return; } offset += 1; @@ -415,28 +384,24 @@ inline uint16_t initializePatternPCETable(UStringSearch *strsrch, } pcetable = temp; - //result += (uint16_t)(ucol_getMaxExpansion(coleiter, ce) - 1); } pcetable[offset] = 0; pattern->pces = pcetable; pattern->pcesLength = offset; - - return result; } /** * Initializes the pattern struct. -* Internal method, status assumed to be success. * @param strsrch UStringSearch data storage * @param status output error if any, caller to check status before calling * method, status assumed to be success when passed in. -* @return expansionsize the total expansion size of the pattern */ static -inline int16_t initializePattern(UStringSearch *strsrch, UErrorCode *status) +inline void initializePattern(UStringSearch *strsrch, UErrorCode *status) { - if (U_FAILURE(*status)) { return 0; } + if (U_FAILURE(*status)) { return; } + UPattern *pattern = &(strsrch->pattern); const UChar *patterntext = pattern->text; int32_t length = pattern->textLength; @@ -456,90 +421,19 @@ inline int16_t initializePattern(UStringSearch *strsrch, UErrorCode *status) } // ** HACK ** - if (strsrch->pattern.pces != NULL) { + if (strsrch->pattern.pces != nullptr) { if (strsrch->pattern.pces != strsrch->pattern.pcesBuffer) { uprv_free(strsrch->pattern.pces); } - strsrch->pattern.pces = NULL; - } - - // since intializePattern is an internal method status is a success. - return initializePatternCETable(strsrch, status); -} - -/** -* Initializing shift tables, with the default values. -* If a corresponding default value is 0, the shift table is not set. -* @param shift table for forwards shift -* @param backshift table for backwards shift -* @param cetable table containing pattern ce -* @param cesize size of the pattern ces -* @param expansionsize total size of the expansions -* @param defaultforward the default forward value -* @param defaultbackward the default backward value -*/ -static -inline void setShiftTable(int16_t shift[], int16_t backshift[], - int32_t *cetable, int32_t cesize, - int16_t expansionsize, - int16_t defaultforward, - int16_t defaultbackward) -{ - // estimate the value to shift. to do that we estimate the smallest - // number of characters to give the relevant ces, ie approximately - // the number of ces minus their expansion, since expansions can come - // from a character. - int32_t count; - for (count = 0; count < MAX_TABLE_SIZE_; count ++) { - shift[count] = defaultforward; + strsrch->pattern.pces = nullptr; } - cesize --; // down to the last index - for (count = 0; count < cesize; count ++) { - // number of ces from right of array to the count - int temp = defaultforward - count - 1; - shift[hashFromCE32(cetable[count])] = temp > 1 ? static_cast(temp) : 1; - } - shift[hashFromCE32(cetable[cesize])] = 1; - // for ignorables we just shift by one. see test examples. - shift[hashFromCE32(0)] = 1; - for (count = 0; count < MAX_TABLE_SIZE_; count ++) { - backshift[count] = defaultbackward; - } - for (count = cesize; count > 0; count --) { - // the original value count does not seem to work - backshift[hashFromCE32(cetable[count])] = count > expansionsize ? - (int16_t)(count - expansionsize) : 1; - } - backshift[hashFromCE32(cetable[0])] = 1; - backshift[hashFromCE32(0)] = 1; + initializePatternCETable(strsrch, status); } /** -* Building of the pattern collation element list and the boyer moore strsrch -* table. -* The canonical match will only be performed after the default match fails. -* For both cases we need to remember the size of the composed and decomposed -* versions of the string. Since the Boyer-Moore shift calculations shifts by -* a number of characters in the text and tries to match the pattern from that -* offset, the shift value can not be too large in case we miss some -* characters. To choose a right shift size, we estimate the NFC form of the -* and use its size as a shift guide. The NFC form should be the small -* possible representation of the pattern. Anyways, we'll err on the smaller -* shift size. Hence the calculation for minlength. -* Canonical match will be performed slightly differently. We'll split the -* pattern into 3 parts, the prefix accents (PA), the middle string bounded by -* the first and last base character (MS), the ending accents (EA). Matches -* will be done on MS first, and only when we match MS then some processing -* will be required for the prefix and end accents in order to determine if -* they match PA and EA. Hence the default shift values -* for the canonical match will take the size of either end's accent into -* consideration. Forwards search will take the end accents into consideration -* for the default shift values and the backwards search will take the prefix -* accents into consideration. -* If pattern has no non-ignorable ce, we return a illegal argument error. -* Internal method, status assumed to be success. +* Initializes the pattern struct and builds the pattern collation element table. * @param strsrch UStringSearch data storage * @param status for output errors if it occurs, status is assumed to be a * success when it is passed in. @@ -547,2046 +441,100 @@ inline void setShiftTable(int16_t shift[], int16_t backshift[], static inline void initialize(UStringSearch *strsrch, UErrorCode *status) { - int16_t expandlength = initializePattern(strsrch, status); - if (U_SUCCESS(*status) && strsrch->pattern.cesLength > 0) { - UPattern *pattern = &strsrch->pattern; - int32_t cesize = pattern->cesLength; - - int16_t minlength = cesize > expandlength - ? (int16_t)cesize - expandlength : 1; - pattern->defaultShiftSize = minlength; - setShiftTable(pattern->shift, pattern->backShift, pattern->ces, - cesize, expandlength, minlength, minlength); - return; - } - strsrch->pattern.defaultShiftSize = 0; + initializePattern(strsrch, status); } -#if BOYER_MOORE -/** -* Check to make sure that the match length is at the end of the character by -* using the breakiterator. -* @param strsrch string search data -* @param start target text start offset -* @param end target text end offset -*/ -static -void checkBreakBoundary(const UStringSearch *strsrch, int32_t * /*start*/, - int32_t *end) -{ #if !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->internalBreakIter; - if (breakiterator) { - int32_t matchend = *end; - //int32_t matchstart = *start; - - if (!ubrk_isBoundary(breakiterator, matchend)) { - *end = ubrk_following(breakiterator, matchend); - } - - /* Check the start of the matched text to make sure it doesn't have any accents - * before it. This code may not be necessary and so it is commented out */ - /*if (!ubrk_isBoundary(breakiterator, matchstart) && !ubrk_isBoundary(breakiterator, matchstart-1)) { - *start = ubrk_preceding(breakiterator, matchstart); - }*/ - } -#endif -} - -/** -* Determine whether the target text in UStringSearch bounded by the offset -* start and end is one or more whole units of text as -* determined by the breakiterator in UStringSearch. -* @param strsrch string search data -* @param start target text start offset -* @param end target text end offset -*/ -static -UBool isBreakUnit(const UStringSearch *strsrch, int32_t start, - int32_t end) +// If the caller provided a character breakiterator we'll return that, +// otherwise we lazily create the internal break iterator. +static UBreakIterator* getBreakIterator(UStringSearch *strsrch, UErrorCode &status) { -#if !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->breakIter; - //TODO: Add here. - if (breakiterator) { - int32_t startindex = ubrk_first(breakiterator); - int32_t endindex = ubrk_last(breakiterator); - - // out-of-range indexes are never boundary positions - if (start < startindex || start > endindex || - end < startindex || end > endindex) { - return FALSE; - } - // otherwise, we can use following() on the position before the - // specified one and return true of the position we get back is the - // one the user specified - UBool result = (start == startindex || - ubrk_following(breakiterator, start - 1) == start) && - (end == endindex || - ubrk_following(breakiterator, end - 1) == end); - if (result) { - // iterates the individual ces - UCollationElements *coleiter = strsrch->utilIter; - const UChar *text = strsrch->search->text + - start; - UErrorCode status = U_ZERO_ERROR; - ucol_setText(coleiter, text, end - start, &status); - for (int32_t count = 0; count < strsrch->pattern.cesLength; - count ++) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (ce == UCOL_IGNORABLE) { - count --; - continue; - } - if (U_FAILURE(status) || ce != strsrch->pattern.ces[count]) { - return FALSE; - } - } - int32_t nextce = ucol_next(coleiter, &status); - while (ucol_getOffset(coleiter) == (end - start) - && getCE(strsrch, nextce) == UCOL_IGNORABLE) { - nextce = ucol_next(coleiter, &status); - } - if (ucol_getOffset(coleiter) == (end - start) - && nextce != UCOL_NULLORDER) { - // extra collation elements at the end of the match - return FALSE; - } - } - return result; + if (U_FAILURE(status)) { + return nullptr; } -#endif - return TRUE; -} -/** -* Getting the next base character offset if current offset is an accent, -* or the current offset if the current character contains a base character. -* accents the following base character will be returned -* @param text string -* @param textoffset current offset -* @param textlength length of text string -* @return the next base character or the current offset -* if the current character is contains a base character. -*/ -static -inline int32_t getNextBaseOffset(const UChar *text, - int32_t textoffset, - int32_t textlength) -{ - if (textoffset < textlength) { - int32_t temp = textoffset; - if (getFCD(text, &temp, textlength) >> SECOND_LAST_BYTE_SHIFT_) { - while (temp < textlength) { - int32_t result = temp; - if ((getFCD(text, &temp, textlength) >> - SECOND_LAST_BYTE_SHIFT_) == 0) { - return result; - } - } - return textlength; - } + if (strsrch->search->breakIter != nullptr) { + return strsrch->search->breakIter; } - return textoffset; -} -/** -* Gets the next base character offset depending on the string search pattern -* data -* @param strsrch string search data -* @param textoffset current offset, one offset away from the last character -* to search for. -* @return start index of the next base character or the current offset -* if the current character is contains a base character. -*/ -static -inline int32_t getNextUStringSearchBaseOffset(UStringSearch *strsrch, - int32_t textoffset) -{ - int32_t textlength = strsrch->search->textLength; - if (strsrch->pattern.hasSuffixAccents && - textoffset < textlength) { - int32_t temp = textoffset; - const UChar *text = strsrch->search->text; - U16_BACK_1(text, 0, temp); - if (getFCD(text, &temp, textlength) & LAST_BYTE_MASK_) { - return getNextBaseOffset(text, textoffset, textlength); - } + if (strsrch->search->internalBreakIter != nullptr) { + return strsrch->search->internalBreakIter; } - return textoffset; -} -/** -* Shifting the collation element iterator position forward to prepare for -* a following match. If the last character is a unsafe character, we'll only -* shift by 1 to capture contractions, normalization etc. -* Internal method, status assumed to be success. -* @param text strsrch string search data -* @param textoffset start text position to do search -* @param ce the text ce which failed the match. -* @param patternceindex index of the ce within the pattern ce buffer which -* failed the match -* @return final offset -*/ -static -inline int32_t shiftForward(UStringSearch *strsrch, - int32_t textoffset, - int32_t ce, - int32_t patternceindex) -{ - UPattern *pattern = &(strsrch->pattern); - if (ce != UCOL_NULLORDER) { - int32_t shift = pattern->shift[hashFromCE32(ce)]; - // this is to adjust for characters in the middle of the - // substring for matching that failed. - int32_t adjust = pattern->cesLength - patternceindex; - if (adjust > 1 && shift >= adjust) { - shift -= adjust - 1; - } - textoffset += shift; - } - else { - textoffset += pattern->defaultShiftSize; - } + // Need to create the internal break iterator. + strsrch->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, + ucol_getLocaleByType(strsrch->collator, ULOC_VALID_LOCALE, &status), + strsrch->search->text, strsrch->search->textLength, &status); - textoffset = getNextUStringSearchBaseOffset(strsrch, textoffset); - // check for unsafe characters - // * if it is the start or middle of a contraction: to be done after - // a initial match is found - // * thai or lao base consonant character: similar to contraction - // * high surrogate character: similar to contraction - // * next character is a accent: shift to the next base character - return textoffset; + return strsrch->search->internalBreakIter; } -#endif // #if BOYER_MOORE +#endif /** -* sets match not found +* Sets the match result to "not found", regardless of the incoming error status. +* If an error occurs while setting the result, it is reported back. +* * @param strsrch string search data +* @param status for output errors, if they occur. */ static -inline void setMatchNotFound(UStringSearch *strsrch) +inline void setMatchNotFound(UStringSearch *strsrch, UErrorCode &status) { - // this method resets the match result regardless of the error status. + UErrorCode localStatus = U_ZERO_ERROR; + strsrch->search->matchedIndex = USEARCH_DONE; strsrch->search->matchedLength = 0; if (strsrch->search->isForwardSearching) { - setColEIterOffset(strsrch->textIter, strsrch->search->textLength); - } - else { - setColEIterOffset(strsrch->textIter, 0); - } -} - -#if BOYER_MOORE -/** -* Gets the offset to the next safe point in text. -* ie. not the middle of a contraction, swappable characters or supplementary -* characters. -* @param collator collation sata -* @param text string to work with -* @param textoffset offset in string -* @param textlength length of text string -* @return offset to the next safe character -*/ -static -inline int32_t getNextSafeOffset(const UCollator *collator, - const UChar *text, - int32_t textoffset, - int32_t textlength) -{ - int32_t result = textoffset; // first contraction character - while (result != textlength && ucol_unsafeCP(text[result], collator)) { - result ++; - } - return result; -} - -/** -* This checks for accents in the potential match started with a . -* composite character. -* This is really painful... we have to check that composite character do not -* have any extra accents. We have to normalize the potential match and find -* the immediate decomposed character before the match. -* The first composite character would have been taken care of by the fcd -* checks in checkForwardExactMatch. -* This is the slow path after the fcd of the first character and -* the last character has been checked by checkForwardExactMatch and we -* determine that the potential match has extra non-ignorable preceding -* ces. -* E.g. looking for \u0301 acute in \u01FA A ring above and acute, -* checkExtraMatchAccent should fail since there is a middle ring in \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* Internal method, status assumed to be a success, caller should check status -* before calling this method -* @param strsrch string search data -* @param start index of the potential unfriendly composite character -* @param end index of the potential unfriendly composite character -* @param status output error status if any. -* @return TRUE if there is non-ignorable accents before at the beginning -* of the match, FALSE otherwise. -*/ - -static -UBool checkExtraMatchAccents(const UStringSearch *strsrch, int32_t start, - int32_t end, - UErrorCode *status) -{ - UBool result = FALSE; - if (strsrch->pattern.hasPrefixAccents) { - int32_t length = end - start; - int32_t offset = 0; - const UChar *text = strsrch->search->text + start; - - U16_FWD_1(text, offset, length); - // we are only concerned with the first composite character - if (unorm_quickCheck(text, offset, UNORM_NFD, status) == UNORM_NO) { - int32_t safeoffset = getNextSafeOffset(strsrch->collator, - text, 0, length); - if (safeoffset != length) { - safeoffset ++; - } - UChar *norm = NULL; - UChar buffer[INITIAL_ARRAY_SIZE_]; - int32_t size = unorm_normalize(text, safeoffset, UNORM_NFD, 0, - buffer, INITIAL_ARRAY_SIZE_, - status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (size >= INITIAL_ARRAY_SIZE_) { - norm = (UChar *)allocateMemory((size + 1) * sizeof(UChar), - status); - // if allocation failed, status will be set to - // U_MEMORY_ALLOCATION_ERROR and unorm_normalize internally - // checks for it. - size = unorm_normalize(text, safeoffset, UNORM_NFD, 0, norm, - size, status); - if (U_FAILURE(*status) && norm != NULL) { - uprv_free(norm); - return FALSE; - } - } - else { - norm = buffer; - } - - UCollationElements *coleiter = strsrch->utilIter; - ucol_setText(coleiter, norm, size, status); - uint32_t firstce = strsrch->pattern.ces[0]; - UBool ignorable = TRUE; - uint32_t ce = UCOL_IGNORABLE; - while (U_SUCCESS(*status) && ce != firstce && ce != (uint32_t)UCOL_NULLORDER) { - offset = ucol_getOffset(coleiter); - if (ce != firstce && ce != UCOL_IGNORABLE) { - ignorable = FALSE; - } - ce = ucol_next(coleiter, status); - } - UChar32 codepoint; - U16_PREV(norm, 0, offset, codepoint); - result = !ignorable && (u_getCombiningClass(codepoint) != 0); - - if (norm != buffer) { - uprv_free(norm); - } - } - } - - return result; -} - -/** -* Used by exact matches, checks if there are accents before the match. -* This is really painful... we have to check that composite characters at -* the start of the matches have to not have any extra accents. -* We check the FCD of the character first, if it starts with an accent and -* the first pattern ce does not match the first ce of the character, we bail. -* Otherwise we try normalizing the first composite -* character and find the immediate decomposed character before the match to -* see if it is an non-ignorable accent. -* Now normalizing the first composite character is enough because we ensure -* that when the match is passed in here with extra beginning ces, the -* first or last ce that match has to occur within the first character. -* E.g. looking for \u0301 acute in \u01FA A ring above and acute, -* checkExtraMatchAccent should fail since there is a middle ring in \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* @param strsrch string search data -* @param start offset -* @param end offset -* @return TRUE if there are accents on either side of the match, -* FALSE otherwise -*/ -static -UBool hasAccentsBeforeMatch(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->pattern.hasPrefixAccents) { - UCollationElements *coleiter = strsrch->textIter; - UErrorCode status = U_ZERO_ERROR; - // we have been iterating forwards previously - uint32_t ignorable = TRUE; - int32_t firstce = strsrch->pattern.ces[0]; - - setColEIterOffset(coleiter, start); - int32_t ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (U_FAILURE(status)) { - return TRUE; - } - while (ce != firstce) { - if (ce != UCOL_IGNORABLE) { - ignorable = FALSE; - } - ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (U_FAILURE(status) || ce == UCOL_NULLORDER) { - return TRUE; - } - } - if (!ignorable && inNormBuf(coleiter)) { - // within normalization buffer, discontiguous handled here - return TRUE; - } - - // within text - int32_t temp = start; - // original code - // accent = (getFCD(strsrch->search->text, &temp, - // strsrch->search->textLength) - // >> SECOND_LAST_BYTE_SHIFT_); - // however this code does not work well with VC7 .net in release mode. - // maybe the inlines for getFCD combined with shifting has bugs in - // VC7. anyways this is a work around. - UBool accent = getFCD(strsrch->search->text, &temp, - strsrch->search->textLength) > 0xFF; - if (!accent) { - return checkExtraMatchAccents(strsrch, start, end, &status); - } - if (!ignorable) { - return TRUE; - } - if (start > 0) { - temp = start; - U16_BACK_1(strsrch->search->text, 0, temp); - if (getFCD(strsrch->search->text, &temp, - strsrch->search->textLength) & LAST_BYTE_MASK_) { - setColEIterOffset(coleiter, start); - ce = ucol_previous(coleiter, &status); - if (U_FAILURE(status) || - (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE)) { - return TRUE; - } - } - } - } - - return FALSE; -} - -/** -* Used by exact matches, checks if there are accents bounding the match. -* Note this is the initial boundary check. If the potential match -* starts or ends with composite characters, the accents in those -* characters will be determined later. -* Not doing backwards iteration here, since discontiguos contraction for -* backwards collation element iterator, use up too many characters. -* E.g. looking for \u030A ring in \u01FA A ring above and acute, -* should fail since there is a acute at the end of \u01FA -* Note here that accents checking are slow and cautioned in the API docs. -* @param strsrch string search data -* @param start offset of match -* @param end end offset of the match -* @return TRUE if there are accents on either side of the match, -* FALSE otherwise -*/ -static -UBool hasAccentsAfterMatch(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->pattern.hasSuffixAccents) { - const UChar *text = strsrch->search->text; - int32_t temp = end; - int32_t textlength = strsrch->search->textLength; - U16_BACK_1(text, 0, temp); - if (getFCD(text, &temp, textlength) & LAST_BYTE_MASK_) { - int32_t firstce = strsrch->pattern.ces[0]; - UCollationElements *coleiter = strsrch->textIter; - UErrorCode status = U_ZERO_ERROR; - int32_t ce; - setColEIterOffset(coleiter, start); - while ((ce = getCE(strsrch, ucol_next(coleiter, &status))) != firstce) { - if (U_FAILURE(status) || ce == UCOL_NULLORDER) { - return TRUE; - } - } - int32_t count = 1; - while (count < strsrch->pattern.cesLength) { - if (getCE(strsrch, ucol_next(coleiter, &status)) - == UCOL_IGNORABLE) { - // Thai can give an ignorable here. - count --; - } - if (U_FAILURE(status)) { - return TRUE; - } - count ++; - } - - ce = ucol_next(coleiter, &status); - if (U_FAILURE(status)) { - return TRUE; - } - if (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE) { - ce = getCE(strsrch, ce); - } - if (ce != UCOL_NULLORDER && ce != UCOL_IGNORABLE) { - if (ucol_getOffset(coleiter) <= end) { - return TRUE; - } - if (getFCD(text, &end, textlength) >> SECOND_LAST_BYTE_SHIFT_) { - return TRUE; - } - } - } - } - return FALSE; -} -#endif // #if BOYER_MOORE - -/** -* Checks if the offset runs out of the text string -* @param offset -* @param textlength of the text string -* @return TRUE if offset is out of bounds, FALSE otherwise -*/ -static -inline UBool isOutOfBounds(int32_t textlength, int32_t offset) -{ - return offset < 0 || offset > textlength; -} - -/** -* Checks for identical match -* @param strsrch string search data -* @param start offset of possible match -* @param end offset of possible match -* @return TRUE if identical match is found -*/ -static -inline UBool checkIdentical(const UStringSearch *strsrch, int32_t start, - int32_t end) -{ - if (strsrch->strength != UCOL_IDENTICAL) { - return TRUE; - } - - // Note: We could use Normalizer::compare() or similar, but for short strings - // which may not be in FCD it might be faster to just NFD them. - UErrorCode status = U_ZERO_ERROR; - UnicodeString t2, p2; - strsrch->nfd->normalize( - UnicodeString(FALSE, strsrch->search->text + start, end - start), t2, status); - strsrch->nfd->normalize( - UnicodeString(FALSE, strsrch->pattern.text, strsrch->pattern.textLength), p2, status); - // return FALSE if NFD failed - return U_SUCCESS(status) && t2 == p2; -} - -#if BOYER_MOORE -/** -* Checks to see if the match is repeated -* @param strsrch string search data -* @param start new match start index -* @param end new match end index -* @return TRUE if the the match is repeated, FALSE otherwise -*/ -static -inline UBool checkRepeatedMatch(UStringSearch *strsrch, - int32_t start, - int32_t end) -{ - int32_t lastmatchindex = strsrch->search->matchedIndex; - UBool result; - if (lastmatchindex == USEARCH_DONE) { - return FALSE; - } - if (strsrch->search->isForwardSearching) { - result = start <= lastmatchindex; + setColEIterOffset(strsrch->textIter, strsrch->search->textLength, localStatus); } else { - result = start >= lastmatchindex; - } - if (!result && !strsrch->search->isOverlap) { - if (strsrch->search->isForwardSearching) { - result = start < lastmatchindex + strsrch->search->matchedLength; - } - else { - result = end > lastmatchindex; - } + setColEIterOffset(strsrch->textIter, 0, localStatus); } - return result; -} - -/** -* Gets the collation element iterator's current offset. -* @param coleiter collation element iterator -* @param forwards flag TRUE if we are moving in th forwards direction -* @return current offset -*/ -static -inline int32_t getColElemIterOffset(const UCollationElements *coleiter, - UBool forwards) -{ - int32_t result = ucol_getOffset(coleiter); - // intricacies of the the backwards collation element iterator - if (FALSE && !forwards && inNormBuf(coleiter) && !isFCDPointerNull(coleiter)) { - result ++; - } - return result; -} - -/** -* Checks match for contraction. -* If the match ends with a partial contraction we fail. -* If the match starts too far off (because of backwards iteration) we try to -* chip off the extra characters depending on whether a breakiterator has -* been used. -* Internal method, error assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param start offset of potential match, to be modified if necessary -* @param end offset of potential match, to be modified if necessary -* @param status output error status if any -* @return TRUE if match passes the contraction test, FALSE otherwise -*/ - -static -UBool checkNextExactContractionMatch(UStringSearch *strsrch, - int32_t *start, - int32_t *end, UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t temp = *start; - const UCollator *collator = strsrch->collator; - const UChar *text = strsrch->search->text; - // This part checks if either ends of the match contains potential - // contraction. If so we'll have to iterate through them - // The start contraction needs to be checked since ucol_previous dumps - // all characters till the first safe character into the buffer. - // *start + 1 is used to test for the unsafe characters instead of *start - // because ucol_prev takes all unsafe characters till the first safe - // character ie *start. so by testing *start + 1, we can estimate if - // excess prefix characters has been included in the potential search - // results. - if ((*end < textlength && ucol_unsafeCP(text[*end], collator)) || - (*start + 1 < textlength - && ucol_unsafeCP(text[*start + 1], collator))) { - int32_t expansion = getExpansionPrefix(coleiter); - UBool expandflag = expansion > 0; - setColEIterOffset(coleiter, *start); - while (expansion > 0) { - // getting rid of the redundant ce, caused by setOffset. - // since backward contraction/expansion may have extra ces if we - // are in the normalization buffer, hasAccentsBeforeMatch would - // have taken care of it. - // E.g. the character \u01FA will have an expansion of 3, but if - // we are only looking for acute and ring \u030A and \u0301, we'll - // have to skip the first ce in the expansion buffer. - ucol_next(coleiter, status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - expansion --; - } - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t count = 0; - while (count < patterncelength) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, status)); - if (ce == UCOL_IGNORABLE) { - continue; - } - if (expandflag && count == 0 && ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - if (U_FAILURE(*status) || ce != patternce[count]) { - (*end) ++; - *end = getNextUStringSearchBaseOffset(strsrch, *end); - return FALSE; - } - count ++; - } + // If an error occurred while setting the result to not found (ex: OOM), + // then we want to report that error back to the caller. + if (U_SUCCESS(status) && U_FAILURE(localStatus)) { + status = localStatus; } - return TRUE; } /** -* Checks and sets the match information if found. -* Checks -*

        -*
      • the potential match does not repeat the previous match -*
      • boundaries are correct -*
      • exact matches has no extra accents -*
      • identical matchesb -*
      • potential match does not end in the middle of a contraction -* <\ul> -* Otherwise the offset will be shifted to the next character. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param textoffset offset in the collation element text. the returned value -* will be the truncated end offset of the match or the new start -* search offset. -* @param status output error status if any -* @return TRUE if the match is valid, FALSE otherwise -*/ -static -inline UBool checkNextExactMatch(UStringSearch *strsrch, - int32_t *textoffset, UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t start = getColElemIterOffset(coleiter, FALSE); - - if (!checkNextExactContractionMatch(strsrch, &start, textoffset, status)) { - return FALSE; - } - - // this totally matches, however we need to check if it is repeating - if (!isBreakUnit(strsrch, start, *textoffset) || - checkRepeatedMatch(strsrch, start, *textoffset) || - hasAccentsBeforeMatch(strsrch, start, *textoffset) || - !checkIdentical(strsrch, start, *textoffset) || - hasAccentsAfterMatch(strsrch, start, *textoffset)) { - - (*textoffset) ++; - *textoffset = getNextUStringSearchBaseOffset(strsrch, *textoffset); - return FALSE; - } - - //Add breakiterator boundary check for primary strength search. - if (!strsrch->search->breakIter && strsrch->strength == UCOL_PRIMARY) { - checkBreakBoundary(strsrch, &start, textoffset); - } - - // totally match, we will get rid of the ending ignorables. - strsrch->search->matchedIndex = start; - strsrch->search->matchedLength = *textoffset - start; - return TRUE; -} - -/** -* Getting the previous base character offset, or the current offset if the -* current character is a base character -* @param text string -* @param textoffset one offset after the current character -* @return the offset of the next character after the base character or the first -* composed character with accents -*/ -static -inline int32_t getPreviousBaseOffset(const UChar *text, - int32_t textoffset) -{ - if (textoffset > 0) { - for (;;) { - int32_t result = textoffset; - U16_BACK_1(text, 0, textoffset); - int32_t temp = textoffset; - uint16_t fcd = getFCD(text, &temp, result); - if ((fcd >> SECOND_LAST_BYTE_SHIFT_) == 0) { - if (fcd & LAST_BYTE_MASK_) { - return textoffset; - } - return result; - } - if (textoffset == 0) { - return 0; - } - } - } - return textoffset; -} - -/** -* Getting the indexes of the accents that are not blocked in the argument -* accent array -* @param accents array of accents in nfd terminated by a 0. -* @param accentsindex array of indexes of the accents that are not blocked -*/ -static -inline int getUnblockedAccentIndex(UChar *accents, int32_t *accentsindex) -{ - int32_t index = 0; - int32_t length = u_strlen(accents); - UChar32 codepoint = 0; - int cclass = 0; - int result = 0; - int32_t temp; - while (index < length) { - temp = index; - U16_NEXT(accents, index, length, codepoint); - if (u_getCombiningClass(codepoint) != cclass) { - cclass = u_getCombiningClass(codepoint); - accentsindex[result] = temp; - result ++; - } - } - accentsindex[result] = length; - return result; -} - -/** -* Appends 3 UChar arrays to a destination array. -* Creates a new array if we run out of space. The caller will have to -* manually deallocate the newly allocated array. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. destination not to be NULL and has at least -* size destinationlength. -* @param destination target array -* @param destinationlength target array size, returning the appended length -* @param source1 null-terminated first array -* @param source2 second array -* @param source2length length of second array -* @param source3 null-terminated third array -* @param status error status if any -* @return new destination array, destination if there was no new allocation -*/ -static -inline UChar * addToUCharArray( UChar *destination, - int32_t *destinationlength, - const UChar *source1, - const UChar *source2, - int32_t source2length, - const UChar *source3, - UErrorCode *status) -{ - int32_t source1length = source1 ? u_strlen(source1) : 0; - int32_t source3length = source3 ? u_strlen(source3) : 0; - if (*destinationlength < source1length + source2length + source3length + - 1) - { - destination = (UChar *)allocateMemory( - (source1length + source2length + source3length + 1) * sizeof(UChar), - status); - // if error allocating memory, status will be - // U_MEMORY_ALLOCATION_ERROR - if (U_FAILURE(*status)) { - *destinationlength = 0; - return NULL; - } - } - if (source1length != 0) { - u_memcpy(destination, source1, source1length); - } - if (source2length != 0) { - uprv_memcpy(destination + source1length, source2, - sizeof(UChar) * source2length); - } - if (source3length != 0) { - uprv_memcpy(destination + source1length + source2length, source3, - sizeof(UChar) * source3length); - } - *destinationlength = source1length + source2length + source3length; - return destination; -} - -/** -* Running through a collation element iterator to see if the contents matches -* pattern in string search data -* @param strsrch string search data -* @param coleiter collation element iterator -* @return TRUE if a match if found, FALSE otherwise -*/ -static -inline UBool checkCollationMatch(const UStringSearch *strsrch, - UCollationElements *coleiter) -{ - int patternceindex = strsrch->pattern.cesLength; - int32_t *patternce = strsrch->pattern.ces; - UErrorCode status = U_ZERO_ERROR; - while (patternceindex > 0) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, &status)); - if (ce == UCOL_IGNORABLE) { - continue; - } - if (U_FAILURE(status) || ce != *patternce) { - return FALSE; - } - patternce ++; - patternceindex --; - } - return TRUE; -} - -/** -* Rearranges the front accents to try matching. -* Prefix accents in the text will be grouped according to their combining -* class and the groups will be mixed and matched to try find the perfect -* match with the pattern. -* So for instance looking for "\u0301" in "\u030A\u0301\u0325" -* step 1: split "\u030A\u0301" into 6 other type of potential accent substrings -* "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", -* "\u0301\u0325". -* step 2: check if any of the generated substrings matches the pattern. -* Internal method, status is assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search match -* @param start first offset of the accents to start searching -* @param end start of the last accent set -* @param status output error status if any -* @return USEARCH_DONE if a match is not found, otherwise return the starting -* offset of the match. Note this start includes all preceding accents. -*/ -static -int32_t doNextCanonicalPrefixMatch(UStringSearch *strsrch, - int32_t start, - int32_t end, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - int32_t textlength = strsrch->search->textLength; - int32_t tempstart = start; - - if ((getFCD(text, &tempstart, textlength) & LAST_BYTE_MASK_) == 0) { - // die... failed at a base character - return USEARCH_DONE; - } - - int32_t offset = getNextBaseOffset(text, tempstart, textlength); - start = getPreviousBaseOffset(text, tempstart); - - UChar accents[INITIAL_ARRAY_SIZE_]; - // normalizing the offensive string - unorm_normalize(text + start, offset - start, UNORM_NFD, 0, accents, - INITIAL_ARRAY_SIZE_, status); - if (U_FAILURE(*status)) { - return USEARCH_DONE; - } - - int32_t accentsindex[INITIAL_ARRAY_SIZE_]; - int32_t accentsize = getUnblockedAccentIndex(accents, - accentsindex); - int32_t count = (2 << (accentsize - 1)) - 1; - UChar buffer[INITIAL_ARRAY_SIZE_]; - UCollationElements *coleiter = strsrch->utilIter; - while (U_SUCCESS(*status) && count > 0) { - UChar *rearrange = strsrch->canonicalPrefixAccents; - // copy the base characters - for (int k = 0; k < accentsindex[0]; k ++) { - *rearrange ++ = accents[k]; - } - // forming all possible canonical rearrangement by dropping - // sets of accents - for (int i = 0; i <= accentsize - 1; i ++) { - int32_t mask = 1 << (accentsize - i - 1); - if (count & mask) { - for (int j = accentsindex[i]; j < accentsindex[i + 1]; j ++) { - *rearrange ++ = accents[j]; - } - } - } - *rearrange = 0; - int32_t matchsize = INITIAL_ARRAY_SIZE_; - UChar *match = addToUCharArray(buffer, &matchsize, - strsrch->canonicalPrefixAccents, - strsrch->search->text + offset, - end - offset, - strsrch->canonicalSuffixAccents, - status); - - // if status is a failure, ucol_setText does nothing. - // run the collator iterator through this match - ucol_setText(coleiter, match, matchsize, status); - if (U_SUCCESS(*status)) { - if (checkCollationMatch(strsrch, coleiter)) { - if (match != buffer) { - uprv_free(match); - } - return start; - } - } - count --; - } - return USEARCH_DONE; -} - -/** -* Gets the offset to the safe point in text before textoffset. -* ie. not the middle of a contraction, swappable characters or supplementary -* characters. -* @param collator collation sata -* @param text string to work with -* @param textoffset offset in string -* @param textlength length of text string -* @return offset to the previous safe character -*/ -static -inline uint32_t getPreviousSafeOffset(const UCollator *collator, - const UChar *text, - int32_t textoffset) -{ - int32_t result = textoffset; // first contraction character - while (result != 0 && ucol_unsafeCP(text[result - 1], collator)) { - result --; - } - if (result != 0) { - // the first contraction character is consider unsafe here - result --; - } - return result; -} - -/** -* Cleaning up after we passed the safe zone -* @param strsrch string search data -* @param safetext safe text array -* @param safebuffer safe text buffer -* @param coleiter collation element iterator for safe text -*/ -static -inline void cleanUpSafeText(const UStringSearch *strsrch, UChar *safetext, - UChar *safebuffer) -{ - if (safetext != safebuffer && safetext != strsrch->canonicalSuffixAccents) - { - uprv_free(safetext); - } -} - -/** -* Take the rearranged end accents and tries matching. If match failed at -* a separate preceding set of accents (separated from the rearranged on by -* at least a base character) then we rearrange the preceding accents and -* tries matching again. -* We allow skipping of the ends of the accent set if the ces do not match. -* However if the failure is found before the accent set, it fails. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param textoffset of the start of the rearranged accent -* @param status output error status if any -* @return USEARCH_DONE if a match is not found, otherwise return the starting -* offset of the match. Note this start includes all preceding accents. -*/ -static -int32_t doNextCanonicalSuffixMatch(UStringSearch *strsrch, - int32_t textoffset, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - const UCollator *collator = strsrch->collator; - int32_t safelength = 0; - UChar *safetext; - int32_t safetextlength; - UChar safebuffer[INITIAL_ARRAY_SIZE_]; - UCollationElements *coleiter = strsrch->utilIter; - int32_t safeoffset = textoffset; - - if (textoffset != 0 && ucol_unsafeCP(strsrch->canonicalSuffixAccents[0], - collator)) { - safeoffset = getPreviousSafeOffset(collator, text, textoffset); - safelength = textoffset - safeoffset; - safetextlength = INITIAL_ARRAY_SIZE_; - safetext = addToUCharArray(safebuffer, &safetextlength, NULL, - text + safeoffset, safelength, - strsrch->canonicalSuffixAccents, - status); - } - else { - safetextlength = u_strlen(strsrch->canonicalSuffixAccents); - safetext = strsrch->canonicalSuffixAccents; - } - - // if status is a failure, ucol_setText does nothing - ucol_setText(coleiter, safetext, safetextlength, status); - // status checked in loop below - - int32_t *ce = strsrch->pattern.ces; - int32_t celength = strsrch->pattern.cesLength; - int ceindex = celength - 1; - UBool isSafe = TRUE; // indication flag for position in safe zone - - while (ceindex >= 0) { - int32_t textce = ucol_previous(coleiter, status); - if (U_FAILURE(*status)) { - if (isSafe) { - cleanUpSafeText(strsrch, safetext, safebuffer); - } - return USEARCH_DONE; - } - if (textce == UCOL_NULLORDER) { - // check if we have passed the safe buffer - if (coleiter == strsrch->textIter) { - cleanUpSafeText(strsrch, safetext, safebuffer); - return USEARCH_DONE; - } - cleanUpSafeText(strsrch, safetext, safebuffer); - safetext = safebuffer; - coleiter = strsrch->textIter; - setColEIterOffset(coleiter, safeoffset); - // status checked at the start of the loop - isSafe = FALSE; - continue; - } - textce = getCE(strsrch, textce); - if (textce != UCOL_IGNORABLE && textce != ce[ceindex]) { - // do the beginning stuff - int32_t failedoffset = getColElemIterOffset(coleiter, FALSE); - if (isSafe && failedoffset >= safelength) { - // alas... no hope. failed at rearranged accent set - cleanUpSafeText(strsrch, safetext, safebuffer); - return USEARCH_DONE; - } - else { - if (isSafe) { - failedoffset += safeoffset; - cleanUpSafeText(strsrch, safetext, safebuffer); - } - - // try rearranging the front accents - int32_t result = doNextCanonicalPrefixMatch(strsrch, - failedoffset, textoffset, status); - if (result != USEARCH_DONE) { - // if status is a failure, ucol_setOffset does nothing - setColEIterOffset(strsrch->textIter, result); - } - if (U_FAILURE(*status)) { - return USEARCH_DONE; - } - return result; - } - } - if (textce == ce[ceindex]) { - ceindex --; - } - } - // set offset here - if (isSafe) { - int32_t result = getColElemIterOffset(coleiter, FALSE); - // sets the text iterator here with the correct expansion and offset - int32_t leftoverces = getExpansionPrefix(coleiter); - cleanUpSafeText(strsrch, safetext, safebuffer); - if (result >= safelength) { - result = textoffset; - } - else { - result += safeoffset; - } - setColEIterOffset(strsrch->textIter, result); - strsrch->textIter->iteratordata_.toReturn = - setExpansionPrefix(strsrch->textIter, leftoverces); - return result; - } - - return ucol_getOffset(coleiter); -} - -/** -* Trying out the substring and sees if it can be a canonical match. -* This will try normalizing the end accents and arranging them into canonical -* equivalents and check their corresponding ces with the pattern ce. -* Suffix accents in the text will be grouped according to their combining -* class and the groups will be mixed and matched to try find the perfect -* match with the pattern. -* So for instance looking for "\u0301" in "\u030A\u0301\u0325" -* step 1: split "\u030A\u0301" into 6 other type of potential accent substrings -* "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", -* "\u0301\u0325". -* step 2: check if any of the generated substrings matches the pattern. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param textoffset end offset in the collation element text that ends with -* the accents to be rearranged -* @param status error status if any -* @return TRUE if the match is valid, FALSE otherwise -*/ -static -UBool doNextCanonicalMatch(UStringSearch *strsrch, - int32_t textoffset, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - int32_t temp = textoffset; - U16_BACK_1(text, 0, temp); - if ((getFCD(text, &temp, textoffset) & LAST_BYTE_MASK_) == 0) { - UCollationElements *coleiter = strsrch->textIter; - int32_t offset = getColElemIterOffset(coleiter, FALSE); - if (strsrch->pattern.hasPrefixAccents) { - offset = doNextCanonicalPrefixMatch(strsrch, offset, textoffset, - status); - if (U_SUCCESS(*status) && offset != USEARCH_DONE) { - setColEIterOffset(coleiter, offset); - return TRUE; - } - } - return FALSE; - } - - if (!strsrch->pattern.hasSuffixAccents) { - return FALSE; - } - - UChar accents[INITIAL_ARRAY_SIZE_]; - // offset to the last base character in substring to search - int32_t baseoffset = getPreviousBaseOffset(text, textoffset); - // normalizing the offensive string - unorm_normalize(text + baseoffset, textoffset - baseoffset, UNORM_NFD, - 0, accents, INITIAL_ARRAY_SIZE_, status); - // status checked in loop below - - int32_t accentsindex[INITIAL_ARRAY_SIZE_]; - int32_t size = getUnblockedAccentIndex(accents, accentsindex); - - // 2 power n - 1 plus the full set of accents - int32_t count = (2 << (size - 1)) - 1; - while (U_SUCCESS(*status) && count > 0) { - UChar *rearrange = strsrch->canonicalSuffixAccents; - // copy the base characters - for (int k = 0; k < accentsindex[0]; k ++) { - *rearrange ++ = accents[k]; - } - // forming all possible canonical rearrangement by dropping - // sets of accents - for (int i = 0; i <= size - 1; i ++) { - int32_t mask = 1 << (size - i - 1); - if (count & mask) { - for (int j = accentsindex[i]; j < accentsindex[i + 1]; j ++) { - *rearrange ++ = accents[j]; - } - } - } - *rearrange = 0; - int32_t offset = doNextCanonicalSuffixMatch(strsrch, baseoffset, - status); - if (offset != USEARCH_DONE) { - return TRUE; // match found - } - count --; - } - return FALSE; -} - -/** -* Gets the previous base character offset depending on the string search -* pattern data -* @param strsrch string search data -* @param textoffset current offset, current character -* @return the offset of the next character after this base character or itself -* if it is a composed character with accents -*/ -static -inline int32_t getPreviousUStringSearchBaseOffset(UStringSearch *strsrch, - int32_t textoffset) -{ - if (strsrch->pattern.hasPrefixAccents && textoffset > 0) { - const UChar *text = strsrch->search->text; - int32_t offset = textoffset; - if (getFCD(text, &offset, strsrch->search->textLength) >> - SECOND_LAST_BYTE_SHIFT_) { - return getPreviousBaseOffset(text, textoffset); - } - } - return textoffset; -} - -/** -* Checks match for contraction. -* If the match ends with a partial contraction we fail. -* If the match starts too far off (because of backwards iteration) we try to -* chip off the extra characters -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param start offset of potential match, to be modified if necessary -* @param end offset of potential match, to be modified if necessary -* @param status output error status if any -* @return TRUE if match passes the contraction test, FALSE otherwise -*/ -static -UBool checkNextCanonicalContractionMatch(UStringSearch *strsrch, - int32_t *start, - int32_t *end, - UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t temp = *start; - const UCollator *collator = strsrch->collator; - const UChar *text = strsrch->search->text; - // This part checks if either ends of the match contains potential - // contraction. If so we'll have to iterate through them - if ((*end < textlength && ucol_unsafeCP(text[*end], collator)) || - (*start + 1 < textlength - && ucol_unsafeCP(text[*start + 1], collator))) { - int32_t expansion = getExpansionPrefix(coleiter); - UBool expandflag = expansion > 0; - setColEIterOffset(coleiter, *start); - while (expansion > 0) { - // getting rid of the redundant ce, caused by setOffset. - // since backward contraction/expansion may have extra ces if we - // are in the normalization buffer, hasAccentsBeforeMatch would - // have taken care of it. - // E.g. the character \u01FA will have an expansion of 3, but if - // we are only looking for acute and ring \u030A and \u0301, we'll - // have to skip the first ce in the expansion buffer. - ucol_next(coleiter, status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - expansion --; - } - - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t count = 0; - int32_t textlength = strsrch->search->textLength; - while (count < patterncelength) { - int32_t ce = getCE(strsrch, ucol_next(coleiter, status)); - // status checked below, note that if status is a failure - // ucol_next returns UCOL_NULLORDER - if (ce == UCOL_IGNORABLE) { - continue; - } - if (expandflag && count == 0 && ucol_getOffset(coleiter) != temp) { - *start = temp; - temp = ucol_getOffset(coleiter); - } - - if (count == 0 && ce != patternce[0]) { - // accents may have extra starting ces, this occurs when a - // pure accent pattern is matched without rearrangement - // text \u0325\u0300 and looking for \u0300 - int32_t expected = patternce[0]; - if (getFCD(text, start, textlength) & LAST_BYTE_MASK_) { - ce = getCE(strsrch, ucol_next(coleiter, status)); - while (U_SUCCESS(*status) && ce != expected && - ce != UCOL_NULLORDER && - ucol_getOffset(coleiter) <= *end) { - ce = getCE(strsrch, ucol_next(coleiter, status)); - } - } - } - if (U_FAILURE(*status) || ce != patternce[count]) { - (*end) ++; - *end = getNextUStringSearchBaseOffset(strsrch, *end); - return FALSE; - } - count ++; - } - } - return TRUE; -} - -/** -* Checks and sets the match information if found. -* Checks -*
          -*
        • the potential match does not repeat the previous match -*
        • boundaries are correct -*
        • potential match does not end in the middle of a contraction -*
        • identical matches -* <\ul> -* Otherwise the offset will be shifted to the next character. -* Internal method, status assumed to be success, caller has to check the -* status before calling this method. -* @param strsrch string search data -* @param textoffset offset in the collation element text. the returned value -* will be the truncated end offset of the match or the new start -* search offset. -* @param status output error status if any -* @return TRUE if the match is valid, FALSE otherwise -*/ -static -inline UBool checkNextCanonicalMatch(UStringSearch *strsrch, - int32_t *textoffset, - UErrorCode *status) -{ - // to ensure that the start and ends are not composite characters - UCollationElements *coleiter = strsrch->textIter; - // if we have a canonical accent match - if ((strsrch->pattern.hasSuffixAccents && - strsrch->canonicalSuffixAccents[0]) || - (strsrch->pattern.hasPrefixAccents && - strsrch->canonicalPrefixAccents[0])) { - strsrch->search->matchedIndex = getPreviousUStringSearchBaseOffset( - strsrch, - ucol_getOffset(coleiter)); - strsrch->search->matchedLength = *textoffset - - strsrch->search->matchedIndex; - return TRUE; - } - - int32_t start = getColElemIterOffset(coleiter, FALSE); - if (!checkNextCanonicalContractionMatch(strsrch, &start, textoffset, - status) || U_FAILURE(*status)) { - return FALSE; - } - - start = getPreviousUStringSearchBaseOffset(strsrch, start); - // this totally matches, however we need to check if it is repeating - if (checkRepeatedMatch(strsrch, start, *textoffset) || - !isBreakUnit(strsrch, start, *textoffset) || - !checkIdentical(strsrch, start, *textoffset)) { - (*textoffset) ++; - *textoffset = getNextBaseOffset(strsrch->search->text, *textoffset, - strsrch->search->textLength); - return FALSE; - } - - strsrch->search->matchedIndex = start; - strsrch->search->matchedLength = *textoffset - start; - return TRUE; -} - -/** -* Shifting the collation element iterator position forward to prepare for -* a preceding match. If the first character is a unsafe character, we'll only -* shift by 1 to capture contractions, normalization etc. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param text strsrch string search data -* @param textoffset start text position to do search -* @param ce the text ce which failed the match. -* @param patternceindex index of the ce within the pattern ce buffer which -* failed the match -* @return final offset -*/ -static -inline int32_t reverseShift(UStringSearch *strsrch, - int32_t textoffset, - int32_t ce, - int32_t patternceindex) -{ - if (strsrch->search->isOverlap) { - if (textoffset != strsrch->search->textLength) { - textoffset --; - } - else { - textoffset -= strsrch->pattern.defaultShiftSize; - } - } - else { - if (ce != UCOL_NULLORDER) { - int32_t shift = strsrch->pattern.backShift[hashFromCE32(ce)]; - - // this is to adjust for characters in the middle of the substring - // for matching that failed. - int32_t adjust = patternceindex; - if (adjust > 1 && shift > adjust) { - shift -= adjust - 1; - } - textoffset -= shift; - } - else { - textoffset -= strsrch->pattern.defaultShiftSize; - } - } - textoffset = getPreviousUStringSearchBaseOffset(strsrch, textoffset); - return textoffset; -} - -/** -* Checks match for contraction. -* If the match starts with a partial contraction we fail. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param start offset of potential match, to be modified if necessary -* @param end offset of potential match, to be modified if necessary -* @param status output error status if any -* @return TRUE if match passes the contraction test, FALSE otherwise -*/ -static -UBool checkPreviousExactContractionMatch(UStringSearch *strsrch, - int32_t *start, - int32_t *end, UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t temp = *end; - const UCollator *collator = strsrch->collator; - const UChar *text = strsrch->search->text; - // This part checks if either if the start of the match contains potential - // contraction. If so we'll have to iterate through them - // Since we used ucol_next while previously looking for the potential - // match, this guarantees that our end will not be a partial contraction, - // or a partial supplementary character. - if (*start < textlength && ucol_unsafeCP(text[*start], collator)) { - int32_t expansion = getExpansionSuffix(coleiter); - UBool expandflag = expansion > 0; - setColEIterOffset(coleiter, *end); - while (U_SUCCESS(*status) && expansion > 0) { - // getting rid of the redundant ce - // since forward contraction/expansion may have extra ces - // if we are in the normalization buffer, hasAccentsBeforeMatch - // would have taken care of it. - // E.g. the character \u01FA will have an expansion of 3, but if - // we are only looking for A ring A\u030A, we'll have to skip the - // last ce in the expansion buffer - ucol_previous(coleiter, status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (ucol_getOffset(coleiter) != temp) { - *end = temp; - temp = ucol_getOffset(coleiter); - } - expansion --; - } - - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t count = patterncelength; - while (count > 0) { - int32_t ce = getCE(strsrch, ucol_previous(coleiter, status)); - // status checked below, note that if status is a failure - // ucol_previous returns UCOL_NULLORDER - if (ce == UCOL_IGNORABLE) { - continue; - } - if (expandflag && count == 0 && - getColElemIterOffset(coleiter, FALSE) != temp) { - *end = temp; - temp = ucol_getOffset(coleiter); - } - if (U_FAILURE(*status) || ce != patternce[count - 1]) { - (*start) --; - *start = getPreviousBaseOffset(text, *start); - return FALSE; - } - count --; - } - } - return TRUE; -} - -/** -* Checks and sets the match information if found. -* Checks -*
            -*
          • the current match does not repeat the last match -*
          • boundaries are correct -*
          • exact matches has no extra accents -*
          • identical matches -* <\ul> -* Otherwise the offset will be shifted to the preceding character. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param collator -* @param coleiter collation element iterator -* @param text string -* @param textoffset offset in the collation element text. the returned value -* will be the truncated start offset of the match or the new start -* search offset. -* @param status output error status if any -* @return TRUE if the match is valid, FALSE otherwise -*/ -static -inline UBool checkPreviousExactMatch(UStringSearch *strsrch, - int32_t *textoffset, - UErrorCode *status) -{ - // to ensure that the start and ends are not composite characters - int32_t end = ucol_getOffset(strsrch->textIter); - if (!checkPreviousExactContractionMatch(strsrch, textoffset, &end, status) - || U_FAILURE(*status)) { - return FALSE; - } - - // this totally matches, however we need to check if it is repeating - // the old match - if (checkRepeatedMatch(strsrch, *textoffset, end) || - !isBreakUnit(strsrch, *textoffset, end) || - hasAccentsBeforeMatch(strsrch, *textoffset, end) || - !checkIdentical(strsrch, *textoffset, end) || - hasAccentsAfterMatch(strsrch, *textoffset, end)) { - (*textoffset) --; - *textoffset = getPreviousBaseOffset(strsrch->search->text, - *textoffset); - return FALSE; - } - - //Add breakiterator boundary check for primary strength search. - if (!strsrch->search->breakIter && strsrch->strength == UCOL_PRIMARY) { - checkBreakBoundary(strsrch, textoffset, &end); - } - - strsrch->search->matchedIndex = *textoffset; - strsrch->search->matchedLength = end - *textoffset; - return TRUE; -} - -/** -* Rearranges the end accents to try matching. -* Suffix accents in the text will be grouped according to their combining -* class and the groups will be mixed and matched to try find the perfect -* match with the pattern. -* So for instance looking for "\u0301" in "\u030A\u0301\u0325" -* step 1: split "\u030A\u0301" into 6 other type of potential accent substrings -* "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", -* "\u0301\u0325". -* step 2: check if any of the generated substrings matches the pattern. -* Internal method, status assumed to be success, user has to check status -* before calling this method. -* @param strsrch string search match -* @param start offset of the first base character -* @param end start of the last accent set -* @param status only error status if any -* @return USEARCH_DONE if a match is not found, otherwise return the ending -* offset of the match. Note this start includes all following accents. -*/ -static -int32_t doPreviousCanonicalSuffixMatch(UStringSearch *strsrch, - int32_t start, - int32_t end, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - int32_t tempend = end; - - U16_BACK_1(text, 0, tempend); - if (!(getFCD(text, &tempend, strsrch->search->textLength) & - LAST_BYTE_MASK_)) { - // die... failed at a base character - return USEARCH_DONE; - } - end = getNextBaseOffset(text, end, strsrch->search->textLength); - - if (U_SUCCESS(*status)) { - UChar accents[INITIAL_ARRAY_SIZE_]; - int32_t offset = getPreviousBaseOffset(text, end); - // normalizing the offensive string - unorm_normalize(text + offset, end - offset, UNORM_NFD, 0, accents, - INITIAL_ARRAY_SIZE_, status); - - int32_t accentsindex[INITIAL_ARRAY_SIZE_]; - int32_t accentsize = getUnblockedAccentIndex(accents, - accentsindex); - int32_t count = (2 << (accentsize - 1)) - 1; - UChar buffer[INITIAL_ARRAY_SIZE_]; - UCollationElements *coleiter = strsrch->utilIter; - while (U_SUCCESS(*status) && count > 0) { - UChar *rearrange = strsrch->canonicalSuffixAccents; - // copy the base characters - for (int k = 0; k < accentsindex[0]; k ++) { - *rearrange ++ = accents[k]; - } - // forming all possible canonical rearrangement by dropping - // sets of accents - for (int i = 0; i <= accentsize - 1; i ++) { - int32_t mask = 1 << (accentsize - i - 1); - if (count & mask) { - for (int j = accentsindex[i]; j < accentsindex[i + 1]; j ++) { - *rearrange ++ = accents[j]; - } - } - } - *rearrange = 0; - int32_t matchsize = INITIAL_ARRAY_SIZE_; - UChar *match = addToUCharArray(buffer, &matchsize, - strsrch->canonicalPrefixAccents, - strsrch->search->text + start, - offset - start, - strsrch->canonicalSuffixAccents, - status); - - // run the collator iterator through this match - // if status is a failure ucol_setText does nothing - ucol_setText(coleiter, match, matchsize, status); - if (U_SUCCESS(*status)) { - if (checkCollationMatch(strsrch, coleiter)) { - if (match != buffer) { - uprv_free(match); - } - return end; - } - } - count --; - } - } - return USEARCH_DONE; -} - -/** -* Take the rearranged start accents and tries matching. If match failed at -* a separate following set of accents (separated from the rearranged on by -* at least a base character) then we rearrange the preceding accents and -* tries matching again. -* We allow skipping of the ends of the accent set if the ces do not match. -* However if the failure is found before the accent set, it fails. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param textoffset of the ends of the rearranged accent -* @param status output error status if any -* @return USEARCH_DONE if a match is not found, otherwise return the ending -* offset of the match. Note this start includes all following accents. -*/ -static -int32_t doPreviousCanonicalPrefixMatch(UStringSearch *strsrch, - int32_t textoffset, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - const UCollator *collator = strsrch->collator; - int32_t safelength = 0; - UChar *safetext; - int32_t safetextlength; - UChar safebuffer[INITIAL_ARRAY_SIZE_]; - int32_t safeoffset = textoffset; - - if (textoffset && - ucol_unsafeCP(strsrch->canonicalPrefixAccents[ - u_strlen(strsrch->canonicalPrefixAccents) - 1 - ], collator)) { - safeoffset = getNextSafeOffset(collator, text, textoffset, - strsrch->search->textLength); - safelength = safeoffset - textoffset; - safetextlength = INITIAL_ARRAY_SIZE_; - safetext = addToUCharArray(safebuffer, &safetextlength, - strsrch->canonicalPrefixAccents, - text + textoffset, safelength, - NULL, status); - } - else { - safetextlength = u_strlen(strsrch->canonicalPrefixAccents); - safetext = strsrch->canonicalPrefixAccents; - } - - UCollationElements *coleiter = strsrch->utilIter; - // if status is a failure, ucol_setText does nothing - ucol_setText(coleiter, safetext, safetextlength, status); - // status checked in loop below - - int32_t *ce = strsrch->pattern.ces; - int32_t celength = strsrch->pattern.cesLength; - int ceindex = 0; - UBool isSafe = TRUE; // safe zone indication flag for position - int32_t prefixlength = u_strlen(strsrch->canonicalPrefixAccents); - - while (ceindex < celength) { - int32_t textce = ucol_next(coleiter, status); - if (U_FAILURE(*status)) { - if (isSafe) { - cleanUpSafeText(strsrch, safetext, safebuffer); - } - return USEARCH_DONE; - } - if (textce == UCOL_NULLORDER) { - // check if we have passed the safe buffer - if (coleiter == strsrch->textIter) { - cleanUpSafeText(strsrch, safetext, safebuffer); - return USEARCH_DONE; - } - cleanUpSafeText(strsrch, safetext, safebuffer); - safetext = safebuffer; - coleiter = strsrch->textIter; - setColEIterOffset(coleiter, safeoffset); - // status checked at the start of the loop - isSafe = FALSE; - continue; - } - textce = getCE(strsrch, textce); - if (textce != UCOL_IGNORABLE && textce != ce[ceindex]) { - // do the beginning stuff - int32_t failedoffset = ucol_getOffset(coleiter); - if (isSafe && failedoffset <= prefixlength) { - // alas... no hope. failed at rearranged accent set - cleanUpSafeText(strsrch, safetext, safebuffer); - return USEARCH_DONE; - } - else { - if (isSafe) { - failedoffset = safeoffset - failedoffset; - cleanUpSafeText(strsrch, safetext, safebuffer); - } - - // try rearranging the end accents - int32_t result = doPreviousCanonicalSuffixMatch(strsrch, - textoffset, failedoffset, status); - if (result != USEARCH_DONE) { - // if status is a failure, ucol_setOffset does nothing - setColEIterOffset(strsrch->textIter, result); - } - if (U_FAILURE(*status)) { - return USEARCH_DONE; - } - return result; - } - } - if (textce == ce[ceindex]) { - ceindex ++; - } - } - // set offset here - if (isSafe) { - int32_t result = ucol_getOffset(coleiter); - // sets the text iterator here with the correct expansion and offset - int32_t leftoverces = getExpansionSuffix(coleiter); - cleanUpSafeText(strsrch, safetext, safebuffer); - if (result <= prefixlength) { - result = textoffset; - } - else { - result = textoffset + (safeoffset - result); - } - setColEIterOffset(strsrch->textIter, result); - setExpansionSuffix(strsrch->textIter, leftoverces); - return result; - } - - return ucol_getOffset(coleiter); -} - -/** -* Trying out the substring and sees if it can be a canonical match. -* This will try normalizing the starting accents and arranging them into -* canonical equivalents and check their corresponding ces with the pattern ce. -* Prefix accents in the text will be grouped according to their combining -* class and the groups will be mixed and matched to try find the perfect -* match with the pattern. -* So for instance looking for "\u0301" in "\u030A\u0301\u0325" -* step 1: split "\u030A\u0301" into 6 other type of potential accent substrings -* "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", -* "\u0301\u0325". -* step 2: check if any of the generated substrings matches the pattern. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param textoffset start offset in the collation element text that starts -* with the accents to be rearranged -* @param status output error status if any -* @return TRUE if the match is valid, FALSE otherwise -*/ -static -UBool doPreviousCanonicalMatch(UStringSearch *strsrch, - int32_t textoffset, - UErrorCode *status) -{ - const UChar *text = strsrch->search->text; - int32_t temp = textoffset; - int32_t textlength = strsrch->search->textLength; - if ((getFCD(text, &temp, textlength) >> SECOND_LAST_BYTE_SHIFT_) == 0) { - UCollationElements *coleiter = strsrch->textIter; - int32_t offset = ucol_getOffset(coleiter); - if (strsrch->pattern.hasSuffixAccents) { - offset = doPreviousCanonicalSuffixMatch(strsrch, textoffset, - offset, status); - if (U_SUCCESS(*status) && offset != USEARCH_DONE) { - setColEIterOffset(coleiter, offset); - return TRUE; - } - } - return FALSE; - } - - if (!strsrch->pattern.hasPrefixAccents) { - return FALSE; - } - - UChar accents[INITIAL_ARRAY_SIZE_]; - // offset to the last base character in substring to search - int32_t baseoffset = getNextBaseOffset(text, textoffset, textlength); - // normalizing the offensive string - unorm_normalize(text + textoffset, baseoffset - textoffset, UNORM_NFD, - 0, accents, INITIAL_ARRAY_SIZE_, status); - // status checked in loop - - int32_t accentsindex[INITIAL_ARRAY_SIZE_]; - int32_t size = getUnblockedAccentIndex(accents, accentsindex); - - // 2 power n - 1 plus the full set of accents - int32_t count = (2 << (size - 1)) - 1; - while (U_SUCCESS(*status) && count > 0) { - UChar *rearrange = strsrch->canonicalPrefixAccents; - // copy the base characters - for (int k = 0; k < accentsindex[0]; k ++) { - *rearrange ++ = accents[k]; - } - // forming all possible canonical rearrangement by dropping - // sets of accents - for (int i = 0; i <= size - 1; i ++) { - int32_t mask = 1 << (size - i - 1); - if (count & mask) { - for (int j = accentsindex[i]; j < accentsindex[i + 1]; j ++) { - *rearrange ++ = accents[j]; - } - } - } - *rearrange = 0; - int32_t offset = doPreviousCanonicalPrefixMatch(strsrch, - baseoffset, status); - if (offset != USEARCH_DONE) { - return TRUE; // match found - } - count --; - } - return FALSE; -} - -/** -* Checks match for contraction. -* If the match starts with a partial contraction we fail. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. -* @param strsrch string search data -* @param start offset of potential match, to be modified if necessary -* @param end offset of potential match, to be modified if necessary -* @param status only error status if any -* @return TRUE if match passes the contraction test, FALSE otherwise -*/ -static -UBool checkPreviousCanonicalContractionMatch(UStringSearch *strsrch, - int32_t *start, - int32_t *end, UErrorCode *status) -{ - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t temp = *end; - const UCollator *collator = strsrch->collator; - const UChar *text = strsrch->search->text; - // This part checks if either if the start of the match contains potential - // contraction. If so we'll have to iterate through them - // Since we used ucol_next while previously looking for the potential - // match, this guarantees that our end will not be a partial contraction, - // or a partial supplementary character. - if (*start < textlength && ucol_unsafeCP(text[*start], collator)) { - int32_t expansion = getExpansionSuffix(coleiter); - UBool expandflag = expansion > 0; - setColEIterOffset(coleiter, *end); - while (expansion > 0) { - // getting rid of the redundant ce - // since forward contraction/expansion may have extra ces - // if we are in the normalization buffer, hasAccentsBeforeMatch - // would have taken care of it. - // E.g. the character \u01FA will have an expansion of 3, but if - // we are only looking for A ring A\u030A, we'll have to skip the - // last ce in the expansion buffer - ucol_previous(coleiter, status); - if (U_FAILURE(*status)) { - return FALSE; - } - if (ucol_getOffset(coleiter) != temp) { - *end = temp; - temp = ucol_getOffset(coleiter); - } - expansion --; - } - - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t count = patterncelength; - while (count > 0) { - int32_t ce = getCE(strsrch, ucol_previous(coleiter, status)); - // status checked below, note that if status is a failure - // ucol_previous returns UCOL_NULLORDER - if (ce == UCOL_IGNORABLE) { - continue; - } - if (expandflag && count == 0 && - getColElemIterOffset(coleiter, FALSE) != temp) { - *end = temp; - temp = ucol_getOffset(coleiter); - } - if (count == patterncelength && - ce != patternce[patterncelength - 1]) { - // accents may have extra starting ces, this occurs when a - // pure accent pattern is matched without rearrangement - int32_t expected = patternce[patterncelength - 1]; - U16_BACK_1(text, 0, *end); - if (getFCD(text, end, textlength) & LAST_BYTE_MASK_) { - ce = getCE(strsrch, ucol_previous(coleiter, status)); - while (U_SUCCESS(*status) && ce != expected && - ce != UCOL_NULLORDER && - ucol_getOffset(coleiter) <= *start) { - ce = getCE(strsrch, ucol_previous(coleiter, status)); - } - } - } - if (U_FAILURE(*status) || ce != patternce[count - 1]) { - (*start) --; - *start = getPreviousBaseOffset(text, *start); - return FALSE; - } - count --; - } - } - return TRUE; +* Checks if the offset runs out of the text string +* @param offset +* @param textlength of the text string +* @return TRUE if offset is out of bounds, FALSE otherwise +*/ +static +inline UBool isOutOfBounds(int32_t textlength, int32_t offset) +{ + return offset < 0 || offset > textlength; } /** -* Checks and sets the match information if found. -* Checks -*
              -*
            • the potential match does not repeat the previous match -*
            • boundaries are correct -*
            • potential match does not end in the middle of a contraction -*
            • identical matches -* <\ul> -* Otherwise the offset will be shifted to the next character. -* Internal method, status assumed to be success, caller has to check status -* before calling this method. +* Checks for identical match * @param strsrch string search data -* @param textoffset offset in the collation element text. the returned value -* will be the truncated start offset of the match or the new start -* search offset. -* @param status only error status if any -* @return TRUE if the match is valid, FALSE otherwise +* @param start offset of possible match +* @param end offset of possible match +* @return TRUE if identical match is found */ static -inline UBool checkPreviousCanonicalMatch(UStringSearch *strsrch, - int32_t *textoffset, - UErrorCode *status) +inline UBool checkIdentical(const UStringSearch *strsrch, int32_t start, int32_t end) { - // to ensure that the start and ends are not composite characters - UCollationElements *coleiter = strsrch->textIter; - // if we have a canonical accent match - if ((strsrch->pattern.hasSuffixAccents && - strsrch->canonicalSuffixAccents[0]) || - (strsrch->pattern.hasPrefixAccents && - strsrch->canonicalPrefixAccents[0])) { - strsrch->search->matchedIndex = *textoffset; - strsrch->search->matchedLength = - getNextUStringSearchBaseOffset(strsrch, - getColElemIterOffset(coleiter, FALSE)) - - *textoffset; + if (strsrch->strength != UCOL_IDENTICAL) { return TRUE; } - int32_t end = ucol_getOffset(coleiter); - if (!checkPreviousCanonicalContractionMatch(strsrch, textoffset, &end, - status) || - U_FAILURE(*status)) { - return FALSE; - } - - end = getNextUStringSearchBaseOffset(strsrch, end); - // this totally matches, however we need to check if it is repeating - if (checkRepeatedMatch(strsrch, *textoffset, end) || - !isBreakUnit(strsrch, *textoffset, end) || - !checkIdentical(strsrch, *textoffset, end)) { - (*textoffset) --; - *textoffset = getPreviousBaseOffset(strsrch->search->text, - *textoffset); - return FALSE; - } - - strsrch->search->matchedIndex = *textoffset; - strsrch->search->matchedLength = end - *textoffset; - return TRUE; + // Note: We could use Normalizer::compare() or similar, but for short strings + // which may not be in FCD it might be faster to just NFD them. + UErrorCode status = U_ZERO_ERROR; + UnicodeString t2, p2; + strsrch->nfd->normalize( + UnicodeString(FALSE, strsrch->search->text + start, end - start), t2, status); + strsrch->nfd->normalize( + UnicodeString(FALSE, strsrch->pattern.text, strsrch->pattern.textLength), p2, status); + // return FALSE if NFD failed + return U_SUCCESS(status) && t2 == p2; } -#endif // #if BOYER_MOORE // constructors and destructor ------------------------------------------- @@ -2599,12 +547,12 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern, UErrorCode *status) { if (U_FAILURE(*status)) { - return NULL; + return nullptr; } #if UCONFIG_NO_BREAK_ITERATION - if (breakiter != NULL) { + if (breakiter != nullptr) { *status = U_UNSUPPORTED_ERROR; - return NULL; + return nullptr; } #endif if (locale) { @@ -2615,11 +563,11 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern, patternlength, text, textlength, collator, breakiter, status); - if (result == NULL || U_FAILURE(*status)) { + if (result == nullptr || U_FAILURE(*status)) { if (collator) { ucol_close(collator); } - return NULL; + return nullptr; } else { result->ownCollator = TRUE; @@ -2627,7 +575,7 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern, return result; } *status = U_ILLEGAL_ARGUMENT_ERROR; - return NULL; + return nullptr; } U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( @@ -2640,29 +588,29 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( UErrorCode *status) { if (U_FAILURE(*status)) { - return NULL; + return nullptr; } #if UCONFIG_NO_BREAK_ITERATION - if (breakiter != NULL) { + if (breakiter != nullptr) { *status = U_UNSUPPORTED_ERROR; - return NULL; + return nullptr; } #endif - if (pattern == NULL || text == NULL || collator == NULL) { + if (pattern == nullptr || text == nullptr || collator == nullptr) { *status = U_ILLEGAL_ARGUMENT_ERROR; - return NULL; + return nullptr; } // string search does not really work when numeric collation is turned on if(ucol_getAttribute(collator, UCOL_NUMERIC_COLLATION, status) == UCOL_ON) { *status = U_UNSUPPORTED_ERROR; - return NULL; + return nullptr; } if (U_SUCCESS(*status)) { initializeFCD(status); if (U_FAILURE(*status)) { - return NULL; + return nullptr; } UStringSearch *result; @@ -2674,13 +622,13 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( } if (textlength <= 0 || patternlength <= 0) { *status = U_ILLEGAL_ARGUMENT_ERROR; - return NULL; + return nullptr; } result = (UStringSearch *)uprv_malloc(sizeof(UStringSearch)); - if (result == NULL) { + if (result == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; - return NULL; + return nullptr; } result->collator = collator; @@ -2695,14 +643,14 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( if (U_FAILURE(*status)) { uprv_free(result); - return NULL; + return nullptr; } result->search = (USearch *)uprv_malloc(sizeof(USearch)); - if (result->search == NULL) { + if (result->search == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; uprv_free(result); - return NULL; + return nullptr; } result->search->text = text; @@ -2710,12 +658,12 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( result->pattern.text = pattern; result->pattern.textLength = patternlength; - result->pattern.ces = NULL; - result->pattern.pces = NULL; + result->pattern.ces = nullptr; + result->pattern.pces = nullptr; result->search->breakIter = breakiter; #if !UCONFIG_NO_BREAK_ITERATION - result->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, ucol_getLocaleByType(result->collator, ULOC_VALID_LOCALE, status), text, textlength, status); + result->search->internalBreakIter = nullptr; // Lazily created. if (breakiter) { ubrk_setText(breakiter, text, textlength, status); } @@ -2724,13 +672,13 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( result->ownCollator = FALSE; result->search->matchedLength = 0; result->search->matchedIndex = USEARCH_DONE; - result->utilIter = NULL; + result->utilIter = nullptr; result->textIter = ucol_openElements(collator, text, textlength, status); - result->textProcessedIter = NULL; + result->textProcessedIter = nullptr; if (U_FAILURE(*status)) { usearch_close(result); - return NULL; + return nullptr; } result->search->isOverlap = FALSE; @@ -2743,12 +691,12 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator( if (U_FAILURE(*status)) { usearch_close(result); - return NULL; + return nullptr; } return result; } - return NULL; + return nullptr; } U_CAPI void U_EXPORT2 usearch_close(UStringSearch *strsrch) @@ -2759,7 +707,7 @@ U_CAPI void U_EXPORT2 usearch_close(UStringSearch *strsrch) uprv_free(strsrch->pattern.ces); } - if (strsrch->pattern.pces != NULL && + if (strsrch->pattern.pces != nullptr && strsrch->pattern.pces != strsrch->pattern.pcesBuffer) { uprv_free(strsrch->pattern.pces); } @@ -2773,7 +721,7 @@ U_CAPI void U_EXPORT2 usearch_close(UStringSearch *strsrch) } #if !UCONFIG_NO_BREAK_ITERATION - if (strsrch->search->internalBreakIter) { + if (strsrch->search->internalBreakIter != nullptr) { ubrk_close(strsrch->search->internalBreakIter); } #endif @@ -2787,9 +735,9 @@ namespace { UBool initTextProcessedIter(UStringSearch *strsrch, UErrorCode *status) { if (U_FAILURE(*status)) { return FALSE; } - if (strsrch->textProcessedIter == NULL) { + if (strsrch->textProcessedIter == nullptr) { strsrch->textProcessedIter = new icu::UCollationPCE(strsrch->textIter); - if (strsrch->textProcessedIter == NULL) { + if (strsrch->textProcessedIter == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; return FALSE; } @@ -2804,7 +752,7 @@ UBool initTextProcessedIter(UStringSearch *strsrch, UErrorCode *status) { // set and get methods -------------------------------------------------- U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, - int32_t position, + int32_t position, UErrorCode *status) { if (U_SUCCESS(*status) && strsrch) { @@ -2812,7 +760,7 @@ U_CAPI void U_EXPORT2 usearch_setOffset(UStringSearch *strsrch, *status = U_INDEX_OUTOFBOUNDS_ERROR; } else { - setColEIterOffset(strsrch->textIter, position); + setColEIterOffset(strsrch->textIter, position, *status); } strsrch->search->matchedIndex = USEARCH_DONE; strsrch->search->matchedLength = 0; @@ -2832,10 +780,10 @@ U_CAPI int32_t U_EXPORT2 usearch_getOffset(const UStringSearch *strsrch) return USEARCH_DONE; } -U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch *strsrch, - USearchAttribute attribute, - USearchAttributeValue value, - UErrorCode *status) +U_CAPI void U_EXPORT2 usearch_setAttribute(UStringSearch *strsrch, + USearchAttribute attribute, + USearchAttributeValue value, + UErrorCode *status) { if (U_SUCCESS(*status) && strsrch) { switch (attribute) @@ -2895,7 +843,7 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute( U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart( const UStringSearch *strsrch) { - if (strsrch == NULL) { + if (strsrch == nullptr) { return USEARCH_DONE; } return strsrch->search->matchedIndex; @@ -2910,8 +858,8 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch, if (U_FAILURE(*status)) { return USEARCH_DONE; } - if (strsrch == NULL || resultCapacity < 0 || (resultCapacity > 0 && - result == NULL)) { + if (strsrch == nullptr || resultCapacity < 0 || (resultCapacity > 0 && + result == nullptr)) { *status = U_ILLEGAL_ARGUMENT_ERROR; return USEARCH_DONE; } @@ -2964,7 +912,7 @@ usearch_getBreakIterator(const UStringSearch *strsrch) if (strsrch) { return strsrch->search->breakIter; } - return NULL; + return nullptr; } #endif @@ -2975,7 +923,7 @@ U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, UErrorCode *status) { if (U_SUCCESS(*status)) { - if (strsrch == NULL || text == NULL || textlength < -1 || + if (strsrch == nullptr || text == nullptr || textlength < -1 || textlength == 0) { *status = U_ILLEGAL_ARGUMENT_ERROR; } @@ -2990,11 +938,13 @@ U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch, strsrch->search->matchedLength = 0; strsrch->search->reset = TRUE; #if !UCONFIG_NO_BREAK_ITERATION - if (strsrch->search->breakIter != NULL) { + if (strsrch->search->breakIter != nullptr) { ubrk_setText(strsrch->search->breakIter, text, textlength, status); } - ubrk_setText(strsrch->search->internalBreakIter, text, textlength, status); + if (strsrch->search->internalBreakIter != nullptr) { + ubrk_setText(strsrch->search->internalBreakIter, text, textlength, status); + } #endif } } @@ -3007,7 +957,7 @@ U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch, *length = strsrch->search->textLength; return strsrch->search->text; } - return NULL; + return nullptr; } U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, @@ -3015,17 +965,17 @@ U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, UErrorCode *status) { if (U_SUCCESS(*status)) { - if (collator == NULL) { + if (collator == nullptr) { *status = U_ILLEGAL_ARGUMENT_ERROR; return; } if (strsrch) { delete strsrch->textProcessedIter; - strsrch->textProcessedIter = NULL; + strsrch->textProcessedIter = nullptr; ucol_closeElements(strsrch->textIter); ucol_closeElements(strsrch->utilIter); - strsrch->textIter = strsrch->utilIter = NULL; + strsrch->textIter = strsrch->utilIter = nullptr; if (strsrch->ownCollator && (strsrch->collator != collator)) { ucol_close((UCollator *)strsrch->collator); strsrch->ownCollator = FALSE; @@ -3034,9 +984,10 @@ U_CAPI void U_EXPORT2 usearch_setCollator( UStringSearch *strsrch, strsrch->strength = ucol_getStrength(collator); strsrch->ceMask = getMask(strsrch->strength); #if !UCONFIG_NO_BREAK_ITERATION - ubrk_close(strsrch->search->internalBreakIter); - strsrch->search->internalBreakIter = ubrk_open(UBRK_CHARACTER, ucol_getLocaleByType(collator, ULOC_VALID_LOCALE, status), - strsrch->search->text, strsrch->search->textLength, status); + if (strsrch->search->internalBreakIter != nullptr) { + ubrk_close(strsrch->search->internalBreakIter); + strsrch->search->internalBreakIter = nullptr; // Lazily created. + } #endif // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT strsrch->toShift = @@ -3069,7 +1020,7 @@ U_CAPI UCollator * U_EXPORT2 usearch_getCollator(const UStringSearch *strsrch) if (strsrch) { return (UCollator *)strsrch->collator; } - return NULL; + return nullptr; } U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, @@ -3078,7 +1029,7 @@ U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, UErrorCode *status) { if (U_SUCCESS(*status)) { - if (strsrch == NULL || pattern == NULL) { + if (strsrch == nullptr || pattern == nullptr) { *status = U_ILLEGAL_ARGUMENT_ERROR; } else { @@ -3098,19 +1049,19 @@ U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch, U_CAPI const UChar* U_EXPORT2 usearch_getPattern(const UStringSearch *strsrch, - int32_t *length) + int32_t *length) { if (strsrch) { *length = strsrch->pattern.textLength; return strsrch->pattern.text; } - return NULL; + return nullptr; } -// miscellanous methods -------------------------------------------------- +// miscellaneous methods -------------------------------------------------- U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, - UErrorCode *status) + UErrorCode *status) { if (strsrch && U_SUCCESS(*status)) { strsrch->search->isForwardSearching = TRUE; @@ -3123,8 +1074,8 @@ U_CAPI int32_t U_EXPORT2 usearch_first(UStringSearch *strsrch, } U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, - int32_t position, - UErrorCode *status) + int32_t position, + UErrorCode *status) { if (strsrch && U_SUCCESS(*status)) { strsrch->search->isForwardSearching = TRUE; @@ -3138,7 +1089,7 @@ U_CAPI int32_t U_EXPORT2 usearch_following(UStringSearch *strsrch, } U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, - UErrorCode *status) + UErrorCode *status) { if (strsrch && U_SUCCESS(*status)) { strsrch->search->isForwardSearching = FALSE; @@ -3151,8 +1102,8 @@ U_CAPI int32_t U_EXPORT2 usearch_last(UStringSearch *strsrch, } U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, - int32_t position, - UErrorCode *status) + int32_t position, + UErrorCode *status) { if (strsrch && U_SUCCESS(*status)) { strsrch->search->isForwardSearching = FALSE; @@ -3188,7 +1139,7 @@ U_CAPI int32_t U_EXPORT2 usearch_preceding(UStringSearch *strsrch, * element iterator before using this method. */ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, - UErrorCode *status) + UErrorCode *status) { if (U_SUCCESS(*status) && strsrch) { // note offset is either equivalent to the start of the previous match @@ -3198,26 +1149,14 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, search->reset = FALSE; int32_t textlength = search->textLength; if (search->isForwardSearching) { -#if BOYER_MOORE - if (offset == textlength - || (!search->isOverlap && - (offset + strsrch->pattern.defaultShiftSize > textlength || - (search->matchedIndex != USEARCH_DONE && - offset + search->matchedLength >= textlength)))) { - // not enough characters to match - setMatchNotFound(strsrch); - return USEARCH_DONE; - } -#else if (offset == textlength || (! search->isOverlap && (search->matchedIndex != USEARCH_DONE && offset + search->matchedLength > textlength))) { // not enough characters to match - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return USEARCH_DONE; } -#endif } else { // switching direction. @@ -3243,7 +1182,7 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, } search->matchedLength = 0; - setColEIterOffset(strsrch->textIter, search->matchedIndex); + setColEIterOffset(strsrch->textIter, search->matchedIndex, *status); // status checked below if (search->matchedIndex == textlength) { search->matchedIndex = USEARCH_DONE; @@ -3262,7 +1201,7 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, } else { // for boundary check purposes. this will ensure that the - // next match will not preceed the current offset + // next match will not precede the current offset // note search->matchedIndex will always be set to something // in the code search->matchedIndex = offset - 1; @@ -3281,13 +1220,11 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, return USEARCH_DONE; } -#if !BOYER_MOORE if (search->matchedIndex == USEARCH_DONE) { ucol_setOffset(strsrch->textIter, search->textLength, status); } else { ucol_setOffset(strsrch->textIter, search->matchedIndex, status); } -#endif return search->matchedIndex; } @@ -3296,7 +1233,7 @@ U_CAPI int32_t U_EXPORT2 usearch_next(UStringSearch *strsrch, } U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, - UErrorCode *status) + UErrorCode *status) { if (U_SUCCESS(*status) && strsrch) { int32_t offset; @@ -3305,7 +1242,7 @@ U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, offset = search->textLength; search->isForwardSearching = FALSE; search->reset = FALSE; - setColEIterOffset(strsrch->textIter, offset); + setColEIterOffset(strsrch->textIter, offset, *status); } else { offset = usearch_getOffset(strsrch); @@ -3324,24 +1261,13 @@ U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, } } else { -#if BOYER_MOORE - if (offset == 0 || matchedindex == 0 || - (!search->isOverlap && - (offset < strsrch->pattern.defaultShiftSize || - (matchedindex != USEARCH_DONE && - matchedindex < strsrch->pattern.defaultShiftSize)))) { - // not enough characters to match - setMatchNotFound(strsrch); - return USEARCH_DONE; - } -#else + // Could check pattern length, but the // linear search will do the right thing if (offset == 0 || matchedindex == 0) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return USEARCH_DONE; } -#endif } if (U_SUCCESS(*status)) { @@ -3349,12 +1275,12 @@ U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch, search->matchedIndex = (matchedindex == USEARCH_DONE ? offset : matchedindex); if (search->matchedIndex == 0) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); // status checked below } else { // move by codepoints U16_BACK_1(search->text, 0, search->matchedIndex); - setColEIterOffset(strsrch->textIter, search->matchedIndex); + setColEIterOffset(strsrch->textIter, search->matchedIndex, *status); // status checked below search->matchedLength = 0; } @@ -3509,7 +1435,7 @@ CEIBuffer::CEIBuffer(UStringSearch *ss, UErrorCode *status) { if (bufSize>DEFAULT_CEBUFFER_SIZE) { buf = (CEI *)uprv_malloc(bufSize * sizeof(CEI)); - if (buf == NULL) { + if (buf == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; } } @@ -3544,12 +1470,13 @@ const CEI *CEIBuffer::get(int32_t index) { // Verify that it is the next one in sequence, which is all // that is allowed. if (index != limitIx) { - U_ASSERT(FALSE); - // TODO: In ICU 64 the above assert was changed to use UPRV_UNREACHABLE instead - // which unconditionally calls abort(). However, there were cases where this was - // being hit. This change is reverted for now, restoring the existing behavior. + UPRV_UNREACHABLE_ASSERT; + // TODO: In ICU 64 the above was changed from U_ASSERT to UPRV_UNREACHABLE, + // which unconditionally called abort(). However, there were cases in which it + // was being hit, so it was changed back to U_ASSERT per ICU-20680. In ICU 70, + // we now use the new UPRV_UNREACHABLE_ASSERT to better indicate the situation. // ICU-20792 tracks the follow-up work/further investigation on this. - return NULL; + return nullptr; } // Manage the circular CE buffer indexing @@ -3586,12 +1513,13 @@ const CEI *CEIBuffer::getPrevious(int32_t index) { // Verify that it is the next one in sequence, which is all // that is allowed. if (index != limitIx) { - U_ASSERT(FALSE); - // TODO: In ICU 64 the above assert was changed to use UPRV_UNREACHABLE instead - // which unconditionally calls abort(). However, there were cases where this was - // being hit. This change is reverted for now, restoring the existing behavior. + UPRV_UNREACHABLE_ASSERT; + // TODO: In ICU 64 the above was changed from U_ASSERT to UPRV_UNREACHABLE, + // which unconditionally called abort(). However, there were cases in which it + // was being hit, so it was changed back to U_ASSERT per ICU-20680. In ICU 70, + // we now use the new UPRV_UNREACHABLE_ASSERT to better indicate the situation. // ICU-20792 tracks the follow-up work/further investigation on this. - return NULL; + return nullptr; } // Manage the circular CE buffer indexing @@ -3626,7 +1554,10 @@ U_NAMESPACE_END * has an external break iterator, use that. Otherwise use the internal character * break iterator. */ -static int32_t nextBoundaryAfter(UStringSearch *strsrch, int32_t startIndex) { +static int32_t nextBoundaryAfter(UStringSearch *strsrch, int32_t startIndex, UErrorCode &status) { + if (U_FAILURE(status)) { + return startIndex; + } #if 0 const UChar *text = strsrch->search->text; int32_t textLen = strsrch->search->textLength; @@ -3665,17 +1596,12 @@ static int32_t nextBoundaryAfter(UStringSearch *strsrch, int32_t startIndex) { } return indexOfLastCharChecked; #elif !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->breakIter; - - if (breakiterator == NULL) { - breakiterator = strsrch->search->internalBreakIter; - } - - if (breakiterator != NULL) { - return ubrk_following(breakiterator, startIndex); + UBreakIterator *breakiterator = getBreakIterator(strsrch, status); + if (U_FAILURE(status)) { + return startIndex; } - return startIndex; + return ubrk_following(breakiterator, startIndex); #else // **** or should we use the original code? **** return startIndex; @@ -3688,7 +1614,10 @@ static int32_t nextBoundaryAfter(UStringSearch *strsrch, int32_t startIndex) { * has an external break iterator, test using that, otherwise test * using the internal character break iterator. */ -static UBool isBreakBoundary(UStringSearch *strsrch, int32_t index) { +static UBool isBreakBoundary(UStringSearch *strsrch, int32_t index, UErrorCode &status) { + if (U_FAILURE(status)) { + return TRUE; + } #if 0 const UChar *text = strsrch->search->text; int32_t textLen = strsrch->search->textLength; @@ -3716,13 +1645,12 @@ static UBool isBreakBoundary(UStringSearch *strsrch, int32_t index) { UBool combining = !(gcProperty==U_GCB_CONTROL || gcProperty==U_GCB_LF || gcProperty==U_GCB_CR); return !combining; #elif !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->breakIter; - - if (breakiterator == NULL) { - breakiterator = strsrch->search->internalBreakIter; + UBreakIterator *breakiterator = getBreakIterator(strsrch, status); + if (U_FAILURE(status)) { + return TRUE; } - return (breakiterator != NULL && ubrk_isBoundary(breakiterator, index)); + return ubrk_isBoundary(breakiterator, index); #else // **** or use the original code? **** return TRUE; @@ -3730,12 +1658,15 @@ static UBool isBreakBoundary(UStringSearch *strsrch, int32_t index) { } #if 0 -static UBool onBreakBoundaries(const UStringSearch *strsrch, int32_t start, int32_t end) +static UBool onBreakBoundaries(const UStringSearch *strsrch, int32_t start, int32_t end, UErrorCode &status) { -#if !UCONFIG_NO_BREAK_ITERATION - UBreakIterator *breakiterator = strsrch->search->breakIter; + if (U_FAILURE(status)) { + return TRUE; + } - if (breakiterator != NULL) { +#if !UCONFIG_NO_BREAK_ITERATION + UBreakIterator *breakiterator = getBreakIterator(strsrch, status); + if (U_SUCCESS(status)) { int32_t startindex = ubrk_first(breakiterator); int32_t endindex = ubrk_last(breakiterator); @@ -3770,7 +1701,7 @@ static UCompareCEsResult compareCE64s(int64_t targCE, int64_t patCE, int16_t com if (compareType == 0) { return U_CE_NO_MATCH; } - + int64_t targCEshifted = targCE >> 32; int64_t patCEshifted = patCE >> 32; int64_t mask; @@ -3801,7 +1732,7 @@ static UCompareCEsResult compareCE64s(int64_t targCE, int64_t patCE, int16_t com return (patLev2 == U_CE_LEVEL2_BASE || (compareType == USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD && targLev2 == U_CE_LEVEL2_BASE) )? U_CE_MATCH: U_CE_NO_MATCH; } - + mask = 0xFFFF0000; int32_t targLev3 = (int32_t)(targCE & mask); int32_t patLev3 = (int32_t)(patCE & mask); @@ -3813,10 +1744,6 @@ static UCompareCEsResult compareCE64s(int64_t targCE, int64_t patCE, int16_t com return U_CE_MATCH; } -#if BOYER_MOORE -// TODO: #if BOYER_MOORE, need 32-bit version of compareCE64s -#endif - namespace { UChar32 codePointAt(const USearch &search, int32_t index) { @@ -3852,7 +1779,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // TODO: reject search patterns beginning with a combining char. #ifdef USEARCH_DEBUG - if (getenv("USEARCH_DEBUG") != NULL) { + if (getenv("USEARCH_DEBUG") != nullptr) { printf("Pattern CEs\n"); for (int ii=0; iipattern.cesLength; ii++) { printf(" %8x", strsrch->pattern.ces[ii]); @@ -3867,21 +1794,26 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, if(strsrch->pattern.cesLength == 0 || startIdx < 0 || startIdx > strsrch->search->textLength || - strsrch->pattern.ces == NULL) { + strsrch->pattern.ces == nullptr) { *status = U_ILLEGAL_ARGUMENT_ERROR; return FALSE; } - if (strsrch->pattern.pces == NULL) { + if (strsrch->pattern.pces == nullptr) { initializePatternPCETable(strsrch, status); } ucol_setOffset(strsrch->textIter, startIdx, status); CEIBuffer ceb(strsrch, status); + // An out-of-memory (OOM) failure can occur in the initializePatternPCETable function + // or CEIBuffer constructor above, so we need to check the status. + if (U_FAILURE(*status)) { + return FALSE; + } int32_t targetIx = 0; - const CEI *targetCEI = NULL; + const CEI *targetCEI = nullptr; int32_t patIx; UBool found; @@ -3900,7 +1832,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // 2. An int64_t CE weight is determined for each resulting unit (high 16 bits are primary strength, next // 16 bits are secondary, next 16 (the high 16 bits of the low 32-bit half) are tertiary. Any of these // fields that are for strengths below that of the collator are set to 0. If this makes the int64_t - // CE weight 0 (as for a combining diacritic with secondary weight when the collator strentgh is primary), + // CE weight 0 (as for a combining diacritic with secondary weight when the collator strength is primary), // then the CE is deleted, so the following code sees only CEs that are relevant. // For each CE, the lowIndex and highIndex correspond to where this CE begins and ends in the original text. // If lowIndex==highIndex, either the CE resulted from an expansion/decomposition of one of the original text @@ -3915,14 +1847,14 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, int64_t patCE = 0; // For targetIx > 0, this ceb.get gets a CE that is as far back in the ring buffer // (compared to the last CE fetched for the previous targetIx value) as we need to go - // for this targetIx value, so if it is non-NULL then other ceb.get calls should be OK. + // for this targetIx value, so if it is non-nullptr then other ceb.get calls should be OK. const CEI *firstCEI = ceb.get(targetIx); - if (firstCEI == NULL) { + if (firstCEI == nullptr) { *status = U_INTERNAL_PROGRAM_ERROR; found = FALSE; break; } - + for (patIx=0; patIxpattern.pcesLength; patIx++) { patCE = strsrch->pattern.pces[patIx]; targetCEI = ceb.get(targetIx+patIx+targetIxOffset); @@ -3946,7 +1878,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, } targetIxOffset += strsrch->pattern.pcesLength; // this is now the offset in target CE space to end of the match so far - if (!found && ((targetCEI == NULL) || (targetCEI->ce != UCOL_PROCESSED_NULLORDER))) { + if (!found && ((targetCEI == nullptr) || (targetCEI->ce != UCOL_PROCESSED_NULLORDER))) { // No match at this targetIx. Try again at the next. continue; } @@ -4018,9 +1950,12 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // to something else. // This type of match should be rejected for not completely consuming a // combining sequence. - if (!isBreakBoundary(strsrch, mStart)) { + if (!isBreakBoundary(strsrch, mStart, *status)) { found = FALSE; } + if (U_FAILURE(*status)) { + break; + } // Check for the start of the match being within an Collation Element Expansion, // meaning that the first char of the match is only partially matched. @@ -4044,10 +1979,10 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // tests in any case) // * the match limit is a normalization boundary UBool allowMidclusterMatch = FALSE; - if (strsrch->search->text != NULL && strsrch->search->textLength > maxLimit) { + if (strsrch->search->text != nullptr && strsrch->search->textLength > maxLimit) { allowMidclusterMatch = - strsrch->search->breakIter == NULL && - nextCEI != NULL && (((nextCEI->ce) >> 32) & 0xFFFF0000UL) != 0 && + strsrch->search->breakIter == nullptr && + nextCEI != nullptr && (((nextCEI->ce) >> 32) & 0xFFFF0000UL) != 0 && maxLimit >= lastCEI->highIndex && nextCEI->highIndex > maxLimit && (strsrch->nfd->hasBoundaryBefore(codePointAt(*strsrch->search, maxLimit)) || strsrch->nfd->hasBoundaryAfter(codePointBefore(*strsrch->search, maxLimit))); @@ -4070,10 +2005,10 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, // at the break boundary, move the position to the next boundary will result // incorrect match length when there are ignorable characters exist between // the position and the next character produces CE(s). See ticket#8482. - if (minLimit == lastCEI->highIndex && isBreakBoundary(strsrch, minLimit)) { + if (minLimit == lastCEI->highIndex && isBreakBoundary(strsrch, minLimit, *status)) { mLimit = minLimit; } else { - int32_t nba = nextBoundaryAfter(strsrch, minLimit); + int32_t nba = nextBoundaryAfter(strsrch, minLimit, *status); // Note that we can have nba < maxLimit && nba >= minLImit, in which // case we want to set mLimit to nba regardless of allowMidclusterMatch // (i.e. we back off mLimit to the previous breakIterator boundary). @@ -4083,8 +2018,12 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, } } + if (U_FAILURE(*status)) { + break; + } + #ifdef USEARCH_DEBUG - if (getenv("USEARCH_DEBUG") != NULL) { + if (getenv("USEARCH_DEBUG") != nullptr) { printf("minLimit, maxLimit, mLimit = %d, %d, %d\n", minLimit, maxLimit, mLimit); } #endif @@ -4096,9 +2035,12 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, found = FALSE; } - if (!isBreakBoundary(strsrch, mLimit)) { + if (!isBreakBoundary(strsrch, mLimit, *status)) { found = FALSE; } + if (U_FAILURE(*status)) { + break; + } } if (! checkIdentical(strsrch, mStart, mLimit)) { @@ -4111,7 +2053,7 @@ U_CAPI UBool U_EXPORT2 usearch_search(UStringSearch *strsrch, } #ifdef USEARCH_DEBUG - if (getenv("USEARCH_DEBUG") != NULL) { + if (getenv("USEARCH_DEBUG") != nullptr) { printf("Target CEs [%d .. %d]\n", ceb.firstIx, ceb.limitIx); int32_t lastToPrint = ceb.limitIx+2; for (int ii=ceb.firstIx; iipattern.cesLength; ii++) { printf(" %8x", strsrch->pattern.ces[ii]); @@ -4162,17 +2109,17 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, #endif // Input parameter sanity check. - // TODO: should input indicies clip to the text length + // TODO: should input indices clip to the text length // in the same way that UText does. - if(strsrch->pattern.cesLength == 0 || + if(strsrch->pattern.cesLength == 0 || startIdx < 0 || startIdx > strsrch->search->textLength || - strsrch->pattern.ces == NULL) { + strsrch->pattern.ces == nullptr) { *status = U_ILLEGAL_ARGUMENT_ERROR; return FALSE; } - if (strsrch->pattern.pces == NULL) { + if (strsrch->pattern.pces == nullptr) { initializePatternPCETable(strsrch, status); } @@ -4189,8 +2136,11 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, * consider for the match. */ if (startIdx < strsrch->search->textLength) { - UBreakIterator *bi = strsrch->search->internalBreakIter; - int32_t next = ubrk_following(bi, startIdx); + UBreakIterator *breakiterator = getBreakIterator(strsrch, *status); + if (U_FAILURE(*status)) { + return FALSE; + } + int32_t next = ubrk_following(breakiterator, startIdx); ucol_setOffset(strsrch->textIter, next, status); @@ -4203,8 +2153,12 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, ucol_setOffset(strsrch->textIter, startIdx, status); } + // An out-of-memory (OOM) failure can occur above, so we need to check the status. + if (U_FAILURE(*status)) { + return FALSE; + } - const CEI *targetCEI = NULL; + const CEI *targetCEI = nullptr; int32_t patIx; UBool found; @@ -4227,9 +2181,9 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, found = TRUE; // For targetIx > limitIx, this ceb.getPrevious gets a CE that is as far back in the ring buffer // (compared to the last CE fetched for the previous targetIx value) as we need to go - // for this targetIx value, so if it is non-NULL then other ceb.getPrevious calls should be OK. + // for this targetIx value, so if it is non-nullptr then other ceb.getPrevious calls should be OK. const CEI *lastCEI = ceb.getPrevious(targetIx); - if (lastCEI == NULL) { + if (lastCEI == nullptr) { *status = U_INTERNAL_PROGRAM_ERROR; found = FALSE; break; @@ -4260,7 +2214,7 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, } } - if (!found && ((targetCEI == NULL) || (targetCEI->ce != UCOL_PROCESSED_NULLORDER))) { + if (!found && ((targetCEI == nullptr) || (targetCEI->ce != UCOL_PROCESSED_NULLORDER))) { // No match at this targetIx. Try again at the next. continue; } @@ -4285,9 +2239,12 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, // to something else. // This type of match should be rejected for not completely consuming a // combining sequence. - if (!isBreakBoundary(strsrch, mStart)) { + if (!isBreakBoundary(strsrch, mStart, *status)) { found = FALSE; } + if (U_FAILURE(*status)) { + break; + } // Look at the high index of the first CE in the match. If it's the same as the // low index, the first CE in the match is in the middle of an expansion. @@ -4327,10 +2284,10 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, // tests in any case) // * the match limit is a normalization boundary UBool allowMidclusterMatch = FALSE; - if (strsrch->search->text != NULL && strsrch->search->textLength > maxLimit) { + if (strsrch->search->text != nullptr && strsrch->search->textLength > maxLimit) { allowMidclusterMatch = - strsrch->search->breakIter == NULL && - nextCEI != NULL && (((nextCEI->ce) >> 32) & 0xFFFF0000UL) != 0 && + strsrch->search->breakIter == nullptr && + nextCEI != nullptr && (((nextCEI->ce) >> 32) & 0xFFFF0000UL) != 0 && maxLimit >= lastCEI->highIndex && nextCEI->highIndex > maxLimit && (strsrch->nfd->hasBoundaryBefore(codePointAt(*strsrch->search, maxLimit)) || strsrch->nfd->hasBoundaryAfter(codePointBefore(*strsrch->search, maxLimit))); @@ -4346,7 +2303,7 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, // Advance the match end position to the first acceptable match boundary. // This advances the index over any combining characters. if (minLimit < maxLimit) { - int32_t nba = nextBoundaryAfter(strsrch, minLimit); + int32_t nba = nextBoundaryAfter(strsrch, minLimit, *status); // Note that we can have nba < maxLimit && nba >= minLImit, in which // case we want to set mLimit to nba regardless of allowMidclusterMatch // (i.e. we back off mLimit to the previous breakIterator boundary). @@ -4363,9 +2320,12 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, } // Make sure the end of the match is on a break boundary - if (!isBreakBoundary(strsrch, mLimit)) { + if (!isBreakBoundary(strsrch, mLimit, *status)) { found = FALSE; } + if (U_FAILURE(*status)) { + break; + } } } else { @@ -4373,12 +2333,12 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, // The maximum position is detected by boundary after // the last non-ignorable CE. Combining sequence // across the start index will be truncated. - int32_t nba = nextBoundaryAfter(strsrch, minLimit); + int32_t nba = nextBoundaryAfter(strsrch, minLimit, *status); mLimit = maxLimit = (nba > 0) && (startIdx > nba) ? nba : startIdx; } #ifdef USEARCH_DEBUG - if (getenv("USEARCH_DEBUG") != NULL) { + if (getenv("USEARCH_DEBUG") != nullptr) { printf("minLimit, maxLimit, mLimit = %d, %d, %d\n", minLimit, maxLimit, mLimit); } #endif @@ -4394,7 +2354,7 @@ U_CAPI UBool U_EXPORT2 usearch_searchBackwards(UStringSearch *strsrch, } #ifdef USEARCH_DEBUG - if (getenv("USEARCH_DEBUG") != NULL) { + if (getenv("USEARCH_DEBUG") != nullptr) { printf("Target CEs [%d .. %d]\n", ceb.firstIx, ceb.limitIx); int32_t lastToPrint = ceb.limitIx+2; for (int ii=ceb.firstIx; iitextIter; - int32_t textlength = strsrch->search->textLength; - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t textoffset = ucol_getOffset(coleiter); - - // status used in setting coleiter offset, since offset is checked in - // shiftForward before setting the coleiter offset, status never - // a failure - textoffset = shiftForward(strsrch, textoffset, UCOL_NULLORDER, - patterncelength); - while (textoffset <= textlength) - { - uint32_t patternceindex = patterncelength - 1; - int32_t targetce; - UBool found = FALSE; - int32_t lastce = UCOL_NULLORDER; - - setColEIterOffset(coleiter, textoffset); - - for (;;) { - // finding the last pattern ce match, imagine composite characters - // for example: search for pattern A in text \u00C0 - // we'll have to skip \u0300 the grave first before we get to A - targetce = ucol_previous(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (targetce == UCOL_IGNORABLE && inNormBuf(coleiter)) { - // this is for the text \u0315\u0300 that requires - // normalization and pattern \u0300, where \u0315 is ignorable - continue; - } - if (lastce == UCOL_NULLORDER || lastce == UCOL_IGNORABLE) { - lastce = targetce; - } - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - if (targetce == patternce[patternceindex]) { - // the first ce can be a contraction - found = TRUE; - break; - } - if (!hasExpansion(coleiter)) { - found = FALSE; - break; - } - } - - //targetce = lastce; - - while (found && patternceindex > 0) { - lastce = targetce; - targetce = ucol_previous(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (targetce == UCOL_IGNORABLE) { - continue; - } - - patternceindex --; - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - found = found && targetce == patternce[patternceindex]; - } - - targetce = lastce; - - if (!found) { - if (U_FAILURE(*status)) { - break; - } - textoffset = shiftForward(strsrch, textoffset, lastce, - patternceindex); - // status checked at loop. - patternceindex = patterncelength; - continue; - } - - if (checkNextExactMatch(strsrch, &textoffset, status)) { - // status checked in ucol_setOffset - setColEIterOffset(coleiter, strsrch->search->matchedIndex); - return TRUE; - } - } - setMatchNotFound(strsrch); - return FALSE; -#else int32_t textOffset = ucol_getOffset(strsrch->textIter); int32_t start = -1; int32_t end = -1; @@ -4532,112 +2405,18 @@ UBool usearch_handleNextExact(UStringSearch *strsrch, UErrorCode *status) strsrch->search->matchedLength = end - start; return TRUE; } else { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#endif } UBool usearch_handleNextCanonical(UStringSearch *strsrch, UErrorCode *status) { if (U_FAILURE(*status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#if BOYER_MOORE - UCollationElements *coleiter = strsrch->textIter; - int32_t textlength = strsrch->search->textLength; - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t textoffset = ucol_getOffset(coleiter); - UBool hasPatternAccents = - strsrch->pattern.hasSuffixAccents || strsrch->pattern.hasPrefixAccents; - - textoffset = shiftForward(strsrch, textoffset, UCOL_NULLORDER, - patterncelength); - strsrch->canonicalPrefixAccents[0] = 0; - strsrch->canonicalSuffixAccents[0] = 0; - - while (textoffset <= textlength) - { - int32_t patternceindex = patterncelength - 1; - int32_t targetce; - UBool found = FALSE; - int32_t lastce = UCOL_NULLORDER; - - setColEIterOffset(coleiter, textoffset); - - for (;;) { - // finding the last pattern ce match, imagine composite characters - // for example: search for pattern A in text \u00C0 - // we'll have to skip \u0300 the grave first before we get to A - targetce = ucol_previous(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (lastce == UCOL_NULLORDER || lastce == UCOL_IGNORABLE) { - lastce = targetce; - } - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - if (targetce == patternce[patternceindex]) { - // the first ce can be a contraction - found = TRUE; - break; - } - if (!hasExpansion(coleiter)) { - found = FALSE; - break; - } - } - - while (found && patternceindex > 0) { - targetce = ucol_previous(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (targetce == UCOL_IGNORABLE) { - continue; - } - - patternceindex --; - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - found = found && targetce == patternce[patternceindex]; - } - - // initializing the rearranged accent array - if (hasPatternAccents && !found) { - strsrch->canonicalPrefixAccents[0] = 0; - strsrch->canonicalSuffixAccents[0] = 0; - if (U_FAILURE(*status)) { - break; - } - found = doNextCanonicalMatch(strsrch, textoffset, status); - } - - if (!found) { - if (U_FAILURE(*status)) { - break; - } - textoffset = shiftForward(strsrch, textoffset, lastce, - patternceindex); - // status checked at loop - patternceindex = patterncelength; - continue; - } - - if (checkNextCanonicalMatch(strsrch, &textoffset, status)) { - setColEIterOffset(coleiter, strsrch->search->matchedIndex); - return TRUE; - } - } - setMatchNotFound(strsrch); - return FALSE; -#else int32_t textOffset = ucol_getOffset(strsrch->textIter); int32_t start = -1; int32_t end = -1; @@ -4647,114 +2426,18 @@ UBool usearch_handleNextCanonical(UStringSearch *strsrch, UErrorCode *status) strsrch->search->matchedLength = end - start; return TRUE; } else { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#endif } UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status) { if (U_FAILURE(*status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#if BOYER_MOORE - UCollationElements *coleiter = strsrch->textIter; - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t textoffset = ucol_getOffset(coleiter); - - // shifting it check for setting offset - // if setOffset is called previously or there was no previous match, we - // leave the offset as it is. - if (strsrch->search->matchedIndex != USEARCH_DONE) { - textoffset = strsrch->search->matchedIndex; - } - - textoffset = reverseShift(strsrch, textoffset, UCOL_NULLORDER, - patterncelength); - - while (textoffset >= 0) - { - int32_t patternceindex = 1; - int32_t targetce; - UBool found = FALSE; - int32_t firstce = UCOL_NULLORDER; - - // if status is a failure, ucol_setOffset does nothing - setColEIterOffset(coleiter, textoffset); - - for (;;) { - // finding the first pattern ce match, imagine composite - // characters. for example: search for pattern \u0300 in text - // \u00C0, we'll have to skip A first before we get to - // \u0300 the grave accent - targetce = ucol_next(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (firstce == UCOL_NULLORDER || firstce == UCOL_IGNORABLE) { - firstce = targetce; - } - if (targetce == UCOL_IGNORABLE && strsrch->strength != UCOL_PRIMARY) { - continue; - } - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - if (targetce == patternce[0]) { - found = TRUE; - break; - } - if (!hasExpansion(coleiter)) { - // checking for accents in composite character - found = FALSE; - break; - } - } - - //targetce = firstce; - - while (found && (patternceindex < patterncelength)) { - firstce = targetce; - targetce = ucol_next(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (targetce == UCOL_IGNORABLE) { - continue; - } - - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - found = found && targetce == patternce[patternceindex]; - patternceindex ++; - } - - targetce = firstce; - - if (!found) { - if (U_FAILURE(*status)) { - break; - } - - textoffset = reverseShift(strsrch, textoffset, targetce, - patternceindex); - patternceindex = 0; - continue; - } - - if (checkPreviousExactMatch(strsrch, &textoffset, status)) { - setColEIterOffset(coleiter, textoffset); - return TRUE; - } - } - setMatchNotFound(strsrch); - return FALSE; -#else int32_t textOffset; if (strsrch->search->isOverlap) { @@ -4764,18 +2447,18 @@ UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status) // move the start position at the end of possible match initializePatternPCETable(strsrch, status); if (!initTextProcessedIter(strsrch, status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } for (int32_t nPCEs = 0; nPCEs < strsrch->pattern.pcesLength - 1; nPCEs++) { - int64_t pce = strsrch->textProcessedIter->nextProcessed(NULL, NULL, status); + int64_t pce = strsrch->textProcessedIter->nextProcessed(nullptr, nullptr, status); if (pce == UCOL_PROCESSED_NULLORDER) { // at the end of the text break; } } if (U_FAILURE(*status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } textOffset = ucol_getOffset(strsrch->textIter); @@ -4792,122 +2475,19 @@ UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status) strsrch->search->matchedLength = end - start; return TRUE; } else { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#endif } UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, UErrorCode *status) { if (U_FAILURE(*status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#if BOYER_MOORE - UCollationElements *coleiter = strsrch->textIter; - int32_t *patternce = strsrch->pattern.ces; - int32_t patterncelength = strsrch->pattern.cesLength; - int32_t textoffset = ucol_getOffset(coleiter); - UBool hasPatternAccents = - strsrch->pattern.hasSuffixAccents || strsrch->pattern.hasPrefixAccents; - - // shifting it check for setting offset - // if setOffset is called previously or there was no previous match, we - // leave the offset as it is. - if (strsrch->search->matchedIndex != USEARCH_DONE) { - textoffset = strsrch->search->matchedIndex; - } - - textoffset = reverseShift(strsrch, textoffset, UCOL_NULLORDER, - patterncelength); - strsrch->canonicalPrefixAccents[0] = 0; - strsrch->canonicalSuffixAccents[0] = 0; - - while (textoffset >= 0) - { - int32_t patternceindex = 1; - int32_t targetce; - UBool found = FALSE; - int32_t firstce = UCOL_NULLORDER; - - setColEIterOffset(coleiter, textoffset); - for (;;) { - // finding the first pattern ce match, imagine composite - // characters. for example: search for pattern \u0300 in text - // \u00C0, we'll have to skip A first before we get to - // \u0300 the grave accent - targetce = ucol_next(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (firstce == UCOL_NULLORDER || firstce == UCOL_IGNORABLE) { - firstce = targetce; - } - - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - if (targetce == patternce[0]) { - // the first ce can be a contraction - found = TRUE; - break; - } - if (!hasExpansion(coleiter)) { - // checking for accents in composite character - found = FALSE; - break; - } - } - - targetce = firstce; - - while (found && patternceindex < patterncelength) { - targetce = ucol_next(coleiter, status); - if (U_FAILURE(*status) || targetce == UCOL_NULLORDER) { - found = FALSE; - break; - } - targetce = getCE(strsrch, targetce); - if (targetce == UCOL_IGNORABLE) { - continue; - } - - // TODO: #if BOYER_MOORE, replace with code using 32-bit version of compareCE64s - found = found && targetce == patternce[patternceindex]; - patternceindex ++; - } - - // initializing the rearranged accent array - if (hasPatternAccents && !found) { - strsrch->canonicalPrefixAccents[0] = 0; - strsrch->canonicalSuffixAccents[0] = 0; - if (U_FAILURE(*status)) { - break; - } - found = doPreviousCanonicalMatch(strsrch, textoffset, status); - } - - if (!found) { - if (U_FAILURE(*status)) { - break; - } - textoffset = reverseShift(strsrch, textoffset, targetce, - patternceindex); - patternceindex = 0; - continue; - } - - if (checkPreviousCanonicalMatch(strsrch, &textoffset, status)) { - setColEIterOffset(coleiter, textoffset); - return TRUE; - } - } - setMatchNotFound(strsrch); - return FALSE; -#else int32_t textOffset; if (strsrch->search->isOverlap) { @@ -4917,18 +2497,18 @@ UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, // move the start position at the end of possible match initializePatternPCETable(strsrch, status); if (!initTextProcessedIter(strsrch, status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } for (int32_t nPCEs = 0; nPCEs < strsrch->pattern.pcesLength - 1; nPCEs++) { - int64_t pce = strsrch->textProcessedIter->nextProcessed(NULL, NULL, status); + int64_t pce = strsrch->textProcessedIter->nextProcessed(nullptr, nullptr, status); if (pce == UCOL_PROCESSED_NULLORDER) { // at the end of the text break; } } if (U_FAILURE(*status)) { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } textOffset = ucol_getOffset(strsrch->textIter); @@ -4945,10 +2525,9 @@ UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, strsrch->search->matchedLength = end - start; return TRUE; } else { - setMatchNotFound(strsrch); + setMatchNotFound(strsrch, *status); return FALSE; } -#endif } #endif /* #if !UCONFIG_NO_COLLATION */ diff --git a/deps/icu-small/source/i18n/uspoof.cpp b/deps/icu-small/source/i18n/uspoof.cpp index e2360924d02658..dd4618baa703cb 100644 --- a/deps/icu-small/source/i18n/uspoof.cpp +++ b/deps/icu-small/source/i18n/uspoof.cpp @@ -82,63 +82,66 @@ void U_CALLCONV initializeStatics(UErrorCode &status) { u"\\u04FF\\u0510-\\u0529\\u052E\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0586" u"\\u05B4\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u0655\\u0660-" u"\\u0669\\u0670-\\u0672\\u0674\\u0679-\\u068D\\u068F-\\u06A0\\u06A2-\\u06D3" - u"\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0750-\\u07B1\\u08A0-\\u08AC" - u"\\u08B2\\u08B6-\\u08C7\\u0901-\\u094D\\u094F\\u0950\\u0956\\u0957\\u0960-" - u"\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-\\u097F\\u0981-\\u0983\\u0985-" - u"\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9" - u"\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09E0-\\u09E3\\u09E6-" - u"\\u09F1\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28" - u"\\u0A2A-\\u0A30\\u0A32\\u0A35\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47" - u"\\u0A48\\u0A4B-\\u0A4D\\u0A5C\\u0A66-\\u0A74\\u0A81-\\u0A83\\u0A85-\\u0A8D" - u"\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9" - u"\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-" - u"\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-" - u"\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B43\\u0B47" - u"\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71" - u"\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A" - u"\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-" - u"\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C01-" - u"\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D-" - u"\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C60\\u0C61\\u0C66-" - u"\\u0C6F\\u0C80\\u0C82\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8" - u"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD" - u"\\u0CD5\\u0CD6\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00\\u0D02" - u"\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D43\\u0D46-" - u"\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D60\\u0D61\\u0D66-\\u0D6F\\u0D7A-" - u"\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D8E\\u0D91-\\u0D96\\u0D9A-\\u0DA5\\u0DA7-" - u"\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6" - u"\\u0DD8-\\u0DDE\\u0DF2\\u0E01-\\u0E32\\u0E34-\\u0E3A\\u0E40-\\u0E4E\\u0E50-" - u"\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-" - u"\\u0EB2\\u0EB4-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9" - u"\\u0EDE\\u0EDF\\u0F00\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F3E-\\u0F42\\u0F44-" - u"\\u0F47\\u0F49-\\u0F4C\\u0F4E-\\u0F51\\u0F53-\\u0F56\\u0F58-\\u0F5B\\u0F5D-" - u"\\u0F68\\u0F6A-\\u0F6C\\u0F71\\u0F72\\u0F74\\u0F7A-\\u0F80\\u0F82-\\u0F84" - u"\\u0F86-\\u0F92\\u0F94-\\u0F97\\u0F99-\\u0F9C\\u0F9E-\\u0FA1\\u0FA3-\\u0FA6" - u"\\u0FA8-\\u0FAB\\u0FAD-\\u0FB8\\u0FBA-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-" - u"\\u109D\\u10C7\\u10CD\\u10D0-\\u10F0\\u10F7-\\u10FA\\u10FD-\\u10FF\\u1200-" - u"\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288" - u"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-" - u"\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-" - u"\\u135F\\u1380-\\u138F\\u1780-\\u17A2\\u17A5-\\u17A7\\u17A9-\\u17B3\\u17B6-" - u"\\u17CA\\u17D2\\u17D7\\u17DC\\u17E0-\\u17E9\\u1C90-\\u1CBA\\u1CBD-\\u1CBF" - u"\\u1E00-\\u1E99\\u1E9E\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-" - u"\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F70" - u"\\u1F72\\u1F74\\u1F76\\u1F78\\u1F7A\\u1F7C\\u1F80-\\u1FB4\\u1FB6-\\u1FBA" - u"\\u1FBC\\u1FC2-\\u1FC4\\u1FC6-\\u1FC8\\u1FCA\\u1FCC\\u1FD0-\\u1FD2\\u1FD6-" - u"\\u1FDA\\u1FE0-\\u1FE2\\u1FE4-\\u1FEA\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FF8" - u"\\u1FFA\\u1FFC\\u2D27\\u2D2D\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE" - u"\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6" - u"\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3041-\\u3096\\u3099\\u309A\\u309D\\u309E" - u"\\u30A1-\\u30FA\\u30FC-\\u30FE\\u3105-\\u312D\\u312F\\u31A0-\\u31BF\\u3400-" - u"\\u4DBF\\u4E00-\\u9FFC\\uA67F\\uA717-\\uA71F\\uA788\\uA78D\\uA792\\uA793" - u"\\uA7AA\\uA7AE\\uA7B8\\uA7B9\\uA7C2-\\uA7CA\\uA9E7-\\uA9FE\\uAA60-\\uAA76" - u"\\uAA7A-\\uAA7F\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26" - u"\\uAB28-\\uAB2E\\uAB66\\uAB67\\uAC00-\\uD7A3\\uFA0E\\uFA0F\\uFA11\\uFA13" - u"\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\U00011301\\U00011303" - u"\\U0001133B\\U0001133C\\U00016FF0\\U00016FF1\\U0001B150-\\U0001B152" - u"\\U0001B164-\\U0001B167\\U00020000-\\U0002A6DD\\U0002A700-\\U0002B734" - u"\\U0002B740-\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0" - u"\\U00030000-\\U0003134A]"; + u"\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0750-\\u07B1\\u0870-\\u0887" + u"\\u0889-\\u088E\\u08A0-\\u08AC\\u08B2\\u08B5-\\u08C9\\u0901-\\u094D\\u094F" + u"\\u0950\\u0956\\u0957\\u0960-\\u0963\\u0966-\\u096F\\u0971-\\u0977\\u0979-" + u"\\u097F\\u0981-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-" + u"\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE" + u"\\u09D7\\u09E0-\\u09E3\\u09E6-\\u09F1\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A" + u"\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A35\\u0A38\\u0A39" + u"\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A5C\\u0A66-\\u0A74" + u"\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0" + u"\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD" + u"\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B05-" + u"\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-" + u"\\u0B39\\u0B3C-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5F-" + u"\\u0B61\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90" + u"\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-" + u"\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0" + u"\\u0BD7\\u0BE6-\\u0BEF\\u0C01-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-" + u"\\u0C33\\u0C35-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55" + u"\\u0C56\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C80\\u0C82\\u0C83\\u0C85-" + u"\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-" + u"\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CE0-\\u0CE3" + u"\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-" + u"\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-" + u"\\u0D57\\u0D60\\u0D61\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-" + u"\\u0D8E\\u0D91-\\u0D96\\u0D9A-\\u0DA5\\u0DA7-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD" + u"\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDE\\u0DF2\\u0E01-" + u"\\u0E32\\u0E34-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84" + u"\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB2\\u0EB4-\\u0EBD\\u0EC0-" + u"\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDE\\u0EDF\\u0F00\\u0F20-" + u"\\u0F29\\u0F35\\u0F37\\u0F3E-\\u0F42\\u0F44-\\u0F47\\u0F49-\\u0F4C\\u0F4E-" + u"\\u0F51\\u0F53-\\u0F56\\u0F58-\\u0F5B\\u0F5D-\\u0F68\\u0F6A-\\u0F6C\\u0F71" + u"\\u0F72\\u0F74\\u0F7A-\\u0F80\\u0F82-\\u0F84\\u0F86-\\u0F92\\u0F94-\\u0F97" + u"\\u0F99-\\u0F9C\\u0F9E-\\u0FA1\\u0FA3-\\u0FA6\\u0FA8-\\u0FAB\\u0FAD-\\u0FB8" + u"\\u0FBA-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10C7\\u10CD\\u10D0-" + u"\\u10F0\\u10F7-\\u10FA\\u10FD-\\u10FF\\u1200-\\u1248\\u124A-\\u124D\\u1250-" + u"\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0" + u"\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-" + u"\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u1780-" + u"\\u17A2\\u17A5-\\u17A7\\u17A9-\\u17B3\\u17B6-\\u17CD\\u17D0\\u17D2\\u17D7" + u"\\u17DC\\u17E0-\\u17E9\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00-\\u1E99\\u1E9E" + u"\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D" + u"\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F70\\u1F72\\u1F74\\u1F76" + u"\\u1F78\\u1F7A\\u1F7C\\u1F80-\\u1FB4\\u1FB6-\\u1FBA\\u1FBC\\u1FC2-\\u1FC4" + u"\\u1FC6-\\u1FC8\\u1FCA\\u1FCC\\u1FD0-\\u1FD2\\u1FD6-\\u1FDA\\u1FE0-\\u1FE2" + u"\\u1FE4-\\u1FEA\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FF8\\u1FFA\\u1FFC\\u2D27" + u"\\u2D2D\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-" + u"\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-" + u"\\u3007\\u3041-\\u3096\\u3099\\u309A\\u309D\\u309E\\u30A1-\\u30FA\\u30FC-" + u"\\u30FE\\u3105-\\u312D\\u312F\\u31A0-\\u31BF\\u3400-\\u4DBF\\u4E00-\\u9FFF" + u"\\uA67F\\uA717-\\uA71F\\uA788\\uA78D\\uA792\\uA793\\uA7AA\\uA7AE\\uA7B8" + u"\\uA7B9\\uA7C0-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA9E7-\\uA9FE" + u"\\uAA60-\\uAA76\\uAA7A-\\uAA7F\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16" + u"\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB66\\uAB67\\uAC00-\\uD7A3\\uFA0E\\uFA0F" + u"\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29\\U00011301" + u"\\U00011303\\U0001133B\\U0001133C\\U00016FF0\\U00016FF1\\U0001B11F-" + u"\\U0001B122\\U0001B150-\\U0001B152\\U0001B164-\\U0001B167\\U0001DF00-" + u"\\U0001DF1E\\U0001E7E0-\\U0001E7E6\\U0001E7E8-\\U0001E7EB\\U0001E7ED" + u"\\U0001E7EE\\U0001E7F0-\\U0001E7FE\\U00020000-\\U0002A6DF\\U0002A700-" + u"\\U0002B738\\U0002B740-\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-" + u"\\U0002EBE0\\U00030000-\\U0003134A]"; gRecommendedSet = new UnicodeSet(UnicodeString(recommendedPat), status); if (gRecommendedSet == NULL) { @@ -258,10 +261,10 @@ uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status) { return; } - // Verify that the requested checks are all ones (bits) that + // Verify that the requested checks are all ones (bits) that // are acceptable, known values. if (checks & ~(USPOOF_ALL_CHECKS | USPOOF_AUX_INFO)) { - *status = U_ILLEGAL_ARGUMENT_ERROR; + *status = U_ILLEGAL_ARGUMENT_ERROR; return; } @@ -442,7 +445,7 @@ uspoof_areConfusable(const USpoofChecker *sc, *status = U_ILLEGAL_ARGUMENT_ERROR; return 0; } - + UnicodeString id1Str((length1==-1), id1, length1); // Aliasing constructor UnicodeString id2Str((length2==-1), id2, length2); // Aliasing constructor return uspoof_areConfusableUnicodeString(sc, id1Str, id2Str, status); @@ -467,7 +470,7 @@ uspoof_areConfusableUTF8(const USpoofChecker *sc, int32_t results = uspoof_areConfusableUnicodeString(sc, id1Str, id2Str, status); return results; } - + U_CAPI int32_t U_EXPORT2 uspoof_areConfusableUnicodeString(const USpoofChecker *sc, @@ -481,9 +484,9 @@ uspoof_areConfusableUnicodeString(const USpoofChecker *sc, // // See section 4 of UAX 39 for the algorithm for checking whether two strings are confusable, // and for definitions of the types (single, whole, mixed-script) of confusables. - + // We only care about a few of the check flags. Ignore the others. - // If no tests relavant to this function have been specified, return an error. + // If no tests relevant to this function have been specified, return an error. // TODO: is this really the right thing to do? It's probably an error on the caller's part, // but logically we would just return 0 (no error). if ((This->fChecks & USPOOF_CONFUSABLE) == 0) { @@ -603,14 +606,14 @@ int32_t checkImpl(const SpoofImpl* This, const UnicodeString& id, CheckResult* c gNfdNormalizer->normalize(id, nfdText, *status); int32_t nfdLength = nfdText.length(); - // scan for more than one occurence of the same non-spacing mark + // scan for more than one occurrence of the same non-spacing mark // in a sequence of non-spacing marks. int32_t i; UChar32 c; UChar32 firstNonspacingMark = 0; - UBool haveMultipleMarks = FALSE; + UBool haveMultipleMarks = FALSE; UnicodeSet marksSeenSoFar; // Set of combining marks in a single combining sequence. - + for (i=0; i( static_cast(left.pointer)); - const SPUString *sR = const_cast( - static_cast(right.pointer)); + const SPUString *sR = const_cast( + static_cast(right.pointer)); int32_t lenL = sL->fStr->length(); int32_t lenR = sR->fStr->length(); if (lenL < lenR) { @@ -145,7 +145,7 @@ SPUString *SPUStringPool::addString(UnicodeString *src, UErrorCode &status) { return NULL; } uhash_put(fHash, src, hashedString, &status); - fVec->addElement(hashedString, status); + fVec->addElementX(hashedString, status); } return hashedString; } @@ -475,3 +475,4 @@ void ConfusabledataBuilder::outputData(UErrorCode &status) { #endif #endif // !UCONFIG_NO_REGULAR_EXPRESSIONS + diff --git a/deps/icu-small/source/i18n/uspoof_conf.h b/deps/icu-small/source/i18n/uspoof_conf.h index ad040edf105271..600d7ea42a430d 100644 --- a/deps/icu-small/source/i18n/uspoof_conf.h +++ b/deps/icu-small/source/i18n/uspoof_conf.h @@ -25,7 +25,7 @@ #if !UCONFIG_NO_NORMALIZATION -#if !UCONFIG_NO_REGULAR_EXPRESSIONS +#if !UCONFIG_NO_REGULAR_EXPRESSIONS #include "unicode/uregex.h" #include "uhash.h" @@ -60,7 +60,7 @@ class SPUStringPool : public UMemory { public: SPUStringPool(UErrorCode &status); ~SPUStringPool(); - + // Add a string. Return the string from the table. // If the input parameter string is already in the table, delete the // input parameter and return the existing string. @@ -98,7 +98,7 @@ class ConfusabledataBuilder : public UMemory { UVector *fKeyVec; UVector *fValueVec; UnicodeString *fStringTable; - + SPUStringPool *stringPool; URegularExpression *fParseLine; URegularExpression *fParseHexNum; @@ -110,7 +110,7 @@ class ConfusabledataBuilder : public UMemory { // Add an entry to the key and value tables being built // input: data from SLTable, MATable, etc. - // outut: entry added to fKeyVec and fValueVec + // output: entry added to fKeyVec and fValueVec void addKeyEntry(UChar32 keyChar, // The key character UHashtable *table, // The table, one of SATable, MATable, etc. int32_t tableFlag, // One of USPOOF_SA_TABLE_FLAG, etc. @@ -130,5 +130,5 @@ class ConfusabledataBuilder : public UMemory { U_NAMESPACE_END #endif -#endif // !UCONFIG_NO_REGULAR_EXPRESSIONS +#endif // !UCONFIG_NO_REGULAR_EXPRESSIONS #endif // __USPOOF_BUILDCONF_H__ diff --git a/deps/icu-small/source/i18n/uspoof_impl.cpp b/deps/icu-small/source/i18n/uspoof_impl.cpp index 3c1f84a19ba929..b283d813210d9d 100644 --- a/deps/icu-small/source/i18n/uspoof_impl.cpp +++ b/deps/icu-small/source/i18n/uspoof_impl.cpp @@ -73,7 +73,7 @@ void SpoofImpl::construct(UErrorCode& status) { // Copy Constructor, used by the user level clone() function. SpoofImpl::SpoofImpl(const SpoofImpl &src, UErrorCode &status) : - fChecks(USPOOF_ALL_CHECKS), fSpoofData(NULL), fAllowedCharsSet(NULL) , + fChecks(USPOOF_ALL_CHECKS), fSpoofData(NULL), fAllowedCharsSet(NULL) , fAllowedLocales(NULL) { if (U_FAILURE(status)) { return; @@ -170,7 +170,7 @@ void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) { if (fAllowedLocales == NULL || tmpSet == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return; - } + } tmpSet->freeze(); delete fAllowedCharsSet; fAllowedCharsSet = tmpSet; @@ -178,14 +178,14 @@ void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) { return; } - + // Add all common and inherited characters to the set of allowed chars. UnicodeSet tempSet; tempSet.applyIntPropertyValue(UCHAR_SCRIPT, USCRIPT_COMMON, status); allowedChars.addAll(tempSet); tempSet.applyIntPropertyValue(UCHAR_SCRIPT, USCRIPT_INHERITED, status); allowedChars.addAll(tempSet); - + // If anything went wrong, we bail out without changing // the state of the spoof checker. if (U_FAILURE(status)) { @@ -554,7 +554,7 @@ uspoof_cleanupDefaultData(void) { static void U_CALLCONV uspoof_loadDefaultData(UErrorCode& status) { UDataMemory *udm = udata_openChoice(nullptr, "cfu", "confusables", - spoofDataIsAcceptable, + spoofDataIsAcceptable, nullptr, // context, would receive dataVersion if supplied. &status); if (U_FAILURE(status)) { return; } @@ -633,7 +633,7 @@ SpoofData::SpoofData(UErrorCode &status) { // Just in case it's not, round it up. uint32_t initialSize = (sizeof(SpoofDataHeader) + 15) & ~15; U_ASSERT(initialSize == sizeof(SpoofDataHeader)); - + fRawData = static_cast(uprv_malloc(initialSize)); fMemLimit = initialSize; if (fRawData == NULL) { @@ -729,7 +729,7 @@ void *SpoofData::reserveSpace(int32_t numBytes, UErrorCode &status) { return NULL; } if (!fDataOwned) { - UPRV_UNREACHABLE; + UPRV_UNREACHABLE_EXIT; } numBytes = (numBytes + 15) & ~15; // Round up to a multiple of 16 @@ -875,7 +875,7 @@ uspoof_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *ou const uint8_t *inBytes =(const uint8_t *)inData+headerSize; SpoofDataHeader *spoofDH = (SpoofDataHeader *)inBytes; if (ds->readUInt32(spoofDH->fMagic) != USPOOF_MAGIC || - ds->readUInt32(spoofDH->fLength) < sizeof(SpoofDataHeader)) + ds->readUInt32(spoofDH->fLength) < sizeof(SpoofDataHeader)) { udata_printError(ds, "uspoof_swap(): Spoof Data header is invalid.\n"); *status=U_UNSUPPORTED_ERROR; @@ -955,3 +955,5 @@ uspoof_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *ou } #endif + + diff --git a/deps/icu-small/source/i18n/uspoof_impl.h b/deps/icu-small/source/i18n/uspoof_impl.h index e825f343da1915..e75ae262bddb4c 100644 --- a/deps/icu-small/source/i18n/uspoof_impl.h +++ b/deps/icu-small/source/i18n/uspoof_impl.h @@ -8,7 +8,7 @@ * * uspoof_impl.h * -* Implemenation header for spoof detection +* Implementation header for spoof detection * */ @@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN -// The maximium length (in UTF-16 UChars) of the skeleton replacement string resulting from +// The maximum length (in UTF-16 UChars) of the skeleton replacement string resulting from // a single input code point. This is function of the unicode.org data. #define USPOOF_MAX_SKELETON_EXPANSION 20 @@ -66,7 +66,7 @@ class SpoofImpl : public UObject, /** Copy constructor, used by the user level uspoof_clone() function. */ SpoofImpl(const SpoofImpl &src, UErrorCode &status); - + USpoofChecker *asUSpoofChecker(); static SpoofImpl *validateThis(USpoofChecker *sc, UErrorCode &status); static const SpoofImpl *validateThis(const USpoofChecker *sc, UErrorCode &status); @@ -93,7 +93,7 @@ class SpoofImpl : public UObject, static UChar32 ScanHex(const UChar *s, int32_t start, int32_t limit, UErrorCode &status); static UClassID U_EXPORT2 getStaticClassID(void); - virtual UClassID getDynamicClassID(void) const; + virtual UClassID getDynamicClassID(void) const override; // // Data Members @@ -102,7 +102,7 @@ class SpoofImpl : public UObject, int32_t fChecks; // Bit vector of checks to perform. SpoofData *fSpoofData; - + const UnicodeSet *fAllowedCharsSet; // The UnicodeSet of allowed characters. // for this Spoof Checker. Defaults to all chars. @@ -211,7 +211,7 @@ class SpoofData: public UMemory { SpoofData(UErrorCode &status); // Create new spoof data wrapper. // Only used when building new data from rules. - + // Constructor for use when creating from prebuilt default data. // A UDataMemory is what the ICU internal data loading functions provide. // The udm is adopted by the SpoofData. @@ -231,7 +231,7 @@ class SpoofData: public UMemory { // Clone of a user-level spoof detector increments the ref count on the data. // Close of a user-level spoof detector decrements the ref count. // If the data is owned by us, it will be deleted when count goes to zero. - SpoofData *addReference(); + SpoofData *addReference(); void removeReference(); // Reset all fields to an initial state. @@ -248,7 +248,7 @@ class SpoofData: public UMemory { // Get the confusable skeleton transform for a single code point. // The result is a string with a length between 1 and 18 as of Unicode 9. // This is the main public endpoint for this class. - // @return The length in UTF-16 code units of the substition string. + // @return The length in UTF-16 code units of the substitution string. int32_t confusableLookup(UChar32 inChar, UnicodeString &dest) const; // Get the number of confusable entries in this SpoofData. @@ -301,7 +301,7 @@ struct SpoofDataHeader { int32_t fMagic; // (0x3845fdef) uint8_t fFormatVersion[4]; // Data Format. Same as the value in struct UDataInfo // if there is one associated with this data. - int32_t fLength; // Total lenght in bytes of this spoof data, + int32_t fLength; // Total length in bytes of this spoof data, // including all sections, not just the header. // The following four sections refer to data representing the confusable data @@ -340,3 +340,4 @@ uspoof_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *ou #endif #endif /* USPOOFIM_H */ + diff --git a/deps/icu-small/source/i18n/usrchimp.h b/deps/icu-small/source/i18n/usrchimp.h index e056337caecdef..13d825f73be23c 100644 --- a/deps/icu-small/source/i18n/usrchimp.h +++ b/deps/icu-small/source/i18n/usrchimp.h @@ -43,7 +43,7 @@ #define isContinuation(CE) (((CE) & UCOL_CONTINUATION_MARKER) == UCOL_CONTINUATION_MARKER) /** - * This indicates an error has occured during processing or there are no more CEs + * This indicates an error has occurred during processing or there are no more CEs * to be returned. */ #define UCOL_PROCESSED_NULLORDER ((int64_t)U_INT64_MAX) @@ -100,8 +100,8 @@ class UCollationPCE : public UMemory { * @param ixLow a pointer to an int32_t to receive the iterator index before fetching the CE. * @param ixHigh a pointer to an int32_t to receive the iterator index after fetching the CE. * @param status A pointer to an UErrorCode to receive any errors. - * @return The next collation elements ordering, otherwise returns UCOL_PROCESSED_NULLORDER - * if an error has occured or if the end of string has been reached + * @return The next collation elements ordering, otherwise returns UCOL_PROCESSED_NULLORDER + * if an error has occurred or if the end of string has been reached */ int64_t nextProcessed(int32_t *ixLow, int32_t *ixHigh, UErrorCode *status); /** @@ -110,11 +110,11 @@ class UCollationPCE : public UMemory { * * @param ixLow A pointer to an int32_t to receive the iterator index after fetching the CE * @param ixHigh A pointer to an int32_t to receiver the iterator index before fetching the CE - * @param status A pointer to an UErrorCode to receive any errors. Noteably + * @param status A pointer to an UErrorCode to receive any errors. Notably * a U_BUFFER_OVERFLOW_ERROR is returned if the internal stack * buffer has been exhausted. - * @return The previous collation elements ordering, otherwise returns - * UCOL_PROCESSED_NULLORDER if an error has occured or if the start of + * @return The previous collation elements ordering, otherwise returns + * UCOL_PROCESSED_NULLORDER if an error has occurred or if the start of * string has been reached. */ int64_t previousProcessed(int32_t *ixLow, int32_t *ixHigh, UErrorCode *status); @@ -127,7 +127,6 @@ class UCollationPCE : public UMemory { U_NAMESPACE_END #define INITIAL_ARRAY_SIZE_ 256 -#define MAX_TABLE_SIZE_ 257 struct USearch { // required since collation element iterator does not have a getText API @@ -136,13 +135,13 @@ struct USearch { UBool isOverlap; UBool isCanonicalMatch; int16_t elementComparisonType; - UBreakIterator *internalBreakIter; //internal character breakiterator - UBreakIterator *breakIter; + UBreakIterator *internalBreakIter; // internal character breakiterator, lazily created. + UBreakIterator *breakIter; // caller provided character breakiterator // value USEARCH_DONE is the default value - // if we are not at the start of the text or the end of the text, - // depending on the iteration direction and matchedIndex is USEARCH_DONE + // if we are not at the start of the text or the end of the text, + // depending on the iteration direction and matchedIndex is USEARCH_DONE // it means that we can't find any more matches in that particular direction - int32_t matchedIndex; + int32_t matchedIndex; int32_t matchedLength; UBool isForwardSearching; UBool reset; @@ -160,9 +159,6 @@ struct UPattern { int64_t pcesBuffer[INITIAL_ARRAY_SIZE_]; UBool hasPrefixAccents; UBool hasSuffixAccents; - int16_t defaultShiftSize; - int16_t shift[MAX_TABLE_SIZE_]; - int16_t backShift[MAX_TABLE_SIZE_]; }; struct UStringSearch { @@ -174,7 +170,7 @@ struct UStringSearch { // if we are at the start of the text. UCollationElements *textIter; icu::UCollationPCE *textProcessedIter; - // utility collation element, used throughout program for temporary + // utility collation element, used throughout program for temporary // iteration. UCollationElements *utilIter; UBool ownCollator; @@ -182,28 +178,26 @@ struct UStringSearch { uint32_t ceMask; uint32_t variableTop; UBool toShift; - UChar canonicalPrefixAccents[INITIAL_ARRAY_SIZE_]; - UChar canonicalSuffixAccents[INITIAL_ARRAY_SIZE_]; }; /** * Exact matches without checking for the ends for extra accents. * The match after the position within the collation element iterator is to be -* found. +* found. * After a match is found the offset in the collation element iterator will be * shifted to the start of the match. -* Implementation note: -* For tertiary we can't use the collator->tertiaryMask, that is a -* preprocessed mask that takes into account case options. since we are only +* Implementation note: +* For tertiary we can't use the collator->tertiaryMask, that is a +* preprocessed mask that takes into account case options. since we are only * concerned with exact matches, we don't need that. -* Alternate handling - since only the 16 most significant digits is only used, -* we can safely do a compare without masking if the ce is a variable, we mask -* and get only the primary values no shifting to quartenary is required since +* Alternate handling - since only the 16 most significant digits is only used, +* we can safely do a compare without masking if the ce is a variable, we mask +* and get only the primary values no shifting to quartenary is required since * all primary values less than variabletop will need to be masked off anyway. -* If the end character is composite and the pattern ce does not match the text -* ce, we skip it until we find a match in the end composite character or when +* If the end character is composite and the pattern ce does not match the text +* ce, we skip it until we find a match in the end composite character or when * it has passed the character. This is so that we can match pattern "a" with -* the text "\u00e6" +* the text "\u00e6" * @param strsrch string search data * @param status error status if any * @return true if an exact match is found, false otherwise @@ -213,7 +207,7 @@ UBool usearch_handleNextExact(UStringSearch *strsrch, UErrorCode *status); /** * Canonical matches. -* According to the definition, matches found here will include the whole span +* According to the definition, matches found here will include the whole span * of beginning and ending accents if it overlaps that region. * @param strsrch string search data * @param status error status if any @@ -234,14 +228,14 @@ UBool usearch_handlePreviousExact(UStringSearch *strsrch, UErrorCode *status); /** * Canonical matches. -* According to the definition, matches found here will include the whole span +* According to the definition, matches found here will include the whole span * of beginning and ending accents if it overlaps that region. * @param strsrch string search data * @param status error status if any * @return true if a canonical match is found, false otherwise */ U_CFUNC -UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, +UBool usearch_handlePreviousCanonical(UStringSearch *strsrch, UErrorCode *status); #endif /* #if !UCONFIG_NO_COLLATION */ diff --git a/deps/icu-small/source/i18n/utf16collationiterator.cpp b/deps/icu-small/source/i18n/utf16collationiterator.cpp index 7598b0ee521f6e..f1bdfabe738b0f 100644 --- a/deps/icu-small/source/i18n/utf16collationiterator.cpp +++ b/deps/icu-small/source/i18n/utf16collationiterator.cpp @@ -37,9 +37,9 @@ UTF16CollationIterator::UTF16CollationIterator(const UTF16CollationIterator &oth UTF16CollationIterator::~UTF16CollationIterator() {} -UBool +bool UTF16CollationIterator::operator==(const CollationIterator &other) const { - if(!CollationIterator::operator==(other)) { return FALSE; } + if(!CollationIterator::operator==(other)) { return false; } const UTF16CollationIterator &o = static_cast(other); // Compare the iterator state but not the text: Assume that the caller does that. return (pos - start) == (o.pos - o.start); @@ -171,14 +171,14 @@ FCDUTF16CollationIterator::FCDUTF16CollationIterator(const FCDUTF16CollationIter FCDUTF16CollationIterator::~FCDUTF16CollationIterator() {} -UBool +bool FCDUTF16CollationIterator::operator==(const CollationIterator &other) const { // Skip the UTF16CollationIterator and call its parent. - if(!CollationIterator::operator==(other)) { return FALSE; } + if(!CollationIterator::operator==(other)) { return false; } const FCDUTF16CollationIterator &o = static_cast(other); // Compare the iterator state but not the text: Assume that the caller does that. - if(checkDir != o.checkDir) { return FALSE; } - if(checkDir == 0 && (start == segmentStart) != (o.start == o.segmentStart)) { return FALSE; } + if(checkDir != o.checkDir) { return false; } + if(checkDir == 0 && (start == segmentStart) != (o.start == o.segmentStart)) { return false; } if(checkDir != 0 || start == segmentStart) { return (pos - rawStart) == (o.pos - o.rawStart); } else { diff --git a/deps/icu-small/source/i18n/utf16collationiterator.h b/deps/icu-small/source/i18n/utf16collationiterator.h index 6305d81c30c66b..6db70511b0d54a 100644 --- a/deps/icu-small/source/i18n/utf16collationiterator.h +++ b/deps/icu-small/source/i18n/utf16collationiterator.h @@ -42,11 +42,11 @@ class U_I18N_API UTF16CollationIterator : public CollationIterator { virtual ~UTF16CollationIterator(); - virtual UBool operator==(const CollationIterator &other) const; + virtual bool operator==(const CollationIterator &other) const override; - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; void setText(const UChar *s, const UChar *lim) { reset(); @@ -54,9 +54,9 @@ class U_I18N_API UTF16CollationIterator : public CollationIterator { limit = lim; } - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: // Copy constructor only for subclasses which set the pointers. @@ -64,15 +64,15 @@ class U_I18N_API UTF16CollationIterator : public CollationIterator { : CollationIterator(other), start(NULL), pos(NULL), limit(NULL) {} - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual UBool foundNULTerminator(); + virtual UBool foundNULTerminator() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; // UTF-16 string pointers. // limit can be NULL for NUL-terminated strings. @@ -95,24 +95,24 @@ class U_I18N_API FCDUTF16CollationIterator : public UTF16CollationIterator { virtual ~FCDUTF16CollationIterator(); - virtual UBool operator==(const CollationIterator &other) const; + virtual bool operator==(const CollationIterator &other) const override; - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UBool foundNULTerminator(); + virtual UBool foundNULTerminator() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; private: /** diff --git a/deps/icu-small/source/i18n/utf8collationiterator.h b/deps/icu-small/source/i18n/utf8collationiterator.h index 9059e72dcf9e63..09cfce4369f3f9 100644 --- a/deps/icu-small/source/i18n/utf8collationiterator.h +++ b/deps/icu-small/source/i18n/utf8collationiterator.h @@ -40,13 +40,13 @@ class U_I18N_API UTF8CollationIterator : public CollationIterator { virtual ~UTF8CollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: /** @@ -59,15 +59,15 @@ class U_I18N_API UTF8CollationIterator : public CollationIterator { * Valid lead surrogates are returned from inside a normalized text segment, * where handleGetTrailSurrogate() will return the matching trail surrogate. */ - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UBool foundNULTerminator(); + virtual UBool foundNULTerminator() override; - virtual UBool forbidSurrogateCodePoints() const; + virtual UBool forbidSurrogateCodePoints() const override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; const uint8_t *u8; int32_t pos; @@ -87,24 +87,24 @@ class U_I18N_API FCDUTF8CollationIterator : public UTF8CollationIterator { virtual ~FCDUTF8CollationIterator(); - virtual void resetToOffset(int32_t newOffset); + virtual void resetToOffset(int32_t newOffset) override; - virtual int32_t getOffset() const; + virtual int32_t getOffset() const override; - virtual UChar32 nextCodePoint(UErrorCode &errorCode); + virtual UChar32 nextCodePoint(UErrorCode &errorCode) override; - virtual UChar32 previousCodePoint(UErrorCode &errorCode); + virtual UChar32 previousCodePoint(UErrorCode &errorCode) override; protected: - virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode); + virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override; - virtual UChar handleGetTrailSurrogate(); + virtual UChar handleGetTrailSurrogate() override; - virtual UBool foundNULTerminator(); + virtual UBool foundNULTerminator() override; - virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; - virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode); + virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override; private: UBool nextHasLccc() const; diff --git a/deps/icu-small/source/i18n/utmscale.cpp b/deps/icu-small/source/i18n/utmscale.cpp index 461985937acca4..7bf6eec331a13a 100644 --- a/deps/icu-small/source/i18n/utmscale.cpp +++ b/deps/icu-small/source/i18n/utmscale.cpp @@ -57,7 +57,7 @@ U_CAPI int64_t U_EXPORT2 utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status) { const int64_t *data; - + if (status == NULL || U_FAILURE(*status)) { return 0; } @@ -73,7 +73,7 @@ utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *stat *status = U_ILLEGAL_ARGUMENT_ERROR; return 0; } - + return (otherTime + data[UTSV_EPOCH_OFFSET_VALUE]) * data[UTSV_UNITS_VALUE]; } @@ -81,7 +81,7 @@ U_CAPI int64_t U_EXPORT2 utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status) { const int64_t *data; - + if (status == NULL || U_FAILURE(*status)) { return 0; } @@ -97,19 +97,19 @@ utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *st *status = U_ILLEGAL_ARGUMENT_ERROR; return 0; } - + if (universalTime < 0) { if (universalTime < data[UTSV_MIN_ROUND_VALUE]) { return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_PLUS_1_VALUE]; } - + return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE]; } - + if (universalTime > data[UTSV_MAX_ROUND_VALUE]) { return (universalTime - data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_MINUS_1_VALUE]; } - + return (universalTime + data[UTSV_UNITS_ROUND_VALUE]) / data[UTSV_UNITS_VALUE] - data[UTSV_EPOCH_OFFSET_VALUE]; } diff --git a/deps/icu-small/source/i18n/utrans.cpp b/deps/icu-small/source/i18n/utrans.cpp index 31070dd43fbe4e..1cbba81d658265 100644 --- a/deps/icu-small/source/i18n/utrans.cpp +++ b/deps/icu-small/source/i18n/utrans.cpp @@ -52,13 +52,13 @@ class ReplaceableGlue : public Replaceable { virtual void handleReplaceBetween(int32_t start, int32_t limit, - const UnicodeString& text); + const UnicodeString& text) override; virtual void extractBetween(int32_t start, int32_t limit, - UnicodeString& target) const; + UnicodeString& target) const override; - virtual void copy(int32_t start, int32_t limit, int32_t dest); + virtual void copy(int32_t start, int32_t limit, int32_t dest) override; // virtual Replaceable *clone() const { return NULL; } same as default @@ -67,7 +67,7 @@ class ReplaceableGlue : public Replaceable { * * @draft ICU 2.2 */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -78,11 +78,11 @@ class ReplaceableGlue : public Replaceable { protected: - virtual int32_t getLength() const; + virtual int32_t getLength() const override; - virtual UChar getCharAt(int32_t offset) const; + virtual UChar getCharAt(int32_t offset) const override; - virtual UChar32 getChar32At(int32_t offset) const; + virtual UChar32 getChar32At(int32_t offset) const override; }; UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ReplaceableGlue) @@ -147,11 +147,11 @@ utrans_openU(const UChar *id, return NULL; } UParseError temp; - + if(parseError == NULL){ parseError = &temp; } - + UnicodeString ID(idLength<0, id, idLength); // r-o alias if(rules==NULL){ @@ -159,7 +159,7 @@ utrans_openU(const UChar *id, Transliterator *trans = NULL; trans = Transliterator::createInstance(ID, dir, *parseError, *status); - + if(U_FAILURE(*status)){ return NULL; } @@ -170,8 +170,8 @@ utrans_openU(const UChar *id, rulesLength); // r-o alias Transliterator *trans = NULL; - trans = Transliterator::createFromRules(ID, ruleStr, dir, *parseError, *status); - if(U_FAILURE(*status)) { + trans = Transliterator::createFromRules(ID, ruleStr, dir, *parseError, *status); + if(U_FAILURE(*status)) { return NULL; } @@ -183,7 +183,7 @@ U_CAPI UTransliterator* U_EXPORT2 utrans_open(const char* id, UTransDirection dir, const UChar* rules, /* may be Null */ - int32_t rulesLength, /* -1 if null-terminated */ + int32_t rulesLength, /* -1 if null-terminated */ UParseError* parseError, /* may be Null */ UErrorCode* status) { UnicodeString ID(id, -1, US_INV); // use invariant converter @@ -449,7 +449,7 @@ utrans_transUChars(const UTransliterator* trans, *status = U_ILLEGAL_ARGUMENT_ERROR; return; } - + int32_t textLen = (textLength == NULL || *textLength < 0) ? u_strlen(text) : *textLength; // writeable alias: for this ct, len CANNOT be -1 (why?) diff --git a/deps/icu-small/source/i18n/vtzone.cpp b/deps/icu-small/source/i18n/vtzone.cpp index 94fa6a4158ae1d..9111e08848f99a 100644 --- a/deps/icu-small/source/i18n/vtzone.cpp +++ b/deps/icu-small/source/i18n/vtzone.cpp @@ -114,7 +114,7 @@ static int32_t parseAsciiDigits(const UnicodeString& str, int32_t start, int32_t } num = 10 * num + digit; } - return sign * num; + return sign * num; } static UnicodeString& appendAsciiDigits(int32_t number, uint8_t length, UnicodeString& str) { @@ -240,7 +240,7 @@ static UDate parseDateTimeString(const UnicodeString& str, int32_t offset, UErro break; } if (str.charAt(8) != 0x0054) { - // charcter "T" must be used for separating date and time + // character "T" must be used for separating date and time break; } if (length == 16) { @@ -369,9 +369,9 @@ static void getDefaultTZName(const UnicodeString &tzid, UBool isDST, UnicodeStri /* * Parse individual RRULE - * + * * On return - - * + * * month calculated by BYMONTH-1, or -1 when not found * dow day of week in BYDAY, or 0 when not found * wim day of week ordinal number in BYDAY, or 0 when not found @@ -479,7 +479,7 @@ static void parseRRULE(const UnicodeString& rrule, int32_t& month, int32_t& dow, goto rruleParseError; } } else if (attr.compare(ICAL_BYMONTHDAY, -1) == 0) { - // Note: BYMONTHDAY may contain multiple days delimitted by comma + // Note: BYMONTHDAY may contain multiple days delimited by comma // // A value of BYMONTHDAY could be negative, for example, -1 means // the last day in a month @@ -626,7 +626,7 @@ static TimeZoneRule* createRuleByRRULE(const UnicodeString& zonename, int rawOff if (tmp_until > until) { until = tmp_until; } - + // Check if BYMONTH + BYMONTHDAY + BYDAY rule if (tmp_month == -1 || tmp_dayOfWeek == 0 || tmp_daysCount == 0) { goto unsupportedRRule; @@ -663,7 +663,7 @@ static TimeZoneRule* createRuleByRRULE(const UnicodeString& zonename, int rawOff goto unsupportedRRule; } } - // If ealier month, go through days to find the earliest day + // If earlier month, go through days to find the earliest day if (tmp_month == earliestMonth) { for (j = 0; j < tmp_daysCount; j++) { tmp_days[j] = tmp_days[j] > 0 ? tmp_days[j] : MONTHLENGTH[tmp_month] + tmp_days[j] + 1; @@ -881,7 +881,7 @@ static DateTimeRule *toWallTimeRule(const DateTimeRule *rule, int32_t rawOffset, } /* - * Minumum implementations of stream writer/reader, writing/reading + * Minimum implementations of stream writer/reader, writing/reading * UnicodeString. For now, we do not want to introduce the dependency * on the ICU I/O stream in this module. But we want to keep the code * equivalent to the ICU4J implementation, which utilizes java.io.Writer/ @@ -983,7 +983,7 @@ VTimeZone::VTimeZone(const VTimeZone& source) if (U_SUCCESS(status)) { for (int32_t i = 0; i < size; i++) { UnicodeString *line = (UnicodeString*)source.vtzlines->elementAt(i); - vtzlines->addElement(line->clone(), status); + vtzlines->addElementX(line->clone(), status); if (U_FAILURE(status)) { break; } @@ -1028,7 +1028,7 @@ VTimeZone::operator=(const VTimeZone& right) { if (vtzlines != nullptr && U_SUCCESS(status)) { for (int32_t i = 0; i < size; i++) { UnicodeString *line = (UnicodeString*)right.vtzlines->elementAt(i); - vtzlines->addElement(line->clone(), status); + vtzlines->addElementX(line->clone(), status); if (U_FAILURE(status)) { break; } @@ -1047,13 +1047,13 @@ VTimeZone::operator=(const VTimeZone& right) { return *this; } -UBool +bool VTimeZone::operator==(const TimeZone& that) const { if (this == &that) { - return TRUE; + return true; } if (typeid(*this) != typeid(that) || !BasicTimeZone::operator==(that)) { - return FALSE; + return false; } VTimeZone *vtz = (VTimeZone*)&that; if (*tz == *(vtz->tz) @@ -1061,12 +1061,12 @@ VTimeZone::operator==(const TimeZone& that) const { && lastmod == vtz->lastmod /* && olsonzid = that.olsonzid */ /* && icutzver = that.icutzver */) { - return TRUE; + return true; } - return FALSE; + return false; } -UBool +bool VTimeZone::operator!=(const TimeZone& that) const { return !operator==(that); } @@ -1293,7 +1293,7 @@ VTimeZone::load(VTZReader& reader, UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupVtzlines; } - vtzlines->addElement(element.getAlias(), status); + vtzlines->addElementX(element.getAlias(), status); if (U_FAILURE(status)) { goto cleanupVtzlines; } @@ -1315,7 +1315,7 @@ VTimeZone::load(VTZReader& reader, UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupVtzlines; } - vtzlines->addElement(element.getAlias(), status); + vtzlines->addElementX(element.getAlias(), status); if (U_FAILURE(status)) { goto cleanupVtzlines; } @@ -1338,7 +1338,7 @@ VTimeZone::load(VTZReader& reader, UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupVtzlines; } - vtzlines->addElement(element.getAlias(), status); + vtzlines->addElementX(element.getAlias(), status); if (U_FAILURE(status)) { goto cleanupVtzlines; } @@ -1352,7 +1352,7 @@ VTimeZone::load(VTZReader& reader, UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupVtzlines; } - vtzlines->addElement(element.getAlias(), status); + vtzlines->addElementX(element.getAlias(), status); if (U_FAILURE(status)) { goto cleanupVtzlines; } @@ -1433,7 +1433,7 @@ VTimeZone::parse(UErrorCode& status) { } // Set the deleter to remove TimeZoneRule vectors to avoid memory leaks due to unowned TimeZoneRules. rules->setDeleter(deleteTimeZoneRule); - + dates = new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status); if (dates == nullptr) { status = U_MEMORY_ALLOCATION_ERROR; @@ -1441,7 +1441,7 @@ VTimeZone::parse(UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupParse; } - + for (n = 0; n < vtzlines->size(); n++) { UnicodeString *line = (UnicodeString*)vtzlines->elementAt(n); int32_t valueSep = line->indexOf(COLON); @@ -1527,7 +1527,7 @@ VTimeZone::parse(UErrorCode& status) { if (dstr == nullptr) { status = U_MEMORY_ALLOCATION_ERROR; } else { - dates->addElement(dstr, status); + dates->addElementX(dstr, status); } if (U_FAILURE(status)) { goto cleanupParse; @@ -1544,7 +1544,7 @@ VTimeZone::parse(UErrorCode& status) { if (U_FAILURE(status)) { goto cleanupParse; } - dates->addElement(element.getAlias(), status); + dates->addElementX(element.getAlias(), status); if (U_FAILURE(status)) { goto cleanupParse; } @@ -1582,7 +1582,7 @@ VTimeZone::parse(UErrorCode& status) { } else { // This is rare case.. just use 1 hour DST savings rawOffset = toOffset - DEF_DSTSAVINGS; - dstSavings = DEF_DSTSAVINGS; + dstSavings = DEF_DSTSAVINGS; } } else { rawOffset = toOffset; @@ -1609,7 +1609,7 @@ VTimeZone::parse(UErrorCode& status) { if (startAvail && actualStart < firstStart) { // save from offset information for the earliest rule firstStart = actualStart; - // If this is STD, assume the time before this transtion + // If this is STD, assume the time before this transition // is DST when the difference is 1 hour. This might not be // accurate, but VTIMEZONE data does not have such info. if (dstSavings > 0) { @@ -1626,7 +1626,7 @@ VTimeZone::parse(UErrorCode& status) { } } } - rules->addElement(rule, status); + rules->addElementX(rule, status); if (U_FAILURE(status)) { goto cleanupParse; } @@ -1732,7 +1732,7 @@ VTimeZone::parse(UErrorCode& status) { goto cleanupParse; } rules->removeElementAt(finalRuleIdx); - rules->addElement(newRule, status); + rules->addElementX(newRule, status); if (U_FAILURE(status)) { delete newRule; goto cleanupParse; @@ -1809,7 +1809,7 @@ VTimeZone::write(VTZWriter& writer, UErrorCode& status) const { icutzprop.append(u'['); icutzprop.append(icutzver); icutzprop.append(u']'); - customProps.addElement(&icutzprop, status); + customProps.addElementX(&icutzprop, status); } writeZone(writer, *tz, &customProps, status); } @@ -1862,7 +1862,7 @@ VTimeZone::write(UDate start, VTZWriter& writer, UErrorCode& status) const { icutzprop->append(ICU_TZINFO_PARTIAL, -1); appendMillis(start, *icutzprop); icutzprop->append((UChar)0x005D/*']'*/); - customProps.addElement(icutzprop, status); + customProps.addElementX(icutzprop, status); if (U_FAILURE(status)) { delete icutzprop; goto cleanupWritePartial; @@ -1876,10 +1876,7 @@ VTimeZone::write(UDate start, VTZWriter& writer, UErrorCode& status) const { delete initial; } if (transitionRules != nullptr) { - while (!transitionRules->isEmpty()) { - TimeZoneRule *tr = (TimeZoneRule*)transitionRules->orphanElementAt(0); - delete tr; - } + U_ASSERT(transitionRules->hasDeleter()); delete transitionRules; } } @@ -1897,23 +1894,25 @@ VTimeZone::writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const InitialTimeZoneRule *initial = nullptr; AnnualTimeZoneRule *std = nullptr, *dst = nullptr; getSimpleRulesNear(time, initial, std, dst, status); + LocalPointer lpInitial(initial); + LocalPointer lpStd(std); + LocalPointer lpDst(dst); if (U_SUCCESS(status)) { // Create a RuleBasedTimeZone with the subset rule getID(tzid); - RuleBasedTimeZone rbtz(tzid, initial); - if (std != nullptr && dst != nullptr) { - rbtz.addTransitionRule(std, status); - rbtz.addTransitionRule(dst, status); + RuleBasedTimeZone rbtz(tzid, lpInitial.orphan()); + if (lpStd.isValid() && lpDst.isValid()) { + rbtz.addTransitionRule(lpStd.orphan(), status); + rbtz.addTransitionRule(lpDst.orphan(), status); } if (U_FAILURE(status)) { - goto cleanupWriteSimple; + return; } if (olsonzid.length() > 0 && icutzver.length() > 0) { - UnicodeString *icutzprop = new UnicodeString(ICU_TZINFO_PROP); - if (icutzprop == nullptr) { - status = U_MEMORY_ALLOCATION_ERROR; - goto cleanupWriteSimple; + LocalPointer icutzprop(new UnicodeString(ICU_TZINFO_PROP), status); + if (U_FAILURE(status)) { + return; } icutzprop->append(olsonzid); icutzprop->append((UChar)0x005B/*'['*/); @@ -1921,26 +1920,10 @@ VTimeZone::writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const icutzprop->append(ICU_TZINFO_SIMPLE, -1); appendMillis(time, *icutzprop); icutzprop->append((UChar)0x005D/*']'*/); - customProps.addElement(icutzprop, status); - if (U_FAILURE(status)) { - delete icutzprop; - goto cleanupWriteSimple; - } + customProps.adoptElement(icutzprop.orphan(), status); } writeZone(writer, rbtz, &customProps, status); } - return; - -cleanupWriteSimple: - if (initial != nullptr) { - delete initial; - } - if (std != nullptr) { - delete std; - } - if (dst != nullptr) { - delete dst; - } } void @@ -2048,7 +2031,7 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz, goto cleanupWriteZone; } } - } + } if (!sameRule) { // Reset this DST information dstName = name; @@ -2130,9 +2113,9 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz, isDst = (dst != 0); UnicodeString tzid; basictz.getID(tzid); - getDefaultTZName(tzid, isDst, name); + getDefaultTZName(tzid, isDst, name); writeZonePropsByTime(w, isDst, name, - offset, offset, DEF_TZSTARTTIME - offset, FALSE, status); + offset, offset, DEF_TZSTARTTIME - offset, FALSE, status); if (U_FAILURE(status)) { goto cleanupWriteZone; } @@ -2220,7 +2203,7 @@ VTimeZone::writeZone(VTZWriter& w, BasicTimeZone& basictz, goto cleanupWriteZone; } } - } + } } writeFooter(w, status); @@ -2411,7 +2394,7 @@ VTimeZone::writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const Uni // Check if all days are in the same month int32_t startDay = dayOfMonth; int32_t currentMonthDays = 7; - + if (dayOfMonth <= 0) { // The start day is in previous month int32_t prevMonthDays = 1 - dayOfMonth; @@ -2437,7 +2420,7 @@ VTimeZone::writeZonePropsByDOW_GEQ_DOM(VTZWriter& writer, UBool isDst, const Uni currentMonthDays -= nextMonthDays; int32_t nextMonth = (month + 1) > 11 ? 0 : month + 1; - + writeZonePropsByDOW_GEQ_DOM_sub(writer, nextMonth, 1, dayOfWeek, nextMonthDays, MAX_MILLIS /* Do not use UNTIL */, fromOffset, status); if (U_FAILURE(status)) { @@ -2521,7 +2504,7 @@ VTimeZone::writeZonePropsByDOW_LEQ_DOM(VTZWriter& writer, UBool isDst, const Uni writeZonePropsByDOW(writer, isDst, zonename, fromOffset, toOffset, month, -1*((MONTHLENGTH[month] - dayOfMonth)/7 + 1), dayOfWeek, startTime, untilTime, status); } else if (month == UCAL_FEBRUARY && dayOfMonth == 29) { - // Specical case for February + // Special case for February writeZonePropsByDOW(writer, isDst, zonename, fromOffset, toOffset, UCAL_FEBRUARY, -1, dayOfWeek, startTime, untilTime, status); } else { @@ -2627,12 +2610,12 @@ VTimeZone::beginZoneProps(VTZWriter& writer, UBool isDst, const UnicodeString& z writer.write(COLON); writer.write(zonename); writer.write(ICAL_NEWLINE); - + // DTSTART writer.write(ICAL_DTSTART); writer.write(COLON); writer.write(getDateTimeString(startTime + fromOffset, dstr)); - writer.write(ICAL_NEWLINE); + writer.write(ICAL_NEWLINE); } /* diff --git a/deps/icu-small/source/i18n/vzone.cpp b/deps/icu-small/source/i18n/vzone.cpp index 6db3ba04c581f7..7e3a5544fd5e2f 100644 --- a/deps/icu-small/source/i18n/vzone.cpp +++ b/deps/icu-small/source/i18n/vzone.cpp @@ -8,7 +8,7 @@ */ /** - * \file + * \file * \brief C API: VTimeZone classes */ @@ -30,7 +30,7 @@ vzone_openID(const UChar* ID, int32_t idLength){ UnicodeString s(idLength==-1, ID, idLength); return (VZone*) (VTimeZone::createVTimeZoneByID(s)); } - + U_CAPI VZone* U_EXPORT2 vzone_openData(const UChar* vtzdata, int32_t vtzdataLength, UErrorCode& status) { UnicodeString s(vtzdataLength==-1, vtzdata, vtzdataLength); @@ -59,7 +59,7 @@ vzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength) { urlLength = s.length(); memcpy(url,s.getBuffer(),urlLength); - + return b; } diff --git a/deps/icu-small/source/i18n/vzone.h b/deps/icu-small/source/i18n/vzone.h index 2e8433908c0330..d1b6d8d820457c 100644 --- a/deps/icu-small/source/i18n/vzone.h +++ b/deps/icu-small/source/i18n/vzone.h @@ -86,7 +86,7 @@ vzone_equals(const VZone* zone1, const VZone* zone2); /** * Gets the RFC2445 TZURL property value. When a vzone instance was - * created from VTIMEZONE data, the initial value is set by the TZURL + * created from VTIMEZONE data, the initial value is set by the TZURL * property value in the data. Otherwise, the initial value is not set. * @param zone, the vzone to use * @param url Receives the RFC2445 TZURL property value. @@ -107,8 +107,8 @@ vzone_setTZURL(VZone* zone, UChar* url, int32_t urlLength); /** * Gets the RFC2445 LAST-MODIFIED property value. When a vzone instance - * was created from VTIMEZONE data, the initial value is set by the - * LAST-MODIFIED property value in the data. Otherwise, the initial value + * was created from VTIMEZONE data, the initial value is set by the + * LAST-MODIFIED property value in the data. Otherwise, the initial value * is not set. * @param zone, the vzone to use * @param lastModified Receives the last modified date. @@ -323,7 +323,7 @@ vzone_getPreviousTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* re * Returns the number of TimeZoneRules which represents time transitions, * for this time zone, that is, all TimeZoneRules for this time zone except * InitialTimeZoneRule. The return value range is 0 or any positive value. - * @param zone, the vzone to use + * @param zone, the vzone to use * @param status Receives error status code. * @return The number of TimeZoneRules representing time transitions. */ diff --git a/deps/icu-small/source/i18n/windtfmt.cpp b/deps/icu-small/source/i18n/windtfmt.cpp index b5cb8f367b662c..f6a990ea29e609 100644 --- a/deps/icu-small/source/i18n/windtfmt.cpp +++ b/deps/icu-small/source/i18n/windtfmt.cpp @@ -141,7 +141,7 @@ static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeSt // This means that it will fail for locales where ICU has a completely different // name (like ku vs ckb), and it will also not work for alternate sort locale // names like "de-DE-u-co-phonebk". - + // TODO: We could add some sort of exception table for cases like ku vs ckb. int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName)); @@ -167,7 +167,7 @@ Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyl // Note: In the previous code, it would look up the LCID for the locale, and if // the locale was not recognized then it would get an LCID of 0, which is a // synonym for LOCALE_USER_DEFAULT on Windows. - // If the above method fails, then fWindowsLocaleName will remain as nullptr, and + // If the above method fails, then fWindowsLocaleName will remain as nullptr, and // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing // LOCALE_USER_DEFAULT. @@ -406,3 +406,4 @@ U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ #endif // U_PLATFORM_USES_ONLY_WIN32_API + diff --git a/deps/icu-small/source/i18n/windtfmt.h b/deps/icu-small/source/i18n/windtfmt.h index f13a1ae687c342..7fe7f68f450e84 100644 --- a/deps/icu-small/source/i18n/windtfmt.h +++ b/deps/icu-small/source/i18n/windtfmt.h @@ -27,7 +27,7 @@ #include "unicode/locid.h" /** - * \file + * \file * \brief C++ API: Format dates using Windows API. */ diff --git a/deps/icu-small/source/i18n/winnmfmt.cpp b/deps/icu-small/source/i18n/winnmfmt.cpp index 2e44631c85074e..8b2a9a4f958536 100644 --- a/deps/icu-small/source/i18n/winnmfmt.cpp +++ b/deps/icu-small/source/i18n/winnmfmt.cpp @@ -213,7 +213,7 @@ Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErro // Note: In the previous code, it would look up the LCID for the locale, and if // the locale was not recognized then it would get an LCID of 0, which is a // synonym for LOCALE_USER_DEFAULT on Windows. - // If the above method fails, then fWindowsLocaleName will remain as nullptr, and + // If the above method fails, then fWindowsLocaleName will remain as nullptr, and // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing // LOCALE_USER_DEFAULT. @@ -276,7 +276,7 @@ Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other) this->fLCID = other.fLCID; this->fFractionDigitsSet = other.fFractionDigitsSet; this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName); - + const wchar_t *localeName = nullptr; if (fWindowsLocaleName != nullptr) diff --git a/deps/icu-small/source/i18n/winnmfmt.h b/deps/icu-small/source/i18n/winnmfmt.h index 8cf59ccf48d740..99571d2013824d 100644 --- a/deps/icu-small/source/i18n/winnmfmt.h +++ b/deps/icu-small/source/i18n/winnmfmt.h @@ -27,7 +27,7 @@ #if !UCONFIG_NO_FORMATTING /** - * \file + * \file * \brief C++ API: Format numbers using Windows API. */ diff --git a/deps/icu-small/source/i18n/wintzimpl.cpp b/deps/icu-small/source/i18n/wintzimpl.cpp index 211d3564029db8..a6d93300638845 100644 --- a/deps/icu-small/source/i18n/wintzimpl.cpp +++ b/deps/icu-small/source/i18n/wintzimpl.cpp @@ -13,7 +13,7 @@ #include "unicode/utypes.h" -#if U_PLATFORM_USES_ONLY_WIN32_API && !UCONFIG_NO_FORMATTING +#if U_PLATFORM_USES_ONLY_WIN32_API && !UCONFIG_NO_FORMATTING #include "wintzimpl.h" @@ -51,7 +51,7 @@ static UBool getSystemTimeInformation(TimeZone *tz, SYSTEMTIME &daylightDate, SY standardBias = 0; daylightBias = 0; // Do not use DST. Set 0 to all stadardDate/daylightDate fields - standardDate.wYear = standardDate.wMonth = standardDate.wDayOfWeek = standardDate.wDay = + standardDate.wYear = standardDate.wMonth = standardDate.wDayOfWeek = standardDate.wDay = standardDate.wHour = standardDate.wMinute = standardDate.wSecond = standardDate.wMilliseconds = 0; daylightDate.wYear = daylightDate.wMonth = daylightDate.wDayOfWeek = daylightDate.wDay = daylightDate.wHour = daylightDate.wMinute = daylightDate.wSecond = daylightDate.wMilliseconds = 0; @@ -121,7 +121,7 @@ static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar UBool result = FALSE; UnicodeString id = UnicodeString(icuid, length); TimeZone *tz = TimeZone::createTimeZone(id); - + if (tz != NULL) { int32_t bias; int32_t daylightBias; @@ -145,7 +145,7 @@ static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar } /* - * Given the timezone icuid, fill in zoneInfo by calling auxiliary functions that creates a timezone and extract the + * Given the timezone icuid, fill in zoneInfo by calling auxiliary functions that creates a timezone and extract the * information to put into zoneInfo. This includes bias and standard time date and daylight saving date. */ U_CAPI UBool U_EXPORT2 diff --git a/deps/icu-small/source/i18n/wintzimpl.h b/deps/icu-small/source/i18n/wintzimpl.h index c36f2ad5f5f057..772ea95bc52f3f 100644 --- a/deps/icu-small/source/i18n/wintzimpl.h +++ b/deps/icu-small/source/i18n/wintzimpl.h @@ -18,7 +18,7 @@ #if U_PLATFORM_USES_ONLY_WIN32_API /** - * \file + * \file * \brief C API: Utilities for dealing w/ Windows time zones. */ U_CDECL_BEGIN diff --git a/deps/icu-small/source/i18n/zonemeta.cpp b/deps/icu-small/source/i18n/zonemeta.cpp index 72c590f424723f..b8afa4760f1823 100644 --- a/deps/icu-small/source/i18n/zonemeta.cpp +++ b/deps/icu-small/source/i18n/zonemeta.cpp @@ -477,11 +477,11 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UErrorCode ec = U_ZERO_ERROR; if (singleZone) { if (!gSingleZoneCountries->contains((void*)region)) { - gSingleZoneCountries->addElement((void*)region, ec); + gSingleZoneCountries->addElementX((void*)region, ec); } } else { if (!gMultiZonesCountries->contains((void*)region)) { - gMultiZonesCountries->addElement((void*)region, ec); + gMultiZonesCountries->addElementX((void*)region, ec); } } } @@ -696,7 +696,7 @@ ZoneMeta::createMetazoneMappings(const UnicodeString &tzid) { } } - mzMappings->addElement(entry, status); + mzMappings->addElementX(entry, status); if (U_FAILURE(status)) { break; } @@ -801,7 +801,7 @@ static void U_CALLCONV initAvailableMetaZoneIDs () { uMzID[len] = 0; UnicodeString *usMzID = new UnicodeString(uMzID); if (uhash_get(gMetaZoneIDTable, usMzID) == NULL) { - gMetaZoneIDs->addElement((void *)uMzID, status); + gMetaZoneIDs->addElementX((void *)uMzID, status); uhash_put(gMetaZoneIDTable, (void *)usMzID, (void *)uMzID, &status); } else { uprv_free(uMzID); diff --git a/deps/icu-small/source/i18n/zonemeta.h b/deps/icu-small/source/i18n/zonemeta.h index a5a446d8ccdad9..f21399342b9e67 100644 --- a/deps/icu-small/source/i18n/zonemeta.h +++ b/deps/icu-small/source/i18n/zonemeta.h @@ -40,7 +40,7 @@ class U_I18N_API ZoneMeta { /** * Return the canonical id for this tzid defined by CLDR, which might be the id itself. - * This overload method returns a persistent const UChar*, which is guranteed to persist + * This overload method returns a persistent const UChar*, which is guaranteed to persist * (a pointer to a resource). If the given system tzid is not known, U_ILLEGAL_ARGUMENT_ERROR * is set in the status. * @param tzid Zone ID diff --git a/deps/icu-small/source/i18n/zrule.cpp b/deps/icu-small/source/i18n/zrule.cpp index c13411fc8e3f49..bdf84965b5f420 100644 --- a/deps/icu-small/source/i18n/zrule.cpp +++ b/deps/icu-small/source/i18n/zrule.cpp @@ -8,7 +8,7 @@ */ /** - * \file + * \file * \brief C API: Time zone rule classes */ @@ -115,25 +115,25 @@ izrule_isEquivalentTo(IZRule* rule1, IZRule* rule2) { } U_CAPI UBool U_EXPORT2 -izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, +izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) { return ((const InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFirstStart(prevRawOffset, prevDSTSavings, result); } U_CAPI UBool U_EXPORT2 -izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, +izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) { return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFinalStart(prevRawOffset, prevDSTSavings, result); } U_CAPI UBool U_EXPORT2 -izrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, +izrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate& result) { return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getNextStart(base, prevRawOffset, prevDSTSavings, inclusive, result); } U_CAPI UBool U_EXPORT2 -izrule_getPreviousStart(IZRule* rule, UDate base, int32_t prevRawOffset, +izrule_getPreviousStart(IZRule* rule, UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate& result) { return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getPreviousStart(base, prevRawOffset, prevDSTSavings, inclusive, result); } diff --git a/deps/icu-small/source/i18n/zrule.h b/deps/icu-small/source/i18n/zrule.h index 272f954f06905b..f395ad4c3f3176 100644 --- a/deps/icu-small/source/i18n/zrule.h +++ b/deps/icu-small/source/i18n/zrule.h @@ -10,7 +10,7 @@ #define __ZRULE_H /** - * \file + * \file * \brief C API: Time zone rule classes */ @@ -195,12 +195,12 @@ izrule_isEquivalentTo(IZRule* rule1, IZRule* rule2); * "result" is unchanged. */ U_CAPI UBool U_EXPORT2 -izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, +izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result); /** * Gets the final time when this rule takes effect. - * @param rule The IZrule to use + * @param rule The IZrule to use * @param prevRawOffset The standard time offset from UTC before this rule * takes effect in milliseconds. * @param prevDSTSavings The amount of daylight saving offset from the @@ -210,7 +210,7 @@ izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings * "result" is unchanged. */ U_CAPI UBool U_EXPORT2 -izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, +izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result); /** @@ -228,7 +228,7 @@ izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings * "result" is unchanged. */ U_CAPI UBool U_EXPORT2 -izrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, +izrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate& result); /** @@ -246,7 +246,7 @@ izrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, * "result" is unchanged. */ U_CAPI UBool U_EXPORT2 -izrule_getPreviousStart(IZRule* rule, UDate base, int32_t prevRawOffset, +izrule_getPreviousStart(IZRule* rule, UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate& result); diff --git a/deps/icu-small/source/i18n/ztrans.cpp b/deps/icu-small/source/i18n/ztrans.cpp index d2d93da1334b3e..9dbe9bb0b9426c 100644 --- a/deps/icu-small/source/i18n/ztrans.cpp +++ b/deps/icu-small/source/i18n/ztrans.cpp @@ -8,7 +8,7 @@ */ /** - * \file + * \file * \brief C API: Time zone transition classes */ diff --git a/deps/icu-small/source/i18n/ztrans.h b/deps/icu-small/source/i18n/ztrans.h index 8b63eb47e88bbb..b23bb4fc706e69 100644 --- a/deps/icu-small/source/i18n/ztrans.h +++ b/deps/icu-small/source/i18n/ztrans.h @@ -10,7 +10,7 @@ #define __ZTRANS_H /** - * \file + * \file * \brief C API: Time zone transition classes */ @@ -34,7 +34,7 @@ typedef struct ZTrans ZTrans; /** * Constructs a time zone transition with the time and the rules before/after * the transition. - * + * * @param time The time of transition in milliseconds since the base time. * @param from The time zone rule used before the transition. * @param to The time zone rule used after the transition. diff --git a/deps/icu-small/source/stubdata/BUILD b/deps/icu-small/source/stubdata/BUILD new file mode 100644 index 00000000000000..abb73519ec4b08 --- /dev/null +++ b/deps/icu-small/source/stubdata/BUILD @@ -0,0 +1,23 @@ +# © 2021 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# This file defines Bazel targets for the ICU4C "stubdata" library header and source files. + +load("@rules_cc//cc:defs.bzl", "cc_library") + +package( + default_visibility = ["//visibility:public"], +) + +# When compiling code in the `common` dir, the constant +# `U_COMMON_IMPLEMENTATION` needs to be defined. See +# https://unicode-org.github.io/icu/userguide/howtouseicu#c-with-your-own-build-system . + +cc_library( + name = "stubdata", + srcs = ["stubdata.cpp"], + deps = ["//icu4c/source/common:headers"], + local_defines = [ + "U_COMMON_IMPLEMENTATION", + ], +) diff --git a/deps/icu-small/source/stubdata/stubdata.cpp b/deps/icu-small/source/stubdata/stubdata.cpp index de49b9a733a66e..0fcab4faa82c0b 100644 --- a/deps/icu-small/source/stubdata/stubdata.cpp +++ b/deps/icu-small/source/stubdata/stubdata.cpp @@ -32,7 +32,7 @@ typedef struct { uint32_t count, reserved; /* const struct { - const char *const name; + const char *const name; const void *const data; } toc[1]; */ @@ -55,14 +55,14 @@ extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = { #endif U_CHARSET_FAMILY, - sizeof(UChar), + sizeof(UChar), 0, /* reserved */ { /* data format identifier */ 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */ {1, 0, 0, 0}, /* format version major, minor, milli, micro */ {0, 0, 0, 0} /* dataVersion */ }, - {0,0,0,0,0,0,0,0}, /* Padding[8] */ + {0,0,0,0,0,0,0,0}, /* Padding[8] */ 0, /* count */ 0, /* Reserved */ { /* TOC structure */ @@ -72,3 +72,5 @@ extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = { /* } */ } }; + + diff --git a/deps/icu-small/source/tools/escapesrc/cptbl.h b/deps/icu-small/source/tools/escapesrc/cptbl.h index efaa9642e10e75..898e16c925d2f0 100644 --- a/deps/icu-small/source/tools/escapesrc/cptbl.h +++ b/deps/icu-small/source/tools/escapesrc/cptbl.h @@ -1,7 +1,7 @@ -// Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html +// Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html // generated by tblgen. You weren't going to edit it by hand, were you? -static const char cp1047_8859_1[256] = { +static const char cp1047_8859_1[256] = { (char)0x00, /* 00 */ (char)0x01, /* 01 */ (char)0x02, /* 02 */ @@ -260,7 +260,7 @@ static const char cp1047_8859_1[256] = { (char)0x9F, /* FF */ }; -static const bool oldIllegal[256] = { +static const bool oldIllegal[256] = { false, /* U+0000 */ false, /* U+0001 */ false, /* U+0002 */ @@ -518,3 +518,4 @@ static const bool oldIllegal[256] = { false, /* U+00FE */ false, /* U+00FF */ }; + diff --git a/deps/icu-small/source/tools/escapesrc/escapesrc.cpp b/deps/icu-small/source/tools/escapesrc/escapesrc.cpp index a056098ecebca6..ce14022bfc13bc 100644 --- a/deps/icu-small/source/tools/escapesrc/escapesrc.cpp +++ b/deps/icu-small/source/tools/escapesrc/escapesrc.cpp @@ -37,7 +37,7 @@ * %.o: _%.cpp * $(COMPILE.cc) ... $@ $< * - * In the Makefiles, SKIP_ESCAPING=YES is used to prevent escapesrc.cpp + * In the Makefiles, SKIP_ESCAPING=YES is used to prevent escapesrc.cpp * from being itself escaped. */ @@ -136,7 +136,7 @@ bool appendUtf8(std::string &outstr, tmp[chars] = 0; unsigned int c; sscanf(tmp, "%X", &c); - UChar32 ch = c & 0x1FFFFF; + UChar32 ch = c & 0x1FFFFF; // now to append \\x%% etc uint8_t bytesNeeded = U8_LENGTH(ch); @@ -194,7 +194,7 @@ bool fixu8(std::string &linestr, size_t origpos, size_t &endpos) { outstr += ('\"'); linestr.replace(origpos, (endpos-origpos+1), outstr); - + return false; // OK } @@ -207,7 +207,7 @@ bool fixu8(std::string &linestr, size_t origpos, size_t &endpos) { */ bool fixAt(std::string &linestr, size_t pos) { size_t origpos = pos; - + if(linestr[pos] != 'u') { fprintf(stderr, "Not a 'u'?"); return true; @@ -216,12 +216,12 @@ bool fixAt(std::string &linestr, size_t pos) { pos++; // past 'u' bool utf8 = false; - + if(linestr[pos] == '8') { // u8" utf8 = true; pos++; } - + char quote = linestr[pos]; if(quote != '\'' && quote != '\"') { @@ -268,7 +268,7 @@ bool fixAt(std::string &linestr, size_t pos) { } } #endif - + // Proceed to decode utf-8 const uint8_t *s = (const uint8_t*) (linestr.c_str()); int32_t length = linestr.size(); @@ -368,7 +368,7 @@ int convert(const std::string &infile, const std::string &outfile) { fprintf(stderr, "escapesrc: %s -> %s\n", infile.c_str(), outfile.c_str()); std::ifstream inf; - + inf.open(infile.c_str(), std::ios::in); if(!inf.is_open()) { diff --git a/deps/icu-small/source/tools/escapesrc/tblgen.cpp b/deps/icu-small/source/tools/escapesrc/tblgen.cpp index 9bf59a9db9a5df..e94fa9036bc58e 100644 --- a/deps/icu-small/source/tools/escapesrc/tblgen.cpp +++ b/deps/icu-small/source/tools/escapesrc/tblgen.cpp @@ -37,12 +37,12 @@ int main(int argc, const char *argv[]) { } printf("};\n\n"); - // + // // UnicodeSet oldIllegal("[:print:]", status); // [a-zA-Z0-9_}{#)(><%:;.?*+-/^&|~!=,\\u005b\\u005d\\u005c]", status); UnicodeSet oldIllegal("[0-9 a-z A-Z " "_ \\{ \\} \\[ \\] # \\( \\) < > % \\: ; . " "? * + \\- / \\^ \\& | ~ ! = , \\ \" ' ]", status); - + /* http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf ( note: 1998 ) page 10, section 2.2 says: @@ -65,7 +65,7 @@ So basically: printable ASCII plus 0x00-0x1F, 0x7F-0x9F, was all illegal. Some discussion at http://unicode.org/mail-arch/unicode-ml/y2003-m10/0471.html */ - + printf("static const bool oldIllegal[256] = { \n"); @@ -75,6 +75,6 @@ Some discussion at http://unicode.org/mail-arch/unicode-ml/y2003-m10/0471.html i); } printf("};\n\n"); - + return 0; } diff --git a/deps/icu-small/source/tools/genrb/derb.cpp b/deps/icu-small/source/tools/genrb/derb.cpp index 997b400129532c..70546e1915bd5e 100644 --- a/deps/icu-small/source/tools/genrb/derb.cpp +++ b/deps/icu-small/source/tools/genrb/derb.cpp @@ -386,7 +386,7 @@ static void printHex(UFILE *out, uint8_t what) { static void printOutAlias(UFILE *out, UResourceBundle *parent, Resource r, const char *key, int32_t indent, const char *pname, UErrorCode *status) { static const UChar cr[] = { 0xA }; // LF int32_t len = 0; - const UChar* thestr = res_getAlias(&(parent->fResData), r, &len); + const UChar* thestr = res_getAlias(&(parent->getResData()), r, &len); UChar *string = quotedString(thestr); if(opt_truncate && len > truncsize) { char msg[128]; @@ -594,9 +594,9 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent for(i = 0; i < resSize; i++) { /* need to know if it's an alias */ if(isTable) { - r = res_getTableItemByIndex(&resource->fResData, resource->fRes, i, &key); + r = res_getTableItemByIndex(&resource->getResData(), resource->fRes, i, &key); } else { - r = res_getArrayItem(&resource->fResData, resource->fRes, i); + r = res_getArrayItem(&resource->getResData(), resource->fRes, i); } if(U_SUCCESS(*status)) { if(res_getPublicType(r) == URES_ALIAS) { diff --git a/deps/icu-small/source/tools/genrb/genrb.cpp b/deps/icu-small/source/tools/genrb/genrb.cpp index 6f3a13a0a6107c..a739b91143cd85 100644 --- a/deps/icu-small/source/tools/genrb/genrb.cpp +++ b/deps/icu-small/source/tools/genrb/genrb.cpp @@ -564,7 +564,7 @@ main(int argc, u_cleanup(); - /* Dont return warnings as a failure */ + /* Don't return warnings as a failure */ if (U_SUCCESS(status)) { return 0; } @@ -616,7 +616,7 @@ processFile(const char *filename, const char *cp, if(inputDir[dirlen-1] != U_FILE_SEP_CHAR) { /* * append the input dir to openFileName if the first char in - * filename is not file seperation char and the last char input directory is not '.'. + * filename is not file separation char and the last char input directory is not '.'. * This is to support : * genrb -s. /home/icu/data * genrb -s. icu/data diff --git a/deps/icu-small/source/tools/genrb/parse.cpp b/deps/icu-small/source/tools/genrb/parse.cpp index 5abe5d656733f9..7d5ffe1fc78d3a 100644 --- a/deps/icu-small/source/tools/genrb/parse.cpp +++ b/deps/icu-small/source/tools/genrb/parse.cpp @@ -683,7 +683,7 @@ class GenrbImporter : public icu::CollationRuleParser::Importer { virtual void getRules( const char *localeID, const char *collationType, UnicodeString &rules, - const char *&errorReason, UErrorCode &errorCode); + const char *&errorReason, UErrorCode &errorCode) override; private: const char *inputDir; diff --git a/deps/icu-small/source/tools/genrb/parse.h b/deps/icu-small/source/tools/genrb/parse.h index dfe3b8dda06e55..bcd8e798f9a618 100644 --- a/deps/icu-small/source/tools/genrb/parse.h +++ b/deps/icu-small/source/tools/genrb/parse.h @@ -25,7 +25,7 @@ #include "ucbuf.h" U_CDECL_BEGIN -/* One time parser initalisation */ +/* One time parser initialization */ void initParser(); /* Parse a ResourceBundle text file */ diff --git a/deps/icu-small/source/tools/genrb/prscmnts.cpp b/deps/icu-small/source/tools/genrb/prscmnts.cpp index d79d59e3916bc5..cb835cb8c33ddc 100644 --- a/deps/icu-small/source/tools/genrb/prscmnts.cpp +++ b/deps/icu-small/source/tools/genrb/prscmnts.cpp @@ -43,9 +43,9 @@ const char *patternStrings[UPC_LIMIT]={ "^note\\s*(.*)" }; -U_CFUNC int32_t -removeText(UChar *source, int32_t srcLen, - UnicodeString patString,uint32_t options, +U_CFUNC int32_t +removeText(UChar *source, int32_t srcLen, + UnicodeString patString,uint32_t options, UnicodeString replaceText, UErrorCode *status){ if(status == NULL || U_FAILURE(*status)){ @@ -62,8 +62,8 @@ removeText(UChar *source, int32_t srcLen, dest = myMatcher.replaceAll(replaceText,*status); - - + + return dest.extract(source, srcLen, *status); } @@ -71,11 +71,11 @@ U_CFUNC int32_t trim(UChar *src, int32_t srcLen, UErrorCode *status){ srcLen = removeText(src, srcLen, UnicodeString("^[ \\r\\n]+ "), 0, UnicodeString(), status); // remove leading new lines srcLen = removeText(src, srcLen, UnicodeString("^\\s+"), 0, UnicodeString(), status); // remove leading spaces - srcLen = removeText(src, srcLen, UnicodeString("\\s+$"), 0, UnicodeString(), status); // remvoe trailing spcaes + srcLen = removeText(src, srcLen, UnicodeString("\\s+$"), 0, UnicodeString(), status); // remove trailing spcaes return srcLen; } -U_CFUNC int32_t +U_CFUNC int32_t removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){ srcLen = trim(source, srcLen, status); UnicodeString patString("^\\s*?\\*\\s*?"); // remove pattern like " * " at the beginning of the line @@ -83,12 +83,12 @@ removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){ return removeText(source, srcLen, UnicodeString("[ \\r\\n]+"), 0, UnicodeString(" "), status);// remove new lines; } -U_CFUNC int32_t +U_CFUNC int32_t getText(const UChar* source, int32_t srcLen, UChar** dest, int32_t destCapacity, - UnicodeString patternString, + UnicodeString patternString, UErrorCode* status){ - + if(status == NULL || U_FAILURE(*status)){ return 0; } @@ -96,12 +96,12 @@ getText(const UChar* source, int32_t srcLen, UnicodeString stringArray[MAX_SPLIT_STRINGS]; RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), 0, *status); UnicodeString src (source,srcLen); - + if (U_FAILURE(*status)) { return 0; } pattern->split(src, stringArray, MAX_SPLIT_STRINGS, *status); - + RegexMatcher matcher(patternString, UREGEX_DOTALL, *status); if (U_FAILURE(*status)) { return 0; @@ -131,7 +131,7 @@ getDescription( const UChar* source, int32_t srcLen, UnicodeString stringArray[MAX_SPLIT_STRINGS]; RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), UREGEX_MULTILINE, *status); UnicodeString src(source, srcLen); - + if (U_FAILURE(*status)) { return 0; } @@ -145,9 +145,9 @@ getDescription( const UChar* source, int32_t srcLen, } U_CFUNC int32_t -getCount(const UChar* source, int32_t srcLen, +getCount(const UChar* source, int32_t srcLen, UParseCommentsOption option, UErrorCode *status){ - + if(status == NULL || U_FAILURE(*status)){ return 0; } @@ -161,12 +161,12 @@ getCount(const UChar* source, int32_t srcLen, return 0; } int32_t retLen = pattern->split(src, stringArray, MAX_SPLIT_STRINGS, *status); - + UnicodeString patternString(patternStrings[option]); RegexMatcher matcher(patternString, UREGEX_DOTALL, *status); if (U_FAILURE(*status)) { return 0; - } + } int32_t count = 0; for(int32_t i=0; isplit(src, stringArray, MAX_SPLIT_STRINGS, *status); - + UnicodeString patternString(patternStrings[option]); RegexMatcher matcher(patternString, UREGEX_DOTALL, *status); if (U_FAILURE(*status)) { return 0; - } + } int32_t count = 0; for(int32_t i=0; i=length) ? pad :length; - + /* Reverses the string */ for (j = 0; j < (num / 2); j++){ diff --git a/deps/icu-small/source/tools/genrb/read.c b/deps/icu-small/source/tools/genrb/read.c index 141e285d25efb9..7314f6b742fbf4 100644 --- a/deps/icu-small/source/tools/genrb/read.c +++ b/deps/icu-small/source/tools/genrb/read.c @@ -36,7 +36,7 @@ #define BADBOM 0xFFFE #define CR 0x000D #define LF 0x000A - + static int32_t lineCount; /* Protos */ @@ -188,7 +188,7 @@ static enum ETokenType getStringToken(UCHARBUF* buf, if(c == CR || c == LF){ isNLUnescaped = TRUE; } - } + } if(c==ESCAPE && !isFollowingCharEscaped){ isFollowingCharEscaped = TRUE; @@ -205,7 +205,7 @@ static enum ETokenType getStringToken(UCHARBUF* buf, isNLUnescaped = FALSE; } } - + if (U_FAILURE(*status)) { return TOK_ERROR; } @@ -219,7 +219,7 @@ static enum ETokenType getStringToken(UCHARBUF* buf, return TOK_ERROR; } } - + if(lastStringWasQuoted){ if(getShowWarning()){ warning(lineCount, "Mixing quoted and unquoted strings"); @@ -231,8 +231,8 @@ static enum ETokenType getStringToken(UCHARBUF* buf, } lastStringWasQuoted = FALSE; - - /* if we reach here we are mixing + + /* if we reach here we are mixing * quoted and unquoted strings * warn in normal mode and error in * pedantic mode @@ -252,7 +252,7 @@ static enum ETokenType getStringToken(UCHARBUF* buf, pTarget = target; ustr_uscat(token, pTarget,len, status); len=0; - + if (U_FAILURE(*status)) { return TOK_ERROR; } diff --git a/deps/icu-small/source/tools/genrb/reslist.cpp b/deps/icu-small/source/tools/genrb/reslist.cpp index 389ad19b38b88f..b9e0d7d8c438e3 100644 --- a/deps/icu-small/source/tools/genrb/reslist.cpp +++ b/deps/icu-small/source/tools/genrb/reslist.cpp @@ -954,11 +954,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg, if (writtenFilename) { int32_t off = 0, len = 0; if (outputDir) { - len = (int32_t)uprv_strlen(outputDir); - if (len > writtenFilenameLen) { - len = writtenFilenameLen; - } - uprv_strncpy(writtenFilename, outputDir, len); + uprv_strncpy(writtenFilename, outputDir, writtenFilenameLen); } if (writtenFilenameLen -= len) { off += len; @@ -977,14 +973,10 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg, if (len > writtenFilenameLen) { len = writtenFilenameLen; } - uprv_strncpy(writtenFilename + off, fLocale, len); + uprv_strncpy(writtenFilename + off, fLocale, writtenFilenameLen - off); if (writtenFilenameLen -= len) { off += len; - len = 5; - if (len > writtenFilenameLen) { - len = writtenFilenameLen; - } - uprv_strncpy(writtenFilename + off, ".res", len); + uprv_strncpy(writtenFilename + off, ".res", writtenFilenameLen - off); } } } diff --git a/deps/icu-small/source/tools/genrb/reslist.h b/deps/icu-small/source/tools/genrb/reslist.h index 400f0a97debea4..c9731880ea669e 100644 --- a/deps/icu-small/source/tools/genrb/reslist.h +++ b/deps/icu-small/source/tools/genrb/reslist.h @@ -124,7 +124,7 @@ struct SRBRoot { /* write a java resource file */ // TODO: C++ify -void bundle_write_java(struct SRBRoot *bundle, const char *outputDir, const char* outputEnc, char *writtenFilename, +void bundle_write_java(struct SRBRoot *bundle, const char *outputDir, const char* outputEnc, char *writtenFilename, int writtenFilenameLen, const char* packageName, const char* bundleName, UErrorCode *status); /* write a xml resource file */ @@ -219,7 +219,7 @@ struct SResource { /** * Applies the given filter with the given base path to this resource. * Removes child resources rejected by the filter recursively. - * + * * @param bundle Needed in order to access the key for this and child resources. */ virtual void applyFilter(const PathFilter& filter, ResKeyPath& path, const SRBRoot* bundle); @@ -294,9 +294,9 @@ class ArrayResource : public ContainerResource { void add(SResource *res); - virtual void handleWrite16(SRBRoot *bundle); - virtual void handlePreWrite(uint32_t *byteOffset); - virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset); + virtual void handleWrite16(SRBRoot *bundle) override; + virtual void handlePreWrite(uint32_t *byteOffset) override; + virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) override; SResource *fLast; }; @@ -313,7 +313,7 @@ class PseudoListResource : public ContainerResource { void add(SResource *res); - virtual void handleWrite16(SRBRoot *bundle); + virtual void handleWrite16(SRBRoot *bundle) override; }; class StringBaseResource : public SResource { @@ -329,8 +329,8 @@ class StringBaseResource : public SResource { const UChar *getBuffer() const { return icu::toUCharPtr(fString.getBuffer()); } int32_t length() const { return fString.length(); } - virtual void handlePreWrite(uint32_t *byteOffset); - virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset); + virtual void handlePreWrite(uint32_t *byteOffset) override; + virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) override; // TODO: private with getter? icu::UnicodeString fString; @@ -363,8 +363,8 @@ class StringResource : public StringBaseResource { return fNumCharsForLength + length() + 1; // +1 for the NUL } - virtual void handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet, UErrorCode &errorCode); - virtual void handleWrite16(SRBRoot *bundle); + virtual void handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet, UErrorCode &errorCode) override; + virtual void handleWrite16(SRBRoot *bundle) override; void writeUTF16v2(int32_t base, icu::UnicodeString &dest); @@ -401,8 +401,8 @@ class IntVectorResource : public SResource { void add(int32_t value, UErrorCode &errorCode); - virtual void handlePreWrite(uint32_t *byteOffset); - virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset); + virtual void handlePreWrite(uint32_t *byteOffset) override; + virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) override; // TODO: UVector32 size_t fCount; @@ -417,8 +417,8 @@ class BinaryResource : public SResource { const UString* comment, UErrorCode &errorCode); virtual ~BinaryResource(); - virtual void handlePreWrite(uint32_t *byteOffset); - virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset); + virtual void handlePreWrite(uint32_t *byteOffset) override; + virtual void handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) override; // TODO: CharString? uint32_t fLength; diff --git a/deps/icu-small/source/tools/genrb/rle.c b/deps/icu-small/source/tools/genrb/rle.c index c5d29ba1d24b6b..f737c454914153 100644 --- a/deps/icu-small/source/tools/genrb/rle.c +++ b/deps/icu-small/source/tools/genrb/rle.c @@ -405,3 +405,4 @@ rleStringToByteArray(uint16_t* src, int32_t srcLen, uint8_t* target, int32_t tgt return ai; } + diff --git a/deps/icu-small/source/tools/genrb/rle.h b/deps/icu-small/source/tools/genrb/rle.h index 9f580733d5846b..2684bbe6b29d79 100644 --- a/deps/icu-small/source/tools/genrb/rle.h +++ b/deps/icu-small/source/tools/genrb/rle.h @@ -62,7 +62,7 @@ usArrayToRLEString(const uint16_t* src,int32_t srcLen,uint16_t* buffer, int32_t * Construct an array of bytes from a run-length encoded string. */ int32_t -rleStringToByteArray(uint16_t* src, int32_t srcLen, uint8_t* target, int32_t tgtLen, UErrorCode* status); +rleStringToByteArray(uint16_t* src, int32_t srcLen, uint8_t* target, int32_t tgtLen, UErrorCode* status); /** * Construct an array of shorts from a run-length encoded string. */ diff --git a/deps/icu-small/source/tools/genrb/ustr.c b/deps/icu-small/source/tools/genrb/ustr.c index f1436ae8aec172..15f76a80ca2802 100644 --- a/deps/icu-small/source/tools/genrb/ustr.c +++ b/deps/icu-small/source/tools/genrb/ustr.c @@ -133,13 +133,13 @@ ustr_ncat(struct UString *dst, { if(U_FAILURE(*status) || dst == src) return; - + if(dst->fCapacity < (dst->fLength + n)) { ustr_resize(dst, ALLOCATION(dst->fLength + n), status); if(U_FAILURE(*status)) return; } - + uprv_memcpy(dst->fChars + dst->fLength, src->fChars, sizeof(UChar) * n); dst->fLength += src->fLength; @@ -165,7 +165,7 @@ ustr_ucat(struct UString *dst, dst->fLength += 1; dst->fChars[dst->fLength] = 0x0000; } -U_CFUNC void +U_CFUNC void ustr_u32cat(struct UString *dst, UChar32 c, UErrorCode *status){ if(c > 0x10FFFF){ *status = U_ILLEGAL_CHAR_FOUND; @@ -183,7 +183,7 @@ ustr_uscat(struct UString *dst, const UChar* src,int len, UErrorCode *status) { - if(U_FAILURE(*status)) + if(U_FAILURE(*status)) return; if(dst->fCapacity < (dst->fLength + len)) { diff --git a/deps/icu-small/source/tools/genrb/wrtjava.cpp b/deps/icu-small/source/tools/genrb/wrtjava.cpp index f1eb229760f12f..3ad0a94cf3d957 100644 --- a/deps/icu-small/source/tools/genrb/wrtjava.cpp +++ b/deps/icu-small/source/tools/genrb/wrtjava.cpp @@ -15,7 +15,7 @@ * Date Name Description * 01/11/02 Ram Creation. * 02/12/08 Spieth Fix errant 'new Object[][]{' insertion -* 02/19/08 Spieth Removed ICUListResourceBundle dependancy +* 02/19/08 Spieth Removed ICUListResourceBundle dependency ******************************************************************************* */ @@ -627,7 +627,7 @@ bundle_write_java(struct SRBRoot *bundle, const char *outputDir,const char* outp /*UBool j1 =FALSE;*/ /*outDir = outputDir;*/ - start = TRUE; /* Reset the start indictor*/ + start = TRUE; /* Reset the start indicator*/ bName = (bundleName==NULL) ? "LocaleElements" : bundleName; pName = (packageName==NULL)? "com.ibm.icu.impl.data" : packageName; diff --git a/deps/icu-small/source/tools/genrb/wrtxml.cpp b/deps/icu-small/source/tools/genrb/wrtxml.cpp index 58e055d5718c03..fa2105d908e798 100644 --- a/deps/icu-small/source/tools/genrb/wrtxml.cpp +++ b/deps/icu-small/source/tools/genrb/wrtxml.cpp @@ -135,7 +135,7 @@ static char* getID(const char* id, const char* curKey, char* result) { /* ICU is not endian portable, because ICU data generated on big endian machines can be * ported to big endian machines but not to little endian machines and vice versa. The - * conversion is not portable across platforms with different endianess. + * conversion is not portable across platforms with different endianness. */ uint32_t computeCRC(const char *ptr, uint32_t len, uint32_t lastcrc){ @@ -522,7 +522,7 @@ printComments(struct UString *src, const char *resName, UBool printTranslate, UE write_utf8_file(out,UnicodeString(">\n")); } }else if(getShowWarning()){ - fprintf(stderr, "Warning: Tranlate attribute for resource %s cannot be set. XLIFF prohibits it.\n", resName); + fprintf(stderr, "Warning: Translate attribute for resource %s cannot be set. XLIFF prohibits it.\n", resName); /* no translate attribute .. just close the tag */ write_utf8_file(out,UnicodeString(">\n")); } @@ -924,8 +924,6 @@ bin_write_xml(BinaryResource *res, const char* id, const char* /*language*/, UEr static void table_write_xml(TableResource *res, const char* id, const char* language, UBool isTopLevel, UErrorCode *status) { - uint32_t i = 0; - struct SResource *current = NULL; char* sid = NULL; @@ -940,7 +938,6 @@ table_write_xml(TableResource *res, const char* id, const char* language, UBool } current = res->fFirst; - i = 0; while (current != NULL) { res_write_xml(current, sid, language, FALSE, status); @@ -949,7 +946,6 @@ table_write_xml(TableResource *res, const char* id, const char* language, UBool return; } - i += 1; current = current->fNext; } diff --git a/deps/icu-small/source/tools/icuexportdata/icuexportdata.cpp b/deps/icu-small/source/tools/icuexportdata/icuexportdata.cpp new file mode 100644 index 00000000000000..ef933676115e1b --- /dev/null +++ b/deps/icu-small/source/tools/icuexportdata/icuexportdata.cpp @@ -0,0 +1,295 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include +#include +#include "toolutil.h" +#include "uoptions.h" +#include "cmemory.h" +#include "charstr.h" +#include "cstring.h" +#include "unicode/uchar.h" +#include "unicode/errorcode.h" +#include "unicode/uniset.h" +#include "unicode/putil.h" +#include "unicode/umutablecptrie.h" +#include "writesrc.h" + +U_NAMESPACE_USE + +/* + * Global - verbosity + */ +UBool VERBOSE = FALSE; +UBool QUIET = FALSE; + +UBool haveCopyright = TRUE; +UCPTrieType trieType = UCPTRIE_TYPE_SMALL; +const char* destdir = ""; + +void handleError(ErrorCode& status, const char* context) { + if (status.isFailure()) { + std::cerr << "Error: " << context << ": " << status.errorName() << std::endl; + exit(status.reset()); + } +} + +class PropertyValueNameGetter : public ValueNameGetter { +public: + PropertyValueNameGetter(UProperty prop) : property(prop) {} + ~PropertyValueNameGetter() override; + const char *getName(uint32_t value) override { + return u_getPropertyValueName(property, value, U_SHORT_PROPERTY_NAME); + } + +private: + UProperty property; +}; + +PropertyValueNameGetter::~PropertyValueNameGetter() {} + +void dumpBinaryProperty(UProperty uproperty, FILE* f) { + IcuToolErrorCode status("icuexportdata: dumpBinaryProperty"); + const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME); + const char* shortPropName = u_getPropertyName(uproperty, U_SHORT_PROPERTY_NAME); + const USet* uset = u_getBinaryPropertySet(uproperty, status); + handleError(status, fullPropName); + + fputs("[[binary_property]]\n", f); + fprintf(f, "long_name = \"%s\"\n", fullPropName); + if (shortPropName) fprintf(f, "short_name = \"%s\"\n", shortPropName); + usrc_writeUnicodeSet(f, uset, UPRV_TARGET_SYNTAX_TOML); +} + +void dumpEnumeratedProperty(UProperty uproperty, FILE* f) { + IcuToolErrorCode status("icuexportdata: dumpEnumeratedProperty"); + const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME); + const char* shortPropName = u_getPropertyName(uproperty, U_SHORT_PROPERTY_NAME); + const UCPMap* umap = u_getIntPropertyMap(uproperty, status); + handleError(status, fullPropName); + + fputs("[[enum_property]]\n", f); + fprintf(f, "long_name = \"%s\"\n", fullPropName); + if (shortPropName) fprintf(f, "short_name = \"%s\"\n", shortPropName); + PropertyValueNameGetter valueNameGetter(uproperty); + usrc_writeUCPMap(f, umap, &valueNameGetter, UPRV_TARGET_SYNTAX_TOML); + fputs("\n", f); + + U_ASSERT(u_getIntPropertyMinValue(uproperty) >= 0); + int32_t maxValue = u_getIntPropertyMaxValue(uproperty); + U_ASSERT(maxValue >= 0); + UCPTrieValueWidth width = UCPTRIE_VALUE_BITS_32; + if (maxValue <= 0xff) { + width = UCPTRIE_VALUE_BITS_8; + } else if (maxValue <= 0xffff) { + width = UCPTRIE_VALUE_BITS_16; + } + LocalUMutableCPTriePointer builder(umutablecptrie_fromUCPMap(umap, status)); + LocalUCPTriePointer utrie(umutablecptrie_buildImmutable( + builder.getAlias(), + trieType, + width, + status)); + handleError(status, fullPropName); + + fputs("[enum_property.code_point_trie]\n", f); + usrc_writeUCPTrie(f, shortPropName, utrie.getAlias(), UPRV_TARGET_SYNTAX_TOML); +} + +FILE* prepareOutputFile(const char* basename) { + IcuToolErrorCode status("icuexportdata"); + CharString outFileName; + if (destdir != nullptr && *destdir != 0) { + outFileName.append(destdir, status).ensureEndsWithFileSeparator(status); + } + outFileName.append(basename, status); + outFileName.append(".toml", status); + handleError(status, basename); + + FILE* f = fopen(outFileName.data(), "w"); + if (f == nullptr) { + std::cerr << "Unable to open file: " << outFileName.data() << std::endl; + exit(U_FILE_ACCESS_ERROR); + } + if (!QUIET) { + std::cout << "Writing to: " << outFileName.data() << std::endl; + } + + if (haveCopyright) { + usrc_writeCopyrightHeader(f, "#", 2021); + } + usrc_writeFileNameGeneratedBy(f, "#", basename, "icuexportdata.cpp"); + + return f; +} + +enum { + OPT_HELP_H, + OPT_HELP_QUESTION_MARK, + OPT_MODE, + OPT_TRIE_TYPE, + OPT_VERSION, + OPT_DESTDIR, + OPT_ALL, + OPT_INDEX, + OPT_COPYRIGHT, + OPT_VERBOSE, + OPT_QUIET, + + OPT_COUNT +}; + +#define UOPTION_MODE UOPTION_DEF("mode", 'm', UOPT_REQUIRES_ARG) +#define UOPTION_TRIE_TYPE UOPTION_DEF("trie-type", '\1', UOPT_REQUIRES_ARG) +#define UOPTION_ALL UOPTION_DEF("all", '\1', UOPT_NO_ARG) +#define UOPTION_INDEX UOPTION_DEF("index", '\1', UOPT_NO_ARG) + +static UOption options[]={ + UOPTION_HELP_H, + UOPTION_HELP_QUESTION_MARK, + UOPTION_MODE, + UOPTION_TRIE_TYPE, + UOPTION_VERSION, + UOPTION_DESTDIR, + UOPTION_ALL, + UOPTION_INDEX, + UOPTION_COPYRIGHT, + UOPTION_VERBOSE, + UOPTION_QUIET, +}; + +int main(int argc, char* argv[]) { + U_MAIN_INIT_ARGS(argc, argv); + + /* preset then read command line options */ + options[OPT_DESTDIR].value=u_getDataDirectory(); + argc=u_parseArgs(argc, argv, UPRV_LENGTHOF(options), options); + + if(options[OPT_VERSION].doesOccur) { + printf("icuexportdata version %s, ICU tool to dump data files for external consumers\n", + U_ICU_DATA_VERSION); + printf("%s\n", U_COPYRIGHT_STRING); + exit(0); + } + + /* error handling, printing usage message */ + if(argc<0) { + fprintf(stderr, + "error in command line argument \"%s\"\n", + argv[-argc]); + } else if(argc<2) { + argc=-1; + } + + /* get the options values */ + haveCopyright = options[OPT_COPYRIGHT].doesOccur; + destdir = options[OPT_DESTDIR].value; + VERBOSE = options[OPT_VERBOSE].doesOccur; + QUIET = options[OPT_QUIET].doesOccur; + + // Load list of Unicode properties + std::vector propNames; + for (int i=1; i(i); + const char* propName = u_getPropertyName(uprop, U_SHORT_PROPERTY_NAME); + if (propName == NULL) { + propName = u_getPropertyName(uprop, U_LONG_PROPERTY_NAME); + if (propName != NULL && VERBOSE) { + std::cerr << "Note: falling back to long name for: " << propName << std::endl; + } + } + if (propName != NULL) { + propNames.push_back(propName); + } + } + } + + if (propNames.empty() + || options[OPT_HELP_H].doesOccur + || options[OPT_HELP_QUESTION_MARK].doesOccur + || !options[OPT_MODE].doesOccur) { + FILE *stdfile=argc<0 ? stderr : stdout; + fprintf(stdfile, + "usage: %s -m uprops [-options] [--all | properties...]\n" + "\tdump Unicode property data to .toml files\n" + "options:\n" + "\t-h or -? or --help this usage text\n" + "\t-V or --version show a version message\n" + "\t-m or --mode mode: currently only 'uprops', but more may be added\n" + "\t --trie-type set the trie type (small or fast, default small)\n" + "\t-d or --destdir destination directory, followed by the path\n" + "\t --all write out all properties known to icuexportdata\n" + "\t --index write an _index.toml summarizing all data exported\n" + "\t-c or --copyright include a copyright notice\n" + "\t-v or --verbose Turn on verbose output\n" + "\t-q or --quiet do not display warnings and progress\n", + argv[0]); + return argc<0 ? U_ILLEGAL_ARGUMENT_ERROR : U_ZERO_ERROR; + } + + const char* mode = options[OPT_MODE].value; + if (uprv_strcmp(mode, "uprops") != 0) { + fprintf(stderr, "Invalid option for --mode (must be uprops)\n"); + return U_ILLEGAL_ARGUMENT_ERROR; + } + + if (options[OPT_TRIE_TYPE].doesOccur) { + if (uprv_strcmp(options[OPT_TRIE_TYPE].value, "fast") == 0) { + trieType = UCPTRIE_TYPE_FAST; + } else if (uprv_strcmp(options[OPT_TRIE_TYPE].value, "small") == 0) { + trieType = UCPTRIE_TYPE_SMALL; + } else { + fprintf(stderr, "Invalid option for --trie-type (must be small or fast)\n"); + return U_ILLEGAL_ARGUMENT_ERROR; + } + } + + for (const char* propName : propNames) { + UProperty propEnum = u_getPropertyEnum(propName); + if (propEnum == UCHAR_INVALID_CODE) { + std::cerr << "Error: Invalid property alias: " << propName << std::endl; + return U_ILLEGAL_ARGUMENT_ERROR; + } + + FILE* f = prepareOutputFile(propName); + + UVersionInfo versionInfo; + u_getUnicodeVersion(versionInfo); + char uvbuf[U_MAX_VERSION_STRING_LENGTH]; + u_versionToString(versionInfo, uvbuf); + fprintf(f, "icu_version = \"%s\"\nunicode_version = \"%s\"\n\n", + U_ICU_VERSION, + uvbuf); + + if (propEnum < UCHAR_BINARY_LIMIT) { + dumpBinaryProperty(propEnum, f); + } else if (UCHAR_INT_START <= propEnum && propEnum <= UCHAR_INT_LIMIT) { + dumpEnumeratedProperty(propEnum, f); + } else { + std::cerr << "Don't know how to write property: " << propEnum << std::endl; + return U_INTERNAL_PROGRAM_ERROR; + } + + fclose(f); + } + + if (options[OPT_INDEX].doesOccur) { + FILE* f = prepareOutputFile("_index"); + fprintf(f, "index = [\n"); + for (const char* propName : propNames) { + // At this point, propName is a valid property name, so it should be alphanum ASCII + fprintf(f, " { filename=\"%s.toml\" },\n", propName); + } + fprintf(f, "]\n"); + fclose(f); + } + + return 0; +} diff --git a/deps/icu-small/source/tools/pkgdata/pkgdata.cpp b/deps/icu-small/source/tools/pkgdata/pkgdata.cpp index 41a13406cf1f31..8de99cb9ceabdc 100644 --- a/deps/icu-small/source/tools/pkgdata/pkgdata.cpp +++ b/deps/icu-small/source/tools/pkgdata/pkgdata.cpp @@ -586,7 +586,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) { uprv_strcat(targetDir, PKGDATA_FILE_SEP_STRING); uprv_strcat(targetDir, o->shortName); } - + if(o->verbose) { fprintf(stdout, "# Install: Files mode, copying files to %s..\n", targetDir); } @@ -723,7 +723,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) { if(o->verbose) { fprintf(stdout, "# Generating assembly code %s of type %s ..\n", gencFilePath, genccodeAssembly); } - + /* Offset genccodeAssembly by 3 because "-a " */ if (genccodeAssembly && (uprv_strlen(genccodeAssembly)>3) && @@ -916,7 +916,7 @@ static int32_t initializePkgDataFlags(UPKGOptions *o) { /* - * Given the base libName and version numbers, generate the libary file names and store it in libFileNames. + * Given the base libName and version numbers, generate the library file names and store it in libFileNames. * Depending on the configuration, the library name may either end with version number or shared object suffix. */ static void createFileNames(UPKGOptions *o, const char mode, const char *version_major, const char *version, const char *libName, UBool reverseExt, UBool noVersion) { @@ -1051,7 +1051,7 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling) uprv_strcmp(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSION_MAJOR]) == 0) { return result; } - + sprintf(cmd, "cd %s && %s %s && %s %s %s", targetDir, RM_CMD, @@ -1322,18 +1322,18 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB targetDir, libFileNames[LIB_FILE_VERSION_TMP]); - result = runCommand(cmd); - if (result != 0) { + result = runCommand(cmd); + if (result != 0) { fprintf(stderr, "Error creating archive library. Failed command: %s\n", cmd); - return result; - } - - sprintf(cmd, "%s %s%s", - pkgDataFlags[RANLIB], - targetDir, + return result; + } + + sprintf(cmd, "%s %s%s", + pkgDataFlags[RANLIB], + targetDir, libFileNames[LIB_FILE_VERSION]); - - result = runCommand(cmd); + + result = runCommand(cmd); if (result != 0) { fprintf(stderr, "Error creating archive library. Failed command: %s\n", cmd); return result; @@ -1398,11 +1398,11 @@ static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c result = runCommand(cmd); if (result == 0) { - sprintf(cmd, "%s %s%s", - pkgDataFlags[RANLIB], - targetDir, - libFileNames[LIB_FILE_VERSION]); - + sprintf(cmd, "%s %s%s", + pkgDataFlags[RANLIB], + targetDir, + libFileNames[LIB_FILE_VERSION]); + result = runCommand(cmd); } } else /* if (IN_DLL_MODE(mode)) */ { @@ -1613,10 +1613,10 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD #ifdef USE_SINGLE_CCODE_FILE char icudtAll[SMALL_BUFFER_MAX_SIZE] = ""; FileStream *icudtAllFile = NULL; - + sprintf(icudtAll, "%s%s%sall.c", o->tmpDir, - PKGDATA_FILE_SEP_STRING, + PKGDATA_FILE_SEP_STRING, libFileNames[LIB_FILE]); /* Remove previous icudtall.c file. */ if (T_FileStream_file_exists(icudtAll) && (result = remove(icudtAll)) != 0) { @@ -1651,24 +1651,24 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD const char *name; if (i == 0) { - /* The first iteration calls the gencmn function and initailizes the buffer. */ + /* The first iteration calls the gencmn function and initializes the buffer. */ createCommonDataFile(o->tmpDir, o->shortName, o->entryName, NULL, o->srcDir, o->comment, o->fileListFiles->str, 0, TRUE, o->verbose, gencmnFile); buffer[0] = 0; #ifdef USE_SINGLE_CCODE_FILE uprv_strcpy(tempObjectFile, gencmnFile); tempObjectFile[uprv_strlen(tempObjectFile) - 1] = 'o'; - + sprintf(cmd, "%s %s -o %s %s", pkgDataFlags[COMPILER], pkgDataFlags[LIBFLAGS], tempObjectFile, gencmnFile); - + result = runCommand(cmd); if (result != 0) { break; } - + sprintf(buffer, "%s",tempObjectFile); #endif } else { @@ -1740,7 +1740,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD #ifndef USE_SINGLE_CCODE_FILE uprv_strcpy(tempObjectFile, gencmnFile); tempObjectFile[uprv_strlen(tempObjectFile) - 1] = 'o'; - + sprintf(cmd, "%s %s -o %s %s", pkgDataFlags[COMPILER], pkgDataFlags[LIBFLAGS], @@ -1756,7 +1756,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD uprv_strcat(buffer, tempObjectFile); #endif - + if (i > 0) { list = list->next; listNames = listNames->next; @@ -1773,7 +1773,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD pkgDataFlags[LIBFLAGS], tempObjectFile, icudtAll); - + result = runCommand(cmd); if (result == 0) { uprv_strcat(buffer, " "); @@ -1855,7 +1855,7 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U #ifdef CYGWINMSVC uprv_strcat(libFilePath, o->libName); uprv_strcat(libFilePath, ".lib"); - + uprv_strcat(dllFilePath, o->libName); uprv_strcat(dllFilePath, o->version); #else @@ -1868,7 +1868,7 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U uprv_strcat(dllFilePath, o->entryName); #endif uprv_strcat(dllFilePath, DLL_EXT); - + uprv_strcpy(tmpResFilePath, o->tmpDir); uprv_strcat(tmpResFilePath, PKGDATA_FILE_SEP_STRING); uprv_strcat(tmpResFilePath, ICUDATA_RES_FILE); @@ -2017,9 +2017,9 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) { return NULL; } else { sprintf(tmpbuffer, "%s%s ", o->entryName, UDATA_CMN_INTERMEDIATE_SUFFIX); - + T_FileStream_writeLine(f, tmpbuffer); - + T_FileStream_close(f); } } @@ -2059,7 +2059,7 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) { #endif // Don't really need a return value, just need to stop compiler warnings about // the unused parameter 'o' on platforms where it is not otherwise used. - return o; + return o; } static void loadLists(UPKGOptions *o, UErrorCode *status) diff --git a/deps/icu-small/source/tools/pkgdata/pkgtypes.h b/deps/icu-small/source/tools/pkgdata/pkgtypes.h index 3297d0a2daf4d5..8ae1ec45a2b0a8 100644 --- a/deps/icu-small/source/tools/pkgdata/pkgtypes.h +++ b/deps/icu-small/source/tools/pkgdata/pkgtypes.h @@ -36,7 +36,7 @@ typedef struct _CharList /* - * write CharList 'l' into stream 's' using deliminter 'delim' (delim can be NULL). quoted: -1 remove, 0 as is, 1 add quotes + * write CharList 'l' into stream 's' using delimiter 'delim' (delim can be NULL). quoted: -1 remove, 0 as is, 1 add quotes */ const char *pkg_writeCharList(FileStream *s, CharList *l, const char *delim, int32_t quoted); diff --git a/deps/icu-small/source/tools/toolutil/BUILD b/deps/icu-small/source/tools/toolutil/BUILD new file mode 100644 index 00000000000000..276c857f1246c8 --- /dev/null +++ b/deps/icu-small/source/tools/toolutil/BUILD @@ -0,0 +1,126 @@ +# © 2021 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html + +# This Bazel build file defines targets that are dependencies for building +# the gennorm2 and genprops binaries. + +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "toolutil", + includes = ["."], + hdrs = ["toolutil.h"], + srcs = ["toolutil.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = ["//icu4c/source/common:platform"], +) + +cc_library( + name = "unewdata", + includes = ["."], + hdrs = ["unewdata.h"], + srcs = ["unewdata.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = [ + ":filestrm", + "//icu4c/source/common:platform", + ], +) + +cc_library( + name = "uoptions", + includes = ["."], + hdrs = ["uoptions.h"], + srcs = ["uoptions.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = ["//icu4c/source/common:platform"], +) + +cc_library( + name = "writesrc", + includes = ["."], + hdrs = ["writesrc.h"], + srcs = ["writesrc.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = [ + "//icu4c/source/common:bytestream", + "//icu4c/source/common:platform", + "//icu4c/source/common:uniset_core", + ], +) + +cc_library( + name = "uparse", + includes = ["."], + hdrs = ["uparse.h"], + srcs = ["uparse.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = [ + ":filestrm", + "//icu4c/source/common:platform", + ], +) + +cc_library( + name = "filestrm", + includes = ["."], + hdrs = ["filestrm.h"], + srcs = ["filestrm.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = ["//icu4c/source/common:platform"], +) + +cc_library( + name = "ppucd", + includes = ["."], + hdrs = ["ppucd.h"], + srcs = ["ppucd.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = [ + ":uparse", + "//icu4c/source/common:platform", + ], +) + +cc_library( + name = "denseranges", + includes = ["."], + hdrs = ["denseranges.h"], + srcs = ["denseranges.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = ["//icu4c/source/common:platform"], +) + +cc_library( + name = "collationinfo", + includes = ["."], + hdrs = ["collationinfo.h"], + srcs = ["collationinfo.cpp"], + local_defines = [ + "U_TOOLUTIL_IMPLEMENTATION", + ], + deps = [ + "//icu4c/source/common:platform", + "//icu4c/source/i18n:headers", + ], +) diff --git a/deps/icu-small/source/tools/toolutil/dbgutil.cpp b/deps/icu-small/source/tools/toolutil/dbgutil.cpp index 17fdfbb1444e29..399ec6d16c0703 100644 --- a/deps/icu-small/source/tools/toolutil/dbgutil.cpp +++ b/deps/icu-small/source/tools/toolutil/dbgutil.cpp @@ -113,7 +113,7 @@ U_CAPI int32_t U_EXPORT2 udbg_enumByString(UDebugEnumType type, const UnicodeSt } // from DataMap::utoi -U_CAPI int32_t +U_CAPI int32_t udbg_stoi(const UnicodeString &s) { char ch[256]; @@ -125,7 +125,7 @@ udbg_stoi(const UnicodeString &s) } -U_CAPI double +U_CAPI double udbg_stod(const UnicodeString &s) { char ch[256]; diff --git a/deps/icu-small/source/tools/toolutil/dbgutil.h b/deps/icu-small/source/tools/toolutil/dbgutil.h index 314a9ae885d5fa..43fe2171b4a84f 100644 --- a/deps/icu-small/source/tools/toolutil/dbgutil.h +++ b/deps/icu-small/source/tools/toolutil/dbgutil.h @@ -24,7 +24,7 @@ udbg_enumString(UDebugEnumType type, int32_t field); /** * @return enum offset, or UDBG_INVALID_ENUM on error - */ + */ U_CAPI int32_t U_EXPORT2 udbg_enumByString(UDebugEnumType type, const icu::UnicodeString& string); diff --git a/deps/icu-small/source/tools/toolutil/filestrm.cpp b/deps/icu-small/source/tools/toolutil/filestrm.cpp index a170c7b0f29e2e..a926848985a8e1 100644 --- a/deps/icu-small/source/tools/toolutil/filestrm.cpp +++ b/deps/icu-small/source/tools/toolutil/filestrm.cpp @@ -44,7 +44,7 @@ T_FileStream_open(const char* filename, const char* mode) U_CAPI FileStream* U_EXPORT2 T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode) { - // TBD: _wfopen is believed to be MS-specific? + // TBD: _wfopen is believed to be MS-specific? #if U_PLATFORM_USES_ONLY_WIN32_API FILE* result = _wfopen(filename, mode); return (FileStream*)result; @@ -53,7 +53,7 @@ T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode) char *fn, *md; FILE *result; - // convert from wchar_t to char + // convert from wchar_t to char fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1); fn = (char*)uprv_malloc(fnMbsSize+2); wcstombs(fn, filename, fnMbsSize); @@ -182,7 +182,7 @@ T_FileStream_eof(FileStream* fileStream) } /* - Warning + Warning This function may not work consistently on all platforms (e.g. HP-UX, FreeBSD and MacOSX don't return an error when putc is used on a file opened as readonly) diff --git a/deps/icu-small/source/tools/toolutil/flagparser.cpp b/deps/icu-small/source/tools/toolutil/flagparser.cpp index c8d791c636d14a..65513f3611fa5c 100644 --- a/deps/icu-small/source/tools/toolutil/flagparser.cpp +++ b/deps/icu-small/source/tools/toolutil/flagparser.cpp @@ -64,7 +64,7 @@ parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize, } if ((int32_t)uprv_strlen(buffer) == (currentBufferSize - 1) && buffer[currentBufferSize-2] != '\n') { - /* Allocate more space for buffer if it didnot read the entrire line */ + /* Allocate more space for buffer if it did not read the entire line */ allocateMoreSpace = TRUE; T_FileStream_rewind(f); break; @@ -98,7 +98,7 @@ parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize, uprv_free(buffer); T_FileStream_close(f); - + if (U_FAILURE(*status) && *status != U_BUFFER_OVERFLOW_ERROR) { return -1; } diff --git a/deps/icu-small/source/tools/toolutil/package.h b/deps/icu-small/source/tools/toolutil/package.h index 5f74eb73ef5c9a..ea60c13a74a57b 100644 --- a/deps/icu-small/source/tools/toolutil/package.h +++ b/deps/icu-small/source/tools/toolutil/package.h @@ -199,3 +199,5 @@ class U_TOOLUTIL_API Package { U_NAMESPACE_END #endif + + diff --git a/deps/icu-small/source/tools/toolutil/pkg_genc.cpp b/deps/icu-small/source/tools/toolutil/pkg_genc.cpp index f9400c5058c206..17347bac5d77e9 100644 --- a/deps/icu-small/source/tools/toolutil/pkg_genc.cpp +++ b/deps/icu-small/source/tools/toolutil/pkg_genc.cpp @@ -191,7 +191,7 @@ static const struct AssemblyType { "\t.type Drodata.rodata,@object\n" "\t.size Drodata.rodata,0\n" "\t.globl %s\n" - "\t.align 16\n" + "\t.align 16\n" "%s:\n", ".4byte ","",HEX_0X diff --git a/deps/icu-small/source/tools/toolutil/pkgitems.cpp b/deps/icu-small/source/tools/toolutil/pkgitems.cpp index 16b18a3e27345f..af458677976b23 100644 --- a/deps/icu-small/source/tools/toolutil/pkgitems.cpp +++ b/deps/icu-small/source/tools/toolutil/pkgitems.cpp @@ -126,7 +126,7 @@ class NativeItem { * assemble the target item name from the source item name, an ID * and a suffix */ -static void +static void makeTargetName(const char *itemName, const char *id, int32_t idLength, const char *suffix, char *target, int32_t capacity, UErrorCode *pErrorCode) { @@ -160,7 +160,7 @@ makeTargetName(const char *itemName, const char *id, int32_t idLength, const cha memcpy(target+treeLength+idLength, suffix, suffixLength+1); // +1 includes the terminating NUL } -static void +static void checkIDSuffix(const char *itemName, const char *id, int32_t idLength, const char *suffix, CheckDependency check, void *context, UErrorCode *pErrorCode) { @@ -172,7 +172,7 @@ checkIDSuffix(const char *itemName, const char *id, int32_t idLength, const char } /* assemble the target item name from the item's parent item name */ -static void +static void checkParent(const char *itemName, CheckDependency check, void *context, UErrorCode *pErrorCode) { const char *itemID, *parent, *parentLimit, *suffix; @@ -260,7 +260,7 @@ checkAlias(const char *itemName, } // convert the Unicode string to char * - char localeID[32]; + char localeID[48]; if(length>=(int32_t)sizeof(localeID)) { fprintf(stderr, "icupkg/ures_enumDependencies(%s res=%08x) alias locale ID length %ld too long\n", itemName, res, (long)length); diff --git a/deps/icu-small/source/tools/toolutil/ppucd.cpp b/deps/icu-small/source/tools/toolutil/ppucd.cpp index b11efa7f7c4601..bf9058840742a7 100644 --- a/deps/icu-small/source/tools/toolutil/ppucd.cpp +++ b/deps/icu-small/source/tools/toolutil/ppucd.cpp @@ -29,6 +29,13 @@ U_NAMESPACE_BEGIN PropertyNames::~PropertyNames() {} +// TODO: Create a concrete subclass for the default PropertyNames implementation +// using the ICU library built-in property names API & data. +// Currently only the genprops tool uses PreparsedUCD, and provides its own +// PropertyNames implementation using its just-build property names data and its own code. +// At some point, we should use PreparsedUCD in tests, and then we will need the +// default implementation somewhere. +#if 0 int32_t PropertyNames::getPropertyEnum(const char *name) const { return u_getPropertyEnum(name); @@ -38,6 +45,7 @@ int32_t PropertyNames::getPropertyValueEnum(int32_t property, const char *name) const { return u_getPropertyValueEnum((UProperty)property, name); } +#endif UniProps::UniProps() : start(U_SENTINEL), end(U_SENTINEL), @@ -55,7 +63,7 @@ UniProps::~UniProps() {} const int32_t PreparsedUCD::kNumLineBuffers; PreparsedUCD::PreparsedUCD(const char *filename, UErrorCode &errorCode) - : icuPnames(new PropertyNames()), pnames(icuPnames), + : pnames(nullptr), file(NULL), defaultLineIndex(-1), blockLineIndex(-1), lineIndex(0), lineNumber(0), @@ -84,7 +92,6 @@ PreparsedUCD::~PreparsedUCD() { if(file!=stdin) { fclose(file); } - delete icuPnames; } // Same order as the LineType values. diff --git a/deps/icu-small/source/tools/toolutil/ppucd.h b/deps/icu-small/source/tools/toolutil/ppucd.h index 1f9fb295c1070b..7c9c34af6fb6e2 100644 --- a/deps/icu-small/source/tools/toolutil/ppucd.h +++ b/deps/icu-small/source/tools/toolutil/ppucd.h @@ -36,8 +36,8 @@ U_NAMESPACE_BEGIN class U_TOOLUTIL_API PropertyNames { public: virtual ~PropertyNames(); - virtual int32_t getPropertyEnum(const char *name) const; - virtual int32_t getPropertyValueEnum(int32_t property, const char *name) const; + virtual int32_t getPropertyEnum(const char *name) const = 0; + virtual int32_t getPropertyValueEnum(int32_t property, const char *name) const = 0; }; struct U_TOOLUTIL_API UniProps { @@ -102,7 +102,7 @@ class U_TOOLUTIL_API PreparsedUCD { /** Destructor. */ ~PreparsedUCD(); - /** Sets (aliases) a non-standard PropertyNames implementation. Caller retains ownership. */ + /** Sets (aliases) a PropertyNames implementation. Caller retains ownership. */ void setPropertyNames(const PropertyNames *pn) { pnames=pn; } /** @@ -159,7 +159,6 @@ class U_TOOLUTIL_API PreparsedUCD { static const int32_t kNumLineBuffers=3; - PropertyNames *icuPnames; // owned const PropertyNames *pnames; // aliased FILE *file; int32_t defaultLineIndex, blockLineIndex, lineIndex; diff --git a/deps/icu-small/source/tools/toolutil/swapimpl.cpp b/deps/icu-small/source/tools/toolutil/swapimpl.cpp index 926755a2aa8c36..8d669a93187b1c 100644 --- a/deps/icu-small/source/tools/toolutil/swapimpl.cpp +++ b/deps/icu-small/source/tools/toolutil/swapimpl.cpp @@ -45,6 +45,7 @@ /* swapping implementations in common */ +#include "emojiprops.h" #include "uresdata.h" #include "ucnv_io.h" #include "uprops.h" @@ -741,6 +742,115 @@ ulayout_swap(const UDataSwapper *ds, return headerSize + size; } +// Unicode emoji properties data swapping -------------------------------------- + +static int32_t U_CALLCONV +uemoji_swap(const UDataSwapper *ds, + const void *inData, int32_t length, void *outData, + UErrorCode *pErrorCode) { + // udata_swapDataHeader checks the arguments. + int32_t headerSize = udata_swapDataHeader(ds, inData, length, outData, pErrorCode); + if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) { + return 0; + } + + // Check data format and format version. + const UDataInfo *pInfo = (const UDataInfo *)((const char *)inData + 4); + if (!( + pInfo->dataFormat[0] == u'E' && + pInfo->dataFormat[1] == u'm' && + pInfo->dataFormat[2] == u'o' && + pInfo->dataFormat[3] == u'j' && + pInfo->formatVersion[0] == 1)) { + udata_printError(ds, + "uemoji_swap(): data format %02x.%02x.%02x.%02x (format version %02x) " + "is not recognized as emoji properties data\n", + pInfo->dataFormat[0], pInfo->dataFormat[1], + pInfo->dataFormat[2], pInfo->dataFormat[3], + pInfo->formatVersion[0]); + *pErrorCode = U_UNSUPPORTED_ERROR; + return 0; + } + + const uint8_t *inBytes = (const uint8_t *)inData + headerSize; + uint8_t *outBytes = (uint8_t *)outData + headerSize; + + const int32_t *inIndexes = (const int32_t *)inBytes; + + if (length >= 0) { + length -= headerSize; + // We expect to read at least EmojiProps::IX_TOTAL_SIZE. + if (length < 14 * 4) { + udata_printError(ds, + "uemoji_swap(): too few bytes (%d after header) for emoji properties data\n", + length); + *pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR; + return 0; + } + } + + // First offset after indexes[]. + int32_t cpTrieOffset = udata_readInt32(ds, inIndexes[EmojiProps::IX_CPTRIE_OFFSET]); + int32_t indexesLength = cpTrieOffset / 4; + if (indexesLength < 14) { + udata_printError(ds, + "uemoji_swap(): too few indexes (%d) for emoji properties data\n", + indexesLength); + *pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR; + return 0; + } + + // Read the data offsets before swapping anything. + int32_t indexes[EmojiProps::IX_TOTAL_SIZE + 1]; + indexes[0] = cpTrieOffset; + for (int32_t i = 1; i <= EmojiProps::IX_TOTAL_SIZE; ++i) { + indexes[i] = udata_readInt32(ds, inIndexes[i]); + } + int32_t size = indexes[EmojiProps::IX_TOTAL_SIZE]; + + if (length >= 0) { + if (length < size) { + udata_printError(ds, + "uemoji_swap(): too few bytes (%d after header) " + "for all of emoji properties data\n", + length); + *pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR; + return 0; + } + + // Copy the data for inaccessible bytes. + if (inBytes != outBytes) { + uprv_memcpy(outBytes, inBytes, size); + } + + // Swap the int32_t indexes[]. + int32_t offset = 0; + int32_t top = cpTrieOffset; + ds->swapArray32(ds, inBytes, top - offset, outBytes, pErrorCode); + offset = top; + + // Swap the code point trie. + top = indexes[EmojiProps::IX_CPTRIE_OFFSET + 1]; + int32_t count = top - offset; + U_ASSERT(count >= 0); + if (count >= 16) { + utrie_swapAnyVersion(ds, inBytes + offset, count, outBytes + offset, pErrorCode); + } + offset = top; + + // Swap all of the string tries. + // They are all serialized as arrays of 16-bit units. + offset = indexes[EmojiProps::IX_BASIC_EMOJI_TRIE_OFFSET]; + top = indexes[EmojiProps::IX_RGI_EMOJI_ZWJ_SEQUENCE_TRIE_OFFSET + 1]; + ds->swapArray16(ds, inBytes + offset, top - offset, outBytes + offset, pErrorCode); + offset = top; + + U_ASSERT(offset == size); + } + + return headerSize + size; +} + /* Swap 'Test' data from gentest */ static int32_t U_CALLCONV test_swap(const UDataSwapper *ds, @@ -836,6 +946,8 @@ static const struct { { { ULAYOUT_FMT_0, ULAYOUT_FMT_1, ULAYOUT_FMT_2, ULAYOUT_FMT_3 }, ulayout_swap }, // dataFormat="Layo" + { { u'E', u'm', u'o', u'j' }, uemoji_swap }, + #if !UCONFIG_NO_COLLATION { { 0x55, 0x43, 0x6f, 0x6c }, ucol_swap }, /* dataFormat="UCol" */ { { 0x49, 0x6e, 0x76, 0x43 }, ucol_swapInverseUCA },/* dataFormat="InvC" */ diff --git a/deps/icu-small/source/tools/toolutil/toolutil.cpp b/deps/icu-small/source/tools/toolutil/toolutil.cpp index 0ce9b02115dd32..1fc68aa69c84ff 100644 --- a/deps/icu-small/source/tools/toolutil/toolutil.cpp +++ b/deps/icu-small/source/tools/toolutil/toolutil.cpp @@ -16,7 +16,7 @@ * created by: Markus W. Scherer * * 6/25/08 - Added Cygwin specific code in uprv_mkdir - Brian Rower -* +* * This file contains utility functions for ICU tools like genccode. */ @@ -30,6 +30,8 @@ #include #include +#include +#include #include "unicode/utypes.h" #ifndef U_TOOLUTIL_IMPLEMENTATION @@ -67,7 +69,6 @@ #include "cmemory.h" #include "cstring.h" #include "toolutil.h" -#include "unicode/ucal.h" U_NAMESPACE_BEGIN @@ -86,19 +87,11 @@ U_NAMESPACE_END static int32_t currentYear = -1; U_CAPI int32_t U_EXPORT2 getCurrentYear() { -#if !UCONFIG_NO_FORMATTING - UErrorCode status=U_ZERO_ERROR; - UCalendar *cal = NULL; - if(currentYear == -1) { - cal = ucal_open(NULL, -1, NULL, UCAL_TRADITIONAL, &status); - ucal_setMillis(cal, ucal_getNow(), &status); - currentYear = ucal_get(cal, UCAL_YEAR, &status); - ucal_close(cal); + time_t now = time(nullptr); + tm *fields = gmtime(&now); + currentYear = 1900 + fields->tm_year; } -#else - /* No formatting- no way to set the current year. */ -#endif return currentYear; } @@ -218,6 +211,37 @@ uprv_fileExists(const char *file) { } #endif +U_CAPI int32_t U_EXPORT2 +uprv_compareGoldenFiles( + const char* buffer, int32_t bufferLen, + const char* goldenFilePath, + bool overwrite) { + + if (overwrite) { + std::ofstream ofs; + ofs.open(goldenFilePath); + ofs.write(buffer, bufferLen); + ofs.close(); + return -1; + } + + std::ifstream ifs(goldenFilePath, std::ifstream::in); + int32_t pos = 0; + char c; + while ((c = ifs.get()) != std::char_traits::eof() && pos < bufferLen) { + if (c != buffer[pos]) { + // Files differ at this position + return pos; + } + pos++; + } + if (pos < bufferLen || c != std::char_traits::eof()) { + // Files are different lengths + return pos; + } + return -1; +} + /*U_CAPI UDate U_EXPORT2 uprv_getModificationDate(const char *pathname, UErrorCode *status) { @@ -226,7 +250,7 @@ uprv_getModificationDate(const char *pathname, UErrorCode *status) } // TODO: handle case where stat is not available struct stat st; - + if(stat(pathname,&st) != 0) { *status = U_FILE_ACCESS_ERROR; diff --git a/deps/icu-small/source/tools/toolutil/toolutil.h b/deps/icu-small/source/tools/toolutil/toolutil.h index 1d0d26c97477c5..1c9f06758ff60d 100644 --- a/deps/icu-small/source/tools/toolutil/toolutil.h +++ b/deps/icu-small/source/tools/toolutil/toolutil.h @@ -48,7 +48,7 @@ class U_TOOLUTIL_API IcuToolErrorCode : public ErrorCode { IcuToolErrorCode(const char *loc) : location(loc) {} virtual ~IcuToolErrorCode(); protected: - virtual void handleFailure() const; + virtual void handleFailure() const override; private: const char *location; }; @@ -87,13 +87,13 @@ findBasename(const char *filename); /** * Find the directory name of a pathname, that is, everything - * up to but not including the last file separator. + * up to but not including the last file separator. * * If successful, copies the directory name into the output buffer along with - * a terminating NULL. + * a terminating NULL. * * If there isn't a directory name in the path, it returns an empty string. - * @param path the full pathname to inspect. + * @param path the full pathname to inspect. * @param buffer the output buffer * @param bufLen the output buffer length * @param status error code- may return U_BUFFER_OVERFLOW_ERROR if bufLen is too small. @@ -126,6 +126,21 @@ U_CAPI UBool U_EXPORT2 uprv_fileExists(const char *file); #endif +/** + * Performs a golden data test. Asserts that the contents of the buffer is equal + * to the data in goldenFilePath. + * + * Pass the value of the -G flag to "overwrite"; if true, new goldens will be + * written to the filesystem. + * + * @return The first index at which the files differ, or -1 if they are the same. + */ +U_CAPI int32_t U_EXPORT2 +uprv_compareGoldenFiles( + const char* buffer, int32_t bufferLen, + const char* goldenFilePath, + bool overwrite); + /** * Return the modification date for the specified file or directory. * Return value is undefined if there was an error. diff --git a/deps/icu-small/source/tools/toolutil/ucbuf.cpp b/deps/icu-small/source/tools/toolutil/ucbuf.cpp index 195963c78c5af9..c8e906f2d55324 100644 --- a/deps/icu-small/source/tools/toolutil/ucbuf.cpp +++ b/deps/icu-small/source/tools/toolutil/ucbuf.cpp @@ -64,7 +64,7 @@ ucbuf_autodetect_fs(FileStream* in, const char** cp, UConverter** conv, int32_t* numRead=T_FileStream_read(in, start, sizeof(start)); *cp = ucnv_detectUnicodeSignature(start, numRead, signatureLength, error); - + /* unread the bytes beyond what was consumed for U+FEFF */ T_FileStream_rewind(in); if (*signatureLength > 0) { @@ -94,7 +94,7 @@ ucbuf_autodetect_fs(FileStream* in, const char** cp, UConverter** conv, int32_t* } - return TRUE; + return TRUE; } static UBool ucbuf_isCPKnown(const char* cp){ if(ucnv_compareNames("UTF-8",cp)==0){ @@ -142,7 +142,7 @@ ucbuf_autodetect(const char* fileName, const char** cp,UConverter** conv, int32_ } /* open the file */ in= T_FileStream_open(fileName,"rb"); - + if(in == NULL){ *error=U_FILE_ACCESS_ERROR; return NULL; @@ -186,13 +186,13 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){ /* read the file */ inputRead=T_FileStream_read(buf->in,cbuf,cbufSize-offset); buf->remaining-=inputRead; - + }else{ cbufSize = T_FileStream_size(buf->in); cbuf = (char*)uprv_malloc(cbufSize); if (cbuf == NULL) { - *error = U_MEMORY_ALLOCATION_ERROR; - return NULL; + *error = U_MEMORY_ALLOCATION_ERROR; + return NULL; } inputRead= T_FileStream_read(buf->in,cbuf,cbufSize); buf->remaining-=inputRead; @@ -233,7 +233,7 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){ int32_t pos =0; /* use erro1 to preserve the error code */ UErrorCode error1 =U_ZERO_ERROR; - + if( buf->showWarning==TRUE){ fprintf(stderr,"\n###WARNING: Encountered abnormal bytes while" " converting input stream to target encoding: %s\n", @@ -422,7 +422,7 @@ ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) { char context[CONTEXT_LEN+1]; int32_t len = CONTEXT_LEN; if(length < len) { - len = length; + len = length; } context[len]= 0 ; /* null terminate the buffer */ u_UCharsToChars( buf->currentPos, context, len); @@ -437,7 +437,7 @@ ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) { /* unescaping failed so we just return * c1 and not consume the buffer * this is useful for rules with escapes - * in resouce bundles + * in resource bundles * eg: \' \\ \" */ return c1; @@ -449,7 +449,7 @@ ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) { U_CAPI UCHARBUF* U_EXPORT2 ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffered, UErrorCode* error){ - FileStream* in = NULL; + FileStream* in = NULL; int32_t fileSize=0; const char* knownCp; if(error==NULL || U_FAILURE(*error)){ @@ -461,10 +461,10 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere } if (!uprv_strcmp(fileName, "-")) { in = T_FileStream_stdin(); - }else{ + }else{ in = T_FileStream_open(fileName, "rb"); } - + if(in!=NULL){ UCHARBUF* buf =(UCHARBUF*) uprv_malloc(sizeof(UCHARBUF)); fileSize = T_FileStream_size(in); @@ -494,7 +494,7 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere T_FileStream_close(in); return NULL; } - + if((buf->conv==NULL) && (buf->showWarning==TRUE)){ fprintf(stderr,"###WARNING: No converter defined. Using codepage of system.\n"); } @@ -502,7 +502,7 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere if(buf->isBuffered){ buf->bufCapacity=MAX_U_BUF; }else{ - buf->bufCapacity=buf->remaining+buf->signatureLength+1/*for terminating nul*/; + buf->bufCapacity=buf->remaining+buf->signatureLength+1/*for terminating nul*/; } buf->buffer=(UChar*) uprv_malloc(U_SIZEOF_UCHAR * buf->bufCapacity ); if (buf->buffer == NULL) { @@ -663,8 +663,8 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target, target[0] = '\0'; /* - * append the input dir to openFileName if the first char in - * filename is not file seperation char and the last char input directory is not '.'. + * append the input dir to openFileName if the first char in + * filename is not file separation char and the last char input directory is not '.'. * This is to support : * genrb -s. /home/icu/data * genrb -s. icu/data @@ -685,7 +685,7 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target, *status = U_BUFFER_OVERFLOW_ERROR; return NULL; } - + uprv_strcpy(target, inputDir); } @@ -695,8 +695,8 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target, /* * Unicode TR 13 says any of the below chars is * a new line char in a readline function in addition - * to CR+LF combination which needs to be - * handled seperately + * to CR+LF combination which needs to be + * handled separately */ static UBool ucbuf_isCharNewLine(UChar c){ switch(c){ @@ -732,7 +732,7 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){ }else{ ucbuf_fillucbuf(buf,err); if(U_FAILURE(*err)){ - return NULL; + return NULL; } } /* @@ -761,7 +761,7 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){ */ for(;;){ c = *temp++; - + if(buf->currentPos==buf->bufLimit){ return NULL; /* end of file is reached return NULL */ } diff --git a/deps/icu-small/source/tools/toolutil/ucbuf.h b/deps/icu-small/source/tools/toolutil/ucbuf.h index a854150bfba95b..9214d419711213 100644 --- a/deps/icu-small/source/tools/toolutil/ucbuf.h +++ b/deps/icu-small/source/tools/toolutil/ucbuf.h @@ -124,7 +124,7 @@ ucbuf_rewind(UCHARBUF* buf,UErrorCode* err); /** * Returns a pointer to the internal converted buffer * @param buf Pointer to UCHARBUF structure - * @param len Pointer to int32_t to receive the lenth of buffer + * @param len Pointer to int32_t to receive the length of buffer * @param err is a pointer to a valid UErrorCode value. If this value * indicates a failure on entry, the function will immediately return. * On exit the value will indicate the success of the operation. @@ -215,3 +215,4 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target, #endif #endif + diff --git a/deps/icu-small/source/tools/toolutil/ucm.h b/deps/icu-small/source/tools/toolutil/ucm.h index 3af939758552d7..04e6b2030def41 100644 --- a/deps/icu-small/source/tools/toolutil/ucm.h +++ b/deps/icu-small/source/tools/toolutil/ucm.h @@ -299,3 +299,4 @@ U_CDECL_END #endif #endif + diff --git a/deps/icu-small/source/tools/toolutil/ucmstate.cpp b/deps/icu-small/source/tools/toolutil/ucmstate.cpp index 206c2f172eb1c5..1ff2d7d19323b3 100644 --- a/deps/icu-small/source/tools/toolutil/ucmstate.cpp +++ b/deps/icu-small/source/tools/toolutil/ucmstate.cpp @@ -101,7 +101,7 @@ parseState(const char *s, int32_t state[256], uint32_t *pFlags) { end=start; } - /* determine the state entrys for this range */ + /* determine the state entry for this range */ if(*s!=':' && *s!='.') { /* the default is: final state with valid entries */ entry=MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_16, 0); @@ -1050,3 +1050,4 @@ ucm_countChars(UCMStates *states, return count; } #endif + diff --git a/deps/icu-small/source/tools/toolutil/unewdata.cpp b/deps/icu-small/source/tools/toolutil/unewdata.cpp index 20f13be5b83ef1..43ff16b6eec8c5 100644 --- a/deps/icu-small/source/tools/toolutil/unewdata.cpp +++ b/deps/icu-small/source/tools/toolutil/unewdata.cpp @@ -71,9 +71,9 @@ udata_create(const char *dir, const char *type, const char *name, length = 0; /* Start with nothing */ if(dir != NULL && *dir !=0) /* Add directory length if one was given */ { - length += static_cast(strlen(dir)); + length += static_cast(strlen(dir)); - /* Add 1 if dir doesn't end with path sep */ + /* Add 1 if dir doesn't end with path sep */ if (dir[strlen(dir) - 1]!= dirSepChar) { length++; } @@ -88,8 +88,8 @@ udata_create(const char *dir, const char *type, const char *name, /* LDH buffer Length error check */ if(length > ((int32_t)sizeof(filename) - 1)) { - *pErrorCode = U_BUFFER_OVERFLOW_ERROR; - uprv_free(pData); + *pErrorCode = U_BUFFER_OVERFLOW_ERROR; + uprv_free(pData); return NULL; } @@ -283,3 +283,4 @@ udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length) { * End: * */ + diff --git a/deps/icu-small/source/tools/toolutil/uoptions.h b/deps/icu-small/source/tools/toolutil/uoptions.h index a7a2e96c61b19f..d00e3da924ac66 100644 --- a/deps/icu-small/source/tools/toolutil/uoptions.h +++ b/deps/icu-small/source/tools/toolutil/uoptions.h @@ -57,7 +57,7 @@ struct UOption { void *context; /* parameter for the function */ char shortName; /* 'f' for -f */ char hasArg; /* enum value: option takes no/requires/may have argument */ - char doesOccur; /* boolean for "this one occured" */ + char doesOccur; /* boolean for "this one occurred" */ }; /* macro for an entry in a declaration of UOption[] */ @@ -130,7 +130,7 @@ struct UOption { * where the error was detected. * * The OS/400 compiler requires that argv either be "char* argv[]", - * or "const char* const argv[]", and it will not accept, + * or "const char* const argv[]", and it will not accept, * "const char* argv[]" as a definition for main(). * * @param argv This parameter is modified diff --git a/deps/icu-small/source/tools/toolutil/uparse.cpp b/deps/icu-small/source/tools/toolutil/uparse.cpp index a932c171246435..486fcc9a98530e 100644 --- a/deps/icu-small/source/tools/toolutil/uparse.cpp +++ b/deps/icu-small/source/tools/toolutil/uparse.cpp @@ -370,7 +370,7 @@ u_parseUTF8(const char *source, int32_t sLen, char *dest, int32_t destCapacity, if(sLen == -1) { sLen = (int32_t)strlen(source); } - + while(read < source+sLen) { sscanf(read, "%2x", &value); if(i < destCapacity) { diff --git a/deps/icu-small/source/tools/toolutil/writesrc.cpp b/deps/icu-small/source/tools/toolutil/writesrc.cpp index 1a1dd3964d34a2..143254a7f34518 100644 --- a/deps/icu-small/source/tools/toolutil/writesrc.cpp +++ b/deps/icu-small/source/tools/toolutil/writesrc.cpp @@ -23,13 +23,25 @@ #include "unicode/utypes.h" #include "unicode/putil.h" #include "unicode/ucptrie.h" +#include "unicode/errorcode.h" +#include "unicode/uniset.h" +#include "unicode/usetiter.h" +#include "unicode/utf16.h" #include "utrie2.h" #include "cstring.h" #include "writesrc.h" +#include "util.h" + +U_NAMESPACE_BEGIN + +ValueNameGetter::~ValueNameGetter() {} + +U_NAMESPACE_END + +U_NAMESPACE_USE static FILE * -usrc_createWithHeader(const char *path, const char *filename, - const char *header, const char *generator) { +usrc_createWithoutHeader(const char *path, const char *filename) { char buffer[1024]; const char *p; char *q; @@ -50,19 +62,7 @@ usrc_createWithHeader(const char *path, const char *filename, } f=fopen(p, "w"); - if(f!=NULL) { - const struct tm *lt; - time_t t; - - time(&t); - lt=localtime(&t); - if(generator==NULL) { - strftime(buffer, sizeof(buffer), "%Y-%m-%d", lt); - fprintf(f, header, filename, buffer); - } else { - fprintf(f, header, filename, generator); - } - } else { + if (f==NULL) { fprintf( stderr, "usrc_create(%s, %s): unable to create file\n", @@ -73,55 +73,72 @@ usrc_createWithHeader(const char *path, const char *filename, U_CAPI FILE * U_EXPORT2 usrc_create(const char *path, const char *filename, int32_t copyrightYear, const char *generator) { - const char *header; - char buffer[200]; - if(copyrightYear<=2016) { - header= - "// © 2016 and later: Unicode, Inc. and others.\n" - "// License & terms of use: http://www.unicode.org/copyright.html\n" - "//\n" - "// Copyright (C) 1999-2016, International Business Machines\n" - "// Corporation and others. All Rights Reserved.\n" - "//\n" - "// file name: %s\n" - "//\n" - "// machine-generated by: %s\n" - "\n\n"; - } else { - sprintf(buffer, - "// © %d and later: Unicode, Inc. and others.\n" - "// License & terms of use: http://www.unicode.org/copyright.html\n" - "//\n" - "// file name: %%s\n" - "//\n" - "// machine-generated by: %%s\n" - "\n\n", - (int)copyrightYear); - header=buffer; + FILE *f = usrc_createWithoutHeader(path, filename); + if (f == NULL) { + return f; } - return usrc_createWithHeader(path, filename, header, generator); + usrc_writeCopyrightHeader(f, "//", copyrightYear); + usrc_writeFileNameGeneratedBy(f, "//", filename, generator); + return f; } U_CAPI FILE * U_EXPORT2 -usrc_createTextData(const char *path, const char *filename, const char *generator) { - // TODO: Add parameter for the first year this file was generated, not before 2016. - static const char *header= - "# Copyright (C) 2016 and later: Unicode, Inc. and others.\n" - "# License & terms of use: http://www.unicode.org/copyright.html\n" - "# Copyright (C) 1999-2016, International Business Machines\n" - "# Corporation and others. All Rights Reserved.\n" - "#\n" - "# file name: %s\n" - "#\n" - "# machine-generated by: %s\n" - "\n\n"; - return usrc_createWithHeader(path, filename, header, generator); +usrc_createTextData(const char *path, const char *filename, int32_t copyrightYear, const char *generator) { + FILE *f = usrc_createWithoutHeader(path, filename); + if (f == NULL) { + return f; + } + usrc_writeCopyrightHeader(f, "#", copyrightYear); + usrc_writeFileNameGeneratedBy(f, "#", filename, generator); + return f; +} + +U_CAPI void U_EXPORT2 +usrc_writeCopyrightHeader(FILE *f, const char *prefix, int32_t copyrightYear) { + fprintf(f, + "%s Copyright (C) %d and later: Unicode, Inc. and others.\n" + "%s License & terms of use: http://www.unicode.org/copyright.html\n", + prefix, copyrightYear, prefix); + if (copyrightYear <= 2016) { + fprintf(f, + "%s Copyright (C) 1999-2016, International Business Machines\n" + "%s Corporation and others. All Rights Reserved.\n", + prefix, prefix); + } +} + +U_CAPI void U_EXPORT2 +usrc_writeFileNameGeneratedBy( + FILE *f, + const char *prefix, + const char *filename, + const char *generator) { + char buffer[1024]; + const struct tm *lt; + time_t t; + + const char *pattern = + "%s\n" + "%s file name: %s\n" + "%s\n" + "%s machine-generated by: %s\n" + "\n"; + + time(&t); + lt=localtime(&t); + if(generator==NULL) { + strftime(buffer, sizeof(buffer), "%Y-%m-%d", lt); + fprintf(f, pattern, prefix, prefix, filename, prefix, prefix, buffer); + } else { + fprintf(f, pattern, prefix, prefix, filename, prefix, prefix, generator); + } } U_CAPI void U_EXPORT2 usrc_writeArray(FILE *f, const char *prefix, const void *p, int32_t width, int32_t length, + const char *indent, const char *postfix) { const uint8_t *p8; const uint16_t *p16; @@ -155,6 +172,7 @@ usrc_writeArray(FILE *f, fputc(',', f); } else { fputs(",\n", f); + fputs(indent, f); col=0; } } @@ -186,11 +204,11 @@ usrc_writeUTrie2Arrays(FILE *f, const char *postfix) { if(pTrie->data32==NULL) { /* 16-bit trie */ - usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, postfix); + usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, "", postfix); } else { /* 32-bit trie */ - usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, postfix); - usrc_writeArray(f, data32Prefix, pTrie->data32, 32, pTrie->dataLength, postfix); + usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, "", postfix); + usrc_writeArray(f, data32Prefix, pTrie->data32, 32, pTrie->dataLength, "", postfix); } } @@ -211,7 +229,7 @@ usrc_writeUTrie2Struct(FILE *f, " %s+%ld,\n" /* data16 */ " NULL,\n", /* data32 */ indexName, - indexName, + indexName, (long)pTrie->indexLength); } else { /* 32-bit trie */ @@ -247,13 +265,15 @@ U_CAPI void U_EXPORT2 usrc_writeUCPTrieArrays(FILE *f, const char *indexPrefix, const char *dataPrefix, const UCPTrie *pTrie, - const char *postfix) { - usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, postfix); + const char *postfix, + UTargetSyntax syntax) { + const char* indent = (syntax == UPRV_TARGET_SYNTAX_TOML) ? " " : ""; + usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength, indent, postfix); int32_t width= pTrie->valueWidth==UCPTRIE_VALUE_BITS_16 ? 16 : pTrie->valueWidth==UCPTRIE_VALUE_BITS_32 ? 32 : pTrie->valueWidth==UCPTRIE_VALUE_BITS_8 ? 8 : 0; - usrc_writeArray(f, dataPrefix, pTrie->data.ptr0, width, pTrie->dataLength, postfix); + usrc_writeArray(f, dataPrefix, pTrie->data.ptr0, width, pTrie->dataLength, indent, postfix); } U_CAPI void U_EXPORT2 @@ -261,24 +281,41 @@ usrc_writeUCPTrieStruct(FILE *f, const char *prefix, const UCPTrie *pTrie, const char *indexName, const char *dataName, - const char *postfix) { + const char *postfix, + UTargetSyntax syntax) { if(prefix!=NULL) { fputs(prefix, f); } - fprintf( - f, - " %s,\n" // index - " { %s },\n", // data (union) - indexName, - dataName); - fprintf( - f, + if (syntax == UPRV_TARGET_SYNTAX_CCODE) { + fprintf( + f, + " %s,\n" // index + " { %s },\n", // data (union) + indexName, + dataName); + } + const char* pattern = + (syntax == UPRV_TARGET_SYNTAX_CCODE) ? " %ld, %ld,\n" // indexLength, dataLength " 0x%lx, 0x%x,\n" // highStart, shifted12HighStart " %d, %d,\n" // type, valueWidth " 0, 0,\n" // reserved32, reserved16 " 0x%x, 0x%lx,\n" // index3NullOffset, dataNullOffset - " 0x%lx,\n", // nullValue + " 0x%lx,\n" // nullValue + : + "indexLength = %ld\n" + "dataLength = %ld\n" + "highStart = 0x%lx\n" + "shifted12HighStart = 0x%x\n" + "type = %d\n" + "valueWidth = %d\n" + "index3NullOffset = 0x%x\n" + "dataNullOffset = 0x%lx\n" + "nullValue = 0x%lx\n" + ; + fprintf( + f, + pattern, (long)pTrie->indexLength, (long)pTrie->dataLength, (long)pTrie->highStart, pTrie->shifted12HighStart, pTrie->type, pTrie->valueWidth, @@ -290,19 +327,107 @@ usrc_writeUCPTrieStruct(FILE *f, } U_CAPI void U_EXPORT2 -usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie) { +usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie, UTargetSyntax syntax) { int32_t width= pTrie->valueWidth==UCPTRIE_VALUE_BITS_16 ? 16 : pTrie->valueWidth==UCPTRIE_VALUE_BITS_32 ? 32 : pTrie->valueWidth==UCPTRIE_VALUE_BITS_8 ? 8 : 0; - char line[100], line2[100], line3[100]; - sprintf(line, "static const uint16_t %s_trieIndex[%%ld]={\n", name); - sprintf(line2, "static const uint%d_t %s_trieData[%%ld]={\n", (int)width, name); - usrc_writeUCPTrieArrays(f, line, line2, pTrie, "\n};\n\n"); - sprintf(line, "static const UCPTrie %s_trie={\n", name); - sprintf(line2, "%s_trieIndex", name); - sprintf(line3, "%s_trieData", name); - usrc_writeUCPTrieStruct(f, line, pTrie, line2, line3, "};\n\n"); + char line[100], line2[100], line3[100], line4[100]; + + switch (syntax) { + case UPRV_TARGET_SYNTAX_CCODE: + sprintf(line, "static const uint16_t %s_trieIndex[%%ld]={\n", name); + sprintf(line2, "static const uint%d_t %s_trieData[%%ld]={\n", (int)width, name); + sprintf(line3, "\n};\n\n"); + break; + case UPRV_TARGET_SYNTAX_TOML: + sprintf(line, "index = [\n "); + sprintf(line2, "data_%d = [\n ", (int)width); + sprintf(line3, "\n]\n"); + break; + default: + UPRV_UNREACHABLE_EXIT; + } + usrc_writeUCPTrieArrays(f, line, line2, pTrie, line3, syntax); + + switch (syntax) { + case UPRV_TARGET_SYNTAX_CCODE: + sprintf(line, "static const UCPTrie %s_trie={\n", name); + sprintf(line2, "%s_trieIndex", name); + sprintf(line3, "%s_trieData", name); + sprintf(line4, "};\n\n"); + break; + case UPRV_TARGET_SYNTAX_TOML: + line[0] = 0; + line2[0] = 0; + line3[0] = 0; + line4[0] = 0; + break; + default: + UPRV_UNREACHABLE_EXIT; + } + usrc_writeUCPTrieStruct(f, line, pTrie, line2, line3, line4, syntax); +} + +U_CAPI void U_EXPORT2 +usrc_writeUnicodeSet( + FILE *f, + const USet *pSet, + UTargetSyntax syntax) { + // ccode is not yet supported + U_ASSERT(syntax == UPRV_TARGET_SYNTAX_TOML); + + // Write out a list of ranges + const UnicodeSet* set = UnicodeSet::fromUSet(pSet); + UnicodeSetIterator it(*set); + fprintf(f, "# Inclusive ranges of the code points in the set.\n"); + fprintf(f, "ranges = [\n"); + bool seenFirstString = false; + while (it.nextRange()) { + if (it.isString()) { + if (!seenFirstString) { + seenFirstString = true; + fprintf(f, "]\nstrings = [\n"); + } + const UnicodeString& str = it.getString(); + fprintf(f, " "); + usrc_writeStringAsASCII(f, str.getBuffer(), str.length(), syntax); + fprintf(f, ",\n"); + } else { + U_ASSERT(!seenFirstString); + UChar32 start = it.getCodepoint(); + UChar32 end = it.getCodepointEnd(); + fprintf(f, " [0x%x, 0x%x],\n", start, end); + } + } + fprintf(f, "]\n"); +} + +U_CAPI void U_EXPORT2 +usrc_writeUCPMap( + FILE *f, + const UCPMap *pMap, + icu::ValueNameGetter *valueNameGetter, + UTargetSyntax syntax) { + // ccode is not yet supported + U_ASSERT(syntax == UPRV_TARGET_SYNTAX_TOML); + (void) syntax; // silence unused variable errors + + // Print out list of ranges + UChar32 start = 0, end; + uint32_t value; + fprintf(f, "# Code points `a` through `b` have value `v`, corresponding to `name`.\n"); + fprintf(f, "ranges = [\n"); + while ((end = ucpmap_getRange(pMap, start, UCPMAP_RANGE_NORMAL, 0, nullptr, nullptr, &value)) >= 0) { + if (valueNameGetter != nullptr) { + const char *name = valueNameGetter->getName(value); + fprintf(f, " {a=0x%x, b=0x%x, v=%u, name=\"%s\"},\n", start, end, value, name); + } else { + fprintf(f, " {a=0x%x, b=0x%x, v=%u},\n", start, end, value); + } + start = end + 1; + } + fprintf(f, "]\n"); } U_CAPI void U_EXPORT2 @@ -321,7 +446,7 @@ usrc_writeArrayOfMostlyInvChars(FILE *f, c=(uint8_t)p[i]; if(i>0) { /* Break long lines. Try to break at interesting places, to minimize revision diffs. */ - if( + if( /* Very long line. */ col>=32 || /* Long line, break after terminating NUL. */ @@ -343,3 +468,30 @@ usrc_writeArrayOfMostlyInvChars(FILE *f, fputs(postfix, f); } } + +U_CAPI void U_EXPORT2 +usrc_writeStringAsASCII(FILE *f, + const UChar* ptr, int32_t length, + UTargetSyntax) { + // For now, assume all UTargetSyntax values are valid here. + fprintf(f, "\""); + int32_t i = 0; + UChar32 cp; + while (i < length) { + U16_NEXT(ptr, i, length, cp); + if (cp == u'"') { + fprintf(f, "\\\""); + } else if (ICU_Utility::isUnprintable(cp)) { + UnicodeString u16result; + ICU_Utility::escapeUnprintable(u16result, cp); + std::string u8result; + u16result.toUTF8String(u8result); + fprintf(f, "%s", u8result.data()); + } else { + U_ASSERT(cp < 0x80); + char s[2] = {static_cast(cp), 0}; + fprintf(f, "%s", s); + } + } + fprintf(f, "\""); +} diff --git a/deps/icu-small/source/tools/toolutil/writesrc.h b/deps/icu-small/source/tools/toolutil/writesrc.h index 35ba256793c03a..784a9b9c7a7589 100644 --- a/deps/icu-small/source/tools/toolutil/writesrc.h +++ b/deps/icu-small/source/tools/toolutil/writesrc.h @@ -23,9 +23,21 @@ #include #include "unicode/utypes.h" +#include "unicode/ucpmap.h" #include "unicode/ucptrie.h" +#include "unicode/umutablecptrie.h" +#include "unicode/uset.h" #include "utrie2.h" +/** + * An input to some of the functions in this file specifying whether to write data + * as C/C++ code initializers or as TOML. + */ +typedef enum UTargetSyntax { + UPRV_TARGET_SYNTAX_CCODE = 0, + UPRV_TARGET_SYNTAX_TOML = 1, +} UTargetSyntax; + /** * Creates a source text file and writes a header comment with the ICU copyright. * Writes a C/Java-style comment with the generator name. @@ -38,7 +50,23 @@ usrc_create(const char *path, const char *filename, int32_t copyrightYear, const * Writes the comment with # lines, as used in scripts and text data. */ U_CAPI FILE * U_EXPORT2 -usrc_createTextData(const char *path, const char *filename, const char *generator); +usrc_createTextData(const char *path, const char *filename, int32_t copyrightYear, const char *generator); + +/** + * Writes the ICU copyright to a file stream, with configurable year and comment style. + */ +U_CAPI void U_EXPORT2 +usrc_writeCopyrightHeader(FILE *f, const char *prefix, int32_t copyrightYear); + +/** + * Writes information about the file being machine-generated. + */ +U_CAPI void U_EXPORT2 +usrc_writeFileNameGeneratedBy( + FILE *f, + const char *prefix, + const char *filename, + const char *generator); /** * Writes the contents of an array of 8/16/32-bit words. @@ -51,6 +79,7 @@ U_CAPI void U_EXPORT2 usrc_writeArray(FILE *f, const char *prefix, const void *p, int32_t width, int32_t length, + const char *indent, const char *postfix); /** @@ -83,7 +112,8 @@ U_CAPI void U_EXPORT2 usrc_writeUCPTrieArrays(FILE *f, const char *indexPrefix, const char *dataPrefix, const UCPTrie *pTrie, - const char *postfix); + const char *postfix, + UTargetSyntax syntax); /** * Writes the UCPTrie struct values. @@ -95,13 +125,50 @@ usrc_writeUCPTrieStruct(FILE *f, const char *prefix, const UCPTrie *pTrie, const char *indexName, const char *dataName, - const char *postfix); + const char *postfix, + UTargetSyntax syntax); /** * Writes the UCPTrie arrays and struct values. */ U_CAPI void U_EXPORT2 -usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie); +usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie, UTargetSyntax syntax); + +/** + * Writes the UnicodeSet range and string lists. + */ +U_CAPI void U_EXPORT2 +usrc_writeUnicodeSet( + FILE *f, + const USet *pSet, + UTargetSyntax syntax); + +#ifdef __cplusplus + +U_NAMESPACE_BEGIN + +class U_TOOLUTIL_API ValueNameGetter { +public: + virtual ~ValueNameGetter(); + virtual const char *getName(uint32_t value) = 0; +}; + +U_NAMESPACE_END + +/** + * Writes the UCPMap ranges list. + * + * The "valueNameGetter" argument is optional; ignored if nullptr. + * If present, it will be used to look up value name strings. + */ +U_CAPI void U_EXPORT2 +usrc_writeUCPMap( + FILE *f, + const UCPMap *pMap, + icu::ValueNameGetter *valueNameGetter, + UTargetSyntax syntax); + +#endif // __cplusplus /** * Writes the contents of an array of mostly invariant characters. @@ -119,4 +186,13 @@ usrc_writeArrayOfMostlyInvChars(FILE *f, const char *p, int32_t length, const char *postfix); +/** + * Writes a syntactically valid Unicode string in all ASCII, escaping quotes + * and non-ASCII characters. + */ +U_CAPI void U_EXPORT2 +usrc_writeStringAsASCII(FILE *f, + const UChar* ptr, int32_t length, + UTargetSyntax syntax); + #endif diff --git a/deps/icu-small/source/tools/toolutil/xmlparser.cpp b/deps/icu-small/source/tools/toolutil/xmlparser.cpp index d421a79ead6f2b..a6569903bcdf97 100644 --- a/deps/icu-small/source/tools/toolutil/xmlparser.cpp +++ b/deps/icu-small/source/tools/toolutil/xmlparser.cpp @@ -64,67 +64,67 @@ UXMLParser::UXMLParser(UErrorCode &status) : // This is a sloppy implementation - just look for the leading // allow for a possible leading BOM. mXMLDecl(UnicodeString("(?s)\\uFEFF?<\\?xml.+?\\?>", -1, US_INV), 0, status), - + // XML Comment production #15 // example: " // note, does not detect an illegal "--" within comments mXMLComment(UnicodeString("(?s)", -1, US_INV), 0, status), - + // XML Spaces // production [3] mXMLSP(UnicodeString(XML_SPACES "+", -1, US_INV), 0, status), - + // XML Doctype decl production #28 // example " // or " // TODO: we don't actually parse the DOCTYPE or internal subsets. // Some internal dtd subsets could confuse this simple-minded // attempt at skipping over them, specifically, occurrences - // of closeing square brackets. These could appear in comments, + // of closing square brackets. These could appear in comments, // or in parameter entity declarations, for example. mXMLDoctype(UnicodeString( "(?s)|\\[.*?\\].*?>)", -1, US_INV ), 0, status), - + // XML PI production #16 // example " mXMLPI(UnicodeString("(?s)<\\?.+?\\?>", -1, US_INV), 0, status), - + // XML Element Start Productions #40, #41 // example // capture #1: the tag name // mXMLElemStart (UnicodeString("(?s)<(" XML_NAME ")" // match "", -1, US_INV), 0, status), // match " >" - + // XML Element End production #42 // example mXMLElemEnd (UnicodeString("", -1, US_INV), 0, status), - + // XML Element Empty production #44 // example mXMLElemEmpty (UnicodeString("(?s)<(" XML_NAME ")" // match "", -1, US_INV), 0, status), // match " />" - + // XMLCharData. Everything but '<'. Note that & will be dealt with later. mXMLCharData(UnicodeString("(?s)[^<]*", -1, US_INV), 0, status), // Attribute name = "value". XML Productions 10, 40/41 - // Capture group 1 is name, + // Capture group 1 is name, // 2 is the attribute value, including the quotes. // // Note that attributes are scanned twice. The first time is with // the regex for an entire element start. There, the attributes - // are checked syntactically, but not separted out one by one. + // are checked syntactically, but not separated out one by one. // Here, we match a single attribute, and make its name and // attribute value available to the parser code. mAttrValue(UnicodeString(XML_SPACES "+(" XML_NAME ")" XML_SPACES "*=" XML_SPACES "*" @@ -501,8 +501,8 @@ UXMLParser::createElement(RegexMatcher &mEl, UErrorCode &status) { // that parsed the attribute, which couldn't conveniently strip them. attValue.remove(0,1); // one char from the beginning attValue.truncate(attValue.length()-1); // and one from the end. - - // XML Attribue value normalization. + + // XML Attribute value normalization. // This is one of the really screwy parts of the XML spec. // See http://www.w3.org/TR/2004/REC-xml11-20040204/#AVNormalize // Note that non-validating parsers must treat all entities as type CDATA @@ -569,7 +569,7 @@ UXMLParser::scanContent(UErrorCode &status) { // Normalize the new-lines. (Before char ref substitution) mNewLineNormalizer.reset(result); result = mNewLineNormalizer.replaceAll(fOneLF, status); - + // TODO: handle CDATA fPos = mXMLCharData.end(0, status); } @@ -592,7 +592,7 @@ UXMLParser::replaceCharRefs(UnicodeString &s, UErrorCode &status) { mAmps.reset(s); // See the initialization for the regex matcher mAmps. // Which entity we've matched is determined by which capture group has content, - // which is flaged by start() of that group not being -1. + // which is flagged by start() of that group not being -1. while (mAmps.find()) { if (mAmps.start(1, status) != -1) { replacement.setTo((UChar)x_AMP); @@ -824,3 +824,4 @@ UXMLElement::getChildElement(const UnicodeString &name) const { U_NAMESPACE_END #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ + diff --git a/deps/icu-small/source/tools/toolutil/xmlparser.h b/deps/icu-small/source/tools/toolutil/xmlparser.h index 72f7ec8fa84645..5a3a24c5ed92e5 100644 --- a/deps/icu-small/source/tools/toolutil/xmlparser.h +++ b/deps/icu-small/source/tools/toolutil/xmlparser.h @@ -116,7 +116,7 @@ class U_TOOLUTIL_API UXMLElement : public UObject { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. @@ -137,7 +137,7 @@ class U_TOOLUTIL_API UXMLElement : public UObject { const UXMLParser *fParser; const UnicodeString *fName; // The tag name of this element (owned by the UXMLParser) - UnicodeString fContent; // The text content of this node. All element content is + UnicodeString fContent; // The text content of this node. All element content is // concatenated even when there are intervening nested elements // (which doesn't happen with most xml files we care about) // Sections of content containing only white space are dropped, @@ -188,7 +188,7 @@ class U_TOOLUTIL_API UXMLParser : public UObject { /** * ICU "poor man's RTTI", returns a UClassID for the actual class. */ - virtual UClassID getDynamicClassID() const; + virtual UClassID getDynamicClassID() const override; /** * ICU "poor man's RTTI", returns a UClassID for this class. diff --git a/tools/icu/current_ver.dep b/tools/icu/current_ver.dep index 4ab415d8757b24..d135e99146e041 100644 --- a/tools/icu/current_ver.dep +++ b/tools/icu/current_ver.dep @@ -1,6 +1,6 @@ [ { - "url": "https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz", - "md5": "9403db682507369d0f60a25ea67014c4" + "url": "https://github.com/unicode-org/icu/releases/download/release-70-1/icu4c-70_1-src.tgz", + "md5": "65287befec8116d79af23a58aa50c60d" } ] From fc4511ab7bc647f9ba90cd4df9e003c4b78df8ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 29 Oct 2021 17:29:36 +0200 Subject: [PATCH 2/2] doc: update maintaining ICU guide Do not ask to separate the changes in deps/icu-small and in the LICENSE file. Do not ask to remove the whitespace changes. The way commits are landed now doesn't eliminate them anymore. --- doc/guides/maintaining-icu.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/doc/guides/maintaining-icu.md b/doc/guides/maintaining-icu.md index 56e5c58aa0f521..73801f60ffefc5 100644 --- a/doc/guides/maintaining-icu.md +++ b/doc/guides/maintaining-icu.md @@ -159,8 +159,7 @@ new Intl.DateTimeFormat('es', { month: 'long' }).format(new Date(9E8)); (This should print your updated ICU version number, and also `enero` again.) -You are ready to check in the updated `deps/icu-small`. This is a big commit, -so make this a separate commit from the smaller changes. +You are ready to check in (`git add`) the updated `deps/icu-small`. > :warning: Do not modify any source code in `deps/icu-small` ! > See section below about floating patches to ICU. @@ -185,13 +184,8 @@ make make test-ci ``` -* commit the change to `tools/icu/current_ver.dep` and `LICENSE` files. - - * To simplify review, I often will “pre-land” this patch, meaning that I run - `curl -L https://github.com/nodejs/node/pull/xxx.patch | git am -3 --whitespace=fix` - per the collaborator’s guide… and then push that patched branch into my - PR's branch. This reduces the whitespace changes that show up in the PR, - since the final land will eliminate those anyway. +* Commit the change to the `deps/icu-small`, `tools/icu/current_ver.dep` + and `LICENSE` files. ## Floating patches to ICU
    25. cbg z-NJtVDmRt#qHt{mfShxQyt0H9DP)#D2ik-uZ$i3CVbEPVjhAPJ=D%QoXFy}p%whee z8%t;lE`+iAm|*g_n`Tn0C!Dgu)gA0)S^2gaf8D zY@omp+b9FSmQ)CAm&+;CaUreFQc5Iz<@VC+NHukHC=Km!($Th8#Rv0wLqD~GC}C${ zZ%lR;io1&tk{!2q?e!3xW6ONEa7;KG(&sb5p7XJ;EHDPxRC3p1AZZNNcUbkprRblf zQVjz+$9c!*<@)Obv4CRHmQ$FQXyBkCU{E)F%I~`Gd4V$~E})HQN@dG*Mb#FAn;@y) zGirZVH1Nz+E#K+P{kW}{V9J-ojqW|3MeI^~cx*&2RBHkqj~-v4$c^!Kx8BVM(%bOx z$)*1tI6GKxG4zGSN7d5qc28huAH=%l2m9?v4Suav+#=zVZ|HnU!j_Ns`?AKkva#l$ zbn$19Z1mf{3c>C7zZd8G&%1_NE_QZR_TuhZy||8m`=omo{n%A`o=SU5tT#AK6eEa6 z-VJI*wmeT?ar1l>OW6J0CNOP1O)ov}NJ6s((ksFdrTJhG4dcwtIER=#MTj6LL@klcA$uvAEv?Phm&i48m`N7$W#sM((R`lQ@Yq`f?`WO=2((5#JGwkh>i-u zqQ4uR|5PFxSdd;HyM-3$`aa6Som@}(MnXzT$_>~6kMM*!KKnC~1PDmxu1&42F$*cE zl(&2G>?hFvORJYrrfPlTR4INV)(Q$1p32I-t(#kwDF1s-3y+|SE9J)%E97++tVNgj zm#xJnLeAj7(tqch(qHZOYbRvsD2W>h(GWN?v|gEV3(hG@Op(zDgt^2Ag(*&4#oNx| zo3MoP^_Pp;lp7uln)hpd#JqZCTq-}HYH$HFu+FMHCQM25ZExUix-0Q4zKS5Och!*M zTV}r^Cut#>=%5o9aY`~!00@}?;)&N2M2KYpqM<+fDxx&D30On@{B_`5aqnre^g!=j zpb5mE`Wf@V>JC6uKq`9G?=FCpWD%$E_qxvx1uNLM-rD$yi~7HULrkz(C{@PadY{vi z_BPzy*Kv+1x!PA|6?eU8>;#Q4-H#Y2ti*8ka;x8@3_PTWAZMs+5v1rC5zi%! z1PTAfP_HOxVieOXP4j+^m$U6>#5VxC2*TKo&R9EqyjRM(L-bisSC&69$XF~EeT%Ha z%H(~hzv+y!f4S+0L2R?ni6G5N+VM$gi%KUtTCuOY7wQAy+A$053POw}@qZd^=e%RB z>@2{DfdqDoVpytbQ>7;#-)GIgz3V@1>lJ}|?Akc^^BFGd=o?4{S6xG+_#Enc4=TMe zu31UU|HrV0-B1i98#|TZrvLHXl@ESTy{fgzRE}D{g{R`_$O;H_rYImlzKp-Nb~jD? zN7qhl-sc)^uw?@@s2d{h!1?~l?2FxO?%Ols1^Kh8`?|HPJc_Bl+c@+A{~YTS4LK{r zqQ4W{|AtLR4Vz*L_IS~N+jKLc=>pdC}0Y zp##16xlIs{XjnEdrP}F_gLxG!O>&#jxMsBAHa-bWG>>-FA<$q=KmCGo@2HY=UMv*z zW@)(4MC!kh<)sjN=A-|4Xdh>_!E5p1Lt(Gxv6k2P%;&uxDRfqi{4I4m2@#ira4`cO z1drqUvufrJodZ4^D7{m)(ZHEok&VL=S>Oz2bsEC-Px%VN4xLJbtLlLGe)Gg#elEAgGU#2TLRj>PcqEX zXp~@rSs69n8q$dS^JQ%Y;u(<#sJLPfPf~&969AN=QiwDw;48hH8?$&cTF)PK{i!}e zZ*(-c(Oa@}{yt6QXnLT*WSBMJA9_@H#>Q!_(kjWno$@M!o;>2{hSu+SgmjYeefpm2 zI#rrK`jt;VN8CD=+M*m-2T54SbZhPMX>1x0WI!%`KM&g;q?A7ZbuJj6xIXf+NpN$w zN7Oh6`bR_s02ea)5Y?R|S6kyIL=kn$LX%Eoe;}X!8jKP*@kY1EKxn9>@&Zrsh*A8M z@0s1r$iL5Q47{;$|D^q~CN4DkmjbR7m<|RFrqTH6{3001Dz6gerZ8 z5B$g|BJBU^(+Xe67qrqk!Im%SO)z4Xb_IZgSrP%eB4YRpWE-6f7H0L}zv?OoPKn>+ zac`k>VM0wDV|YD^_N(ZZSozddF&j8aB!Yk%2K64n$C>EcVzmWvmjpNCk>jE+2uqbR zbchwQQYha(J$3d@`Wu?Tv|Eim(-T{+4pPhkLbGqlGAo=mZjfR~IxIH!4~WBLlP1kS zyb~bvLBOBUhI8lLH0Eeza(Kb{eEqc7x9Lhvail1h(0k8&HYXS&qP(KZe7zaZ56bpr z{MuPQ*Alr8Q^D6a?0<)V$M||p+;JafRhV}$pZ)vbDk@)~4P-}c)$7dn_pG_Xg|)}= z?hWcGThF}nc+~Lu{^zgU6KM_Td0#3>e*~BnDVRzh>S+HnvVkxv>-YJ+eoK!T`YJJv zluSSQy%GB)zq(~kRvA9NU}obQLy|mS2VLMZ&Y#2vn4o$(S|<5c1&0v`p?Z6y7;2Bx zGDtp8>Fvh0=`jB8vD5|5LMb+*s4mgkL~p0|?N}Vw`27!=9h8+sJ1^wh=yy@cFf@qv zv_}&Cf~}QfyD)`+6sdu71YEfAuXrJuG1Ab#o6%FQ z2Mf`-_83SsMsCa>l8*?Vylbrv0stdC3Qh6|M?qYrAu@F#kCv3mECMbHL(1W@<;>ig z9PsqF-FHJ!@y2tKy(Vu~mxDim&59|wBcHAJaDsuO35t@mgdi>3&)Sa9D*ROcoAv2$ zTm}OELeZsT8{NC87Bmgwc+`ojwsx7(1FC#LT!_aO%3+`&FEnsirrAIbos?Vsw#eMy zD*nYU`1_nl+;C!}xCSPzf37u=&@AW;FmgxoE}sE__s8l2j}VE1Ppi$o+^LS+zvS|=v-AItf`YspVEeXQ#T^U4y zVoM+(8v&%c9A|VtVZNIs>#tA2qf>{4@~-XO0Y{HFV4{K)dUS+UI6q87-CQ9T)bjwpA8@Q{PNp8I65d?&*fQc= zem^Y3Z%}X0=^a{@*oTNxITfxgWx}5>+6Ahkm+hIu2EQJJmz`ulf^v zy!yPB=V{$7V{=Rn0s<(yqXUhF)+9%x{;2%5Gm8a!wVv_?xox+0q6CIIK4q3IT~yx2 zgaY%9_x<~##rrfp4V4Ge=_~2zza2R;uie&V&+2BrNNr5OkI!!gFBXeIIIH`k^KT)1 z1vNCeWoW@q6My)8lOWY+xQF6YoKt=0o_xPA>Hd5niZ}e5OA`UXMqKgdJHUIzTVAMD zUNIL6QZMk#21+#;rcMz77i&VSr$#ywEyu7=DhrLiaGjnsLZK)(^V=0+&u|-^r^??)*61o8^H#W-alEwZs|W=9rIy6&K`_C%K^xV9SU3Q;wLAVu0-Ocl5&-i5~JA zMye1;C6NIQRVeN(gn&S!s(k~UCfjdR>|)fBT)(oLk0^grPn}V1h+=|`pd@@@K%6_X z98<_*2>_)Q$2~oUx8U$z*487v*!(@Z3Sn4WZHLLK#yXf}(t=&aaV4*8lZ+glB8UCZ^ydbNQ+xP!3=%(NKFg#aH zO3olZ*SqsmJ*J-{)vwR|4UE*23#9vI2L2@YQKah!U{TfUp>=E69Q#aK8I3G0d4&ah6ta_Aq+p!WA|~B1WEbXOvgzg zNas#HS8f-RZ*v%sd2?B863OCaF{gXK$f{Xs&%M;u*H95oAI>qr6JXp%XXy&u{7T8N@o|mG!wp%K~ybC#BzoXAl(ClU>ZP zwQfz=KiT(_Zfa*~*^-nc?2ylO_I0YRnv&FNmB~5~x-0+st&u!1?mY5P*&>l&%}Oym z|IRGph>Eavd@rJuOrQO*fmkvr92Xu1DE>#7JuI5cNu)uPDvckC+$nW$sPpfgEExAB z{d8e(^it>4M^PL<=R%SKq6~#%dea+ika%kXh}?F}AL7EqeNXcED>nJ<1`}9;@BqSBuwq5$KWTS50~0)iXr z=<*ywa657?eRT}4rkuc^aCg9GAMs3BM1a_Z0v0OGx4!nz!d2lW=#!A;VhO~=28T-} zG!%9tfXST8KyHeJi?;$qjBeDV;*X(4l7I89DG>o6074?YdRUeS+AFGB-$j=#8Zc+} zr26R2|H1)(iPujT(iuE0hbl-ag3 zn+sBxFle;LkTDQXz#|hI?r?y~XR3B3yuyEZ+LD3OGCQ`f;P}R|kkRm;rEzjuOY7LV ze)}z|CV)m(PIrnE$9?>*gNyGk*W=~dpgc`6QWD#ef(29N53r_u3<*?OpAr-FhAaWk zo9ewWRHOeINkPVZ)ATP}Ipx!U6CSqEHdP8y=8G8He~rJ}-2|Eu}`BLavjj5qnaD8D%@(Tw2y$-T6{63)(kX6ZL;LN3FMZ-P=B;#qTBJbjZckCGD?DIZW*@M5YePMTRp@&tURi2u{t#^nir8e(4Je?4(Iwy675%604j&_{bxGzsQasleDzJOCB;wuHG&7!f6b-b zAxu^uD6_77_3=?j;_#966ILJ5TRREDSy|#>a}xD9)P&8r*ngp*QvK>bE^oq^{1pt_ z!C19!jh#{<7EDj=fahn4~Q~hjsBKbJBwmuzgC?;A)czs() z9rGojZqA?^TLFXDrp)y@m0UNwkI*WS>o5g5(@g%%%`=2T-4o?aRwuzLkryHWktVbE z(xoJ<#2A4}Tt?*oAEio@k3Z=O%$LV1FhDqaYZU#EsBf{_tKg7vczlbNzwK^~z2`sQ=_J zW2F=N56`lE?bgNG@evOM<2dNzY@QJOPYF+EfaHi8RIOR|`wj&rBL^9_<%kSuBMqes znaEpTS%%v+0UYjyp}#kX*Ed}VITE9$ zKK3$yEP8Z*20vcM+tzSieF~)j>sQ_IP}0!;9cX`@&xhgYqC6=!nEsN{-!b$z4?S~B zJ?zU`J~l3e^`soeB2Kd@%MWC_vKw>0iJ9y*zScBGq(fcQf|>SU9ETbzDmT1U>)gA> ztb@e!y8E}Cs+}L*6+W)tWdpebJJyV*vuC&3`2D8oZUC+B?q&}KJRO%Em~ozV%W!{t zi=U|T+27M}!-fDtpPOWc%VvzW(zlV$1{3-+!}KoQGZ#tzPmdHnX-{?*K);QgaYgSx zTqXqOe(PFV5=a9idyIkvNi|L1_t&%BA=HYC3b%y8_@8;zUk&ANl)Gzni~f74qxT)6NZ@m-LXM9%(*Y8`TafxR=#_VDM0P>mM74>qJ{M~l-N}Fed4~T zsEONOyGzy9Bfhzled}iK-^IKRCwEQv#r0ymo6f(JSllsl{!e?S=r@O>Od9#_!Z0)7 zxPOmh?4le*Pl#PBW90HUe~w#zV)?<4oF@=C&G_WvXa{8*^?%G0Cw=l*0vz|atZE(D3xAfN4fXCOfIIOh&_Xu#{&g9LZV_TZ>;x%I8$0u&gPZq4}=67Z$ z?}0frbSlI4Tx3dx*;K+WbEEEZgWT3P^YCpxso-oo8WTq`4?d&k4}NmY_gV#VtcH zM?w>|sj;-E3qz&qF4bc4=w2yAiU?vheO5nrJfjR=1@_6afpz0(WgkIBCix$c%4!So zZU7=6@3mdmwY_npyJi(rS-a@}sjNTM(R`RdE@<=WavK+S)P{->fJnbaQvW8il))La z2^?t%BjA`__r3*8GD!nZeLpHsdWW=`fh zY#*MKu9%{+6~%?wMkX84D2v`8y(1x3l7gVF*3I6sXJ4t++CB^Q+?n_W@95G6_OJ7` z$KtkN5CVIn*;!vYDkW(t48uzvA18bgbR77=5D5wllq;G9AOg$}Fb=8! zDY(y>F$mCt5b`5qSD%yf*opoB zqxY?7#gFrO)vSD_`Cik?e5Z5J#N++vU(^`Y^LjLbq*Z+@ELHjE*l_S=Kh~5zA_Jz^ zb~+?lBOLP6OP1$)?hj8n36M!6cvlGIvLBG3kMp32Z3VMinKOy1qaj<`TH!xQequeu z*#ra}5GW=b?jI+bc=xH;DV}4lPGIE{5?R*vPCmWaPeElL#4`?zvC!*ZYMA);#pr<5ZxX^LSX1ZcrfvPH*t+ zW7nv3!f!?ks9v;ugZa~=+I;?Z!{&DDCgIP5%o&dS+v{h}r5Bai_Z;1FqZFLEb2eCc zDDkxD&G>Zi9wH+-A`BKEkjnJT-z5G#blm+JsGy>PCsAN?8H7s(>|Mhse%%@jADOL@;x}K&lwb%akBx&7%M?NLjLS(^J9TJ&%3^LB zqcz<2^2Xh)?i=4ZyiYNn4?9Eo69VYB2eVsyMQtxLjF^EPt14nLFx2wyjSMT^ePnr*M0Hs;ZGX-rvOcMp>x5rn`i~ z;JY3V-gJBIUu_+`9mQFk-@qBZheX+@2c)QAH)g9AC_PX$?$85sT7iH{AVD8Vqo0d! zBIS1fJnG$)&~eGyqk%a~swjd?3;_lQ;UG%Y7w}|xe^(-4PzeSAAK6?cMYo=>srOb5 zd5x{VO7qwZI%Q#O;)9Om-ol2Unt7ly1*ohKNr%$S;kOakYdiYAZQ2i^{-1we;-xyp z|Kkhq^N6rXSl94hmnz{9$p29jE4$yFf==}HF=igiXz0JqW+?HZ+d2!6my7lEvBoj{ykl%TE%2#pgs604yyHa%gBY9PqUemwL00=-pjI#H1 zvPjsmlJ?;}yS}RUSx(l_-U_6htR>f=(7j3xUhl7^m9p1k#?SxNz~A)prA;)9WYCnJ zHN-kR^h@r^$(c$HTgc;NelI(3bIw-ZdvS@u$8dy{%kxjn2NEnzZ6U<|@8A83Ez>-& zqt`rt0~FrTF=PtldW-mNe7rfQG}KI=p)<&hHu@j4DF12r=bMx&Q)-_Oj6p2}WXRS_ zoCHNWNE`18lXH7~4bp z7~oRA&8$AgZ%5vJevo(`=kxn#@1-d|SB?6ATkCBkI^rua>Cj$!xqz;^?gxKfeE%}9 z{Jpy0^c{MHG7K6t_+qoPYN}#D{{zS=?Z_$+kJT@=W@BMto|+X^s*QvD(vTwJ6D>lI zt@ai;6P-?|jj{nPpoP=goH!|AlxlR@)~@~{Wkk@zkO(N8D|}2O`U(#-|9C5Ku1rKz zh#+XuafPu82K2qN3l0MZHn1ysjKqsGs4X*PImR`21XN}vkcMgH&WeZ>MH%nUGC?DQ zYJ^%$hc!lG5@EPd77g(L1W>Tip>CNl72am}c((7ET!mGa^$TJx_yz^oXrF>NYODd zw^IuWHxHac>F8!WC?biLB~$ogN{_V;thR zk+;CNXeb0%3yoBnc9zwB)hsSMp!4UvH&WKU%#)H=9O z6CxXZB>~2%KEj5rrEt_|YQ|zET=B2^G-0*b1rq=^#=OqQC}jaztcDjmP95QqcMVC9H;=OLX^^A5gE2HoG+Xv7Kpi80|AfJ zW(0!xFgzaez{m~3q`)}NwQ`yze1({>olKN6&Cem&VYs1lQ9{)iFy*MvDFkV~eoh4k z=^9Q!hnhDdMTP9-0W%`;ee&5_xWhK`7xHS8oSD-c5`~5tWKd%>nA-#kalgZ+-~w4^ zQ0QIXG$DkCFu!#`2OLj6T|jxH57gw>Fh~fBL?k3gQw82)-#y;IYHOV!h9tqoPbUnm6z@pf^x}glP~A`P(rQk#h#X zgIX(kmDi}l?G;;M#uJbySS^5wDyQ9S%9xABkzW(F;BRz-v|?nL0y~L6j4b*n1WR;LqxE_89(zh^pza-CK?zrErm3zxYQ^Nu}uMC2q8C8 z#Myu`lv_IFh=784O^w$<`%FJ{DXL*|FQt?$(i3}Y0N5ZmttY-zBDz6`YNy!F)E;%L zi>lENWSJwBiDj#42lU0%(oza@?NoY9o;9k*BArTOByOE&Ce}ZH35x`|%cN zDJF(da^g=J{xQ47Jdgf7!a7MSe#U3N!47?mkZj;E)JFk^14i#-T}NXk1K`#+^y@+< zo#qQfi%yTc+0gn1Br{7$U#-VEY;M29v*$wA&W)!8XV=N;tZVIM!h20& z!;(BX;AAyjz%B!9Dtw+&Mbekf^F;*wWY}~Yt8FK~egln*H9(JkG@m$0I|cY(NIBZ? zqxj!k|J(Av{f?4y~+$0l0R`8+^fMZzQ zX6HLj6dci9prZ9e6Nv*gYKEM;beGn5yTr>Q^0$VW)uST15(tc<*7vHlNd$XlUI4B7B_gOhvL_S^mJ8wEMkq`_e6G1e69dakj>RR-(< zL~8>8ro&2T-i2!zH)yi%7qg-uEFtlsM=ze!%kbLQOgXH7%9OQH4|CLXo1!jFHFkWr zLX4L&9%iA~gfUyw?0SpIY2PU4ek{3F$CaD4JQ#R?hG(+=?BR}<>*l+=Om1av&aihV z*Bl%j!O&s& z0H8Dl-cNdj{2dFN_SpovQY>JJjKeYtN041V>B@u3P})p6V_!R9-AD)JB?mXyI{=RZ z?rbn|pS`zbS=aVd-<@9!!Ozw!=u+3$ZB>sIXXj!tUokl*wzWGT$y+8c5J-SckMiZS z)XMg^9n0@WJTkZa$1m>%Dw=s_qzX_2DHbULBAo=IDf!*CejkbbO?TzRf0g>*m$jDY z-ioi7r998D?yp6qvR8_AEC?TMZf8TlEeOu+RAR-A6DR3FDOuHsGml7{DX5$NrF zm9ac?D8Ue2RPYePvdVhv^e`d__o-t@cz1l9c;l_yw*x2jPNk}Ur+b}GHTst7BSWP? zVI$xXgj3QA{l?1efui>8>HNtwWW9L4Y?aP0-RC@@X3w!C8{i1-n+NGM$s^!=tMaWR zlqaHuT*m)Gpd|uAN~pQ3lnM?yOE#QYW|B@+y8Tcuvjx9!|LJR+FXjUd*<8yHM#d+*VY#2cW+6Z%s@DIwIbYpQhTyeNVS{S2y@_$48pCtP&Zm*%@WX~%v z9lSiXcm4<0*LrHGFEHk06zoenPT;+N^ncAQN`%E`F*3~y>@@rIu_5kymultEsSueX zcR%{+qE@bKi6APo)M$F7Cfl#@lJw4TeI}I%lZ?I5k_uHdt^Dnelk6fCe1AXdit=ps zH(6lfpKs~lA%~8$ER8qa=k_cDXMj!`>O3Gm?Ilk_bu{le*&D+z+xGvld(_lI6=1zzRl^q!SHNk>M!|0U-q^@JQmyNuL%`q@Xt4vep=UlDt~-jf zfF7xBjR>qEcs`Htm;$!$S6D#@jhlzx9*6GYHy@S~{RcPTMgI#|)3 z$03|E$Z`R70^!s#+3 znUk9rNqG2IcM>_kN#O}D>=Y1QiHYMLW!dyqc53&!7XFICtx$(#+u6k#axEpIgsi9( zj1pqRXQ;xFds=3~R{7c~RXVF=X@U~PWG3aBch4_oQiDZ3jgzpbb+;Kw?uQJN_wRL- zSJlljR70XOq*2zP;Y<^Z3>BSDMsP(?ZAV(q6{t~CJ~Q4_&bdn$R? zEw^)$E<1~+C4Ff!x}aHEjk2>)%#>N8%u>?KXWzNbh0B-HivxNZ2%fwaXr%-;mg5jk zEPYz$WmaW-?cPGhRS3^<7U27Jwp(kJ(?(Pko2a5TXq+5xC^k3}$*P4)8U9kIv-96XxOmAswSmbp$i5bf@!^w z6`LrUE=C0q+D;T6QfBiicJ?t3OE{WjX23oggL5(C~zB$unc_VIy zPh!-Dt})Unfh<-fr9fed1=JH6Y4Kc{d6|kyn@df%ZN&v3m)gppQmmzDi=|~NGN^sKl|uux$|xlUwiIK(TX#gvoh_B=+>DEXt5lE{D1QGWh#?C5?$j&==p3j`O#gcp@?t=y95!ExIxeO!UX)e&4WmU) zs=xQ5q^~J9<*f=5@ncrxB#^HH@{@3@)rpALb@xzX8H5t~=?6x#&#s+i=bsCJd~p1U z*Sff%{=XjDo1zJj99?7Eigm!S$SEvy#4zz?cWPYp#hr%?m`hcKY0a$`+ls^2Vm6m` zJPkSl_hC98JL&;W={pm(%nU6odsb`R&od~E4kAs(!Eu)AO4^3ifjb(byizL`l=BrO zO=3?)Gd7hX2AoJj>-##*Yn-{6RLRvQC|E^E&omoNtF(voQD9eMS2U$n!OaL!3l}I6 zpe)A%+Xc#@JgUP=W?Ar?Jz;QR5{~fbdY`*)H`|vLE(CR$jdm1wD^%k# z3$sG&CBUSQ$RMi5QF74n%m?M*+QRJ`=9XQ6vE)aNg?CVqD=(iP$-H zLcOL+{ES_84Q|F_nK>u2m@2nrQBJxjmB5DN>Vacb_o62)yy_5uDmEywbZ5rgNu>)j zqb-`II0qJ|$0KcwD(g^KcRh;ucM9_xd0jO^Adr;RPUI9my?w^$=t|~F$z+4O?ncCNOSwMxJ36MEP4`U}z6BLneBVikcO|OwdsMA}tX5$*CVze^ zmp(XaO;OecJmGePV~2+!LQ1cj6Etew<>jxGw?k5UqBt8$G;XSPd>F~-#5Dm7KzbZ! zsL5WNgc8gK2v`0!OD)OIdgO{(F&x?|md#>R8;NS|ot31x|5Y~bP=@53KDN}^h0$8h=%04ynHY#QAZ)Zfj z71hF^<|_{Zj;`W&QdA7PY*w(avlT$L8I_e!`L=nE=&tzWSfN@BGC-D>R%5C%9ibU7 z>)K{Yi!GBafh;|7(;kXhEHE!Lt)hyoE_Jt?qb0r6RWjB^Ejd+WB8g1qYFfEgI@F7G z;$cVWny8his*DgCLa5nZR)D4{Y)uRomw)M=>ubJaG&Mw3>_ji9vkVQ%Se9f=5T?Q> zV_y(KCh8F~x5>o_zE)nQC?Fv)MR9WCoGyID&$U5CB;-k?);1cL=rF-jtqW5Cq^E4x ztQ<#5%~q>nOQK}Uur%!|OKz6X>oEl2hQMTya0G5b(@QSXO)~ouf+6l5hSZ%&#lpI0 z8JdDOR`aTSC2;RNtXZDR&wV{K(C$prUck9=&#~ZE%c+s^rizB#Q)1v)8+KuC0Nth} z6{fg^9(-X5#+J54;|hA~%K=FP<({cbWLreGr-?=8T<;8LQI}yq{H{u}x>R`* zw&iF_1Zs^Yl;?g!Tm!jJc6M&;!B85+;>J+qCg~?Yx%+BV#fr9d8L5W?WJKUm0ns{v zTiC|@#j?9}$h${DqAX6r`^ywas8}M@*e^1~6ouRqmmb~0=+XqZA5UG0Z=0e+P1`Zs zRfdH(3=C{0cv8(N!38;5#jfS0)I9WQnCTL=D{Gp@nhQr$6`iTnu@=EyJXXrrG%~g@ z(kw*H8E%5FZCHM~Q)TysCMnyt!iH`^ux2B&SZkeAOs#ls$Dv(R+ykgzy{HW{v3E|g zBu>SR%uTl(oz%s<0$hRVzVt6V{qw|jD>TT#AM_x=Csl;6Cv8(Igws`JFhp>9MestF zCaF`tE55+2jkcbg@>;i}bY`xlXXJtOMrN;`culKgW^r3W9_%d*yor5s$8~mTw(DIw zYiet)WrCoa3u_jJCbJ!@35-qpk5Y} zW(=uIPyJtJrYIF=0A?c#5JEbmV6y!fEJP9+A_<|$;hhHNFv|>Dq*}C!!{EtvW!-8j zo{9L4Qd~ocwXF(|9L}3U*g|$syItj~*H?b3RW5ZD%9)^)9PX~BA+{Qs<_+A*O)n>d z_l;gAHvTGdGNh_-r9&u91!w{)vl~j7n`b`V0D`ATUCe5QqjLHsrHw+Za!{1Y`wzJ_ zy6jS>gRCvaKp;Q81p@4E9XOlJ!g*yabga4aif`eptr7!Ns+Ew3VZRyUEp=g}y;obg z(H9)UaLohx8=UdK1Cf;v-e#!Ytk$*4%dJYHV7PMy)4nT-!4w|Zs*nC#%;&97E3wvn zr?B*3XrapBWM&sN7n*nRjAqZF&EP^5=iJZ7Vq`Ma6npRFsR;|sDqUf2v%b9Z&J|98 zh-H@y8GUl2IV+fCK^kR+)Z9>FP5Xk|ES>PDCE3FSX5a0$-Kb2owrHUOaE5Tm%X+mb zA-FX(SQdi8W;{+YQq7gIIjF*Dw;8C!_Q<8x9(E>ULIr5zsboB@@|divDn4DSI z=cUBGiOEj8CCybz4SXqr79LPxeYd2kU_31q!!Z?F=&6V0J?8?7@G{-SWTj($_}fN) z_S>@Cz&N7Sj0(DS=ERDtxY(|@v9~vLN`@x`<()7zm*f@2g{zqFHj^3QdRhwWX;$R7 zC53Z61F+j!xYbs(hn66bqap(q5i2XSRiSbxQE=o)w87b`Rvm{tEHxGe8;#phPjWh8 zYSoLUo3Ee$T6o&JluoWQvd%1bFh>QX<88^`c6iLtrFoK8o)WaTm#VV%f~y$8EZwCv zGRB${R586fIo*z)TN6SQTb`9JaJaP$*W7``gwmNp!}PD4<&FQys~j0B$)Pyu4Kp!1 zhLnjdOEaPA9BHd=%+s?Sp}%HjJ)%~$YFg!e5lzU(SmB3C%L>@47j@xs%70@Es?f82 z6#Em~TaEWHFf~x=45?+;Muu4yV+I-#kw`KTLSAzmmnzcTATZi}%|RsERU~dXKyT_x zJQ%lg$ZKrZR`JN6Mg|h!Y68&CTB5xNQY?THL4u4dCnOw83)%~BRw_^m1VG44t{fL~ zP%)xgDSqS#3>H_Kdsh0UF0DQ5DCDiIt`N~w0;M?vRQ3(R1S)w7kO{WIP4vkv!bO&i zQP*S{Lvu=0n{wD9>VX6iZm8pky2WYVP$|$slb02zChOFg;!XR|ecjw1kc>c!@vLIA zL>HZwyBZm2F<5W1ajxrBxkGTk@Hi!*rU_>S`?1!2(~{`dkby=`l)*sp5HzYL=Qfnr zGorhB_PG=|+U5q2Tyln-;H-zDZ!@bAs=KD^U`&~j&x3DYIYt@=y_m)DSp$`Bs8sb> zU=X>>%xqM6T>2~80bkcA1qjn>$*$ ztR{DbIt*y(;iYNcvgI39%|2@ElGNI2jIlEnSyi>QD{Y(DNkVIy^XIo|wAD&xvZ!85 z>6PjV@tnvvvK7YB#@tz61kAj4k-d$&_@`2^9kR;pi!#i_%;isbpuQcl3PQ?|BNh}c zzFvUV#BSD`jn51?%1d|hbf45SQuJ`(znmq z_>WsIb`%~MUxCwm+xYj)@_T!Now-6~9HWL@;H>PbM zHc-2{Kkj-OQzy7%-_za1jdd$L$s6ofcWG8SDX=|dTY-JBrd@z z;F#V^U|egC#2X5TCu6vH^4{gfIGaM9qbFF1iC{@C$z76xa;(qc zG$JmH{w7`Ku6p@fM*sHjX?Eu{X@Wcg-wr?^-_HT!s%FD5kN}_{69^A^Bk#j^#0f|v zY~?cGVVuW?6KN1QhC-KIAZ{eVdudgh9la_Bz=8(kH$;omp+LORL%oVe_f`Vkni}CC zejp(LFvVsI+viZgQF!f5i)5Q{Fm4OyWMl|$$#-_yF7GI{0s^$i{Pv@DJ`!AUQKKb^ zuDy%128)*iJjqdg!log&6AR4J=jpnzm4s^leD`h!PZZ2sgL|91{hWTkYc|u4XJ@)X+Ue!ym8wy>;qD-0d`+{{Kyh^NFT>c_imuHo z5Ko<_bE%y7PmQLN_i`($$yak_ismxM;WltLJ{HbqVs%>A2&(SwB7iEYFn{xEZ8E5& zRah}PdQpgmqbnk*?`@XVQ9t8Kihi*|#1#}C=F|n7t-J@8%3oyF5K&qFFOkOQ9(xnL zW)$cto(t-)hl~B}s`u>o*sM(r5kzIRQF^V;=NSpjN^l;vH#t>^imW`lEEQNNFT3G+ zEV6>Z>#y)I)Jgamg-m%of5(+g-?NEn@z+bT>^QuA;NQe;N37(x;kc2R4n^Bm@OOOc zjJybu=&Vf&@zW~cHJK-z{TD|zbu`_&PQ{3w4>lBWiHpQhSW!(v0K;SW<#t&b2D$QdPC(B|-~>feR;iB>KcWHNCdn zie4^@gyOUC(;|QbQ)q(2qS1*tUjCkW&EVQ=zt;4XqM!6{k?+4*R^Fd84b)#H%j3be z)@AdrUo=(!&iuWMxBboES7(;+sxtNkYah_OiIW#li=1BWAZqq^a0BB)!E9C1FSQp_ z9#bs19~e~A7p&10E?D@|p^yE64ijZl?fe{4xhv%oXmW`h#{E6`hBA8Db6Ve@MoxZZ z8E9o2S?n!aOH_z2Pl(3$DQzF!3#Nqsjt__M6-@nkn*w8d|2+itUo;Bja&UP`M);Ea zq~rPs2aD|!Zwk*(l}qt#d(A9|fi2!J?0aQ-0G7SGjSL%p?G|V%g*%j75lLfc~@gUMtl1D}MlprO1brJawneIOBgfa0=n2f}oa#l+8) zAGaisoMsU$^mZFvHs+E>|AUF?C(8U`x0%p04S9G!wq0EMTQ}C@QUMd!gKIr`+}9@4 zZ@V1*{>Thm3jv`mdab86xc5FgHenXCyypU6+8itXB zfbK=7X_*)k#P)Um^aY$uQ)E0>{w-)y6Zho_SF2%jnSKY(dfx~3b4I-0Py4+wzhTd8 z^UQwO(rTTffi39nl4S#31S4ab3y)9B|IFD7AY>p#p(NKa^y3XK z!%V7)w82YQu_BR?azpZeSgDi7*kv}76Yd>WgY20}- z7h`+!D!CUT6)$+gf&&m>U^i=xA6U&2A6@IU3{iJb^-se z|E29XmtVg2hDan6%wbGKH$I~q{yFa+SwH|5QW6x!1QQhr7_? zOYtwubR9k?yT8KEb5R()x}GLAJw2r@m{{ z!t3GG0lU$a6b^bn^p3ae&wLF!T1}?!`a6%}t04CNwv~xyQ?}Xncd6e?ZMB53!^nMDJ`@j3yauNjp ziX|j?9s@XGdM0=V75X+Phk;GtWZlPzDk3%g`TVN>2Z7>fK7|wLYZ)z>;q=*fbIrSm z73%1E&91ecBH**gP_DTo^OcB)k_co2e*oC6#%z4QG?Zd-&&SIU@KGVq9!sKu-g=%} z^VEjcqz_j5i`4U>n;0Y^wWSFuB6%VJ_)ZOjS@x#t8NRPc^rco>#74~S$j~5h4&Z?= zRH3hi%%{o~BQ+v4>Q?wS@xGY=Z_H=>>>KV$wnnVQ_VV-M@P>ET-LT@FwT0Oou^>z! z9ap3^cE3&P$R-hZNvMJ1mi{&E*lC$%>1G%QPDaq@`;0U~0 zdTL&(OUrVgpK1FzzANNc))Mf%&AT=`3I=NUdOItsHk$te<)AU2IiIL9PW}Za=#@%C z5N!v{`0vSlY;we_1e%`q(ZoR>k;QYqHoSP<&tIjBD(E+9Yi#(|`z-h7<4Lci6h$8c zgK)kZQhBEs;5d(MYQcK$w#=NnD=4xoK1+PVFN{mD(HF^D`ir2zQ35#GNa4yO+~g>G zuBwWiK+8^v>7L#Hfm<(=-cS|`B0)<3(RH21;y+rDta@bhSg5@3pUB7b=V8!0dyR}k zH&HLtsA*o)h;l!PK|f#4`}VIlCgya1yPbW=ve%aM=EjjEoO-`1-b3u|(W$6^eUlvp zhu68mSjFr0kf9%!nRvbDd?tR_PZ{SD&pK{^JWE=t(csA#y3Bf7Q z=lxQH6apkBLS_jTe+PWuZqRE&JEC)<6z^_1WEqtvB7ZS>EMy8l_czqDaEg(%TVC2u zQ$mnDu{NWZEkUnOYiE*X`z^B{x`WUuwrsY}T{ECsj?vD3)&cM?O)d3l;CQoFxMppD z!w%d-Y~i_Zh7Er4hd4lN#0GK0!q@RBh|Q#AHlL?M4Dv2>Dg#`B=9mv`e+$oBTT;@} zuP<{z(Jd7Z5aj9Vwn+mgW7{+!KW}D-Y<w91a=(MDKf7-Ou7JzyaMn+AtPx}DGCYEU$Ba{qI>#9- zSC9oVGtKA17gU3WT#a6OuGt3D_x~9>i5QZ|L^>17;KgAb9+~BU;4)QAE(>=c<;IhC z&*S5APC2lE9?`=tVr~61ytH%#JszroJneq567JA>wIm7>7vxS$`I>p6lknsp-?ydE z$~BfR?Q>xyc2d{w*J7iS+3!WjPSfqo!$QCiOElG{`;t>>{@rX zsCRe#Gnqay_I~>Lmoz#S&JWvTA1Ca2sdoH|dJht)hVDfTEfGI#!-D%GH+^TT`4_=9h{6JsLq$ z*b@;6<+`M*LLmJ%@a{ULkuUpG_~?w_@LDks0g+dKVSyGK4$eUqd>t)bz87wQ?8Fb! z_+K9fYemFgN$FMb>lgT&;#Y0pVjmE{Us93hvs_@Owl9uhzxWr@|4ZL!B1ezIwpqSc zz&idJ08dG9#17_-cP1rB$7?oAl`RbvU{pgHLL3UFPHQmda^abv@j}9xRT}uV*@sr0 zB5a|$dKY-kX5UAGZunMe^tN^>u$d>a@jed!s?7O97X+7DNUM1S3gST97leoY+YEV2 zNq?=MXOdUc4WHqszW$|ud#lvnV6KKNo)4Lewenin78rW$yp?|^RD7Lz+h<{msXyyb zKjC0OephP}Asn@OwXGQj&QioAHCdRZ~ya1Qc0U32?i z1B>Ga^mM}@)*txK+H$&I38&fHtT+DN*W+VZocF=fQ~Fc*zRKkNl2snw*ILn^S7<)b zD5=l4(bM~|2Y}(9!k$;|a>4G|n~%1#EQj5CpFe}`TAqap%s)y_+%xA}a{&YO8r~NGy5rF*!*-n}J zyvm@6C@IpVXBL%T_q0*jY!wD((bRandzWC(0|8M)uwEMeN-ZeLS)>lCuy&^#b z6AkjxEIGPazi;{(iN$6%&_na3`f-BuF)s9t+(WnJGW1M7SH(_m_WeEXZw3E|1;T`KwQQYhGb%71X36s8s-CU8A_&-m3cJ0 zCHVaIrX>2^HigEQpXq!bQ}X&`pDkYZbZNFy8jd>S_z1Cjn*Q~?sIWHqB~J&VY|^ly zWFQbClH8K$e&PoxPR}y&(D!7V3)C>l_g%Mevw1-&5^3qwIs7Zy5#ecTG&rUHFT`wu zGcBwCEkYQ+^40cgy?n;_h68+HH9r#TKu=Y-d(Vv_zrw8i1Oz~U0~j&_P(*~TAOx^R zB@qEB(jJ1*iZJ=CD9UZ%_lxz8>51Wz&$37%weep4O)jrOkS@G!{b+fKbW+dt^5M1; zy-l}6xq9(qtjb3+q$l7s?)YcKeLg9=@6T!e-5+b#@jVr-I9%QS;i_*POLw;3Kab@^ zJP9LoP$0ng#_JzRl|RcrO^T?CKh^AbxduzMY9rka|Aorwf1f_1cevZizTHFUkQkr! zeVv(_AD!dn`?}(5KTNdNeJvGP0vY)5##&uM6>Z%0=vu9IKh|pkxB>E%-59}f1{i^F;%iqd~Tc6?l zPcr8FHghBODIGx?W{*i)Byl;#**YYXoJ9ZC{j?w*{C{Au&|Za&?spI1v+ViA#@#+u zSLOY+_1T=c6yVMiFZYbayUOTsk|y6BJ~I>oL>pGW+io38Z`$gC4Ys4lLN{Zq*dv{} z-6CGL-miMew(BTbIfLJCH_n|{7s*F$lN)+3BS>?uY<oPlyJ1zY!Q=4<*x*gn)%Q z6-&^LpS4iVp#k|`ius1s?QZ$yv&p@RB3_aMsUUkes0+Pn&F0YPP&rIGl<#}`d}QBt ze=h;U>?z6D>Ua4EVZi2kEV_=8@i!*m7$cX&%*(YXpm!D)9ayw?ZzecgMP||u=hLLe=F5w3)kX#wLSt6J3O#BHf7?ujinv!hrMm4Z%4>q z4&U$6?=*O8I9<3V!9(FqjhK8ED;u*!j|+XG3eQSOqW!@ssDu~A)Q++a2L zyWAOSS)pSU_DrJ`RbP`ziYfh6#tNTl^YMi2tkmG#w>H6hicx_;BWNLem`*)<=%nl` z>61ShW8X%bcN@T;kkRpwd!b!rX)88;t3RbKz2T5VNEpfnIR62c0|RAImHCgQQmS>a zC4VZ*=$k&bZiWSWHqXaOb+(|39vfA9Brg!I*&~x3@MP{o0?zNdBRs^hCE2Bu6)ZU# z4;oD>Z10VbV5U}vTU{*}*S3gMQ5F)Vg%(i2jHM4;@7<>_KFR9((P2inob<*f6Cnct zH1gAza}M|CCnTz;nM%z(zUSQM{JP&C*lK60qd6CiPe6H0vH#zdt*j~` z>TUSH!}ve-?)AK;#-^yMz6N->^^PK}&pyB59&caPKoIgjtA6Om>-g$H8`+Vc@l(A0 z3Aye1tV}<}X8;g+n%;?Jnjnu~VW(WVHK5k<>6c1vIb6#6I(|fT<>G2w@srdMG?Amx ztBd0%%b5RDQ_Ekd7A&Iqh{3g0tISaV{lasW#OR1VT%nA1^|=nsQh{lnVgR`@BjpLr z$zaEu(?Kza7=TEvf`u2Tb_trPQ22rYg7=FsI3H?5NA`+G#4ZR0ZlP^P-^{FzTfZa> z4+O=fB?-ityJZ7I=Z$>XO`t%KSg-QzTYkd0@Rp9!N(>~-UgIdI2Z{NK>g$LXxqO;q z2DOitWx0d$bj)i$4v>dbB!KGQiRBFk_x8G7#iH-5F8}9dxmF&==-qtg;urq!_IW;M z$Q^$*nVl?K{}zPkLUOvJ8?h>W39U-k>qli5`jc@!V59~Ylg-(=2o_8Lcd=RQLM&1! z0|aw%zp?vkxI22L#KC>vf9)J`552kX8}MYiXrK}NncYlBj!@2&x=`oL@V|p!>&nLQ zS3oXy1)C2ntV3YsgZE7(kRj@-x;|NM%HOn)NJJiz^KaP#%UHI$9^^Ix8*Y&p(g#a) znaVDL1cR*6nyFZI%~nkfQ4O0>itAd%)a-Km{EyI1q0;S-0mM4wF7}ha#XqNiNA9~U z^4wa_B2ufMXF~m=WSvbZ72BpU2{UHw*E#0Mu3-KEM4P@A^4f zx{jq4V#SO3sb99-b22gzSbs}>%{z<-cZ>f!Tlc_1JsPO*Xq>XB&%Rz>S~Qv}V8>ll=+N zD0;u)&!30W_R|79)+QCRFdZ3y{v7|(SKj~0JcIi}4u}$=fI|o8VlZ4AqCk8|0gQes zw~c?{er#Iwq>jRn0`dYtq0kfhohGIPn)95!?SHZ{f^nsiEF3XB(f+1a{2D8tpq>V9 zc@*hm?v`uZ-Clx@?_Y}8slV0h#aU}-tpaa({di_vF2;TX@-4U6MZ7gV11Zn(8gc)< z$MAlq*XQ*}5EK@$v`ZXvoOlJdO1Xn5wF%h>X*9F;LaVxy0SMs&eU7$*ZkRXT=#6 ziRjX&$!LoaSkJMw(|(!dCl$>&mY#z7d>3%466+u8+fgFw9j*uWvXVXSwyiC+|4_-KY6BjpR`jj}>g9u8%qV zz86XVJ{F&asjG;Jrv0o#ooAQZ(TB-DlC$SkO%7x{b^Xzxjb4|Tb*C=fuS zyBm>oc>zSE?6&8)RdHO)QQMyF!2F-`nikJRuH5%+-;IQ9{Xq^zY_`2>X^T2lleKF;yf!<+UNCM$DK_p z=)bui6xa5;NVu3J;Ro5yH%s_l93I<-r?y3Y)k-n^e=E8d1!`J`g6Az`>AmN!-dkDS z_2z~Gqwe@#ZQHX1V9ARA5H1635G2;^nZ};KFg$FRgx&9$mryQo>1gm0|XI?HGQA4`5BqVdusKqh>9##5fOfa zW5i0M6-ci7ntKZ}QAPPSRaJcA6jgpFxW*lC2AJ4tqARYN&LYHpz1_Q69V>{4f9<|q zqwcAF1@vBT8o6w5boi7sXGi;bo`)QVKbK_@S60>}V?V0T$nfZ7kD0SImp+%tQ0I6K z+cm%b?DmN;Aa%U6ZfN<^;zVs5FtH>N`Nz$0>Qc>L{9_6zk9SB_eXi{foxE2AIC#T3P-bK&gZ$WKAmU^UZsPubOO_ABY0@X}Z1x>D{k#tAS5RFilS+M4QBPUyd7qK` zoEy}Mm*te9p&&UB{Cv^`eLg(tkk?zQ9dWMr66B60e&RHdcY5m(Fl~H2wgG9kd)kmq zL*j>UlFSOj!Yd__i(PQ%`# z!!w8?Z{w0JX90Oq7`#2*11>TEb-wq!Xnm49KCfk(@YXOCk*s!}%bmK;0q@Y+S?*Xy z{$}Il=F>O}reqA=9ldS_9>XEGko=>zWIkeFjl%Z7YyYu{m-F`jDY=vJ|01P7X73-r zf8U%OC(Fx#Y#}aM=BzEgPE5qKfCR7<~;wqE>=TY}Tyjumu{4%>eY($lCiG!rKSI*hu)*vFFr%!9)CrX$R zGrr+IKTrMm{IBNJ3<{&YWT$BEu_s2&mv8U%Om?YJ1@zBd!|SkSk4M(RUv*>Q;M`Ml`h|4Uh!?3m@CM)qi-y^ct(dqlo*~HLx?H<;bcF|t8%6i{7{`{vG zI}wh_3K>i6e*y*M#d3^~dollb-y41(I%&F#oZ_@2#aCWY{H4#|M-E_kq zwv|2_RUJ!D#!aL=7xGj5KJ%=>)h4K$Z4=5eyIL@H&y&xpW*OMBR21;&R6!V#8rEx4 zmeqjvt$IpUYP3`Q5^nHLojKxumxHm7=po`#lHyTW7XgP zzl%m?Spy*5_}eBI2+Yd-)(bQ38L1<}RsaYd=MIav!$M?h4RIl6$WO4*k&irWnj4(5UKm z9N%vk|AGMxG_XPQw&u#jn|4@?L}X5NqMrMv!O_2-%+O7`Q-NxIb*7~~cC|9T=LQ8u zn+=C1Ma?b)FM;aRIsDWkZAaws(`A_eZInqN$WS5AuV7US*SYw>JoAD&9WtHE7by5g^4U!z4Aw%A9*GWiJMunzp%t6^XD*kN zwyWgczx?+mbG~&k>AfB>@46fl2Zu`qSjeEW*rgL!@%=a3_W9`Uzq|jrWQs82KaS&% zWg;;`Dx#{aSgcdqQlHms+TY+VDvEfw^)mavXa8L!&?x>zq)uJ+xT6*;BdO^yTv_=2 z);~KUq)Tv2ocvMx)GA`rd2CTd5ksn{FCScl`>KlKzy7i$+RVvNky21CBTYWmNYj zx3G@uzWkag0s|bpZmZY*sX`rRiQ1`E@jrTE01AkNFBl0JU?z`!f*VW>go2VHK=4q$ zUC{14?fnm}(+qgaCEZynMRzu&@^)G7UhO@;|4xmU{?6YX&(Qa@^BfKbBa6AvZ%{Z4 z`cBXEFdYlN6LiV4@e^>I4d&zGZ0Gl0j{IFaIEM?3k2jZy!G`X&ajV&My#}4h5@l(y z_i_K}a>aUmn|W{c{^605KY`+T&G$alVyUqHh^8a0miphSBk8}dCUhZLd4wrfPmAjX z$;Y$&V_1iNgA<#wlfD`J#hU!)cRwcFr(tBsG-x-EXtD0uC$un~JCf$r_T*T0=~%!o zJiJ0?7e_GtpRztHe1buXaXon)h;7&j1Z6dZIJz=7??c`GT@+G^ak!W5P}OhyW&tV* zgOP(~`<88<&&oRGv%|UomEiA9xO@*zBCI(#s0X+bcf8|NVlZJ{<}%Ujl}N znK>-=AFcDScYS`R;(n*~=ls99?M+>m(a@uD0&24fNR89e!@pj7iUUxJ18y$mN!WiKnzx2}AV4L>hq?U7FfwhLz zX)<-@dLHBjbDYGKSG?Kx`)=u;ffl<2Hin`o5Q5@ITvLi6Ks;gvorWJ_^&=0YZ5zks zW-MpS_;s{M{T5k9|Fb@R`l;`%K53B`$Qoo1PuZJ% z+v<=l-w12wX}3^L;J+sbLP95gfrEfMUKGpoaSOp+1?gvUq&+Y5>t)(~UdM9hUl}#0 z`lU?dc!c1Wt@0^-{4;W_|L2Idi;6$Dzib>f%LhBP?vuUU`dhvN%mg*x@Q+}?;Stl2 zvGEO@`%x1*Q|!Md8D(E>{J$G7`?-#X@4j|eh^lX`iath#5M$#1&x57PtWg$4SL7x5 zjeJw50(;ELciQm$ix|%+>>@*q?M0^zf2LbFEM3<$Z zjBqiBB{58we6ZhkKQcnjJaKl-KZLK&sw<5{?~j05FtUJ76snX>KPT%mvQbx^{b{u+ zMfS~Lxaw}e!N^2bln3SeOOJ6%&9?VnBA7i5FJ|a*72rH42k_d9>{_Ib?R%!mEz?DV z076`5Vl|TJqL1?RT3sh=!PED<@66*@4NAZI*5E<;fT&ykdrUk&ALM?Qt<;}Qk@s)z z`cL_`F9JVM!mFJ-dnrK^03sqGzt)hmWCN1<3C7oBuw53EV?Ut&iwN(g!`brJx=nBh zOpjTsF5Sg1gRASmtM&DNf!@919#txRCr8+RenI5jM4tWVRl_v?MLtu!`4_rPM>ME? zCzmPY)7mq3`_$2!b4l`CdD?uWJ(eu_$?~^8V+ZPg=l)nczlUIbH|Ad5o90c&(Z9{3 z`Z4_Mo0pZpy$T%7pPz~5pQ~rqZfxOcr!7C!pKQQxp~oKW3BzH{ax~mCwCi=TCu04J4uz9}yP>{eSZ=#Mk8zh;haK-()uGJi z8?9WouNnJ<-ls#*({__XJsTT~hxZqwPOuS;h! z$ph|_W$xZfCv(T}c)1&-f{+)$V0Y=t>nu7=lJ1^2Pr}6QdO95Ta8R8Z2D8jfwA*>; za^8V86*&pNX8k)P<-1JjyGnM+I!-kXB0HPij-Wkm?)48=h8S=Kd2HoUh6`dZguA1drdjf#E*0b^% z8pWGo%PR@4nK;za^asyFYV3_eakJ(cr>f?7oFA!toVg zSy7V?V&dCIk9)OvCayCwcWIEAGUC&kwV_r%kog;vFWN;5&p3Ue>~E zv%yago%$~J>fL;fa&$?|-(CaS>t}=4x!&)e zY_<708qDdq^y$-$(%jfx_34QUYa|r zv4YNW8vT9g(mapZXjVpr#gu7UXIvy_3jxuCECD&(ohk3=ldk(8+%~x}`|6VTdPWP9o+9w$f z6EgC2AcLVfL5dJ$AOQy{pf1B$%V+Fd`q0<2S1WeEzIMyQywLP;dwEv*I41ZPjh%}> z`n$XTUWe6``ss7by3Q~CxzRaB*8P=c47}}@eNH3?^=;t(=~m9vX=nPGi(4@)y%eln1Yu~-(c^*WMaWx%`+Gxn7D-E38|FNLs&^``V z`Ih`N%j6M+gK7D?mo%LYtvxg>C6-*9fP+aw7QVV?hvr5!)G>=HjoHsiUc=CH^RzRI zTN-xdflubKiOF;RWb5mkQCq>Op;#kxtT`XWwu!Yw9fqGRbIKpHEV&GS*`xnjDCbM~ ze*gZlS|p7?<0>!|xVY)-YCIL%TpT@Tya3X0uzujrODEc%PA#{LrK2@avzOyuQo|{r z&}d5K+_pFOcYiqYB1s_Clflj#ic;US~^Y|5F8H zo1@UhKYKgcuzk&!>@}U;5%BQ#U&V~`rVGwsrkcHuPRT-xiFfOtc@It3+9PsGM?&JI zt-qyUQwvEmO6JA<@8VPi>^nP)4tNW#CJze-d%}a}rQ7njClv9iif2n!lBWMeDNFYC zW)HXd;v}>}&+*6K(Qe(30-drXD^(KC85NnYlv3We)J_&LVf&YBo$CL;&2A>|N(@px z>oV4PYmwr^x@^r@=?O_1TfL*;3lWL|$s0hgBf7h}xASs$SIxcqd21Qj*I|qOLfzY$ zZ^bx_Xdu~C2G@Ty2%hdty$yWq_g_4K4_seY2FwJY>Vw)u%0|VvO1XWxHmvKl2G7#O z&nFVsd8cb=HWC{`vDeW_PR2alTui})r9hIjLz~3c+!*!9?g_968^VMrJByY1H@LGr z+Im zCq-aWRUVa$liZ58WS^Audg!8Cj_0n8RhPxX^Q-Ct&s&~@ruIFAk+BNV6VkonY5PH> zjXUg}&(BW&e7Fy9Ti=drcut6c;P5~1)?V98&prHRey?{Q%3UQ)JMjPc{dz6kwC4GA z`#YYe{Z#Ho0qdYTz^~ok>|l_)tKCl0*Qu%XYFE13)tNwMf;hN0qe}{kO(1P}lP?>GsK}QMCi71KTaBx0N>C?rCo% zAz^h+f}UT!Rt)#6Df01<=^37lJA{X*j18V0rCyHq!JxKQ*=kp( z>(<4~)TpD==t10_7m@`xyB%{ExwyZDd`q|Wxk%q9xIcqlnS9G1rAptcbjhx3;^r89 zY2YVwC%wsCOZca^w~!Ajt@*^BnuOQ|D&A0zV9@w;0~*JJP0z`CS+ay!Iqw`CQM*LzoU zjai}$ALQCJAB{v#z}JE8!j)78y6uJTGFrETxpfk8YCJRw9#4YbCY^nL_X%D#@Az29 z1HbZzR}!tgk6L<_QRM2J&EyV1`Gjk;Jgx%F5&J+-Ene+x*S0+Y>T`pMCm@VFz4ad* zCsW54b4x9k4QR1hVTegCN1m}BI3?RiuOCW~c6;s_J&1Czp^6W=n%Q-7CosX&%qCSu!#|3Dml}s+g>?8a@ll}li*CPde_&D!s>(>8H0=YEOQ4(- zu1?B{dG&Bx%-yuuoy-sopn<{B6S{{82!?2#reIAl@zd=eps09WCdh6dnw^gZ{110e z9-GuWvIg;sC%N%97)E&psKxpTMs!JdKVytU*S{6VigVu6Bu{DUQvy5k75|XIfxLF6 znv?`_+F^OoAfF8KR@2G#xX}+OF!<>X*r*ak%T}Bxf~O^$0<5tlk4XeAnz3?9kCRKm z+1+K65Ku;HwBuR|^KY1Cb7tE!4h7Y~wHGFdhi6{YJIu{?2PK{%IVs&C!FCvZ>o(c0 z#6^ONqPp!CGkIw6ZB!LO#|Gfg%ayDa@^D~1sLgB?Q9)6WQHz@vh^nd$N~p1Av=k9y zDk3PcMIqO+@sRtbaM1M(`qY8Tc3Hc8CK+zG_XKw(JN#Y_-Z7poIyXDn0T(YaZeP-r?nT4an^kt=Th!EJh8`h7`+WM<79b5 zTK65jKC49of74U7PRR|vJvSe7W?bvPPaK^Z9Ss>6;$)(=(7Itq{!7hPQ ze$*G1hZ%(Dpf2GyUA}>28g}Xfa&pKI&aL|>r2%$mGm#cV8-~cf(bSLEx#dSIxw zshSF7Q{Z6DGG~6x2`6%p;f&yOFA)#7=`B}TqL$OVw~vingL<7WL$isyPEs4R;43EU zy}dR%d;&L}dpvCP8AG*0qS~h6I^OQ|Xl*AaoBVhKY9vusPT{XLmZeSFSc;u?dUPpIL_4(Vkj!U4aO9xtW^;dRaHo;#1U_2j>U%gISIO9q(KrB zD1c}jqCh2^#b8?&Cn#VX9(7Gz2+}p6F1VL(gwVKJ107mUrM zL`R9svzYf-*1>vi9Xed7qHd5q(U4PIhJ=^-QFbO^6v*tgJ@{S2cpX-vv%1Hc4)6B;QV4;_)w7cIj!4O12V8$F*mZ`kmUgvROaeB+Hsm^5A zL{SA4IDIbz92A_i@KxWuBs@n?*WqQ+b{H?-AxE%fMNsRVb=#z^Y8vU9WQ9c)5l2^~ zaW^T#Ox}x!j6mk0$7JN8l1{CLZ)1-YiQ?Vr6G}u@6RLJlFe;(U>MSse2ZLngbsQ{o ztU6>nmSl%yhN>besAy+G&Y|p%x`#;c6MBKi+Pd#6ZuL7>6TsitZ#mtmfG)ODU860q z-bUcD71-BCeW$lNc5$g|XOzGdgM*;?>$OFUl_q@M9%d2A!O+rnMV?L~>;v`!_*e6DPku;vgPvztUpn+uhcdgAC%L>AUxb8!{u{7gEAl^OaZl z4J0nRA08zyk94_1ai>jj;_48`l8eW~WacDd8LO0pydiFKlq+k~mQM{1Gn?IXRPQ#f zsvSoj!?t?#4qFbn4bt}4RTMg;;-`S*f!44(*SOf%!thhY_=}Qt`PsMy%vK^V3A}q^ZD_L`tH)0Pf#EY*f!wphcZsz244h}2pFPpvQ+1t( z3xjv>2Z2pxNyB2px7M;A6DI9DMejIRI!;aU9u3fkdWSum-MWgecAcVd-y6)c!{%EW}e zS4-ir=-6te(7i6+6h%B+VyNWREiJZ|6h>Mst!=h$SXqjy2#u*|rL^qyV&LQMb~m{O z>%F5huZKg7nIl?jDkycWRLQJ0(xAIr`YDnIeXh;}t6|U8D2SkQk)f zyhg4_ixi59HW6V}1r=g5e~S*yn+SL5x_KQJI}=!B-=~7k-G>?K9Gv<4+#81^?s3!L zI`w$Gx_Fe;PC9hml~tX4!AZPBY3teB@UB-E6705h%s8&?oL!0<;-V`Bkxf=|cwPn} zw#~xrT}Yk+9P~I(T7YJeRS{%W1rZfsprRtkEIN(#hMpZfE?p-=?gxm;tifb*va#qI zuKLtP>24j;@~-XMLrQBkTA(yXG}yMW-bOIiE+7eq4CL_Lfx5Woo#NrOOCch?VA`+W}#7Y9s(J5^qAgP6PC?J2WP#Zs_MKqZ4E3Ov&K3sux>gV zJGOTsaoMOn!!~$#VKaedqR1)GG8Kf212%CP)#YRq z4vD)~R649!VF71Al3i{lCcCoivK@mBDGgmX$4AAXHCZxAGz=wVi&#p)Hj<&Lg+MZS zY>?2v$p~ifkebYxNvAfD!b~9|gcKsl0}QDa1X2OXNhM^`l3@VC5IU5S6@-T>*#KEI zi6qjH%r6={iJ{ph?*;4`UYZF~Q;3B7CLY1*(i?0<1YoMMVbL(#>FkTH z@SSww^p~UOQ(b_uiojBF)0EEj=vZ)GsSbfU&RsYT_jS=?PHnSoB8wI%h@z+>h@vAD zQBehAs}vZBiYO|@1Qk^lEJaa>EK(>a2#Ttq-lq)g?43iqUb4=|sh-r+>l)4PYe;r)d(WozoQ`LCgP5FjJVG5>P0|M6b7tWu zXWZ2e7Y6m6f04nBO@0PiUf+#y$aW7vm4_|pbWXCVp1Jpm!>6fp%QWJ7}~K+_Z&ptO{*+`4SpHjEIiQdtnSW0yP!BV?eF9NTM< z=Ws^{QD3`L4h`)aRz_ySx;H6MCmTW!C}@g(8WeFBFKzbDcSe*-=>y!4-bZd9zei z7%C$b5mi{CiYhD?DG*d+1&b9K;uCnArfv}KH*}qv8j8eO1x6yOqZllmK6r$~6?k@v zL#|=Pcg`G=a**lX^@e%aECwWA`41ee}`wiPCVYst2 zIwqpdVsh7Bv*J7#5RL$@DzGe*qprlal-g71a)loIxy*WGj9s@Pf zq1iLHv<+ntSj0sX6^jKYX3b4XaNN-r3{_Y&fko6s>si_GsAyzWK@|lARbq&-Q3fiC zq9Tg1MT#QG#08s`9Yh`70P2~Xh>D`S)XRyUIDI#Jj=`Nk_i3q>4v(m_tJS6Ltjz^E z-4*Oji`SRA8`1D-t5_bcacoJB!+4bWdb-6q)PL?zSvcSHy{zdX(u9H4xpfMMa9B z#Zg5O7@)yX5-6+W87R()g;76S(ezdUXuSa@b&!WXtId6@6&5*O6 zYTlhU$X>IFj|H83*FEddx=`XLf}8g{Nw$cGR-LOjy?r}W4;9niw^mS6C>*}}!+WWA zd+QGkI$(AlyvkPi9=rhX>bj-BJb!HMpf~l^>+PUL`!)2GRLjjI1J7*fU z+T9!QPEi)fTP*fz8^NVg=(;7DDK-<(@%OAX*t4@kgWL321DmGnCfg1Qb&my;b}JA` zx=Qw42N%9F*=K3cU4A{9>CHq}k+pnVsO^kAB-?ybIen!!Zm(5mc87e(r8=nIfV%jF(jBUeeyJrQP$A`w8q5*_8UxkJ4}4DA>!D5xl?tS4e8YvQP6 z$gxpbGU+IGJ#`71D2g#bMT&w9RfxqzL{$-rFjKH*%e~}K>KVyJoV(8HGMr9?&l?Ew z?9rcpvC(HWUBfn*O=c(u9Te$Pt$K9tT^*f;7z$2_;JZBqn(PgyT_&KCZ`saC(kD>K z*CCDl(wyg`c+X4YJTol2?p-HNCw0`*t9wN4knghQcR6l_WKcTvH>h=L%~ouo-*>he zh@dEns2#%%gofn`o+9!vanlV=H&eFDliptMv$0LiwTDKBIfqxd?rilY@2Rw%4hQ4thkvI?3NcVrVZvn@6i^r|1VI%z ztnHA^Zj&8-H9E|W`$qR1y-IGGxI?`_*X=1MLC>)2UUIW=$aKlPK*C-w^8q}2+OW%` z=&&9&?wa${eus16S=2jh@L4%%9VT8Q9E9h*4rSgaHGpnYL*tn^EDkbMIB6<$nzy88 z*54NsN+?AEL=aJ8imITBA__rbz!;(mk%Ee#D5MosSg}DE3j|`t6j6%77%IVHio`_} z5J6(BRUnL0xOj(QxWw^}(Eh4O;m)2&&f7nb?N_v4K2UC`=(-NVQ_z=oC6z z(y)6QgMr3Tph#g55Du6QDUM=|0ul|j9o8>%-fpl5Q1&{PnD=|5kB&lA-cf0~P74lK zBU1$I5_D<3K=0l z%(o8C`-OwVv!mcsr+KN<_Y|G;4y&NDRe;4nf)mi_qYKECm8ZbIBhQH&Lug(bRSAo_HZod{R0j0XT;;v?=R? z%HN2+oEz$?uP!<1OAOC|B{Imv*BYII`i*addY!CnTnlLE7$7suK!S2OAUKUcp;1Dm z7#Rv@DA5KgRnW$gNk&2~VvG~2lmUvg8gn5QJv(fKf20TahBSCQD4@Q;$yuyN0RaEFcbe{EFqi4M&~o%7gXPn6ysk zC8M!g`t0XiYFVgVV`rP_djE;i^xn`AllsR!J8<&vMj&u_ZS3uAR`A-xhZODYFj51e z1QFSKxmLJaF!D6j;~D{o|yR4cM?$z}aUm-G>1N{DxWu zIXIk!S1t$7gPmeQ>#k9U3y;5DXv^N;-TUNyAAgbPlkmshDp?`>8SC7e=!QRl#g`hs z0sta&iUy|CP)vw`ux?%hMWtvMkC|vJShgU0gQEvS>HIm-N75k6O91O!qTvW6z}55& z!l9Gr2h7i1l%&&oZuqv!ARq!Y(Pm`?IsNQlAoV^H<{3-4r|V?Q_be0visHq zw22Uc+!>+QRN?^Qsi@^eqkN&<1CJYDp?vV!!$%7Nhi2=1dy{sr`t5SLA4eY4t%yw9 z;*73U{OvGfIX&_$q9ey1MXLBh_HT}s7rX^ym_gs0f0df$;A})jo{i&R99gey=rZVr|0>vHa3@rK7?@=`}-4>3{bq^I$s?rB!O5U68&6@HqE}%%QVW2 zV*>)5VJe%!u{h&?;fdvTTcQ(53tMh9%pBs^u3$I>)LJ{#-C5YcE9>(Seui|w8EcTujhr7nNz8lYhr7?&=0CfG9~Kg&6j zd@S#P81K6sfT3ce)O`u;WopT)gkM^9!-mZ%+a+gI2B;;1W-~m5b#TClh=U;^Mmh%m z0s1WwwLPPZ+|YQ0nFPA6Lj4tHIxus31~CW1V4lcqT57J@5%ZT%onpgJlZ^}(ZH)p1 zDytGSslvg;rGi~p<_j>8p_b`Rg0>`BKq7|tW5?tscGq~YH|7!6>C+rO^jTIH#f>Hu z>8SQj5cD4WwAq{wZDT4fxziIkgmhi-y-t^*72V^)^iIEtZG0XNoNb+yH$m-%8h%)* z5JdP450^rIqB^161O?=$0fNXqs7UPqV2(o!5JnITX5oJOIr;i|b7)d5sWJ6})$Yuq zz@xF_uQJ3D*50EuENS>h-4MU{jr6QU#TtkJ zVn>X&usyZ)p2oYpyG)lp=LjB89&cyV1uIEH@&MQ83L1QBz!A^{pKu}|Tp{pGwDkZ0 z1XiF5f#xI-AAzDKMG1wfViE`}RE7*P!MP0P!Gh(Dap^gLVz#vj(=kyEc<-Z3+6~%c zeP3tG4&T?a>#XnN+uPsR_ZDh3@i%5}&tNi%91ty{^-NMkJZ92q*(fU^LqR!fL^A+E zn5;F81V#ciVxEiQ^&{^v>tjzd zZt*!o^@`U^Bq&D1Rm^zviXj_KGId@6btY=HWMQ4QS4) zi`rVuEjGdqAW?-GFefcx(j}+M&C6x<)hTu3o@5#YF~I~7LyrJSK(@ce6L*K%Z|=XZ zr<>KwiLfQgWTqf$LUG4t&=EF$;_m<~u6nPEae6C#m~H*_rWu|S-Djw^W9c*h`F|%8 z|3lY*ml7^qUY(`Tq}Kp3f)$IP_`K)=p=l%`J717NIhVA-UUu@^xnRtSVqlg&(egmw*2nFch}ylgY5sNJ~G|Qp3AJH zrw#>`oiM$FNbC0Hj8w~WxhO@mR%b2vIaYltb(!`4E;B~vW(|k)J|54_5Q?|8M|#`f zBUF2edqmD&OSU-f%P+?8h42k-NGO}RH7g+Hf$3@r;@W_ML``Ltw%iXkT>94lk1tpa zP44sot;CXKDl`hf(|C|Cz!41 zIuf-5;Z1Oqx2S%cFlc|n_lINX&@?a=+|VeDpK?On7os>O;S^eW-yvJssFjUB*og(S zb_33+B}IazZQBzg0rZyl@-o_Wso7`(yax!cE;Yi%6HHl~okrKS<8RsHX0-r(6Tj}8 z*Z5A^@ru~P4}(LNEVrsD*zVX>a9J#4#s*6B9T=6uBOV&ECu;qL5&S4P=z=pntI{z6 z2X_|vdV|o$d%RLcm|E$HV~tIBNrQm{wFrU**Y6|L`V_28oyl@qC&a&$JHgdH}=#5f6{?C&>*JxpAJl^t=|j2Tc!35p%-0 zZNT)C7d`Abdg_XHL`wE z>#k!|NaV(7Lw0df@i(9}PHYTCXQ;^#TDCkucFkMD72qUm_>+ebmIt=y!8K5Q3%KXf z%t*jDcb)kUqOyqnE}$j=6hI=lcns@0Kmrqzoi!#~XkjZC@nfm;m!lJ2D)>(F=VjIO z^$D;fpOb*gHzAgqEJ4?SC=RhbqV~*y5p=DX1oL3U&hG6at(PYFH0VlGG*H}$$i5eV zBeGPWqzg7!Ug(#0RObmH8>V((uqAS)=#dLIg;@`OY6}^saKE5qjp}etg@Hig6*cuXY-ls{YCda41~7TA51c7rNYq96*0yZ z$o#1!ksc4Z>bh$+HxpVmCcWyUFsVn0pCO4zI78k?IMG;j9_H4rUtr7S;#qgP&#_Y5 zXCXK-=4I+Lcym#4HXbsFYs^4|AQERk5o-hsZ<+iGs5rypN8e)83~?(``hac8fbo0+ z@a|tc$mNB4e( zsQ9MUW%m9=ScJUKhETuAt40{?^gacAEL?;AEs7T02Y-ax5&+S zm*w3&dyhP^M(%3#!x}aIMryw_q)Ml0Q*O&lwX1aOE%7jF!9fF%VFA7{fJOtX%<%e_ zK=?Zo_V|y%KUCd4363F|n&w%0FX}rjERNs3VlLw5MjoMttv2y@nr(n=Z@nW3BS4@i zn{4JuN2#G6xN{4gBBsDsXd%7K_ZQrr^*gN7wd1C=+$7odi}p8?bCI})2jk!MoAW9 z{VLRKgi+|p_dLPyQh$17B*!q(ZRA9;FtI^g3Y12DFEtb-X30>=`>EUdkp}Sg0iXZE zA;1Byz`)i7reX$K)Fb2f=i*XUK0$g3hu|x(tmx2gL4g%5faIW&7A@?LvG*7XZYuAWPDu6Ts@}UFtf)jN1B`|MT@C<-MPop+^`i0Xv1Q7u< zen$x_1Ox@x5?f`*4~Hzd)EZQBrP zY|apd^Bl!)JM^^Z3xrXkNd3U1#ft$4Y9l6!^$Dq4I1wZD;fmW<$*L?Hi#_Zl1GbJ4 zSypUHX9dcwkpI7-cM30~NHH1a{jh{9H{QA00tHM(HHb95Wy9C zpdnN37*}o>h`11o5N_x}uV3j|^?FNfIy42m;IFF!L%%1KG!2Y`E9;%Dy#i7UJK;&RMW)sxEuhi-D%|B6NLE_L!QLDvj>WUsWq@8BW z@s$Ua%;%WQi6VLhhU{?ykmiMjRhDo!A zh6eex*ypigz?0`%;l0-l&;s?jkyOX(CX*Mv@H^owZMj{|!SEp-psh4@m!l4eAp=Fd zgy(A>#J%Y{|nc4mw3ZtEn$p~H1O?3?O2RP$#_@lUrwp7kj3lW(p-{=2FQRv zkt``Oq=A~w4ZDJY?f^~E|yq}KF+97rWge0GTF>MRnU zB<6*b@P1J;$a;1y0#Dk(cOg%X!39))uo+nNOeI}4Aqe;kQCu*+w>y^Rd7={#I+vs+ zNqld4?a+pjX?=-uOuCY%70n6kF_}G~A;fc_kJ3pSx=(VTl!SL=eVg(VB}JBlD)et7 zr|;el_(HJvWw;qT`|0>qOTAu|6kcZ4iBOoRZBM^cW_E?DtmaeRZRR2IZCF#_;`a}G zi|k(Dc7Jz{Z*;-ei5SwWkE`y{->}xjmd_$7a{s^b38CDc`65gW+_(975Td=`%H2|} zzjlYCt?%{D)JWfq+qXHjmb;_D^fi5_oH(_8BgQ3SjPC1ntycTSx2Q9qfZf&0oLaYT z_TJrlFy>73J zc3zH}3-X)-T_hdvZB5uu(}h+&!%K5G$9Q+d)Pjo~H)5)$$u=nad!ZI?GG z`y_cUNf)i64R^h7awJg_+6?AyaXaCl{o6Hx{##GgxWkbmfeS)@ zd=ukUfHt^4Yv5GGu@}XVvwU+(B#=Qp4qeR2rTF;M?zsy_8f@zqzIMEe+VmYtmB2^B z>V6o?zfLPJfnrdr+o|2%t}VbBL_PR3Jf%gkqe?QhH#Ypozo3&ht%}wjXcn@}L)Ih@ z%Hb6Jy_)o_>u`4d3T9v=+9{a^%*lybGo0gEhJx1qY(fz%BZ z_#Ky%(74Q)UgZwZdk}m89xdu#0$z%8P$!oGUS#&J=jG}(*Eqk^Ppp)Ols@ycu!FLd zFjMTUSwZ@?Evcf(=c~sZ0TdrH!+6ZSCZ#4E-@88O;VM)1lMWxNJuRpA!?jL2=XWE<3$~Y|*6kGEH-@Lv5w_q0g%|a?N z1Gr;kO2xN(aMLC`=JEDtSKEUk#NON9Ov;tLe-+Iv!IZwKOEwQpyZcmJd3FNmvghBo zx$Ip}r-}dMAzYs5SP#c6ufww)!^y`RkI&50qf_IRJ%b3J6DL2D zCmLLcBSd>=(NU+RVfe~TkqJz(*at~$OzO*F>+P3 zUfy=7(4~^asRCARXKP;b(Q1~40uJgF-ki44orE!Dk`y4V&7w<>DVMfoQNJ>8gKO=}aY5%FW{}1QIZ=!cgsH-I)j|T3@$~*DwVu z^wUT=Z;2YNnI$f8?~*m}kZ)>@xlwpmb-a!!2el|Y1#-iY=uZ6vQ&8GG5}_yxphGl0 z)}N&~Lb-1*)9f~3K!wF{XR#7M2bVtY)1*V2=>l5aIkTa`_x}fvwE*|;WPN8&HnCI0 zR+9tY*(cC7bz7m!seHre)W^L%MF1!l0jChw3EPIY1(mVd21vk_oVjh^TDQH-w`qNT z+3dHV%G)Ymt#<~9rBb`*V{|Bmm;4R(3k4_5vz(Yrr(cxn9suv$S8WrH@0*u&{O3=% z;y}buHiDGJEMgH=4KBxbN1~Ya1QdE`_t7}@e+JSia|{|dqfwW7BXB^}9z5n@IzjO- zFlZH%&_WJd?fH#QtyIkq1Bw@z#QYgiH?8ng9*I^)qG^*5chDA6U3C7dJuZFEh@#@l z74w-B@b%L@Lx)_Z5pRZmwwR+Sc+^qmASGEn)`a)s2@nrtu&}RpOGQB{Jz-?H(wl;z z`EXJCkx?Wyw|6V~lZbpS?l~WOeW^DH65nuPf?Ywd&vHtIzdHEe7O}scc@n8%w*a1(;SwVU|x~*+#i?FDRn4$~_Ee)iL_6* zm460SFIer2?)WL_it49oJ_f5mz75r5u%1G?Y_}upA_ck!_T8t-4NcHCA+#W_Fwque z;AU%GPmaj&ceK>R=%267aUmyXoVr-7QXqgU2qk3ZkpOfkCd%$Bb#0QO{br|MTh4(~ zgOj`4b`3XP8DOpiApJ{9vt{Tp_3X=l_I(>GxW>9Dav@y2GC)J1@ZbXEY0o%zL<7mZ zA$=E|M~fLY%V483ONp;zo#N*Ejh@Z^1*43*Y(iP3_1YV;TGFg|Sp^ z$GO-;eqcQqpb-{~5G2u~@9Ls6E^+rx6Hy3_34#=5=rH>FdAmoHVv>=|DJF{%>d3OA zWk)t@0?&239`~I&XLb?fiaxJ@p)14A#>+4w&6lb}y354X0W zl~VmqEz##nXI%5d_Cf8ke12Ju-QU(Zbfj>D8;CIx^F>>m1Zk;z!#>X8x$LX=w(OI} zy03bRQSD8A)aTy6g*i;1L3P}+_bS5|jk@hMGf%d~_rd-2nyS75CzTewv^d)KO!wjKejrt>$sjL%+18V^;a7;)ruEN)>rXd(omS8B0Rck`-?eS{g-VL` z6yIGFL4K#hQ6IyKul!7wE^R6h#BHe%_+DezI&_Rp*81uFP|2@_Z9G1-ZeSTazK1?Z^~T=hr^ibmwV`bn5T!itD}FMcPRd+1$W z)VCt)HsY*V%POZ50@NjTf&>tINP)Yxc>?Z)i!dw2Nv!H~km~Zu`#ga$VM?##960P{ zZ29kSAHfR!Hii=N*6JP|MWO4XcPDU#@QKH2gh|3Ekb|lr4j>3l_dRf97^wrA2{3a8 zZ#oSxZo!adgv5Q51c@;VyzY7rL(`nABikD8s^7(7Bx7j{wMy%wI?eA+{R|0*f_Ca2 z-kNSnM%M$|iU^s$a1rSmkCtIltnq!VZRyhTVD68z^W9!CGgL@%52W-kv&kF(i99pM zcMR&7t0nBQUXPDe3qbjTE4T7b)B}eHE}YmZ^&rHuHz0TfEZ?#&TgFdryJ+>BZZAS- z-aQkIEOhc4_A037fZ@WNInmvbfwre{O~l{uI9xO$OrlFH*L4F%5zR>l!K0@H0DyXO z4iK#XX9u9dKCWiJ)5Of4th3vHs0k31A+Ia<_y$VEE&8L+JlA}ax-A<7y(%SlN(xac z9*?S_2x*_8#Yk;)Ip2~9e$Ror@bq|(8S?(0+6Nh)I8SzY&zEuXbH6V2_{sNQOpmP} zsKJE_?kaS|M?0(H*5cQG(-z!W7$~yJ)Uq$(cwCFTkb;83ecDmux>paBfCUe) z48k6#RbFHEK{YO-qxb&nu$X`P3)YNCIA1(3kKL3p$e&`K}+%jhYlSHFTr zC{Mojc6~|G)uSEHSL7wdOHqoFKZf$B1)-1_YwVPj+xH5xH)0e|bm@1j0Fi zm_y1@0VwX*lioy42gD4_>yMS*ZK|fV78+#K+A$&_{7-JqNJM*B2T0mi?osK=KHO1D zdo~`_5U455J6xh7JUY|+adnrsAT9Ov549Z;5oYZa3>bh}uNROL`jWYg^;haS0F(!- z7cG8+l1*p4YKzbYq|V;zSRgm_MyDs<$}aNh^-({yWs8gmyRPH#4TYE7+Xviy4@gP< zxNmD8L}^BNs2HWASG8@)6qY1ujKLm_pJFl&Y5>xSJm))9v9M282ShwO=rd6Ws%hxzYNiR zK#A$mUH4U~$}rG+x|-=SvHh2`ac$>Evu|Tm?lfAEW~U?KM4}~n|C$`n$)(+aCTQNQ z`%y1xTK2w`I35zFUk0CM)1j4@YjC|dE_uBbqEB3YFdzuL``;NdscQyK-y}|gA@MJF z?4cm_5&L{eD6KwX7>D~5Sfmzr9-|*nK{$&d$IiK4;due0z>x^Y+ zV&79mOWMiuq*5Nz{Gc*l%x_HNe>d8Ccc`6{@+XGelX`O~*eJVyA~K`S9)6X-gx+{3 z&sgoX1>@-ZP61Lm5wBO<8OkR3tyjL{>}mNQ8NL^N(FXXeV1m=Pq?+w?E1s`s5}xLZ zMzTF2_ee|*f!XW#!!Gp|44Dd~zeS6KLCJAR4XbdgEke$sn9GU?uO&6r;(E=#e;O0e z@59Y~FMaNOr_y>H`d8#Y_v!0zv$zUed;`trYgaAW;hyjw0Zy%lg6PZ@v1af zhp}GOpltNK$TbdLW>IMhOsr7vj%<@3YZT31lN7t}NJb@lUr5n%E$w79P%#U5eS_En zqefb8G<=d`R)yvil6iaL_tdF79`%P216}hqfi1rO+=RLBkJkc3F?PTxC}JVCRT)<3 z?)cy_oXrz+*l#!cmI4X_#;e_*7&0Qm(xcL1GPyzLP1HQ>X+N{er*FF6{3=kW@=(Q+ zgY4I!M%@knT@F&c?|Bakq5&kk(h5HO`Z->Qv12}6; z^Vm3}zPe>Jhg0mLL(qKB3%C=Z>?79^9Ms-wNUs*g%5?pe>EDaota{$ah~lFq>oJsb z*~st8SP1MoY8c5cIQu2rXL&6mG1uWz^k6=`_T>*MGfg^_j%;FmSDoEMQQX_#t&cJ- z=WDBYCF|S4y({#z!tFhmf;LYk^E^a6;KXE}rvvBD*=2i~JL}59dHsHO*3kCM zxSh(HpKoW-+(Gnj4?tPHn%L&WPH#2jxgA!D={s2MW|{uKThhGB+kzI%%fsX94%>*6 za9X{{ox8-;7zSQ{u<<lid+GA-$bR_> zpPh0&Et7Cx5wl~Nub2qY)%-t1dm>;*qtr7I?MI_YhqEBfd0rc#Gwo?3u*2!oDA_og zDDx=ums#uhK65hijC~|x`JLS!}lt2yEA6 z-662wyI;OcNd$xtl}(HEcEvk-BfTOlH|`hfchO|sZX2&4b9c^|zlV7~0BBbb&TX_R zO%Y(rg!{n(K$f7G`_D(#G55UuszXB?eg+DM8?%p-DCwx7HZ8@Y7q?8$3637&_RnIg zIqj^zvlndX4WlyKOKMticYqqr>M-nzb_6N!F z>S@XB4E&Sof}e35`Fc1#TUsimAA)_Z^2ey}!7bPe)bBrUsR6j%7chgd+70IG zX8?gt6)ukmCM*=|;zydUdHy2~nlMr9Y-Ii{iY{TozaKlzv)N8B=T#SO{DTi$>IrG} zv5Zv_?_0sS;CZ02dAPuAj=OhZ{fMr2=#w{>@4YWIj+|HJ;)d5e1e-2RId%pyHM-*j zi&tlcmBNnNY?un|nj0m|)eWY|iH^V%2yG+*yq;XXpd6N3wrL%+dIyRzNnN5d#4!Q_ z8bSQNhn|=Ik`<^VHkLyTp;Wyl58&*P{&f8Nn$^8flur#*R%1SjXvE%CEpO#~RK%?` zltqXt@nNoJR3cGMG+S<_5MRleAhEx{Q2X#hq5Gk3Oor%gIAN}4})5ln?dv}Q1QKxNK(VlC9-MuSiK9-^DP)5 z=qOUwd9jV(V4i+f&)FY+k>Yv&XP@Kvl^FXk0GpVfxAbLCRSI24&GX2ws^Z!YCIi@j zeE8W(dC$0-<$?oWB0<)CE_g6E_?O-Q)K5w>po>^6+?Wi9rNqqlc z5~dz6o&)4)-zHcrTWwGRLZGU4`(Zh?RS50wziU9pW}2XAh>~nJ>#X*Rlb<2wYW$mv zO;&cE>SaEsD**`3xF1l%hPA7kYO4Iz=sVefZ3ALWKG2&jj(C#ng6)_d2kFl@mf3^Y z2ovSt1!*u|UzZOr%LfEgRjm&!A8fsPVm!I|jiL!WbcM>&Y&P*bxR3?}*zuGT_JGfh zZGqIh)poAP%of@ckk@F(W=1-|r7p{+1ySqmp>~R>!ellek1P-!nnD|DYf#PYM=Lx4 z)TB1cW*MS2*R`YOJ38lj*~hW2i1~(uJOSKw$;d^Lr^WSN!^ce{>re4lEIj=PYf zFevd=*r;s%a}newB+kiZB-jI@sydMPpMmFVdA`owPvqHeRotE#8aMpEDZoIoZ!nKH z4L<^miSvsvoHdh2X{os`Mg^mq2E1*bk!7^WvOo*6+3b!WlJuZWM;u!T+bx*{NEk1yIzoMwL0<> zWI5-EX9zXUkJWLVa!979WGOnlRP^&OraxwEs&38cM<*c`{m>fFj~y9id7P_MRoEn|=kaySW{v35Xq zOfrev4q+gJV0jCyfFVj6;MW=$dC6;Ww6FlJz9+A!z&& zdMshp5D$ZmDC;E-*ArMqGEUKQU1}r>=6rW)NI<92)&`g^_1R?B zh4~jcFJa1gX*LvaMiq%1gCTT@@eun{gpuD=jUlC&ocRI46Tx@(&6IY|r z6IM|S_IKxMxa8!jj#iimj%nI9n$7`;gc^vsQ%V}xg23w^@pU;VDXV3v*6PYAhPO~j zV|4XhQiRh5h4gkf)v{X1nsHdBov4lICD;=>a3HouH);m zFNhozblUzPpRc#RcI%0+J6s|_UK---*WzoHPh6s4i=9~N1P4%a^MrM}G6t>b5Yxp7 z2#%*xsKK0hj6$AmG0Ns3`%|f`1d2Lh>Pf)ra0;5v_&9vMKC)I6=;)1RvRTAg%4-0F zFb-4*LcctLtiS^5!NF8O(>HpfwLxF0E|}V#3Bo5{HP0db2a3<@L-UKoUYBqv?VhKN zr%`|^zgq<>D2#dz`w*#kjK{(;Dq4j{PzbP%%r>BkX^+$9f-aKNn*bRuCZA3NgaUUa zXrYCej-c9CdVMGtOn7QC$4)`g9wg-H1_{)@l{Ok(AU4Yvg&+%k8#3tFiGZPykK@Uv z!_BG;yPFg%ca_NhL1O$TwcBfPu(IR=^spJh%i11K@J5mow5juFi zQ4nNYV@wGILwl<$TP*p=VdcQd0Y+^or89HSGoDXG`Eb-~h^)cP&j-h_)aqpURD2Cy ztVdQMmKwbWMILj@q1W?uhv*eWU4Db~&fTs+3yI^F?wAf}^OU1*zu zs$&RwP-C7MZO?XO8)|5EOw>hs2cGc+4W!;hxg@FgbadLAjPH9U(#p-gkaT4L(r-Gk z%CD{V5&+bR!LFFl4tQ#{1i;l0xgci2a@Eiu77vq22Rcngpfkz_&jV+i{2?%e{W*w8 zhRyT&8T<4DP;nqRMGa2?WEc*pbif0@5rE#~#cIHU-!@Nt$3&K;O)xAYHX32om^Qj; zoiOQyZn3!FIzYvTAZdyl@?-#xpF2;W3~m8<8gSMlov0CB<2hvy&c{fE9BoDz89gC1 z@p@f8oeY&!TzUCi%$$M1CYezpF0PBg)E9#M@@t5Gr%#@?oT(wf(r`_|U#JKXPg1`) z9`Pa(ClyAlwOQeRQ==WtXCSquCfv8l7&OWvs=>Eug+NBZkF|{6+9#94RnV!GIVo zujcSrOzW*_kdIqeT~Zfm-PBucPy@#dbO{l4goSMR=XcaZP(VO)gn}DU4hVoan3V_u zr-_AhOXn@NZaHe8B!^659EC3L~!(z@KWr%^VF${@b?FFvOp^J@=uh_z3j6Nu_ zf(?Y=UGJB4|#z$b_Rvq{u09H^La>p~nn@ z0G*M3Iy{7pzDP`X}y6`IzRR>H0AuQQNydQDa>`EqWE0U{t5qIKw;AJ9M$ z6N7<3HQMaD;mQ{oK;MW=@M_p~*?>Z399*y|2vxG(hLLm8SzJQ^>W71*-r|Ne`Pia< zP!}nF(=8mhCnoHqG4dA(M4zo^vYBzW#5*Ualy*yQCi^fha>pnW%*n!=I8R8I~89QXsS_`(!Ls4qXf!(AE&1oCKE&E6a3GY-dzvKYJUI8 zzNz`I*l4ql!TA3(+%?uV5E)GM;sSQ0AVW|ZleHtM)8h=U6H_i4&6ZfWhE&mdqvkZZ zsFXE8dl=0=r&25Q{4mt90A(YrW6(T9z>U>ua$IVSOQ}FdNjqUK~Sdz`4s5{t@{HWa+e<{XS|5Z;-qKC!d*|T!24ElMGI}8B_9j zk7Ulu$|cy@U*2rDXeB%3rU!PL;s6MofS@FIg`m$xpTYAvpJdGnKW^0d$#$%YPr%>& zgU|VAdhNIaVCRUrz|;$X%)_rR!G@GtyTnXGM9KA7DSdT%NJrO~h$5}l_VAZ|h@4B9 zTnl5g;c>njjpXPj%SPlkr-)nyvB7j9y|@8N>gwBZbST|Z-GxQX(cG4r5OOzgnii^B zf$ETM7Pd%3cM-g_-P`gx8{NoZu|;vPM)!BhxeMkUhTC~tM@%zgt{d#EF8i|a7izUh zg{X(2nGjXuq8s5jHbc4-#Ne&jFk#N%U_ko!O79&WQrOxj!1Jv?0ldp z^eA8}M3zPAHpL78FIx_za)A7tp)MXs?N7YQu&0Ke%kq5^3C75f*+pm89o-p`P zHKTV7K(ie^(KB_n@sHQ~dVAIy6ETe4@#3bJu@TUg!Lb`JN zvp-4WutNfQG^z3*GWvEIL{sY1;J-BwHj(p`3jsV%2IH7bT(0&3@L`Vk8J_og#~fJi zabd1nh-2Sx1Uje%?iK;U5U|^_2{AFTd<3_JRDj6P__*5Ohsla6S~~1}d0@dX;o)K9 za_Mn#K-{csTp--0TMFD%F>wwZ$X62^VS*vEN4!Gyb}hy6$zyH{gm~d$hDhzOl*;bl zF>xhEYaX0~BG!nXOzRtlQs}QsuV4MMpAOq+Hu}Z^XQdTQGT?5}R z`mY~D57nofbfTNaFVv;cFS_Zxw8wZDp^Hev3l|W$h>nwJJ4h2_9S4nxveD}V?g&1cpQv7z{A>M&EW_z>->Xlg#x`>M#L%dr!$XVZaxvba!A~fj7Ihv&zW6jSn=a{xoblFp44SDJ zn_PZRBg%!L+e^T3H@3_z7~36dw37_GO*Vt0YC8bQ9)*BR2DIE#REDrMvXoXq&_b(T zD_cY%muHSt;0V|O$&cr;>p0V{$Y?|EP zVcz$-n;zo$qzsWTKa~u>RcMw9h@}0r01OsV7EvwLT_-qF10=-vt z><>K`99Ew7ETed6M2*y; z-cjy4D+A)E9pU)DDr#l+$aT(B@LCHOxa;ZVQ}&SddPo7W;E^%VVAf~c4W5eNE$yx| z#BFV$2UrDy5(T)Br3(PXWpaAfJ6j{Du7Plj&zuLE1h(b{+V6S2as z*^CXKn_X+74UM{&&Mg#!4Ho-hDdWK7C(dPSk^|UVT61KIocus6c5vs0+>z%{%xW!kHQRPN zjd16l^ak{mm*#(9TPKNAvkp8L8&QK)bvSA@0jJ`fEC^Eqb7xZKQu50^%OyW#+MjQ% zTAHewh_`D~2AY&9gKeB0lluz1J1R+xO~o$wXDA369iakvPQlTT;KM6u8$JkT28S)H zQc{q1!?qfI?vkJ?8&z-*jDg%{=G|#51_gNU`#Q>8u+mhMnOqop8tFRhz#2+i-3=k9 z4%vnrop#%~(pG3F@7nUD@VPYfbburw+Ow&;7xc8;3Mzoh z%qc3e%DB|^8Zh5uRZ&x8(}$aP9YfBwtE9A+&WXc3CB^`2G<;Iv;%;$i%1y>yPT^{Y zV^Rg1DL(&-;rQ6|1Ma(0*VR?4IyB$W{M6|KrWFcc(eZx%4ZuF{9T5FB0I9wOFxJs_ z`zq<#>(sO8H;rYqG+4d;?RXuh-{Ya6N)OE8W1UxzP|BYe*fx6p5oz-^&PI=PJ(uGW-}&CkklC48Fm4aE4`L$nFRc! zX@eXHU~lmH5^Gvla)eIQSv_4pN1Nu;4{PDs!6Mw9JiWAjmy^8G$!UrMaBA5*Yk1A% zgqV*1B2jL@o87*jH$0quR-$Kren8Pq;bKDPz~1n8()x)>3i*(|*0qPg`bJQj-l8gxzEv;Mz!T8e!j%{nr%%M!zVm1XgB)`3D|kdAk~Z*OvK9PNlVLK zmz9+}Hca+egSF@1DL4~a?IT(-y4~9EDvf!h(#$y7__z3m#I+F`s18ez-wFbXNm8F? zU_MxY<_|?=rd;O1df+kV0TkmvXX*IFrE3XUN;xQ1-c*EPaFzo`6GDNhgb{LAO7Qh) z#|a44nd$|GD@)<^OJ_>Igku*VB`*fX%~cF&&+3Y#&~mgqGf%HY(twrNCmqI)vZvgs}- zdXi0aM)IYlZPdwG4001NylQHM-H|eiB19^%EcpqFp!9h)g%kxAE_+!$ey4kBE5Psq z&%P*V1N9ZU$nii=zz|@A=;2NRAZ@a8Y=K-tdnA9YinOcXI9yS#Et`j*F$l=|QK?j@SCTKG5;1xG#Hcgm zXH*Exx32Mr<@Z|=OzY}jn;n|_Z!xxz5c8R7Th6J1oUU7{HgB5pTWb|@@2u>qR`yb` zty_<4Cq@-vv@kh+!-)n1mMrfjRm-=hkyEI$;@S{_BrO=kX8?kz$nnzPfl%v51O@$L z7&nRl*}8$$xdoxxinjSd&uiyL9s!ZMC*^VPYUQ5K55>#Ouy>!$q8#TZ-WHBr!BY-g z^`1-%&W(8UC5a{Gi|_!;JbXKl+FTtWsiCK4>A6hWp+5Akn+BUF(pa4b#DXwtl}Xvq z&1A(QmMv;%k2nTMLuQnB82Qbd?ajQ6#;+o>KoYQk3ZBt0lXvoH1CMJ}k!#zh2Ec0} zFTen52gML!oq*zf@Y~ctB=3=R_wZVeYAqZb%>*=J+gS-SJUGxr#vqiyV5s~Dro6Hm zJekYQVQU0vM2Me#PEB4SfarqG@$~l%DjzIvanroySatb2OJ=xh8Esz3uXN5EhLaaP zJx5ts7>67(Tn3kaO79_i_cPdT$g9;E8@FX~VYPa_PL{ZbPhJif4OGT3z&X|p!gE(Vk7SFu=mo6Bg`wq;?5j8(k@OvMDq2W*1VDAt;}P30II z3U7fZ$}PcmVr{UA4JLzh4ujUyaCpTTyGdaq)Hu)wJ;I`f6eriEWNk1|CLS(n52B?9 zM+`%{l&hSfedhMmSb;$mCUD}AS>8%6BNJmrF3nJO5=cvhBPlT=hZ@BQkt~zIFyhkl z7F>+Y*jwPG@fUGR5GmP!H;TSxYo=SL7EVea;f!ikwp(MR=S`fJ2NVGEmHSpWdZ!fh z7QZNw5`?LqBXCG$)?O6JP(dN73KD0SQKj2(@M(ydRN*vI43R-tVANzVX#@;H)N(`677DP z?aopWEi~jR12pQ366P{?fgv#k1zEI3F18~>7YK~PrGmGE*IhKkMD(uA=tPM$gV2PYg3v}L$vXsPB#h#wka&avE>Uue zkQD_29XS&%Ct(r`s1|8FU2GYoB4;q5j0K5E&_JLNTuFs7OknX)V#PXh1d5=949p%V zNhsLCL5f6}voVBAm`Jf@HVi=l#H8Sm<>b^x7$nZ|!(5^rU8cOLyyZ;I2H}IccFnf# zro^$@mn;mXgGeQ$g|nLTlZlq9Y{o#w)uxCMy^!M35HX>EVj(Ki)gnVN4t6H6P@yrB zktE?jRB2C9b7-b8MepO}arH9!J-*>bOCul{a#TARt+qGahr6?}j~%J&?CzR(U&}87 ztQ}|)$v|)5G54g^4;+ec z8gXDj<`8MbuahwF6$IF&t=~Orbks)IZL8kwl6jTGd$7_IvsS&HPKC$v@mrqCeoF*# zm3e$#p6=5XYuN1j-KBJ&cwv%2_68C=^CAvm;O-P3V>z2-b+D@-0g3=^h=L)v$^$pd zp=j?tem)k3IlDkE5G{KYB0;EXY+T-Y9`}8WQ)i>9H1pQJ**ygSfW9CXpSW;9nd*^;m4IBo06+#kszvu8Ru@u;igC!SV4#i0N@Ed`&w~yFJ!Q& zS`hdnxH*QF%TYr}DPr};6}q!V0~$_%-xFg=jX2M6IkyypUwRS=% zD5BrI*~Qtf1zPHKAZ$bGR3u z%7r*k5Rdf#YwN+;6N_fLV+OfR34V;dg8xsW?4ZyMn72S z9(4*C9q6obL(P!R6uc6o!eWvQ>=2v*u>gU;e*xqZMEIDoa5rx=DmFT?aYvMK>xOd9 zT$vfV_-`}hwe4tue}heIdpl~_h_Oqin%ui8^k0E`4YVnu4J9p7_V23uu$UoU1`2-h z>U*Q}Z0f;zaNAP1VUz{!K%FaFQY!+tVmpk`l&ekkZs);Ts9n+C@og_jCp8=OVV(g| zHKeGIP~~neR@}wN=n&g;;i@{K5uK5k7n`<@IHzX)%W7;Zi^@D&x1dtneUjN&dN~gh z5bR}-X{6d}K?4n;!sij{Ec%&K$I7kd9cxPtf#@*DEV@cbs*aK_WZVcBQ9xT)4kl~1Ibjj7W_mE!Ui=DmH;5?Rz0T$DbQTjz_+(p)QpX!mf z=+oHX`Sa29eH>x4fi$fhK*sugM;2a>O>hVUHU-*Z6#ZZkBmEdpJOD{4@h>1JO2N{0 z>rUWQcnE3eL-3jeV>`eZui#PbRsi5NhfCk~eLnc^e02X1nIAn3e2|h%*-aGV$Q1B>~n9 zoAgG^UenOIYhurt(1X-~=3#mYy2p~x(6u|c!gf>f&+YCPUbCNPB85V}{jo=9e z*+3frolF7|n&?)(uZ@VIhiQGiZ7mgCw&dA+Lg+h~PuJJOxZqi?QlMZCe}hZ0F6IE9 zWIeH=qiy@@$fEw|z2?*1L$9i{w#hi{w~cD2U_wPm+?Dqke_IyT`XJ8cTm{(M?W$e; zm5->}ZYluJ#3%!KIU@b3j7AgDEMR2&nZ_@W@{<@lPI588_^Yy7LvN^}IY&EIfY#`9 z;F}H5iHApNz05PIwgX)ur-DYp+N;Hgq@PB$V>d6xI44iS=7fQC$WO*h&M4Lu&wmfo^X9ZNbay z|1BSuPhVc^?^hZ_+k1k$p-a@sRVDW$FSjUb!VG{NZD0lz0TNImGc#KlBn3J6iqo-P zBCXi9^_UdtvrAnevFw*4Up!~2*^I*0w3xU1>TwFetuItyCK}fxVTqdt426q1{)!Y1 zf2HnMz{^-%rc8M8ryNL2-kA+vU0l#C=Pu-ov=a->G*wP` zmJ1M8+0^FyeH>s{nrY+kgF4;O>B@66Ty5^0gUF(cn80Mmg?CpoNOF0E7l<=O@6|w1 zQ?lJ))2(G^E<>2~Sl-CV);`N28%2_k*f!=wPjLkwemuLNFu_XrM&;z#5R*A~dNj8n zTVy%zZqc?Ct>tZm*$}QduoSzhn*`iRDZxUO(J|UH;v0AL2OlkPGlB}T9dzs8%^FAy zi`>SW1|E&&U#tw;d#h4C4xW=6#0S0Rtw#c!Fa)8BO{)C$gsT?#d<@7UM8al10kU$) zi#K$?RlBe*V9yDX-M+hVPubj22u3A4&|FKdAr|F(cY+64*L45`bt3A6aW?KUVCr!=Ep}6k$Mn zd!E*-?~mnxW}qFDG|blxmi^X^{=f(22zp@kf>9`xL_|cFIy&qP2E%Ktx4+F#TpC5T zw)kl-wbJUck864wfDk3Pg~syrv2qvQmgQ_S^;w*?z>Y2!Ba;E4cnYDL0*TtKOKo29 zuoXas&jnoGE~x-o1P_z|glGx;FArk-mOk3UpjVRb3>iMRoD7|F`$%k0=;1BR5SRLBiYzb%sFk|v5r-Dt|w%*Xiyo? z$DQRI0Nz&AAUf~+e7KfJ5JV3!(73K_=g7w6SnOri1|m~_j6TzPv+ahxh?(|bQgi2b zcm!|VcBdltd<$(~HoLyj6a*Am7n>G!ty=h!cz*6tt7ppK#q6vDN98e^Op_H{MJQOE zgLoeiyd?R421UWVjoUaVngO6_*J+s(s97Vj&kU_p{l3;JWOci(AmC{A@knZRP&iDp zGOM%L7hk}L4L;f0pr~WBbgCI2Tn7`tpRa5UnvJzJz}|>pVC4WyCl6a_%(DcK2m;Uy zG7jbv}%!%y2-;5Q!Y03uiviPiyYsup5*5PcTn*H@edtMj84w6(X~-CId*0taB0rpz{%``yMy&fe*T*<*s-HV*C}ru8~~ zBpf_N6*ZD)p+6QA5?6GGlV$tyQsfBQfKmco!m}hOBw0l)JnFzxNS!5P;270>h1$D^ zO#>FHGPh?on@yHl=@BzAQ2_yrQ1UJqN{?76Ov>v}7tZ!Z-aHjAf=K4a4k*SL z0VuzauHaT=$p&&^tnu@Z(d|TMA3a8Qg3d+c`IvM9QvsK*UkIsNA!sY65>+Av!(hZ_|BMF7xjaA-6(BQHm~ z;LH-1!uxY&W;mL<3%mMyTf2s;&fQ8lr`&x+KF014D5i1}kh|vG8tL{lLBUSkk#vb= zO-%&k?7KV;9+rEtZ8{|7eXHGAvBTD#fnYLbGL`$JbAzvzSQ9VFce^MLrI;4~`8{?B z30IJMiLn6&>#+kSbRBxE|lFe}pP*Fg?Hw03Sbt5a<9~{t$hh zi8AGd8)8o5sUkCl}w6y&#yCeM@*dJ<1o80iY1g5Q!2PkT>K5KOH%71Tf0^p_r2aq$a zVfXI(J*?c!)ZY)Kwdn3KC&p6WU}_tH(oT}(IS`>Ze2)&z&9o+e5Rl`b?5oT8)0Dkq z5a5Q3AV!6D(5nt~?#9?dQy#BpnJaN{R|TGZmWBkzDJ8a4SyiEvA+(aT>?`gja?q6x z23*9tvhfNs#Y&cK0MxYEp=UK?>R_ImYr?nNKWwghNqR zSCuWZmct<=Wx`V|B;fK!IzNFdP8If=3int;n@bSu@$e!^QX#M1%*)V$@)_h}Cn!4s z1Ggj~Z8Zb{=#8A2?kpNM=T}Wf_PH%V!lF?Ae9-{tD^6qxkf>RC{!=9})!^VY=ErmdoL$j`all z&08l(gXXuOOZaHo{nNbpx>b>XysMB1U5&ow+=GU5G7v3%-NjyOc5*{7Nygg@)laZ`dM&q2bKQM$YvrDXv3)9 zOqlbULe=oe!{FLd+Fpf9{sC+t*pj^xLAOng-xpP|BY}G2_B#?c+|u1BD=R~^Cx7L7$cp2gRp%%4 zlNk9xLWQ9hRLqk=^^ku?rTt(gSo=|d(=WHpz3XM)L;&0E3vB0A60I0TPIv0mVqLkC z#&f4*UK!x};}*m(CV-KIAWRxr3J%!x#r)54Lk-+|mP16zosj^ME?t8}uO-{p5FCPK zN1q-1M2v_~Fu&%tk7(O}gu<$BMa})=N>-Xylnzn?s@0fKvV=PX5W=j&932%3i(Hl` zaut}`6Pf~YoyQ*5UhSi0rf+TB*F|c|Xu@5)jEm0^9I3QjK$v8tE|JMsu^gMyw^{^~ z2c<&MIS5r6TL}`v?QDkEZJ~U> z72DNCU^2M{pi!AlD9QK4wsCdcAG6rM9 zaxD)gnjYkq2+u1V;-uHyWKN22DYTk`I%3&~LCaA#kwC)k&=OM+lRjBgC|&_4o*SY| z13owUs7L-OwLY<6gXqgr@dQv1`3thX-xi)U|* ziGBHy%o0$s7RZW(7fh>6WN!8u88RCzhmi2jm%v_dp5?^V%W9&X4H&%;4v2`FdT6yL zlb$6gz?F;(t&=#?=eijIQSG_P8WtK!WdNC2Vq$iMfgJmUNCw(-Ld}cFt^{vhjYbt2 zmUJ!6Mm+ys@Qte&H5`R);ZQvVbh5EkC!4(ELy0g{5^kYO5(xs)5%P9plV-k=+QK%K z>1*77I|bINuXx>}0f)fIGNJ=6&}qTD-Q2_6Rxh{il6UOsvmf}vX-!n+FReCdreE1A16_-2 zyEZ%XY0}@F?9hoP5T8)yCLU%|p4M7RON%?TK}a%iq;o-^1bFjP{4N%=W*3vx^`yFg zL%I!yOpJB&i|%AJl$38WO4j<(OMObXCCXyPLbCcBztc-c*GU!bMi00%dR}5_Zyv?Q z%;|LQLfMGpzKD!_n+E%mI&K3@-DpisH*qpM8%eB~n^&4xT&5d*C?Gp%bUv*!-JB8{ zIURR(X9j|NIgG=V$vBEdr4Up#qM=IDO@ijpM4S$j0lxXM8zZE>YcQNNV$5kUxB)`) zqnbG9VKY%w7sS0sUA$Q*B>)^)ua`_2WHm};uq4uF zn34g<=ELWc;^zlXkkUQfBVGq=Y|YNr(&?72HiBo3btgL{(K)hPXo{)`c^*C#WMGU$ z1e8s>9GDF1NrnZ$DiBll;CmoS0h)jmcqMBd0oS-e3$MwiCN(#?^FP;>3NLd#jm1+o zbvr#24h_0dwvn?kfjoAK+IaD_K3Jw_lx)FG9pI1>5G5{$oKTyP3vobB(Q)AH2_1nD z_@mhwN-Y(12{1CIn3O)2@62yj#kB&W6dwvug%9|TC`P@y!iX8mN;sR1o5`(m!!3H2 z@B`Z92C{dckU`}C%HJpr-MIQ~Fgyd%;A{Es{@&k;rMXC;rOgY&MSl(sx^MKQLkoBm z2iyB~!7f#Ld%TuawoNmJJee`y4;WBnM+6e&q4#l}2m*>wcAHcHMTL*=wQM;Y@4$Kf z=Dzusqm4D0pM5ym%2$Ydv~5H_o?=10EPKTic9H7b9#9d1j6n0J1cV{S5{%P1B_@6_ zGL^!B_4;@mEGW@5&P>8gMhWGNhkH_Yevq1KJ712tfh>bxGkAmX$DixGg7 z^Zpdq5dlYCYqXzciiiSIqdXtGbOf8oyaxaffb|lvgxU|~`+Y9JrN?jA-$xq9M=~yZN=*1h6FJ#ao$g&v4F>db^i9T8nj&h-WSF95_KVQ8 zb&0*fH4^vcDOLpOYfnDvP70~(=FQK*`Li=0#y}x$&C5-u!X!gqNZVP&f#PvF@Rcxc zEt|~jt9&_dg^!91@{$}*h}2nG$Gj8-XHbDI5UnHIELD!LqXG~(qX3M6pf1M|RFOss z;o<&}G;n;F6&flpjU6AjEbK=s=TyCCXo{HnX+1LSvzH_qe%*l8@R#iz8|Rm^x@}k!WgJ;0Gs*-xHP<+#qI=E41=n*IV7v~{ z%u^$#i=`PcQiHK+ge3#$kp~Jw@n64)(@_o4^F9MiJZ<&3M6w1aDfJJ!$4$<@XRgo~ z^R%h$zV_f#;9qr*g@U66j9-M+`fqD~9-Q#a6snFau^6s?mf|YE`?GM&e6%3}4?MX2 zNH;GHzPD+^&k!ELsaE-3V)x2IwYqcQySSUKViZHM)gmxTjUB%frQP^e-Psf7<#xvC z^NS{+l`);$4NAo-xxv}(+TK1dLbHBUZD)c;E^Tu1Z#YqcNui>n@|JxU`}yy_R>8~B8T1r2$m_*4@tCvA_Iga_Kq2QZwp0EDn~A-{PcR3&Ii z8wtS=t!Y}9JHvjay;I#wCn^Y%hP}~pRt}+Gox_aMi6yIfod*sd7vgXBHh5Mex-9VI zdkAcKkS(nd4j{xPH1~T+Lwye?R{7b{s|GqfN~(mnK3*8Uv(LO#W3R zVzKwtQR?ptzj+N|Et^-Xgca}|UN1Yt>bJe-zz1WXLON<_NWWD;Vhq$#AcUi~!>hK6 z`liVZ--S7j-Uo1FS_Za$DfeFQCWUq#xoLBQ=F(mTA@`M;3gS<(FkgMi>bBmVM7_ zKWnvhPW~?&`^tS3c4>cLf*s9o)W5zthhrF?)#Cw=KIIuZ{}`ncuC9PuUrl3{=hQaY!9K*J3!GzKl$ z`>lP>cKm5^jFE)g>+$aIZoi$Fs`E`Z3`<`aPZ5FSl?e-;q114$Wr1P`1LFTwoiApS zgV1gU+O$?tz$kXe|4wIaHc~m%o0XHGO-lPY(fQ1fcJosU64{UpRnaQ7OI52F4Uxl& zaC26~D1}F12`qFzzeQ^kIc)zJH?YB=w~(CAN=j!}C8dMlPU%hrg%NUEQkHU3r&4_= z>xQP8iQwtVyHbQ*)`MJW5WppFgtUt}Kqn=oWddS3HdR6i(jy8`P_YOB<3=gz=7=Z+ zfG}jCC?V0w1B?CFhYFE^PCbSQC$e7Qr{01+AMtRChz8nB)$XxeFja$~DHE=OJZrQT zi5mhb$Y>)oW3U+ciaoC+d>af#@gdLQno}kE^!U}f5AnwP=~d;jF6XlB*dW>`vN)Zp zb3+b2^hp4U3Th$9*H#ozproY*z@R#JTWH#lSWHnm(Ja=Lsh{M&*DXaIM(hZp=YEj@ zvo6$_H1L)4;3z&O-F)F-5#R`d73N$1kkV-~*=K-=%x~&s7EIM89k5H?vzl;tNam72 z?Z5#<-O$-%t_}x1NnCPA3%>*Bb^&IV>;Rt4?dbIBJLAgk{55>;k0yt#18U# zyN__*&})Bbb}p*IuFOQYc%so$_^+@Y=!b1;1yE@&fF1A}0<*TnmR5!k7nvMl9Z5lH zkPs`^vRp_BO1RFP#gLALdWAij!k#|5RLxC0_Ioai@0iT~~r!XLJ2nYxu46h=q z1*U?~G(m|j8uEp7{;bQOfjXrCjU^Og!U_l?N2fd^Xs0deL>u8)RYJJLHccc6tB=|& zN}90YXVzH0og{hLFsJO7!39(bih~#lL|KzkM`tzKDQ1`B~k;0?Yz01pzM z{z1So@+xNpjBHPZS-_qAE(cO;J8q+`*&Uj9OsJ!68vV!CT)hXO>3m0!-un*-@!qF< z=KSNl$y@>RDgBJRT7JXab`c&v-235ok;r@)XK`bA+3Y>JxiA#MOTAVK@ibm`Du|3!tGjdIp1;u1U;4Nl&7*W%l+XGvkAhMdD)MHmwV%cK*i z?=NT2m6z9RZGygHaDkF1ijrEwsw(A_@H{{d#mSYCma?6qbj~>_+=9qU%#f%OX%JN% zFy}0ITealWrB|9AP}%jx3Hmr893MW^2RUo_BF>c#iWPD!BG%nb|A2|reJhw61jC|j zo|O^fAlwaR3|gr0yC5EaYq}fDJL)?}@0Us#@T}UTfxwsA7!{CwJVgi#hK!-P50(%@ z5q2=Wpu_|sKn&X0@A_~3|zB`lwlC)i!@-bLlT9lj4lAz0>My>6ZhlEkI=dYic+_v!=y z9Kb(WPS#IyAd-Yo-CvAYg;P35X>`)IgswC#EMzqG?jD-1$-`ZapIFN!H_+BAN?80Qav! z&_!OjL{TMJ31ocDTC=Zku(*zzW3Vyn_C?H9kn9;0xnyi5rWcqCE(R0_*x1xSx?V7t zY;jbps91EwgKYI79IlCvXg5oZ&Z1Sa7rpNs_!CtKj4o_x^2 zS{h)aXnd5F)NuY+_px&?+U{-Y1<_;C7~9$(MkMf~kJOS|4$!Aaj4vqC7PWN7aER9&~t7kS>L4QoXO3CiRV1`d3;Q^-Y zOPb|GIgfs*3N=^fW~2c4!VRNv8+!6f5kL<>O|D2Nh2s?W)JV`laO6m$St%h8d24_N zmMCQfpIe4P(lt|uIYEGzvUq>RswxE~2oOf|!kP0(@$Oxd!1s;YNleu2?Irr!M2S8G z<$sQiZiN&k{D6(=y2vnHfXGn$jrttt+eki~+tyBn0| za;|FL5#Dy}a^g?jDyFFU*KV5``0iT#TKq{7$FSXq4PI6qq_iJ^bXR4+DRgtn z5ts)h*W(=gh~g!@79i}N=7LcRN(ulY?N~&j#4fSV0iVTfS7}lZAfhTbT{;*&VC7s+ zPGBIsIiW9Ca(8i7Py@wkKqfH~YzMbA_f!uZ$+2ZREuC%r;4@`dPu`fSDdPKO3Hq=`5P)DCY0nyFB_M9%V0+!&AlR>ELllu1OkaTk?SUOSc-lx9##=E6 zR{t8Q3au)A5LN(PmPAfIS7__0V1LWU#A7@dW<3^|e!BDrq`ADY2DC5&0Zw250?Yx! zW*IPqF@O^x)(=#G1PYYEA8<+1#ZI9*>J0*}>sk}5gc>M_s{^-ghT?eT6t4t z_@RNYC$!$iTwd+(+z#4_fc-|wM4q81`x7kvX^|+v0)Kq~1U(_hzz_o>?G1Z}a5AOm zzYEFRq`JOS?EySzC8Vr=h#+>maKfiAOIbz~;&qMXBHe@i zgd&%?_Ssgz*D#iTvY<_rPM{R~Nn0;tS6kU-muP|eK_djWF@eyj87gE$JLY#(2vKN= z^Q9?a`n7qaky2$|gHi!h5>iwc^@ z6cASnM73}`tg8$I9Aib$tWff%0x_X}ZtAD_%_zhJ0IOj;Ij~*Zm|hgxXgP!&=~(Br^75h$i86lKHB z;?hDM;?}9YtyBlPnQ(^y9Q*)BrP;GR5h1Ep00Dv!07?W6fWS5&5MG61EDAkSb>f{W zXdCiI)f|TNrd4!nLaUJ(s8*7*|OxdZVW%&m0a6~^apb!eCpqST4(2YK8mYxxMowq!T=IM?hok8uF zO>EZNLc2__b1acl@U!@HUz9nS0_CGpo_#>7OJAXadK_gZTcGobdSiM7uN)Vqpz7D( z4kloOdsf^%H6a=R-K|CWVmbqFS-CI(I$GbNEnomhK*kX4G_+CoZ3Ie{mjND@--Ldd z&=XlN1$J**l`~K};VdE1%Xh|j?=7p*Xv!TX7BOzbt0k2kDGLINrqP~gw1hpdvbh0Z zL8LhO-)hP_mfcztmM&ebKbxzwy0t2Yg;iE_W+5XW5Sl{Q1I{}x-LO5HWwq_>Vgo@f zWS0O(;N%zxe?e0ojD6Zgj}CyMhP}`jjBO@FF0YK_!@HVr2vt;K09MprG?|do=?qyx z1u3cE;I|Pt;skTly^nmHb98r$%-`WV=^*C?C`KX&4UH>SE9AeNuNHaGVgpJ-iy%6iZ&`@!}A_;(dt z89tCy-#ZwQLC+X4BQi}Jwc6GfLgHo7Kokbj!YU@~upoPuW>k^$`bMimKrx*HMZDnl zbi_KCBs7$Tq>3j5fgmTLD3VK_m1FB;E%uNM6bK}z)ow=MKDF*uj;7*;{54(6sF@nN zc`&YMOXq7&5EzxpAS(M9hA6aANA^GIa8DESpX@mu`3SLi+^7L4%k2okZFLo^7(c58 zv@h#JrVj2c&Puz|)3y0tDO$)2Luh!sOg(AwnpvD#r^SMU+`NW(?|L&BWdy210dPH$ zp{Um~vIB5qE2P#}3>Il4TQ>4gE&_lKNJklTz&+)&0+hMQ16ctHJ>kVe>XZrO zyDDrm0V@ZbwICg4)xu;eK%C~T5KUfHLm3Z>1&VR6O-vHAu~g1*wGLQ3JeI zq;Y^mP#r~tC_j_F8T3B=XMS&Pr~1|XHtz08YWfDMpmg|@4!vZ;r!gDnqd35BGf@;W z_6HpVO^UdA_h2dl3bA1HOIkPk2&j=Fz(74DPC|+#3vpRvW9%auM4OP`trSbw%PM`s z&HHl2I_!6AYJUIaD{ZzOX4Gn+__J$!*TKFG?}WUxb?W06xXX};x&c-Qf_Rw5p2w4k zxND-darMq=3bU3FGCI{6#thzEKs}xfB!U|R2qm8+@e5(O&UtmfyDX|Iv&nadG7{1* zq2FqvQLGc~6v9FsNc=e>yPnlY-{@3G!!*1rR-#$~cG!PmKzGNQ7)3QDTb^z0TWw@C z+B51pm}|2{-P=mbyu-Tn6bTL1podeWmUCC!38OstXOKGi{I%sfRhIr>?uUZ%14c;a zGm^}y0W0kk6o3E-dVK+p+KXsmAM@|%SU~|=2d?}2 zC#luYKJ#_DlpobN5|Rx8pKcQ+o?G(xTXYJ8(75o?o_X-lfIPK6?m?y&fP6++k<}o? zOj461rC_X`h3*jhliCAd52<|1a$I8GKfU5%9X6h7PZzi6q3#i+0gDha)dV6{V$^Ol z)Cei}l_ z9xlIRCf1}P$2vI~B14#EP<`riwX zaO7VtWmC7N{1OXnE)FA*O;E&+;=Q{GnUlg*c?Cn`crb@>*L8X1`5!0A;T@FBxK zAhnqUP#7jceDDGiNW$V=mxP(_qWG|D^5f;S>ogH@wyY?I&RdFfydOKmfQTT`?ndK1 zws%7=?g{(C=iF~G*Vp7*%uH}xy9kNEFdBSDI0z9%n37naEEvBg`K1_jkjR>_FHNj| zG1IFmil~GHC^^UzApkC4x*`Z-L!C9W#NNU|CzAvfn-_8U7|1iY7kd?td1fa?I7A^u zFtJNSWRDt_GHRglDGMZzpe8tmXQ;YGZNMWH++=O_7&ps|-2X$=qod?$THN_#AE1kx zo9HcA04mxBtu!?OC?Na}h_J#ms*mn0-fv2RM#$2DEEh?XDeULLfR%uOgdX+{P0^vT zOmI8OamHRHCYdk1JbA@%R)$qArd}#?i8Ro z9=}g>Skhe0Ai4~~EK2)32WPz;uvMA8n>sOr`~G%U;rcvdclDLS}q4bDM#9>AV3>^a9}=79BuIdR2GOdNIpMT z*;u%vmT3mgWSk|4AS|qL5t~%0q0Ol@uo3Enme0+ntOVkctYTrj8(<-D9~vt1QZh8! zdf$F_2x#+2Z#x$9-L^Or{qq=1sJ&J+vqWn5E0=2~cIou_oi;RVZ(sb{}xpz9!6FX{2YX)Kf z^sEMfY*Z<3w`+V_$zRnGelnEDOKjA5$fgjRB{;ks!RK04QrrqMaGwmGBdVa0Z<&Mg zdhCahT=%K#q*u$5nL0^Z#N1oZw|t1dOP)lp;0kifB^U$lyO%DmABeyDeAr|g}dmPhOUP5b6( zV*Y)wTy0Yh(3qkL%rtnLcnuU)cxg~kVkh3U zMG#~6wBfklHw?pwiYPysWfSvl56pbeVdcEXRoVOP=U=DJ`A<3LyHL<+bT+Xy+UpW* zg#kd@#M3QOym^&3E&<9MVN?;rbW>V_=Br#QJyjzJh5jorlVjD=E?fwX_TsJ=0eVeK zY~{(&V*{^41tky+92_SgHt`Ycg!&itncdEPNzNX_*P&fyTRnxF$uE+sI6EC>>F-Rz zbi|YJ(@tb8S2&cYw|5T~0X3y2*&!IxhL2pt{-DpDgvBxeh?zADJOG)LWX>7bKI9rO zSoF+ddUGH@RWVO@zZRDV;FlT2(4lL|6W{p^aK&0#||WGCr3pokod6R}{jw z+hsSdFgDYhj9@=b=hR%qGg7?XM(-mvGvPA{fv*DvOl5-N*wghKF~!zq3{`5YOUK4I zTb%MT-@0-xONZOI=Q*liqA6LsxW#2_TeOxqwOSd44^Z)x>buV~@q3%u z{0~v=zMIx=`xd3xn=ulbUpQPY1J4mMO^$}~wl7}7%m+IY7TZdAA&T0MUd;^V7+A5p zzh3WULpAC=mglN#lzXg@QZK30_+HwS=Y0=r8_w>h@~c1lr^e`;T4=A#^JgyclHYr;((xR7Ne0~XnkT!$Fo9bnuO1cJW7C3whe4V62`RQxx@S&OMFaw*7^g~bPJa(8r!|Qu( zl>nyqIm3dG*5QHkrF}txW3vw;>ZDe=^7l=RkD9eBVfuHt5%GD^w$+F)@Ibkyp^bqG z7O?Y+b>6?=_K;CfvvK#Fc6G28?)!%eue+7r2Xj5wJDYVIEg=(1+KkUx-Bxw+^R}L3Cph4TXEdV7IUr0xmMF4bT*j zLq@u4LWC0Piet|eAXaN=cT8Tc+U|GTtHwZ@NDnCXA3q#Xs2N@xtq$>6@hHnhdtKYO zwa*XjNPS|Ix@yAD@1B``yfzulV6`|b$VyNkpf71Q;7XH{IxWZXb(EBlBy`|EyEk$O z5y%3UI8Nz=48x72h%S?Z(i&)GMcY6*rtA~aty+CjMkI8AP!07pUE(c-gF%vI%zJk^ z2>qg>q@P;9T-@n9+|NI&b@vR84SF4T9s~m1*B;uj2;1O`L>4l;jvfg6Q=Lexg^~;8 zZ@xMP0kfwC9fxZQz@eBW$VQEnf#Z3UrBU?Cz%L+YL27K?7AXOc;WPvau8AJy1o6#p zZF3W&7$*9hv&sq6$;VS4Xn6t@QFX;2L`zf`2Igq1n&exNd_|1K{i;*C*;eWa1df*0 z10TyQV~U6hOjRhmgG6XZ3tW#$;CQ|~7Vxn@jG)WkT6onQt>>k`DIGsItYZ!n7{9@4MisGV<)MXV$e$9G$$`$g);@1=< zh`-|UnQYW*>Gf51v^P3OdJz}SB1=kCxv(jKW!uo+(tSYAw~=ymaUqrRHMU_%@D&IA zZF`Y#cfzOwoNM0zEN0>N(q6bz(1~*v6IF{qf5BkHtd7Rxia1A@0LmoTh94jIt*kpE zSz zWg_^bT{$wPRRl?7D8T%2fT_FXJd|evWs!PB zA(;xAA4U0aY%1;zue*f6%K_jsdq8>?46cycK)`q=zffa?x8n#p^Q_3+1k{m>4bbs} z6O1YgiE*UNLaZ3=$q7CHoDsxbXNMNtPM>KatiR`4cMxNEPph*1pk0*_=TP&Dj z&p?_UVkyq<`4$J?Lg>N(TZp7Lt>{f|inZM75Y`lN?xF}k%DU??T0r-Yo>(%j2v&fb zO6Ar;ArTqcDM*EJ~j(FhkFQ#!nN$}=kF;Iv9j$|xF9rE3gKjz^4&5HT;?*| z5n3|IU)BqqrM$bFift^%l=0q2G+{fv(UsrpcwHzH*YD#j$c?T6E%R0xy>GBDLVqkd z7-GGeOq4ZnwM61y$h$ErAL+2ZHaSTVP;;j+G7C_(Y~r1YH&O=6Gm4Mg9Ow zG0=gR;0dr{Nd`)wqET-PX#X&Pd8U8^Mj}j6a1i7yh;RUTPYKB5^wXU~+7ci;Ti}QQ zl%-^3u{5|zdqtEJU}sF)|JynI;ew4a zNH{3+$N0^6z)5yoPVuLos`kgGqwV8>^B`(pDme1!V07_U^#u()6eDyfXBT*M>Gyt2 zt3A_fW#H)weXP6=m|a}V5U12n8&WQBGtq|P9zk2Dh8X<90SlTZLHE|n6vH+m`4Tn< z6~lfJ#fOK&>JO{3KbvhCg8Z=pFF2v&Rx zVR^^Vz^#n-4C!=r$W(*Dw~!3e<{+#=W_8-6Xv7=>C~}w0_ik-!6pf`!Ixug;WXHX$ z=u@Rvsd4SG0p0f)QVM=NUPZIn15XM*(12mMWSMv=wt72Ap@5s{pg4NbciXso93j9= z^e-qnDFCm7pj1XfqNquU60J|duHt2YU`QH9tUwy_hC{a)L6QH5%)wn?Y&2F}wzem+ zn8)YjCy}T*atNRrd#d9K%w%e>{2WvM)X$f@rV(I{$N~cBvwU&!1iY~lC2|nLWF*c& z4bG89cA)~R-a@mbI|zW!68$8=Q*o-H%r}~OxMBcfj;@KH3PeIki_ke5iTHR`pyxUt^z@VFRTGZ~*Q+ z#U1Zv-N}3SD5X(7??tf5ws4Dw2#TE;Lxxa590(UD?WlSy4k4na0WE>mjed|ISt9!f zZ2G6xO3wb1rAYu}wcB!*jEy`RGV*4q07bb4u}cyb2dliG;}|?qAV<>>B}U*t^Rf=S zC5;L4Xb|(D2Bv7SbhlONo_!@4LY*X2kYNe_il>$WPk2=)%5EpnC(~8HrvODjy1!3P z^I;3rG&|`QjIv5J32o~|p)oZJKAAVN^q6+<@MJ;aVQ3eQvU{-q#?yb>) z6?h?g;ApI%l{GXLK=CDjQm!yS5RNcIh9+=K^nzCGUh~Jzkr$#&+kqB>k-`xh#9_;- zXbj4iHRqlAYL7hZjt=yNEo1jW0+0b-gdkyqZ`(2kwCNfR`#_ihRr7lm)zKX>tcG3+ zwRNJ!XoJ`na1GNM?+I!gMx}lbjo}TXsc!Xq2D?On>~zurq&G)`6T$<*@uobfAto9y zdga52DL@04sh=1vy_BY|`jxTu+omH?)|0-$I6bh|2iVzwWB^y8d?jo-mM=YvZa(Uy z@1Mrp{{QL|wN{o)euztsiLu97m%gmP1RudFhL|Amx~&5JLx!rqaLb#u2_~)Qk$_q&P)-aW8ZLO?E!<|aYZuI> zl2vsxG(}5borVDvICy{r4#N{Eybq@erz0)^QFg)bx4etPn)1!ag9`%4YQRlc>(?+2qA#g^^$+4)yp`t*fP>E zlY-a(7%0xD3)b|5*k?u?fFo%I=m@LLRxA+X3FU;G4JN&Wq7($9ZH5GwE3$}|=^a`^ zE|bih6Ai*r-(2u#Rvo`!PFC66Tt$lWxQ9{ z#qE*|r51#n6iGsTAcw+T@dVOzVp6Rv9luAt&PI29`&_+EGr?}R6YA0)Cy@5p@pz@r zY1=)0BGp(oiQa)FPBY;lNB65^&?SzUkz%#koza2G*^2E!5y&7lY9yoJlRIs4?$UgX zRDXu^wAhK)MMvoU%I9Uk!l{2W@-D-F{#=)7IN9Q!#Vnm^| zL32YYVYtvRLo< zQ3C1UvVG&QW%s-vG-xlPU9rjs*H3ivLq*^(+e{fiHQC4AGu}l$qqC)ErlPx`ECvV@+BnGe_FI3-SU2tjVFAy*%h6GN^Qk0ZH7l9}h;z7fJ zP#h-8A7se8P*tZn^nbH?$-^cAJAJbj4dGAT&>RLXYg_@K08$TTKZGtZ_vm+}?zjPj zz<`a)6(mdED^}b-(yuN6iAjEFEs-xof-W$ch~eJpLS;P#5T){piAPdlk~-1pfuB@A%Llp}rb0ONXnOwel(JePoC7zK_zh3X_94f> z-tk{mQ#&>gN(X&4FmJ|+{=O|E`_PTzHVOPyWC8R&13#g)v_k3vFrtdUNALl(5eWeb z_91%phmT32s)&$iK>`B`0bm4)-Zv|F#uh+Df(8s>HSh%WdEo{PhS$Vk!Goa+2Sl|1 z7^l~HoH{zugde8ad2EmpzeXgKQia-LmN3Dk4^@RF}Jj zHg+{^>C2qf4PXxyz^b*}hY!0%r}6#^LrQ#XvFB+~=QN{xKqU<@aG^VF1*xvti#yX3 zo2%aR{WF}S+=eF$1K0)Dm}5NvzXe%#bqhk|73}(X56Na)lgxP^?uv_iaPn}@&AC-* zMc$smpM84{zB&HM`DH6O*>NE3V4b{?XKq#iRBi81o`%Q8sl2Mrq=zj4h=>TB(DSX# z1`#1jQi;GpDF`BQ!ZT@LQl&>26TwJgRw`4}p?x`+_1qNT*c$rxLeqg4Zz15uf}EuV zU5L;6D5jO4Mt!wt5P!!MDKS=9ulnQn^=hpg+tc%&O5CQPLvy381Vb2yj>Z(46Pi=K zrQc8Fd@w`h60zEz6v9w@go8HJqDI^=K(EU-@ogEffH3sL5HZ0p0v0HVCDjRBL6+D6 zi>as!c~mCRJ7YY0DSPb>1!b5Ks^I{);%HLjv8rZFr7o;clr($<3kE~ISP`8CbyXdp zBkq6~DZPpg?RK!3I>=`tj*;J&oGdhC_eX{@3zgEXwan3m%1Ixs1WUcALZ)>Sg6B(i z(dBE3`reQ_d%O6nuCg-)CN}4Mv^Bv1l3y;ysLVVX4!n4cT=@DkEHuiEE+BH{2oC=x zD|khsMIGMSs6Zn+n|oDy1>X5Lj173;KQ$hJeXNJ~g99y@TYe^}o*4pZceLu7m#DTsW6GVZ* zHB(0_aRyn7sat8p1B4gJ=mr;Y!E^#NzZAOVBm$&4@kGX5RV`nl6tF`5fd&iEdcn+n zV^F|fS;DoTVZ`xmGk9H}EqOY%S~1GmHE0f?&TerlmsQ7-UA{pdKRNHVHZ}C$0h>HS z!lAHHl-)yigr-#(8i;pw^yjU+;YUe2c0Imm#WNq$RT4n~J)rhn01`vnnrbjRp!R@1 z48Rfqh?IjvSB0AGhr_3SlpEwZyI)-d8fBq92I}omT;TjQS)6hL>T3Bs6CVinI(m}w zM(~$nh{p^iA~Yl&F|b1VCk%bWeuAgwZjOD**<+bSCyj6c0WLv|bLb=ES@K2j?dy3d zTP9Es#c{>>G`Koa@_wy6fJV7M1XAa>l+YkR7OFo)=C*`(86Hqc?u56nAW(0hU}<9| z``;R%6B9AA#6)Vs9MF~F^YaJ+qU??(y@mU5r7@*Sg8ndg^eMg(vJ=6>I3)mpB4E__ z+>E>sEN^-bS;2(`Fw)@qM+^nQiQ(NYCQ54>-_T{74IU&H+uC-YGc{ZJTs=j-F%AbR z$6rLCa|NL05Q&(U_zGQ|Y4&)>&|O;sax9dP1E?_+&l&Ncq^pN3cN;b{6Jx5+TMB6s zpcrIJIf?!yYzHt9034!046;H37d{6ww-~={j(L)Zqbw@zA|87{QeJE+2Mq*3j{X~8 zagUSgdbmN@TUTz!X!F9~_HDh2Y;I`#7IW(Q;=0p`nel6Y)9TX4@tRVGq$h|VK@hko zbj0uzibIIHOl!RQx(SU1WoakZNui{Xn+f)l7R0C{4$^|zf}X50dt!^OvY69GUvZ^< z$&v&G8unq7#A?mNAt=v}O8~F-L1c4Z-!4)48jY0TA7;*cL*d&^4#E=VTR81ID?f7U?-!QFohq z@iSTL2?W8dd)nB>u$vMiUL*lc$P&QD9X#Av?3+fG&a<1E<}wLeN6(EhaJUbns-aYX z6dZC;Bc29O^Lh+OlIY#kW`>w90mvB<)*0~`QhkLs?&fL;a=)8}~d829`&x1v;- z2dUtMY^_Z9u4_4fR%DfJOp5lC}y%OQpk6pr~n2OwnGFWJjYukzSnE$LT_3S zcw5uh$rH5-G*iM8eNY&727G)_|4>4C0un5{5(We4t1zB;e1^6}coLW{b`AHU`12L;&|_FNvb?-O(vdwHz5^oCU$F1_Qu# z=%BREaNVZq!t=i!YScq2JSBkkfoFn7jdXQ=A#bh6zl!MtfHB}7Mz@SlSh5!qkjD*# zI;w#Y3Y_CW98frLJ|SKTy$-3p^WCnD&rgxt5$Bu`9v+Uset@EtsLcU?$VRk_=(Tta z4uM$8E380@4qF z572M?j`+sMJ|`LQWbgox&;V7;qOy@%cginYNCSk^3Q3v%PY?< z+~x24yC!YE%uyaEqw&G(t!KOK$+njU+E6%Otw)04CEZRVaJ$=q5)N=lrCq8Ho{j=I zrx*!(m;gCxJ_MrNP*-M<%Nz&ds%1}rho>eI z6?Xtyy{-F~UM49IS6ISNLKsdC=#~!utamfWyxT?Ixd`HdL-H}F?-v5M=oj|y-vaP6 z&X19}-@N7Sozn{fuVSNQ57C2MT!*zNCY^(F2~HDIw|u3nSJ*h1j#pf_!A7eL>*wDg zUcGA(jIfaa@N`zxCV=hYb0z~cHy*|k2w&TRN}g*~Wv_ITH9_Clw$E_ZnCc4<&^Zzg zNm-dnOyzLvbxT#pnvnrYEkzL!jS&UCC*KnWRV}e%giW^5JjxWP*4VWV6^mR=dXDR! zE5$;B;v&=>coR6@Gn(~`jV+(T8P|!@wGILbkc6Si3C?xDz9+7CEpq~EH%kyow%$%l zl`}EB1Q@$XdCb+n9pxr~RIp^uLmfhvj|N%qH8Gspfm&3&Qbx{K&6_hI#bC(f^buR>b>yyPTdrHLV7kn@ zD5-=ojm833E7U?u1|Wdhfa`Qt_5ySaE~ciCPUCE>H;HD0QW>pK+fH%3fkets;X;_i z3KHB4RF3S6IiWKabjpK3-ee3Tph${!TC>zONQ!Pb5f`+xLph03W?NK7BJwq?9SA8C zi79lUZc(6BY>+NloyL+u08D{`#i?--h7&Uvk*IS~m1s(~Q0J;MuFVWJRu9C*Hg>5E zX)(o9rd(rJfnvujIw8+lX6OjVr_?psk1@=41sqs;&Yg{Pl`c7 zBz1k8Z4OQ4m)Q$>OCBO@JAOP@KX zG>zZ)SGlOR8caC=8aQ#{?oS>r|4Sx|wzVw$i5EwMOQ&;?UAPd?6M5OG{3bNP_d<+(I;{gB48`)&ig*Acn}71{i-PKz!cxYH zmV|O%iG_%7#OK#3%$w-Oij8Q%ncl? z1&iyLq5#*q!)XB6rluPqN;A!yQqYze7 z8oKq*|FXj2EOuuQAr?ut)|_MEH_P`1g zu|lxQ>8QVK?1P`>9h^W7H=qRyf+R>Xis4E2f!1tKg4?$H^8Z5Ghc)^q*qvz$4BnXW zP+*6m9J%pj4@}1H>Hy#Cco_gBkjWz!4`Ps@{OIO@WA#oPln)d3*fbT-og$1Hw9?4H z4TP}}f1uOdKtnvhQy^g%CwR?(H4*0?j7NeqiX-cxx1P1yKfOmt!QnK^D+24STT<)@ zDT9X=JXsQHBc6_gZLm6n=#T)v0f(u$sC$<74giabTuEZwteQTiO^jh9eZx1f#LT2r z12)wmKmfDCZnWJu&X{fgL{)wohL**vFR9dDad6 zM_+fVoXaib*UTXOJ=mGC2?UfUxL_!CH+yh!$s~tSZyIk-IAfs3W;``c!9B=Z@YVBs%o{<4%2J{;1#vmc>bbUqwvzwsSY#*X!8J^@kCM+hG~6RV&D9q z>!CDq!gT@=Zvb$Ob;qt^$5F!+U?u_t3;}-F0vz5q;MpH?CjlH@UJcAEDlumZ<-;V~ zQ(=Y(;DNx{AU2JCOis}a_9O@ZolUSQJorsOo1ha@^LQy9i?lX(A<+lIu)zcf83%rI z!2A1WhTLbRnTxB!TuIby zpG>{tZm1)hZ)ZpWv59S?XbsW>gMbHfK&?Er^bI6z{kd(c|36r7X zR?mD7H_1|4ePQu&BV9*xFJW0A>PL}blewF(xEA1}!UPSmRxm|ILJ3cxh%9LcVUrm# zD2RsD1u1Qr86-f7Y9K-_w_l-`n9W`0YQ2`e?$4Q*e`;8Ts{merrKsSZ1)}qJIy$ag z^;sh~)cD*Ro*Fov{@z7Zh9Mp4=pEsbq43rTPO#thiUd~Gs68ojV?SE*dS`F~9)F~B zse8Nie+H=dWXL3A(020&r0cOV3qtL7zcO%#`}_D9LBFi-^t5ntUM%wRMqa%*rb2_# zn0x4>G6Cn)-fRWHeA52!KGtGh)Yvl|$=EBT!+EU6fJy{C7C>Bb{4qe}WX8&Y%b<>J z0Ock!AZJyZ3W2MJ3^K!73oMlhX;h)a223W5LRPLT<~G^=vPlFM$DRV{VS8kh0=44S z!$p~^G?f$T-`>O%Z$-PgylPEMqrWb0H{e~R*7YLc5$|Z|YEnmIksMuV2I~n`fHsXh z0_ySFID;X&@7w{Ly^&stZ-cOOfkFZ;bp;|Q9J+h|P~-zc9@9-*dHAo^3+JgucbkSd zyo{X`bX&@P&5jB3%uRkXuvU!luOumOWA|;K;oM$={$)rICx`=lNgKc>e2D;niieJD zbQb^CxDUZlRZ-s2hum1cTImf!xvz7^UVpB|!+X_oIqjY!0s*WSEZ43}Ehh_+(-nmh z&PLFQwj}_lsy2$@W?0XhTRh^ zmH~nitWMQXK-UJY0Eq!tz``KL;KPgPr_Bf@xi%5Vw_%_W4;AX$?%#MSbUat8U7<}A z^-DW@A5RZt;-6Tcf+)|U)*&DR4P2yPf$8S!@Pb4Oy~s<7tB}+o96Kr)kf@%C8nVEk zas*{vN2E~Wtp{$BujH||@(D%BL%a)jaWAhA!GX*05C9V~ok4t64L#l*-wV53{#Sk2 z@-Op!+;m&hX^=Rn!U6x1JedfF0$vD2&y1dkT(W_U5i<>ncpxAm&}ti!{PG?lbS+u3 z((ZIN&|6npZ-h{z}sG<$18K*SA%S*4xzxac%4Ie6l+d% zZ$+2Tn;PVp!F@RM=d~aKC`_^tlMJJMfiJSOpf$3g@(kjV0N{3xT1Y^KevnI0yh}O| zTbteNEkpuBmh)Y@ayxy3yjj{spt~o-KCKOJ18=31Id$7;eGMBc0XvYKzP9-=4rPI~ zK=0uO0KTP&j}!;x)f9nyL3Fi7p-Ic+;Px{r-qz4*O!>Gh>EA7+U$j$+R3u%-U1}${ zzG0*p?ki{T;NP6REx1?5&12W4Lo}NX$mEJtAbgA$*pBR&Zy+IZ3R(A+IdyVP{@+_X?!E9w!r_TY1|CwJ8;85G$#w)!$XLb&{K>PAq!XmZ zI)x3xZ}`@2F!*z}jAUy8Uvs_GLqGbl8->ik!O;EV=shW-ulZp-TOX3Pp~ zd^Rg+cWHFLN|Ong7w?YwLa(9#W5IGCXgFYmww0aEN~+@#+Qs0f&|8<{O_GFA#u{&M z-PMZ9*NQM_ga;Dg&KQxXX?>q+`94PMmw!#hZpi2+ccAl@r> zx{Zfz0?p?_yDaA_Uyq9Guh>FI&M%ZIh3&r7u=sCd_jj)Sj`@Ca&GyTL&CoBjLhUVi z%*=(42LZboyrohUXdIbJ@kKb>M7{aKgBS#Z+ld8L0(rp!cr$@U@ri>90oXf`4qgM& zQ=yiu#Q=RLka@>R4Ui~pobj<^)*gC6fc`gukY|#dZT(hasUcCXK<4jjuU+*2u zVnSTRW?#{H=F1+f+PGf>RX*r>OU?!)JERnA~iX2n83GtFdp!a&mHXin-%CM{&N<8qYDU z>a_zL`$cka=9c0B(f2zF7{GAK4)xoEwkfdB$_5vsznub70HvW~c^?>OTlWk4Ip(VAJJ;YR4DzcbJ2pE$w6)!NW&mcu zTr&Y0pzX3~61C-*A6XSl=S?$SQ}hf^<-!JQrh16=T{d)z$!kX7Z-f!iqW7`XQ49D! zJ550*R)U9PqV>iKqr>mson7y6XztW}rli0D7-*G&r(u{=#OT>@H8o1P<)U&92fQ^L z?FhvBR#%p-_nkc$yLanZX2Y&;bFwt^vyBZ^gOHWV@$+2qwRW$$<9kC?;t^FI%`ff| zLElIfL=Gn!DV7EoDrK*ia~aw+@KU7_&X!=7+gSkTVx$Fer+B-fsQ{LoUj_Ll-|^dS zd7cb-cWMpaAU2Gk=$PO(z~GMl0vPisp~ON|d-Fk93I}^(X1a+W71EuN?c?LHD48lg zd2^q%$yT&bqK-X|zFy2+cafTzGdnZ6G?J zyWO`U@VK1e-aeZy+OPt_*eo2@#_P8+(&g1mfUsr^cT?j!od$;4@CW$Cra}y`!Z2w* z-$v+kN9%26IvN6KVGk~4ax$nhcrQc%gD58z%LozRo)V?a%hGl@c#R3*vt0)4Yym?R zAbA}_A`>8hARPLV*X0+rBoI2mIwy zh?K$ofTM2J@j|cd&*Fii2eIwQwWC7tGEH~$<~IwjHEmroV5S1l1qQX&q6h#Ki*6(_ zO9Y3;;>0aVp#VtELyEb&kwr;D4+biF3Nb@1$K2}66=gq<=~K;rmR-+1WarFYRAr(7 zorV#xPd!Y|?ObMq8iR7np7~Z1F@LyLAzZrI?$Fi|4Lf>gttLf*1!ZKigp8ia`ybd`%iXXMxZhJHQ`a@xVa94GUmWW}W%df~5DY;C5y4RZxV%Py$_G2`?v;=U9Ag~^+N77i z0?@3?`h!fk#ljjs_3%7mf#ehfGg4jPt*J!<X$K)Q!n4J@TTtA?nnCunIgjck_{C;L*sOGe zf#I6oh~?@I86gD$zl|r`3akA~OP7069Eb!+nH&2N^8CwD#*A64!%-ZORh%}e1ptgY zebPk(33qvS-#4 zX4dW4{ef{FR||FR<)1-S3(EAR{z4z1H8kO72)C?ls|lcgoikOGON5;dYz z+}c=auhD5=z)aVBHoHy-A-VJwx7#~fEp@h8+F<|@IOgI4AOa*fNF^#ZybNOzVvI(5 zyCwxyVT)lDo$G~QEW%n?D8Et2@P21S()u1G;=ON<*zz3*Nu#s!Zr6#YB^1#D*hYkh z!vI(@PYM}V5ls~SN@3Bzws*8uK%NL7&IBNS>V`!P6;;jV`>=P@1ju4R zp@`TvX`}!%dMRpMl?-cXOsT~%6b0=-xM-uwLZobTD8p0k8j9BMGi*IP0W+74M_ zY3H{hg$Rb>IaKjQ;j`zm;RqjW6DWHx9- z2|qPitD!N*V+`KU_0XhZgJ-7zVRbFXBsh!!@i=6kj+=g0OTMvujg56 zGlbY@mL9d(HlE9+m%;)#GVvv$#vAZ@L(CJ+DfpOI&E@kJp$*{mL*0tUh&*V#)XzRI zrAMdVMaf<3-J`g+L)ygnwAF*3Q0nq(%vU4MOSPvq5eF{}0I#1(;|{E@xV{daAY^o_ zgUYqYXwOTz8VC&DMBa|u8YUlsT^b`t4H)JU3b0!e; zg4b`ZiTpI#Mq&J@Oxhyr$AiO&lVK2*yf1ekW8&WkjCYVsk7MOUgB=>qW+^vW(3lMD zBzT6;!E-ou_DX>cj60WnrL=_O)eu73cniin2_w9PP(x&;-%y}p23-GK?tZ%4Idl^X zy69t+8_W_eHq^}RiPA{2uZ5ebSz2((=%XfO>AS~!nOTe()~P`sY6q3HRg zwjz1qWaC&v+l%6hcd1t@6Gr*FwdBjwEdDVon2I39*w~~zt;_&&Hyl|CoegHQdi84Q zNIzymajU!QyKb{WiVuaf+vN9s2bvu&++R=AsakBfdvH;J1~H+n9zg=y2qxm>B$Ej1 z00T;nO@NVfm|MTicdC!BmWK$5YLXNRAukw6G-V6KhL|q0ynv{JLP4k^ae4?5Y{(T( z3X3{++4Bw6T8@t>D%$oMxI4It4KO?M7c1LEug6=rh;au>pgT$o)K$OG$uOEt z^Qm-&At(mM!zQ)4U;xq< zo`F>}G!LXg5wp)C;zUXbR8r?LLzbuS)G&u#HJEzE2eiN-FoSC=tdoEr6@0No>j$)0 zJWw!ege+J=L=8U8A%-}i3{SH(Wjw=tqmqp+TsHRO@)| z%{1aRN)aLzWpJb(vqyctxyUVE8Kj~3j33~DS%w$10AQXF39Bvfaf{lhxK?S2M@B`0 zmJ+cQeIwo7(8OqoBLKomm(bfoK91LDG`xk9Dy;rKy_PZJ6R4Mk#DWh##Xp`j_?S_#WduUDFWs{qwHc9v>CjlLKUsGY0OHoH@1OF$!K1 z!WhsbK|r{Dgi`h4UZIj@I}xKZqvCA34hI{Z~KM)4!iZ?#-J$Ua`9 z0dT^enNKfyr6ER^W2$N{DVMQlrrs=PWmI-?QZ zJ<7H-B|E`c0h;a$J<`lkEPzA>t^zzmoF`ddl2`=sFw092iVn78Lk87IVSG zV6|1X9J>Ie5SusOAM0!%`J5u+Nu?NL&|Op20xg^zd-l71bjvo{#k#)KSO zJd{I`oCk3)~p*agnKtd+m-%doENUPR)z&ne(78kGenNUKLXc${Q3x_#|jUTW%$II`-r z)0pz*N>gG$`ve>b-Xy8y-OlFan~WPy6h|vkbqU+$eOi5^p`7uVx^)|x`9|wH8Jmpq z&lyQv*^`E~5y6TpW@sp=nY%EFOuDJ4c}88G38)k%G_nY}fhf6ymn=zuBp{bIvnlZ9 zpEz|yOo2>&7K1W&Rg~_`d%=1y)^+@`<*4Ryp#fnKz+gQx0Hla)^ES4GRCI08Z%QYn z2cvHKG0zS+H3=}vHtNU7e6bPYa|2EpBnW~f&k;!mFp|C@6W)Kw9cV-R&-HgWIyT;Olwe>|Za)x54dzgA z1#kCDAPQ#vgXIE<2|4tfL?{G(fUV{4K}S=SrI-moXXNULy`ML&B6A?9esX0Cu9};P zjk`TcE1wAykb5v5z=b0{X2;Yx5eG^^{NE?NakaOa+pQTMW8&wr&*ga@2CuvI{)@|L zpJtQHpa*1ywp4{l8rVTe3W4Vk!UV!%*@hTOiUH7gKK}XdGjju!hm7g{KWD9*@Vs4< z*||wJyGP1-j_-_~^$#Q0>X@D>OXdzi0mM^?G*$LIXBt})Vkvk=Z#hS7&oX%>$HeNl zCu%<+ShdP{4kR<8P#V%7mgV~qP^*jB4!57;u|wQmN5akE4Of-%V%LB$%Dk;aOewA1 zmIfT6>HX1MbJw}XCoe~f_z!+$O>xr`q1uAct1KOSl6#?%vTri!cz>$`o zxPSoU@0{X=02N^b40;vg-D1{bFp!kxV8}%_2rQ`q&>$ma`INO?=uha<$-D}ElXf?} z4#2IBuS<3P7Hc7BQXs4|UU> z_7|R?8R|qR5;9Bgwu5nj07@Wwtp=~1JpvC>kWhy^5(#9TvVqh?FbfSjV6~Yf*9!QY z{|WUX@I+Fb9dCZXgF2oV9j)n0 z<@WRW+V;l)?g}rIbCfU+v0C-Ebfk{&>tWeIG+ihI^%_VR21p2YV%*IIY_9uJIRS{% z5rQ(f&mBwFXkQesPgXEN5fh|@2qy>#!O%Jlxp4cZuat;qert%^k;kfUb#yc{3^s?K z?b}}~S_rGO<~~OIZoq2Ovjj8JvPvP%T-Jm53UF(%4A67I9&rXL68J+8C!p%P zFHc)fV#-#)T$+9c#nAK^&7gt6gLqQqF~r0W=FGB&e>PR#TgPWUaa-N9F#}&gwl4Yd zeKZ7d(8DWo)%g+HctHUV319#j9jD}nDcGXCcc{nbCfC;m>(01(P;i3i16GBQFn}7A z9=b{5dRaT#qA1u*M=(RVvwGvBBb*`lsu)H3;K$kSvgVzmkCA)B#2!m{4br3@6IMO# zQMjGeD^GE6xZ&fp;uf@I0G4`+hj}SYL#7J=bysSKHR^G^ zE>LgD94^;8%xJ~~lsrO9Wn^H(iza=|N}jx)wO_ROa=b23IoiG1UJN6J+{-i>H7`H9RG}ky#3~5 zhMh&;)iIJc#5^$o4h@OzzlHOACJV|TTS|X?uXGcrdCReA*Lq)Jr z5dk>*)S)apbnJXOR<)?0Y*WyMN?h|nu;G_ppe^9>9!O(2cMrxHW*!3A3B2XqB7s{a z2ZD*sq6RmH^NP^+Jh-(A$2;yO>7-VHoni*A+7&&M+`ER~M-}z6)NeV$;Q%635sSNsT!iSnf0co7EdAQjp>aotGB}x2G z9Wjv>8$9bHAB(sxwj-KaAm0tl?utFa7Zu&dvEKskSx zwxu&ml{Uq=l=#GP6xLJs9_D=CjKucqNMtf#Y0~qeCP3{i9 zRdnO%DgaRo!zUem1-AGT72d9i0&HDu4Czi9f9ao2xZp4Q6zO+d_J5lUag%+;l8Ru zO6!q=0YK_02r!z47yyB2K-jW_=29H4)7SeK(e`+CsKuGQ#s_9brz@E^faIGZmx+ON z5Hl=U*+j853Q$fmve6Z1OllO#tln58K$;yM!w2ASDO6t-JHHxBLi(d&j(6o~;P@qB_Ke5?txb%O1A z0Rs;7#=N|~Xxb$i#zNMroeU_70E`T2O9>#cnwZ`XkEW=(-inyeZls=2PolNPEFDgXlF3T|-pdV1Y2KlxoyK!+fPu#f^Hl${X>?eQ3pq@)nuDK`2A zFP`g3Ln=A$S$7^aW}V77x+OyDd3_wbD72|&1m$PgQ2%Z^TO0>60N@yc00)8yK_}j4 z)f#A|duyJ=?X0f5A2^R3K!PTKA?B{3vulGcHT!61jpDDBm$v2B-|UqFQ-%3umzzq! z#6NI(52<~m`6^<#d*`ICUb2B8w4SqL31S_H%*81a1t36|j-3S!Hes?;stz2xD!rH*05P}Yd!F|LXx=Dp8UYdl35i4J4HP<);UW9(87vd zkxdru?jKw}%vFAJj4CHhP(@_rKrWSHNX5{b?3(K5ba|PS#fPB_&9lv8s)_LwPO;GB z7iXliE%n?68y+pr9K5O?9mhqeOCdq`sPA^|^b1?JtVX&XKx!RTq&UMO20(DCDh>~v z6~QCN=P<$MAqWn1!T@mNzh&2WyR9y(Z?D^Nt^6-LX}Uz9S!eC{c4ljH8r6YGga#^r zM?&^J#z{57icDf@TZv644K9SqTY8R#xKQJPzU<{2qn|x$a;OS1S!1Fx9R~L(4s7ZQ zMwI<&i*-cn%GJAxg%P)%r&M$LDP%Yb01m{DW?&e=TiN@auGRxcz<1}RFffy=Yf=VG z=xsPYL%P6eby-tk^vS8I(BofmzsHW{SZLRwuXhH%Kw%D-W|)yS7-o}Y-0D;6y={US zZZ@X5<_`B_R=0u-^t{lD2hiKHA~Hf1$FC{lc_MVA`RAaB5F3MD6@-fpC!LW@nghD{)oC((-+NPtjC z7|;rIi_q@ihb9Bm?i!;>o0n0c*ff(8Nn;j^B=U$!;#i?eJYK{m zT#3ekG+eO{7eI!JDk|i=oJ2_gu_5EC z!R00_P_Tr>7!v{}or4#7vye?J#e_s&veArL07^28hIUDk*;!=7qGl8n(AY|%1Ctp= z`Cy(lluvN+Ja>(8+PoBo?{b3^;#P-gIv~{oYAy#vZ;>0)uA<^3qB^HJQQQ!-cKfb>8>N`+n!n=fU54 zPciSe=Lz4aqHq$ionua0&E4FKl`tUas#dNpShFD!S&C6sR^^OrHT0S^OlY(m@q-_K zjId^-GaQnG70IiFT7qNBWtK*E6`YHO?`c;fUm6hV8itoXw*nC$5(s)2Bn@uI4G6LYWzFeWF6X-HCnf^kL)%xdl6V0jez+4l@6XPDIG)lRDd-LMUdqJ=Z8 zw#__kYj3kLB>3HzZL-JB>>5LfD|U+T3$$Iws*ARxCXwd(V$T%bCLZ5!)?#te)wrvl z&*l5e2M7`&U#n%2heT7}MGF+#1)B~a0Kcrmx8J}Qa%?sW06-4b5kgQPOS*DU4f8C1 zVc)DB`t`{BS`2`O)>;^la0*1Y1>yj}PByx8Tp)S##&DK@8(D8@8W-H`cu7EARFfH} zt-uNpFi=LD7`ez|1XxT2BDkT9=5|Ut`sG}#t-_354t!h2Kmjh;lEB15SR{_Cd9O%< zba~0c1w%eA3PAeOmtX}w#@`;q(A-1zk@P450I?ee7$pSL0RyZi80S_{ z0QmfdpQHq#uy>ZY-uG&w1-v>k)B>acKm|-oKyI*5+;tz}`zTZ1%O`a;WnJac(d;u5 zeMK$Ei65*~I|D_08vq6XLL4GPkiNAlA{8{&NllW>lIxLLE=D&dI?;90g>oU*k!o|Y z5HynMgo)^^aRdPFaQ`DLygnr2nbX*fDp0Iwm9X6XfF!f2u386Z3`i)kB_so zi;LUxr#RYULrw!Gga?xXK?8&vw?MUhYYL5V7UVjSCTDQ6b!HL@Q6d(hsTSq!X<3ec;}h2 zi>Ru+e&UXmdMoQBavyKvLBnzY5aI~M78USmigE}D2{p7??wBAWS=SFcy{?{&ZReM3 zE)lh6xSuDOObwN=9QDsRxip?9lh}5ebA7wSVb1M z7`Vksvx1axh^vDDHU}j6>EIwOWluJK_7DsuymoA%)Q3AUux?5q!e9anZ{u7$ZgF!) z+VMEUOW%QV_$fegEy0gj`(3m9ykz|(PL^#aEuw_XAawRHJaJ1N$Zy-Q2URXxg=kME zA(b3ELF3ORlZ4F6cN!%`%b#TNa3yH~BLdGHqG3S=0s+IQxxVvXo3+~V`<-js$BrDP z1}`?nD4Z@H5)RIPglUt(_#Gd_c?Ef;jc*x~jWtnGa_#gxWdM;jC2oF~r8MiE-o48m ze9F{2Yxiq&(?|r_p#j=Z4F^)gTnd;$0J#tWWb~#Ew)&)rJg)zk+Ec>6u6X=6jCPx@ zFR{<*&SLg^uBI*w&1|NH%W26S*$ASzDrTuDl%cHAWbGCKxM*t2v&gP9G+j{NMlA@} zOF}bTBGZ#Gl+TV|V&^^7Qz1&Z+14Bzs=NqM19rsM6pK1`5+ip`V@k6MDSAtz45S&j zL~~>@k_lR^g_jgwOj(&Qw^QyNh+&dyn0xNJEVU7hX|%E)UR{=4Ss@USuFD2-LOgKv zLKj7p7R{Sd8KE!$hnvUoc>C&ooO--IroCg=rBKP>4+KWNwR>GHcd_2fODTqWU&HB> z#(S4IlN8>(vp7UxK@(M*5^)mrO}3+XYWvbI_;$wt-L{oBGsQ!xYcgaA$mx2WbYxZh zZuNePTf5Ul8xkc=K5LV!;s%xNao`y*V8Efgg{DaKaNHaL29Y1?%TQ7TcUl9Y(Cy{V z`mGO3i|u1(`vJIE15(065J5n>8}r6)elJAPlAx100~U%}N5#&IQJiXEX|VaV_{LN6 zjcr+pwQZV&h%(HzIJk=|O(tl&6iT65EcKe%phM{*qXKi?jMTx4qCusbJh>#=LfL4Z zF|p|(MZ{EF3|Crew=))-#9E3>?8~+hj6&nsU_{%FA1WjZG!oGO5dek(BZLqs3ATK> z6mud$&ufvsePFpu19xHHq|%D}EKs=hoO@K^IV_Y)eRNt9bi=B0glDyjzzUY|k&XXA zRNM{+ineb1KUPV0ELAOOBPUt$kX9}~9yD+v*2n7FpQ%$u%hrhigU%LoP6O>)xXGA=gUS&dHe;Ib?TisO<2bP((~Cw_ zK=_Jy$Wv{WDqRfI=3#aa^47Mjb6~<~XGUol+EGDO7S@$!8`<<&ZN!TXi4WH(2uO30 zldY8GsUkdhK*B9FSGeHja)9ZP*><`5b?Hfr_I=Fq0UNHqhErrz0&1P3de)k5P3Fd@ zD*zu&&Ra5I#DLUM7cIyDoX^-8%Jm9py12XS*pzu;5(w=SY?<#GGX|ecs(seUxF@#9 z`JMY>_M*p#2mvW@v7LP`DGZokF>+x5s6k1F1Ssza98f-vNCy~&fwy;-qk=$OwQLqC z{kX4@8Drz)!lIxYnOjhC>(;5tsgofo2+%v0?cYK z({3jqBYdkh+R{Yw76js<*cclsNkVW%ea2E{5u^xPJTN2gRP{kB3GFMbQ?+#poE%$^#gFUg$0};>$CPWVS!2*b26%Ys8p?Y9F{TtRNSInlk!vYc|J$R2p z7eJ6PV#1&gDmLfTBo=MSkB&yR93CB$qi0D*LdwmC-TDWFX<^KeFju-kaSg#9*jM&N{F>jj*L1003p3V!JyFPd$px1=s?pf*!e6`fJH@L!Iag*Jif{mK{eU zAG+wyOx-m=m7cuA01zr&x@As3Eo-#0R`SOPP#J_;G+(N(#&;VVyMbq@YUyUfV^}fV!MC}ad0|&& zVZw3n)j%`G1qMU|d}QiP-W(Wdy>?&3jcwjEUG#Z5N(73`IGoC}MGX^xj?jp@ve_dCOFg--Rol|XVmG#w zgI9FG79c}AE&Id*Mk+3>T)g9VDGdyM`=p{bX1a4|#2mA;xPZ(wM*hw9jtl-cX&l#3 zgK0fBlWcBUpv*%csmT)uh*0O9a}vZajFt{P27f%MX24-*s%e9+bQTevTHcDrOGaB7 zgc#Fsz=q(+7X#&}!NT%ndPJ~gVoVpIc;vV&9(+MU7sRV;(P%Yn7-D>NZ8YAyv6B%L zge4;Fle8T;G(=y9{;=b7JGi^rOVjFLcB;bBl#_-PSHWLPUG{ZpkQmjjS1ByjwTwbV zl1~E=F=rb6-oo+SXcZ6@re2J;Dptt%@kaQ-L_kQmKxBr@uo1=K)&{=v1+8ux71~_| zO;PA*3=Etfq7|(Og@EUgVKVc~0v2|4;0UnL3nON#P0gk~lI_bVl)~R}r%K~nT=?zO z@gfLKUC{*S@H%|g9VBN?*@o+ofH4R=OmBDm9!YO#rop%AS`z87aCk!c7!-?}9f0&B z*+41ffG%j$xM;JMjh(X-+)tlvU6g}EthtO)`aH*L032(o> zaW2&Ctt3ME*=R2gK(c>OjW*~xmc^A$RUoz!+O(TC5FQqZ9#TqzB14Wo#Eu%`%sUZ2 z(WLWbz$}~ziW{|Y(b5M{AqRit&F1`3fu5}8^P*P<>(!_=H&8`S(I_w^4M0lL}^Xk^^QqoLfOB#vw03;)g1oh~76!68`}T+pqAv z6-JAcXV<8DiEj9Vvby|ycthHG)XR2IYoxtQsnPKo;HYR?>3o6p%K^z)!VuQ_1LUdGN)d>}*+(9@kd)R%KYLrfcE?#KmB#qQHP9Jjy7yqR$Sx5U%Gy;m8GqjV_1!(y%XVDS1?J9DQ#8fK}p4K%ds*9D^*m#o1miz4`H&K8EJjSdh}6-)avmCLpY(N_tf~M z_nZe2OHKrJ3_4 zw5U=nij#XZYvx783Kpe?_-{AMI__3w#|;VhjXAZJy{?y6GFcqr#xt)GpA63mXSoU6 zE}JMt=i`Y>aHoYa)fy>YYa0*3ta=xpD#|q*M_&JijqJs?D%w=Lf0o6aw=cmvI?5Do z?4Ekq2D+Ya&lP4EQS*B`)?S6U_JaFRTiy%64Ak`5B0vH}f;?griC#NM@z^^;E$6f9 z1yovT=F0Fhr3R5{sl+(}wB*7fwC40U=^zzsY425*I3G=sv$wmWtSl? z0;!Ih?sDa$QFJmAv4T5RBY0H+RA7X+NFfs_Lyd9vbV@pz7iChbhy*m1`g#^itSxQ8Ku0dWMo`j@ZQ%eHY>;-q@T#Hgx;H3X zzZiP-7n|I5)ulcygE*!@D;_6=G4L$UO`GTC%i+ot&ThHs>v-jR*}Td#_qN7LkdIA0 zyCK15IpSnz5nN-8;p7ssPN$hDNJ!7a_J>w`u!s#WqFAVh1olJB24_B@vLowed@_fU zGXQ$=6xLw!K0VkEXV$IaVxf+KZyLOo+W3BSwK@UnsGjH?lVi53Gfj3veX^l7YlkW4e>SJJae48XAv@zK_CiI3l zV$+g9_ZY;iNSYiH1&S`DH5H|SgMv8-6QF>EK<@4+7J$-X4^Tr*9L`6ay@tuiZuCwb zdfm70_7TxmR~;9@B}jI)=4aZex5!Xksk7pXi>vU};&;sG-$bxGk|L5C*3~&ZcIjLb zjBM|cT})8cZE+&w>xZ!mMiUz2oT@2gY%hw>5^x zka^7k0GP=^HdR!ZD~UEKuLfsR4&?{elEah`5W#yE3|6#ZmMv!K14#)B?xiAVj3WVwntN3ak9$L_A4j|ZwrUUJ~%4^@EaZX;?cyE-NX2tp5Sr-XTD=@Q_gK!& zDQMfR_rlv+6XewO366h55x+5~lcLtXbm7t%3xscNsGeBC9?>}yF3)_|s}+@}rPpdD zqFu#SM)2IY2tfdk7!f$l$aa=?t>qc%h&~WYwBh31#AZw1U2r%n|70(h0qiMHRn+uvOmE@O)3iNjB5;WgU^@P*Rk~Q@was;KN-R3Wx`_K1t}iiVR=!~%@SI$DDLpsY_3nsjkTW(ehk><|G(Z->|Hl`r4R&q9EL9dDPLsTvg> zo_>1riJ(y46HmVKgu}f-8ZUat#6~rca-yDyWTui-q3{RVIlY|=D8yin)6C}rPqS%gV5Cs^YPKJJRjxcq86 zGG(sx>2;v{S|on>&oPsZ-#o$`wND?|Ykuq%@8PEhr0UmWgd4s(to=Owv5- zPC+EIrS`TZ38jM3MT$|ElsRlV5)A=#Vc@9=_ubp*yQgXl1puM9=Rw|V z&90kNRf1_x!aWtxEl0eeiy}rSiBU}#h#JsUHXTKjC78w;aK#p9(8$_o0kBYgmq$7> zC~8fYvi^&jgxYf%nyIsx1BbZn-&HV`x)ec^S-DG;mMv<$q8pSq1(ZGj?KivL<8zac zO46BG`x*1biKo}Z6+IayR_%;5D6{GS^z6-kVR;n3mxoFQTg4qMFMpbB4cg$DkeHsH zl1JL3eyIdQD<&}a$pz-AUhUE|aR9e%XwW3Mg{5Yh!Mz|Ah!&pRcv8Sm<*I5727T)* zA7Jh29mBt`xQp2kinZTR9}#87-`Up6!WIUt!*?&cSwK1rU@A&mf>+Mvgc%4bDLjzY zauNmzH3sFrg^Pk&b*MkOX!vK*HjHl>Rb&KVnJJA4X06D~(#bn3u(Zl#R^F%v+sI)P zG+(@;#PbC(W_g2yGy^7bC{ncOmS7-G`ufO(t=T0!R465bSvA#`$X0|G9Kyy2@&(b0 z63rGTNhvnG|(-T{`*4?sS4g#%F2cAdKCYKsMqS1lS9Bv_6Y3Ak95q8f0U-)eD= zbAjMlyoRj@9I6p!_X%5aaBSf3l-*Q#tCV?}3eyN%0Q3ywW@5X8W8K=AaRpDzWFhq= z7wck90X4zwBfUBS9Ns-$zngrsXkYEskS(ngznM0ZPUeS$yRV;bRz^iTI-7tn>HrV= zSbaM=KBw2<4}F*MVjhWxe{)Zg|0}40zxK9%qdig{uN0qt$bDlB-l3lB)=>Hz@8`fD zQk%9K=xZ-J$?$$f4uOQ(`BXP7hs$U5B-R-Zb*oLJ*?sdS!}B-0IG;86e+talcBp;d zBJchV;~04_1rMCUyWTAi>2u;=>Q0F!my_=(VV^lFOxcq>PK)n#YJ=kqXc zQhWsY=ou$Wg!^N)r1{L~Q;df(51f$Wy$jSN+-ao#*OSrRcd<@G{^Z)vuEdAu?OjyK zoy#W_XDP2OBJR-omT%K|&PzE6bWeDbwRLxwMl73qbUy2(=YO+#nZ##M!>~hHzcT$! zpPz|1Du#v!Yuc3PS=2u{I4L>%;`7sRAb4rYXGG4S4GyQ(U4bVTlS7!P*zH|*9Y(gC zNjVQf$-qv5I`(wz-lr`Mq=yZimap1iIBC9mAFJ;1)1YpXX_I}^P~EUPC$dd(M4Oa4 zG!4&ZPNmrE?EYp>J0YmUT@EV)rgf9VZZ6M%aG7$odAW3~-X^)wbT~Thzwt2xzgILm zG@ovqXTN0X)1hIo?W3q!$3v}o&a*RMp!IY$9pl}knylqLhNV~vv3|)n?z;}zT+%TW z6;*-2Nzik7xR5h>R_=t{;Ij-ar7?oxCnfL`A<3dBpox>XaKKf7F&9^jtAca+TY8=5 zbCl~3c#@*XtG3n)ASft2iy>4=IjD7vI|t`78}T8=WZkkAoMaA_)>aCnJBAgCLuDbo zV4$F*ib~dY`k&2-%4X9hfu1Q|m7NY(uYMjW735O0SE0rQAgZcJv$SU3@{=T0CuoGK zk#b4ab1oQUtHo%dI8OrMaaN5gX0}vCH(0Y7T8_;)!-%M(1ZGKbZM9JjMX6=1R| zzO!R9mzz4qO3TbO_v~|iy^u~q!Cgo&C+!2 z*>!DD%t39c#a^n>SgOGd`_Za&0G@u<(Jh!}XmL6##d+z~Gp%%tif|ZJO;?=uEY@Vr zibf)jEwE4&6+~C;P%5Js_*cJSgjH3ZEdz0}VX(vPo)>p^)5P_(<@6V2B8s4>$Zu1* zOd%Fb&Ls_=6*XPLbcs3Iv^w#66uca)!WAPjTTm36uJ?O@G7#!_7hxg5V0LNaQW{lI zMOGV5*L`O5Zt62g>sq2K2#BlHwFM@Jlg_*+wR9Sk1(U7uIKek5uhZGt=S{b@bbda* zCmo!zhanD~nWPlwbQg%6m#}7qcqvmtLs?M5jirZGwZX(R=;q+xY8FGc@m6@0(t(OAL~!0cTtiw!|Us3;2!cU97pAw)z4ibWWxD50qDd0b8AT)qC*HalGKDamI&I^L%D z&h6_FWZO;~CY|k_e|Kj!I@hw?=*Izu?=Jftj++CVoGuj(ne7>_fs-eK@zi3d^%ez1 zf}pFt-SjyVr%cdb#ej@PF@hp75Q`QHj2NJ*D&V2Ja)C zd3@ZAxcu&KGc!_`NxG)%SGB=6;=Kc?%y=F*222-u)mR(hPA$Bw@iKXg&wXT+Lw>`g zPXD>@u_2*ViYynhwN@y0M)t#~a_MXeiy|VZD#Srm6hUArMG=6h$4Vl>P*GShBBHAm zKv5HiR5hQ$Y6J?Vd$A4`jf)mQH7PLs^>&A$z_iI+vP++t;#cBEUi9 zGIkg!qAIasBoRkwj0&)I9hOduD;6ROEbJNBpkac+RamGo5rTrKuvj7jqZCnMF%&^q zDy(3jiZEjoL6KBJkw~zM6oSDLEEyGyRH$|6PN58$B7zJNdp*1c1x1R+ZFPM{IXruz z0c24XgOv^5Rvd)t_+1t?4-;sL3KOgFyF5&otXQHdF-WjQRtT_Ssak-i9Shx1s3LZb zt28}lOJFYv-ydcW(zF%aGAT^Uhg&EBr2J3a;J zy4p&cuD@Ffs-qR;c2|YJrfgM3QWpkbvB=US{)Mk>Wvhzcx3j8zdq5oAFY3mB1Ntcb-T#fn7{SfZjVh=Rdn z79$0V1r=g~Afm+)MFde+FLluJ@O0@jWH;NIZyv9APND1*z-IJC;UwX13l6yrJS(T9 zy3Cx8ipkn_bm`s_Y9!w(u~89Vuw+Gw$i)#H3Nx}{d;74+VGYu6*kin+aqK*YL+UUd z5`TJmPw2Bpk@cA6q&gHP?GGW+Q~9@ddPfVF-Y||*k6g7+eZ5eyk~h1g+bwI4o_OR# zQ13CJe2E&b2lIXh@A#g(Pw4#r`u|?J;*ik2X4Vfo$>MJ^?a(+3)lU-2c{+bObz9H; zUlIOZLq$*U-udt0)cVc8>d*Ogf76fS$CTmOl0Tl;`Yn&$u%YCVx*Np3l3-)Uvqmn> ztNz6Pj7o|uHphbUM$8h601Yk|RkS$$L-;}{Q!IO&97srXyUVhSoM3>8m5%cd1$1w=uabeP=o{a$~Y zt(pI?)Zl;bF0XU?`q?TU=B%GLhEJ~?A{*0*#T_7>kYK#DG|BsP!tPgaiN|LM9I1$i zh1PY2*0=i3qQFk%IKP~&RSnAfBC+3O6|W)E&Gh@iZ4wSkt2Imq8&W`LTt(D=mj=TY z8SK-(X1b%D0;(&iP78)Ata(*R!Bka>C~=yL!C+NHXVoBXk{E*(RZY@WPj39yOg#$< zG3gSgt>fbgkbIM1DO!s+l%mEUqB*nGKCOY1AfwA{6ugRIMnqH=k4bHCff?(qlD6QBXldRbnSiX(yMVV2Gf)-8C?Z3dB_w zDuOXcumsq;%)&1fDkz{S6+#LMswotU0Y!qUBvllGBvpaEv=jx3#S#i5A|zO{EVhcU zP*6rFsH!UwfQo^@=y%yNBR_Eh)DvMb+&d6QvEk( zBa-m@&Z*eZBkgR=y6}kSXGRF9qCp-a0S+C^ZD;sV)jTK$?*C5L6W4XRW}q>jvzGgN z-RLJJo}Y26iQKpCP_Yx-uIqjB{zb(&9|@>Kt5H1h2>d_6tCEaQi*Bb5AV?>Dx%^FM zZ&}RA#9yjjOX#)4arzxlnl(T_#rr%BFU-nF7bYGR0FYkAZ8|IO}{>;gdNhvt*r<9QFgah_0*zVW9 zeh>UwO!7BU*vEyW^X8Br_WH&N7wBsK$E)_b+D#(VwJ+gzUsv{jecN=~CZ?||^k{ls z26*o2eLX7p`$g`W#TSsnMheD9)3si+<@McWdFcP14#6@J-6X3PX-Y9*ufl0;y%)E* z6scX??Ebp(T-YhOOa4t%W6DeCP^?_r^yzoDsiCS2dfmk_KODK z?C^G(y(TA^|25C&`48#s^*z3srYMZkltgDr)lpb6h={6tmZCf#eMyBFBJS-)7(D(x zCK4}iVOAri-=x0T!YF*NqtN~jZoDtYv+mq}hrInCj~MRJr1qJRSjM?)(zvDMa7^jg2*B)QB?ORRbY&D zl7cZ-C?n_TRw4>0#v;LE>{}5*5Jh^LSc;0URARq@eIqdaPuyb&#e$Ip6gT#%77GPc zP!$t}^%yWI5#*(L)`+P4npIwJ7W<5=6e5VhRXKipS1FSRg|Tte^jI)KWJfjyK~^Y; zpu`qWrn0CCEJQ>^P!Ul;V#O3yK|xo=@b&V@5ddQakz#GNGmTYGr8tn9Jm$P3iKf$YZE z)c|{r-LV)o#4MMp%6B}`hk!@RxRDfa?74QM84cg6`fbB8fw zG8iZ#3M#P!VK*$o9fSAJy-AX&qAHPM2#%+=!KgUO6&NvAId=5GD-=cRkg2I<1VfSg z*ufs8l@8#jJ?qhaj~dNt$^#)_tG(8@Grx8eB{@epyCn45u{ zfWm?rAyf<`?Mzxbg3aM#@dgokzVnY)Snu&^fy5dp>3h@o)k>4^+G_W|54!kK5{$GX z<69z>x?Xzbh{i}7-}ZW1x5#8Z_*gLk2Vl>q3)28G`S?>r=oDE(-iOM9jZ!?J{GaU= zFu^oX_NsIF^lcW35cRgPM_O!%*(`Lj&j8Or#Q_i)R-YS?^khN%$ zR5cJr@ezr<0YVqh|=F2J46PbAQI5Mk;RI~Iasv;XFb#Zz%gqN1WIsSc5`hso*Rqru3` z2luU2f{ac^i#u0|olx~o`xOVP^_euhB5-CP!0V9AhkZ|lxRhY#;e_*7?veBN=@IKI zm~gK@KdEMG-O{K!EU^xm3Nb@;%Fj^wM%;Z*{(pD<-#1Xv{1mZ>ya!#v97ev`?wmzb z6*Fu14N({D62<+-^*(>ef5(0JzrE-*{;sUnL=toiE>Doh;bea|BP|Gsuv~_v+xHix z{*T4=zyH5a$@@)DL&*O}_ctW+>{%mq))w#%lY7oV}&sARvI8 zj}kP#&is^hqzc|A6N$V$?MMLdy`phOWPQ8R2DfK6P%S57=>B=}&?_-A2LgcXNFs1R z+ZA73sfmwwxVrzzpMCZ@m=S*_%0F2`_pGr&PHm{MLFg=_4;xDsB8Y-2#zOPTaYP)O zvv1Skqj);;nOq!lmS25y*3F_rVg1wc1l~oVQ5OTZP=?Tx4)h1=+I2y4b=qwx^qWe5>%Uc;lvL84NzR z$9UXj@*SV+_V~^Ase2dSyBSba#j5I3ksgizLqA2+ne(yu*en;jK%`GWO;6I-o@4!& zPLD5o*HOu1;4=T7oV-v(L|CH*8Ti&yOV z0|HHdl!+yXFeLoh4i?XYwR|7C{=2M>?fdEY?co0`$ICx!dExrEm^eB-=ekN|JU+Ap zi0m)W=AVvDCY{x;kYP&`IR$Gn`;Y-TE7av7r8&X?L26Re2oY!_&f6wlE?jSFV1N_b z<%^?uJ2Gj!Kdif9fM`R2gFlVSs$oAGj6@Ud{AO$aVL29qlnEjmLbihIL9$}srpsmc z=t!rbZ(xV=K1+sXb3P7XfdoYroST3C`di7+K`*wcm@NU2f8O z>4u~}Ssw<<1EOHi_Y8U@a-Ec`%1plHXK>_W}(|uqe z1VL<5%B2Y)yVz)-{_Zaak(fr<)8@1e6ML4dD#Cc21V-)Gpf!<#i z-if^#!zeWB)2`)u5dp{U3A#BiL+Y<)C6xk9j8{BQrzgO9EX6QxWTZ|M!AAHD=+2Fg(02=CmSw zUjtkF``jJpR_A!=;Lre^0uPsvpg@BoTERf=1T-n3y*LeDY(%Z>2^1F$IQlca5j(K4 z|K=UZ{Ac8i=|bpz^YC^d*oGWe(~A?HAIFRVqW^`yC-4{_%h;_tsUG*bLMchshiB$B zc?&Wb^(>k4R(wG~oFzBBf>@2IT9N^jf>2e&3QR#DVxm$~go{&XQq-`?jcK4jgeMjO zxb#!q!PlRD>QxN1LERMUu+XyV@G8}-29OsG4nW$aqSmFuWire2uua|fpX-+uW6KNd z3UQE+eQd6aEisje*t@h)z5!(R*rR31qHby_3m7yDNJW(tMgQOV_CM(P8DD_Vp!%+9 zYh`7E2_%>p5=ts4s}>9u0YMcNRp0h_;_kGM?CIaK;7p)vx}+bZI&f~Ak%>jqLkkis z7zh%ChLz<*9RV&+_*?%OgDIS9MeWCaEb@eou_gnoWCUoHXJY`6SicJBI|e8#O6;Zx z1kltQ3Di=PvZt2MSnFePES54(s-8j?fi&Agi-UZq6MRzDJ0`$%q8i5$#Ty8H*^?`V zW_2QBg)Z=BPC_8Sik%`iM(ypT%iFRgZ!ufIEz3UUUAa(Z*{?;Thb~mIHt^)TxorHY z&PO`NgFu!{%Ca)Q4pJ&h$j-V#{#wq_Sco>#XEna+C`dX`QR*b(o0ZJ=Olt z0;FZTR*eEu&qxLN!rF=qkPSsrZ5#%`%7y`m(}kk*B+SC@E3~+I8XQ$>Q82w=h`tT! z(k@$*9Kt3An_&s)wPH7>XvjbyA`N2D1^Zu-TIau)+-9;N^Yp8l`a`Q8cR+%dPOZOS zxuQ|<c`EX9q!}7TpR0(@+9G>uL zm<#;vfk-CSQjpz^Hl^}Wj(edGY>=@)$ETy~vBTfCM%k_U%#_yKv*?wJ3s{46e#OLt z_v%>bC!YJ%r4x+vp~#JF1GFI3682hVw1E-bGS(BJFGK_kQqRzZm~;`iyHQ;W7)J2{ z4cC%h(*s#trUZn=Hb&c?^qL7(XpV{E~{`>5)qh-VQp`8wf|fHp38tbeLGP7Udw^iOhO=MtNAc1N(iK7C;CQn zJF_R>;1Frh<<LhC zCsxybzV zIfERkL?LC22$XQ^Ul!5d zc|d~K-EQ__a(C|u{+lc0iQlFt*PwgdiV87mPu()6xw-JlMhil%_U_&l+OAPl+MX^t zY!hQIK|n*$iSl%v zIip)wJDlb+xOr5|YIPr;1daX2&+*BQwH8EdLw_&(yVN=2=lG1%t_2yqBVcP(Y6 zBGg1;UlzVjz{CPbFspC_i4P(PYF;gZ47_2H}dh`ZT3FD_xy)n&eYf$)W3bZrcX;~qO;6eo6Id+E)y?wk! zc`Q~uea$ejiz1xnr^>nsL}uT)%|v^qp9Vo%HI5)&z9W!4LZHgQ-86@Sg$69QX|$j z5X73wB)|l^QaHZl2=+(0`Ct70*OzJK_q?uN>RpHSOZQ%@r}$_Re_>fR0sKTp)CUohU06YUTEFmBp%{5D?)4T2y{mJ?23y*NIC-PqzNZM_;=^M<6m4l_fXyZ{SLw8BPLpnK}11r(yZqI62O1^G5K#SzbmwG__hWtA(c)LsjY4cZJ&){xdQl$!eLCDW=Qm&AG*Wc_n zha-5ry;yv=)P2r69s(V&#;2ftoq)RQtR@Hn23x&;S$dV&P+x)u zxR^yzeNmlCa!$+u2}A@k4Fp0r!;Q7Z_Poz5IUC=9{av3+z~KA<$DZVT7>mudN4cKq z7v}7xVXi+{YaIPJl7N1K9{`*mkm|G>zYO2Zo$nS(Sl@8=ecg-)TvK0hniQ;`Qz#c!;^XK)pnr1e0p)+y-=0MmJ9eK@oOwd>y9_1T02jRy@ zvh%-l(VQJ@1OG*A%L|WT{}mOaB`U;KfU-<~)kB^(b%1~m2m%ZPifC1i&Uzi4VpNIL z2{=W!A%L`0sv4NMRSxLX__g1}MB#aL-Va95|D~Djf1+e){4h?+B^owT*(MO43=1Lv zVk1@GmR4cyC;)q!a0NSkx^u@2laE@DyZq?zL@{p^cRC^n2z?t_ZsQrbk24(#%*eY5 znX@r5Wz(hp1_C!#aZqv#H{$K1Oq3B4l;Z99k!c+0q8SAup%TUvBnCLBP0%D?$ekBu zMBd~f;BBqZ+(yCw)HyHd`um^6h=2vw&-XG8WOYn=4{U_y_5m|^o<&GIlj6b9N zr2a|lOoN5k^nUWxzxAQoH5!{n=B?Ki0XyV|GKR>;#z@EeIb`ei_0(%C6Ys$(K^(z? zFr?JcVV!WCB7L$~x}@o+_qMEHDMeYRdt&fKHj{J(RLAeoVT-6_oQKP!WtaSxNR zjh1|02Rvv|9)YjU{Jdipu~;ZRev-akln_J}SjdR5QB_d{UHvGF7w!_VV6&LtJe5@h zMG-*}|2Fc>0DuTtO+plW;cX!Ve$_B6#JeIPpdTm3NVpoc?>gPAZ_{*U9x}kO!XXwx zf*%@|Fi{m$b?pV>TB`+utW*Vw^I27k6y5Dm!Yo*kMlewmn~u`Tk$n zd))5pe2iYC_iNG6rv{B2hRyvzA`DnuUfmzQz}uI9I|@(=v8sAss=WPX#Pa=+?95`~ z6Ivt?%Fx`oFe`9Lj#&>_34l^b3kfnD#B9I!dz&_}FUXp!*7%wq&I1{}lysb>3I8z%*w`Ew62UIYxi zdtrrRhHO@v5#Nb6*XQ{O=XtwOv-j+3+co{^H)J5#L(&tN`gjHE3WK4ECal;-$o_8U zw_)HB`#HLe3I3;*hU;>26n|P45nUGpe~I@Vr}o%o=cDdW7J-Hi?>{TT2DT~9fjqdPZspt$@);F@KBNxToEB$xPkTmg~x%A=y-J>p4QcFsGP&; zp;$Xb;a5BAN9ihQ*QmjTP@E#SphA@*X9%6aHNu}`P5zY?7I`5JE3a6e= z0NksUZcE9(>Hnm5 zD(+D3Ad4OOA{K#3w{qyry}3thm7akx-94l+Mh81W+5O zXf-E;7_cKP`k_7dR%6#XasSF}U~p4vitmCA>c!$C{Or;$X+2MKp4r!B+=nP&!XPBs zN-VNmVeC~Zmw0j8H{=V6Er0P|$FE7aQ|DL08@Qr3Lq=D?G7HHT5aIuw1H*oWn)Vu& ziN$)-^W;PPHFsB|i9`6nl%zT!bItpk`bY$G$SLM*zhPdnAY8N;_uZ;gn6xqPzro*$ zAIRrFmUlsc2>(8X#eA!89Da*uN(h1W(BY;M;bw1U30e*gTf#DxPeL& zG6y+^Nfwz)yZH@GuWr;(YdFvQ|Mw-WiU}z-f06&GQcUJZY&kuj;QoTb!$<9VuVeRB zhFDlF7p7xPeiXPY=NBLAJpX=YnlU1G>vjsNbPs4{br>j1>@x5ww)ZUnMnJj0cA-D_ z&1noA#pw6uhZJCk+(R8lsD~NR62Fv8zyMNu4vqFNmVnF@%%AZjR^|G$ANByJLx_L1 zaJVKyUO0$3JV{OO>%5vR2cHq%%1}G1_GH>50q>rBQ-7cmy>10FeTHL=ts)NCrBI=d z-J|ZuFF_s5?bEZw-)Fw@{Qhaf`|a+=!Tq0y*l;_)73l9~{awBLL`4uto9jgtANW$Q zY?T_#U=3YUA;NakH{KrYW)%KaYepS`u-$jj->L2CuxnOoJL{8`Y*grWp+sn`H zDbw_t(}a^G=xvNTB(ELbJq}h5$0Fg0sY)npjD269xI`3Kb#7i;DYBhzWpQsGO)$+isr^{S7V~*m0*Ly%CC!gHqs+Q+d?fj7 z%i?IpIX`WTASyorD)smLoNqWd!o+%%sGVa9qw^V25Kf^eEKpeN(CKj~s~3XSd`9u7 z=4s2;$F?wcg7@sl&;3p-$d4ELS-(u8FMV%>zN}#oNP#&f)KKJ`2gZ(HE%H7*hrHTq z_wU$Shf;dtFPms^I#eI=wNMNRF!YjvASVgWU3Y8Rd@*6RjNo6NxR;(vdD%V9u_Cbe zh4kV7lv2m+bjUlo)#?-Z6pIMDb;T7#tA7Xis_QIP=k?Er=@URKJyykJb>4o>fiKtO4sP;`?r5SoV~ld ze8b5*hX1|&efHxR|D``|Jqw!+;&4B2=H(E753E%T0&h{Vc5rJUnB{|NY(C z;r#vf^ULo(7}Ft~??DW{a|8qnSt?MWJ)w07@9@z?5D{%ml+#0h3V6qK=lPsjLiLZ+ zwvG@vwH;Yb2>xfMH^Xf6P#};YgpY5x*Rs?3uGF_xdeDcBrn&R?-@I0_-i+O{(o3yV zIyj(izxlrJSf!xxNt+F!nKc50!U+PASPdtY#q6>fCVdw6lxKq4X|ErP*V;c|JLZ^F~A zYI^?rEP9JoUK7M{3anY9-fy|SpKoJVQhP6p#m{3o+#%6o?tX?3Ri`{Xi&jk*m}Dv< zpwF_kVERT=kK?cyXJw+F3o7e+3?88}U8LdSr>VLbh@d9BL)TbT5k-tfEL}Vwy~Hv{ zDqpZ@;m-vUF6-3X3kD*2O*q0Lc{)_re1)gMxQpm{$jkX_q~z+c&7ydlH9KbaT+ue6kk91YK(aPaWNUdYqS)~ z#A0rXy4^sTNYwHE`yh)thh-X6%xnRxr+8$~^S4R8Hea(7mL zQhkFsziad{mye;jf35!X^BZ<7@w?sYjvF}L8uES}Y$_up%UuO$>V6UqbPD+YgVE|3 z@+lt0hTQAA==nEdFHD$4vf75ivLt2Jln(T2ll9OK*vQ=3{(%VWlF zZSZ<8i$^AbU$QJZO2zQdymw3uMfa}gpT7{C5I@~#q&(+m`zHt_Ecol3yC#6>_G7Dd zCPhemxPP$7sh_}U3&&^JxWIWP4eSMYL-I&d<5=Ha?y&TOHR$*f6_OoPA+H*KuwNfd z>j<*RIwg;`P6-Y%%%)GL&vig=NJtw_Ql^7SkivS5|9AbQo%zQF6DKXQ%L&NT;~`Mr z>>I!7R&k8oj6p7oZEA&|{{D(-mo(7-k$}D;+mo;b)Ih%0~J^4HGB+=pG;6N z?N748w4xB}7H(^?0FNJO;IqJn!=jX*^W=#h{ED$yoKB-0Jc5e)RTORdR~X=6@Nqb9 zYu)yhfIfy#M&ZaHz!E#<3=A_{nlOXlmK8*TKP4C>iq>KdT-I=2R;KBKCc zOey&9T;Wf0%Ac7>zyAMKPS=M-=eO^?$~zuniUsnFI)s6&qX-ZO3lH7m(HMHUp*`sl zaqduR&wPtM-44sLBm}pxkA+zxT+Q(IxR5u1AzGQlW())*$OJe=?4L#Fy3K5WKewA^ zpz2x5Jh!mS$ltR(b5j#jy0Z_QZ%Im$pn7Z{nCdgy%QcKfannQ8rb42lp^~fS z5~4AWM%F)_Xq}2tMSZ`_!H9U2sv_&XUXOE*6W3|f%H?e}3;lR3Me->k=@K`jpeahj zRQK&2x|1Mkp$^wU3-kZ&B6LevH#gX5yFaOCW`=70OLbdc7rULj@p>PC4XNQj~b2*n$seYt2K z)y@!zC=N?#$%L8yPY2*{-Y(!qS-E7^LAHQ~7u#eT*rt!gpvjfDYP%RgR;E>OfSDVr zIo1^dib6mk1+hXF8WZE(FJcN2(FJ37r>&TZHtaO*yXhV-v9?`&*iq$kpkqAx#g++; z7=+A$FHar`X^rmgJH~}lx;H|(tr_bXza5ci8ofHa5ua#O=!L&jfzVGf-9 zOm>)mTYfxTWRds)qxgSSY+q0w(?>53 zpU{bSjpb_XB~Bbc+TsZVk`(=ymy&6mE@V`{+k+IBYJSy%2m_Dz{1Q)&A^nG&v{qkuwFQkQ zfBiS`a92?AQBy=>0if<34f{ATFMPZt_wMtS+>&r94JDcYn2;KlLH~+XAjYqtdH|wn zO%dXKk*u4fC*`!n(}DGAn4|*6S2N20Z?uZSrr>8Fv8^f|Uo=Oi`RVD#=!+;8m&e*H zA_^5x^hgxUzs?s|UlCgIR^rWwy^3L~v;|kX*?W4<%=j0sh4aFIFJ?f2{g_FH6?Dgv z`kzl~)%@)2FQuRH$uM9L3w%I)W83A;9RnvHUC2)@(LaD4cg= z0399<3hnfIUGnlLnY;0%G$+%eW5DQMo1N}00o*% zJ)kLj)j6K4bUS|avm37K|DvO@7=j@UKM|otqJv(@EJqy#tQJ4Bc>i9g6@)CGJJ(Y@ zs9MxJw!ABFw6!Ga5qX5rsaBG!iEJl>ZTEc4JG#4H`vv61&A6C{fQL(aD~O?7n3^Di zF=&LsXYL+Gu6Pv`Mep@K^ApKtQHZFAE`@#-sKkRGgy>boW+a~Y>3Caa`PpjX>ct_* z+kO^aNZf;mKZ~;U)8T6VeyC1bO zVhFNsZJ%qW7(TX@XX@Ik%D2<@_`@GzZ0N4vWAXYgUzlkXW5D`L*LGJi6?!I$iuUb- zpJLAt^E|JU{og0a=kR=A_Hq8Z*={zEElx+++^61Lwl;p7&Gfz_wD9_zXaC>zd<{D@ zZAC;;i^YD~!YG{z5`aLT!FwYZ1R-U^{S<~}+Nb=9j7ev&XEvs))r zMGC6?yHjw7hwUm*%=lhQrz3>$wLf zQyA{=Wr;-m8)EPuf7j)al~|wuIb!~UE*htWZi;<|E-f0i#`t~Jo-Z$>in_bpdt}K? zU$;so$C%FW8qtuqdg9n!-gM*^JkWw7P>|W086Gpmcfu_CFZv)oju+~MA6aNqj z&indX^On4R>~)OBvFbCQ6W*8s(f`-|J_pPDDPQrcwmxRE5ehhHL8B3+Fp`hpiBNL! zS_NdJP%2A2H6)Dib}%Tgl1Pdg#RkXu{#Cx%JQB`%{f8g+yxOfn`ZPL!E2-rFYcu+u z7vla8naK9f<9)A>`#gskr}A)LyHB(+$MKoUu&Uk_`BM*azzHOqALaMa}uz4Z#j<~ipWg;2lE_M zd9nGoECel_pHQ`z|7&@y5#&|xL>yVQW#;(j;Jj||1XOHLLIv*$#D6o~g4KNZh1peZ zHTaZqTb5N(d!0&ahCGLN=~itJ!b8UF%wP9mL(77IX@@ru5RNCIq6WHlw<9)`mFO@FTB>H)LmEJ?FQ9B~Vb8}2#lXQ6} z_p6sauxn;u83S8zjX$*#HzzZ(^3zI$F=?BI32l%gg>ZYpG>HdN<1Ai##hvBgXn%V{>`@JdXYeKpG=6=Ew973MU8 zNe1Ezt04o*lyyS*?P|r3os&;1*fYb7p|s?BsFxSTf6JeM@H3*L6&K3>N3_9^t2a$W z6(EQ=5(&a^cf>A-&Vqd3-m;cH5t%0!r!YSu7faPL4wb>tTqZu#on|;Ub=B@LWB2qa zgR$V7|Iy$29f_>>+#Ig+B01+<;r%GSwcDL$>JAMOp{wmo5q-8UB#Y84%jEoz)+mQA z0dT3E-hMC>C$A*b7#XlQyP3%9Zy?f}6yr9RSbC;>COBLJdW}K402ku zD3gq@j92z64=O{$%qT(>NCI#P!Xu)&E;+XyNII^QYW~6t)3D@5t_B0pV_nkuEKGADpGBAcRPh%T-PZqc;3=Tf^tyZxN0HoYn^q$uv9ICU&I8!U<953LuF1hk99skAfvC;YM7=E(U6ld`xiF6+aA=x&=ZbTo`|4s_>_VkW_g}C*Wsp+JrGT>b&3FZfKNCf-(%j* zo{aOgTQ7UQ${LTPJcrNbaxtF@og!i8zH=AcdS4`a6#ESG>Q#(=ow+z1K_NqUgdS&z zR+L1j`fx3I)QC0`B~wXDqUJQ<848MI)u<(PBJ>JEFo#LZ% zZjWz$Iq>cM&eqdwBd_2{HD4$BxbJ~pwrJnQ6Gz%EDl&k()DU`d1cB%w&iorsE!HGD zgikp0)znB(vjNl*5ulBGI(uaM_KcJ$WHAmp1E`z(XYpJLy`Sil$3T_YJh$IhBAOT# zV9k6(=XiX+c|y``nUhdH@}|>U{9V^qh$UPbQe$08|EW#G2XkyiYW2m(X0-XLJ$dmn3s69^1e{K|PM4CD)`+Z?RZX?&yi{n0afnPn`X>zY8o zFcAgIcjHc{f8t6dY?Afx>zMhg);)G=cCgz@zX-lVb*J~;@K)c39zF`uO0GR8XH2@! zEO(Opu9mmLAay_le>8Fk8f~wL@&mkX149Lu3Iz+_8U$?N`-kev-P*mvoiuiEe>DvG zn83omX`hYajER8-j`<#LJ(t{cTwfo|(e(zf_?}NekZ9dqBi!Df8F8{Or(;UbSd@Iy zAF7xZJ8cFrPdn0FIH#3y7@h-Ndwzcx7|O6`+-=?@i^!@b`jk%Y)fM=Sdr`fPcOCBsgT8(J*x&g69d1Uj~k>0 z19{G&?VZSiV7a~%1|*no$VdOnr)=)AKK+}7ZA9#uh#-PNJm%w+ZeYX?*S14Dcl+Oc zPnWFT`>t&*ef^p@eqZitb+aMKo{C6`hr-pulzGi4A7^mq?N`je5&?DUq%=7h45>m>-$fJ; zA;KDZEpX;d&940Bb@=Sc-t<-r=dVEx@*tI^%0;_AW`|SX|50*T$A?~jb`BX1H^?X- z20(#P$M-Bdli~bKC?!${3sP=ByazJQIj{TQ{r%#>B>3j=9mA+Ufy#er>1Sm^vqxbZ zv(*BpIWnCMnBO~}+4dqr$@MZsqMV2^d!#^9DORa zp40Z_Hv_z9sx@4{5-YudtCNb5{!o!DCkf;uXvn}Yyy64=^*?vN=Jq>tQ)jvT9xq$3 z=s7x?y|2K-?zo@Bdxx`BQ(}}(dsKfV-Vn!ff%mK!uX@zREMdr!1KXaAk8^|Iu)$9) zlP2x`-13X5_AfV1wmZ-EX~E;ETg)+mN2|Y!ibWXxJ(eN9)w2vyKv8C!_O2CEjNZF> zj1l4`5&!L#oqAqUSENZP=qYqHL>@XG^XBi&=ZkX)+S`xeW_xEh{GL4Vj4~ycjxQ<{~~g_Ga{68Q_?AiyM9>W0M9mkF9H`q<(Lte-pXuKE7qi zLh*pF0v`B_533^K=y!e}ul>JexHO&r`KWFgr<>PwT_0b(cEa=)6}HOuSiK9=vKr>p zP|`>f3L=9TIRZ}3V$D}SZ=+$DbRJYzNHn0xg$8QAL$p*Meyy3tGI%g81fa~I&@eX3 z3_<olyPC1hi89nP^Q`fx{5A>D2huM7H`J=A)#;mI!Yow=QV=3 zSpy?W0O{JqvKgfbMhF;d7idK^CdfJ}MQ823y-{d{2?P*KilGw@^IOBq)#5Dd=ep{+ z3Wye14qKIkgE{`Xpp_M8dk=jfL%HB=d> z7ffO}rX~(V2&!X+_3509FVGmkkP1-EWOH7uopy{Qj4Y|y=A!T}@qNpw00|Ho@>vC3 zraj5$WG)+#OaF6Wwje7KD3eL7f%VRYm1|N)i9nEVQqepXmE%V69wBq^w*N>VHe;l;$mF@;iw@iJoIRb{n^w<=&qI!v%sW=%|(V9NCQWq_zf z%*`^mni{ybBy6 zpk$!|5JX8VLjw{FQ-TC_l$bj-i>5{xVuKMlyS|D~IH!Yx={kT!0$KDK>p{#S3<`EA zb}YnGCXsYNk|BGt-!=9hhG4`II~XyxMY!gC>v$BPD3SpFB7B7Nlx{pnfBNjul2IWu zv&rMaHzt&n#1Rk)6$F>)vJfD#gyTa&!GpA5?kDw=7(d0P#v3?^0vL*!LM7RbTaT_l zka-(V1Vf@7hTMk+284(&6dDO3CQMJ^Ki@owjTl^Ew?-xu$Vx3|6*Bf%#%O&bhYo32 z@H5kl^D7)!TZ~I_g%rYSd|dlp`sbk*l298$D1YD~p$oD_z5bkMC`6!zEEzT*-!#Zf z#KL8&{`+#uz|9`}Goy3P#TA9Qzp19{=z&v0V=txuo>CdP+G-}3EULo-V%QE;sEGuS zh(*FoLl7Mxi;m zCx6Ib(Y0yk6}spC`Gik)uG4Lz+R5BSnKM>-rd^6rBFo58Qb52`q%rd8qZ0-o5@drH zE`otUL5s4aMLA3aOw1YOB?oetz%fKf7bLt&f@UoyFj3#->asJAB@rIa!imxnkh3xWZxvOEZ-x3MB?k&0)|`6+5!3G5fLtC!6$juM1YIM2Xt71Sh;e}!;y=TGC*9h zW*jo1j9JG>WaQr-p5I1{ct`zaIwJ;^JZBCG{^MhR4A6jipb-qfgpv$PG{!Cv@$MOe zEe-yB^A%y1Rm{r}!;?g1afoE$6++yxk}Sqnt=$t34X{&pRAiVC0VhEt0LRHA+&XlG zlo93lO%m|Ps$uz6W1@!Dj*MlsW_oTIxNn^Gn3^-TsI3+iD|Bj829_9eN2R#Nc&yEo z%HPIrY|j*|5e6(6F#*ta3`@H}IRH$Upzw@l<o8C`7ZCO$JH;85IXGV+Lga@o^ZY zF#x%ND>APgAnZD!Gjkpl3`IyB{7Vt zl*5gSfyq!&R_MjikYSeDp_pcQTr#DYrg*V)&mnMDvZTW@W-XP4K(U2r+mTEHlGi5S zGD?d_1#y6FDq_;yU@IzN0l8(1kyv3RGP2u*P{75_nP9Ul?8%jwag_wANobTPV?1Mb zWppNU{TWOeEZPD-Vs=QtxFThML^~!*5I?%fk+eeyl?_I^Z7x_aMH3n^4D-(sludUN zLTF*0%`-F1z&4qQEy=}2qE&5iW-@Ry4N8+D*3%9Zm~n)0gDY^9##oaEF_Dpw<%;2= z!AfDqBvTGj<1Ddhi(wJDQw*3zSYqQ6%_W~pl`_uZFw9iN!r>IS(UmeXWUO*(%rirS zEI3?|LzNW(h++e>3>WpVMT{LG7AQ&3i@OL#&<@RXv2pk$NQNL!)4-j=1_c<+f@ct9 zotVQ~sY4_TVJ#h8v5YxmJNfv?GIC4`lComvn2uK%#l{U8ncR%iK3$UMMT?tL2Za&#s_1K0 zoRj~x|1Iz!0uAHIuyDfb-(R3s6>Jc`6||XpRqUu%qG+_*hB!_W(wZIR9P%l#Vmz*Q z>1wm6->I-3&c$BuPL#5KD#G1|Shzp{4Cm74-nrW&_x-$fdN1}b`1j-3{BxLcTuqV9d%iEYSab>S(R3k~8saeB zr}n*bu=Kx6vvCd2{OLXd2boXtVV;>*&I;D_!=bcxpA~?B+Yd@Xjs96~cnC!APK0@Q zZyx!CH&%i@9q9W{ugvkC)jDnWUU-e!yV2v{I?t)%-NDG|uwY`&tGlRgyWU^&qZzIw zuke{))-tnoNVNPOyW+?Aqtv&#A`r%PcNe zq--){p;JTI#Ie!qdP=pNQz<_vXJ``OK<}Czq!0j`D!?%ft%=#+t3h1pbYETtALPMx z3p24?k$BTzkl?fs0EYkK9c-}#KmaO+lz*T6>+xXEbSF)SbG1);V-v(;Q}pl!=Ep); zS5;QX7E(Z!f(o*tQEzG?jBvaj+1PobDO>h4Vt8%JK@+A#49?pv3}gyF;P7!grVABN zMIvaY0o%x`D58XzU`WCTGxmGubH88i$k;`Mc=L-6;UYb9AI_xS=5N``+r%aX8M%B{3m_S-4%FussGBZ7Z3SrzwZJ$bl)%2 zb?(=9FmS!6W}3m}ii6-=bGkaO9`P2Y=n%Z`?z5F4JbCckOlcPXvb!eGKePuGCA4td z*yCp)>3)QPDaz|ZXq^84`j>pHeoaPw{R&>zR8Ei}J;WrPQF&R#*+G+W1iMumFk~T| z`BOU!7qlCxc&=XetuM59wOtG(ATS~3A$7o0Zpc|&Sw<%SCyl?s22?oGf45m+KQPor zaoyAK+T;Nl=v?W39ByeL*V7stdaZ5CXj@$g?tc!`4iav&(}3A$qUYQ{RPmB}N8G2_ zZoNOs__wa*f(|q-CW37X*nbZ1N2m5Rl-ajgpD*w98f$r; z^9DN$T0Z-WZ*^+A73S-VLr26&!}ja#{7wSoC6x+c;>N}3%`(PCsa8cM4N`^M>$x$rTYpB*E3KL5_}VaNVYZrftoSaS_fOCU-eIR!!FT9UB6N4n zzJU$<(`P{QkM%Ncwm%CWzqL-?`QNd*F}Zi`XIIyH-?RH2udM2P-sZP&sTnt-1Uzh< zUfHSaHRHW!*=-umW`)DPq_-@;u$Qx!OB1O;OwTp*{oY<@J=dJvL#pFz;w&@lZ)uM{ zYUuTT-=^vJrm~8~Vyo0T%lBWcf@V#{sBvj$D$(jG^b-V&GHNDz*8+36*dc_BVIHN% zDrvSmbTqiMnKKA@l!ZkIq*fp)0brrPwNJQrI5jC@uH^XLx*4WbqKm7ZHgdVQQv|@_ z8k$&R5Ue|sgZ&)6Kclz9?mwSCV0vxe`*yi+TABrSPkvGz%M+rc>$}rw{fyR>YGU*Q zk}w3PL&cn}nKkds%qnkujV*YYZ z$TjXrohaC%Jhb?j@%XxF)N=C2VE0ZRVez+E`^@Y89mj=$$XLNuhXs`0rJf?_#XBee zJWgga6<*(41`*&}7ycHUdsPvUJGN01i)cG`s_{~q&uE_y>ihf~y&nftRm_ZBuM-z4 zSIo7DuJY6U2x-AkL5hqKk8S+e`fRVR)btoKPS4!q|E$X^xnj;jWU*C6RXlsV#kQMI zsazCA=`ZLoz@xgepN=LdaT&+p-zJ&Cd{b2wQ1Y)Q79;j_x}Q=1_A-w5hgWR{Jih}( zz`Kt`}lMl-%M{M_wGdA>fU`cqI)MG;Z)HlnDD5C6KKKkjljM(GzeuZn6ScPV|sALHl$3uo+p zN4Vu7k2Qk$hSEa)S!TWsCxuJ%C>kic&qTpLFZ{|22#?rFOg`&};Y{&j;@AEW)l?gH zOn!}?%kI|QWLb4LO8>^MXTnqhV-Os*temsW-X!AvY@kBOzytu9hqJhx+e)2b+pQc9N zrT++?@96ODl0gDSdaKqz59IRuU0nX7&eKoLwV(Lqb{N>sqdenSC~%U-bJNW~3CTWl zwqxl2y~-VH&w8IT{aBMg?-Tq}+Wq$L=??=i*Js@8P+!0KR|&sogq@#hbs3?Cgz%o% zd%N$l^3PYxrn5KfJpR=@NSwY~_rhoo(yB@s7!6SU#s{&RbhQJ)4>WjH>hQ%WtQ$h@u{`LmbJLkwX;7f$IpAKn|1z%KKAeJ%D0buE z%ge@V-=*VRX`}B5!-F ze7#REfY7H)=Di-j*LiL>o)=rKfL17c3*ER}tx?oUF^H=+d3C<8MGFaYb*#g2bf@sh{pTO5A zhcvu?C;9iWC;rW^0WjC}n8tFKAueKbZ~Rx^so)+xK^AxwVMp`-3@b{+1SxXL75V@X z!oPuO~W!Q}lPd!W`eEs+u?&+uRmed7C_6Zc=KcPTg^$u(#V z?2b$F9k)uI3R+j%RFNL2g)0Ib2i6!k|8S{pzAoG2jrHJv_`gc)C$4-b*%}W*P_0Cm zWgr|P1RUEpq53`yiCN-ZrXmgZgg6Q-htua^@Zy5V!ytNGx~sGT9KNgldsj_yl-NiH zL7WvkSxD9(699(yixR`Vu#Us3KQgtxsrmW;TpbFeuo(vAvXG3q2MmGJh;{fM@atlJ+T1?A!(l2ww2DAN(L4jr6+`LQ-JycLQ$DnGw($P4 zk{)n_!Pq(?jG#rW)Sfa&JQioES6S;v2hO;fuII%lPbXI*&7>I-d_VEQI?`lYi!$yF zL_L+{JPpfdr_N0DP(Nl+xufw!uh1s4gK&^dUQg|yFO>34lk6YhSaXZE$WJqOlq zJYPwtbvbG*MeV*mBci z4wDpPxwVW`X5k8h$Fx*c6^uoQi}0<8F+osN<5IrL)KO;b3TXe2?d9G%p{O+?h{cBb z+zD+{aLUI8f-?!Im^!@cvgH(tVq3iF@q;E+vV}@E++d{OdOMrovtJiN@NN}H2q_gw zP3@J3LvnDs6aE)Ged27o9|KabaLG{nhlrSB<@GkM#SEGF`ASSu>!)6rO_w}UiniwB z3lYUSX9GDdMh)gU34{I&E@EvsiKimFbjaS>Qy~hT@uI~|l;GlwL=}o|{;HS|=p97* zn`T1FSu3w)!!31p_bIUO5biRS(`7bkM8zq$O2uNV>FsuDM~AqkB94?>nqd^cIW$3v zqB&Bo{@B40&Dq5`tz#z+@EqKfL{>kiYN`plWrpD>sHV*;9rLc5jzXGJ6jUAkxl_@m zjHu0fL^u|zh>ld15m+zfr58IU+KG-1RbVSFd=Ox^6xHD6Dzsk<1CkfjyslBSld!p zfYcWhv>)_?GT#6;l{4$PAx9BEG}n^dGOyu!i?ge4DBJH$hjJZA*C^?gV{o!3DyN|c^& zeID~K`(;2d+muNB55xCe)l!F|M8_E;;|$MxKeHJD`)i?P0m2{$_$dSgLG{e|=_8 z7w6*)h$@{eF7UP3rA0wcE9aoq-IJ#Gzus_j0@(s2I9KJWGNRkn}$ zOL<4~c0PYgrd;d7i*KIW#!yh}O@sb&=%1ubsN`KHKMZ|C!|f&#|$I*?TK4E92U*;#wYq zs}ERd<{#k>ZIhe)_nSV1T?cpN%?;_vps;P5Iwp2 zv__fTU3&yc7f6Rk#zJfUq)?_6+&+Z9T~pr_zBVcx3oC1We5rkx+Wp7e{r@vPe}&j{ zyC?KNXZyD~PvqQnCqvoyA5Y@75raLItm9h|f`Y6TMHVV3F^oj>K4!xoVK|jhvR=IQJ$`@k;mZtJo-Q0`P~`t zy=JfMvteNoPR^8AiYly8dKSe&L*^mn(*h|FQYjV;QBhP;cOEL@C@P4kEb^tvF?yuN z6Wug@`cy@ah4o)gk@xwZ$&2#zV;awr@jn^6kCW2(`JTM}$}xOZL5Tc!VneejD{{}|9dB{nU|y9=}*?XAu~33 zu}>EY#BZhbBQKs;VYc@+t<9xtEGJdrrWd6JC)R`I*DPOmhkTb8Ad^Pw3P0I9()v zPOo(lUwyBH)cPM=sdk~;amm5Hi$%cT;XO!2O>X|c_+I#k+LOt57Y2d<_Rr?^WZTnv z_=%THQgf89%q(=7hlfq<(>bCss#bj_WMGH>+EK7rA)w*M5XpOsYsBr~f>SQPUS zJR7@3!TaKsn$SSI>6LFcN$JIPMLBCi-*`@nX>!{cTjU;CF+NN}f52w5q1Mr>=9_ z{k9^k&VnDsW6Ih6uAkul58wFhlkR(cKUd>}#eSYxk}DMZUZ)W1vW190YQmy}2Mr#g zhl2AmC^3qXYq_$Srkp~GC@P5J%7%=0m@4H(P@~l*F&cgSrWhM+Dj0%WYp#`33h>+} zrdV=v!>Y>6B)MQ=lIWOUAv#2$g2Yf4Uzq$K@yqM$@^|AG@@VzE+woR_nsNEbqA_E!%IG?O z?Z%1IIz&~6inM#gQKaFrPK2xpRUir*d z>}f%YsjPjKHy*1z8=rr5a-xg%jq&>5P44{mjS=bkTY*=Zsjb*$nv6u_4OLV@dbU*X znNb<_+rP!V*nLM|{2uEciJ#lLu6$o7jJ)a8;P=_%AH%=g?vWJSeZ9ho&9u;z@{jv9 zX_R;gzfHY-<{SH03$xph;)v%|{Jv-NxX9`)`7Xi`-0eyB2s0kur)X_9i?o%tYeOae zhC`4*Vj%bYYcKOzAlnR<-mF_e33QNgM5^(q6(@o@x-Ul`8QZ215}P=b`yTcig}I8m7CquTlF> z#%qU&S~|TPd`AfRmicyZ_Dy=)ktc&4)jZUM;#0RzN2bpaE*X&d3NlCbbtIN41uE2) zc*;llexl6;44^Bmh9?^W|3XhFx`kfC;(&fp~XVo-kooK{SpYXLvq(l)_MW5-l z4R-4=+r==l-<*|-p!&NnlItn;8DHJ-IUR;mJk$I4Sz+DWVy4&e;|cH5zYlfC#4_|& zk6%j=MQ597=qXkpimHOBZ_whi4)N_;oScn}Q4kZBZeZ6(gYhP_R#2D|ss|U1n zmsmaSvsPVSnd>)kO5gJ_*s}5dPeyuzoO>$~X2w{;vHK4TkLG@_tJK_V-v>`C$>0Az z(f#gs#4LmkxV|1L`cF&F==ZCqqkkVMT5cE9CkSv$@1iJo_o#EjOnTv!*@z#!M7)6v zP2!NyNfKaBy5kLQnl+36J6|71D-UgwfVg@NZvoM0U<8~`8Q&qhRp6#2KM&1bvJlB5KkXlvGP`m^ zFK8sdBS0(G;#d+`0$nX>g2(ofUsK)`fR+pG_nsE|b_b}kzu!v7)~PKrMKE3J@0i4i zE_6MpMWP^`kX+50R?PpB$h2%B&49`wz~##~}Y#^qPQgQa9E?U*)Pt z{ZeRqYdORBRLy!$9*L@qR*5kuh1XFY!CD^+z*RHM@yfv`rE2sWFi1XK)Szk3rUQr2g=);=He;Q-|YA6Dh;q+;Jpt!{;&qL zmMUR)h_B}VQMGtJfrG3UQa`51ur1MXf3eA5yR4;Cg&$(fGf&q_kJFU0&-DLNb3H2F z)5krwB<4K{XHRqMwI>o?&X!N)ONX`iMZ>~Der8)dhjs!}v^a$aGCexfZO2|QNquci z2N5cU2<`gLeaI`%haZ2@sv;GXQXf|zeztI2av^7RW&JnTP4ud znKmM+jYful!9+nY1jCt8Wv)W%EyaV68pH!vrD@!P>JSqk7H-m{7DW*e1XNNginAm| zQDYZ!+%{EhZ0OVNUq0l+d&jWCDk-wjiYypA6sjreEfx45KV#YXe-o|7;P+le=Laie zP*8wh#wx{We4E+M_9Ldc6S|y;ysVsH9eJoShy)1$hX{)=287=A`h65%;(vvhd2|ZF zf1lOUu*;+AcCnm#uVGJpmrMHncGr2Cr_a)&4B#gB68mdK;WSf{)#&Ug^{rJI8ROb_ z&Gt!BdjC(2mn8-K>s8uT_BcMT5Doz#jyj2Ee*68lB_omZJjWU4BPfhSTRg$VFV|jf zdyLI{HL+0F>AYVTYdN6dQlcWo1r%AiYu@+X2J<~18k%^#4>OiY-=$IyF2Q>Jy+awh z-s*7tO+HK2TN31S!_p4~kX!j)mG zGQ3go=%c#5eo;Lhzm&t)iT6uc$L4h7`4{cGx4@G68=aA z{0^5dHKRgt?JX~4*hgEqzA@Q;da(4I8(!0QCB= zI1QWU$03dVD;ML^h${R0RXpzpEKS>*pq=Fpg^E5^K9w-3^|#PC6QDU>;~5GH!5+Gr zxWCVCMb;RdKzw=~;68(RzazKFeU%k4qyj+%*YlgpbU+{xR72RFw$IOUN38a=#Q7hU z$l_(0KlNc%Ua=@K>VKyggZ`A%#{;doDDO|*_g?!@_BZN0&y(ajKDwHZ(l7GgWb@uu z@3)+7*DW!3D$~!@*WK_nqgg$EURm&r5Fmg_Aecbz?fe@-&GR^$diG?;$XV3l=H6?v zhow)eOwklo7^B=J536XfddpA!bo9WibxTuARgcL__#5nDQ52qW2HQ&c8eMLAgIO=x z-IqfiuJiHBa3?Lh{>qr_>EI_#l&9P!2U67G-BOSQL;yfU?dc$jMqN3L?2l~HDo62K zh(AxhOU3-Wpedi*pj|k%bN2O_Bi-b9b*v8f#q^Z-eYa%|RyGk>-#>pZ8&HJ*AKtHT zgxKH@0y8AFZn?2CW;_OfBd0K{N%);N1-esB2n%P9U^*@`*>@W*Vw_W$hvuJy?Yfre zW8|<6@rW!U9KH;ZuL&denag!z5YKt(dfXWY01XI!g9f;t0YvIYGqnVZQ|Hk5J8>X4(T6q4!((?HiHpWXuoOgcnTrdJ zp;CFIU~EF*$svgh46={OS|ZK=H_1RSU{WkwHL;EJhUegY&U)kJa0Pk%uc&PJJKa-2 zRxzKVIUMDYOo=3z~isvw$dDblums&Z3Z zsgpfzy}DEs!&kaWoEmz!aGiTQHfUqW-euPG_gj0djlESoH(Z~GWkaWZYcUwA4`KhD z7z9!My{t|a-tPv4ZLZ_?aASvO4;4O*HgUsG=gaAwOzA-rt!oujowLGWi10GAg6=ao zUYjf{=~+ZZCr9MCJ$I}8ozF|mRZu!xEZaPIf&AEz6c`pLQTqrTo?0ga2U}!S+V|Si2kzBl>3+t{(d|SWFKkeBQhWSQ(=M;Y{T{ET z>N*2?_&pD={2cvvLG*FiI1z#>JGQ5Ht4w}teO(UIMLSIF;8LtbS*h$ELyuFK6%pS5 zUr*J3H%@wB{zeJ>L~#TQX9sv)CXMF9*lXL4cDel=LTE_v{+KWdI5#*e zJ&7m{H0Fkj>Sk~@7h_(;2m&Gl@DS^ISBHQXS&~0|U)?Y|x&D#*TZAbksXx_8`oT@L|m#ewh8%0$f6ZPnG-WYvN`K8UT+t zd4KojF`D%{T2Qes4(RpPz5gOYXZ`DzjU%JWwb#JAbb)9U21S~=VHwHv5bj1M=3eTh>ayMaF$n$Lmn&1gpB0>9LcINlLnlVAko)m zs$u>#v!0fs6g8;x(rV{9SwfUc*4_$1pz&$Y)HKWdvD+ienmL)VgXX zM1ho=PegSh(=LqZj95;I7||*k63(2drja@nf!=ZX-`42VIin4i2-TZ!2I~Lf-OqtL zKkG~h1fBV$<9{fQEy%PD6e#^8Rc-d^gbfKeNshCJjoKYrXCF;rN#Xd~ZMh)&YE@zL z?GRkN<-$muB>z??dxMymR5rKPd^h`ZqCUrU$jHfKwP-8_L0HB2qhFg#_^iEq(&8Tv z1gevlYKVGjSc&nP&pTy54wh;)h*+j9DI-Q#a1tlum?`|^n+JcVMeZqOu{M^9^m z3>d7?E7Wz;XQ^d|0T7H4|d&FWu6j8@g2yIabAIm-k*r8Af%2U6-uuGCkXnyd=2z_Y?0N z(qV!sqV8>03U94e3V028HeJ;UXr#l4A~X0~(^8DvZu-ii{XLVo94pGSJ=YJHk8IS> z<|p1J7EVQ@81)~QanWAA!>?(TwW#k~sKfWOrc;G)n!O5rG8`<$tVSc9u=u;oVKld6 zR^z9&TX<+?k+A)vp#yFGCrXHTRL<{E!f=nx<=$3#ihJr+ zRv_`N(jEX^%y9Rk++4&#~UK_<&+c=MLqVKU{%u89)Z88 z-KLKc%I{uAC@LzjR8?P?&o`^w=almFs;VzhN`imYy5m=l-}PFHeB)Z7*b?#b z`V17&&MZB!+vq%=8=JPqCwvP+piY<<+xxlq$2!5=`^&FU%su!qUDR*7m@GiF=yt|{ zSX11^;{M~%^cv~i?M^%C`)qOdi|#C_DEL;PG_qBxxyP(eFVJT<`5X359#eepvXZ1# zJH$6Q;NZR|$72e^a_cz#p63P^VH=^qC~bRt(BvK4iLBpb*t2E7`?Xb3iV7%>x>Zv) zs&3gpRQB5(Y>b|DsHmbbSjedBo$1cR?UUu>@c7)FPTyK;0xB_rb*+K)%KKLWuuwIG zI&{XhZ!3A01{x9-1yXNPyrehIcYT6ynUJb7DK`nFC!Anp$f`w<%9P5K5r^C$ZZe|7 zet+eH7s@6dB*9bhr@h=n+B{!M9z}Hys=)g{2)Vb5da@0CzK0+6zl&X29I0pID%Oa~ z#ulNQ|N5Gd)ZP9?dw-Rl-Y>-e-s6q9(S>J7ietRFDvBZ}$z?$k>a9jkB=|qszc$vNB=eUW~(xQs(TJ^Nq#@C6y6E_a`O;%{3Q`i39 z{{~6*4HC79Gk?FO(Sk6;O6bpKtCu)+g*EbZKea@`2 zH9a@b@_z#?{dd6rJzhuqeEr;Rh3xFmo+0V;r7_m`Tp=?!)5PGC6K~+?I z@_)kxMEe^>V_Df_!o)QkBD|YpKAozu`K{yjG(6T{U4n`ooA)>hpsN*CV)Z{S*tLGO4u=Z%YbxuH z;>fAEq;osP?8wnQ-g9x^1T~JsC?oEUi|74hfm_l9S*->CUZ{$))?Jv07ydcyC&z4q+yJR zNDx|1?nzBX7l@y4j|&x^*^;Mb@_#<$D?D|}5U9HJ{wzwwVlsZi`3%RpvQhP|7@(qy zA}GXU?UIU&MfELKC>zUq8((`uf~&IDEFDT~ygmIn8ZWA9FLckWaOk($+gNnzjc}GSH@%4 zWMp-X^OUKJ#>E$`e2yuBfh5tzLT-U1YNSZ+NqN|?a;~U-KPfB6i`ij+_*)@4;U7GMGE#-s|5X>Oc?xk zON3YMnyx%X=M!+5yt_xPycFH=X1|+MY|pg zcA=8WCqUPv(GHe|N4c&sksh@zZOzZ%qaug17@h9S@Nc(Y!`I9AJnrW%FCX6i_2fTIXox8n zTeI@r-;U0B%``?TF%d)))wO~vHCSr6=RW5Zh%8cQL4cG)e{Mcj{cK8v;AxTw69iRZ zJnw&ho8wq)kISko@DMr|R&(r)|lL?_cl-J!o#o-G=FT+U4JwSMGeZ zhzd!84aV({UYX*AGGsvVlf_2qAiGgIFuI1JAcY`1Zl{CP^uLAB0sV}-=tvu-^xNjl zA&^(w`8*|gXfo}z1=o!q6X&_kJQ;{ueb0&jR@~H|hZbJ|TMQx23!t^6ap}8)4 zLm8;lXf%`fA(h94XXOV1Q<6BWyYhKF+#H_QC&xo+z%qez3oRA=Yi*q_0repH;HC=n zb&1q3MQRkYo^7nij4rpNbPmTls7qX&`96WJy;ukR-Mx|l@vG>O!Z^h(`lAE3hE3Aq z)I}a<{x49+gR<>kAm?mMe|O?WuT%cVHTrX-A(9O|Ga5N%OwTd>YgYfGsb(crLxJ67 zN=SJ{u%7{MwfGVO*P!lz;rJ0Rfk<#6Kb!Ckd1h8rhAk9u^`M~?I`DyAK~Xw+89z^u zj?vXU0RcgNX7Sk3$(a*``3eIxLy0L5h`;jJI z@P=j(ZZQtZobsH3T~gv3P5~N#?TjEUoF;=K6@J{naE8`PT8P`t_j$R}qSQT#YR3`| zFvct)I)Xq&T|p!puNv0(X?7`Pnn~efz##h6+tO^qPxV?8(6ZH#j*vuoFEf5x+Aq=? zZvr?MZ$%&9JrI4K5s#sf%CDW!H!*zfo`Y_>bG*XX1rgA!XX5NZeQO&rAkRy$M35CG z03c>o)52|2MJ1aWx$b+W++3W=aO>u&;=S>Bo8?o`it$JQVnP78ffS+;>>*5ayL1ll z%sfbnF$x<0>{{Fq=2hX}m2}$_2sR+p zBNBcje&>gmM|rx{tax6y$BMKc{G_4UvlB}o03^ObhzR2DZWTaVL0D&M0E1s8N|zOZnks7q0QtZaF|PIe?ZgDJVZDe7}52Dz?aYIdi`8b*P2-cj7a6<

      p3Dn8F-;HdP`+GP@qFOoPW&a}@5Ky)OsF0qs`F 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‎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