From: Michihiro NAKAJIMA Date: Tue, 3 May 2011 09:37:31 +0000 (-0400) Subject: If the character-set of filenames in archives is UTF-8, we should automatically X-Git-Tag: v3.0.0a~411 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a33ea4f02f0675897cb0b436fac3747dea37d93;p=thirdparty%2Flibarchive.git If the character-set of filenames in archives is UTF-8, we should automatically normalize it to avoid the scene that two filenames in one directory are, of course, different byte sequence but they have the same sight because of NFD and NFC. Second reason is that iconv cannot correctly convert NFD characters to other character-set so we have to convert NFD to NFC before iconv handle it unless iconv supports UTF-8-MAC. Third reason is for matching filenames, if filenames in archives are NFD and the platform is not MAC OS, the uses cannot specify the filename the uses want to extract although the users can see the filename by listing. Recently NFD can be displayed on some platforms but creating NFD requires character-set conversion utility, in particular that input of NFD string is hard on Windows platform. SVN-Revision: 3275 --- diff --git a/Makefile.am b/Makefile.am index c1108ef0a..c6ffd7463 100644 --- a/Makefile.am +++ b/Makefile.am @@ -142,6 +142,7 @@ libarchive_la_SOURCES= \ libarchive/archive_read_support_format_zip.c \ libarchive/archive_string.c \ libarchive/archive_string.h \ + libarchive/archive_string_composition.h \ libarchive/archive_string_sprintf.c \ libarchive/archive_util.c \ libarchive/archive_virtual.c \ @@ -258,6 +259,7 @@ libarchive_test_SOURCES= \ libarchive/test/test_archive_read_support_format_torture.c \ libarchive/test/test_archive_set_error.c \ libarchive/test/test_archive_string.c \ + libarchive/test/test_archive_string_conversion.c \ libarchive/test/test_archive_write_set_filter_option.c \ libarchive/test/test_archive_write_set_format_option.c \ libarchive/test/test_archive_write_set_option.c \ @@ -411,6 +413,7 @@ libarchive_TESTS_ENVIRONMENT= LIBARCHIVE_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/ libarchive_test_EXTRA_DIST=\ libarchive/test/test_acl_pax.tar.uu \ + libarchive/test/test_archive_string_conversion.txt.gz.uu \ libarchive/test/test_compat_bzip2_1.tbz.uu \ libarchive/test/test_compat_bzip2_2.tbz.uu \ libarchive/test/test_compat_cpio_1.cpio.uu \ diff --git a/build/utils/gen_archive_string_composition_h.sh b/build/utils/gen_archive_string_composition_h.sh new file mode 100755 index 000000000..95dbe167d --- /dev/null +++ b/build/utils/gen_archive_string_composition_h.sh @@ -0,0 +1,418 @@ +#!/bin/sh +# +# This needs http://unicode.org/Public/UNIDATA/UnicodeData.txt +# +inputfile="$1" # Expect UnicodeData.txt +outfile=archive_string_composition.h +pickout=/tmp/mk_unicode_composition_tbl$$.awk +################################################################################# +# +# Append the file header of "archive_string_composition.h" +# +################################################################################# +append_copyright() +{ +cat > ${outfile} < ${pickout} <>8) <= 0x%X && u_decomposable_blocks[(uc)>>8])\\n", highnum + printf "static const char u_decomposable_blocks[0x%X+1] = {\\n\\t", highnum + # + # Output blockmap + for (i = 0; i <= highnum; i++) { + if (i != 0 && i % 32 == 0) + printf "\\n\\t" + # Additionally Hangul[11XX(17), AC00(172) - D7FF(215)] is decomposable. + if (blockmap[i] || i == 17 || (i >= 172 && i <= 215)) + printf "1," + else + printf "0," + } + printf "\\n};\\n\\n" + # + # Output a macro to get a canonical combining class. + # + print "/* Get Canonical Combining Class(CCC). */" + printf "#define CCC(uc)\\t\\\\\n" + printf "\\t(((uc) > 0x%s)?0:\\\\\\n", max + printf "\\tccc_val[ccc_val_index[ccc_index[(uc)>>8]][((uc)>>4)&0x0F]][(uc)&0x0F])\\n" + print "" + # + # Output a canonical combining class value table. + # + midcnt = 0 + printf "/* The table of the value of Canonical Cimbining Class */\\n" + print "static const unsigned char ccc_val[][16] = {" + print " /* idx=0: XXXX0 - XXXXF */" + print " { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }," + for (h = 0; h <= highnum; h++) { + if (!blockmap[h]) + continue; + for (m = 0; m < 16; m++) { + if (!xx_blockmap[h, m]) + continue; + midcnt++ + printf " /* idx=%d: %03X%1X0 - %03X%1XF */\\n {", midcnt, h, m, h, m + for (l = 0; l < 15; l++) { + printf "%d, ", xxx_blockmap[h, m, l] + } + printf "%d },\n", xxx_blockmap[h, m, 15] + } + } + printf "};\n" + # + # Output the index table of the canonical combining class value table. + # + cnt = 0 + midcnt = 0 + printf "\\n/* The index table to ccc_val[*][16] */\\n" + print "static const unsigned char ccc_val_index[][16] = {" + print " /* idx=0: XXX00 - XXXFF */" + print " { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }," + for (h = 0; h <= highnum; h++) { + if (!blockmap[h]) + continue; + cnt++ + printf " /* idx=%d: %03X00 - %03XFF */\\n {", cnt, h, h + for (m = 0; m < 16; m++) { + if (m != 0) + printf "," + if (xx_blockmap[h, m]) { + midcnt++ + printf "%2d", midcnt + } else + printf " 0" + } + printf " },\\n" + } + printf "};\\n" + # + # Output the index table to the index table of the canonical combining + # class value table. + # + printf "\\n/* The index table to ccc_val_index[*][16] */\\n" + printf "static const unsigned char ccc_index[] = {\\n ", h + cnt = 0 + for (h = 0; h <= highnum; h++) { + if (h != 0 && h % 24 == 0) + printf "\\n " + if (blockmap[h]) { + cnt++; + printf "%2d,", cnt + } else + printf " 0," + } + print "};" + print "" + print "#endif /* ARCHIVE_STRING_COMPOSITION_H_INCLUDED */" +} +# +# +function hextoi(hex) +{ + dec = 0 + for (i=0; i < length(hex); i++) { + x = substr(hex, i+1, 1) + if (x ~/[0-9]/) + dec = dec * 16 + x; + else if (x == "A") + dec = dec * 16 + 10; + else if (x == "B") + dec = dec * 16 + 11; + else if (x == "C") + dec = dec * 16 + 12; + else if (x == "D") + dec = dec * 16 + 13; + else if (x == "E") + dec = dec * 16 + 14; + else if (x == "F") + dec = dec * 16 + 15; + } + return dec +} +# +# Collect Canonical Combining Class values. +# +\$4 ~/^[0-9A-F]+$/ { + if (\$4 !~/^0$/) { + if (min == "") { + min = \$1 + } + max = \$1 + high = substr(\$1, 1, length(\$1) -2) + highnum = hextoi(high) + mid = substr(\$1, length(\$1) -1, 1) + midnum = hextoi(mid) + low = substr(\$1, length(\$1), 1) + lownum = hextoi(low) + blockmap[highnum] = 1 + xx_blockmap[highnum, midnum] = 1 + xxx_blockmap[highnum, midnum, lownum] = \$4 + } +} +# +# Following code points are not decomposed in MAC OS. +# U+2000 - U+2FFF +# U+F900 - U+FAFF +# U+2F800 - U+2FAFF +# +#\$1 ~/^2[0-9A-F][0-9A-F][0-9A-F]\$/ { +# next +#} +#\$1 ~/^F[9A][0-9A-F][0-9A-F]\$/ { +# next +#} +#\$1 ~/^2F[89A][0-9A-F][0-9A-F]\$/ { +# next +#} +# +# Exclusion code points specified by +# http://unicode.org/Public/UNIDATA/CompositionExclusions.txt +## +# 1. Script Specifices +## +\$1 ~/^095[89ABCDEF]\$/ { + next +} +\$1 ~/^09D[CDF]\$/ { + next +} +\$1 ~/^0A3[36]\$/ { + next +} +\$1 ~/^0A5[9ABE]\$/ { + next +} +\$1 ~/^0B5[CD]\$/ { + next +} +\$1 ~/^0F4[3D]\$/ { + next +} +\$1 ~/^0F5[27C]\$/ { + next +} +\$1 ~/^0F69\$/ { + next +} +\$1 ~/^0F7[68]\$/ { + next +} +\$1 ~/^0F9[3D]\$/ { + next +} +\$1 ~/^0FA[27C]\$/ { + next +} +\$1 ~/^0FB9\$/ { + next +} +\$1 ~/^FB1[DF]\$/ { + next +} +\$1 ~/^FB2[ABCDEF]\$/ { + next +} +\$1 ~/^FB3[012345689ABCE]\$/ { + next +} +\$1 ~/^FB4[01346789ABCDE]\$/ { + next +} +## +# 2. Post Composition Version precomposed characters +## +\$1 ~/^2ADC\$/ { + next +} +\$1 ~/^1D15[EF]\$/ { + next +} +\$1 ~/^1D16[01234]\$/ { + next +} +\$1 ~/^1D1B[BCDEF]\$/ { + next +} +\$1 ~/^1D1C0\$/ { + next +} +## +# 3. Singleton Decompositions +## +\$1 ~/^034[01]\$/ { + next +} +\$1 ~/^037[4E]\$/ { + next +} +\$1 ~/^0387\$/ { + next +} +\$1 ~/^1F7[13579BD]\$/ { + next +} +\$1 ~/^1FB[BE]\$/ { + next +} +\$1 ~/^1FC[9B]\$/ { + next +} +\$1 ~/^1FD[3B]\$/ { + next +} +\$1 ~/^1FE[3BEF]\$/ { + next +} +\$1 ~/^1FF[9BD]\$/ { + next +} +\$1 ~/^200[01]\$/ { + next +} +\$1 ~/^212[6AB]\$/ { + next +} +\$1 ~/^232[9A]\$/ { + next +} +\$1 ~/^F9[0-9A-F][0-9A-F]\$/ { + next +} +\$1 ~/^FA0[0-9A-D]\$/ { + next +} +\$1 ~/^FA1[025-9A-E]\$/ { + next +} +\$1 ~/^FA2[0256A-D]\$/ { + next +} +\$1 ~/^FA[3-5][0-9A-F]\$/ { + next +} +\$1 ~/^FA6[0-9A-D]\$/ { + next +} +\$1 ~/^FA[7-9A-C][0-9A-F]\$/ { + next +} +\$1 ~/^FAD[0-9]\$/ { + next +} +\$1 ~/^2F[89][0-9A-F][0-9A-F]\$/ { + next +} +\$1 ~/^2FA0[0-9A-F]\$/ { + next +} +\$1 ~/^2FA1[0-9A-D]\$/ { + next +} +## +# 4. Non-Starter Decompositions +## +\$1 ~/^0344\$/ { + next +} +\$1 ~/^0F7[35]\$/ { + next +} +\$1 ~/^0F81\$/ { + next +} +# +# Output combinations for NFD ==> NFC. +# +\$6 ~/^[0-9A-F]+ [0-9A-F]+\$/ { + split(\$6, cp, " ") + if (length(\$1) == 4) + print "0"cp[1], "0"cp[2], "0"\$1 | cmd + else + print cp[1], cp[2], \$1 | cmd +} +AWK_END +################################################################################# +# +# Run awk a script. +# +################################################################################# +append_copyright +awk -f ${pickout} ${inputfile} >> ${outfile} +# +# Remove awk the script. +rm ${pickout} diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt index 9e5bc393b..80a55dcb8 100644 --- a/libarchive/CMakeLists.txt +++ b/libarchive/CMakeLists.txt @@ -68,6 +68,7 @@ SET(libarchive_SOURCES archive_read_support_format_zip.c archive_string.c archive_string.h + archive_string_composition.h archive_string_sprintf.c archive_util.c archive_virtual.c diff --git a/libarchive/archive_string.c b/libarchive/archive_string.c index fb2118dd0..1fece2a73 100644 --- a/libarchive/archive_string.c +++ b/libarchive/archive_string.c @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_string.c 201095 2009-12-28 02:33 #include "archive_endian.h" #include "archive_private.h" #include "archive_string.h" +#include "archive_string_composition.h" struct archive_string_conv { @@ -88,12 +89,17 @@ struct archive_string_conv { * double bytes character. */ #define SCONV_UTF8_LIBARCHIVE_2 32 /* Incorrect UTF-8 made by libarchive * 2.x in the wrong assumption. */ -#define SCONV_COPY_UTF8_TO_UTF8 64 /* Copy UTF-8 string in checking +#define SCONV_COPY_UTF8_TO_UTF8 64 /* Copy UTF-8 characters in checking * CESU-8. */ +#define SCONV_NORMALIZATION_C 128 /* Need normalization to be Form C. + * Before UTF-8 characters are actually + * processed. */ #if HAVE_ICONV iconv_t cd; #endif + /* A temporary buffer for a conversion of UTF-8 NFD. */ + struct archive_string utf8; }; #define CP_C_LOCALE 0 /* "C" locale */ @@ -119,6 +125,8 @@ static int strncat_from_utf8_libarchive2(struct archive_string *, const char *, size_t); static int strncat_from_utf8_to_utf8(struct archive_string *, const char *, size_t); +static int archive_string_normalize_C(struct archive_string *, const char *, + size_t); static struct archive_string * archive_string_append(struct archive_string *as, const char *p, size_t s) @@ -689,7 +697,7 @@ create_sconv_object(const char *fc, const char *tc, flag |= SCONV_UTF8_LIBARCHIVE_2; #endif - sc = malloc(sizeof(*sc)); + sc = calloc(1, sizeof(*sc)); if (sc == NULL) return (NULL); sc->next = NULL; @@ -704,6 +712,7 @@ create_sconv_object(const char *fc, const char *tc, free(sc->from_charset); return (NULL); } + archive_string_init(&sc->utf8); if (flag & SCONV_UTF8_LIBARCHIVE_2) { #if HAVE_ICONV @@ -712,9 +721,6 @@ create_sconv_object(const char *fc, const char *tc, sc->flag = flag; return (sc); } -#if HAVE_ICONV - sc->cd = iconv_open(tc, fc); -#endif if (flag & SCONV_TO_CHARSET) { if (strcmp(tc, "UTF-16BE") == 0) @@ -726,6 +732,18 @@ create_sconv_object(const char *fc, const char *tc, flag |= SCONV_WIN_CP; #endif } else if (flag & SCONV_FROM_CHARSET) { + /* + * Set a flag for UTF-8 NFD. Usually iconv cannot handle + * UTF-8 NFD. So we have to translate UTF-8 NFD characters + * to NFC ones ourselves so that to prevent that the same + * sight of two filenames, one is NFC and other is NFD, + * would be in its directory. + */ +#if !defined(__APPLE__) + if (strcmp(fc, "UTF-8") == 0) + flag |= SCONV_NORMALIZATION_C; + else +#endif if (strcmp(fc, "UTF-16BE") == 0) flag |= SCONV_UTF16BE; sc->to_cp = current_codepage; @@ -751,6 +769,42 @@ create_sconv_object(const char *fc, const char *tc, if (sc->same && strcmp(fc, "UTF-8") == 0) flag |= SCONV_COPY_UTF8_TO_UTF8; +#if defined(HAVE_ICONV) + /* + * Create an iconv object. + */ +#if defined(__APPLE__) + if (flag & SCONV_COPY_UTF8_TO_UTF8) { + if (flag & SCONV_FROM_CHARSET) { + /* To be NFD for comparing filenames. */ + sc->cd = iconv_open("UTF-8-MAC", fc); + if (sc->cd != (iconv_t)-1) + flag &= ~SCONV_COPY_UTF8_TO_UTF8; + } else { + /* This case does not use iconv. */ + sc->cd = (iconv_t)-1; + } + } else if (strcmp(fc, "UTF-8") == 0) { + sc->cd = iconv_open(tc, "UTF-8-MAC"); + if (sc->cd == (iconv_t)-1) { + sc->cd = iconv_open(tc, fc); + flag |= SCONV_NORMALIZATION_C; + } + } else if (strcmp(tc, "UTF-8") == 0) { + sc->cd = iconv_open("UTF-8-MAC", fc); + if (sc->cd == (iconv_t)-1) + sc->cd = iconv_open(tc, fc); + } +#else + if (flag & SCONV_COPY_UTF8_TO_UTF8) + /* This case does not use iconv. */ + sc->cd = (iconv_t)-1; +#endif + else { + sc->cd = iconv_open(tc, fc); + } +#endif /* HAVE_ICONV */ + sc->flag = flag; return (sc); @@ -764,6 +818,7 @@ free_sconv_object(struct archive_string_conv *sc) { free(sc->from_charset); free(sc->to_charset); + archive_string_free(&sc->utf8); #if HAVE_ICONV if (sc->cd != (iconv_t)-1) iconv_close(sc->cd); @@ -1115,7 +1170,8 @@ get_sconv_object(struct archive *a, const char *fc, const char *tc, int flag) return (sc); } #if HAVE_ICONV - if (sc->cd == (iconv_t)-1 && (flag & SCONV_BEST_EFFORT) == 0) { + if (sc->cd == (iconv_t)-1 && + (sc->flag & (SCONV_BEST_EFFORT | SCONV_COPY_UTF8_TO_UTF8)) == 0) { free_sconv_object(sc); archive_set_error(a, ARCHIVE_ERRNO_MISC, "iconv_open failed : Cannot convert " @@ -1371,15 +1427,32 @@ archive_strncat_in_locale(struct archive_string *as, const void *_p, size_t n, * Apparently, iconv does not check surrogate pairs in UTF-8 * when both from-charset and to-charset are UTF-8. */ - if (sc != NULL && (sc->flag & SCONV_COPY_UTF8_TO_UTF8) != 0) - return (strncat_from_utf8_to_utf8(as, _p, length)); - - archive_string_ensure(as, as->length + length*2+1); + if (sc->flag & SCONV_COPY_UTF8_TO_UTF8) { + if (sc->flag & SCONV_NORMALIZATION_C) + /* Additionally it nees normalization. */ + return (archive_string_normalize_C(as, _p, length)); + else + return (strncat_from_utf8_to_utf8(as, _p, length)); + } cd = sc->cd; if (cd == (iconv_t)-1) return (best_effort_strncat_in_locale(as, _p, n, sc)); + /* + * Need normalization to UTF-8 because iconv cannot correctly + * translate UTF-8 NFD characters to other charset. + */ + if (sc->flag & SCONV_NORMALIZATION_C) { + archive_string_empty(&(sc->utf8)); + if (archive_string_normalize_C(&(sc->utf8), _p, length) != 0) + return (-1); + src = sc->utf8.s; + length = sc->utf8.length; + } + + archive_string_ensure(as, as->length + length*2+1); + inp = (char *)(uintptr_t)src; remaining = length; outp = as->s + as->length; @@ -1474,6 +1547,20 @@ strncat_in_codepage(struct archive_string *as, } else { DWORD mbflag; + /* + * Need normalization to UTF-8 since + * MultiByteToWideChar() API does not support. + * NOTE: When from_cp is CP_UTF8, neither MB_PRECOMPOSED nor + * MB_COMPOSITE can be used; MultiByteToWideChar fail. + */ + if (sc->flag & SCONV_NORMALIZATION_C) { + archive_string_empty(&(sc->utf8)); + if (archive_string_normalize_C(&(sc->utf8), s, + length) != 0) + return (-1); + s = sc->utf8.s; + length = sc->utf8.length; + } if (sc->flag & SCONV_FROM_CHARSET) mbflag = 0; else @@ -1639,9 +1726,18 @@ best_effort_strncat_in_locale(struct archive_string *as, const void *_p, if (sc->flag & SCONV_UTF8_LIBARCHIVE_2) return (strncat_from_utf8_libarchive2(as, _p, length)); - /* Copy UTF-8 string with a check of CESU-8. */ - if (sc->flag & SCONV_COPY_UTF8_TO_UTF8) - return (strncat_from_utf8_to_utf8(as, _p, length)); + /* + * Copy a UTF-8 string with a check of CESU-8. + */ + if (sc->flag & SCONV_COPY_UTF8_TO_UTF8) { + if (sc->flag & SCONV_NORMALIZATION_C) + /* Additionally it nees normalization. */ + return (archive_string_normalize_C( + as, _p, length)); + else + return (strncat_from_utf8_to_utf8( + as, _p, length)); + } } archive_string_append(as, _p, length); @@ -1657,6 +1753,7 @@ best_effort_strncat_in_locale(struct archive_string *as, const void *_p, /* * Unicode conversion functions. * - UTF-8 <===> UTF-8 in removing surrogate pairs. + * - UTF-8 NFD ===> UTF-8 NFC in removing surrogate pairs. * - UTF-8 made by libarchive 2.x ===> UTF-8. * - UTF-16BE <===> UTF-8. * @@ -1887,6 +1984,337 @@ strncat_from_utf8_to_utf8(struct archive_string *as, const char *s, size_t len) return (ret); } +/* + * Following Constants for Hangul compositions this information comes from + * Unicode Standard Annex #15 http://unicode.org/reports/tr15/ + */ +#define HC_SBASE 0xAC00 +#define HC_LBASE 0x1100 +#define HC_VBASE 0x1161 +#define HC_TBASE 0x11A7 +#define HC_LCOUNT 19 +#define HC_VCOUNT 21 +#define HC_TCOUNT 28 +#define HC_NCOUNT (HC_VCOUNT * HC_TCOUNT) +#define HC_SCOUNT (HC_LCOUNT * HC_NCOUNT) + +static uint32_t +get_nfc(uint32_t uc, uint32_t uc2) +{ + int t, b; + + t = 0; + b = sizeof(u_composition_table)/sizeof(u_composition_table[0]) -1; + while (b >= t) { + int m = (t + b) / 2; + if (u_composition_table[m].cp1 < uc) + t = m + 1; + else if (u_composition_table[m].cp1 > uc) + b = m - 1; + else if (u_composition_table[m].cp2 < uc2) + t = m + 1; + else if (u_composition_table[m].cp2 > uc2) + b = m - 1; + else + return (u_composition_table[m].nfc); + } + return (0); +} + +#define FDC_MAX 10 /* The maximum number of Following Decomposable + * Characters. */ + +/* + * Update first code point. + */ +#define UPDATE_UC(new_uc) do { \ + uc = new_uc; \ + ucptr = NULL; \ +} while (0) + +/* + * Replace first code point with second code point. + */ +#define REPLACE_UC_WITH_UC2() do { \ + uc = uc2; \ + ucptr = uc2ptr; \ + n = n2; \ +} while (0) + +/* + * Write first code point. + * If the code point has not be changed from its original code, + * this just copies it from its original buffer pointer. + * If not, this converts it to UTF-8 byte sequence and copies it. + */ +#define WRITE_UC() do { \ + if (ucptr) { \ + switch (n) { \ + case 4: \ + *p++ = *ucptr++; \ + /* FALL THROUGH */ \ + case 3: \ + *p++ = *ucptr++; \ + /* FALL THROUGH */ \ + case 2: \ + *p++ = *ucptr++; \ + /* FALL THROUGH */ \ + case 1: \ + *p++ = *ucptr; \ + break; \ + } \ + ucptr = NULL; \ + } else { \ + p += unicode_to_utf8(p, uc); \ + } \ +} while (0) + +/* + * Collect following decomposable code points. + */ +#define COLLECT_CPS(start) do { \ + int _i; \ + for (_i = start; _i < FDC_MAX ; _i++) { \ + nx = cesu8_to_unicode(&ucx[_i], s, len);\ + if (nx <= 0) \ + break; \ + cx = CCC(ucx[_i]); \ + if (cl >= cx && cl != 228 && cx != 228)\ + break; \ + s += nx; \ + len -= nx; \ + cl = cx; \ + ccx[_i] = cx; \ + } \ + if (_i >= FDC_MAX) { \ + ret = -1; \ + ucx_size = FDC_MAX; \ + } else \ + ucx_size = _i; \ +} while (0) + +/* + * Normalize UTF-8 characters to Form C and copy the result. + * + * TODO: Convert composition exclusions,which are never converted + * from NFC,NFD,NFKC and NFKD, to Form C. + */ +static int +archive_string_normalize_C(struct archive_string *as, const char *s, + size_t len) +{ + char *p, *endp; + int ret = 0; + + /* + * The process normalizing NFD characters to NFC will not expand + * the length of an NFC UTF-8 string more than the length of an + * NFD one unless we normalize the composition exclusion characters. + */ + if (archive_string_ensure(as, as->length + len + 1) == NULL) + __archive_errx(1, "Out of memory"); + + p = as->s + as->length; + endp = as->s + as->buffer_length -1; + do { + const char *ucptr, *uc2ptr; + uint32_t uc, uc2; + int n, n2; + + /* Read first code point. */ + n = cesu8_to_unicode(&uc, s, len); + if (n < 0) { + /* Skip current byte. */ + *p++ = '?'; + s++; + len--; + ret = -1; + continue; + } else if (n == 0) + break; + else if (n == 6) + /* uc is converted from a surrogate pair. + * this should be treated as a changed code. */ + ucptr = NULL; + else + ucptr = s; + s += n; + len -= n; + + /* Read second code point. */ + while ((n2 = cesu8_to_unicode(&uc2, s, len)) > 0) { + uint32_t ucx[FDC_MAX]; + int ccx[FDC_MAX]; + int cl, cx, i, nx, ucx_size; + int LIndex,SIndex; + uint32_t nfc; + + if (n2 == 6) + /* uc2 is converted from a surrogate pair. + * this should be treated as a changed code. */ + uc2ptr = NULL; + else + uc2ptr = s; + s += n2; + len -= n2; + + /* + * If current second code point is out of decomposable + * code points, finding compositions is unneeded. + */ + if (!IS_DECOMPOSABLE_BLOCK(uc2)) { + WRITE_UC(); + REPLACE_UC_WITH_UC2(); + continue; + } + + /* + * Try to combine current code points. + */ + /* + * We have to combine Hangul characters according to + * http://uniicode.org/reports/tr15/#Hangul + */ + if (0 <= (LIndex = uc - HC_LBASE) && + LIndex < HC_LCOUNT) { + /* + * Hangul Composition. + * 1. Two current code points are L and V. + */ + int VIndex = uc2 - HC_VBASE; + if (0 <= VIndex && VIndex < HC_VCOUNT) { + /* Make syllable of form LV. */ + UPDATE_UC(HC_SBASE + + (LIndex * HC_VCOUNT + VIndex) * + HC_TCOUNT); + } else { + WRITE_UC(); + REPLACE_UC_WITH_UC2(); + } + continue; + } else if (0 <= (SIndex = uc - HC_SBASE) && + SIndex < HC_SCOUNT && (SIndex % HC_TCOUNT) == 0) { + /* + * Hangul Composition. + * 2. Two current code points are LV and T. + */ + int TIndex = uc2 - HC_TBASE; + if (0 < TIndex && TIndex < HC_TCOUNT) { + /* Make syllable of form LVT. */ + UPDATE_UC(uc + TIndex); + } else { + WRITE_UC(); + REPLACE_UC_WITH_UC2(); + } + continue; + } else if ((nfc = get_nfc(uc, uc2)) != 0) { + /* A composition to current code points + * is found. */ + UPDATE_UC(nfc); + continue; + } else if ((cl = CCC(uc2)) == 0) { + /* Clearly 'uc2' the second code point is not + * a decomposable code. */ + WRITE_UC(); + REPLACE_UC_WITH_UC2(); + continue; + } + + /* + * Collect following decomposable code points. + */ + cx = 0; + ucx[0] = uc2; + ccx[0] = cl; + COLLECT_CPS(1); + + /* + * Find a composed code in the collected code points. + */ + i = 1; + while (i < ucx_size) { + int j; + + if ((nfc = get_nfc(uc, ucx[i])) == 0) { + i++; + continue; + } + + /* + * nfc is composed of uc and ucx[i]. + */ + UPDATE_UC(nfc); + + /* + * Remove ucx[i] by shifting + * follwoing code points. + */ + for (j = i; j+1 < ucx_size; j++) { + ucx[j] = ucx[j+1]; + ccx[j] = ccx[j+1]; + } + ucx_size --; + + /* + * Collect following code points blocked + * by ucx[i] the removed code point. + */ + if (ucx_size > 0 && i == ucx_size && + nx > 0 && cx == cl) { + cl = ccx[ucx_size-1]; + COLLECT_CPS(ucx_size); + } + /* + * Restart finding a composed code with + * the updated uc from the top of the + * collected code points. + */ + i = 0; + } + + /* + * Apparently the current code points are not + * decomposed characters or already composed. + */ + WRITE_UC(); + for (i = 0; i < ucx_size; i++) + p += unicode_to_utf8(p, ucx[i]); + + /* + * Flush out remaining canonical combining characters. + */ + if (nx > 0 && cx == cl && len > 0) { + while ((nx = cesu8_to_unicode(&ucx[0], s, len)) + > 0) { + cx = CCC(ucx[0]); + if (cl > cx) + break; + s += nx; + len -= nx; + cl = cx; + p += unicode_to_utf8(p, ucx[0]); + } + } + break; + } + if (n2 < 0) { + WRITE_UC(); + /* Skip current byte. */ + *p++ = '?'; + s++; + len--; + ret = -1; + continue; + } else if (n2 == 0) { + WRITE_UC(); + break; + } + } while (len > 0); + as->length = p - as->s; + as->s[as->length] = '\0'; + return (ret); +} + /* * libarchive 2.x made incorrect UTF-8 strings in the wrong assumuption * that WCS is Unicode. it is true for servel platforms but some are false. diff --git a/libarchive/archive_string_composition.h b/libarchive/archive_string_composition.h new file mode 100644 index 000000000..cc4bf46c0 --- /dev/null +++ b/libarchive/archive_string_composition.h @@ -0,0 +1,1351 @@ +/*- + * Copyright (c) 2011 libarchive Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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 AUTHOR(S) AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + * + */ + +/* + * ATTENTION! + * This file is generated by build/utils/gen_archive_string_composition_h.sh + * from http://unicode.org/Public/UNIDATA/UnicodeData.txt + * + * See also http://unicode.org/report/tr15/ + */ + +#ifndef __LIBARCHIVE_BUILD +#error This header is only to be used internally to libarchive. +#endif + +#ifndef ARCHIVE_STRING_COMPOSITION_H_INCLUDED +#define ARCHIVE_STRING_COMPOSITION_H_INCLUDED + +struct unicode_composition_table { + uint32_t cp1; + uint32_t cp2; + uint32_t nfc; +}; + +static const struct unicode_composition_table u_composition_table[] = { + { 0x0003C , 0x00338 , 0x0226E }, + { 0x0003D , 0x00338 , 0x02260 }, + { 0x0003E , 0x00338 , 0x0226F }, + { 0x00041 , 0x00300 , 0x000C0 }, + { 0x00041 , 0x00301 , 0x000C1 }, + { 0x00041 , 0x00302 , 0x000C2 }, + { 0x00041 , 0x00303 , 0x000C3 }, + { 0x00041 , 0x00304 , 0x00100 }, + { 0x00041 , 0x00306 , 0x00102 }, + { 0x00041 , 0x00307 , 0x00226 }, + { 0x00041 , 0x00308 , 0x000C4 }, + { 0x00041 , 0x00309 , 0x01EA2 }, + { 0x00041 , 0x0030A , 0x000C5 }, + { 0x00041 , 0x0030C , 0x001CD }, + { 0x00041 , 0x0030F , 0x00200 }, + { 0x00041 , 0x00311 , 0x00202 }, + { 0x00041 , 0x00323 , 0x01EA0 }, + { 0x00041 , 0x00325 , 0x01E00 }, + { 0x00041 , 0x00328 , 0x00104 }, + { 0x00042 , 0x00307 , 0x01E02 }, + { 0x00042 , 0x00323 , 0x01E04 }, + { 0x00042 , 0x00331 , 0x01E06 }, + { 0x00043 , 0x00301 , 0x00106 }, + { 0x00043 , 0x00302 , 0x00108 }, + { 0x00043 , 0x00307 , 0x0010A }, + { 0x00043 , 0x0030C , 0x0010C }, + { 0x00043 , 0x00327 , 0x000C7 }, + { 0x00044 , 0x00307 , 0x01E0A }, + { 0x00044 , 0x0030C , 0x0010E }, + { 0x00044 , 0x00323 , 0x01E0C }, + { 0x00044 , 0x00327 , 0x01E10 }, + { 0x00044 , 0x0032D , 0x01E12 }, + { 0x00044 , 0x00331 , 0x01E0E }, + { 0x00045 , 0x00300 , 0x000C8 }, + { 0x00045 , 0x00301 , 0x000C9 }, + { 0x00045 , 0x00302 , 0x000CA }, + { 0x00045 , 0x00303 , 0x01EBC }, + { 0x00045 , 0x00304 , 0x00112 }, + { 0x00045 , 0x00306 , 0x00114 }, + { 0x00045 , 0x00307 , 0x00116 }, + { 0x00045 , 0x00308 , 0x000CB }, + { 0x00045 , 0x00309 , 0x01EBA }, + { 0x00045 , 0x0030C , 0x0011A }, + { 0x00045 , 0x0030F , 0x00204 }, + { 0x00045 , 0x00311 , 0x00206 }, + { 0x00045 , 0x00323 , 0x01EB8 }, + { 0x00045 , 0x00327 , 0x00228 }, + { 0x00045 , 0x00328 , 0x00118 }, + { 0x00045 , 0x0032D , 0x01E18 }, + { 0x00045 , 0x00330 , 0x01E1A }, + { 0x00046 , 0x00307 , 0x01E1E }, + { 0x00047 , 0x00301 , 0x001F4 }, + { 0x00047 , 0x00302 , 0x0011C }, + { 0x00047 , 0x00304 , 0x01E20 }, + { 0x00047 , 0x00306 , 0x0011E }, + { 0x00047 , 0x00307 , 0x00120 }, + { 0x00047 , 0x0030C , 0x001E6 }, + { 0x00047 , 0x00327 , 0x00122 }, + { 0x00048 , 0x00302 , 0x00124 }, + { 0x00048 , 0x00307 , 0x01E22 }, + { 0x00048 , 0x00308 , 0x01E26 }, + { 0x00048 , 0x0030C , 0x0021E }, + { 0x00048 , 0x00323 , 0x01E24 }, + { 0x00048 , 0x00327 , 0x01E28 }, + { 0x00048 , 0x0032E , 0x01E2A }, + { 0x00049 , 0x00300 , 0x000CC }, + { 0x00049 , 0x00301 , 0x000CD }, + { 0x00049 , 0x00302 , 0x000CE }, + { 0x00049 , 0x00303 , 0x00128 }, + { 0x00049 , 0x00304 , 0x0012A }, + { 0x00049 , 0x00306 , 0x0012C }, + { 0x00049 , 0x00307 , 0x00130 }, + { 0x00049 , 0x00308 , 0x000CF }, + { 0x00049 , 0x00309 , 0x01EC8 }, + { 0x00049 , 0x0030C , 0x001CF }, + { 0x00049 , 0x0030F , 0x00208 }, + { 0x00049 , 0x00311 , 0x0020A }, + { 0x00049 , 0x00323 , 0x01ECA }, + { 0x00049 , 0x00328 , 0x0012E }, + { 0x00049 , 0x00330 , 0x01E2C }, + { 0x0004A , 0x00302 , 0x00134 }, + { 0x0004B , 0x00301 , 0x01E30 }, + { 0x0004B , 0x0030C , 0x001E8 }, + { 0x0004B , 0x00323 , 0x01E32 }, + { 0x0004B , 0x00327 , 0x00136 }, + { 0x0004B , 0x00331 , 0x01E34 }, + { 0x0004C , 0x00301 , 0x00139 }, + { 0x0004C , 0x0030C , 0x0013D }, + { 0x0004C , 0x00323 , 0x01E36 }, + { 0x0004C , 0x00327 , 0x0013B }, + { 0x0004C , 0x0032D , 0x01E3C }, + { 0x0004C , 0x00331 , 0x01E3A }, + { 0x0004D , 0x00301 , 0x01E3E }, + { 0x0004D , 0x00307 , 0x01E40 }, + { 0x0004D , 0x00323 , 0x01E42 }, + { 0x0004E , 0x00300 , 0x001F8 }, + { 0x0004E , 0x00301 , 0x00143 }, + { 0x0004E , 0x00303 , 0x000D1 }, + { 0x0004E , 0x00307 , 0x01E44 }, + { 0x0004E , 0x0030C , 0x00147 }, + { 0x0004E , 0x00323 , 0x01E46 }, + { 0x0004E , 0x00327 , 0x00145 }, + { 0x0004E , 0x0032D , 0x01E4A }, + { 0x0004E , 0x00331 , 0x01E48 }, + { 0x0004F , 0x00300 , 0x000D2 }, + { 0x0004F , 0x00301 , 0x000D3 }, + { 0x0004F , 0x00302 , 0x000D4 }, + { 0x0004F , 0x00303 , 0x000D5 }, + { 0x0004F , 0x00304 , 0x0014C }, + { 0x0004F , 0x00306 , 0x0014E }, + { 0x0004F , 0x00307 , 0x0022E }, + { 0x0004F , 0x00308 , 0x000D6 }, + { 0x0004F , 0x00309 , 0x01ECE }, + { 0x0004F , 0x0030B , 0x00150 }, + { 0x0004F , 0x0030C , 0x001D1 }, + { 0x0004F , 0x0030F , 0x0020C }, + { 0x0004F , 0x00311 , 0x0020E }, + { 0x0004F , 0x0031B , 0x001A0 }, + { 0x0004F , 0x00323 , 0x01ECC }, + { 0x0004F , 0x00328 , 0x001EA }, + { 0x00050 , 0x00301 , 0x01E54 }, + { 0x00050 , 0x00307 , 0x01E56 }, + { 0x00052 , 0x00301 , 0x00154 }, + { 0x00052 , 0x00307 , 0x01E58 }, + { 0x00052 , 0x0030C , 0x00158 }, + { 0x00052 , 0x0030F , 0x00210 }, + { 0x00052 , 0x00311 , 0x00212 }, + { 0x00052 , 0x00323 , 0x01E5A }, + { 0x00052 , 0x00327 , 0x00156 }, + { 0x00052 , 0x00331 , 0x01E5E }, + { 0x00053 , 0x00301 , 0x0015A }, + { 0x00053 , 0x00302 , 0x0015C }, + { 0x00053 , 0x00307 , 0x01E60 }, + { 0x00053 , 0x0030C , 0x00160 }, + { 0x00053 , 0x00323 , 0x01E62 }, + { 0x00053 , 0x00326 , 0x00218 }, + { 0x00053 , 0x00327 , 0x0015E }, + { 0x00054 , 0x00307 , 0x01E6A }, + { 0x00054 , 0x0030C , 0x00164 }, + { 0x00054 , 0x00323 , 0x01E6C }, + { 0x00054 , 0x00326 , 0x0021A }, + { 0x00054 , 0x00327 , 0x00162 }, + { 0x00054 , 0x0032D , 0x01E70 }, + { 0x00054 , 0x00331 , 0x01E6E }, + { 0x00055 , 0x00300 , 0x000D9 }, + { 0x00055 , 0x00301 , 0x000DA }, + { 0x00055 , 0x00302 , 0x000DB }, + { 0x00055 , 0x00303 , 0x00168 }, + { 0x00055 , 0x00304 , 0x0016A }, + { 0x00055 , 0x00306 , 0x0016C }, + { 0x00055 , 0x00308 , 0x000DC }, + { 0x00055 , 0x00309 , 0x01EE6 }, + { 0x00055 , 0x0030A , 0x0016E }, + { 0x00055 , 0x0030B , 0x00170 }, + { 0x00055 , 0x0030C , 0x001D3 }, + { 0x00055 , 0x0030F , 0x00214 }, + { 0x00055 , 0x00311 , 0x00216 }, + { 0x00055 , 0x0031B , 0x001AF }, + { 0x00055 , 0x00323 , 0x01EE4 }, + { 0x00055 , 0x00324 , 0x01E72 }, + { 0x00055 , 0x00328 , 0x00172 }, + { 0x00055 , 0x0032D , 0x01E76 }, + { 0x00055 , 0x00330 , 0x01E74 }, + { 0x00056 , 0x00303 , 0x01E7C }, + { 0x00056 , 0x00323 , 0x01E7E }, + { 0x00057 , 0x00300 , 0x01E80 }, + { 0x00057 , 0x00301 , 0x01E82 }, + { 0x00057 , 0x00302 , 0x00174 }, + { 0x00057 , 0x00307 , 0x01E86 }, + { 0x00057 , 0x00308 , 0x01E84 }, + { 0x00057 , 0x00323 , 0x01E88 }, + { 0x00058 , 0x00307 , 0x01E8A }, + { 0x00058 , 0x00308 , 0x01E8C }, + { 0x00059 , 0x00300 , 0x01EF2 }, + { 0x00059 , 0x00301 , 0x000DD }, + { 0x00059 , 0x00302 , 0x00176 }, + { 0x00059 , 0x00303 , 0x01EF8 }, + { 0x00059 , 0x00304 , 0x00232 }, + { 0x00059 , 0x00307 , 0x01E8E }, + { 0x00059 , 0x00308 , 0x00178 }, + { 0x00059 , 0x00309 , 0x01EF6 }, + { 0x00059 , 0x00323 , 0x01EF4 }, + { 0x0005A , 0x00301 , 0x00179 }, + { 0x0005A , 0x00302 , 0x01E90 }, + { 0x0005A , 0x00307 , 0x0017B }, + { 0x0005A , 0x0030C , 0x0017D }, + { 0x0005A , 0x00323 , 0x01E92 }, + { 0x0005A , 0x00331 , 0x01E94 }, + { 0x00061 , 0x00300 , 0x000E0 }, + { 0x00061 , 0x00301 , 0x000E1 }, + { 0x00061 , 0x00302 , 0x000E2 }, + { 0x00061 , 0x00303 , 0x000E3 }, + { 0x00061 , 0x00304 , 0x00101 }, + { 0x00061 , 0x00306 , 0x00103 }, + { 0x00061 , 0x00307 , 0x00227 }, + { 0x00061 , 0x00308 , 0x000E4 }, + { 0x00061 , 0x00309 , 0x01EA3 }, + { 0x00061 , 0x0030A , 0x000E5 }, + { 0x00061 , 0x0030C , 0x001CE }, + { 0x00061 , 0x0030F , 0x00201 }, + { 0x00061 , 0x00311 , 0x00203 }, + { 0x00061 , 0x00323 , 0x01EA1 }, + { 0x00061 , 0x00325 , 0x01E01 }, + { 0x00061 , 0x00328 , 0x00105 }, + { 0x00062 , 0x00307 , 0x01E03 }, + { 0x00062 , 0x00323 , 0x01E05 }, + { 0x00062 , 0x00331 , 0x01E07 }, + { 0x00063 , 0x00301 , 0x00107 }, + { 0x00063 , 0x00302 , 0x00109 }, + { 0x00063 , 0x00307 , 0x0010B }, + { 0x00063 , 0x0030C , 0x0010D }, + { 0x00063 , 0x00327 , 0x000E7 }, + { 0x00064 , 0x00307 , 0x01E0B }, + { 0x00064 , 0x0030C , 0x0010F }, + { 0x00064 , 0x00323 , 0x01E0D }, + { 0x00064 , 0x00327 , 0x01E11 }, + { 0x00064 , 0x0032D , 0x01E13 }, + { 0x00064 , 0x00331 , 0x01E0F }, + { 0x00065 , 0x00300 , 0x000E8 }, + { 0x00065 , 0x00301 , 0x000E9 }, + { 0x00065 , 0x00302 , 0x000EA }, + { 0x00065 , 0x00303 , 0x01EBD }, + { 0x00065 , 0x00304 , 0x00113 }, + { 0x00065 , 0x00306 , 0x00115 }, + { 0x00065 , 0x00307 , 0x00117 }, + { 0x00065 , 0x00308 , 0x000EB }, + { 0x00065 , 0x00309 , 0x01EBB }, + { 0x00065 , 0x0030C , 0x0011B }, + { 0x00065 , 0x0030F , 0x00205 }, + { 0x00065 , 0x00311 , 0x00207 }, + { 0x00065 , 0x00323 , 0x01EB9 }, + { 0x00065 , 0x00327 , 0x00229 }, + { 0x00065 , 0x00328 , 0x00119 }, + { 0x00065 , 0x0032D , 0x01E19 }, + { 0x00065 , 0x00330 , 0x01E1B }, + { 0x00066 , 0x00307 , 0x01E1F }, + { 0x00067 , 0x00301 , 0x001F5 }, + { 0x00067 , 0x00302 , 0x0011D }, + { 0x00067 , 0x00304 , 0x01E21 }, + { 0x00067 , 0x00306 , 0x0011F }, + { 0x00067 , 0x00307 , 0x00121 }, + { 0x00067 , 0x0030C , 0x001E7 }, + { 0x00067 , 0x00327 , 0x00123 }, + { 0x00068 , 0x00302 , 0x00125 }, + { 0x00068 , 0x00307 , 0x01E23 }, + { 0x00068 , 0x00308 , 0x01E27 }, + { 0x00068 , 0x0030C , 0x0021F }, + { 0x00068 , 0x00323 , 0x01E25 }, + { 0x00068 , 0x00327 , 0x01E29 }, + { 0x00068 , 0x0032E , 0x01E2B }, + { 0x00068 , 0x00331 , 0x01E96 }, + { 0x00069 , 0x00300 , 0x000EC }, + { 0x00069 , 0x00301 , 0x000ED }, + { 0x00069 , 0x00302 , 0x000EE }, + { 0x00069 , 0x00303 , 0x00129 }, + { 0x00069 , 0x00304 , 0x0012B }, + { 0x00069 , 0x00306 , 0x0012D }, + { 0x00069 , 0x00308 , 0x000EF }, + { 0x00069 , 0x00309 , 0x01EC9 }, + { 0x00069 , 0x0030C , 0x001D0 }, + { 0x00069 , 0x0030F , 0x00209 }, + { 0x00069 , 0x00311 , 0x0020B }, + { 0x00069 , 0x00323 , 0x01ECB }, + { 0x00069 , 0x00328 , 0x0012F }, + { 0x00069 , 0x00330 , 0x01E2D }, + { 0x0006A , 0x00302 , 0x00135 }, + { 0x0006A , 0x0030C , 0x001F0 }, + { 0x0006B , 0x00301 , 0x01E31 }, + { 0x0006B , 0x0030C , 0x001E9 }, + { 0x0006B , 0x00323 , 0x01E33 }, + { 0x0006B , 0x00327 , 0x00137 }, + { 0x0006B , 0x00331 , 0x01E35 }, + { 0x0006C , 0x00301 , 0x0013A }, + { 0x0006C , 0x0030C , 0x0013E }, + { 0x0006C , 0x00323 , 0x01E37 }, + { 0x0006C , 0x00327 , 0x0013C }, + { 0x0006C , 0x0032D , 0x01E3D }, + { 0x0006C , 0x00331 , 0x01E3B }, + { 0x0006D , 0x00301 , 0x01E3F }, + { 0x0006D , 0x00307 , 0x01E41 }, + { 0x0006D , 0x00323 , 0x01E43 }, + { 0x0006E , 0x00300 , 0x001F9 }, + { 0x0006E , 0x00301 , 0x00144 }, + { 0x0006E , 0x00303 , 0x000F1 }, + { 0x0006E , 0x00307 , 0x01E45 }, + { 0x0006E , 0x0030C , 0x00148 }, + { 0x0006E , 0x00323 , 0x01E47 }, + { 0x0006E , 0x00327 , 0x00146 }, + { 0x0006E , 0x0032D , 0x01E4B }, + { 0x0006E , 0x00331 , 0x01E49 }, + { 0x0006F , 0x00300 , 0x000F2 }, + { 0x0006F , 0x00301 , 0x000F3 }, + { 0x0006F , 0x00302 , 0x000F4 }, + { 0x0006F , 0x00303 , 0x000F5 }, + { 0x0006F , 0x00304 , 0x0014D }, + { 0x0006F , 0x00306 , 0x0014F }, + { 0x0006F , 0x00307 , 0x0022F }, + { 0x0006F , 0x00308 , 0x000F6 }, + { 0x0006F , 0x00309 , 0x01ECF }, + { 0x0006F , 0x0030B , 0x00151 }, + { 0x0006F , 0x0030C , 0x001D2 }, + { 0x0006F , 0x0030F , 0x0020D }, + { 0x0006F , 0x00311 , 0x0020F }, + { 0x0006F , 0x0031B , 0x001A1 }, + { 0x0006F , 0x00323 , 0x01ECD }, + { 0x0006F , 0x00328 , 0x001EB }, + { 0x00070 , 0x00301 , 0x01E55 }, + { 0x00070 , 0x00307 , 0x01E57 }, + { 0x00072 , 0x00301 , 0x00155 }, + { 0x00072 , 0x00307 , 0x01E59 }, + { 0x00072 , 0x0030C , 0x00159 }, + { 0x00072 , 0x0030F , 0x00211 }, + { 0x00072 , 0x00311 , 0x00213 }, + { 0x00072 , 0x00323 , 0x01E5B }, + { 0x00072 , 0x00327 , 0x00157 }, + { 0x00072 , 0x00331 , 0x01E5F }, + { 0x00073 , 0x00301 , 0x0015B }, + { 0x00073 , 0x00302 , 0x0015D }, + { 0x00073 , 0x00307 , 0x01E61 }, + { 0x00073 , 0x0030C , 0x00161 }, + { 0x00073 , 0x00323 , 0x01E63 }, + { 0x00073 , 0x00326 , 0x00219 }, + { 0x00073 , 0x00327 , 0x0015F }, + { 0x00074 , 0x00307 , 0x01E6B }, + { 0x00074 , 0x00308 , 0x01E97 }, + { 0x00074 , 0x0030C , 0x00165 }, + { 0x00074 , 0x00323 , 0x01E6D }, + { 0x00074 , 0x00326 , 0x0021B }, + { 0x00074 , 0x00327 , 0x00163 }, + { 0x00074 , 0x0032D , 0x01E71 }, + { 0x00074 , 0x00331 , 0x01E6F }, + { 0x00075 , 0x00300 , 0x000F9 }, + { 0x00075 , 0x00301 , 0x000FA }, + { 0x00075 , 0x00302 , 0x000FB }, + { 0x00075 , 0x00303 , 0x00169 }, + { 0x00075 , 0x00304 , 0x0016B }, + { 0x00075 , 0x00306 , 0x0016D }, + { 0x00075 , 0x00308 , 0x000FC }, + { 0x00075 , 0x00309 , 0x01EE7 }, + { 0x00075 , 0x0030A , 0x0016F }, + { 0x00075 , 0x0030B , 0x00171 }, + { 0x00075 , 0x0030C , 0x001D4 }, + { 0x00075 , 0x0030F , 0x00215 }, + { 0x00075 , 0x00311 , 0x00217 }, + { 0x00075 , 0x0031B , 0x001B0 }, + { 0x00075 , 0x00323 , 0x01EE5 }, + { 0x00075 , 0x00324 , 0x01E73 }, + { 0x00075 , 0x00328 , 0x00173 }, + { 0x00075 , 0x0032D , 0x01E77 }, + { 0x00075 , 0x00330 , 0x01E75 }, + { 0x00076 , 0x00303 , 0x01E7D }, + { 0x00076 , 0x00323 , 0x01E7F }, + { 0x00077 , 0x00300 , 0x01E81 }, + { 0x00077 , 0x00301 , 0x01E83 }, + { 0x00077 , 0x00302 , 0x00175 }, + { 0x00077 , 0x00307 , 0x01E87 }, + { 0x00077 , 0x00308 , 0x01E85 }, + { 0x00077 , 0x0030A , 0x01E98 }, + { 0x00077 , 0x00323 , 0x01E89 }, + { 0x00078 , 0x00307 , 0x01E8B }, + { 0x00078 , 0x00308 , 0x01E8D }, + { 0x00079 , 0x00300 , 0x01EF3 }, + { 0x00079 , 0x00301 , 0x000FD }, + { 0x00079 , 0x00302 , 0x00177 }, + { 0x00079 , 0x00303 , 0x01EF9 }, + { 0x00079 , 0x00304 , 0x00233 }, + { 0x00079 , 0x00307 , 0x01E8F }, + { 0x00079 , 0x00308 , 0x000FF }, + { 0x00079 , 0x00309 , 0x01EF7 }, + { 0x00079 , 0x0030A , 0x01E99 }, + { 0x00079 , 0x00323 , 0x01EF5 }, + { 0x0007A , 0x00301 , 0x0017A }, + { 0x0007A , 0x00302 , 0x01E91 }, + { 0x0007A , 0x00307 , 0x0017C }, + { 0x0007A , 0x0030C , 0x0017E }, + { 0x0007A , 0x00323 , 0x01E93 }, + { 0x0007A , 0x00331 , 0x01E95 }, + { 0x000A8 , 0x00300 , 0x01FED }, + { 0x000A8 , 0x00301 , 0x00385 }, + { 0x000A8 , 0x00342 , 0x01FC1 }, + { 0x000C2 , 0x00300 , 0x01EA6 }, + { 0x000C2 , 0x00301 , 0x01EA4 }, + { 0x000C2 , 0x00303 , 0x01EAA }, + { 0x000C2 , 0x00309 , 0x01EA8 }, + { 0x000C4 , 0x00304 , 0x001DE }, + { 0x000C5 , 0x00301 , 0x001FA }, + { 0x000C6 , 0x00301 , 0x001FC }, + { 0x000C6 , 0x00304 , 0x001E2 }, + { 0x000C7 , 0x00301 , 0x01E08 }, + { 0x000CA , 0x00300 , 0x01EC0 }, + { 0x000CA , 0x00301 , 0x01EBE }, + { 0x000CA , 0x00303 , 0x01EC4 }, + { 0x000CA , 0x00309 , 0x01EC2 }, + { 0x000CF , 0x00301 , 0x01E2E }, + { 0x000D4 , 0x00300 , 0x01ED2 }, + { 0x000D4 , 0x00301 , 0x01ED0 }, + { 0x000D4 , 0x00303 , 0x01ED6 }, + { 0x000D4 , 0x00309 , 0x01ED4 }, + { 0x000D5 , 0x00301 , 0x01E4C }, + { 0x000D5 , 0x00304 , 0x0022C }, + { 0x000D5 , 0x00308 , 0x01E4E }, + { 0x000D6 , 0x00304 , 0x0022A }, + { 0x000D8 , 0x00301 , 0x001FE }, + { 0x000DC , 0x00300 , 0x001DB }, + { 0x000DC , 0x00301 , 0x001D7 }, + { 0x000DC , 0x00304 , 0x001D5 }, + { 0x000DC , 0x0030C , 0x001D9 }, + { 0x000E2 , 0x00300 , 0x01EA7 }, + { 0x000E2 , 0x00301 , 0x01EA5 }, + { 0x000E2 , 0x00303 , 0x01EAB }, + { 0x000E2 , 0x00309 , 0x01EA9 }, + { 0x000E4 , 0x00304 , 0x001DF }, + { 0x000E5 , 0x00301 , 0x001FB }, + { 0x000E6 , 0x00301 , 0x001FD }, + { 0x000E6 , 0x00304 , 0x001E3 }, + { 0x000E7 , 0x00301 , 0x01E09 }, + { 0x000EA , 0x00300 , 0x01EC1 }, + { 0x000EA , 0x00301 , 0x01EBF }, + { 0x000EA , 0x00303 , 0x01EC5 }, + { 0x000EA , 0x00309 , 0x01EC3 }, + { 0x000EF , 0x00301 , 0x01E2F }, + { 0x000F4 , 0x00300 , 0x01ED3 }, + { 0x000F4 , 0x00301 , 0x01ED1 }, + { 0x000F4 , 0x00303 , 0x01ED7 }, + { 0x000F4 , 0x00309 , 0x01ED5 }, + { 0x000F5 , 0x00301 , 0x01E4D }, + { 0x000F5 , 0x00304 , 0x0022D }, + { 0x000F5 , 0x00308 , 0x01E4F }, + { 0x000F6 , 0x00304 , 0x0022B }, + { 0x000F8 , 0x00301 , 0x001FF }, + { 0x000FC , 0x00300 , 0x001DC }, + { 0x000FC , 0x00301 , 0x001D8 }, + { 0x000FC , 0x00304 , 0x001D6 }, + { 0x000FC , 0x0030C , 0x001DA }, + { 0x00102 , 0x00300 , 0x01EB0 }, + { 0x00102 , 0x00301 , 0x01EAE }, + { 0x00102 , 0x00303 , 0x01EB4 }, + { 0x00102 , 0x00309 , 0x01EB2 }, + { 0x00103 , 0x00300 , 0x01EB1 }, + { 0x00103 , 0x00301 , 0x01EAF }, + { 0x00103 , 0x00303 , 0x01EB5 }, + { 0x00103 , 0x00309 , 0x01EB3 }, + { 0x00112 , 0x00300 , 0x01E14 }, + { 0x00112 , 0x00301 , 0x01E16 }, + { 0x00113 , 0x00300 , 0x01E15 }, + { 0x00113 , 0x00301 , 0x01E17 }, + { 0x0014C , 0x00300 , 0x01E50 }, + { 0x0014C , 0x00301 , 0x01E52 }, + { 0x0014D , 0x00300 , 0x01E51 }, + { 0x0014D , 0x00301 , 0x01E53 }, + { 0x0015A , 0x00307 , 0x01E64 }, + { 0x0015B , 0x00307 , 0x01E65 }, + { 0x00160 , 0x00307 , 0x01E66 }, + { 0x00161 , 0x00307 , 0x01E67 }, + { 0x00168 , 0x00301 , 0x01E78 }, + { 0x00169 , 0x00301 , 0x01E79 }, + { 0x0016A , 0x00308 , 0x01E7A }, + { 0x0016B , 0x00308 , 0x01E7B }, + { 0x0017F , 0x00307 , 0x01E9B }, + { 0x001A0 , 0x00300 , 0x01EDC }, + { 0x001A0 , 0x00301 , 0x01EDA }, + { 0x001A0 , 0x00303 , 0x01EE0 }, + { 0x001A0 , 0x00309 , 0x01EDE }, + { 0x001A0 , 0x00323 , 0x01EE2 }, + { 0x001A1 , 0x00300 , 0x01EDD }, + { 0x001A1 , 0x00301 , 0x01EDB }, + { 0x001A1 , 0x00303 , 0x01EE1 }, + { 0x001A1 , 0x00309 , 0x01EDF }, + { 0x001A1 , 0x00323 , 0x01EE3 }, + { 0x001AF , 0x00300 , 0x01EEA }, + { 0x001AF , 0x00301 , 0x01EE8 }, + { 0x001AF , 0x00303 , 0x01EEE }, + { 0x001AF , 0x00309 , 0x01EEC }, + { 0x001AF , 0x00323 , 0x01EF0 }, + { 0x001B0 , 0x00300 , 0x01EEB }, + { 0x001B0 , 0x00301 , 0x01EE9 }, + { 0x001B0 , 0x00303 , 0x01EEF }, + { 0x001B0 , 0x00309 , 0x01EED }, + { 0x001B0 , 0x00323 , 0x01EF1 }, + { 0x001B7 , 0x0030C , 0x001EE }, + { 0x001EA , 0x00304 , 0x001EC }, + { 0x001EB , 0x00304 , 0x001ED }, + { 0x00226 , 0x00304 , 0x001E0 }, + { 0x00227 , 0x00304 , 0x001E1 }, + { 0x00228 , 0x00306 , 0x01E1C }, + { 0x00229 , 0x00306 , 0x01E1D }, + { 0x0022E , 0x00304 , 0x00230 }, + { 0x0022F , 0x00304 , 0x00231 }, + { 0x00292 , 0x0030C , 0x001EF }, + { 0x00391 , 0x00300 , 0x01FBA }, + { 0x00391 , 0x00301 , 0x00386 }, + { 0x00391 , 0x00304 , 0x01FB9 }, + { 0x00391 , 0x00306 , 0x01FB8 }, + { 0x00391 , 0x00313 , 0x01F08 }, + { 0x00391 , 0x00314 , 0x01F09 }, + { 0x00391 , 0x00345 , 0x01FBC }, + { 0x00395 , 0x00300 , 0x01FC8 }, + { 0x00395 , 0x00301 , 0x00388 }, + { 0x00395 , 0x00313 , 0x01F18 }, + { 0x00395 , 0x00314 , 0x01F19 }, + { 0x00397 , 0x00300 , 0x01FCA }, + { 0x00397 , 0x00301 , 0x00389 }, + { 0x00397 , 0x00313 , 0x01F28 }, + { 0x00397 , 0x00314 , 0x01F29 }, + { 0x00397 , 0x00345 , 0x01FCC }, + { 0x00399 , 0x00300 , 0x01FDA }, + { 0x00399 , 0x00301 , 0x0038A }, + { 0x00399 , 0x00304 , 0x01FD9 }, + { 0x00399 , 0x00306 , 0x01FD8 }, + { 0x00399 , 0x00308 , 0x003AA }, + { 0x00399 , 0x00313 , 0x01F38 }, + { 0x00399 , 0x00314 , 0x01F39 }, + { 0x0039F , 0x00300 , 0x01FF8 }, + { 0x0039F , 0x00301 , 0x0038C }, + { 0x0039F , 0x00313 , 0x01F48 }, + { 0x0039F , 0x00314 , 0x01F49 }, + { 0x003A1 , 0x00314 , 0x01FEC }, + { 0x003A5 , 0x00300 , 0x01FEA }, + { 0x003A5 , 0x00301 , 0x0038E }, + { 0x003A5 , 0x00304 , 0x01FE9 }, + { 0x003A5 , 0x00306 , 0x01FE8 }, + { 0x003A5 , 0x00308 , 0x003AB }, + { 0x003A5 , 0x00314 , 0x01F59 }, + { 0x003A9 , 0x00300 , 0x01FFA }, + { 0x003A9 , 0x00301 , 0x0038F }, + { 0x003A9 , 0x00313 , 0x01F68 }, + { 0x003A9 , 0x00314 , 0x01F69 }, + { 0x003A9 , 0x00345 , 0x01FFC }, + { 0x003AC , 0x00345 , 0x01FB4 }, + { 0x003AE , 0x00345 , 0x01FC4 }, + { 0x003B1 , 0x00300 , 0x01F70 }, + { 0x003B1 , 0x00301 , 0x003AC }, + { 0x003B1 , 0x00304 , 0x01FB1 }, + { 0x003B1 , 0x00306 , 0x01FB0 }, + { 0x003B1 , 0x00313 , 0x01F00 }, + { 0x003B1 , 0x00314 , 0x01F01 }, + { 0x003B1 , 0x00342 , 0x01FB6 }, + { 0x003B1 , 0x00345 , 0x01FB3 }, + { 0x003B5 , 0x00300 , 0x01F72 }, + { 0x003B5 , 0x00301 , 0x003AD }, + { 0x003B5 , 0x00313 , 0x01F10 }, + { 0x003B5 , 0x00314 , 0x01F11 }, + { 0x003B7 , 0x00300 , 0x01F74 }, + { 0x003B7 , 0x00301 , 0x003AE }, + { 0x003B7 , 0x00313 , 0x01F20 }, + { 0x003B7 , 0x00314 , 0x01F21 }, + { 0x003B7 , 0x00342 , 0x01FC6 }, + { 0x003B7 , 0x00345 , 0x01FC3 }, + { 0x003B9 , 0x00300 , 0x01F76 }, + { 0x003B9 , 0x00301 , 0x003AF }, + { 0x003B9 , 0x00304 , 0x01FD1 }, + { 0x003B9 , 0x00306 , 0x01FD0 }, + { 0x003B9 , 0x00308 , 0x003CA }, + { 0x003B9 , 0x00313 , 0x01F30 }, + { 0x003B9 , 0x00314 , 0x01F31 }, + { 0x003B9 , 0x00342 , 0x01FD6 }, + { 0x003BF , 0x00300 , 0x01F78 }, + { 0x003BF , 0x00301 , 0x003CC }, + { 0x003BF , 0x00313 , 0x01F40 }, + { 0x003BF , 0x00314 , 0x01F41 }, + { 0x003C1 , 0x00313 , 0x01FE4 }, + { 0x003C1 , 0x00314 , 0x01FE5 }, + { 0x003C5 , 0x00300 , 0x01F7A }, + { 0x003C5 , 0x00301 , 0x003CD }, + { 0x003C5 , 0x00304 , 0x01FE1 }, + { 0x003C5 , 0x00306 , 0x01FE0 }, + { 0x003C5 , 0x00308 , 0x003CB }, + { 0x003C5 , 0x00313 , 0x01F50 }, + { 0x003C5 , 0x00314 , 0x01F51 }, + { 0x003C5 , 0x00342 , 0x01FE6 }, + { 0x003C9 , 0x00300 , 0x01F7C }, + { 0x003C9 , 0x00301 , 0x003CE }, + { 0x003C9 , 0x00313 , 0x01F60 }, + { 0x003C9 , 0x00314 , 0x01F61 }, + { 0x003C9 , 0x00342 , 0x01FF6 }, + { 0x003C9 , 0x00345 , 0x01FF3 }, + { 0x003CA , 0x00300 , 0x01FD2 }, + { 0x003CA , 0x00301 , 0x00390 }, + { 0x003CA , 0x00342 , 0x01FD7 }, + { 0x003CB , 0x00300 , 0x01FE2 }, + { 0x003CB , 0x00301 , 0x003B0 }, + { 0x003CB , 0x00342 , 0x01FE7 }, + { 0x003CE , 0x00345 , 0x01FF4 }, + { 0x003D2 , 0x00301 , 0x003D3 }, + { 0x003D2 , 0x00308 , 0x003D4 }, + { 0x00406 , 0x00308 , 0x00407 }, + { 0x00410 , 0x00306 , 0x004D0 }, + { 0x00410 , 0x00308 , 0x004D2 }, + { 0x00413 , 0x00301 , 0x00403 }, + { 0x00415 , 0x00300 , 0x00400 }, + { 0x00415 , 0x00306 , 0x004D6 }, + { 0x00415 , 0x00308 , 0x00401 }, + { 0x00416 , 0x00306 , 0x004C1 }, + { 0x00416 , 0x00308 , 0x004DC }, + { 0x00417 , 0x00308 , 0x004DE }, + { 0x00418 , 0x00300 , 0x0040D }, + { 0x00418 , 0x00304 , 0x004E2 }, + { 0x00418 , 0x00306 , 0x00419 }, + { 0x00418 , 0x00308 , 0x004E4 }, + { 0x0041A , 0x00301 , 0x0040C }, + { 0x0041E , 0x00308 , 0x004E6 }, + { 0x00423 , 0x00304 , 0x004EE }, + { 0x00423 , 0x00306 , 0x0040E }, + { 0x00423 , 0x00308 , 0x004F0 }, + { 0x00423 , 0x0030B , 0x004F2 }, + { 0x00427 , 0x00308 , 0x004F4 }, + { 0x0042B , 0x00308 , 0x004F8 }, + { 0x0042D , 0x00308 , 0x004EC }, + { 0x00430 , 0x00306 , 0x004D1 }, + { 0x00430 , 0x00308 , 0x004D3 }, + { 0x00433 , 0x00301 , 0x00453 }, + { 0x00435 , 0x00300 , 0x00450 }, + { 0x00435 , 0x00306 , 0x004D7 }, + { 0x00435 , 0x00308 , 0x00451 }, + { 0x00436 , 0x00306 , 0x004C2 }, + { 0x00436 , 0x00308 , 0x004DD }, + { 0x00437 , 0x00308 , 0x004DF }, + { 0x00438 , 0x00300 , 0x0045D }, + { 0x00438 , 0x00304 , 0x004E3 }, + { 0x00438 , 0x00306 , 0x00439 }, + { 0x00438 , 0x00308 , 0x004E5 }, + { 0x0043A , 0x00301 , 0x0045C }, + { 0x0043E , 0x00308 , 0x004E7 }, + { 0x00443 , 0x00304 , 0x004EF }, + { 0x00443 , 0x00306 , 0x0045E }, + { 0x00443 , 0x00308 , 0x004F1 }, + { 0x00443 , 0x0030B , 0x004F3 }, + { 0x00447 , 0x00308 , 0x004F5 }, + { 0x0044B , 0x00308 , 0x004F9 }, + { 0x0044D , 0x00308 , 0x004ED }, + { 0x00456 , 0x00308 , 0x00457 }, + { 0x00474 , 0x0030F , 0x00476 }, + { 0x00475 , 0x0030F , 0x00477 }, + { 0x004D8 , 0x00308 , 0x004DA }, + { 0x004D9 , 0x00308 , 0x004DB }, + { 0x004E8 , 0x00308 , 0x004EA }, + { 0x004E9 , 0x00308 , 0x004EB }, + { 0x00627 , 0x00653 , 0x00622 }, + { 0x00627 , 0x00654 , 0x00623 }, + { 0x00627 , 0x00655 , 0x00625 }, + { 0x00648 , 0x00654 , 0x00624 }, + { 0x0064A , 0x00654 , 0x00626 }, + { 0x006C1 , 0x00654 , 0x006C2 }, + { 0x006D2 , 0x00654 , 0x006D3 }, + { 0x006D5 , 0x00654 , 0x006C0 }, + { 0x00928 , 0x0093C , 0x00929 }, + { 0x00930 , 0x0093C , 0x00931 }, + { 0x00933 , 0x0093C , 0x00934 }, + { 0x009C7 , 0x009BE , 0x009CB }, + { 0x009C7 , 0x009D7 , 0x009CC }, + { 0x00B47 , 0x00B3E , 0x00B4B }, + { 0x00B47 , 0x00B56 , 0x00B48 }, + { 0x00B47 , 0x00B57 , 0x00B4C }, + { 0x00B92 , 0x00BD7 , 0x00B94 }, + { 0x00BC6 , 0x00BBE , 0x00BCA }, + { 0x00BC6 , 0x00BD7 , 0x00BCC }, + { 0x00BC7 , 0x00BBE , 0x00BCB }, + { 0x00C46 , 0x00C56 , 0x00C48 }, + { 0x00CBF , 0x00CD5 , 0x00CC0 }, + { 0x00CC6 , 0x00CC2 , 0x00CCA }, + { 0x00CC6 , 0x00CD5 , 0x00CC7 }, + { 0x00CC6 , 0x00CD6 , 0x00CC8 }, + { 0x00CCA , 0x00CD5 , 0x00CCB }, + { 0x00D46 , 0x00D3E , 0x00D4A }, + { 0x00D46 , 0x00D57 , 0x00D4C }, + { 0x00D47 , 0x00D3E , 0x00D4B }, + { 0x00DD9 , 0x00DCA , 0x00DDA }, + { 0x00DD9 , 0x00DCF , 0x00DDC }, + { 0x00DD9 , 0x00DDF , 0x00DDE }, + { 0x00DDC , 0x00DCA , 0x00DDD }, + { 0x01025 , 0x0102E , 0x01026 }, + { 0x01B05 , 0x01B35 , 0x01B06 }, + { 0x01B07 , 0x01B35 , 0x01B08 }, + { 0x01B09 , 0x01B35 , 0x01B0A }, + { 0x01B0B , 0x01B35 , 0x01B0C }, + { 0x01B0D , 0x01B35 , 0x01B0E }, + { 0x01B11 , 0x01B35 , 0x01B12 }, + { 0x01B3A , 0x01B35 , 0x01B3B }, + { 0x01B3C , 0x01B35 , 0x01B3D }, + { 0x01B3E , 0x01B35 , 0x01B40 }, + { 0x01B3F , 0x01B35 , 0x01B41 }, + { 0x01B42 , 0x01B35 , 0x01B43 }, + { 0x01E36 , 0x00304 , 0x01E38 }, + { 0x01E37 , 0x00304 , 0x01E39 }, + { 0x01E5A , 0x00304 , 0x01E5C }, + { 0x01E5B , 0x00304 , 0x01E5D }, + { 0x01E62 , 0x00307 , 0x01E68 }, + { 0x01E63 , 0x00307 , 0x01E69 }, + { 0x01EA0 , 0x00302 , 0x01EAC }, + { 0x01EA0 , 0x00306 , 0x01EB6 }, + { 0x01EA1 , 0x00302 , 0x01EAD }, + { 0x01EA1 , 0x00306 , 0x01EB7 }, + { 0x01EB8 , 0x00302 , 0x01EC6 }, + { 0x01EB9 , 0x00302 , 0x01EC7 }, + { 0x01ECC , 0x00302 , 0x01ED8 }, + { 0x01ECD , 0x00302 , 0x01ED9 }, + { 0x01F00 , 0x00300 , 0x01F02 }, + { 0x01F00 , 0x00301 , 0x01F04 }, + { 0x01F00 , 0x00342 , 0x01F06 }, + { 0x01F00 , 0x00345 , 0x01F80 }, + { 0x01F01 , 0x00300 , 0x01F03 }, + { 0x01F01 , 0x00301 , 0x01F05 }, + { 0x01F01 , 0x00342 , 0x01F07 }, + { 0x01F01 , 0x00345 , 0x01F81 }, + { 0x01F02 , 0x00345 , 0x01F82 }, + { 0x01F03 , 0x00345 , 0x01F83 }, + { 0x01F04 , 0x00345 , 0x01F84 }, + { 0x01F05 , 0x00345 , 0x01F85 }, + { 0x01F06 , 0x00345 , 0x01F86 }, + { 0x01F07 , 0x00345 , 0x01F87 }, + { 0x01F08 , 0x00300 , 0x01F0A }, + { 0x01F08 , 0x00301 , 0x01F0C }, + { 0x01F08 , 0x00342 , 0x01F0E }, + { 0x01F08 , 0x00345 , 0x01F88 }, + { 0x01F09 , 0x00300 , 0x01F0B }, + { 0x01F09 , 0x00301 , 0x01F0D }, + { 0x01F09 , 0x00342 , 0x01F0F }, + { 0x01F09 , 0x00345 , 0x01F89 }, + { 0x01F0A , 0x00345 , 0x01F8A }, + { 0x01F0B , 0x00345 , 0x01F8B }, + { 0x01F0C , 0x00345 , 0x01F8C }, + { 0x01F0D , 0x00345 , 0x01F8D }, + { 0x01F0E , 0x00345 , 0x01F8E }, + { 0x01F0F , 0x00345 , 0x01F8F }, + { 0x01F10 , 0x00300 , 0x01F12 }, + { 0x01F10 , 0x00301 , 0x01F14 }, + { 0x01F11 , 0x00300 , 0x01F13 }, + { 0x01F11 , 0x00301 , 0x01F15 }, + { 0x01F18 , 0x00300 , 0x01F1A }, + { 0x01F18 , 0x00301 , 0x01F1C }, + { 0x01F19 , 0x00300 , 0x01F1B }, + { 0x01F19 , 0x00301 , 0x01F1D }, + { 0x01F20 , 0x00300 , 0x01F22 }, + { 0x01F20 , 0x00301 , 0x01F24 }, + { 0x01F20 , 0x00342 , 0x01F26 }, + { 0x01F20 , 0x00345 , 0x01F90 }, + { 0x01F21 , 0x00300 , 0x01F23 }, + { 0x01F21 , 0x00301 , 0x01F25 }, + { 0x01F21 , 0x00342 , 0x01F27 }, + { 0x01F21 , 0x00345 , 0x01F91 }, + { 0x01F22 , 0x00345 , 0x01F92 }, + { 0x01F23 , 0x00345 , 0x01F93 }, + { 0x01F24 , 0x00345 , 0x01F94 }, + { 0x01F25 , 0x00345 , 0x01F95 }, + { 0x01F26 , 0x00345 , 0x01F96 }, + { 0x01F27 , 0x00345 , 0x01F97 }, + { 0x01F28 , 0x00300 , 0x01F2A }, + { 0x01F28 , 0x00301 , 0x01F2C }, + { 0x01F28 , 0x00342 , 0x01F2E }, + { 0x01F28 , 0x00345 , 0x01F98 }, + { 0x01F29 , 0x00300 , 0x01F2B }, + { 0x01F29 , 0x00301 , 0x01F2D }, + { 0x01F29 , 0x00342 , 0x01F2F }, + { 0x01F29 , 0x00345 , 0x01F99 }, + { 0x01F2A , 0x00345 , 0x01F9A }, + { 0x01F2B , 0x00345 , 0x01F9B }, + { 0x01F2C , 0x00345 , 0x01F9C }, + { 0x01F2D , 0x00345 , 0x01F9D }, + { 0x01F2E , 0x00345 , 0x01F9E }, + { 0x01F2F , 0x00345 , 0x01F9F }, + { 0x01F30 , 0x00300 , 0x01F32 }, + { 0x01F30 , 0x00301 , 0x01F34 }, + { 0x01F30 , 0x00342 , 0x01F36 }, + { 0x01F31 , 0x00300 , 0x01F33 }, + { 0x01F31 , 0x00301 , 0x01F35 }, + { 0x01F31 , 0x00342 , 0x01F37 }, + { 0x01F38 , 0x00300 , 0x01F3A }, + { 0x01F38 , 0x00301 , 0x01F3C }, + { 0x01F38 , 0x00342 , 0x01F3E }, + { 0x01F39 , 0x00300 , 0x01F3B }, + { 0x01F39 , 0x00301 , 0x01F3D }, + { 0x01F39 , 0x00342 , 0x01F3F }, + { 0x01F40 , 0x00300 , 0x01F42 }, + { 0x01F40 , 0x00301 , 0x01F44 }, + { 0x01F41 , 0x00300 , 0x01F43 }, + { 0x01F41 , 0x00301 , 0x01F45 }, + { 0x01F48 , 0x00300 , 0x01F4A }, + { 0x01F48 , 0x00301 , 0x01F4C }, + { 0x01F49 , 0x00300 , 0x01F4B }, + { 0x01F49 , 0x00301 , 0x01F4D }, + { 0x01F50 , 0x00300 , 0x01F52 }, + { 0x01F50 , 0x00301 , 0x01F54 }, + { 0x01F50 , 0x00342 , 0x01F56 }, + { 0x01F51 , 0x00300 , 0x01F53 }, + { 0x01F51 , 0x00301 , 0x01F55 }, + { 0x01F51 , 0x00342 , 0x01F57 }, + { 0x01F59 , 0x00300 , 0x01F5B }, + { 0x01F59 , 0x00301 , 0x01F5D }, + { 0x01F59 , 0x00342 , 0x01F5F }, + { 0x01F60 , 0x00300 , 0x01F62 }, + { 0x01F60 , 0x00301 , 0x01F64 }, + { 0x01F60 , 0x00342 , 0x01F66 }, + { 0x01F60 , 0x00345 , 0x01FA0 }, + { 0x01F61 , 0x00300 , 0x01F63 }, + { 0x01F61 , 0x00301 , 0x01F65 }, + { 0x01F61 , 0x00342 , 0x01F67 }, + { 0x01F61 , 0x00345 , 0x01FA1 }, + { 0x01F62 , 0x00345 , 0x01FA2 }, + { 0x01F63 , 0x00345 , 0x01FA3 }, + { 0x01F64 , 0x00345 , 0x01FA4 }, + { 0x01F65 , 0x00345 , 0x01FA5 }, + { 0x01F66 , 0x00345 , 0x01FA6 }, + { 0x01F67 , 0x00345 , 0x01FA7 }, + { 0x01F68 , 0x00300 , 0x01F6A }, + { 0x01F68 , 0x00301 , 0x01F6C }, + { 0x01F68 , 0x00342 , 0x01F6E }, + { 0x01F68 , 0x00345 , 0x01FA8 }, + { 0x01F69 , 0x00300 , 0x01F6B }, + { 0x01F69 , 0x00301 , 0x01F6D }, + { 0x01F69 , 0x00342 , 0x01F6F }, + { 0x01F69 , 0x00345 , 0x01FA9 }, + { 0x01F6A , 0x00345 , 0x01FAA }, + { 0x01F6B , 0x00345 , 0x01FAB }, + { 0x01F6C , 0x00345 , 0x01FAC }, + { 0x01F6D , 0x00345 , 0x01FAD }, + { 0x01F6E , 0x00345 , 0x01FAE }, + { 0x01F6F , 0x00345 , 0x01FAF }, + { 0x01F70 , 0x00345 , 0x01FB2 }, + { 0x01F74 , 0x00345 , 0x01FC2 }, + { 0x01F7C , 0x00345 , 0x01FF2 }, + { 0x01FB6 , 0x00345 , 0x01FB7 }, + { 0x01FBF , 0x00300 , 0x01FCD }, + { 0x01FBF , 0x00301 , 0x01FCE }, + { 0x01FBF , 0x00342 , 0x01FCF }, + { 0x01FC6 , 0x00345 , 0x01FC7 }, + { 0x01FF6 , 0x00345 , 0x01FF7 }, + { 0x01FFE , 0x00300 , 0x01FDD }, + { 0x01FFE , 0x00301 , 0x01FDE }, + { 0x01FFE , 0x00342 , 0x01FDF }, + { 0x02190 , 0x00338 , 0x0219A }, + { 0x02192 , 0x00338 , 0x0219B }, + { 0x02194 , 0x00338 , 0x021AE }, + { 0x021D0 , 0x00338 , 0x021CD }, + { 0x021D2 , 0x00338 , 0x021CF }, + { 0x021D4 , 0x00338 , 0x021CE }, + { 0x02203 , 0x00338 , 0x02204 }, + { 0x02208 , 0x00338 , 0x02209 }, + { 0x0220B , 0x00338 , 0x0220C }, + { 0x02223 , 0x00338 , 0x02224 }, + { 0x02225 , 0x00338 , 0x02226 }, + { 0x0223C , 0x00338 , 0x02241 }, + { 0x02243 , 0x00338 , 0x02244 }, + { 0x02245 , 0x00338 , 0x02247 }, + { 0x02248 , 0x00338 , 0x02249 }, + { 0x0224D , 0x00338 , 0x0226D }, + { 0x02261 , 0x00338 , 0x02262 }, + { 0x02264 , 0x00338 , 0x02270 }, + { 0x02265 , 0x00338 , 0x02271 }, + { 0x02272 , 0x00338 , 0x02274 }, + { 0x02273 , 0x00338 , 0x02275 }, + { 0x02276 , 0x00338 , 0x02278 }, + { 0x02277 , 0x00338 , 0x02279 }, + { 0x0227A , 0x00338 , 0x02280 }, + { 0x0227B , 0x00338 , 0x02281 }, + { 0x0227C , 0x00338 , 0x022E0 }, + { 0x0227D , 0x00338 , 0x022E1 }, + { 0x02282 , 0x00338 , 0x02284 }, + { 0x02283 , 0x00338 , 0x02285 }, + { 0x02286 , 0x00338 , 0x02288 }, + { 0x02287 , 0x00338 , 0x02289 }, + { 0x02291 , 0x00338 , 0x022E2 }, + { 0x02292 , 0x00338 , 0x022E3 }, + { 0x022A2 , 0x00338 , 0x022AC }, + { 0x022A8 , 0x00338 , 0x022AD }, + { 0x022A9 , 0x00338 , 0x022AE }, + { 0x022AB , 0x00338 , 0x022AF }, + { 0x022B2 , 0x00338 , 0x022EA }, + { 0x022B3 , 0x00338 , 0x022EB }, + { 0x022B4 , 0x00338 , 0x022EC }, + { 0x022B5 , 0x00338 , 0x022ED }, + { 0x03046 , 0x03099 , 0x03094 }, + { 0x0304B , 0x03099 , 0x0304C }, + { 0x0304D , 0x03099 , 0x0304E }, + { 0x0304F , 0x03099 , 0x03050 }, + { 0x03051 , 0x03099 , 0x03052 }, + { 0x03053 , 0x03099 , 0x03054 }, + { 0x03055 , 0x03099 , 0x03056 }, + { 0x03057 , 0x03099 , 0x03058 }, + { 0x03059 , 0x03099 , 0x0305A }, + { 0x0305B , 0x03099 , 0x0305C }, + { 0x0305D , 0x03099 , 0x0305E }, + { 0x0305F , 0x03099 , 0x03060 }, + { 0x03061 , 0x03099 , 0x03062 }, + { 0x03064 , 0x03099 , 0x03065 }, + { 0x03066 , 0x03099 , 0x03067 }, + { 0x03068 , 0x03099 , 0x03069 }, + { 0x0306F , 0x03099 , 0x03070 }, + { 0x0306F , 0x0309A , 0x03071 }, + { 0x03072 , 0x03099 , 0x03073 }, + { 0x03072 , 0x0309A , 0x03074 }, + { 0x03075 , 0x03099 , 0x03076 }, + { 0x03075 , 0x0309A , 0x03077 }, + { 0x03078 , 0x03099 , 0x03079 }, + { 0x03078 , 0x0309A , 0x0307A }, + { 0x0307B , 0x03099 , 0x0307C }, + { 0x0307B , 0x0309A , 0x0307D }, + { 0x0309D , 0x03099 , 0x0309E }, + { 0x030A6 , 0x03099 , 0x030F4 }, + { 0x030AB , 0x03099 , 0x030AC }, + { 0x030AD , 0x03099 , 0x030AE }, + { 0x030AF , 0x03099 , 0x030B0 }, + { 0x030B1 , 0x03099 , 0x030B2 }, + { 0x030B3 , 0x03099 , 0x030B4 }, + { 0x030B5 , 0x03099 , 0x030B6 }, + { 0x030B7 , 0x03099 , 0x030B8 }, + { 0x030B9 , 0x03099 , 0x030BA }, + { 0x030BB , 0x03099 , 0x030BC }, + { 0x030BD , 0x03099 , 0x030BE }, + { 0x030BF , 0x03099 , 0x030C0 }, + { 0x030C1 , 0x03099 , 0x030C2 }, + { 0x030C4 , 0x03099 , 0x030C5 }, + { 0x030C6 , 0x03099 , 0x030C7 }, + { 0x030C8 , 0x03099 , 0x030C9 }, + { 0x030CF , 0x03099 , 0x030D0 }, + { 0x030CF , 0x0309A , 0x030D1 }, + { 0x030D2 , 0x03099 , 0x030D3 }, + { 0x030D2 , 0x0309A , 0x030D4 }, + { 0x030D5 , 0x03099 , 0x030D6 }, + { 0x030D5 , 0x0309A , 0x030D7 }, + { 0x030D8 , 0x03099 , 0x030D9 }, + { 0x030D8 , 0x0309A , 0x030DA }, + { 0x030DB , 0x03099 , 0x030DC }, + { 0x030DB , 0x0309A , 0x030DD }, + { 0x030EF , 0x03099 , 0x030F7 }, + { 0x030F0 , 0x03099 , 0x030F8 }, + { 0x030F1 , 0x03099 , 0x030F9 }, + { 0x030F2 , 0x03099 , 0x030FA }, + { 0x030FD , 0x03099 , 0x030FE }, + { 0x11099 , 0x110BA , 0x1109A }, + { 0x1109B , 0x110BA , 0x1109C }, + { 0x110A5 , 0x110BA , 0x110AB }, +}; + +#define CANONICAL_CLASS_MIN 0x0300 +#define CANONICAL_CLASS_MAX 0x1D244 + +#define IS_DECOMPOSABLE_BLOCK(uc) \ + (((uc)>>8) <= 0x1D2 && u_decomposable_blocks[(uc)>>8]) +static const char u_decomposable_blocks[0x1D2+1] = { + 0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0, + 0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1, +}; + +/* Get Canonical Combining Class(CCC). */ +#define CCC(uc) \ + (((uc) > 0x1D244)?0:\ + ccc_val[ccc_val_index[ccc_index[(uc)>>8]][((uc)>>4)&0x0F]][(uc)&0x0F]) + +/* The table of the value of Canonical Cimbining Class */ +static const unsigned char ccc_val[][16] = { + /* idx=0: XXXX0 - XXXXF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=1: 00300 - 0030F */ + {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=2: 00310 - 0031F */ + {230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220 }, + /* idx=3: 00320 - 0032F */ + {220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220 }, + /* idx=4: 00330 - 0033F */ + {220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230 }, + /* idx=5: 00340 - 0034F */ + {230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0 }, + /* idx=6: 00350 - 0035F */ + {230, 230, 230, 220, 220, 220, 220, 230, 232, 220, 220, 230, 233, 234, 234, 233 }, + /* idx=7: 00360 - 0036F */ + {234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=8: 00480 - 0048F */ + {0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=9: 00590 - 0059F */ + {0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230 }, + /* idx=10: 005A0 - 005AF */ + {230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230 }, + /* idx=11: 005B0 - 005BF */ + {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23 }, + /* idx=12: 005C0 - 005CF */ + {0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=13: 00610 - 0061F */ + {230, 230, 230, 230, 230, 230, 230, 230, 30, 31, 32, 0, 0, 0, 0, 0 }, + /* idx=14: 00640 - 0064F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31 }, + /* idx=15: 00650 - 0065F */ + {32, 33, 34, 230, 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 220 }, + /* idx=16: 00670 - 0067F */ + {35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=17: 006D0 - 006DF */ + {0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230 }, + /* idx=18: 006E0 - 006EF */ + {230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0 }, + /* idx=19: 00710 - 0071F */ + {0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=20: 00730 - 0073F */ + {230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230 }, + /* idx=21: 00740 - 0074F */ + {230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0 }, + /* idx=22: 007E0 - 007EF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230 }, + /* idx=23: 007F0 - 007FF */ + {230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=24: 00810 - 0081F */ + {0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230 }, + /* idx=25: 00820 - 0082F */ + {230, 230, 230, 230, 0, 230, 230, 230, 0, 230, 230, 230, 230, 230, 0, 0 }, + /* idx=26: 00850 - 0085F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0 }, + /* idx=27: 00930 - 0093F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=28: 00940 - 0094F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=29: 00950 - 0095F */ + {0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=30: 009B0 - 009BF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=31: 009C0 - 009CF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=32: 00A30 - 00A3F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=33: 00A40 - 00A4F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=34: 00AB0 - 00ABF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=35: 00AC0 - 00ACF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=36: 00B30 - 00B3F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=37: 00B40 - 00B4F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=38: 00BC0 - 00BCF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=39: 00C40 - 00C4F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=40: 00C50 - 00C5F */ + {0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=41: 00CB0 - 00CBF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 }, + /* idx=42: 00CC0 - 00CCF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=43: 00D40 - 00D4F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=44: 00DC0 - 00DCF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0 }, + /* idx=45: 00E30 - 00E3F */ + {0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0 }, + /* idx=46: 00E40 - 00E4F */ + {0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0 }, + /* idx=47: 00EB0 - 00EBF */ + {0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0 }, + /* idx=48: 00EC0 - 00ECF */ + {0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0 }, + /* idx=49: 00F10 - 00F1F */ + {0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0 }, + /* idx=50: 00F30 - 00F3F */ + {0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0 }, + /* idx=51: 00F70 - 00F7F */ + {0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0 }, + /* idx=52: 00F80 - 00F8F */ + {130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=53: 00FC0 - 00FCF */ + {0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=54: 01030 - 0103F */ + {0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0 }, + /* idx=55: 01080 - 0108F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 }, + /* idx=56: 01350 - 0135F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230 }, + /* idx=57: 01710 - 0171F */ + {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=58: 01730 - 0173F */ + {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=59: 017D0 - 017DF */ + {0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0 }, + /* idx=60: 018A0 - 018AF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0 }, + /* idx=61: 01930 - 0193F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0 }, + /* idx=62: 01A10 - 01A1F */ + {0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=63: 01A60 - 01A6F */ + {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=64: 01A70 - 01A7F */ + {0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 220 }, + /* idx=65: 01B30 - 01B3F */ + {0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=66: 01B40 - 01B4F */ + {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=67: 01B60 - 01B6F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230 }, + /* idx=68: 01B70 - 01B7F */ + {230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=69: 01BA0 - 01BAF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0 }, + /* idx=70: 01BE0 - 01BEF */ + {0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=71: 01BF0 - 01BFF */ + {0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=72: 01C30 - 01C3F */ + {0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=73: 01CD0 - 01CDF */ + {230, 230, 230, 0, 1, 220, 220, 220, 220, 220, 230, 230, 220, 220, 220, 220 }, + /* idx=74: 01CE0 - 01CEF */ + {230, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 220, 0, 0 }, + /* idx=75: 01DC0 - 01DCF */ + {230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 234, 214, 220 }, + /* idx=76: 01DD0 - 01DDF */ + {202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=77: 01DE0 - 01DEF */ + {230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=78: 01DF0 - 01DFF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 220, 230, 220 }, + /* idx=79: 020D0 - 020DF */ + {230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0 }, + /* idx=80: 020E0 - 020EF */ + {0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 1, 220, 220, 220, 220 }, + /* idx=81: 020F0 - 020FF */ + {230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=82: 02CE0 - 02CEF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230 }, + /* idx=83: 02CF0 - 02CFF */ + {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=84: 02D70 - 02D7F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + /* idx=85: 02DE0 - 02DEF */ + {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=86: 02DF0 - 02DFF */ + {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=87: 03020 - 0302F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224 }, + /* idx=88: 03090 - 0309F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0 }, + /* idx=89: 0A660 - 0A66F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230 }, + /* idx=90: 0A670 - 0A67F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0 }, + /* idx=91: 0A6F0 - 0A6FF */ + {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=92: 0A800 - 0A80F */ + {0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=93: 0A8C0 - 0A8CF */ + {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=94: 0A8E0 - 0A8EF */ + {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 }, + /* idx=95: 0A8F0 - 0A8FF */ + {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=96: 0A920 - 0A92F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0 }, + /* idx=97: 0A950 - 0A95F */ + {0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=98: 0A9B0 - 0A9BF */ + {0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=99: 0A9C0 - 0A9CF */ + {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=100: 0AAB0 - 0AABF */ + {230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 0, 0, 230, 230 }, + /* idx=101: 0AAC0 - 0AACF */ + {0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=102: 0ABE0 - 0ABEF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 }, + /* idx=103: 0FB10 - 0FB1F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0 }, + /* idx=104: 0FE20 - 0FE2F */ + {230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=105: 101F0 - 101FF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 }, + /* idx=106: 10A00 - 10A0F */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230 }, + /* idx=107: 10A30 - 10A3F */ + {0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9 }, + /* idx=108: 11040 - 1104F */ + {0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=109: 110B0 - 110BF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0 }, + /* idx=110: 1D160 - 1D16F */ + {0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216 }, + /* idx=111: 1D170 - 1D17F */ + {216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220 }, + /* idx=112: 1D180 - 1D18F */ + {220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0 }, + /* idx=113: 1D1A0 - 1D1AF */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0 }, + /* idx=114: 1D240 - 1D24F */ + {0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +}; + +/* The index table to ccc_val[*][16] */ +static const unsigned char ccc_val_index[][16] = { + /* idx=0: XXX00 - XXXFF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=1: 00300 - 003FF */ + { 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=2: 00400 - 004FF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=3: 00500 - 005FF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,10,11,12, 0, 0, 0 }, + /* idx=4: 00600 - 006FF */ + { 0,13, 0, 0,14,15, 0,16, 0, 0, 0, 0, 0,17,18, 0 }, + /* idx=5: 00700 - 007FF */ + { 0,19, 0,20,21, 0, 0, 0, 0, 0, 0, 0, 0, 0,22,23 }, + /* idx=6: 00800 - 008FF */ + { 0,24,25, 0, 0,26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=7: 00900 - 009FF */ + { 0, 0, 0,27,28,29, 0, 0, 0, 0, 0,30,31, 0, 0, 0 }, + /* idx=8: 00A00 - 00AFF */ + { 0, 0, 0,32,33, 0, 0, 0, 0, 0, 0,34,35, 0, 0, 0 }, + /* idx=9: 00B00 - 00BFF */ + { 0, 0, 0,36,37, 0, 0, 0, 0, 0, 0, 0,38, 0, 0, 0 }, + /* idx=10: 00C00 - 00CFF */ + { 0, 0, 0, 0,39,40, 0, 0, 0, 0, 0,41,42, 0, 0, 0 }, + /* idx=11: 00D00 - 00DFF */ + { 0, 0, 0, 0,43, 0, 0, 0, 0, 0, 0, 0,44, 0, 0, 0 }, + /* idx=12: 00E00 - 00EFF */ + { 0, 0, 0,45,46, 0, 0, 0, 0, 0, 0,47,48, 0, 0, 0 }, + /* idx=13: 00F00 - 00FFF */ + { 0,49, 0,50, 0, 0, 0,51,52, 0, 0, 0,53, 0, 0, 0 }, + /* idx=14: 01000 - 010FF */ + { 0, 0, 0,54, 0, 0, 0, 0,55, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=15: 01300 - 013FF */ + { 0, 0, 0, 0, 0,56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=16: 01700 - 017FF */ + { 0,57, 0,58, 0, 0, 0, 0, 0, 0, 0, 0, 0,59, 0, 0 }, + /* idx=17: 01800 - 018FF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,60, 0, 0, 0, 0, 0 }, + /* idx=18: 01900 - 019FF */ + { 0, 0, 0,61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=19: 01A00 - 01AFF */ + { 0,62, 0, 0, 0, 0,63,64, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=20: 01B00 - 01BFF */ + { 0, 0, 0,65,66, 0,67,68, 0, 0,69, 0, 0, 0,70,71 }, + /* idx=21: 01C00 - 01CFF */ + { 0, 0, 0,72, 0, 0, 0, 0, 0, 0, 0, 0, 0,73,74, 0 }, + /* idx=22: 01D00 - 01DFF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,75,76,77,78 }, + /* idx=23: 02000 - 020FF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,79,80,81 }, + /* idx=24: 02C00 - 02CFF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,82,83 }, + /* idx=25: 02D00 - 02DFF */ + { 0, 0, 0, 0, 0, 0, 0,84, 0, 0, 0, 0, 0, 0,85,86 }, + /* idx=26: 03000 - 030FF */ + { 0, 0,87, 0, 0, 0, 0, 0, 0,88, 0, 0, 0, 0, 0, 0 }, + /* idx=27: 0A600 - 0A6FF */ + { 0, 0, 0, 0, 0, 0,89,90, 0, 0, 0, 0, 0, 0, 0,91 }, + /* idx=28: 0A800 - 0A8FF */ + {92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,93, 0,94,95 }, + /* idx=29: 0A900 - 0A9FF */ + { 0, 0,96, 0, 0,97, 0, 0, 0, 0, 0,98,99, 0, 0, 0 }, + /* idx=30: 0AA00 - 0AAFF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,101, 0, 0, 0 }, + /* idx=31: 0AB00 - 0ABFF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 0 }, + /* idx=32: 0FB00 - 0FBFF */ + { 0,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=33: 0FE00 - 0FEFF */ + { 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=34: 10100 - 101FF */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105 }, + /* idx=35: 10A00 - 10AFF */ + {106, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* idx=36: 11000 - 110FF */ + { 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 0,109, 0, 0, 0, 0 }, + /* idx=37: 1D100 - 1D1FF */ + { 0, 0, 0, 0, 0, 0,110,111,112, 0,113, 0, 0, 0, 0, 0 }, + /* idx=38: 1D200 - 1D2FF */ + { 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +}; + +/* The index table to ccc_val_index[*][16] */ +static const unsigned char ccc_index[] = { + 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14, 0, 0,15, 0, 0, 0,16, + 17,18,19,20,21,22, 0, 0,23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24,25, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,27, 0, + 28,29,30,31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0,33, 0, 0,34, 0, 0, 0, 0, 0, 0, + 0, 0,35, 0, 0, 0, 0, 0,36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,37,38,}; + +#endif /* ARCHIVE_STRING_COMPOSITION_H_INCLUDED */ diff --git a/libarchive/test/CMakeLists.txt b/libarchive/test/CMakeLists.txt index ca5e67f0a..90267a100 100644 --- a/libarchive/test/CMakeLists.txt +++ b/libarchive/test/CMakeLists.txt @@ -28,6 +28,7 @@ IF(ENABLE_TEST) test_archive_read_support_format_torture.c test_archive_set_error.c test_archive_string.c + test_archive_string_conversion.c test_archive_write_set_filter_option.c test_archive_write_set_format_option.c test_archive_write_set_option.c diff --git a/libarchive/test/test_archive_string_conversion.c b/libarchive/test/test_archive_string_conversion.c new file mode 100644 index 000000000..235749e4a --- /dev/null +++ b/libarchive/test/test_archive_string_conversion.c @@ -0,0 +1,242 @@ +/*- + * Copyright (c) 2011 Michihiro NAKAJIMA + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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 AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +#include + +#define __LIBARCHIVE_TEST +#include "archive_string.h" + +/* +Execute the following to rebuild the data for this program: + tail -n +36 test_archive_string_conversion.c | /bin/sh +# +# This requires http://unicode.org/Public/UNIDATA/NormalizationTest.txt +# +if="NormalizationTest.txt" +if [ ! -f ${if} ]; then + echo "Not found: \"${if}\"" + exit 0 +fi +of=test_archive_string_conversion.txt.gz +echo "\$FreeBSD\$" > ${of}.uu +awk -F ';' '$0 ~/^[0-9A-F]+/ {printf "%s;%s\n", $2, $3}' ${if} | gzip | uuencode ${of} >> ${of}.uu +exit 1 +*/ + +static int +unicode_to_utf8(char *p, uint32_t uc) +{ + char *_p = p; + + /* Translate code point to UTF8 */ + if (uc <= 0x7f) { + *p++ = (char)uc; + } else if (uc <= 0x7ff) { + *p++ = 0xc0 | ((uc >> 6) & 0x1f); + *p++ = 0x80 | (uc & 0x3f); + } else if (uc <= 0xffff) { + *p++ = 0xe0 | ((uc >> 12) & 0x0f); + *p++ = 0x80 | ((uc >> 6) & 0x3f); + *p++ = 0x80 | (uc & 0x3f); + } else { + *p++ = 0xf0 | ((uc >> 18) & 0x07); + *p++ = 0x80 | ((uc >> 12) & 0x3f); + *p++ = 0x80 | ((uc >> 6) & 0x3f); + *p++ = 0x80 | (uc & 0x3f); + } + return ((int)(p - _p)); +} + +static int +scan_unicode_pattern(char *out, const char *pattern, int exclude_mac_nfd) +{ + unsigned uc = 0; + const char *p = pattern; + char *op = out; + + for (;;) { + if (*p >= '0' && *p <= '9') + uc = (uc << 4) + (*p - '0'); + else if (*p >= 'A' && *p <= 'F') + uc = (uc << 4) + (*p - 'A' + 0x0a); + else { + if (exclude_mac_nfd) { + /* These are not converted to NFD on Mac OS. */ + if ((uc >= 0x2000 && uc <= 0x2FFF) || + (uc >= 0xF900 && uc <= 0xFAFF) || + (uc >= 0x2F800 && uc <= 0x2FAFF)) + return (-1); + } + op += unicode_to_utf8(op, uc); + if (!*p) { + *op = '\0'; + break; + } + uc = 0; + } + p++; + } + return (0); +} + +/* + * A conversion test that we correctly normalize UTF-8 characters. + * On Mac OS, the characters to be Form D. + * On other platforms, the characters to be Form C. + */ +static void +test_archive_string_normalization() +{ + struct archive *a; + struct archive_entry *ae; + struct archive_string s; + struct archive_string_conv *sconv; + FILE *fp; + char buff[512]; + static const char reffile[] = "test_archive_string_conversion.txt.gz"; + ssize_t size; + int line = 0; + + /* If it doesn't exist, just warn and return. */ + if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) { + skipping("invalid encoding tests require a suitable locale;" + " en_US.UTF-8 not available on this system"); + return; + } + + archive_string_init(&s); + extract_reference_file(reffile); + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reffile, 512)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assert((fp = fopen("testdata.txt", "w")) != NULL); + while ((size = archive_read_data(a, buff, 512)) > 0) + fwrite(buff, 1, size, fp); + fclose(fp); + + assert((fp = fopen("testdata.txt", "r")) != NULL); + assert(NULL != (sconv = + archive_string_conversion_from_charset(a, "UTF-8", 0))); + /* + * Read test data. + * Test data format: + * ';' '\n' + * Unicode pattern format: + * [0-9A-F]{4,5}([ ][0-9A-F]{4,5}){0,} + */ + while (fgets(buff, sizeof(buff), fp) != NULL) { + char nfc[80], nfd[80]; + char utf8_nfc[80], utf8_nfd[80]; + char *e, *p; + + line++; + if (buff[0] == '#') + continue; + p = strchr(buff, ';'); + if (p == NULL) + continue; + *p++ = '\0'; + /* Copy an NFC pattern */ + strncpy(nfc, buff, sizeof(nfc)-1); + nfc[sizeof(nfc)-1] = '\0'; + e = p; + p = strchr(p, '\n'); + if (p == NULL) + continue; + *p = '\0'; + /* Copy an NFD pattern */ + strncpy(nfd, e, sizeof(nfd)-1); + nfd[sizeof(nfd)-1] = '\0'; + + /* + * Convert an NFC pattern to UTF-8 bytes. + */ +#if defined(__APPLE__) + if (scan_unicode_pattern(utf8_nfc, nfc, 1) != 0) + continue; +#else + scan_unicode_pattern(utf8_nfc, nfc, 0); +#endif + + /* + * Convert an NFD pattern to UTF-8 bytes. + */ + scan_unicode_pattern(utf8_nfd, nfd, 0); + +#if defined(__APPLE__) + /* + * Normalize an NFC string. + */ + assertEqualInt(0, + archive_strcpy_in_locale(&s, utf8_nfc, sconv)); + failure("NFC(%s) should be converted to NFD(%s):%d", + nfc, nfd, line); + assertEqualString(utf8_nfd, s.s); + + /* + * Normalize an NFD string. + */ + assertEqualInt(0, + archive_strcpy_in_locale(&s, utf8_nfd, sconv)); + failure("NFD(%s) should not be any changed:%d", + nfd, line); + assertEqualString(utf8_nfd, s.s); +#else + /* + * Normalize an NFD string. + */ + assertEqualInt(0, + archive_strcpy_in_locale(&s, utf8_nfd, sconv)); + failure("NFD(%s) should be converted to NFC(%s):%d", + nfd, nfc, line); + assertEqualString(utf8_nfc, s.s); + + /* + * Normalize an NFC string. + */ + assertEqualInt(0, + archive_strcpy_in_locale(&s, utf8_nfc, sconv)); + failure("NFC(%s) should not be any changed:%d", + nfc, line); + assertEqualString(utf8_nfc, s.s); +#endif + } + + archive_string_free(&s); + fclose(fp); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + + +DEFINE_TEST(test_archive_string_conversion) +{ + test_archive_string_normalization(); +} diff --git a/libarchive/test/test_archive_string_conversion.txt.gz.uu b/libarchive/test/test_archive_string_conversion.txt.gz.uu new file mode 100644 index 000000000..48271f566 --- /dev/null +++ b/libarchive/test/test_archive_string_conversion.txt.gz.uu @@ -0,0 +1,1921 @@ +$FreeBSD$ +begin 644 test_archive_string_conversion.txt.gz +M'XL(`-9RO4T``[2]0;+DH+*T.;^K>$M(`1*2W1$(L?\EM;Y0$>#G[V?=@^X) +M!BYERL/3$T6&XE1MSZ_\]_=+Z7]^\9?_LSV_>RQ#M*4=F-@\[_^[`^6=;74< +MV*J\XL^!R>K?>7^._GGM_]^G_'[WR8&=Y>\_OVT+ODS_#T>W9TMS^9WROV&V +M_'/@?W\7KJNO^'?R;Z_;_[S#R7"]P\7RCBS?4_9R@_7__K\\[S__EC4S@)6= +M`X&3[;S&+/WW_^5Y+_'R^R\#,Z0K)S,L6@JSSNR][J^B9`W,(K/(C'@K[U)W +M9CLSWJ7R+O5B=C'C_2KO5W%[O9DU9HW9P^Q!1+BDS37=?+FQ#+Z$QAU]"9<[ +M^9*+W[LON>YM;L)#X?_TT.^^?&D7*KZT"U5?VCO;%_;RUS9?VFL?7]IKNR]Y +M;;.(GL&Y641]O%6+ON2M6O(E;]5V7]IK#U_:.Q/"[A&UXDM[J^I+>ZO;E_9: +M0M@]A(=/X?!/X=E\:4>#+WFK)_H25D_R)>_\[+[D4WCX%`[_%!X^A<,Y/Y)+>ZOJ2WNKVY?V6D+('D+OOGR/;K_YU4@LYX=BR_G5 +M.%C.#\66_M4(]E;^H7S+8WPUN.[V\\_H6YY^-+"\_*@MBQ_-+*L?M>7M1V^6 +MS8_:\O'[H"WM,_*E;NO;%OW3M^7<:`EPV_VH+0\_"HTM^U%;^G??PM_<==]R +M?O>-QG2=+2VB/,+?+**Y?/RHT>A^E&7X^5%HA,V/VC*,H\&6<1S]EA;O.2X4 +M+-ZY/'V3B2PO=[LMBQ]%NE#]J"WG;F8DY_?(EKZ;F3C!OT>VC#]_+23C&\([ +M,(O,N'@TXF4PC49\+NV#JB/*:!_47-JN?`\G1ML/YK*.H]_)]SCZ+9N_EL\M +M/OY:6W;XO7>U+;TAO`.SZ%LS;Y^2[Q&VW,=1>_MTC*/?,OMK>?MT^FMM>7&- +MB]GM>S;:I^:;ART?/XKVJ?M1EOO/CU:6FQ^U)73W,.CNT,US>8RC1G?/X^BW +M//VUT-TO?ZTM[4[B^\%N>]A6]$]J/Y45L^ +M?K2P['Z49?[Y43Z4O/E16X9QU+X].8ZCW](B\KTD6T1S>?@MVI;9;PZV//VH +MO97E`F5\1MGN0G-9_2A*YMN/VK+Y493,CQ^U)5^GN!TW8BMNQV_91ZBV +MK+\1JBU)U3:2SXTL[1V8'?[#;Y;1ERIU'?!^WD>1^TI=\'OY/]/FC+[>=W +M*T[>-K];V3*,H]_)<1S]ELF_+G;R[M\46QZ^:=G)V3^=/9MC!CN'?[C +MF_E_EVT]4!$)5$0B]^1W>'_G61X;7U;Q?-_Y'9AAS#)>%L\WZ'CY+W`B_Q%Y +M/$\.['[>Q3+[DFMP)6]? +M-S^YL?2W+URM.C7R@W]OSQ)'Q%MN@9$;_6#`LLY36-K5/!CN^_^.VI*KW?[V +MW.C?@1F?1S,L,`O,HLW\Y.1++L2=_1V8\2FTUWJ1^\<[,./]N'5$;AV16T?D +MAO$.S'AMY[7<%][A/[^$:=(V*@0)@_Q;GBPCRY%=)[;<]#O\Z,W1XD<;R]/? +MZ@TZ?672EV1B@_IWE"4_IE+T);\F4G0:_)KXM^1".S2BT^#W0MJ=!CE_BDZ# +MG/_?.]M;02,Y#1+7]&7FG25OY5MNNBW\8YQ,A2]%7S;3ZN=+(SF7P8_"JD4_ +M:LO#A;63LP=HR]=7+VUG9LCDK6Q+@EGW9.>K+)[CLB65T<6R9 +M_*B=O/M16QKGQY?&>2[A_,R3X?PX9S*C%)HOX9SF7)T>I+3)C&SS(P+\4OI'=X9M>:C[>-E6.^X +MM['$30>[@"TO[KH7Z>45W[O&Q3WOPFO_EHEE'$M<=U&/&#.PP['#L>Q8=NQV +M[!Y8V`;V;P86'`N.5<>J8]VQ/C"VTNOFDA3=+[;2;]E>A:["-2C3CQE8<"PX +MUAWK_[`2WZ.%JXT9V.G8.3`T^+!_,[#L6';L=NP>&+%]V+_9?WZ5@DO%=74_ +M6-:QC`_+VX^^`59$K+S!F($%Q\+`KO=3K?QHJ.A2N1]50REG=@6>?RWRM:>D]IO'TC +MP$:\C0#_+>]QE'@;>UUC0^YV4-N +M]O`N#QG4PQL\9%"=VU,GH^WI9=I)4\8,[';L'MB^#>S?#.QP['"L.E;]_7[, +M]O_Z[,4R[T*99876^'\J8<1YOSQ[1:_2CT8]>'+W&^]G1?[,7 +MNSS>R^.]/-[+XRT>;_%XB\=;/-[B\1:/]_)X_\W^L_W>K>\=]O]YA^==OC\C +M&?ZSU?>GVSN\!VK<69XLLR\+R\N7-\OJRX=E&\OW%]4[;&/YIJOO4'S96-YC +MF7XL'U]N++LOX[M\'?$MV_N;A(%98]:8/8-K[6X.!V<9L8Q:8!6:16626 +MF"5F.S/>.1[,#F:9669V,CN97@=F<(G&I3/K[XP`WX$9 +MK!*L$JP2K`CP'9C!*L$JP2K!*L$JP2K!*L$JP2K!*L$JP2K!*L'J_6(S,(-? +M@E^"7X)?@E6"U0ZK'58[K'98[;#:8;7#:H?5#JL=5CNL=ECML-IAM<-JA]4. +MJQU6.ZQV6.VPVF&UPVJ'U0ZK'58[K'98[:BVH]H.OQU^!_P.^!WP.^!WP.^` +MWP&_`WX'_`[X'?`[X'?`[X#?`;\#?@?\#O@=\#O@=\#O@%_F:.;H!=,+IA=, +M+YA>,+U@>L'T@ND%TPNF!:8%I@6F!:8%I@6F!:8%I@6F!:8%I@6F!:8%I@6F +M!:8%+@4N!:8%I@6F!:8%?@5^!7X%?@5^!7X%?@5^!7X%?A5^%7X5?A5^%7X5 +M?A5^%7X5?A5^%7[L%JW"K\*OPJ_"K\*OPJ_"K\*OPJ_"K\*OPJ_"K\*OPJ_" +MK\*OPJ_"KW;Z-[P:%7:67HWZEE:-"E\YX5U:-6HNTSCZ]9SLX^BW/,91MH+G +MJT;-I3^F#/]^9+Z8/ZM5W27]@:4NK2Z5_#RC> +MY>:OM67PHXUE]*/M?VM!F<6XB1UZGETWZWF&S9J1O?VL&=G2'W%&>U-_Q/DM +M[UEO^GXNO5B;12?'3(UC2/?5M'RY/.RD8V9YV&G+X/4P.SEZ/6OM67QHP_+ZD=MZ8]"38CY*/1;SL:.<^@\^C0V9Z@'G^P +M,L[[WK2.4[[E[>^"5>PQZC&7ID'S8"Q\7Z:?'T7LM/E16X9QU.C:X]9C+I/7 +MT>WDW>OHMCS&T>_D/(Y^2Z_!6PC):_#?LOAK"2%5?ZTM_]1%[15_ZJ*&/7H> +M7EL>T#JV/*7U;^WRJ'9B0<_C&GO4\PRSBO7/EU:QGLO#CR+3]UQW+N=S75O. +MY[JV+..HB?@]UYW+>QX=SOD>[O[!GG&>B?T]X?7E\H272RY/>&T9O*+.);\G +MO'.9_+6;OV+W-YC8X>?=CF4_;V*S?C\9S"+^Q+R2_RV]DO\M[W'T(]G&T6_Y +MC*-?^'T7W=-@W_>_I\%S.I\,(NSP=MJ4_N;#-*/N3BV_I3RZ^M_(G%]]R +M>1H^G).71^*.+<_%AY_S\G#<,=/`MGJ"MB?&>2Z?<=0DR7T5I&N3Q-3A- +M@[D,?A1"9_2CMIQ/R*%QSB?DMCS\*!_4F?VH+<]Q]*-QC:/?TB+W&]!I0<_E +M[4?M0LV/VM+BO?SDV;;%\K)X_S6\O$N+=R[#.&HTKCB.?LLTCII]KGT<_9;' +MN'E]R^P^A=5U>OB%Y>6L;/EF>._`K-H#_4&WS/0-!F6F;[:<7687R]EE9LO9 +M@!G&1U9F_]_$#CV/#[YD/<^P4\^S:UQZGF%%SS.F5<\S[)ZQC0^@M!F@8_-9 +M^>&!^<:]3S#DIX'Y[KK>88=&@?)6,T:AV$S";27 +MS230EK//S2X^^]QLZ4G@=TG/_[[EXT?]4ZW=3W'L:^>=&&I83^_Q!PMZ'@SN +MJ.<9EO0\N-R[GF?8,2,?G^J=9_B.S4?8]O;S$;8M_1&V"7;[(^QO.3L1;#F; +M$&PYTP5[JYDIL&PS27"MVDP2)A;T/+1J4<\S+.EY=HU=SS/LT/-@:ATIQQ_L +MG+$-K:PCY?B#^_0\X]SU/+#GI^?!^=GT/,." +MG&>?S!/EO`_SF^NW])OKM_2;ZW=QO[E^2[^YSG@?O[DN6-'SB/>I>IYAMYYG +MUVAZGF&/GF=,NYX'UG]RGD74-SGOP^8C>VCT^EFD<_4[>Q]%O.9O3H-9G +M^RVT-T>VR\V7+S96(9YM%_7#I5@W&*8TG/V\!V/<^P0\ZC +M:->I)"SG?=@YGKA_K"Y?&JLRCSJ#.D]Q[-;SC$'3\PQ[Y+R/09?S#-M^XYFZ +ML=HV7\)J"_/H8&#M"/].<2SI>3#8=CW/,&\N^*YV^=*N5N91?^!Q9^HT'`KA8V7W*U$.;1\O?.NYQEVR'FF;LARWH>=HZ/B +M8^4-%A^K,H\Z@SI/<>S6\XQ!T_,,>^2\CT&7\PR+WIQAK.+F2UC%,(\.!C'. +M4QQ+>AX,XJ[G&7;(>1^#+.=]V#G:0SY6ER^-59E'G4&=ISAVZWG&H.EYACUR +MWL>@RWF&I=]H%#%6:?,EK%*81P>#%./S7>URY=VM3*/ +M^CO7>8ICMYYG[]ST/+#=VV;L:M09_BVY&B6&<72\,R6&<8IC2<^S=][U/,,. +M.<_4I>*PG/=AU^@+^FC4N?1+-L7L[;M@]E;';_3Q6(#'YDO>^0CSZ'CG(\Y3 +M'$MZ'E<[=CW/L$/.^QAD.>_#SM$J];&Z?&FLRCSJ#.H\Q;%;SS,&3<\S[)'S +M/@9=SC,L^XW46M*D'6NSAZ+_VK%^?[NS-GL\^J\[Z_>W6>L]ZAO`=W3MW7J/ +MGMZ)]?O;F/4>+=Z8]?O;I_4>O;U/Z_>W;6NSAZSKS7H'6_(#Q_XF"7[@;Z;@ +M!_ZF"W[@;\[@!_XF#G[@;_;@!Y84PK$ECW#L;S+A!_YF%'[@;UKA!_[F%G[@ +M;X+A!_YF&>/`M=R.'5ONR8[]O3'[@;]W9S_P]Q;M!_[>I_W`WYNU'_A[Q_8# +MRVW;L>7>[=C?&[@?^'L7]P-_;^5^X._]W`_\O:G[@;]W]G&@++N>8\O6Y]C? +M_<\/_-T$_<#?G=`/_-T._<#?/=$/_-T8_<"R.SJV;)&._=TG_<#?S=(/_-TQ +M_<#?;=,/_-T[_<#?#70[T&R;_OWMRGZ/$E%_1D3M\:4=[6-I%WIFGS07>CSALPL] +MGO#-B/[/SNKW/-L%_,?ML_O2WL73O.^26=[@P\Z1JGTT/.'[:!1?_O[VF;]' +M[4L\K]:&";^3I?']9\^/Z!OIW?>ZZ<[NV]RW],UMNK/[]F7$>YY+/\53]H_! +MVB7_'O5=ZCNZ=LF_1WU'2OORSR'PD=GG]I_P^X7_,C"+S.+_AB5FB=G.;&=V +M,#N896:9V&<1+A$ND5=$7A$Y+W)>Y/TB[_?^0F-@]C`CRL31Q-$$OP2_!+\$OYVC.T=W +MKK9SM3==96`&YPSGS'4SU\TPS3#-,,@PR+Q+YETRU\A<(W.-S#4R&F0TR)59 +M90;3#-/L +M+EA=L+I@=<'J@M4%JPM6%ZPN6%VPNF!UP>J"U06K"U87K"Y87;"Z8'7!ZH+5 +M!:O"*\K["O[U`09F&[.-66`6F$5FD=G.;&=V,#N896:9V<7L8E:8%6:5665V +M,[N9-6:-V_6._"KZ$MQP$XP_D4' +MZS5(]>^_1A+XHWL&9EPHV(4(D"\B?U;/P(Q+1B[)EY._J`_\13T#,P*,!,C7 +M=.-KRI_0,S"#1N3#BP0=H18)-1(J7^*-+S%_*<_`#+'Y.O/W\0SO+,$EP25Q +MM<35$E=+7(VO_<;7GC]Y9V#&U?C:\Q?K#,R(8R>.'>EVI-N):">BG8AV(MJY +MQLXU=JZQW$MA/;3FP[L>W$MA/;3FQL +M01M;$']_SL`,?@?\#O@=\#O@=\#O@-\!OP-^!_P.^!WP.^!WP.^`WP&_`WX' +M_`[X'?`[X'?`[X#?`;\#?@?\#O@=\#O@=\"/+7)CB^0/R1F8P2_#+\,OPX]M +M&=L;AN;V\8VLM&6',UP["6;_;FM+0NOO=)8WKQI\Y-OCK9YE+=OX[7\ +MA>H[1%]>+$]?WBSK6/)M#,%/YB87PNY+3N9+QQ\^,C#KS-Y@^--&AG>6-F;W +M>%GB39._*98/R=\4MX?DA"QAB^<741N&-Q,Z0L$5B9TCL#(F=(;$S)':&A$L2 +M.T/"((F=@3_(8V`&/W:&A%\2.T/"*HF=(;$S)':&Q,Z0V!D2.T-B9TCL#(F= +M(;$S)':&Q,Z0V!D2#DLD5`ES)1*J1$*52*@2"54BH4IX+9%0)6R62*@2"54B +MH4HD5(F$*N&Z1$*5,%QBSTDD5(F$*I%0)1*J1$*52*@2"54BH4HD5(F$*IWP +M.^%':I5(K1*I52*U2J16B=0JD5HE4JM$:I5(K1*I52*U2J16B=0JD5HE4JM$ +M:I5(K1*I52*U2NR)B=0JL1TF4JM$:I5(K=(%OPM^%_PN^%WPN^!7X%?@5^!7 +MX%?@5^!7X%?@5^!7X%?@5^!7X%?@5^!7X$^#WP>^#WP.^!WP._!WX/_-BSW^$_H7`7+R3^A?VJL%\5 +M]JO"?E78KPK[56G?W>"_/OM/N-F1;G:DFQWI9D=J[).-??+A&_7PC:*?@>$_ +M@88#!F8;LXU98!:8169V7F*6F.W,=F8'LX-99I:9GSBUEA5IA59I79 +MS>QFUI@U9@^SAUEG]C+E(3\#,_CQ\X9'^PS,X,?/&Q[C,S"#'S]T.C]T.C]T +M.C__.S__>8S/P`Q^_/CAX3T#,_CQXX<']0S,X,>/G[[!;X/?!K\-?OP@ZOP@ +MXAD]`S/X\8.(A_(,S.!'V8$'\`S,X$?9@8?M#,S@%^`7X!?@%^`7X!?@%^!' +M^M9)WWATSL`,?@%^)'*=1(Z'XPS,X,>O)QZ),S"#'[^C>/S-P`Q^_([B43<# +M,_CQ.XK'V@S,X,?O*!YF,S"#'[^H>'#-P`Q^_*+B(34#,_CQBXH'T@S,X)?@ +ME^"7X)?@E^!'WOD.S.#'+Z_.+Z_.+Z].&MKYY<4C9P9F\..7%P^:&9C!+\$O +MP2_!+\$OP2_!+\$OP2_!CU]MG5]M/$]F8`8_?K7Q`)F!&?SXU<;#8@9F\.-7 +M&P^&&9C!CU]M/!AF8`8_?K7Q=)B!&?SXU<;3809F\.-7&T^'&=X9N5DG-^-Q +M,`,S^)&;\?R7@1G\R,UXULO`#'[D9CS796`&/W(S'N0R,(,?N1E/;AF8P8_< +MC*>T#,S@1V[&$UF&=T9NULG-.KE9)S?CZ2L#,_B1F_',E8$9_-CK>-+*P`Q^ +MY&8\7V5@!C]R,YZJ,C"#'[D9SU(9F,&/G;"3FW5RLTYNULG->*K*P`Q^Y&8\ +M065@!C]R,YZ1,C"#'[D93T$9F,&/W(SGG`S,X$=NQC--!F;P(S?CJ24#,_B1 +MF_%/+(P`Q^Y&8\961@!C]R,YXC,C"#'[D93PH9F,&/W(QG@0S, +MX$=NQG,_!F;P(S?CR1X#,_B1F_'LCH$9_+B3\'2.@1G\R,UX$L?`#'[D9CQK +M8V`&/W(SGJ8Q,(,?N1G/RQB8P8_'[$P`Q^Y&8\-6)@ +M!C]R,YX5,3"#'[E9)S?KY&:=W.P=^`7YXQ?D[YV]=Q(&9OR^M%^:D=^7[_WC +M'0JS\L[>73GR%U^1>NP[>UBVL=QYO]1]&=[EOODRL8R^Y)+[[DNNNV=?/%L:M#G^K=T\< +M2\)_M\/(WPN-H\F7=I2(LD>4LR_M*!?*\T+%EW:4`+,'^.Z)8\G1BPLEY_SN +M`@S,>-F["[P#DEPNR;L!,+RSPBG%W[EP7O'S*O$6C[M_I%5`JP> +M8.4CJ_Z152*J_I%5KEO]NI7K5K_NS76K7_?FNK=?]^8CN_TCNU'R]O!OE+Q= +MR<9;W?Y6;?,ETC4^LN8?64N^M*-$U#RBEGUI1[E0FQ>/U/D9 +MF,'O@-\!OP-^!_P.^+'#4>>/U/D9F,'O@-\!OP-^['74^2-U?@9F\#O@=\#O +M@-\!OP-^!_P.^!WP.^#'%DF=/U+G9V`&OPP_MDCJ_)$Z/P,S^&7XL452YX_4 +M^1F8P2_#CRV2.G^DSL_`#'X9?FR1U/DC=7X&9O#+\,OPR_`[X7?"[X3?";\3 +M?B?\3OB=\#OA=\+OA-\)OQ-^)_Q.^)WP.^%WPN^$WPF_$WXG_$[XG?`[X7?" +M[X3?";\3?B?\+AA<,+A@<,&`;?T=F,'@@L$%@PL&%PPN&%PPN&!PP8!=@&<8 +M#,Q@P-U@XVZP<3?8+AA<,."^\`[,4(A;`O\&)P.SC=G&+#`+S"*SR"PQ2\QV +M9CNS@]G!+#/+S$YF)[.+V<6L,"O,*K/*[&9V,VO,&K.'V<.L,X/?!K\-?AO\ +M-OAM\-O@M\%O@]\&OPU^&_PV^&WPV^"WP6^#WP:_#7X;_#;X;?#;X+?!;X/? +M!K\-?AO\-OAM\-O@%V`58!5@%6`58!5@%6`58!5@%6`58!5@%6`58!5@%6`5 +M8!5@%6`58!5@%6`58!5@%6`58!5@%6`58!6,%:H%5(OPB_#COA"X+_`O6S(P +M@Q_WA%P'TA<%\(W!<"]X7`?2%P7PC<%P+WA%P'TA<%\(W!<"]X7`?2%P7PC<%P+WA +M8#$P@Q_WAV,<#^WA@'P_LXX%] +M/+"/!_;QP#X>V,?#;N]'O.SC@7T\L(\']O'`/A[8QP/[>&`?#^SC@7T\L(\' +M]O'`/A[8QP/[.`_7&)C!CWV<)VP,S.#'/A[8QP/[>&`?#^SC@7T\L(\']O'` +M/A[8QP/[>&`?#^SC@7T\L(\']O'`/A[8QP/[.`_P&)C!CWVV,<#^SA/\1B8P8]]/+"/!_;Q +MP#X>V,<#^WA@'P_LXX%]/+"/!_9QGO8Q,(,5NW=@]P[LWH'=.[![\]R/@1FL +MV+T#NW=@]P[LWH'=FR>`#,Q@Q>X=V+T#NW=@]P[LWH'=.[![!W;OP.X=V+W# +M::Q0[42U"WX7_"[X7?!C;P_L[8&]/;"W!_;VP-X>V-L#>WM@;P_L[8&]/;"W +M!_;VP-X>V-L#>WM@;P_L[8&]/;"W!_;VP-X>V-L#>WM@;P_L[8&]/=C>7N!7 +MX%?@5^!7X%?@5^!7X%?@5^!7X%?@5^!7X%?@5^!7X%?@5^!7X%?@5^!7X%?@ +MQ\^,=V`&OP(_?FN\`S/X%?CQ@X-_33?RK^DR,(-?A5^%7X4?/SWXUW0C_YHN +M`S/X5?A5^%7X\2.$?TTW\J_5,C"#7X5?A5^%'S]'WH$9_"K\^$WR#LS@5^'' +M#Y-W8`:_&W[\.GD'9O"[X7?#[X8?/U;>@1G\;OCQB^4=F,'OAA\_6]Z!&?QN +M^-WPN^%WP^^&WPV_&WXW_&[XW?"[X<>OG7=@!K\&OP:_!C]^[;P#,_@U^#7X +M\7L_\&OG'9C!K\&OP:_!CU\[_!O$D7^#F($9_!K\^+7#OT$<^3>(&9C!K\&O +MP:_![X'?`[\'?@_\'O@]\'O@]\#O@=\#OP=^#_P>^#WP>^#WP.^!WP._!WX/ +M_![X/?![X/?`[X'?`[\'?@_\'O@]\'O@]\"OPZ_#K\.OPZ_#K\.OPZ_#C]]O +M[\`,?AU^'7X=?OR<>P=F\.OPXT?<.S"#7X=?AU^'7X=?AU^'7XX3^1 +M?YN9@=G&;&,6F`5FD5EDEI@E9CNSG=G![&"6F65F)[.3V<7L8E:8%6:5665V +M,[N9-6:-V`'QD9_XHT`S/XD9%%,K)(1A;) +MR"(9620CBV1DD8PLDI%%,K)(1A;)R"(9&?^E&P,S^)&113*R2$86R<@B&5G< +MX+?!C]PLDIM%L=X$=N%LG-^)>7 +MW@%^Y&:1W"R2FT5RLTAN%LG-(KE9)#>+Y&:1W(Q_O^0=X$=N%LG-(KE9)#?C +MWSYY!_B1FT5RLTAN%LG-(KE9)#>+Y&:1W"R2FT5RLTAN%LG-(KD9CQ6C]8-$ +MA#?@?XD9M%I%<+Y+K17ZS1WZS1[*^2-87R?HB65\DZXMD?9&L+Y+U\6_.,S"#'UD? +M?U["P`Q^9'W\T08#,_B1]?&7#`S,X$?61_L\`S/XD?7Q%P`,S.!'UL=?6C`P +M@Q]97R3KBV1]D:PODO5%LKY(UA?)^B)97R3KBV1]D:PODO5%LKY(UA?)^B)9 +M7R3KBV1]D:PODO5%LKY(UA?)^B)97R3KBV1]D:PODO5%LKY(UA?)^B)97R3K +MBV1]D:PODO5%LKY(UA?)^B)97R3KBV1]D:PODO5%LKY(UD>C,`,S^)'U\4_I +M,S"#'UD??Z+)P`Q^9'W\Z27#.R/KBV1]D:PODO5%LKY(UA?)^B)97R3KBV1] +MD:PODO5%LKY(UA?)^B)97R3KBV1]_-$0`S/XD?5%LKY(UA?)^B)97R3KBV1] +MD:PODO5%LKY(UA?)^B)97R3KBV1]D:PODO5%LKY(UA?)^B)97R3KBV1]D:PO +MDO5%LKY(UA?)^B)97R3KBV1]_`\!#,S@1];'GY\R,(,?61]_5LK`#'YD??R7 +M``S,X$?6QW\)P,`,?F1]_&\`#,S@1];'?P3`P`Q^9'V1K"^2]46RODC6%\GZ +M(EE?).N+9'V1K"^2]46RODC6%\GZ(EE?).N+9'V1K"^2]46RODC6%\GZ(EE? +M).N+9'V1K"^2]46RODC6%\GZ(EE?).N+9'V1K"^2]46RODC6%\GZ(EE?).N+ +M9'V1K"^2]46RODC6%\GZ(EE?).N+9'W\%P@,S.!'UL=_@<#`#'YD??QG"`S, +MX$?6%\GZ(EE?).N+9'V1K"^2]?%?)3`P@Q]97R3KBV1]D:PODO5%LKY(UA?) +M^J)E?53RW^$_);_[,\-_ROUF@MOV^_W/1N'W76YS^0[O5_+%@F(76%2L@"7% +M*MBNV`UV*-;`LF(/V*E8![L$JQ9"4VG +M6`93_2KZ;:I?1;]-]:OHMZE^%?TVU:^BWZ;Z5?3;5+^*?IOJ5]%O4_UN]-M4 +MOQO]-M7O1K]MZF?+*5T85MD>Q2S4KABAAI]BA!HVQ0@U!,4(-43%"#4DQ0@U +M[(*95<*A&*&&K!BQA5,QK!(NQ;!**(IAE5`5PRKA5@RK!-7/K!)4/[-*4/W, +M*E'U,ZM$U<^L$E4_LTI4_BMFH3;!S"K[HYB%VA4CU..G&%8Y-L70X`B*894C*H95CJ085CE4 +M/[/*H?J950[5SZQRJ'YFE4/U,ZL%2/4?"A&J#DK1JCY5(Q0\R686247 +MQ0@U5\4LU%LQK)*;8E@E/XJ9+ETQK'+^%,,JI^IG5CE5/[/*J?J954[5SZQR +MJGYFE5/U,ZNIV*$>E^*$>I=%"/4NRIFH=Z*6:A-,+/*_2AFH7;% +M"+7]%,,J;5,,J[2@&%9I43<I)B6*6I?F:5IOJ959KJ9U9IJI]9I:E^9I6F +M^IE5FNIG5FFJGUFEJ7YFE:;ZF56:ZF=6>:9^A/!,Z:YAE213#*D]7 +M#*OTGV)8I:M^9I6N^IE5NNIG5NFJGUFEJWYFE:[ZF56ZZF=6Z:J?6:6K?F:5 +MKOJ95;KJ9U;I4S^C.Z4KPRK]4^6>5MI3TRC^KM*6D5_Y9I2TEO?+/*FTIZ95_5FE+2:_\LTI;2GKEGU7: +M4M(K_ZS2EI)>^6>5MI3TRC^KM)_JAU7:3_7#*NVG^F&5MJE^6*5MJA]6:9OJ +MAU7:IOIAE;:I?EBE;:H?5FF;ZH=5VJ;Z896VE/2,VI2N_K-*6ZIY]9]5VE+- +MJ\,J2S6O#JLL);TZK+*4].JPRE+2J\,J2TFO#JLL);TZK+*4].JPRE+2J\,J +M2TFO#JLL);TZK+*4].JPRE+2J\,J2TFO#JL$U<^L$E0_LTI0_\>5EFJ>?>PRE+- +MNX=5EFK>/:RRE/3N896EI'50_<^P +MRE+->X95EFK>,ZRRE/2>896EI/<,JRPEO6=892GI/<,J2TGO&5992GK/L,I2 +MTGN&59:2WC.LLI3TGF&5I:3W#*LL);UG6&4IZ3W#*EGU,ZMDU<^LDE4_L\JI +M^IE53M7/K'*J?F:54_4SJYRJGUGE5/W,*J?J9U8Y53^SRE+2L[>:TO5AE:6: +MUX=5EFI>'U99JGE]6&4IZ?5AE:6DUX=5EI)>'U992GI]6&4IZ?5AE:6DUX=5 +MEI)>'U992GI]6&4IZ?5AE:6DUX=5EI)>'U992GI]6.52_1]&J+.:]V&$.JMY'T:HLZ3W880Z2WH?1JBSI/=A%NJMF(7:!#.KS)+>AUFH +M73%"G26]#\,JLZ3W85AEEO0^#*O,DMZ'896:%,,J5?4SJU35SZQ253^S2E7] +MS"I5]3.K5-7/K%)5/[-*5?W,*E7U,ZM4U<^L4E4_L\HLZ65.F=6\//I5VJSF +MY=&OTF8U+X]^E3:K>7GTJ[19TLNC7Z7-DEX>_2IMEO3RZ%=ILZ271[]*FR6] +M//I5VBSIY=&OTF9)+X]^E39+>GGTJ[19TLNC7Z7-DEX>_2IMEO3RZ%=I[:<8 +M5FFJGUFEJ7YFE:;ZF56:ZF=6::J?6:6I?F:5IOJ959KJ9U9IJI]9I:E^9I6F +M^IE59DDOVW)*-_I5VJSFY=&OTF8U+X]^E3:K>7GTJ[19TLNC7Z7-DEX>_2IM +MEO3RZ%=ILZ271[]*FR6]//I5VBSIY=&OTF9)+X]^E39+>GGTJ[19TLNC7Z7- +MDEX>_2IMEO3RZ%=ISZT85GE4/[/*H_J951[5SZS253^S2E?]S"I=]3.K=-7/ +MK-)5/[-*5_W,*EWU,ZMTU<^L,DMZ&>EF-2^/?I4VJWEY]*NT6 +M'OTJ;9;T\NA7:;.DET>_2ILEO3SZ59Y9TLNC7^69);T\^E6>6=++HU_EF26] +M//I5GEG2RZ-?Y9DEO3SZ59Y9TLNC7^69);T\^E6>WZE8!E/]L,KS4_VPRO-3 +M_;#*\U/]L,KS4_VPRO-3_;#*\U/]L,JSJ7Y8Y=E4/ZSR;*H?5GDVU0^K/+.D +MEY%I5O/RZ%=Y9C4OCWZ59U;S\NA7>68U+X]^E6>6]/+H5WEF22^/?I5GEO3R +MZ%=Y9DDOCWZ59Y;T\NA7>69)+X]^E6>6]/+H5WEF22^/?I5GEO3RZ%=Y9DDO +MCWZ59Y;T\NA7>4)2#*L$U<^L$E0_LTI0_68U+X]^ +ME6>6]/+H5WEF22^/?I5GEO3RZ%=Y9DDOCWZ59Y;T\NA7>69)+X]^E6>6]/+H +M5WEF22^/?I5GEO3RZ%=Y9DDOCWZ59Y;T\NA7>=)/,:R25#^S2E+]S"I)]3.K +M)-7/K))4/[-*4OW,*DGU,ZLDU<^LDE0_LTI2_Q`CU*^E-C%"_DM[$"/4KZ4V,4+^2GF-FE:^D +M-S'B^$IZ$R/4KZ0W,:SRE?0FAE6^DM[$L,I7TIL85MEOQ;#*KOJ957;5SZRR +MJWYFE4/U,ZL%<,J^5`,J^2L&%;)IV)8):M^9I6L^IE5LNIG5LFJGUDEJWYFE:SZF56R +MZF=6.54_L\JI^IE53M7/K'*J?F:5<^J'=.>4;J2USWDH1JAG5HQ0SU,Q0CTO +MQ0CU+(H1ZED5LU!OQ2S4)IA9Y7P4LU"[8H1Z_10CWFM3#*M<03&L5I;'\4L +MU*X8H=X_Q0CUWA0CU#LH1JAW5(Q0[Z08H=Z[8&:5^U",4.^L&*'>IV)8Y;X4 +MPRIW40Q=[JH85KEOQ;#*K?J956[5SZQRJWYFE:;ZF56:ZF=6::J?6:6I?F:5 +MIOJ959KJ9U9IJI]9I:E^9I4V]2/\-J4;;=A/*XH1:JN*6:BW8A9J4\Q"?12S +M4+MBA/K\%"/49Q/,K/($Q0CUB8H1ZI,4PRK/KAA6>0[%L,J3%4.KYU0,JSRJ +MGUGE4?W,*H_J9U9Y5#^SRJ/ZF54>U<^L\JA^9I6N^IE5NNIG5NFJGUFEJWYF +ME3[U(]0^I1MMV$\_%"/4GA4CU'XJ1JC]4HQ0>U&,4'M5S$*]%;-0FV!FE?XH +M9J%VQ=Y0^^^G6`3;%$M@0;$=+"IV@"7%,ICJAU7Z3_7#*OVG^F&5_E/]L$K_ +MJ7Y8I?]4/ZS2?ZH?5ND_U0^K])_JAU7Z3_7#*OVG^F&5ODW]"&N;THTV[+X% +MQ0AUBXH1ZI84(]1M5XQ0MT,Q0MVR8H2ZG8H1ZG8)AE7Z5A0CU*TJ9J'>BF&5 +MK2F&5;9',:RR=<6P2O@IAE6"ZF=6":J?626H?F:5H/J958+J9U8)JI]9):A^ +M9I6@^IE5@NIG5@FJGUDEJ'YFE3#ULQ"F=*,-NX=',3NO*T:H\:<8H<9-,4*- +M03%"C5$Q0HU),4*-NV!FE7@H1J@Q*T:H\50,J\1+,:P2BV)8)5;%L$J\%<,J +M4?4SJT35SZP253^S2E+]S"I)]3.K)-7/K))4/[-*4OW,*DGU,ZLDU<^LDE0_ +MLTJ:^AG=*=UHP^ZI*$:HJ2IFK[T5LU";8A;JHYB%VA4CU*6D-]JP^U+2&VW8 +M?2GIC3;LOI3T1AMV7TIZHPV[+R6]T8;=EY+>:,/N2TEOM&'WI:0WVK#[KOJ9 +M57;5SZRRJWYFE5WU,ZOLJI]995?]S"J[ZF=6.50_L\JA^IE5#M7/K'*H?F:5 +MI:0'M:6:-]JP^U+-&VW8?:GFC3;LOE3S1AMV7TIZHPV[+R6]T8;=EY+>:,/N +M2TEOM&'WI:0WVK#[4M(;;=A]*>F--NR^E/1&&W9?2GJC#;LO);W1AMV7DMYH +MP^Y+26^T8?>L^IE5LNIG5LFJGUDEJWYFE:SZF56RZF=6R:J?626K?F:5K/J9 +M5;+J9U;)JI]992GI06.IYHTV[+Y4\T8;=E^J>:,-NR_5O-&&W9>2WFC#[DM) +M;[1A]Z6D-]JP^U+2&VW8?2GIC3;LOI3T1AMV7TIZHPV[+R6]T8;=EY+>:,/N +M2TEOM&'WI:0WVK#[4M(;;=C]4OW,*I?J9U:Y5#^SRJ7ZF54NU<^L52_ +M:,/N2TEOM&'WI:0WVK#[4M(;;=A]*>F--NR^E/1&&W9?2GJC#;LO);W1AMV7 +MDMYHP^Y+26^T8?>EI#?:L/M2TAMMV'TIZ8TV[%Y4/[-*4?W,*D7U,ZM4U<^L +M4E4_LTI5__LIW6C#[DLU;[1A +M]Z6:-]JP^U+-&VW8?2GIC3;LOI3T1AMV7TIZHPV[+R6]T8;=EY+>:,/N2TEO +MM&'WI:0WVK#[4M(;;=A]*>F--NR^E/1&&W9?2GJC#;LO);W1AMUOU<^L56_EI#?:L/M2TAMM +MV'TIZ8TV[+Z4]$8;=E]*>J,-NR\EO=&&W9>2WFC#[DM);[1A]Z6D-]JP^U+2 +M&VW8_5']S"J/ZF=6>50_L\JC^IE5'M7/K/*H?F:51_4SJSRJGUGE4?W,*H_J +M9U9Y5#^SRBSIT8;=9S7/V[#[K.9Y&W:?U3QOP^ZSFN=MV'V6]+P-N\^2GK=A +M]UG2\S;L/DMZWH;=9TG/V[#[+.EY&W:?)3UOP^ZSI.=MV'V6]+P-N\^2GK=A +M]UG2&VW8]??[*9;!5+_7*B^F^KU6>3'5[[7*BZE^KU5>3/5[K?)BJM]KE1=3 +M_5ZKU-]/]7NM4G\_U>^URHNI?J]57DSU>ZWR8E,_.V5*MWU6>;%',0NU*T:H +MLYHWVK!?;%.,4&=);[1AOUA4C%!G26^T8;_8+E@EU%G2&VW8+Y85(]19TAMM +MV"]V*9;`BF([6%4,JVRW8EAE4_W,*IOJ9U;95#^S2E#]S"I!]3.K!-7/K!)4 +M/[-*4/W,*D'U,ZL$U<^L$E0_L\HLZ65;3NG"L,JLYHTV[!>KBEFHMV(6:E/, +M0GT4LU"[8H0Z2WJC#?O%-L',*K.D-]JP7RPJ1FRSI#?:L%]L5PRKS)+>:,-^ +ML:P85HFG8E@EJGYFE:CZF56BZF=6B:J?626J?F:5J/J95:+J9U9)JI]9):E^ +M9I6D^IE5DNIG5IDEO8QTLYHWVK!?[%",4&:,.NOUG2&VW8+]8$,ZO,DMYHPWZQKABASI+>:,-^L4TQK#)+>J,-^\6B +M8EAE3XIAE5WU,ZOLJI]995?]S"J[ZF=6V54_L\JN^IE5=M7/K+*K?F:57?4S +MJ^RJGUEE5_W,*K.DEY%I5O-&&W;]S6K>:,-^L:@8H52_=I7TIL85OE*>A/#*E]);V)8Y2OI30RK +ME%,QK%)4/[-*4?W,*D7U,ZL4U<^L4E0_LTI1_%,,J=U`,J]Q1,:QR)\6PRJWZF55NU<^L56_V*$6H[%"/4EA4CU'8J1JCM$LRLTHIBA-JJ8A;JK9C%VQ3# +M*NU1#*NTKAA6>7Z*895']3.K/*J?6>51_I'J&E*EX=54E",4%-4C%!34HQ0TZX8H:9#,4)- +M63%"3:=BA)HNPBF&5U!3#*NE1#*NDKAA6V7^*H=^N^IE5 +M=M7/K+*K?F:57?4SJ^RJGUEE5_W,*KOJ9U;953^SRJ[ZF55VU<^LLJM^9I5] +MZF=A3>G.897]4IQ*H95CDLQK'(4Q;#*417#*L>M&%8Y5#^SRJ'ZF54.U<^LDE4_LTI6 +M_F5892GIE6&5I:17AE66DEX95EE*>F5892GIE6&5I:17AE66DEX9 +M5EE*>F58I:A^9I6B^IE5BNIG5BFJGUFEJ'YFE:+ZF56*ZF=6*:J?6:6H?F:5 +MHOJ958KJ9U992GI06ZIY=5AEJ>;5896EFE>'599J7AU664IZ=5AE*>G5896E +MI%>'59:27AU664IZ=5AE*>G5896EI%>'59:27AU664IZ=5AE*>G5896EI%>' +M59:27AU6N54_L\JM^IE5;M7/K'*K?F:56_4SJ]RJGUGE5OW,*K?J9U:Y53^S +MRJWZF55NU<^LLI3TC,:4[AY66:IY][#*4LV[AU66:MX]K+*4].YAE:6D=P^K +M+"6]>UAE*>G=PRI+2>\>5EE*>O>PRE+2NX=5EI+>/:RRE/3N896EI'U<^L\JA^9I5']3.K/*J?6>51 +M_]?&_:+;8HEL*#8#A85.\"28AE,]<,J85/] +ML$K85#^L$C;5#ZN$3?7#*F%3_;!*V%0_L\JF^IE5-M7/K+*I?F:53?4SJRPE +M/=YJJ>;U896EFM>'599J7A]66:IY?5AE*>GU896EI->'59:27A]664IZ?5AE +M*>GU896EI->'59:27A]664IZ?5AE*>GU896EI->'59:27A]664IZ?5@EJGYF +ME:CZF56BZF=6B:J?626J?F:5J/J95:+J9U:)JI]9):I^9I6H^IE5HNIG5IDE +MO6PO:W,YK#*K>:,-^\6Z8H0ZJWFC#?O%-L4(=9;T1AOVBT7%"'66]$8;]HOM +M@IE59DEOM&&_6%:,4&=);[1AO]BE&%:9);W1AOUB53&LDF[%L$I2_ME. +MF=*-?I4PJWG>AAUF-<_;L,.LYGD;=I@E/6_##K.DYVW889;TO`T[S)*>MV&' +M6=+S-NPP2WK>AAUF2<_;L,,LZ7D;=I@E/6_##K.DYVW889;TO`T['*=B6.50 +M_54_;=AA5O.\#3O,:IZW88=9S?,V[#"K>=Z&'69)S]NP +MPRSI>1MVF"4];\,.LZ3G;=AAEO2\#3O,DIZW88=9TO,V[#!+>MZ&'69)S]NP +MPRSI>1MVF"4];\,.]58,JU35SZQ253^S2E7]S"JWZF=6N54_L\JM^IE5;M7/ +MK'*K?F:56_4SJ]RJGUGE5OW,*K.D1QMVF-4\;\,.LYKG;=AA5O.\#3O,:IZW +M88=9TO,V[#!+>MZ&'69)S]NPPRSI>1MVF"4];\,.LZ3G;=AAEO2\#3O,DIZW +M88=9TO,V[#!+>MZ&'69)S]NP0SL5PRI-]3.K--7/K-)4/[-*4_W,*DWU,ZLT +MU<^LTE0_L\JC^IE5'M7/K/*H?F:51_4SJWPE/3:9PT[9YW)8Y:OF38Q0OVK> +MQ`CUJ^9-C%"_DM[$"/4KZ4V,4+^2WL0LU%LQ"[4)9E;Y2GH3LSBZ8H3ZE?0F +MAE6^DM[$L,I7TIL85OE*>A/#*CTIAE6ZZF=6Z:J?6:6K?F:5KOJ95;KJ9U;I +MJI]9I:M^9I6N^IE5NNIG5NFJGUFEJWY8)?ZF?K:*F^F&5 +MN*E^6"5NJI]999OZ(=TVI1MI;=P>Q2S4KABAAI]BA!HVQ0@U!,4(-43%"#4D +MQ0@U[(*95<*A&*&&K!BAAE,QX@V78E@E%,6P2JB*895P*X95@NIG5@FJGUDE +MJ'YFE:CZF56BZF=6B:J?626J?F:5J/J95:+J9U:)JI]9):I^9I4X]4.F.*4; +M:6V,13%"C54Q"_56S$)MBEFHCV(6:E>,4--/,4)-FV!FE104(]04%2/4E!3# +M*FE7#`W2H1A625DQK)).Q;!*4OW,*DGU,ZLDU<^LDE0_LTI2_9+ +M,+-*+HH1:JZ*6:BW8E@E-\6P2GX4PRJY*X96YT\QK'*J?F:54_4SJYRJGUGE +M5/W,*J?J9U8Y53^SRJGZF55.U<^L6<^EFH4[K1AAW/ +M1S$+M2M&J-=/,4*]-L4(]0J*$>H5%2/4*RE&J-,4.M/,4*MFV!FE1H4(]0:%2/4FA3#*G57#*O40S&L4K-B6*6>BF&5 +MJOJ95:KJ9U:IJI]9I:I^9I6J^IE5JNIG5JFJGUGE5OW,*K?J9U:Y53^SRJWZ +MF57NJ1\AW%.ZT88=[T,Q.R\K1JCWJ1BAWI=BA'H7Q0CUKHI9J+=B%FH3S*QR +M/XI9J%TQ0FT_Q;!*VQ3#*BTHAE5:5`RKM*085FFJGUFEJ7YFE:;ZF56:ZF=6 +M::J?6:6I?F:5IOJ959KJ9U9IJI]9I:E^9I6F^IE5GJD?=)\IW6C#CD]0C%"? +MJ)B]-BE&J$M);[1AQZ6D-]JPXU+2&VW8<2GIC3;LN)3T1AMV7$IZHPT[+B6] +MT88=EY+>:,..2TEOM&''I:0WVK#C4M(;;=AQ*>F--NS853^S2E?]S"I=]3.K +M=-7/K-)5/[-*5_W,*EWU,ZMTU<^LTE4_LTI7_:,-.RTEO=&&G9:2WFC#3DM);[1AIZ6D-]JPTU+2&VW8 +M:2GIC3;LM)3T1AMV6DIZHPT[+26]T8:=EI+>:,-.2TEOM&&GI:0WVK#33_7# +M*NFG^F&5]%/]L$K:5#^LDC;5#ZND3?7#*FE3_;!*VE0_K)(VU0^KI$WUPRII +M4_VP2EI*>D9C2C?:L--2S1MMV&FIYHTV[+14\T8;=EI*>J,-.RTEO=&&G9:2 +MWFC#3DM);[1AIZ6D-]JPTU+2&VW8:2GIC3;LM)3T1AMV6DIZHPT[+26]T8:= +MEI+>:,-.2TEOM&&GH/J958+J9U8)JI]9):A^9I6@^IE5@NIG5@FJGUDEJGYF +ME:CZF56BZF=6B:J?664IZ7')I9HWVK#34LT;;=AIJ>:--NRT5/-&&W9:2GJC +M#3LM);W1AIV6DMYHPTY+26^T8:>EI#?:L--2TAMMV&DIZ8TV[+24]$8;=EI* +M>J,-.RTEO=&&G9:2WFC#3DM);[1AIZ3ZF562ZF=62:J?626I?F:5I/J959+J +M9U9)JI]9):E^9I6D^IE5DNIG5DFJGUEE*>GQ]DLU;[1AIZ6:-]JPTU+-&VW8 +M::GFC3;LM)3T1AMV6DIZHPT[+26]T8:=EI+>:,-.2TEOM&&GI:0WVK#34M(; +M;=AI*>F--NRTE/1&&W9:2GJC#3LM);W1AIV6DMYHPTZ'ZF=6.50_L\JA^IE5 +M#M7/K'*H?F:50_4SJQRJGUGE4/W,*H?J9U8Y5#^SRJ'ZF566DIZ]U91NM&&G +MI9HWVK#34LT;;=AIJ>:--NRTE/1&&W9:2GJC#3LM);W1AIV6DMYHPTY+26^T +M8:>EI#?:L--2TAMMV&DIZ8TV[+24]$8;=EI*>J,-.RTEO=&&G9:2WFC#3EGU +M,ZMDU<^LDE4_L\JI^IE53M7/K'*J?F:54_4SJYRJGUGE5/W,*J?J9U8Y53^S +MRBSI97O9-9?#*K.:YVW8:5;SO`T[S6J>MV&G6=+S-NPT2WK>AIUF2<_;L-,L +MZ7D;=IHE/6_#3K.DYVW8:9;TO`T[S9*>MV&G6=+S-NPT2WK>AIUF2<_;L--U +M*H95+M7/K'*I?F:52_4SJURJGUGE4OW,*I?J9U:Y5#^S2E']S"I%]3.K%-7/ +MK%)4/[/*+.EE.V5*-_I5TJSF>1MVFM4\;\-.LYKG;=AIEO2\#3O-DIZW8:=9 +MTO,V[#1+>MZ&G69)S]NPTRSI>1MVFB4];\-.LZ3G;=AIEO2\#3O-DIZW8:=9 +MTO,V[%238EBEJGYFE:KZF56JZF=6J:J?6:6J?F:5JOJ95:KJ9U:IJI]9I:I^ +M9I6J^IE5JNIG5IDEO6S+*=WH5TFSFN=MV&E6\[P-.\UJGK=AIUG2\S;L-$MZ +MWH:=9DG/V[#3+.EY&W::)3UOPTZSI.=MV&F6]+P-.\V2GK=AIUG2\S;L-$MZ +MWH:=9DG/V[!3^RF&59KJ9U9IJI]9I:E^9I6F^IE5FNIG5FFJGUFEJ7YFE:;Z +MF56:ZF=6::J?6:6I?F:56=*C#3O-:IZW8:=9S?,V[#2K>=Z&G68US]NPTRSI +M>1MVFB4];\-.LZ3G;=AIEO2\#3O-DIZW8:=9TO,V[#1+>MZ&G69)S]NPTRSI +M>1MVFB4];\-.LZ3G;=CIN17#*H_J9U9Y5#^SRJ/ZF56ZZF=6Z:J?6:6K?F:5 +MKOJ95;KJ9U;IJI]9I:M^9I6N^IE59DF/-NPTJWG>AIUF-<_;L-.LYGD;=IK5 +M/&_#3K.DYVW8:9;TO`T[S9*>MV'OLZ3G;=C[+.EY&_8^2WK>AKW/DIZW8>^S +MI.=MV/LLZ7D;]CY+>MZ&O<^2GK=A[[]3L0RF^F&5_:?Z897]I_IAE?VG^F&5 +M_:?Z897]I_IAE?VG^F&5?5/]L,J^J7Y89=]4/ZRR;ZH?5MEG28\V['U6\[P- +M>Y_5/&_#WF9TG/V[#W6=+S-NQ]EO2\ +M#7N?)3UOP]YG2<_;L/=9TO,V['V6]+P->Y\E/6_#WF=)S]NP]Y`4PRI!]3.K +M!-7/K!)4/[-*4/W,*D'U,ZL$U<^L$E0_LTI0_]?->];#JM\U;R)$>I7S9L8H7[5O(D1ZE?2FQBA?B6]B1'J5]*;&*%^ +M);V)$>I7TG/,K/*5]"9F<53%+-1;,:SRE?0FAE6^DM[$L,I7TIL85DD_Q;!* +M4OW,*DGU,ZLDU<^LDE0_LTI2_U:,V/93,:RR7XIAE;THAE7VJAA6V6_%L,JN^IE5=M7/K+*K?F:50_4S +MJQRJGUGE4/W,*H?J9U8Y5#^SRJ'ZF54.U<^LBEFH33$+]5',0NV*$6K^*4:H>1/,K)*#8H2:HV*$FI-BQ)MWQ;!* +M/A3#*CDKAE7RJ1A6R:J?626K?F:5K/J95;+J9U;)JI]9):M^9I6L^IE53M7/ +MK'*J?F:54_4SJYRJGUGEG/HATSFE&VGM?AZ*$>J9%2/4\U2,4,]+,4(]BV*$ +M>E;%+-1;,0NU"696.1_%+-2N&*%>/\6PRK4IA@974`RK7%$QK'(EQ;#*I?J9 +M52[5SZQRJ7YFE4OU,ZMN&%:I/\6P2E7]S"I5]3.K5-7/K%)5/[-*5?W, +M*E7U,ZM4U<^L4E4_LTI5_K] +M4XQ0[TTQ0KV#8H1Z1\4(]4Z*$>J]"V96N0_%"/7.BA'J?2J&5>Y+,:QR%\6P +MRET50ZO[5@RKW*J?6>56_8'670\S'3JRTRG?LSLU/?'S$Y]-V12Y=V9 +MV:GOP95/E>9CKU8_;OU/K[,3LLVY@5RW9FIV4' +MLVI98=8L(S]3I?[(SU2I/_(S5>J/_$R5^B,_4Z7^R,]4J3_R,U7JC_Q,E?HC +M/U.E_LC/5*D_\C-5ZA;\[(0MT/D,NVX[,WWN8&:G;H69G;J=S.S4K3*S4[?& +MS$[=.C,[=1O(3)6Z7YB9*MO+S%39/F:FROYC9JKLY"=5 +M=O*3*COY296=_*3*3GY292<_J;*3GU39R4^J[.0G57;RDRH[^4F5/?CIYP8Z +MGV'7_66F4S]F]K>IS?,9=DV5GL^P:ZKT?(9=4Z7G,^R:*CV?8==4Z?D,NZ9* +MSV?8-55Z/L.NJ=+S&79-E9[/L&NJ]'R&75.EYS/LFBH]GV'7@_RDRD%^4N4@ +M/ZE2R$^J%/*3*H7\I$HA/ZE2R$^J%/*3*H7\I$HA/ZF2*CW]M$#G,^R:VCR? +M8=?4YOD,NZ8VSV?8-55Z/L.NJ=+S&79-E9[/L&NJ]'R&75.EYS/LFBH]GV'7 +M5.GY#+NF2L]GV#55>C[#KJG2\QEV396>S[!KJO1\AEU/\I,J)_E)E9/\I,I) +M?E+E)#^IC[#KJG2\QEV396>S[!K(S^ITLA/JC3RDRJ-_*1* +M(S^ITLA/JC3RDRJ-_*1*(S^ITLA/JC3RDRJITK-_,K5Y/L.NJC[#KJG2\QEV396>S[!K +MJO1\AEU3I>0G50;Y295!?E)ED)]4 +M&>0G50;Y295!?E)ED)]4&>0G50;Y2954Z>GK`YW/L&MJ\WR&75.;YS/LFMH\ +MGV'75.GY#+NF2L]GV#55>C[#KJG2\QEV396>S[!KJO1\AEU3I>I.?5+G)3ZKH]-8,NT:EMV;8-2J]-<.N4>FM&7:- +M2F_-L&M4>FN&7=_"S%1YR4^JO.0G55[RDRHO^4F5E_RDRDM^4N4E/ZGRDI]4 +M>\I,J4>G9#+M&F[=FV#7:O#7#KM'FK1EVC39OS;!K5'IKAEVC +MTELS[!J5WIIAUZCTU@R[1J6W9M@U*KTUPZY1Z:T9=HU*;\VP:U1Z:X9=H]); +M,^P:E=Z:8;??CUFSC/Q,E?8C/U.E_H]-8,NT6EMV;8+2J]-<-N4>FM +M&7:+2F_-L%M4>FN&W;:;F:FRD9]4V6N&W:+-6S/L%FW>FF&WJ/36 +M#+M%I;=FV"TJO37#;E'IK1EVBTIOS;!;5'IKAMVBTELS[!:5WIIAMZCTU@R[ +M1:6W9M@M*KTUPVY'9V:J'.0G50[RDRH'^4F5@_RDRD%^4N4@/ZERD)]4*>0G +M50KY295"?E*ED)]4B4K/9M@MVKPUPV[1YJT9=HLV;\VP6[1Y:X;=HM);,^P6 +ME=Z:8;>H]-8,NT6EMV;8+2J]-<-N4>FM&7:+2F_-L%M4>FN&W:+26S/L%I7> +MFF&WJ/36#+N=A9FIH]-8,NT6EMV;8 +M+2J]-<-N[JCSSQZ*K\M7F1Z=2/F9WZU^9%9J?^57J1V:E_E5YD=NI? +MI1>9G?I7Z45FI_Y5>BN3*G^57F1VQU^E%YF=^E?I16:J_%5ZD9DJ?Y5>9*;* +M7Z47F:G2;V:F2B<_J=+)3ZIT\I,J@_RDRB`_J3+(3ZH,\I,J@_RDRB`_J3+( +M3ZH,\I,J(_CI,="MU]IQ,;-3QV2F4V]F.O5AIE-?9CKU8V:G7C]F=NJU(9,J +MU\[,3KT.9G;;59B9*M?)S%2Y*C-3Y6K,3)6K,S-5+O*3*A?Y296+_*3*17Y2 +MY2(_J7*1GU2YR$^J3/*3*I/\I,HD/ZDRR4^JS.!GZ&:@6Z^ULS*S4V=C9J?. +MSLQ.G8.9G3HO9G;JG,QTZLU,IS[(I,I\F>G4CYF=>O^8V;WWQLQ4N7=FILI] +M,#-5[L+,5+G)3ZK1YF8O`R,U6>CYFI\OZ8F2HO^4F5E_RDRDM^4N4E +M/ZGRDI]4>\I,J+_E)E9?\I,I+?E+E#7Z&Y`UTIZOROLQTZL?, +M3OU^S.S4;V-FIWX[,SOU.YC9J5]A9J=^)S*I\E5F=NK7F-FI7V=FJGR#F:GR +M79F2K?SPQT/L/NOXO9L&PRTZDW,YWZ,-.I+S.= +M^C&S4[C/3J0\RJ;*_S'3JQ\Q. +M/7[,3)5C8V:J'#LS4^4XF)DJ1V%F_`[RDRH'^4F5@_RDRD%^4N4@/ZERD)]4 +M.ES'S,[M?Z8V:EU8V:GUIV9G5H/9G9J+C,S52KY295*?E*EDI]4:>0G51KY295& +M?E*ED9]4:>0G51KY295&?E*ED9]4:<%//S?0^0R[MXN9G=HF,_WMS4RG/LQT +MZLM,IW[,[-14Z?D,NZ=*SV?8/55Z/L/NJ=+S&79/E9[/L'NJ]'R&W5.EYS/L +MGBH]GV'W5.GY#+MW\I,JG?RD2B<_J=+)3ZIT\I,JG?RD2B<_J3+(3ZH,\I,J +M@_RDRB`_J9(J/?MIJC[#[JG2\QEV3Y6>S[![JO1\AMU3I>C[#[JG2\QEV3Y6> +MS[![JO1\AMU3I>ZKT?(;=;_*3*C?Y296;_*3*37Y2Y28_J7*3GU2YR4^JW.0G56[RDRHW^4F5 +MF_RD2JKT]$\&.I]A]]3F^0R[IS;/9]@]M7D^P^ZITO,9=D^5GL^P>ZKT?(;= +M4Z7G,^R>*CV?8?=4Z?D,NZ=*SV?8/55Z/L/NJ=+S&79/E9[/L'NJ]'R&W5.E +MYS/L_I"?5'G(3ZH\Y"=57O*3*B_Y2967_*3*2WY2Y24_J?*2GU1YR4^JO.0G +M55*EIZ\/=#[#[JG-\QEV3VV>S[![:O-\AMU3I>ZKT?(;=4Z7G,^R>*CV?8?=4Z?D,NZ=*SV?8 +M_2,_J?*1GU3YR$^J?.0G53[RDRH?^4F5C_Q,E?$C/U-E_,C/5!D_\C-5QH_\ +M3)61*CU]5:#S&?9(;9[/L$=J\WR&/5*;YS/LD2H]GV&/5.GY#'ND2L]GV"-5 +M>C[#'JG2\QGV2)6>S[!'JO1\ACU2I>JC(W\3)6QD9^I,C;R,U7&1GY292,_J;*1GU39R$^J +M;.0G5:+2LQGVB#9OS;!'M'EKACVBS5LS[!%MWIIACZCTU@Q[1*6W9M@C*KTU +MPQY1Z:T9]HA*;\VP1U1Z:X8]HM);,^P1E=Z:88^H]-8,>T2EMV;8(RJ]-<,> +MQX^9J7*0GU0YR$^J'.0G50[RDRH'^4F5@_RDRD%^4N4@/ZERD)]4.T>6N&/:+-6S/L$97>FF&/J/36#'M$I;=FV",J +MO37#'E'IK1GVB$IOS;!'5'IKACVBTELS[!&5WIIACZCTU@Q[1*6W9MBCW,Q, +ME4)^4J60GU0IY"=53O*3*B?Y2963_*3*27Y2Y20_J7*2GU0YR4^JG.0G5:+2 +M:WH,=+Y7&='FK1GVB#9OS;!'M'EKACVBTELS[!&5WIIACZCTU@Q[1*6W9M@C +M*KTUPQY1Z:T9]HA*;\VP1U1Z:X8]HM);,^P1E=Z:88^H]-8,>]3.S%2IY"=5 +M*OE)E4I^4J62GU2IY"=5*OE)E4I^4J61GU1IY"=5&OE)E49^4B4J/9MACVCS +MU@Q[1)NW9M@CVKPUPQ[1YJT9]HA*;\VP1U1Z:X8]HM);,^P1E=Z:88^H]-8, +M>T2EMV;8(RJ]-<,>4>FM&?:(2F_-L$=4>FN&/:+26S/LT0LS4Z63GU3IY"=5 +M.OE)E4Y^4J63GU3IY"=5.OE)E4Y^4J63GU3IY"=5.OE)E:CT;(8]HLU;,^P1 +M;=Z:88]H\]8,>T2;MV;8(RJ]-<,>4>FM&?:(2F_-L$=4>FN&/:+26S/L$97> +MFF&/J/36#'M$I;=FV",JO37#'E'IK1GVB$IOS;#']6-FJESD)U4N\I,J%_E) +ME8O\I,I%?E+E(C^I +MFF&/://6#'M$F[=FV",JO37#'E'IK1GVB$IOS;!'5'IKACVBTELS[!&5WIIA +MCZCTU@Q[1*6W9M@C*KTUPQY1Z:T9]HA*;\VPQ[R9F2J3_*3*)#^I,LE/JMSD +M)U5N\I,J-_E)E9O\I,I-?E+E)C^I\I,J;_#38Z!;K[5O96:GOHV9G?IV9G;J +M.YC9J>_%S$Y])S.=>C/3J0\RJ?*^S'3JQ\QN^W[,3)5O8V:J?#LS4^4[F)DJ +M7V%FJGSD)U4^\I,J'_E)E8_\I,I'?E+E(S^I\I&?5/G(3ZI\Y"=5/O*3*A_Y +MF2K7+_@=]ACH_+7V^NW,AF4'L\NRPFQ:=C*[+:O,'LL:L]>RSNRS;"`S5:[? +MQ6RS;#+3J3J +M7!OYF2K71GZFRK61GZER;>1GJEP;^9DJUT9^ILJUD9]4V8*?8=H"G;_67MO+ +M3*=^S.S4_#F9VZ%V9VZGXBDRI[96:G[HV9G;IW9J;* +M/I@9@_UB9JKLDYFILM_,3)6=_*3*3GY292<_J7*0GU0YR$^J'.0G50[RDRH' +M^4F5@_RDRD%^4N4@/ZER!#]#<@0Z?ZV]CHN9G7I,9CKU9J93'V8Z]66F4S]F +M=FKY,;-3RX9,JI2=F9U:#F9V:BG,3)5R,C-52F5F7$IC9JJ4SLQ4*>0G50KY +M295"?E*ED)]4*>0G50KY295"?E+E)#^IVSLQ.;0.95&D7,SNU368Z]69FJK2'F:G27F:F2ON8F2K]Q\SX=?*3*IW\ +MI$HG/ZG2R4^J=/*3*IW\I$HG/ZG2R4^J=/*3*IW\I$HG/ZG2@Y_."G0^P[[Z +MRTRG?LSLU/%C9J>.C9F=.G9F=NHXF-FIHS"S4\>)3*J,RLQ.'8V9G3HZ,U-E +M#&:FRKB8F2IC,C-5QLW,5!GD)U4&^4F507Y2Y2(_J7*1GU2YR$^J7.0G52[R +MDRH7^4F5B_RDRD5^4N4*?G;"%>A\AGU=%S-];C+3J30G52;Y295)?E)EDI]4F>0G56[RDRHW^4F5F_RDRDU^4N4.?O9S[T#G,^SK +MKLSLU+LQT]]V9G9JJO1\AGVE2L]GV%>J]'R&?:5*SV?85ZKT?(9]I4K/9]A7 +MJO1\AGVE2L]GV%>J]'R&?:5*SV?85ZKT?(9]I4K/9]C70WY2Y2$_J?*0GU1Y +MR$^J/.0G51[RDRH/^4F5A_RDRD-^4N4A/ZGRD)]4296>_;34YOD,^TIMGL^P +MK]3F^0S[2FV>S["O5.GY#/M*E9[/L*]4Z?D,^TJ5GL^PKU3I^0S[2I6>S["O +M5.GY#/M*E9[/L*]4Z?D,^TJ5GL^PKU3I^0S[2I6>S["OC_RDRD=^4N4C/ZGR +MD9]4^Z9*SV?8,U5Z/L.>J=+S&?9,E9[/L&>J]'R&/5.E +MYS/LF2H]GV'/5.GY#'NF2L]GV#-5>C[#GJG2\QGV_)&?J3)_Y&>JS!_YF2IS +M(S]396[D9ZK,C?Q,E;F1GZDR-_(S5>9&?J;*W,C/5)D;^9DJ,U5Z^B<#G<^P +M9VKS?(8]4YOG,^R9VCR?8<]4Z?D,>Z9*SV?8,U5Z/L.>J=+S&?9,E9[/L&>J +M]'R&/5.EYS/LF2H]GV'/5.GY#'NF2L]GV#-5>C[#GJG2\QGVW,E/JNSD)U5V +M\I,J._E)E9W\I,I.?E)E)S^IZ9*SV?8,U5Z/L.>J=+S&?9,E9[/L&>J]'R&/5.EYS/L6C[#GJG2\QGV3)6>S[!GJO1\ACU3I>T:EMV;8,RJ]-<.>4>FM&?9L-S-3I9&?5&GD)U4:^4F53GY2I9.?5.GD +M)U4Z^4F53GY2I9.?5.GD)U4Z^4F5J/2:/A+H?*\RH\U;,^P9;=Z:8<]H\]8, +M>T:EMV;8,RJ]-<.>4>FM&?:,2F_-L&=4>FN&/:/26S/L&97>FF'/J/36#'M& +MI;=FV#,JO37#GE'IK1GV')V9J3+(3ZH,\I,J@_RDRB`_J3+(3ZH,\I,J@_RD +MRD5^4N4B/ZERD9]4NFF'/://6#'M&I;=F +MV#,JO37#GE'IK1GVC$IOS;!G5'IKACVCTELS[!F5WIIASZCTU@Q[1J6W9M@S +M*KTUPYY1Z:T9]IR%F:DRR4^J3/*3*I/\I,HD/ZDRR4^J3/*3*I/\I,HD/ZDR +MR4^J3/*3*I/\I$I4>C;#GM'FK1GVC#9OS;!GM'EKACVCS5LS[!F5WIIASZCT +MU@Q[1J6W9M@S*KTUPYY1Z:T9]HQ*;\VP9U1Z:X8]H]);,^P9E=Z:8<^H]-8, +M>T:EMV;8\_DQ,U4>\I,J#_E)E8?\I,I#?E+E(3^I\I"?5'G(3ZH\Y"=5'O*3 +M*@_Y296'_*1*5'HVPY[1YJT9]HPV;\VP9[1Y:X8]H\U;,^P9E=Z:8<^H]-8, +M>T:EMV;8,RJ]-<.>4>FM&?:,2F_-L&=4>FN&/:/26S/L&97>FF'/J/36#'M& +MI;=FV/.]F9DJ+_E)E9?\I,I+?E+E(S^I\I&?5/G(3ZI\Y"=5/O*3*A_Y296/ +M_*3*1WY2)2H]FV'/://6#'M&F[=FV#/:O#7#GM'FK1GVC$IOS;!G5'IKACVC +MTELS[#LJO37#OJ/26S/L.RJ]-<.^H]);,^P[*KTUP[ZCTELS[#LJO37#OJ/2 +M6S/L^]>9-R,]4 +MN3?R,U7NC?Q,E7LC/U/E_JOT[#^:JSYRQN/_JMQ_;5YD=NI?FQ>9G?K7YD5F +MI_Y5>I'9J7^57F1VZE^E%YE.O9GIU`>95/FK]"+3'1\S._6OTHO,5/FK]"(S +M5?XJOAS,[-2C,+-3CY.9G7I49G;J +MT9C9J4=G9J<>`YE4.2YF=NHQF>FVFYFI>)S*IV5FI_;&S$[MG9F=V@E9F= +M>C5F=NK5F=FIUT`F5:Z+F9UZ368Z]69FJEP/,U/E>IF9*M?'S%C-'S-399*? +M5)GD)U4F^4F527Y299*?5)GD)U4F^4F527Y299*?5)GD)U4F^4F5&?QT:J!K +MKLI\F>G4CYF=>O^8V:GWQLQ.O7=F=NI],+-3[\+,3KU/9%+EKLSLU+LQLU/O +MSLQ4N0\I,J#_E)E8?\I,I# +M?E+E(3^I\I"?5'G(3ZH\Y"=5GN!G9SV!SF?8]W,QLU.?R4RGWLQTZL-,I[[, +M=.K'S$Y]?\SLU'=#)E7>G9F=^A[,[-2W,#-5WI.9J?)69J;*VYB9*F]G9JJ\ +MY"=57O*3*B_Y2967_*3*2WY2Y24_J?*2GU3YR$^J?.0G53[RDRH?^4F5+_C9 +M"5^@\QGV_55F^EQC9J=^G9F=^@UF=NIW,;-3O\E,I][,=.J#3*I\+S.=^C'[ +M=^KS^S$[+-N8%='?J;*\R,_4^7YD9^I\OS(SU1YMN!G/W<+=#[#?K:=F9VZ +M'?%NA\AOVD-L]GV$]J\WR& +M_:0VSV?83ZKT?(;]I$K/9]A/JO1\AOVD2L]GV$^J]'R&_:1*SV?83ZKT?(;] +MI$K/9]A/JO1\AOVD2L]GV$^J]'R&_:1*SV?8ST%^4N4@/ZERD)]4*>0G50KY +M295"?E*ED)]4*>0G50KY295"?E*ED)]4296>?D:@\QGVD]H\GV$_JS["?5.GY#/M)E9[/L)]4Z?D,^TF5GL^PGU3I^0S[296>S["?5.GY +M#/M)E9[/L)]4Z?D,^TF5GL^PGU3I^0S[&>0G50;Y295!?E)ED)]4&>0G50;Y +M295!?E)ED)]4&>0G50;Y295!?E(E57KZJD#G,^PGM7D^PWY2F^U>3[# +M?E*EYS/L)U5Z/L-^4J7G,^PG57H^PWY2I>C[#?E*EYS/L)U5Z/L-^ +M4J7G,^PG57H^PWY2I>C[#?B[RDRH7^4F5B_RDRB0_J3+)3ZI,\I,J +MD_RDRB0_J3+)3ZI,\I,JD_RD2E1Z37\VXM%5B39OS;"?://6#/N)-F_-L)^H +M]-8,^XE*;\VPGZCTU@S[B4IOS;"?J/36#/N)2F_-L)^H]-8,^XE*;\VPGZCT +MU@S[B4IOS;"?J/36#/NY.S-3Y28_J7*3GU2YR4^JW.0G56[RDRHW^4F5F_RD +MRD-^4N4A/ZGRD)]4>FF$_4>FM&?83E=Z:83]1Z:T9]A.5WIIA/U'IK1GV$Y7>FF$_4>FM&?83 +ME=Z:83]1Z:T9]OO[,6N6D9^I\O[(SU1Y?^1GJKP_\C-5WA_YF2KOC_Q,E?=' +M?J;*^R,_4^7]D9^I\O[(SU1Y?^1GJKQ1Z=D,^XTV;\VPWVCSU@S[C39OS;#? +M://6#/N-2F_-L-^H]-8,^XU*;\VPWZCTU@S[C4IOS;#?J/36#/N-2F_-L-^H +M]-8,^XU*;\VPWZCTU@S[C4IOS;#?[69FJFSD)U4V\I,J&_E)E9W\I,I.?E)E +M)S^ILI.?5-G)3ZKLY"=5=O*3*COY296H]&R&_4:;MV;8;[1Y:X;]1INW9MAO +MM'EKAOU&I;=FV&]4>FN&_4:EMV;8;U1Z:X;]1J6W9MAO5'IKAOU&I;=FV&]4 +M>FN&_4:EMV;8;U1Z:X;]1J6W9MCOT9F9*@?Y296#_*3*07Y2Y2`_J7*0GU0Y +MR$^J'.0G50KY295"?E*ED)]4*>0G5:+2LQGV&VW>FF&_T>:M&?8;;=Z:8;_1 +MYJT9]AN5WIIAOU'IK1GV&Y7>FF&_4>FM&?8;E=Z:8;]1Z:T9]AN5WIIAOU'I +MK1GV&Y7>FF&_4>FM&?8;E=Z:8;]G86:JG.0G54[RDRHG^4F5D_RDRDE^4N4D +M/ZERDI]4.9'9J7]M +M7F1VZE^;%YF=^E?I16:G_E5ZD=FI?Y5>9';J7Z47F9WZ5^FM3*K\57J1Z8[) +M3*?>S$R5OTHO,E/EK]*+S%3YJ_0B,U7:CYFITLA/JC3RDRJ-_*1*(S^ITLA/ +MJC3RDRJ-_*1*(S^ITLA/JC3RDRJ-_*1*"WYZ#'3^6ONVEYE._9C9J?W'S$[M +M&S,[M>_,[-1^,+-3>V%FI_83F53IE9F=VALSNZUW9J9*'\Q,E7XQ,U7Z9&:J +M])N9J=+)3ZIT\I,JG?RDRB`_J3+(3ZH,\I,J@_RDRB`_J3+(3ZH,\I,J@_RD +MR@A^AFX$NO5:.RYF=NJ8S'3JS4RG/LQTZLM,IW[,[-3KQ\Q.O39D4N7:F=FI +MU\',3KT*,[OW.IF9*E=E9JI0G52;Y2949_`S3#'3KM7969G;J;,SLU-F9V:ES +M,+-3Y\7,3IV3F4Z]F>G4!YE4F2\SG?HQLU/O'S-3Y=Z8&8-[9V:JW`]B9JI\ +MDYFQ^FYFILI'?E+E(S^I\I&?J?+]R,]4^7[D9ZI\/_(S5;X?^9DJWX_\3)7O +M1WZFROG4AYE.?9GIU(^9 +MG;K]F-FIVX;,5/FVG9F=NAW,[-2M,#LL.YD5RRJST[+&K%K6F1F_C?Q,E6\C +M/U/EV\A/JFSD)U4V\I,J&_E)E8W\I,I.?E)E)S^ILI.?5-G)3ZKLP<_.V@-= +M=U7VRLQ.W1LS.W7OS.S4?3"S4_>+F9VZ3V8Z]6:F4Q]D4F5_F>G4CYF=>OR8 +MF2K'QLQ4.79FILIQ,#-5CL+,5#G(3ZHS["_5.GY#/M+E9[/L+]4 +MZ?D,^TN5GL^POU3I^0S[2Y6>S["_5.GY#/M+E9[/L+]4Z?D,^^OD)U4Z^4F5 +M3GY2I9.?5.GD)U4Z^4F53GY299"?5!GD)U4&^4F507Y2)55Z]C-2F^3[#_E*;YS/L+[5Y/L/^4J7G,^PO57H^P_Y2I>C[#_E*EYS/L+U5Z +M/L/^4J7G,^PO57H^P_Y2I>C[#_E*EYS/L+U5Z/L/^+O*3*A?Y296+ +M_*3*17Y2Y2(_J7*1GU2YR$^J7.0G52[RDRH7^4F5B_RD2JKT[)],;9[/L+_4 +MYOD,^TMMGL^PO]3F^0S[2Y6>S["_5.GY#/M+E9[/L+]4Z?D,^TN5GL^POU3I +M^0S[2Y6>S["_5.GY#/M+E9[/L+]4Z?D,^TN5GL^POU3I^0S[N\E/JMSD)U5N +M\I,J-_E)E9O\I,I-?E+E)C^I\I,J+_E)E9?\I,I+?E+E)3^I\I*?5'G)3ZJ\Y"=54J6GKPIT/L/^4IOG +M,^POM7D^P_Y2F^C[#_E*EYS/L+U5Z/L/^4J7G,^PO57H^P_Y2I>C[#_E*EYS/L+U5Z/L/^4J7G,^PO57H^P_Y2I>3[#_I<5 +M9G9J5'H^P_Z7569V:E1Z/L/^EW5F=FI4>C[#_I==S'3'9*93;V:F2E1Z/L/^ +ME[W,3)6H]'R&??^.'S-3Y2`_J7*0GU0YR$^J'.0G50[RDRH'^4F5@_RDRD%^ +M4N4@/ZERD)]4.3[#_I=MS.S4J/1\ +MAOTO.YC9J5'I^0S[7W8BDRI1Z?D,^U_6F-EM4>GY#/M?-IB9*E'I^0S[7S:9 +MF2KE9F:J%/*3*H7\I$HA/ZERDI]4.,W31YOD,^U]V,;-3H\WS&?:_[&:F4Q]F.O5EIE,_9G9J5'H^P_Z7 +M;GY#/M?UIB9*K4S,U4J^4F52GY2 +MI9*?5*GD)U4J^4F52GY2I9*?5&GD)U4:^4F51GY2I9&?5(E*KQFF:/-\AOTO +MJ\SLU&CS?(;]+^O,[-2H]'R&_2^[F-FI4>GY#/M?=C/3J0\RJ1*5GL^P_V4? +M,SLU*CV?8?_+-F;&("H]GV'_RPYFIDHOS$R53GY2I9.?5.GD)U4Z^4F53GY2 +MI9.?5.GD)U4Z^4F53GY2I9.?5.GD)U6BTFN&)-H\GV'_RW9F=FJT>3[#_I<5 +M9G9J5'H^P_Z7569V:E1Z/L/^EW5F=FI4>C[#_I==S.S4J/1\AOTONYF9*E'I +M^0S[7_8R$Y>/F:ER_9B9*A?Y296+_*3*17Y2Y2(_J7*1GU2YR$^J7.0G52[R +MDRH7^4F5B_RDRD5^4N6OTK/_$JKZR!./KLI?FQ>93OV8V:E_;5YD=NI?I1>9 +MG?I7Z45FI_Y5>I'9J7^57F1VZE^EMS*I\E?I169W_%5ZD=FI?Y5>9*;*7Z47 +MF:GR5^E%9JK\57J1F2KS9F:J3/*3*I/\I,HD/ZERDY]4NRWKS#[+!C)39?M=S#;+)C.=>C,[+'N8B<'+[+3L8_9/E6W[,6N6D9^I +MLFWD9ZIL&_F9*MM&?J;*MI&?J;)MY&>J;!OYF2K;1GZFRK:1GZFR;>1GJFP; +M^4F5+?@9DBW0^6OMMKW,=.K'S$[=?\SLU'UC9J?N.S,[=3^8V:E[86:G[BG4CYF=6G[,[-2R(9,J96=FIY:#F9U:"C-3I9S,3)52F9DJ +MI3$S5J4S,U4*^4F50GY2I9"?5"GD)U4*^4F50GY2I9"?5#G)3ZJ.@YF=.@HS.W60G52[RDRH7 +M^4F5B_RDRD5^4N4B/ZERD9]4N?&^@N5^6ZF-FIUV2FO[V9 +MZ=2'F4Y]F>G4CYF=FBJ]RU5)E=[EJJ1*[W)54J5WN2JITKMI>KDBJ]RU69Y"=5)OE)E4E^4F62GU29Y"=5)OE)E4E^4N4F/ZERDY]4 +MNM-5297>=%52I3== +ME53I35\I,J#_E)E8?\I,I#?E+E(3^I\I"?5'G(3ZJD2L]^ +M1FKS;E[:JD2N]V55*E=[LJJ=*[7954Z=VN2JKT;E[:JD2N]V55*E=[LJJ=*[7954Z=VNRD=^4N4C/ZGRD9]4 +M^X*JG->UR5 +MU.;]/\.^]]3F_3_#_I=MS&[+=F:/90>SU[+"[+/L1&:J[*G2^W^&_2]KS';+ +M.K/#LL&L6'8Q.RV;S*IE-[-F&?F9*ON/_$R5_4=^ILJ^D9^ILF_D9ZKL&_F9 +M*OM&?J;*OI&?J;)OY&>J[!OYF2K[1GZFRIXJ/7U]H/M_AOTONYC9J:G->UV5 +MU.:]KDJJ]%Y7)55ZKZN2*KW754F5WNNJI$KO=552I?>Z*JG2>UV55.F]KDJJ +M]%Y7)55ZKZN2*KW754F5WNNJ[.0G57;RDRH[^4F5G?RDRDY^4F4G/ZFRDY]4 +M.>JI#;OY*JG-^UR55.E]KDJJ +M]#Y7)55ZGZN2*KW/54F5WN>JI$KOY*JG2^UR55.E]KDJJ]#Y7)55Z +MGZN2*KW/52GD)U4*^4F50GY2I9"?5"GD)U4*^4F50GY2I9"?5"GD)U4*^4F5 +M0GY2)2H]FV'OT>:M&?8>;=Z:8>_1YJT9]AYMWIIA[U'IK1GV'I7>FF'O4>FM +M&?8>E=Z:8>]1Z:T9]AZ5WIIA[U'IK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9 +M]EY_S$R52GY2I9*?5*GD)U4J^4F52GY2I9*?5*GD)U4J^4F52GY2I9*?5*GD +M)U6BTFOZ2*#SO;=Z:8>_1YJT9]AYMWIIA[U'IK1GV'I7>FF'O4>FM&?8> +ME=Z:8>]1Z:T9]AZ5WIIA[U'IK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]MYN +M9J9*(S^ITLA/JC3RDRJ=_*1*)S^ITLE/JG3RDRJ=_*1*)S^ITLE/JG3RDRI1 +MZ34]!CK?J^S1YJT9]AYMWIIA[]'FK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9 +M]AZ5WIIA[U'IK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]AZ5WIIA[Z,S,U4& +M^4F507Y299"?5!GD)U4&^4F507Y299"?5+G(3ZI;MV;8>[1Y:X:]1YNW9MA[M'EKAKU'I;=FV'M4>FN&O4>EMV;8>U1Z:X:] +M1Z6W9MA[5'IKAKU'I;=FV'M4>FN&O4>EMV;8>U1Z:X:]1Z6W9MC[+,Q,E4E^ +M4F62GU29Y"=5)OE)E4E^4F62GU29Y"=5)OE)E4E^4F62GU29Y"=5HM*S&?8> +M;=Z:8>_1YJT9]AYMWIIA[]'FK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]AZ5 +MWIIA[U'IK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]AZ5WIIA[\^/F:GRD)]4 +M>\I,J#_E)E8?\I,I#?E+E(3^I\I"?5'G(3ZH\Y"=5HM*S&?8> +M;=Z:8>_1YJT9]AYMWIIA[]'FK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]AZ5 +MWIIA[U'IK1GV'I7>FF'O4>FM&?8>E=Z:8>]1Z:T9]AZ5WIIA[^_-S%1YR4^J +MO.0G55[RDRH?^4F5C_RDRD=^4N4C/ZGRD9]4^]?Q5 +M'QGQZ*K\M7F1V:E_;5YD.O5FIE,?9CKU9:93/V;_3CW^*KW(/LLV9*;*\5?I +M1;99=C#;+2O,#LM.9L6RRNRTK#&KEG5FS3+R,U6.'_F9*L>/_$R5XT=^ILKQ +M(S]3Y?B1GZER_,C/5#DV\C-5CHW\3)5C(S]3Y=C(SU0YMN"GQT#GK[7'5IG9 +MJ5MC9J=NG9F=N@UF=NIV,;-3M\E,I][,=.J#3*IL+S.=^C&SV_8?,U-EWYB9 +M*OO.S%39#V:FREZ8F2H[^4F5G?RDRDY^4F4G/ZFRDY]4VG4FYE.?9CIU)>93OV8 +MV:GMQ\Q.;1LRJ=)V9G9J.YC9J:TP,U7:RA5F=NIU,K-3K\K,3KT: +M,SOUZLSLU&L@DRK7QS$R5^V9FJMSD)U5N\I,J-_E)E8?\I,I#?E+E(3^I\I"? +M5'G(3ZH\Y"=5'O*3*@_Y294G^-D)3Z`;KLIS,=/G)C.=>C/3J0\SG?HRTZD? +M,SOU_3&S4]\-F51Y=V9VZGLPLU/?PLQ4>4]FILI;F9DJ;V-FJKR=F:GRDI]4 +M>\I,J+_E)E9?\I,I+?E+E(S^I\I&?5/G(3ZI\Y"=5ON!G/_<+ +M=)>K\E5F=NK7F.EO.S,[-55ZEZN2*KW+54F5WN6JI$KOY*JG2NUR5 +M5.E=_ZM24J5W_:]*297>];\J)55ZU_^JE%3I7?^K4E*E=_VO2OF1GZE2?N1G +MJI0?^9DJY4=^IDKYD9^I4G[D9ZJ4'_F9*N5'?J9*^9&?J5)^Y&>JE!_YF2HE +M57KVTU*;YS/LDMH\GV&7U.;Y#+ND-L]GV"55>C[#+JG2\QEV296>S[!+JO1\ +MAEU2I>C[#+JG2\QEV.C[#+JG2\QEV296>S[#+27Y2Y20_ +MJ7*2GU0YR4^JG.0G54[RDRHG^4F52GY2I9*?5*GD)U4J^4F55.GIZP.=S[!+ +M:O-\AEU2F^O95JC[#+JG2\QEV296>S[!+ +MJO1\AEU2I>H]-8,NUPW,U/E(C^IY42;=Z:89=H\]8,NT2; +MMV;8)2J]-<,N4>FM&7:)2F_-L$M4>FN&7:+26S/L$I7>FF&7J/36#+M$I;=F +MV"4JO37#+E'IK1EVB4IOS;#+W9F9*C?Y296;_*3*37Y2Y28_J7*3GU2YR4^J +MW.0G51[RDRH/^4F5A_RDRD-^4B4JO:;'0.=[E1)MWIIAEVCSU@R[1)NW9M@E +M*KTUPRY1Z:T9=HE*;\VP2U1Z:X9=HM);,^P2E=Z:89>H]-8,NT2EMV;8)2J] +M-<,N4>FM&7:)2F_-L,M;F)DJ+_E)E9?\I,I+?E+E)3^I\I*?5'G)3ZJ\Y"=5 +M7O*3*B_Y2967_*3*2WY2)2H]FV&7://6#+M$F[=FV"7:O#7#+M'FK1EVB4IO +MS;!+5'IKAEVBTELS[!*5WIIAEZCTU@R[1*6W9M@E*KTUPRY1Z:T9=HE*;\VP +M2U1Z:X9=HM);,^SS]V/6+",_4^7\D9^IFF&?4>FM&?89E=Z:89]1Z:T9]AF5WIIAGU'IK1GV&97>FF&? +M4>FM&?89E=Z:89]1Z:T9]AF5WIIAG]O-S%39R$^J;.0G53;RDRH[^4F5G?RD +MRDY^4F4G/ZFRDY]4VG9#/N,-F_-L,]H\]8,^XPV;\VP +MSVCSU@S[C$IOS;#/J/36#/N,2F_-L,^H]-8,^XQ*;\VPSZCTU@S[C$IOS;#/ +MJ/36#/N,2F_-L,^H]-8,^XQ*;\VPSZ,S,U4.\I,J!_E)E8/\I,I!?E+E(#^I +MI&9 +M*G^57F2FRE^E%YFI\E?I16:JG(69J7*2GU0YR4^JG.0G54[RDRHG^4F5D_RD +MRDE^4N4D/ZERDI]4.C"S4VMA9J?6DYF= +M6BLS.[4V9G9J[J/_$R5 +M^B,_4Z7^R,]4J3_R,U7JC_Q,E?HC/U.E_LC/5*D_\C-5ZB_X=7L,=#[#KK^+ +MV;!L,M.I-S.=^C#3J2\SG?HQLU.W'S,[==N0F2IUVYG9J=O!S$[="K/#LI-9 +ML:PR.RUKS*IEG5FSC/Q,E;J1GZE2-_*3*AOY296-_*3*1GY292,_J;*3GU39 +MR4^J[.0G57;RDRI[\+,3]D#G,^RZ5V;Z7&-FI^Z=F9VZ#V9VZGXQLU/WR4RG +MWLQTZH-,JNPO,YWZ,;-3CQ\S4^78F)DJQ\[,5#D.9J;*49B9*@?Y296#_*3* +M07Y2Y2`_J7*0GU0YR$^J'.0G50[RDRH'^4F5@_RDRD%^4J4$/_NY)=!=KDK9 +MF=FIY6"FORW,[-14Z5VN2JKT+EY:JD2N]R55*E=[DJ +MJ=*[7)54Z5VN2JKT+E=%52FS==E=3F35M-5297> +M=%52I3==E53I35>EDI]4J>0G52KY295&?E*ED9]4:>0G51KY295&?E*ED9]4 +M:>0G51KY2954Z>EG!#J?8=?4YOD,NZ8VSV?8-;5Y/L.NJ=+S&79-E9[/L&NJ +M]'R&75.EYS/LFBH]GV'75.GY#+NF2L]GV#55>C[#KJG2\QEV396>S[!KJO1\ +MAEU3I>C[# +MKJG2\QEV396>S[!KJO1\AEU3I>S[!K:O-\AEU3F^3[#KJG2\QEV396>S[!KJO1\AEU3I>\I,J+_E)E9?\I,I+?E+E)3^I\I*?5'G)3ZJ\Y"=5HM)K +M^K,1CZY*M'EKAEVCS5LS[!IMWIIAUZCTU@R[1J6W9M@U*KTUPZY1Z:T9=HU* +M;\VP:U1Z:X9=H]);,^P:E=Z:8=>H]-8,NT:EMV;8-2J]-<.N7V=FJGSD)U4^ +M\I,J'_E)E8_\I,I'?E+E(S^I\I&?J=)^Y&>JM!_YF2KM1WZF2ON1GZG2HM)K +M^DB@\[U*BS9OS;!;M'EKAMVBS5LS[!:5WIIAMZCTU@R[1:6W9M@M*KTUPVY1 +MZ:T9=HM*;\VP6U1Z:X;=HM);,^P6E=Z:8;>H]-8,NT6EMV;8;2O,FF7D9ZJT +MC?Q,E;:1GZG2-O(S5=I&?J9*V\C/5&D;^4F5C?RDRD9^4F4C/ZFRD9]4B4JO +MZ3'0^5ZE19NW9M@MVKPUPV[1YJT9=HM*;\VP6U1Z:X;=HM);,^P6E=Z:8;>H +M]-8,NT6EMV;8+2J]-<-N4>FM&7:+2F_-L%M4>FN&W:+26S/L=OR8F2H'^4F5 +M@_RDRD%^4N4@/ZERD)]4.:M&7:+2F_-L%M4>FN&W:+26S/L%I7>FF&WJ/36 +M#+M%I;=FV"TJO37#;E'IK1EVBTIOS;!;5'IKAMVBTELS[%9N9J9*(3^I4LA/ +MJA3RDRHG^4F5D_RDRDE^4N4D/ZERDI]4.G9#+M%F[=F +MV"W:O#7#;M'FK1EVBS9OS;!;5'IKAMVBTELS[!:5WIIAMZCTU@R[1:6W9M@M +M*KTUPVY1Z:T9=HM*;\VP6U1Z:X;=HM);,^P6E=Z:8;?:F9DJE?RD2B4_J5+) +M3ZI4\I,JE?RD2B4_J5+)3ZHT\I,JC?RD2B,_J=+(3ZI$I6H]-8, +MNT6EMV;8+2J]-<-N4>FM&7:+2F_-L%M4>FN&W7IA9JIT\I,JG?RD2B<_J=+) +M3ZIT\I,JG?RD2B<_J=+)3ZIT\I,JG?RD2B<_J?)7Z5DC9S/L]M?F_3VZ*G]M +M7F1VZE^;%YF=^M?F16:G_E5ZD=FI?Y5>9';J7Z47F9WZ5^E%9J?^57HKDRI_ +ME5YDNF,RTZDW,U/EK]*+S%3YJ_0B,U7^*KW(3)7KQ\Q4N;-S%29Y"=5)OE)E4E^4N4F/ZERDY]4N2HS4^5IS$R5IS,S51[RDRH/^4F5A_RD +MRD-^4N4A/ZGRD)]4>\I,J+_E)E9?\I,H;_`S3&^C6:^U;F=FI +M;V-FI[Z=F9WZ#F9VZGLQLU/?R4RGWLQTZH-,JKPO,YWZ,;-3OQ\S4^7;F!F# +M;V=FJGP',U/E*\Q,E8_\I,I'?E+E(S^I\I&?5/G(3ZI\Y"=5/O*3*A_Y296/ +M_*3*1WY2Y2,_4Z7_@M]ICX'.7VO[;VJ](W\3)6^D9^ITC?R,U7Z1GZF2M_(SU3I&_F9*GTC/U.E;^0G5;;@I_,# +MG<^P^_8RTZD?,SMU_S&S4_>-F9VZ[\SLU/U@9J?NA9F=NI_(I,I>F=FI>V-F +MI^Z=F:FR#V:FRGXQ,U7VRS'3JPTRG +MOLQTZL?,3BT_9G9JV9!)E;(SLU/+P=@9J>>%S,[]9S,=.K-3*<^R*3*^3+3J1\S +M.[7^F)DJ=6-FJM2=F:E2#V:F2BW,3)5*?E*EDI]4J>0G52KY295*?E*EDI]4 +MJ>0G52KY295*?E*EDI]4J>0G55KPLQ-:H/,9=F\[,WWN8&:GML+,3FTG,SNU +M569V:FO,[-36F=FI;2"3*NUB9J>VR4RGWLQ,E?8P,U7:R\Q4:1\S4Z7_F)DJ +MG?RD2B<_J=+)3ZIT\I,JG?RD2B<_J=+)3ZIT\I,JG?RD2B<_J=+)3ZKTX*>? +M&^A\AMW[RTRG?LSL;U.;YS/LGBH]GV'W5.GY#+NG2L]GV#U5>C[#[JG2\QEV +M3Y6>S[![JO1\AMU3I>=-526W>=%52FS==E53I35M-5297>=%52I3==E4E^4F62GU29Y"=5)OE)E4E^4F62 +MGU29Y"=5;O*3*C?Y296;_*3*37Y2)55Z]C-2FW>[*JG-NUV5U.;=KDIJ\VY7 +M)55ZMZN2*KW;54F5WNVJI$KO=E52I7>[*JG2NUV55.G=KDJJ]&Y7)55ZMZN2 +M*KW;54F5WNVJI$KO=E4>\I,J#_E)E8?\I,I#?E+E(3^I\I"?5'G(3ZH\Y"=5 +M'O*3*@_Y296'_*1*JO3LGTQMGL^P>VKS?(;=4YOG,^R>VCR?8?=4Z?D,NZ=* +MSV?8/55Z/L/NJ=+S&79/E9[/L'NJ]'R&W5.EYS/LGBH]GV'W5.GY#+NG2L]G +MV#U5>C[#[JG2\QEV_\A/JGSD)U4^\I,J'_E)E8_\I,I'?E+E(S^I\I&?5/G( +M3ZI\Y"=5/O*3*JG2T]<'.I]A]]3F^0R[IS;/9]@CM7D^PQZITO,9]DB5GL^P +M1ZKT?(8]4J7G,^R1*CV?88]4Z?D,>Z1*SV?8(U5Z/L,>J=+S&?9(E9[/L$>J +M]'R&/5*EYS/L\2,_4V7\R,]4&3_R,U7&1GZFRMC(SU09&_F9*F,C/U-E;.1G +MJHR-_$R5L9&?J3(V\C-51JKT]%6!SF?8([5Y/L,>JJ]'R& +M/5*EYS/LD2H]GV&/5.GY#'ND2L]GV"-5>C[#'JG2\QGV2)6>S[!'JO1\ACU2 +MI>T>:M&?:(-F_-L$=4>FN&/:+2 +M6S/L$97>FF&/J/36#'M$I;=FV",JO37#'E'IK1GVB$IOS;!'5'IKACVBTELS +M[!&5WIIACU*8F2J%_*1*(3^I4LA/JA3RDRJ%_*1*(3^I4LA/JA3RDRJ%_*1* +M(3^I4LA/JD2E9S/L$6W>FF&/://6#'M$F[=FV"/:O#7#'E'IK1GVB$IOS;!' +M5'IKACVBTELS[!&5WIIACZCTU@Q[1*6W9M@C*KTUPQY1Z:T9]HA*;\VP1U1Z +M:X8]ZH^9J5+)3ZI4\I,JE?RD2B4_J5+)3ZI4\I,JE?RD2B4_J5+)3ZI4\I,J +ME?RD2E1Z38^!SOT>:M&?:(-F_-L$=4>FN&/:+26S/L$97>FF&/ +MJ/36#'M$I;=FV",JO37#'E'IK1GVB$IOS;!'5'IKACVBTELS[!&5WIIACW8S +M,U4:^4F51GY2I9&?5.GD)U4Z^4F53GY2I9.?5.GD)U4Z^4F53GY2I9.?5(E* +MSV;8(]J\-<,>T>:M&?:(-F_-L$>T>6N&/:+26S/L$97>FF&/J/36#'M$I;=F +MV",JO37#'E'IK1GVB$IOS;!'5'IKACVBTELS[!&5WIIACZCTU@Q[C,[,5!GD +M)U4&^4F507Y299"?5!GD)U4&^4F507Y2Y2(_J7*1GU2YR$^J7.0G5:+2LQGV +MB#9OS;!'M'EKACVBS5LS[/^H.I=LN7%D"<[O*MX2DB1(D*='Q(?[7]*#N0H? +MG^!0WBHIPF69"+JBJYZ9YHTU[&=&>F,-^YF1WEC#?F:D-]:PGQGIC37L9T9Z +M8PW[F9'>6,-^9J0WUK"?&>F-->QG1GIC#?N9D=Y8PWYFI#?6L)\47`.5Y/X) +ME>3^"97D_@F5Y/X)E>3^"97D_@F5Y/X)E>3^"97D_@F5Y/X)E>3^"949Z;&& +M_U.CC7Z0W-5K]%^E-#53^17I3`Y5_D=[40.5?I#Z?4*GNGU#YW#^A\KE_0N5S_X3*Y_X)E<_]$RJ?^R=4/O=/ +MJ'SNGU#YIG_ZX;1NC+7?ZQJM?LDUM9I=4ZO%-;5:75.KGVNMU??W<^U#VTP# +ME?>WN[:A':[M:,&U`^UT+:!=KIUHT;4+[78MHKE_H/+^W#]0>7_N'ZB\/_-UC5:/Y)I:S:Z!RE%#^"97@_@F5X/X)E>#^"97@_@F5X/X)E>#^"97@_@F5X/X)E3#] +MPY(PK>MC[1NJ:VKUP35:/4_3A,IYN4:K +M9W2-5L_;-5`Y']=`Y7Q=PYSW>EVCU2NYIE:S +M:VJUN*96JVMJ]7.-5N//-5J-FVE")>ZNT6H\7*/5&%P#E7BZ!BKQ<@U48G0- +MK^+M&JA$]T^H1/=/J$3W3ZA$]T^H1/=/J$3W3ZA$]T^HW.Z?4+G=/Z%RNW]" +MY7;_A,H]_:/5>UK7U[#?^W*-5N_H&JW>MVNT>C^NT>K]ND:K=W)-K6;7U&HQ +M3:C7>-5O/A +M&JWFX!JMYM,TH9(OUV@U1]=H-=^N@4I^7`.5_+H&*CFY!BHYNP8JV?T3*MG] +M$RK9_1,JQ?T3*L7]$RK%_1,JQ?T3*L7]$RK%_1,JQ?T3*L7]$RIE^J=RIW5] +M#?LMKVNT6I)K^F>S:VJUN*96JVMJ]7.-5I=(KZ]AOTNDU]>PWR72ZVO8[Q+I +M]37L=XGT^AKVNT1Z?0W[72*]OH;]+I%>7\-^ETBOKV&_U?T3*M7]$RK5_1,J +MU?T3*M7]$RK5_1,JU?T3*I_[)U0^]T^H?.Z?4/G7\-^ES2OKV&_2Z37U[#?)=+K:]CO$NGU->QWB?3Z&O:[1'I]#?M= +M(KV^AOTND5Y?PTY+I-?7L-,2Z?4U[+1$>GT-.RV17E_#3DNDU]>PT\_]`Y7T +M<_]`)?W_@^5M*1Y^3]4TI+FY?]024NDE_]#)2V17OX/E;1$ +M>OD_5-(2Z>7_4$E+I)?_0R4MD5[^#Y6T1'JYH[)$>KFCLD1ZN:.R1'JYH[)$ +M>KFCLD1ZN:.RNW]"97?_A,KN_@F5W?T3*KO[)U1V]T^H[.Z?4-G=/Z&RNW]" +M97?_A,KN_@F5)=+3;SFM*QV5)RTI'E]#3LMD5Y?PTY+I-?7L-,2Z?4U +M[+1$>GT-.RV17E_#3DNDU]>PTQ+I]37LM$1Z?0T[+9%>7\-.2Z37U[#3$NGU +M->RT1'I]#3N=[I]0.=T_H7*Z?T+E=/^$RNG^"973_1,JI_LG5"[W3ZA<[I]0 +MN=P_H7*Y?T)EB?3T2TWK^AIV6M*\OH:=EC2OKV&G)JQAIYGFC37L--.\L8:=9IHWUK#33//&&G::D=Y8 +MPTXSTAMKV&E&>F,-.\U(;ZQAIQGIC37L-".]L8:=9J0WUK#3C/3&&G::D=Y8 +MPTXSTAMKV&E&>F,-.ST_UT#E=P_ +MH?*X?T+E6,-. +M,](;:]AI1GIC#3O-2&^L8:<9Z8TU[#0CO;&&G6:D-]:PTXSTQAIVFI'>6,-. +M,](;:]AI1GIC#3O-2&^L8:Z?4$GNGU!)[I]0 +M2>Z?4$GNGU!)[I]02>Z?4$GNGU"9D5[4#Z=U?5\ES31OK&&GF>:-->PTT[RQ +MAIUFI#?6L-.,],8:=IJ1WEC#3C/2&VO8:49Z8PT[S4AOK&&G&>F-->PT([VQ +MAIUFI#?6L-.,],8:=IJ1WEC#3OEV#52R^R=4LOLG5++[)U2R^R=4LOLG5++[ +M)U2R^R=4BOLG5(K[)U2*^R=4BOLG5&:DQQIVFFG>6,-.,\T;:]AIIGEC#3O- +M-&^L8:<9Z8TU[#0CO;&&G6:D-]:PTXSTQAIVFI'>6,-.,](;:]AI1GIC#3O- +M2&^L8:<9Z8TU[#0CO;&&G6:D-]:P4PVN@4IU_X1*=?^$2G7_A$IU_X1*=?^$ +M2G7_A$IU_X1*=?^$2G7_A$IU_X1*=?^$RHST6,-.,\T;:]AIIGEC#3O--&^L +M8:>9YHTU[#0CO;&&G6:D-]:PTXSTQAIVFI'>6,-.,](;:]AI1GIC#3O-2&^L +M8:<9Z8TU[#0CO;&&G6:D-]:PTXSTQAIV_OU?^@4J>D1YKV'FF>6,- +M.\\T;ZQAYYGFC37L/-.\L8:=9Z0WUK#SC/3&&G:>D=Y8P\XSTAMKV'E&>F,- +M.\](;ZQAYQGIC37L/".]L8:=9Z0WUK#SC/3&&G:>D=Y8P\Y;=@U4-O=/J&SN +MGU#9W#^ALKM_0F5W_X3*[OX)E=W]$RJ[^R=4=O=/J.SNGU#9W3^A\B_2X]WY +MTD]YY@\[*O_2O*G1ZK\T;VIJ-;NF5HMK:K6ZIE8_UVCU7Z0W-5K]%^D-3:C\ +MB_2F1A__(KVIT>J_2&]JH/(OTIL:J/R+]*8&*O\BO:F!RG&[!BJ'^R=4#O=/ +MJ!SNGU`YW#^A#^"97@_@F5X/X)E>#^"94P_=,/IW5] +MK,WATKH^U^=I=H]7K<(U6K^`:K5ZG:[1Z +M7:[1ZA5=H]7K=HU6K\D?7:/6^70.5^W$-#^[7-5"YDVN@7?7:/4]7*/5-[@&*N_I&JB\EVOX\D;7 +M0.6]70.5U_T3*J_[)U1>]T^HO.Z?4'G=/Z'RNG]"Y77_A$IR_X1*Z?4,GNGU#)[I]0R>Z? +M4,GNGU#)[I]0R>Z?4,GNGU#)[I]0R>Z?4,GNGU`ITS]:+=.ZOH:=R^X:K9;# +M-5HMP35:+:=KM%HNUVBU1-=HM=RNT6IY3!,JY76-5DMR3:UFUT"E%-=`I537 +M0*5\KH%*_;F&?]7]$RK5_1,JU?T3*M7]$RK5_1,JU?T3*M7]$RK5_1,JU?T3 +M*M7]$RK5_1,J=?JGMJ9U?0T[U^J:6OUH77:/5[W8-5+['-5#Y7M=`Y4NN@*:6JVNJ=7/-5K=?J[1ZK:9!BIEVUVCU>UP +MC5:WX-J!=KH6T"[73K3HVH5VNQ;1W#]0*9O[!RIE<_^$RN;^"97-_1,JF_LG +M5#;W3ZCL[I]0V=T_H;*[?T)E=_^$RC[]H]Q]6M?7L,M^N4:K>W1-_^SM&JTN +MD5Y?PRY+I-?7L,L2Z?4U[+)$>GT-NRR17E_#+DNDU]>PRQ+I]37LLD1Z?0V[ +M+)%>7\,N2Z37U[#+$NGU->RR1'I]#;L<[I]0.=P_H7*X?T+E7\,N +M2YK7U[#+DN;U->RR1'I]#;LLD5Y?PRY+I-?7L,L2Z?4U[+)$>GT-NRR17E_# +M+DNDU]>PRQ+I]37LLD1Z?0V[+)%>7\,N2Z37U[#+$NGU->QRN7]"Y7+_A,KE +M_@F5Z/X)E>C^"97H_@F5Z/X)E>C^"97H_@F5Z/X)E>C^"94ETM-O.:TK'94E +MS2L=E27-*QV5)[:@LD5[MJ"R17NVH+)%>[:@LD5[MJ"R17NVH+)%>[:@LD5[MJ"R1 +M7NVH+)%>[:@LD5[MJ"R17NVH+)%>[:B\[I]0>=T_H?*Z?T+E=?^$RNO^"977 +M_1,JK_LG5%[W3ZB\[I]0>=T_H?*Z?T)EB?3XI98TKZ]AER7-ZVO894GS^AIV +M6=*\OH9=EDBOKV&7)=+K:]AEB?3Z&G99(KV^AEV62*^O89F,-N\Q(;ZQAEQGIC37L,B.]L89=9J0WUK#+C/3&&G:9 +MD=Y8PRXSTAMKV&5&>F,-N\Q(;ZQAEQGIC37L4K)KH%+O[*F6F>6,- +MN\PT;ZQAEYGFC37L,B.]L89=9J0WUK#+C/3&&G:9D=Y8PRXSTAMKV&5&>F,- +MN\Q(;ZQAEQGIC37L,B.]L89=9J0WUK#+C/3&&G;Y;M=`Y7/_A,KG_@F5S_T3 +M*I_[)U0^]T^H?.Z?4/G:-]:PZXSTQAIVG9'>6,.N,](;:]AU1GIC#;O.2&^L +M8=<9Z8TU[#HCO;&&76>D-]:PZXSTQAIVG9'>6,.N,](;:]AU"ZY%-/6,-N\Y(;ZQAUQGIC37L.B.]L89=9Z0W +MUK#KC/3&&G:=D=Y8PZXSTAMKV'5&>F,-N\Y(;ZQAUQGIC37L.B.]L89=CY]K +MH'*X?T+E:-]:PZTSSQAIVG6G>6,.N,\T;:]AU1GIC#;O.2&^L8=<9Z8TU +M[#HCO;&&76>D-]:PZXSTQAIVG9'>6,.N,](;:]AU1GIC#;O.2&^L8=<9Z8TU +M[!JR:Z`2W#^A$MP_H1+F-->PZ +M([VQAEUGI#?6L.N,],8:=IV1WEC#KC/2&VO8=49Z8PV[SDAOK&'7&>F-->PZ +M([VQAEVOVS50N=P_H7*Y?T+E"&Z]%/.^<..RK\T;VJT^B_-FQJM_DOSID:K_R*]J='J +MOTAO:K3Z+]*;FEK-KJG58II0^1?I34U]?*[1ZK](;VJ@\B_2FQJH_(OTI@8J +M_R*]J8'*'5P#E=O]$RJW^R=4;O=/J-SNGU"YW3^A=S#53>GVN@\KI_0N5U_X3* +MZ_X)E=?]$RJO^R=47O=/J+SNGU!YW3^A\KI_0N5U_X3*Z_X)E7?ZAW7OM&Z, +MM6]U3:U^KM%J^KE&JVESC5;3[AJMIL,U6DW!-5I-IVE")5VNT6J*KM%JNEVC +MW_2X!BKI=0U44G(-5%)V#522^R=4DOLG5)+[)U2R^R=4LOLG5++[)U2R^R=4 +MLOLG5++[)U2R^R=4LOLG5/+T#YORM&Z,M?EUC59SZ?4"GN +MGU`I[I]0*>Z?4"GNGU`I[I]0*>Z?4*GNGU"I[I]0J>Z?4*GNGU"ITS\LJ=.Z +M,=;6RS5:K=$U6JVW:[1:']=HM;ZNT6I-KJG5[)I:+:8)E5I=4ZN?:[3Z_5P# +ME6]S#52^W35\^0[70.4+KH'*Y_X)E<_]$RJ?^R=4/O=/J'SNGU#YW#^A\KE_ +M0N5S_X3*Y_X)E<_]$RJ?^PK^#^"97@_@F5X/X)E>#^"97@_@F5X/X)E>#^"973_1,JI_LG +M5$[W3ZB<[I]0.:=_M'!.Z_H:]G=>KNGG1==H];Q=H]7S<8U6S]P +MO[B[1JOQ<$W_;'"-5I=(KZ]A?TNDU]>POR72ZVO8WQ+I]37L;XGT^AKVMT1Z +M?0W[6R*]OH;]+9%>7\/^EDBOKV%_2Z37U["_)=+K:]C?$NGU->SO=O^$RNW^ +M"97;_1,JM_LG5&[W3ZC<[I]0N=T_H7*[?T+E=O^$RNW^"97;_1,J2Z2GTJ9U +M?0W[6]*\OH;]+6E>7\/^EC2OKV%_2Z37U["_)=+K:]C?$NGU->QOB?3Z&O:W +M1'I]#?M;(KV^AOTMD5Y?P_Z62*^O87]+I-?7L+\ETNMKV-\2Z?4U[&^)]/H: +M]O>X?T+E=T_H?*Z?T+E=?^$RNO^ +M"94ETE,9T[J^AOTM:5Y?P_Z6-*^O87]+FM?7L+\ETNMKV-\2Z?4U[&^)]/H: +M]K=$>GT-^ULBO;Z&_2V17E_#_I9(KZ]A?TNDU]>POR72ZVO8WQ+I]37L;XGT +M^AKVMT1Z?0W[2^Z?4$GNGU!)[I]02>Z?4$GNGU!)[I]02>Z?4,GNGU#)[I]0 +MR>Z?4,GNGU!9(CU^RR7-ZVO8WY+F]37L;TGS^AKVMZ1Y?0W[6R*]OH;]+9%> +M7\/^EDBOKV%_2Z37U["_)=+K:]C?$NGU->QOB?3Z&O:W1'I]#?M;(KV^AOTM +MD5Y?P_Z62*^O87]+I-?7L+_B_@F5XOX)E>+^"97B_@F5XOX)E>+^"97B_@F5 +MXOX)E>+^"97B_@F5XOX)E272XY=?TKS:45G2O-I16=*\VE%9TKS:45DBO=I1 +M62*]VE%9(KW:45DBO=I162*]VE%9(KW:45DBO=I162*]VE%9(KW:45DBO=I1 +M62*]VE%9(KW:4?GF7FM9]'94ES?LZ*DN:]_U#I?R6-._[ATK3-MUU[41+KEUHV;6(YOXU5)KF +M_C54FN;^)?S;W+^$?YO[E_!O<_\2_FWN7\*_S?U+^+>Y?QG_-OU#_VS!_^0Z5IKVNT.M.\OH;=M.R:6BVNJ=7JFEK]7*/5&>GU->RF;:8) +ME1GI]37LIAVNT>J,]/H:=M-.UT!E1GI]#;MIT350V6_70&5W_X3*[OX)E=W] +M$RJ[^R=4=O=/J.SNGU#9W3^ADU]>PFY9<4ZO9-;5:3!,J,]+K:]A-^URC +MU1GI]37LIFVN@;U->RF':[1ZDSS +M^AIVTT[7:'5&>GT-NVG1-5J=D5Y?PV[:8YI0F9%>7\-N6G)-O6770&5&>GT- +MNVG5-5"9D5Y?PRZ_Z^<:J%SNGU"YW#^AA'K9IK7U[";5EU3JY]KM#K3O+Z&W;3--5J= +MD5Y?PV[:X1JMSDBOKV$W[31-J,Q(KZ]A-RVZ1JLSTNMKV$U[7`.5&>GU->RF +M)==`)6;70"6Z?T(ENG]");I_0N5V_X3*[?X)E=O]$RJW^R=4;O=/J-SNGU"Y +MW3^AA&;9IK7U[";]KI&JS/-ZVO83 +M7\-NVF::4)F17E_#;MKA&JW.2*^O83?M=`T/9J37U[";%ET#E>=V#50>]T^H +M/.Z?4'G]T^HO.Z?4'G=/Z$R([V( +M)3/-ZVO83;MGU->RF;:Z!RHST^AIVTP[70"4%UT`EN7]");E_0B6Y?T(E +MN7]");E_0B6Y?T(EN7]");E_0B6Y?T(EN7]");E_0D61WL:4>_%3E.;]]\.. +MBM*\1:-5I7F+1JM*\Q:-5A7I+1JM*M);-%I5I+=HM*I(;]%H59'>U(2*(KU% +M4Q_)-;6:70,517J+!BJ*]!8-5!3I+1JHE)]KH%+KH%*?5P#E?JZ!BHU +MN08J-;L&*M7]$RK5_1,JU?T3*I_[)U0^]T^H?.Z?4/GV +MF08JVV]W;4,[7-O1@FL'VNE:0+M<.]&B:Q?:[5I$<_]`9?NY?Z"R_=P_4-E^ +M[A^H;#_W#U2VG_L'*MO/_0.5;7/_0&7;W#]0V3;W#U2VS?T#E6V;_F'3-JWK +M8^VV7:[1ZA9=H]7M=HU6M\UVAU2ZZIU>R:6BVF"96MNJ96/]=H=?^Y +M!BK[YAH>[+MKH+(?KH'*'EP#E=W]$RJ[^R=4=O=/J.SNGU#9W3^ALKM_0F5W +M_X3*[OX)E=W]$RJ[^R=4=O=/J!S3/RPYIG5]K-V.W35:/0[7:/4(KM'J<;I& +MJ\?E&JT>T35:/6[7:/5X3!,JQ^L:K1[)-;6:70.5H[@&*D=U3;Y\KH%*^+D& +M*L']$RK!_1,JP?T3*L']$RK!_1,JP?T3*L']$RK!_1,JP?T3*L']$RK!_1,J +M8?JG]J=U5TI@F5\W*- +M5L_H&JV>MVN@I]NT:K]^,:K=ZO:[1Z)]?4:G9-K1;3 +MA,I=75.KGVNT^OQ<`Y5G=P_H?*X?T+EUS5:?9-K:C6[!BIO<0U4 +MWNH:J+R?:Z"2?JZ!2G+_A$IR_X1*6]'98GTWH[*$NF]'94E +MTGL[*DND]W94EDCO[:@LD=[;45DBO;>CLD1Z;T=EB?3>CLH2Z;T=E272>SLJ +M2Z3W=E2R^R=4LOLG5++[)U2*^R=4BOLG5(K[)U2*^R=4BOLG5(K[)U2*^R=4 +MBOLG5)9(3Z5-ZU)'94GS4D=E2?-21V5)\U)'98GT4D=EB?121V6)]%)'98GT +M4D=EB?121V6)]%)'98GT4D=EB?121V6)]%)'98GT4D=EB?121V6)]%)'I;I_ +M0J6Z?T*ENG]"I;I_0J6Z?T*ENG]"I;I_0N5S_X3*Y_X)E<_]$RJ?^R=4EDB/ +M,I8T+W=4EC0O=U26-"]W5)8T+W=4ED@O=U262"]W5)9(+W=4ED@O=U262"]W +M5)9(+W=4EDCOOS7LLB^1WG]KV$W;7`MHNVLGVN':A19Z1JM+I/??&G;3 +M'M-`95\BO?_6L)N67%.KV35062*]TE%9(KW245DBO=)162*]TE'9W3^ALKM_ +M0F5W_X3*[OX)E=W]$RJ[^R=4=O=/J.SNGU#9W3^ALKM_0F5W_X3*$NGIEY_6 +MU8[*DN;5CLJ2YM6.RI+FU8[*$NG5CLH2Z=6.RA+IU8[*$NG5CLH2Z=6.RA+I +MU8[*$NG5CLH2Z=6.RA+IU8[*$NG5CLH2Z=6.RA+IU8[*X?X)E\S +MS1MKV/M,\\8:]CXCO;&&O<](;ZQA[S/2&VO8^XSTQAKV/B.]L8:]STAOK&'O +M,](;:]C[C/3&&O8^([VQAKW/2&^L8>\STAMKV'L,KH%*=/^$2G3_A$IT_X1* +M=/^$2G3_A$IT_X1*=/^$2G3_A$IT_X1*=/^$2G3_A,J,]%C#WF>:-]:P]YGF +MC37L?:9Y8PU[GVG>6,/>9Z0WUK#W&>F-->Q]1GIC#7N?D=Y8P]YGI#?6L/<9 +MZ8TU['U&>F,->Y^1WEC#WF>D-]:P]QGIC37L?49Z8PU[?WZN@]T^H/.Z?4'G:-->Q]IGEC#7N?D=Y8P]YGI#?6L/<9Z8TU['U&>F,->Y^1 +MWEC#WF>D-]:P]QGIC37L?49Z8PU[GY'>6,/>9Z0WUK#W&>F-->S]S:Z!RNO^ +M"977_1,JK_LG5)+[)U22^R=4DOLG5)+[)U22^R=4DOLG5)+[)U22^R=49J3' +M&O8^T[RQAKW/-&^L8>\SS1MKV/M,\\8:]CXCO;&&O<](;ZQA[S/2&VO8^XST +MQAKV/B.]L8:]STAOK&'O,](;:]C[C/3&&O8^([VQAKW/2&^L8>\STAMKV'N^ +M70.5[/X)E>S^"97L_@F5[/X)E>S^"97L_@F5[/X)E>+^"97B_@F5XOX)E>+^ +M"949Z;&&O<\T;ZQA[S/-&VO8^TSSQAKV/M.\L8:]STAOK&'O,](;:]C[C/3& +M&O8^([VQAKW/2&^L8>\STAMKV/N,],8:]CXCO;&&O<](;ZQA[S/2&VO8^XST +MQAKV7H-KH%+=/Z%2W3^A4MT_H5+=/Z%2W3^A4MT_H5+=/Z%2W3^A4MT_H5+= +M/Z%2W3^A,B,]UK#WF>:-->Q]IGEC#7N?:=Y8P]YGFC?6L/<9Z8TU['U&>F,- +M>Y^1WEC#WF>D-]:P]QGIC37L?49Z8PU[GY'>6,/>9Z0WUK#W&>F-->Q]1GIC +M#7N?D=Y8PSY^/]E.CU7^1WM1H]5^D-S5:_1?I38U6_T5Z0P.5XU^D-S7Z^!?I38U6 +M_T5Z4SO0'M<"VNO:B99<`Y4MNP8JF_LG5#;W3ZAL[I]0V=T_H;*[?T)E=_^$ +MRN[^"97=_1,JN_LG5';W3ZCL[I]0V:=_^N&TKH^UQ_ZZ1JM[/]=H]=A,$RK'[AJM'H=K]'8$UT#E.%T#E>-R#52.Z!JH'+=K +MH'*X?T+EZ?4`GNGU`)[I]0">Z? +M4`G3/ZP+T[H^UA[A/]?H]]Q<`Y5S=PU4SL,U4#F#:Z!RNG]"Y73_A,KI_@F5T_T3*J?[ +M)U1.]T^HG.Z?4#G=/Z%RNG]"Y73_A,KI_@F5:_J'3=>TKH^UQ[6[1JO7X1JM +M7L$U6KU.UVCUNERCU2NZ1JO7[1JM7H]I0N5Z7:/5*[FF5K-KH'(5U^1!=0U4 +MKL\U4(D_UT`ENG]");I_0B6Z?T(ENG]");I_0B6Z?T(ENG]");I_0B6Z?T(E +MNG]");I_0B5._[`D3NOZ6'O$ZII:_5RCU?OG&JW>FVNT>N^NT>I]N$:K=W"- +M5N_3-*%R7Z[1ZAU=H]7[=@U4[L=P_H?*X?T+E%[7:/5)KJG5[)I:+:ZIU>J:6OU=T_H?*Z?T+E=?^$RNO^"977_1,J +MR?T3*LG]$RK)_1,JR?T3*FGZ1ZMI6M?7L(]TN4:K*;I&J^EVC5;3XQJMIMUVBU)-?4 +M:G8-5$IQ#51*=0U4RN<:J-2?:Z!2W3^A4MT_H5+=/Z%2W3^A4MT_H5+=/Z%2 +MW3^A4MT_H5+=/Z%2W3^A4MT_H5*G?VIA6M?7L(]:7=//^URCU>_G&JU^FVNT +M^NVNT>IWN$:K7W"-5K_3-*'R7:[1ZA==H]7O=@U4OLUT#E2ZZ!RI== +M`Y7/_1,JG_LG5#[W#U3"S_T#E?!S_T`E_-P_4`D_]P]4PL_]`Y7P<_]`)?S< +M/U`)/_M.2:_MGLFEHMKJG5ZII:_5RCU272ZVO8 +M88GT^AIV6"*]OH8=EDBOKV&')=+K:]AAB?3Z&G98(KV^AAV62*^O88PPY+F]37LL*1Y?0T[+&E>7\,.2Z37U[##$NGU->RP1'I] +M#3LLD5Y?PPY+I-?7L,,2Z?4U[+!$>GT-.RR17E_##DNDU]>PPQ+I]37LL$1Z +M?0T[+)%>7\,.A_LG5`[W3Z@<[I]0.=P_H7*X?T+E7T-.RQI7E_##DN:U]>PPQ+I +M]37LL$1Z?0T[+)%>7\,.2Z37U[##$NGU->RP1'I]#3LLD5Y?PPY+I-?7L,,2 +MZ?4U[+!$>GT-.RR17E_##DNDU]>PP^7^"97+_1,JE_LG5*+[)U2B^R=4HOLG +M5*+[)U2B^R=4HOLG5*+[)U2B^R=4EDA/O_RTKJ]AAR7-ZVO884GS^AIV6-*\ +MOH8=EDBOKV&')=+K:]AAB?3Z&G98(KV^AAV62*^O88PPY+F]37LL$1Z?0T[+)%>7\,.2Z37U[##$NGU->RP1'I]#3LLD5Y?PPY+ +MI-?7L,,2Z?4U[+!$>GT-.RR17E_##DNDU]>PPQ+I]37L\+I_0N5U_X3*Z_X) +ME=?]$RJO^R=47O=/J+SNGU!YW3^A\KI_0N5U_X3*Z_X)E1GIL88=9IHWUK## +M3//&&G:8:=Y8PPXSS1MKV&%&>F,-.\Q(;ZQAAQGIC37L,".]L88=9J0WUK## +MC/3&&G:8D=Y8PPXSTAMKV&%&>F,-.\Q(;ZQAAQGIC37LD'^N@4IV_X1*=O^$ +M2G;_A$IV_X1*=O^$2G;_A$IV_X1*=O^$2G;_A$IV_X1*=O^$RHSTHG[*M&[K +MJ,PT;ZQAAYGFC37L,-.\L88=9J0WUK##C/3&&G:8D=Y8PPXSTAMKV&%&>F,- +M.\Q(;ZQAAQGIC37L,".]L88=9J0WUK##C/3&&G:8D=Y8PPXENP8JQ?T3*L7] +M$RK%_1,JU?T3*M7]$RK5_1,JU?T3*M7]$RK5_1,JU?T3*M7]$RHSTHOZX;2N +M[ZN$F>:-->PPT[RQAAUFFC?6L,.,],8:=IB1WEC##C/2&VO8849Z8PT[S$AO +MK&&'&>F-->PP([VQAAUFI#?6L,.,],8:=IB1WEC##C/2&VO8X;M=`Y7/_1,J +MG_LG5#[W3ZA\[I]0^=P_H?*Y?T+E<_]`Y?RY?Z!R_MP_4#E_[A^HG#_W#U3. +M&>FQAGW.-&^L89\SS1MKV.=,\\8:]CG3O+&&?,],8: +M]KD%UR*:^P:-->QSIGEC#?N<:=Y8PSYGFC?6L,\9 +MZ8TU['-&>F,-^YR1WEC#/F>D-]:PSQGIC37L6,,^9Z0WUK#/ +M&>F-->QS1GIC#?N7?LHS?]A1^9?F38U6_Z5Y4U.K +MV36U6EQ3J]4UM?JY1JO_(KVIT>J_2&]H0N5?I#E,#E7^1 +MWM1`Y5^D-S50^1?I30U4KMLU4+GMC[1DOUV@U1M=H-=ZNT6I\7*/5 +M^+I&JS&YIE:S:VJUF"948G5-K7ZNT=O]5[7 +M:/5)KJG5[)KZ+:Z!RE-=`Y7G=T_H?*Z?T+E=?^$RNO^"95W^H=-[[1NC+5O=4VM?J[1:OJY +M1JMIZ?4"GNGU`I +M[I]0*>Z?4"GNGU"I[I]0J>Z?4*GNGU"I[I]0J=,_VJ_3NKZ&?=;+-5JMT35: +MK;=KM%H?UVBUOJ[1:DVNJ=7LFEHMI@F56EU3JY]KM/K]7`.5;W,-5+[=-5#Y +M#M?PZ@NN@&TKJ]A7[_=M0?M<.U%"ZXEM-.UC':Y5M"B:Q7M=NU# +M>TP#E>OWNK:A)=?4:G;M0"NN!;3JVHGVN=90N;:?:_BWN7^@X?J%R;^R=4MNF?VIK6 +M]37L:ZNNJ=7/-5K=?Z[1ZKZY1JO[[AJM[H=KM+H'UVAU/TT3*OOE&JWNT35: +MW6_70&5_7`.5_74-5/;D&JCLV350V=T_H;*[?T)E=_^$RN'^"97#_1,JA_LG +M5`[W3Z@<[I]0.=P_H7*X?T+EGT-^UHBO;Z&?2V17E_#OI9(KZ]A7TND +MU]>PK\O]$RJ7^R=4+O=/J%SNGU"YW#^AMKV-<2Z?4U[&N)]/H:]K5$ +M>GT-^UHBO;Z&?2V17E_#OI9(KZ]A7TNDU]>PKR72ZVO8UQ+I]37L:XGT^AKV +MM41Z?0W[6B*]OH9]W>Z?4+G=/Z%RNW]"Y7;_A,KM_@F5V_T3*K?[)U1N]T^H +MW.Z?4+G=/Z%RNW]"98GT5,:TKJ]A7TN:U]>PKR7-ZVO8UY+F]37L:XGT^AKV +MM41Z?0W[6B*]OH9]+9%>7\.^EDBOKV%?2Z37U["O)=+K:]C7$NGU->QKB?3Z +M&O:U1'I]#?M:(KV^AGTMD5Y?P[X>]T^H/.Z?4'G]T^HO.Z?4'G=/Z&R1'KZ+:=U?0W[6M*\OH9]+6E>7\.^EC2O +MKV%?2Z37U["O)=+K:]C7$NGU->QKB?3Z&O:U1'I]#?M:(KV^AGTMD5Y?P[Z6 +M2*^O85]+I-?7L*\ETNMKV-<2Z?4U[&N)]/H:]I7PKR72ZVO8UQ+I]37L:XGT^AKVM41Z?0W[6B*]OH9] +M+9%>7\.^EDBOKV%?2Z37U["O)=+K:]C7$NGU->QKB?3Z&O95W#^A4MP_H5+< +M/Z%2W#^A4MP_H5+OQ22YK7U["O +M)QK2?/Z&O:U1'I]#?M:(KV^AGTMD5Y?P[Z62*^O85]+I-?7 +ML*\ETNMKV-<2Z?4U[&N)]/H:]K5$>GT-^UHBO;Z&?2V17E_#OI9(KZ]A7Y_[ +M)U0^]T^H?.Z?4/GF- +M->PX([VQAAUGI#?6L..,],8:=IR1WEC#CC/2&VO8<49Z8PT[SDAOK&''7W8M +MHKE_H!)_[A^HQ)_[!RIQ<_]`)6[N'ZC$S?T#E;BY?Z`2-_),\\8:=IQIWEC#CC/-&VO8<49Z8PT[SDAOK&'' +M&>F-->PX([VQAAUGI#?6L..,],8:=IR1WEC#CC/2&VO8<49Z8PT[SDAOK&'' +M&>F-->RXWZZ!RN[^"97=_1,JN_LG5';W3ZCL[I]0V=T_H;*[?T+E49EIWEC#CC/-&VO8<:9Y8PT[SDAOK&''&>F- +M->PX([VQAAUGI#?6L..,],8:=IR1WEC#CC/2&VO8<49Z8PT[SDAOK&''&>F- +M->PX([VQAAU#<`U4@OLG5(+[)U2"^R=4@OLG5(+[)U2"^R=4@OLG5(+[)U2" +M^R=4@OLG5(+[)U1FI,<:=IQIWEC#CC/-&VO8<:9Y8PT[SC1OK&''&>F-->PX +M([VQAAUGI#?6L..,],8:=IR1WEC#CC/2&VO8<49Z8PT[SDAOK&''&>F-->PX +M([VQAAUGI#?6L./U6,-.\Y( +M;ZQAQQGIC37L.".]L88=9Z0WUK#CC/3&&G:F,-.\Y( +M;ZQAQQGIC37L.".]L88=8W8-5*+[)U2B^R=4HOLG5&[W3ZC<[I]0N=T_H7*[ +M?T+E=O^$RNW^"97;_1,JM_LG5&:DQQIVG&G>6,..,\T;:]AQIGEC#3O.-&^L +M8<<9Z8TU[#@CO;&&'6>D-]:PXXSTQAIVG)'>6,..,](;:]AQ1GIC#3O.2&^L +M8<<9Z8TU[#@CO;&&'6>D-]:PXW.[!BJ/^R=4'O=/J#SNGU!YW#^A\KA_0N5Q +M_X3*X_X)E=?]$RJO^R=47O=/J+SN7T/ESNV"Y/B[>%?C^+MK?O_'T?[7S/^: +MV_]:R_8_CK]0VQ3$\7?R;Y_B^'N^UB7'\G0^[2[C^'OXSWIR_)VLE'*T_[7] +MOAQ_%_]I1(Z_R%]XPOD^'M^C3".O^MM +MKU4._XB_\XNCK^;?\$(1ZNJ?>]R_#U/>\/E:+W=]';3 +M6Z2W]NFY4GL1X_B+_%?N.%I5;=KD^'MJF]$Y_L[2KG*.O_;&V"IHQ]_-9A?' +MW_VTVX7C[^*_V,#Q=_.?&.5H';6IGN/OQ'N.OXN7$([64:N4HU70WEY +M_;[M^`M?^U+@^#OY+^AR_)W\9P.OX<9F./O2>UBX?A[2GO;YOAKWSNMOG;\ +MM8_6]S^.OU@:L1Q_-_]B.XZ_AW]'/$?SK_T\CK_[+>WW;9?O?QQ_Y]=^ +M'L=?S.VVYVB5MB]ICM9'N]DYVN_;7..`V!UB6WWD!QS\>C>_WOUWYO9/<#0W +M-MS8CN9NP=W2'/_::RE'J[F])7#\Q=J&K\ARXL>,&GXI\_(^C>=JF-(Z_2,C!T3Y; +M;;#F:#6_[;/:CO;I:9]:CK_V>[A'>W/ +MK7VC.'&U][9^=H?UJU<=6.]EW2?CV.]KELKT$W/Z,/G=K0_U3:6<;3.VY\E1_O3 +M:B^9'(W=]EG@:'_2-?R/X^\DU^-8:#]+HXD#[C//UD./ON;?VU`Z^3Q/?I^W^>%JE'(VEI1ZME;X2UH_T9M3]]CG9K +MX'/$Y_@U2MK1ON':"SE'N\7;[!HWW_\61[\65:^U]K1JMKX5&SM4\%_TIRC_6YMBN1H$T"[ +M&SG:K](^1QQ_3VYOVQQ\6W#[/>W78Q;E:*YEYI?.1F?[7SG:W7.TST([FJ='X[0= +M[>G'Y_S7/EOUO?['T?Y\F11V)H7<[F2.QG.;R#B8KRKS5?.9O]/D:'^^1[L' +MV]'\"XW==G!?%NY+9A]NR8=;LK9?F:/1%-JTU(XV$[;Z.+A37NZ4]NEF1X2# +M>[5RK_(=P?=N.]HGA6^XBV^XYV@W;#O:T\EGE?OHX=9H1WNZF4%NII:ST=2. +MUA$W<3O:GW[[-N-H]_;QVM"F([XAVM&\0;JN/V^K'-]>/;ZXM\.EI;IS,?QSMJ7W7<32NF)7; +MT=QH[P8<[?NO$?A6I_,K_V5L31/F7M +MG^5H3^T-C8.)>V?B;E,0_\=1CO;4&.=HWK>W,0[NU9-[E3]S;JMV-.XWN-]T +M"^W<0GR'77R'74QD.Q-R^Q:(_/L=.=JW2OOU./C3XL^([_N'>^OAWN(]@(,_ +MP1]_@C^>+IXNG@I/A3]+GFX]\:NT/N+;W.!H3VT"X&B?#SX+B<_"N/UBY;NN +M\EU7VS.H[&<_MVY&A/[:V2 +MHWW>F)\34U!J4QI'FT4;[1QM?OXUKMK!%,3]V]XT%\+XFT>.QNG7"&M'(ZQ] +MHCC:GV6[&SG^]L!_#4MGJZO=5QSM\[US^^R:_T_F_Y/OZIOO:MUF/VZS'P3R +MOP;^UYO/'AK_E3D.)B*^$=KWU$(@__=>#K0'K3$+)QS+I_5LW?Z/@[>ZP%M= +MX.V/I[,]OV^3.P6T! +MO7R[;S^(_CG1%_-2>SM8V.:^YVBS!^]`!^]`_-M..=K3V7Y>.QKYC3:.Y5MG +M>??B[V\XVA,_C^^0-K8]S&[/,MVN=VQ)O"FW?Z+R3=Z.];/R:]^>'.NG)K[M +MUFM'^_P<[;NK'>WI;=]=[5B_]_C7XG&T.XS;[-1MUCCA:-^*[1[BX.GCZ5N_ +M*?F+=X[VQ.>"]_Q(Z,W!TX^G'V]2O,'I[27QF4KVF1L_;^/G;?IYD:?X]SO+\W\__I^-XZEIW\Y3_-]X:O_$3GT[]>W4MU/? +M3GT[]>W\OCN_[\[ON_/[[OR^.[_OSN^[\_ON_+Z[?KV;IYNGAZ>G_;Z5"O+V +MO_$TM'UH>]=2MI_\WP_]?]W]?^6?+;_>VW]/0[N'=@\M#RVC;4/;AK8/;1_: +M,;1C:&%H86CGT,ZA74.[AG8/[1[:,[1G:._0WJ&EH:6AY:'EH=6AU:[5X4$= +M'M3A01T>U-%O'?W6T6\=_=;16QV]U3BT.+31;QW]UM%O'?W6T6^=_U=KQTO3R]/B:?$ +M4^8I\U1X*CQ5GOC>.*GOI+Z+^B[JNZCOHKZ+^B[JNZCOHKZ+^B[JNZCOHKZ+ +M^B[JNZCOHKZ+^B[JNZCOHKZ+^B[JNZCOHKZ+^B[JNZCOHKZ+^B[JNZCOHKY( +M?9'Z(O5%ZHO4%ZDO4E^DODA]D?HB]47JB]07J2]27Z2^2'V1^B+U1>J+U!>I +M+U)?I+Y(?9'Z(O5%ZHO4%ZDO4E^DOIOZ;NJ[J>^FOIOZ;NJ[J>^FOIOZ;NJ[ +MJ>^FOIOZ;NJ[J>^FOIOZ;NJ[J>^FOIOZ;NJ[J>^FOIOZ;NJ[J>^FOIOZ="_< +MU'=3WT-]#_4]U/=0WT-]#_4]U/=0WT-]#_4]U/=0WT-]#_4]U/=0WT-]#_4] +MU/=0WT-]#_4]U/=0WT-]#_4]U/=0WT-]#_4]U/=0WTM]+_6]U/=2WTM]+_6] +MU/=2WTM]+_6]U/=2WTM]+_6]U/=2WTM]+_6]U/=2WTM]+_6]U/=2WTM]+_6] +MU/=2WTM]+_6]U/=27Z*^1'V)^A+U%:HJ5%6HJE!5H:I"586J"E45JBI45:BJ +M4%6AJD)5A:H*516J*E15J*I05:&J0E6%J@I5%:HJ5%6IJE)5I:I*5177*JY5 +MZJO45ZFO4E^EODI]E?HJ]57JJ]17J:]27Z6^2GV5^BKU5>JKU%>IKU)?I;Y* +M?97Z*O55ZJO4]U'?1WT?]7W4]U'?1WT?]7W4]U'?1WT?]7W4]U'?1WT?]7W4 +M]U'?1WT?]7W4]U'?1WT?]7W4]U'?1WT?]7W4]U'?1WT?];7)[LO,39FY*3,W +M9>:FS-R4F9LR:FS-R4F9OR+_(4>;IYNGEZ>'IX>GEZ +M>4H\)9XR3YFGPE/AJ?)4>?IXHKZ-^C;JVZAOH[Z-^C;J8U[+S&N9>2TSKV7F +MM:ZS%R7F>LR:ZS%R7F>LR:ZS%S7#IZH;Z>^G?IVZMNI;Z>^G?IVZMNI;Z>^G?IVZCNH[Z"^@_H. +MZCNH[Z"^@_H.ZCNH[Z"^@_H.ZCNH[Z"^@_H.ZCNH[Z"^@_H.ZCNH[Z"^@_H. +MZCNH[Z"^@_H.ZCNH[Z"^@_H.Z@O4%Z@O4%^@OD!]@?H"]07J"]07J"]07Z"^ +M0'V!^@+U!>H+U!>H+U!?H+Y`?8'Z`O4%Z@O4%Z@O4%^@OD!]@?J86C)32V9J +MR4PMF:DE,[5DII;,U)*96C)32V9JR4PMF:DE,[5DII;,U$(VRL$3]3&U9*:6 +MS-22F5HR4TMF:LE,+9FI)3.U9*:6S-22F5HR4TMF:LE,+?P-(@=/U,?4PM\' +MI+U-?IKY,?9GZ,O5EZLO4EZDO4U^FODQ]F?HR +M]67JR]27J2]37Z:^3'V9^C+U9>K+U)>I+U-?IKY,?9GZ,O5EZBO45ZBO4%^A +MOD)]A?J8_\B"VT%]S'^9^2\S__'W+!P\41_S7V;^R\Q_F?DO,_]EYK_,_)>9 +M_S+S7V;^R\Q_F?DO,_]EYK_,_)>9_S+S7V;^R\Q_F?DO,_]EYK_,_)>9_S+S +M7V;^R\Q__.T9!T_4Q_S'W[!S\$1]S'^9^2\S_V7FO\S\EYG_,O-?9O[+S'^9 +M^2\S_V7FO\S\EYG_,O-?9O[+S'^9^2\S_V7FO\S\EYG_,O-?9O[+S'^9^2\S +M_V7FO\S\EYG_,O-?9O[+S'^9^2\S_V7FO\S\EYG_,O-?9O[+S'^9^2\S_V7F +MO\S\EYG_,O-?8?XKS'^%^:\P_Q7FO\+\5YC_"O-?8?XKS'^%^:\P_Q7FO\+\ +M5YC_"O,?:20'3P]/#T\O3R]/B:?$4^8I\U1X*CQ5GBI/'T_4Q_S'W]FV@_J8 +M_PKS7V'^*\Q_A?FO,/\5YK_"_%>8_PKS7V'^*\Q_A?FO,/\5YC_^1I>#)^IC +M_F/+BH,GZF/^*\Q_A?F/OR/DX(GZF/\*\U]A_BO,?X7YC\T2#IZHC_FO,/\5 +MYK_"_%>8_PKS7V'^*\Q_A?FO,/\5YK_"_%>8_PKS7V'^*\Q_A?FO,/\5YK_" +M_%>8_PKS7V'^8].'HSTQ_Q7FO\+\5YC_"O-?8?XKS'^%^:\P_Q7FO\+\5YC_ +M"O-?8?XKS'^%^:\P_Q7FO\+\5YC_"O-?8?XKS'^%^:\P_Q7FO\+\5YC_V"7C +MX(E:F*4*LU1AEBK,4H59JC!+%6:IPBQ5F*4*LU1AEBK,4H59JC!+%6:IPBQ5 +MF*4*LU1AEB++Y^")6IBE"K-4.54+7C%+%6:IPBQ5F*4*LU1AEBK,4H59JC!+ +M%6:IPBQ5F*4*LU1AEBK,4H59JC!+%6:IPBQ5F*4*LU1AEBK,4FR]:FPMQ4F)L*:FPMQ4F)L*:FPMQ4F)L*:FPMS$_B`'3WC%W%28 +MFPIS4V%N*LQ-A;FI,#<5YJ;"W%28FPIS4V%N*LQ-A;FI,#<5YJ;"W%28FPIS +M4V%N*LQ-A;FI,#<5YJ;"W%28FPIS4V%N*LQ-A;FI,#<5YJ;"W%28FPIS4V%N +M*LQ-[`=P\$1]S$V%N:DP-Q7FIL+<5)B;"G-386XJS$WL/7'P1'W,386YJ3`W +M%>:FPMS$GB$'3]3'W%28FPIS4V%N*LQ-A;FI,#<5YJ;"W%28FPIS4V%N*LQ- +MA;FI,#<5YJ;"W%2XIPOW=.&>+MS3A7NZ<$\7[NG"/+I]^/?KEGB[YZ2HW7>6FJ]QTE9NN +MYZ2HW7>6FJ]QTE9NNYZ2HW7>6FJ]P&E=N@7IY>GA)/ +MB:?,$UUR&U1N@TH:4$D#*FE`)0VHI`&5-("=!@Z>J(\TH)(&5-*`2AI020,J +M;_Z5-__*FW_ES;_RYE]Y\Z^\^5?>_"MO_I4W_\J;?^7-O_+F7WGSK[SY5][\ +M*V_^E3?_RFU5N:TJMU7EMJK<5I7;JG)'5>ZHRAU5N:,J=U3ECJK<494[JG)' +M5>ZHRAU5N:,J=U3ECJK<494[JG)'5>ZHRAU5N:,J=U3ECJK<494[JG)'5>ZH +MRAU5N:,J=U3ECJK<494[JG)'5>ZHRAU5N:,J=U3ECJK<3)6;J7(S56ZFRLU4 +MN9DJ-U/E9JK<.)4;IW+C5&Z>5.OW#B5&Z=RXU1NG,J- +M4[EQ*C=.Y<:IW#B5&X=-6PZ>J(\;IW+C5&Z*(^;IS* +MC5.Y<2HW3N7&J=PXE1NGU"MOZI4W=;:P.7BB/M[4*V_JE3=U_E\M'#Q1'V_JK$]P\$1]O*E7 +MWM0K;^J5-_7*FWKE3;WRIEYY4Z^\J;/-Q,$3]?&FSCX0!T_4QYMZY4V]\J9> +M>5.OO*E7WM0K;^J5-_7*FWKE3;WRIEYY4Z^\J5?>U"MOZNQ*<_!$?;RI5][4 +M*V_JE3?URIMZY4V]\J9>>5.OO*E7WM0K;^J5-_7*FSI[[QP\_7]Y9Y(DL_1A24S-`)/&H$GC<"3 +M1N!)(_"D$7C2"#QI!)XT`M>3:0K*I$\C\*01>-((/&D$GC0"U_\&%)1)GT;@ +M22/PI!%XT@@\:02N)[T5E$F?1N!)(_"D$7C2"#QI!)XT`D\:@2>-P)-&X$F> +M*\ES)7FN),^5Y+F2/%>2YTKR7$F>*\ES)7FN),^5Y+F2/%>2YTKR7'K*2T&9 +M],ES)7FN),^E9Y85E$F?/%>2YTKR7'J634&9],ES)7FN),^5Y+F2/%>2YTKR +M7'K62D&9],ES)=V!2;H#DW0')ND.3)(/2_)A23XLR8N +MH$SZY.N2?%V2KTOR=4F^+LG7)?FZ)%^7Y.N2?%V2K]-_(A2429]\79)S2W)N +M26Y,B2'%F2(TMR9$F.+,F1)3FR)$>6Y,B2'%F2(TMR9$GN +M*\E]);FO)/>5Y+Z2W%>2OTKR5TG^*LE?)?FK)'^5Y*^2_%62OTKR5TG^*LE? +M)?FK)'^5Y*J27%62JTIR54FN*LE5Z3_`"LK$>\.K]96K2G)5.7P,PXL_DK\V +MO93WE?>+\I,EQ^\27GCXVN?O)=VX'NZ3ZG53]CKXSZ8U@BN0#^4`>R`/Y2#Z23^03^4P^DR_D"WDDC^0K^4J^ +MD6_D._E.?I`?Y"?Y27Z17^0W^4V>R-$_H']`_X#^`?T#^@?T#^@?T#^@?T#_ +M@/X!_0/Z!_0/Z!_0/Z!_0/^`_@']`_H']`_H']`_H']`_X#^`?T#^@?T#^@? +MT!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0 +M']`?T!_0']`?T!_0']`?T!_0']`_HG]$_XC^$?TC^D?TC^@?T3^B?T3_B/X1 +M_2/Z1_2/Z!_1/Z)_1/^(_A'](_I'](_H']$_HG]$_XC^$?TC^D?TC^@?T3^A +M?T+_A/X)_1/Z)_1/Z)_0/Z%_0O^$_@G]$_HG]$_HG]`_H7]"_X3^"?T3^B?T +M3^B?T#^A?T+_A/X)_1/Z)_1/Z)_0/Z-_1O^,_AG],_IG],_HG]$_HW]&_XSF +M&T3RC>4;SC.89S3.:9S3/:)[1/*-Y1O.,YAG-,YIG-"]H7M"\ +MH'E!\X+F!T,P5=>):.BWH7]"_H']!_X+^!?T+^A?T+^A?T+^@ +M?T'_@OX%_0OZ%_1S[9VXWDY@[)OJ+B3YBHE^8(OHC^B/Z +M(_HC^B/Z(_HC^B/Z(_HC^B/Z(_HC^B/Z(_HC^B/Z(_HC^B/Z(_HC^B/Z(_HC +M^E?TK^A?T;^B?T7_BOX5_2OZ5_2OZ%_1OZ)_1?^*_A7]*_I7]*_H7]&_HG]% +M_XK^%?TK^E?TK^A?T;^B?T7_BOX5_2OZ-_1OZ-_0OZ%_0_^&_@W]&_HW]&_H +MW]"_H7]#_X;^#?T;^C?T;^C?T+^A?T/_AOX-_1OZ-_1OZ-_0O*%Y0_.&YAUM +M.]IV-.QHV-&PHV&':X=KAVN':X=KAVN':X=KAVN':X=KA^M@^QQLGX/M<[!] +M#C0<:#C8/@?;YV#['&R?`VT'V@ZT'6@[V#X'V^=@^QQLGP/-!YH/=![H/-B/ +M!_OQ0.>!S@.=!SI/=)[H/-%YHO-$YXG.$YTG.D^TG6@[T7:B[43;B;83;2?: +M3K2=:#O9GB?;\T3GB8+S1>:+S1?:+[0?*'Y +M0O.%YHMM>[%M+_1?Z+_0?Z'_0O^%_@O]%_HO]%_HO]!_H?]"_X7^"_T7^B_T +M7^B_T'^A_T+_A?X;_3?Z;_3?Z+_1?Z/_1O^-_AO]-_IO]-_HO]%_H_]&_XW^ +M&_TW^F_TW^B_T7^C_T;_C?X;_3?Z;_3?Z+_1?Z/_1O^-_H3^A/Z$_H3^A/Z$ +M_H3^A/Z$_H3^A/Z$_H3^A/Z$_H3^A/Z$_H3^A/Z$_H3^A/Z$_H3^A/Z$_H3^ +MA/Z$_H3^)/TS?GO&;\_X[1F_/>.W9_SVC-^>\=LS?GO&;\_X[1F_38U[1?*5 +M?"7?R#?RG7PGO\@O\IO\)D_D:,-+SWAI:L\KDJ,-+TVM>45RM.&EJ2.O2(XV +M_#-UXQ7)T89_IDZ\(OE!?I"?Y"&8*MRN2HQG/3*%V17(TXYDIS*Y(CF8\,X78%F\+JB +MFT+HB.?KQS!165R1'/YZ90NJ*Y.C',U,X79$<_7AF"J4KDJ,9GTP1 +M=$5R-..3J7RNJ!QO/..-J6JN2(Y.O#%5S!7)T8DWID*Y(CG;#:]+57%%V&UZ5:N"(Y&O"W5`)7)$<#_I;*WXKDZ,'K4NE;D9QMA=>E +MO+6Y$<_7A=RG$KDJ,? +MKTOY;45R].-U*;>M2(Y^O"[EM17)T8_7I9RV(CGZ\;J4SU8D1S]>EW+9BLKQ +MNC->E_+8BN3HQ^M2#EN1'/UX76I@*Y*C'Z]+S6M%:U(KDZ,?K4H-:D1S]>%UJ +M3BN2HQ^O2XUI17+TXW6I*:U(CGZ\+C6D%E9K2BE4+0B.?KQ +MNA2&5B1'/UZ70M"*Y.C'ZU+X69$<_7A="CTKDJ,?KTMA9T5R].-U*>2L2(Y^ +M?"^%FQ65[^C?T;^C?T<_?GC&#U.869$<_3OZ\<8_4V!9D1S]^&<**BN2HW]'/UYZQDM3/5E1.5YZQDM3+5F1'/UX::HC*Y*C +M'R]--61%F2K$B.?KQV%0E5B1'/WZ;*L2*Y.C';U-U6)$<_?AM2@TKDJ,? +MOTUI845R]..W*26L2(Y^_#:E@Q7)T8_?IE2P(CGZ\=N4!E8D1S]^FU+`BN3H +MQV]3^E>1'/WX;4K]*I*C'[]-:5]%IIZM( +MCG[\-O5S%KB*Y.C';U/_5I$<_?AMZMTJ +MDJ,?OTU]6T5R]..WJ6>K2(Y^_#;U:Q7)!_*!/)`'\I%\))_()_*9?"9?R!?R +M2![)5_*5?"/?R'?RG?P@/\A/\I/\(K_(;_*;/)&C'T^^X,DI'JM(CGX\.<5B +M%G.*PB.?KQYQ2#521'/_Z/4%KTX%5T5R]./5J=BJ2(Y^O#H56A7)T8]7IR*K(CGZ\>I48%4D1S]> +MG8JKBN3HQZM38561'/UX=2JJ*BK'JR]X=2JH*I*C'Z].Q51%V4.54D1S^^G;*FBLKQ\`L>GC*F +MBN3HQ\-3ME21'/UX>,J4*I*C'S]/65)%/_%_P_M3P5R=&/_Z=VIR(Y +M^O'_U.I4)$<__I_:G(KDZ,?_4XM3D1S]^']J;RJ2HQ__3ZU-17+TX_^IK:FH +M'/^_X/\IJ*E(CG[\/P4T%(CGZ\?D4UU-4CL]? +M\/D4TU,D1S\^G^)YBN3HQ^=3+$^1'/WX?(KC*9*C'Y]/,3Q%\4R=&/SZ?"G6+.J6RG2#Z0#^2!/)"/Y"/Y1#Z1S^0S^4*^D$?R2+Z2 +MK^0;^4:^D^_D!_E!?I*?Y!?Y17Z3W^2)'/WX_(C/IZ*<(CGZ\?E4D%,D1S\^ +MGXIQBN3HQ^=3(4Z1'/WX?,K"*9*C'Y]/&3A%/S +M(SZ?LFZ*Y.C'YU/&39$<_?A\RK8IDJ,?GT^9-D5R]./S**Y.C'YU/K3%$Y/C_B\ZEMIDB.?GP^ +MM7X_(C/I\"8(CGZ\?D4%%,D1S\^GP)BBN3HQ^=3,$R1'/WX?`J$*9*C +M'Y]/03!%/S(SZ?`E^*Y.C'YU/02Y$<_?A\"G@I +MDJ,?GT_!+D5R]./S*="E2(Y^?#X%N13)T8_/IPJ7(CGZ\?E4W5)4CL^/^'RJ +M;"F2HQ^?3U4M17+TX_.IHJ5(CGY\/E6S%,G1C\^G2I8B.?KQ^53%4B1'/SZ? +M*EB*Y.C'YU/U2E$Y/C_B\ZERI4B.?GP^5:T4R=&/SZ>*E2(Y^O'Y5*U2)$<_ +M/I]258KDZ,?G4YI*D1S]^'Q*42F2HQ^?3^DI1>7X_(C/I]24(CGZ\?F4EE(D +M1S\^GU)2BN3HQ^=3.DJ1'/WX?$I%*9*C'Y]/:2A%/S(SZ?4D^*Y.C'YU/:29$<_?C\B,^/^/S(/']DGC\RSQ^9YX_X_XC_C_C_ +MB/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_ +MB/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_ +MB/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_ +MB/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_XC_C_C_B/^/^/^(_X_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\B,^/^/R(SX_X_(C/C_C\ +MB,^/^/R(SX_X_(C/C_A\O;E\2(-\OB+Y0#Z0!_)`/I*/Y!/Y1#Z3S^0+^4(> +MR2/Y2KZ2;^0;^4Z^*Q_0,*!A0,.`A@$-`QH&-`QH&-`PH&%`PX"&`0T#&@8T +M#&@8T#"@84##@(8!#<-;PT%^D)_D)_E%?I'?Y#=Y(F<;!O0']`?T!_0']`?T +M!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0']`?T!_0' +M]`?TCV@>T3RB>43SB.81S2.:1S2/:![1/*)Y1/.(YA'-(YI'-(]H'M$\HGE$ +M\XCF$T3RB>43SB.;QK9EM/K+-)_1/Z)_0/Z%_0O^$_@G]$_HG +M]$_HG]`_H7]"_X3^"?T3^B?T3^B?T#^A?T+_A/X)_1/Z)_1/Z)_0/Z%_0O^$ +M_@G]$_HW],N?I,`Y&%[O?"`?R`.YUB5PC@3.D<`Y$CA'`N=(&-[?&.^<`Q'SCF`\=\X)@/'/.!8SYPS`>.^<`Q'SCF`\=\ +MX)@/,UPS7#-<,W5`53,PGYF3WFVCD+,L1>$C'[5Y;Q(_)OWO5Z&HC#3IWX<* +M'_,K']H*.8NJGI;'*[/J6"F4%91>V>HH?(QZ$%PAL^A>'K&LL#2H]LR@VC.# +M:B,-JHTT1-7&S..E\-)SD,3\2]DN*NB;PA=5:EKU.WE$D;^3SVIB7KH)WX3O +M^LWLKB>];T)!RU3S<3^+&CQA&[*W(>:EJH,WJ-Y@>*F:7NX_1STZK*!J7*H/ +M.*JR9-X="CF+JC&9QX8YJ$9/5C[F=?I4,'5[&M6D?FOYC"]5,J?Y5%A*PNO/6C+YO@17ZI! +M^:(&I2J:YI`SU?7,(7]310*(JB)[J(IL7GO5QE10I;=%E=ZR6NUKA9SEHTQ! +M-1N53YIUD.W"JID-*J246;3`X$*JD4[J1;M9++? +M.D=YP*.0,U4WTA-(LQ[L4?B8-16H4%;ITI2@0EZFK:E[J;-NV&)>FO3-I&]FXZCP,6]2N$GAEB_@"CG+)Z="SE2=*8?\.[H/1%2>/3$Q?T/5 +M,'/XF/=\T5?(6;[<*F14M54WU5;=ET5UGI:/41/A"CG+%E3A8SY>JOV4O5_> +MDJJ,F'OQWRSW+Z>X<\Q+56/T4(U1O0%?H:P`J??`*^0VQZ`V.6IITE)5!M3: +MZDWKL]YWH)"7:6WUEO%1TQ<*JI7V4JVT5U$U;=8;9A5RIFN`WC2<>S*V[J6M +M>^4+J@)+%Y9F'KU_4$'9H4PU$&/>9GH/X'SE@8R"LJ`LJUAS9Z*0EV5;KO`Q +MWZJ-=5,;*U]7%7*FBEAZX]2XYKVD\)%[RC6?.8IY:691R-_,0VP%9:JPIZ-5 +M;_I1*&H*AWW<\E59,2_-PP"%_)MC/JR()E]E0!3RMM06U%M"?K-QS=<@A8_< +MX^41./$C+$,>#1)5T4O?5>4OO8M!(;?*`SB%O&S+JO1/_EG_`U?(61YN*JAR +MJ*J!Y?'-\E)UUQP^QBU?[!5REB_A"D6EN^P#+E51TGVKY96U*:ANF*J%46Q1,5;%#M<2.D+-=M2IWU=/;D[*4LTO?NTP]O9]:UHM,FH*R +M0]F1L_GZ5,C9D=W:IS=V@XJGT#\6/175P750)M5`XWZNIOJZ^:C:L\&1R%_ +M+Q]I"CF+>:WTO[9EVB[5F[VT+&I9[H'V)6_W'$SEP+Q,(1\'KSR2(ZJ>X*AZ +M@J/JBJM>:5*%\=S?*'R,1[:5"D6UP5%7"(7,DM=%0;UN4*\;E*D'W;)^W8Y2 +M4-M3;<^/];5?GPH?TWAMGPJ=&F[9;BJHFINJA)?-#G2P\QJYFD +M<-+OY-Y4(6>JAZBYS&55];A5U>-^:B1F?[=U:10\Y4-36'CV57'=-=U^-1]_&)JN-]J(YW/I=4H4'A8U&E +M+(7\S76/G\2\=%;E\NR#1KVO7T&UZX)JUV5&U5-1**O8'=F5*>3?V5>MS?Z^ +M!KZ.3Z*6)^WC7=M#OZJ0E^HEWL2\],B_JS=V+WI?MD+.LKM24/701=5#\QER +MC:HCFJ_^177)WRIZ>@^L@M!5:%Y+O0-5(?/I!<-$_JA.?0V;?ED^%O$RU]EZJM??*;DI!6506<[9KV8[GS",&NI^K&)ZK<_U]$)6KIU+\R-M%5?<4,[-\2@X? +MT^NE2GO:3C]U$O-WLND@D@?RW!?/FD$B*A_U',WGG$+.5E5J7,^B9N/TRE==A=Q&3W42 +MBWJJ^7/N=(G*H\#%I(D,AXRJL1%2%R445)A=EF[(M?S-[3`55-URI;JAC5F_4 +M5\CXGD>5077B]29Z!66CLKP/]+9VA=Q:KSXBYJ7Y-%+(_43V-@IY6;X:**A. +M;%"=V*`ZL;/JQ,[Y>_GJHI"=C4XQHO)\'8O"A^K)FT5/B:]#D0A+\NB%+)OUXAUUXAUT5TA +MHO*\F*C?W^@7-_K([20_"W^8PZ1,E:#S>$TAH>_E9>O7,GU/59I#MMP*6=LQ9@V*6CIKJ2J-YI-$(6=Y +M+ROD3+X@AYP%+=/6'/6+HWYQS*,*A;*V[SCK>[.^EZ]+"LI.99EMO)1=^4A? +MN"XIYES&GZCEJM^I^#'ICXP*JN@^J*+[H&Q4EG]??^M4^`A15,2\=,E;4O]1 +M"XM>FT?,OY2=HT+.EGSK8>=Q2U&W5(R,*.'YLF&15REK>R@C(MN[1,=6^#ZMZ.>6\I +M?&QZI8]"_D6542-^;/H#GL+'M.5KFT)>=N1?U'^P`IN$F/%\_BI\;'I84B&/ +M?P^-B?,U:M,#3`J:-\L77V+.->=,_)CV[,H4UD4G59!1REG>J +MPL>FV@@*>?AI6_DJ#Q?;(D?F][`V&VRSX=_9!I_Q&FRV"2S2Z1*-M +M-O[[:HTNV^2R366SX?4_;,3)99M=MMDT*]#9I7RBEG)Q*0LT[[=CY;.3^W31+TH^OL-\ELU^ +MOVS0__MF&Z%OI<)T+N\3;?#>+N_=:WN[O$^TP9M)UKS +MAI?'6Z*F;7AYO!7Z=1U/41?I,+S#^R#\/1WJ#M33S^^ZZ=7,JIMVLGE_>)-GAGEW/]W!YGVB#U^UP0Z_##6Z'6Z$-7K?##;T.-[@=;H4V +M>-T.-_0ZW.!VN!7:X'4[W-#K<(/;X59HS3NZ'>[8ZW!'M\.MT`;OX/(./=[! +MY7VB#=[@\H8>;W!YGVB#U^UP2]3R/OO53Q?]NC2/X_05MM'Z^PKXKRWF7HNY +MT6+N<3P!R['T.)9&BZ7'\00L1^QQQ$:+V.-X`I9C[7&LC19KC^,)-(XUMV\< +M>WWCZ/:-%=K@=?O&$K6\;M]8H0U>MV\<>WWCZ/:-%=K@=?O&L=W,57G6*33-7Z&X7%?` +M_U6+8E^Z=S)+U.[+YUW+3Q>MKW63.XT[]:9Q)W<:MT(;O.XT[M2;QIW<:=P* +M;?"Z?>C4ZT,GMP^M4+MK=W?7[L_=4S;K[]HG:BG=VYY3[[;GY-[VK%!+Z=[V +M+%%+^;R[^>FBC1WJ#BBGWH!R<@>4%=K@=0>4)6IYW0%EA9I-/+N=TEQ?OHIF +MW4U[.0X_2O>16J*5T>[6YUZO-;J]6H?4.G=V1W-P;R4N[3.[-Y>J<\ +M:)X/Z7RZJ+EW-ZLKZMZ[*]'O9O/Z@S::56ACP[I=V]SKVF:W:ZO0!J\[/"Q1 +MR^L.#RO4[E"W?YM[_=OL]F\5^FWI?C;[5[C,[FFC?]'V9]FO=RS]9!/]X[:W +MV_;NM;U=WB?:V%;)W58%:MLF=SL_T7I]EY>WOB5JV@)TU[="&[R#RSOT>`>7 +M]XG6VWD)WG8N4=/V#?2V!*M12 +MSB[EW*.<7O[JX_6J%6DKWT=AE[5$^GX#] +M=%%+Z3X?6Z*6\OD8[*>+6DIWR%BBEM(=,E:HI72[U*77I2YNEUJAEM(=,I:H +MI72'C!5J*=UYUA*UE.X\:X5:2G>>M40MI3LQ6*&6TIUG77KSK(L[SUJA)>6T +M>I=U@Y:4;Z!'6:.6TKNL&]12>I?U&K64WF7=H);2NZS7J*7T+NL&M93>9;U& +M+:5W63>HI?0NZS5:#23F;7`&$@8MVP)T!Q(U6J[JO'F3#08M5_4-]%:U1BVE +M=Z88U%)Z9TJ-6DKO3#&HI?3.E!JUE-Z98E!+Z9TI-=HXAKS9!8/:8\B;7:A1 +MNZK>Z6)0NZK>Z5*CEM)S00:UE)X+JE%+Z;D@@UI*SP75Z,\PXWMC*^2]<-MA +M1A/][VW-H>+=?#:H/9"\F\\U:C>QYX<,:C>QYX=JU%)Z?LB@EM+S0S5J*3T_ +M9%!+Z?FA&K64GA\RJ*7T_%"-&LJ]9Z.@W.M#OFC6I:Q02SFXE$./HU<&-6?*[CUZ5:,-7F_"WJ"6UYNPK]$&KS=A;U#+ZTW8UVB#=W9YYQ[O +M[/(^T0:OVZ7NO2YU=[O4"FWP>K>F#6IYO5O3-6I/(;=?W7O]ZN[VJQ5J*=U^ +M=>_UJ[O;KU9H8^MZL_8&M5O7F[6O4;NJWA2#0>VJ>E,,-6HIW2YU[W6IN]NE +M5FCM//;+KVVTK]+VJPS5H!N)+6]FN0E#]WQM^`VZWNO>ZU=WM +M5BOTJ^W&K?SC]1.&LFT'_8.VO\N^0C":V^B?M/U>]A5&V[:)_DG;[V5?8;)M +MF^B?M/U>]A7LL=%&_Z3M][*OL-BV3?1/VGXO^PK1MFVB?]+V>]E76&W;)OHG +M;;^7?87-MFVB?]+V>]E7.&S;)OK';7>W[=YKN[N\3_2G[?>RKW#:MDWT3]I^ +M+_L*EVW;1/^D[?>RKY!LVR;Z)VV_E[W#.=BV3?1/VGXO^PJ//J6)_D7;GV4* +MZ1B,0>F@_['MK]4XW1G,LS>#>;HSF!5:N^33'7.5J'')ISOFJM#Z,G?&?YS+ +M7(F:MN?OE;#1MD++3;RX;SU9>F\]6=RWGM2HI1QA/^2^_5 +M)XO[ZI,:M93>A/_2>V9^<9^9KU%+Z9TN2^_5)XO[ZI,:M93>A+]!+:4WX5^C +MEM*[-6902^G=&JM12^G-]1O44GIS_37ZU7;1P&31NTF^@CFG.^A?M/U9]A5V +MT[:-_DG;[V7O,`^V;1/][VW?/NA_;ULL^PJ7W4=-]$_:?B_[ +M/0[*MDWT3]K^''73[1V3)6K:OH'>\5RA]3$Y)>^8+%'3]@WTCN<*K8])/67? +M/R9+U+0%Z![/%?K3]GO95PBV;1/]B[8_R]XAODS;-OH?V_Y>FF>WFYU[W>SL +M=K,5:BG=;G;N=;.SV\U6:.5*%_?1_:7WZ/[B/KI?HPU>[T[`TGMT?W$?W:]1 +MNXG=#K?WZ/[B/KI?HY;2NPE@4$OIW02H44OIW00PJ*7T;@+4J*7<7-VE7U[JL;U*ZJ=U^]1BWE +M[5+>/'$H';K>F\XJ=&?;N+[\D^(@^T6V^A_;/N[B2]WP''U +M!AR7.^"H4$OI7O^NWO7OO?U;O^7>[UKT(MI7O]NWK7O\N]_E6H +MI72O?U?O^G>YU[\*M93N]>_J7?\N]_I7H9;2N_]I4$OIW?^L44OIW14TJ*7T +M[@K6J*&\.\W>E/>K0WF[4U<5:BD'EW+H40XNY1.UE.[4U=V;NKK=J:L*K2_P +MM_>\;Z=HUUA5I*]T)[]RZTMWNAK5!+Z5YH[]Z% +M]G8OM!7:V*'>HQ\&M3O4>_2C1NVJNI>^NW?IN]U+7X5:2O?2=__B:U"[JM[%MT8MI3>A85!+Z4UHU&ACZWK/-QK4 +M;EWO^<8:M:LZNZLZ]U9U=E?UB5I*S\L;U%)Z7KY&&UO7>ZK1H';K>D\UUFB# +MUWOACD$MK_?"G1IM\'IO)8B]E]9%]Z5U-6IWK6?M#6IWK6?M:[2QJMY?!F+O +M?771?5]=C39XO?F-V'M?773?5U>C=A-[\QNQ][ZZZ+ZOKD8;JWJ[JWKW5O5V +M5_6)VE7UQC.Q]]*ZZ+ZTKD8-Y>3VJU.UA>,:@EM(;S]1HO4,G +M[\\#!C4[=/+^/%"C=E7=?G7J]:N3VZ]6:&-5W7YUZO6KD]NO5JA=5;=?+5&[ +MJFZ_6J&-5?5N%!C4KJIWHZ!&[:IZXS>#VE7UQF\UVEA5MU_MO<@NNB^RJU&[ +MJMYLF4'MJGJS935J*=TNM?<.N^B^PZY&#:4[9(R](6-TAXPU:BF](6/L#1FC +M.V2L44OI=J1WKR.]W8ZT0BWE[5+>/'WJ[?6B%&LKD]J&I +M.J?+9EW*"K64;A]:HI;2[4,KM+X$);]:M12>GW*VGO::W6?]JI12^G-"1K44GIS@C5J*;WNQ*"6 +MTNM.:M12>M=V@UI*[]I>HY;2N[8;U%)ZU_8:M93>M=V@EM*[MM>HI?2N[0:U +ME-ZUO48MI7=M-ZBE]*[M-6HH@W=M-ZBA#-ZUO48MI7=M-ZBE]*[M-6HIO2E' +M@UI*;\JQ1BVE=UDWJ*7T+NLU:BF](8I!+:4W1*E12^GV)*'7DP2W)ZE02^GV +M)*'7DP2W)ZE02^E>UD/OLA[CU),'M22K4 +M4KH]2>CU),'M22K44KH]2>CU),'M22JTXN[Q-M\'HSN`:UO-X,;HU^[:/?:B\*XVLSCS1WT/_>]OV1/SW__O.YT-Q& +M_V/;GT-Y<]\HOO7>*+ZY;Q2OT6K7;K,W2#)HV7:;O4%2C=I5]7K3K?=$\N8^ +MD5RCEM)[<&+K/9&\N4\DUVA]$![N07CT#N##/8`KM#X(3_<@/'L'\.D>P!5: +MK>_NGG1[[X3=W1.V1JOUW=V3;N^=L+M[PM9HO;[N_MU[^W=W]V^-UNOK[M^] +MMW]W=__6:+6^A[M_C][^/=S]6Z/5^A[N_CUZ^_=P]V^-UKSN=CYZV_EPMW.- +M5KRGN[YGK^WIKF^-?NVCWP=9OL)2[J,.^@=M?Y<1[M'\9ZJ#_D';WR/V=,_? +MLW?^GN[Y6Z/U_G6/J[-W7)WN<56C%>_E'E=7K^WE'EN\=;HH970)^W +M0G^.C>]]_@[3X]AHHG_<=G/;;KVVF\O[1*OM?(_>=C9HV1:@NYUK]$OSKY9W +ML*\]Z:!_W'9SVVZ]MIO+^T0;O+O+N_?:[B[O$VWP'B[OT6M[N+Q/]+OMS[)W +M.&W;-OK';3>W[=9KN[F\3_2[[<\R0HJ#:=M&_[CMYK;=>FTWE_>)-GAWEW?O +MM=U=WB?:X#U]YDZH]X:;?!Z$T<&M;S> +MQ%&-UKQZYK//6Z*&]_V$:8^W0AN\WE.=J?=49W*?ZJS1=]OA.KF/HX,F=Y7O +M+_^T[:%EV_1^?O)HMZW1[V/RYUC["N:_X1WT#]K^+OL*YK5R'?1/VGXO(XQA +ML&V;Z)^T_?W*[FK>>^N[N^O[1!N\A\M[]-H>+N\3;?">+N_9:WNZO$^TP7NY +MO%>O[>7R/M&:=WUYO"5JVKZ!'F^%EE.$:?5N*QJTG")\`[TIPAJUE-Y$:.H5 +M!TEN<9`:K48):9V<48)!R[8`W5%"C=I5]>XMIEZYCN26ZZA12^G=6TR]1K4]'FG]Y!GC3[G,H97[A:[2'T^>-M!J +M57=OOL"BY:KNWGQ!`ZU.U5TU4KNGJD'+4Q6@>ZK6J-G$T7GPS*)F$T?GP;,& +M:BD=2!5J*5>7A=;-HI;2>=:M@5I*YUDWBUI*YUFW!EI?AZ+S4BF+ +MFNM0=%XJU4"KL<61L_[8PJ#EV.+X_DIS;%&CU?7OF#R+9-#R^@?0O?[5:+EK +M#Z_@JT7+77MX!5\;:+5KC\7YM[)%RUU[+,Z_E1NH757/E1V=JJ]?0']5O6'% +MX55]M:BE](85-6HIO6'%T:GZ^@7T*9T'\8RN?E72,,6A[*;Z!W*->HI?2N$0:UE-XUHD8MI7>-,*BE +M]*X1-6IVRO7]_-9S?Y3`UVT_EOT^\?73H@%4/?9Y.3=5+5KVV`#='KM&&[S. +M!+-%+:\SP=Q`&[S.S5R+6E[G9FX#;?!Z@V^#6EYO\%VC#5[G9KU%+:]SL[Z! +MVM/%&SV=G;=O?@']T\4;/9W>VS]'V--GAOE_?N\=XN[Q-M\'I#1H-:7F_(6*/FD/+>.VI1?EGJV+?@58CK'',38XQA['$[`=Z_SJ@#+,? +MTZ+F-/5>C]E`R]/T.KW3U*#E:?H&>J=IC5I*SX$:U%)Z#K1&JZU[GG<+:M12 +M>G<+#&HIO;L%-6HIO;L%!K64WMV"&K64WMT"@UI*[VY!C5I*[VZ!02VE=[>@ +M1ALGY^Z>G'OOY/Q^IJ9]Z36H757/]-:HI?1N&1C44GJW#&KTN_.B +M#,=\Z2OJ`R;3MH,6;;^`N=VV@7ZW#5]/RQ:/VQ9MV^A_;VN.%\_O&M0>39[? +MK=$OS3^/J0[7]?J2]JNY@Q9M`7[7[=&V@9I#RIW/N7KS.9<[GU.CEM*;S[EZ +M\SF7.Y]3HY;2[4BO7D=ZN1UIA5I*MR.]>AWIY7:D%6HIW8ZT1"VEVY%6J*5T +M.]).V98OH$_I=J1>V1:+6DJW(_7*MF34[4@[95N^@#ZEVY%Z95LL:BG=CM0K +MVY)1;^+HZDT<7>[$48U:2K[$48U:2KD^N7>Z3:S5J*;U[I`:UE-X]TAJUE-X]TJM3G.8+Z%-Z]T@O=Y+HZDT27>XD +M48U:2K>_[!2G^0+ZE&Y_Z16GL:BE=/O+5G&:@M+M+^]>?WF[_66%6DJWO^S4 +MI?D"^I1N?WF[_66)6DJWOZQ02^GVEW>OO[S=_K)"O]VP/K[-=OIRZT7;#EJT +M_0;:;1MH[:23-R5E4..DDSU[>`C\<[7GY!F`WG7.%LZC==,X5KH%:2N<*9U%+Z5SA&JBE=*YP%K64 +MSA6N@5I*9T1@44OIC`@:J#U>VG/Z%O@Y7MIS^@W`X-C[W$\`;M[')-O4;M[')/?0"VE8_(M:BD=D]]`#:5G#"UJ*#UCV$#-SNO< +MA+/`]\[KW(1K`):C?1/.`C\<[9MP#QQ-H +M[#+GB0^+VEWF//'10!N\CH^UJ.5U?&P#;?`Z3WQ8U/(Z3WPTT`:O8V8M:GD= +M,]M`S:GA596PJ#DUO*H2#;2D/+W:&18M*4^O=D8#-93N6IZ]M3S=M:Q12^GU +M3&>G=L87T*=L]TR_C]J&B[^2=![$M6C1]@WT'L1MH.6JNA-"H3S6Y=JM&K64S@T4 +MBUI*YP9*`[64GM.Z>D[K-U*BE=/O+GANY7#=2HY;2[2]3K[],;G]9H9;2[2\[1;R^ +M@#ZEVU\FM[],O?XRN?UEA5I*M[\L44OI]I<5:BG=_C+U^LOD]I<5:BG=_C+U +M^LOD]I<5:BG=_C+U^LOD]I<5:BG=_C+U^LOD]I<5:BG=_C+U^LOD]I<5:BG= +M_C+U^LOD]I<5:BG=_C+U^LOD]I<5:BG=_C+U^LOD]I<5:BG=_K)SURVX=]T: +MJ*5T^\O4ZR^3VU]6Z/<\U_=+.XL7L?VV[:#_L:U]$5&&RZ<9*P35CX9OA*WR +M:%@@MB$KGM'O>[N%T%<3?3?[6J:-UFC60'^VS==\4/X*JFZ[;9IHT1:@^]JC +M!OI]+'PO(WQMS.)@Z,!_WCKYK5.W=?*Y*_BK]<^?B8O7-?XV[J!_W'9WV^Z] +MMKO+^T2+2\6^>.]OL&AQJ?@".I>*!FHHO=>[6-10>J]W::"6TKGL6]12.I?] +M!FHHO0&$10VE-X!HH);2&4!8U%(Z`X@&^IS.W->7+D6=Z4R+%FW?0&\ZLX'6 +MO*?S_AJ+&M[3>7]-`RTW\>I-HUJTW,2K-XW:0"VEMU?7SC3J%]"G=(:%&76& +MA1:UE,ZPL(%:2F=8:%%+Z0P+&ZBE=(:%%K64SK"P@5I*9UAH44OI#`L;J*5T +MAH46M93.L+"!6DIG6&A12^D,"QNHI72&A1:UE,ZPL(%:2F=8:%%+Z0P+&ZBE +M=(:%%K64SK"P@5I*9UAH44OI#`L;J*7T_,':F4;]`OJ4GC]8O6E4BUI*SQ_4 +MJ*5TAH46M93.L+"!6DK/ZZV=:=0OH$_I>;W5=4%KSP6MK@NJ44OI]I<]%[2Z +M+JA&OQW%]\!TWX+SPE:+%FW?0._!@`;:X'4>_+"HY74>_&B@#5[GP0^+6E[G +MP8\&6KD^:I%V79]!2]<'T'5]-?H]D/Y^Z&;?CO&?[ENL+%JT!>B^Q:J!UNNK +M__SWU[=$S?H*Z*]OA9:GT'YX9ZU!RU/H#?1.H1JUE)[E-*BE]"QGC5I*SW(: +MU%)ZEK-&JQ-G/R;GQ#%H>>(`=$^<&K6KZCDR@]I5]1Q9C5I*SY$9U%)ZCJQ& +M+:77I1K44GI=:HU:2J]+-:BE]+K4&C64WEL^+&HHO;=\--#J.G3 +MAP"ZUZ$:_=9\AG_2,=SO\%HF\W?U#OH?VWYOXG0'Y_IGT6(3?P&=3=Q`+:6S +M5RUJ*9V]VD`MI7/)M:BE="ZY#=12.I=HI71&^0WTV9<-K\']&YN%B]9?2+]B2PW7W/O+Y3:P +MX0;I<]=PL:D%>W_GM7"QL;^1SM9NP99V]/YJ;V%+.WI_MF_`A7T5W/ZOS0-Y +MM_E:V'I+5P-I[-'1>UF-A>T>';W7U33@9_>F[S@/Y3[@HO47TJ]Y5,,5]_": +MG!GT!UQROY$N=P-NA2D+6^[#JS'5@)]#*GWG^]Y48TSU@,NC$J3_;N`& +M_'5\_KS=1G?_YJ^#Z_<@[<%%ZS?RZM6Q;,$M[L7G7KK/)WW^EGDEZ?S9K\&\N#I7)LL\LO3N38UD)^KR_>-XN*A`G-Y +MZ>!_T]X>%+=_S-S=8^;VCYDGW.)./G?J?^PDWN./+Y2YAR_VN!-#EKN`6 +M]^!S#UWNP>=^PBWNX'.'+G?PN9]PU0_G[WC%IRQ<]L-OI/^?_1IN<3OSF0_X +MP>W,:+;@%K?[4@8#/[C=US+4<(O;^4/;`WYP.W]I:\$M;O<-#4.O],T;\;C; +M;W8S/Z["L0YW"5ON]>5R5W"+>_"YAR[WX',_X1:W^]94`S^XW?>FUG`YC,BP +M,SA]P.4PX@OI#2,:\(/6?;W+T*E1^XTXM.X;T0:O3.T#?M"Z+T6KX0>M^UHT +M`S]HW1>CU?"#UGTUFH$?M.[+T6JX=3A[0S<+/PYG;^C6@%OU=KNKU>^N +M*MAN[GUW-W<)V\T-TM_<%?R@=5\-9^`'K?MRN!I^T+JOAS/P@]9]05P-/VC= +M5\09^$'KOB2NA@UMF-Q7BQG8T+Z1+FT-/VC=UXL9^$'KOF"LAA^T[BO&#/R@ +M=5\R5L,?K^W\&3L>]Z?]:-`K?MJ/'Z]C^OYXC+FM^6C0>?FT'RT:+:I?WKY? +M@G2(UWS,Z/G]EHY#FLU'@]*V_"@TVK:Q;'MRKT# +M7A:],IJFU]?'=&3AYJ/0\/,Q?MJ/0D^+G@:=!X.6'X4N%ETL>ECT,.AF-6]6 +M\V8U;U;S9C5O5O-N->]6\VXU[U;S;C67'S^&%_<;F.@-]Z?]^#$,KZ]5&(9E +M^+0?+7I;E+8_\W3+\FD_&C2.G_:CT/#SY>/3?A0Z_GRD;?'1H/'U:3\*G7Z^ +MO'[:CP:-\Z?]*'3^^?+U:3\*77X^TK;X:-`8/NU'H?'GR_NG_2AT_?E(V^*C +M19-%D]#MYV/\M!\-&J=/^U'H_O/E\]-^%'K\?*1M\=&@/U_>/NU' +MH9<]ZHJ/%KTMRE%WVZ.N^&C0]U%7?!2:[%%7?,SH\'MXJVWYT:`<=>5'H;\' +MOXZZ\J-!.>K*CT)_#WX==>7'C^'X.0B/,;%CTM>EOTMFBR:#+H=S?QA98?/_9S_CG9]Z^KF0[E +MWV7Y*_O/N77,/U^)O\OR5]+/H7RYE +MM40#UX.2*(73$O&5K21*Z\L2\96S)$K7U"!*!5$^<%9+%#A7"Z+C_8JI@BB8 +MK9N)CF%Z6:)@MVXF"J^I07271&%>:Z+?K2NBL)\U4;%U,]$8'_MHY`I2$HWG +M8Q^-9NN*:!H>^VBT6S<33==9$\6Q))K'QSZ:S-85T;P^]M%DMVXF6J;'/GI? +MUTJB93L;1'=)]/YGTH.HV+J9*!Z/?31SB2R)UM=C'\UFZXIHG1_[:+9;-Q-M +MX543E?LM?R5.-='OUA71=C[VT6*W;B;:U\<^XBMK2;3?CWVTF*TK(BIU5T1W +M272DM2:*\P(MH +M7![[:#=;5T3C\=A'N]VZF6A:7PVB5!)-UU03_6Y=$WW;J9Z'H]]A%?*LS0GU[#;??3^2FE.KB'9??3^2FE.KG"L-9$Q)]?X +MLOMH&,S6%=&XV'WT_HI9HRG8??3^2FE.KBFN#:+2G%S3>=9$QIQ<\V;WT8"! +L-<WW8?O;]2FI-K&>T^>G^E-"?7DLZ:R)B3*\ZOFLB8D_\#:2TN*,Z+!0`` +` +end