git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@497 0109f412-320b-0410-ab79-c3e0c5ffbbe6
7620 lines
300 KiB
C++
7620 lines
300 KiB
C++
//------------------------------------------------------------------------------
|
|
// Desc: Routines to support NATIVE to/from internal numeric types and
|
|
// string comparision/shift routines.
|
|
//
|
|
// Tabs: 3
|
|
//
|
|
// Copyright (c) 1991-1993, 1996-1998, 2000, 2002-2006 Novell, Inc. All Rights Reserved.
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of version 2 of the GNU General Public
|
|
// License as published by the Free Software Foundation.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, contact Novell, Inc.
|
|
//
|
|
// To contact Novell about this file by physical or electronic mail,
|
|
// you may find current contact information at www.novell.com
|
|
//
|
|
// $Id: $
|
|
//------------------------------------------------------------------------------
|
|
|
|
#include "ftksys.h"
|
|
|
|
FSTATIC FLMBOOL f_addMetaphone(
|
|
const char * pszStr,
|
|
const char * pszAltStr,
|
|
FLMBYTE * pszMeta,
|
|
FLMUINT * puiMetaOffset,
|
|
FLMBYTE * pszAltMeta,
|
|
FLMUINT * puiAltMetaOffset);
|
|
|
|
FSTATIC void f_metaStrToNum(
|
|
FLMBYTE * pszMeta,
|
|
FLMUINT * puiMeta);
|
|
|
|
#ifdef FLM_DEBUG
|
|
|
|
typedef struct
|
|
{
|
|
const char * pszWord;
|
|
FLMUINT uiMeta;
|
|
FLMUINT uiAltMeta;
|
|
} METAPHONE_MAPPING;
|
|
|
|
static METAPHONE_MAPPING gv_MetaTestTable[] =
|
|
{
|
|
{ "ghislane", 0x4680, 0x4680 },
|
|
{ "ghiradelli", 0x4AC6, 0x4AC6 },
|
|
{ "hugh", 0x3000, 0x3000 },
|
|
{ "san francisco", 0xB82A, 0xB82A },
|
|
{ "van wagner", 0x2858, 0x2858 },
|
|
{ "vanwagner", 0x2858, 0x2858 },
|
|
{ "gnome", 0x8700, 0x8700 },
|
|
{ "write", 0xAC00, 0xAC00 },
|
|
{ "dumb", 0xC700, 0xC700 },
|
|
{ "caesar", 0xBBA0, 0xBBA0 },
|
|
{ "chianti", 0x58C0, 0x58C0 },
|
|
{ "michael", 0x7560, 0x7D60 },
|
|
{ "chemistry", 0x57BC, 0x57BC },
|
|
{ "chorus", 0x5AB0, 0x5AB0 },
|
|
{ "mchugh", 0x7500, 0x7500 },
|
|
{ "czerny", 0xBA80, 0xDA80 },
|
|
{ "focaccia", 0x25D0, 0x25D0 },
|
|
{ "mcclellan", 0x7566, 0x7566 },
|
|
{ "bellocchio", 0x96D0, 0x96D0 },
|
|
{ "bacchus", 0x95B0, 0x95B0 },
|
|
{ "accident", 0x15BC, 0x15BC },
|
|
{ "accede", 0x15BC, 0x15BC },
|
|
{ "succeed", 0xB5BC, 0xB5BC },
|
|
{ "bacci", 0x9D00, 0x9D00 },
|
|
{ "mac caffrey", 0x752A, 0x752A },
|
|
{ "edge", 0x1400, 0x1400 },
|
|
{ "edgar", 0x1C5A, 0x1C5A },
|
|
{ "laugh", 0x6200, 0x6200 },
|
|
{ "caugh", 0x5200, 0x5200 },
|
|
{ "cagney", 0x5580, 0x5580 },
|
|
{ "tagliaro", 0xC56A, 0xC6A0 },
|
|
{ "biaggi", 0x9400, 0x9500 },
|
|
{ "jose", 0x3B00, 0x3B00 },
|
|
{ "yankelovich", 0x1856, 0x1856 },
|
|
{ "bajador", 0x94CA, 0x93CA },
|
|
{ "cabrillo", 0x59A6, 0x59A0 },
|
|
{ "campbell", 0x5796, 0x5796 },
|
|
{ "rogier", 0xA400, 0xA4A0 },
|
|
{ "hochmeier", 0x357A, 0x357A },
|
|
{ "island", 0x168C, 0x168C },
|
|
{ "isle", 0x1600, 0x1600 },
|
|
{ "sugar", 0xD5A0, 0xB5A0 },
|
|
{ "herb", 0x3A90, 0x3A90 },
|
|
{ "mannheim", 0x7870, 0x7870 },
|
|
{ "snider", 0xB8CA, 0xD8CA },
|
|
{ "schneider", 0xD8CA, 0xB8CA },
|
|
{ "smith", 0xB700, 0xD7C0 },
|
|
{ "schmidt", 0xD7C0, 0xB7C0 },
|
|
{ "school", 0xB560, 0xB560 },
|
|
{ "schenker", 0xD85A, 0xB585 },
|
|
{ "resnais", 0xAB80, 0xAB8B },
|
|
{ "artois", 0x1AC0, 0x1ACB },
|
|
{ "celebration", 0xB69A, 0xB69A },
|
|
{ "thomas", 0xC7B0, 0xC7B0 },
|
|
{ "uomo", 0x1700, 0x1700 },
|
|
{ "womo", 0x1700, 0x2700 },
|
|
{ "arnow", 0x1A80, 0x1A82 },
|
|
{ "arnoff", 0x1A82, 0x1A82 },
|
|
{ "filipowicz", 0x269C, 0x2692 },
|
|
{ "breaux", 0x9A00, 0x9A00 },
|
|
{ "zhao", 0x4000, 0x4000 },
|
|
{ NULL, 0x0000, 0x0000 }
|
|
};
|
|
#endif
|
|
|
|
#define UNICODE_DECIMAL_DIGIT_MASK 0x08
|
|
#define UNICODE_ALPHABETIC_MASK 0x04
|
|
#define UNICODE_UPPERCASE_MASK 0x02
|
|
#define UNICODE_LOWERCASE_MASK 0x01
|
|
|
|
const unsigned char UnicodeProperties[ 32768] =
|
|
{
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0,
|
|
6, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 96, 0, 0,
|
|
5, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 80, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 5, 0, 0, 80, 0, 0,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 96, 102, 102, 102, 101,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 80, 85, 85, 85, 85,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 86, 86, 86, 86,
|
|
86, 86, 86, 86, 85, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 86, 86, 85,
|
|
86, 101, 101, 102, 86, 102, 85, 102, 102, 86, 101, 102, 101, 85, 102, 86,
|
|
101, 101, 101, 102, 86, 85, 101, 102, 86, 102, 86, 86, 101, 84, 101, 85,
|
|
68, 68, 100, 86, 69, 100, 86, 86, 86, 86, 86, 86, 86, 86, 85, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 86, 69, 101, 102, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 85, 80, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 68, 68, 68,
|
|
85, 0, 0, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0,
|
|
85, 85, 80, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
|
|
0, 0, 0, 96, 102, 96, 96, 102, 86, 102, 102, 102, 102, 102, 102, 102,
|
|
102, 6, 102, 102, 102, 102, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 80, 85, 102, 101, 85, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 85, 85, 101, 6, 86, 101, 0, 0,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 0, 0, 0, 0, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
102, 86, 86, 86, 86, 86, 86, 80, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 0, 101, 0, 0, 0,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 6, 102, 102, 102, 102, 102, 102, 102,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 96, 4, 0, 0, 0,
|
|
5, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 4, 68, 4,
|
|
4, 64, 64, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 64, 0, 0, 68, 64, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 0, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0,
|
|
136, 136, 136, 136, 136, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 4, 68, 68, 68, 64, 0,
|
|
4, 68, 68, 68, 64, 0, 4, 68, 136, 136, 136, 136, 136, 68, 64, 4,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
0, 0, 0, 0, 0, 0, 4, 68, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 4, 68,
|
|
68, 68, 68, 68, 68, 68, 64, 0, 64, 0, 0, 0, 68, 68, 68, 68,
|
|
68, 68, 0, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 4, 68, 68, 68, 64, 4, 64, 4, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 64, 64, 0, 68, 68, 0, 4, 68,
|
|
68, 68, 64, 4, 64, 4, 64, 0, 0, 0, 0, 4, 0, 0, 68, 4,
|
|
68, 68, 0, 136, 136, 136, 136, 136, 68, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 4, 68, 68, 64, 0, 4, 64, 4, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 64, 68, 4, 64, 68, 0, 0, 68,
|
|
68, 64, 0, 4, 64, 4, 64, 0, 0, 0, 0, 0, 4, 68, 64, 64,
|
|
0, 0, 0, 136, 136, 136, 136, 136, 68, 68, 64, 0, 0, 0, 0, 0,
|
|
4, 68, 4, 68, 68, 68, 68, 4, 68, 4, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 64, 68, 4, 68, 68, 0, 4, 68,
|
|
68, 68, 68, 4, 68, 4, 64, 0, 64, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 0, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 4, 68, 68, 68, 64, 4, 64, 4, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 64, 68, 4, 68, 68, 0, 4, 68,
|
|
68, 68, 0, 4, 64, 4, 64, 0, 0, 0, 0, 68, 0, 0, 68, 4,
|
|
68, 0, 0, 136, 136, 136, 136, 136, 4, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 68, 4, 68, 68, 64, 0, 68, 64, 68, 68, 0, 4, 64, 64, 68,
|
|
0, 4, 64, 0, 68, 64, 0, 68, 68, 68, 68, 4, 68, 0, 0, 68,
|
|
68, 64, 0, 68, 64, 68, 64, 0, 0, 0, 0, 4, 0, 0, 0, 0,
|
|
0, 0, 0, 8, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 4, 68, 68, 68, 64, 68, 64, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 68, 68, 4, 68, 68, 0, 0, 68,
|
|
68, 68, 64, 68, 64, 68, 64, 0, 0, 0, 4, 64, 0, 0, 0, 0,
|
|
68, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 68, 4, 68, 68, 68, 64, 68, 64, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 68, 68, 4, 68, 68, 0, 4, 68,
|
|
68, 68, 64, 68, 64, 68, 64, 0, 0, 0, 4, 64, 0, 0, 0, 64,
|
|
68, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 68, 4, 68, 68, 68, 64, 68, 64, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 68,
|
|
68, 68, 0, 68, 64, 68, 64, 0, 0, 0, 0, 4, 0, 0, 0, 0,
|
|
68, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 68, 4, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 4, 68, 68, 68, 68, 4, 0,
|
|
68, 68, 68, 64, 0, 0, 0, 4, 68, 68, 64, 64, 68, 68, 68, 68,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0,
|
|
68, 68, 68, 64, 0, 0, 4, 0, 136, 136, 136, 136, 136, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 64, 64, 4, 64, 64, 4, 0, 0, 0, 68, 68, 4, 68, 68, 68,
|
|
4, 68, 4, 4, 0, 68, 4, 68, 68, 68, 68, 68, 68, 4, 68, 0,
|
|
68, 68, 64, 64, 0, 0, 4, 0, 136, 136, 136, 136, 136, 0, 68, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 64, 0, 0, 4, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 0, 0, 0, 68, 68, 0, 0, 68, 68, 68, 68, 4, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 4, 68, 68, 4, 64, 68, 68, 68, 64, 0, 64, 64, 0, 0, 0,
|
|
136, 136, 136, 136, 136, 0, 0, 0, 68, 68, 68, 68, 68, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
|
|
102, 102, 102, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 4,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 64, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0,
|
|
68, 68, 68, 64, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 64, 64, 68, 68, 0, 68, 68, 68, 64, 64, 68, 68, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 64, 64, 68, 68, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 64, 64, 68, 68, 0, 68, 68, 68, 64,
|
|
64, 68, 68, 0, 68, 68, 68, 64, 68, 68, 68, 64, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 64, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 64, 64, 68, 68, 0, 68, 68, 68, 64,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 64, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0,
|
|
0, 0, 0, 0, 8, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 64, 4, 68, 68, 68, 64, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 64, 0, 68, 64, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 64, 68, 68, 68, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 64, 68, 64, 68, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 64, 0, 0, 0, 0, 0, 0, 4, 0, 0, 64, 0,
|
|
136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0,
|
|
68, 68, 68, 68, 68, 68, 0, 0, 68, 68, 68, 68, 64, 0, 0, 0,
|
|
0, 0, 0, 136, 136, 136, 136, 136, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 0, 68, 68, 64, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
85, 85, 85, 85, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 85, 85, 85, 0, 0,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
|
|
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 0, 0, 0,
|
|
85, 85, 85, 85, 102, 102, 102, 102, 85, 85, 85, 0, 102, 102, 102, 0,
|
|
85, 85, 85, 85, 102, 102, 102, 102, 85, 85, 85, 85, 102, 102, 102, 102,
|
|
85, 85, 85, 0, 102, 102, 102, 0, 85, 85, 85, 85, 6, 6, 6, 6,
|
|
85, 85, 85, 85, 102, 102, 102, 102, 85, 85, 85, 85, 85, 85, 85, 0,
|
|
85, 85, 85, 85, 68, 68, 68, 68, 85, 85, 85, 85, 68, 68, 68, 68,
|
|
85, 85, 85, 85, 68, 68, 68, 68, 85, 85, 80, 85, 102, 102, 64, 80,
|
|
0, 85, 80, 85, 102, 102, 64, 0, 85, 85, 0, 85, 102, 102, 0, 0,
|
|
85, 85, 85, 85, 102, 102, 96, 0, 0, 85, 80, 85, 102, 102, 64, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 96, 0, 6, 0, 86, 102, 85, 102, 101, 6, 0, 6, 102, 102, 0,
|
|
0, 0, 96, 96, 96, 102, 102, 5, 102, 6, 84, 68, 69, 0, 5, 102,
|
|
0, 0, 6, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
102, 102, 102, 102, 102, 102, 102, 102, 85, 85, 85, 85, 85, 85, 85, 85,
|
|
68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 34, 34, 34,
|
|
34, 34, 34, 34, 34, 34, 34, 34, 17, 17, 17, 17, 17, 17, 17, 17,
|
|
17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 4, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
4, 68, 68, 68, 68, 0, 0, 0, 4, 68, 68, 0, 68, 68, 64, 0,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0, 0, 4, 68,
|
|
4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 68, 68,
|
|
0, 0, 4, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 64, 0, 4, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 64, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
85, 85, 85, 80, 0, 0, 0, 0, 0, 5, 85, 85, 0, 0, 4, 68,
|
|
68, 68, 68, 68, 64, 68, 68, 68, 68, 68, 68, 64, 68, 68, 64, 64,
|
|
68, 4, 64, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 0, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 68, 68, 68, 68, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 68, 68, 64, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 136, 136, 0, 0, 0,
|
|
6, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 96, 0, 0,
|
|
5, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 80, 0, 0,
|
|
0, 0, 0, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
|
|
68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 64,
|
|
0, 68, 68, 68, 0, 68, 68, 68, 0, 68, 68, 68, 0, 68, 64, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
|
|
#define HANDLE_NEGATIVE \
|
|
if( value < 0) \
|
|
{ *ptr++ = '-'; \
|
|
absValue = (FLMUINT)(-(value)); \
|
|
} \
|
|
else absValue = (FLMUINT)value;
|
|
|
|
#define HANDLE_DNEGATIVE \
|
|
if( value < 0) \
|
|
{ *ptr++ = '-'; \
|
|
absValue = (FLMUINT)(-(value)); \
|
|
} \
|
|
else absValue = (FLMUINT)value;
|
|
|
|
#define PUSH_DIGITS( v) \
|
|
{register FLMUINT reg = v; \
|
|
do{ *sp++ = (char)((reg % 10) + '0'); \
|
|
} while( reg /= 10); \
|
|
}
|
|
|
|
#define POP_DIGITS \
|
|
while( stack < sp--) \
|
|
*ptr++ = *sp; \
|
|
*ptr = '\0';
|
|
|
|
/****************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FLMBOOL FLMAPI f_isWhitespace(
|
|
FLMUNICODE uzChar)
|
|
{
|
|
return( f_getXmlObjPtr()->isWhitespace( uzChar));
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Unsigned word to NATIVE value - null terminate the native string
|
|
Return: char pointer to the NULL byte in the native string
|
|
Notes: Radix not defined because it is not needed
|
|
****************************************************************************/
|
|
char * FLMAPI f_uwtoa(
|
|
FLMUINT16 value,
|
|
char * ptr)
|
|
{
|
|
char stack[ 10];
|
|
char * sp = stack;
|
|
|
|
PUSH_DIGITS( value);
|
|
|
|
POP_DIGITS;
|
|
|
|
return( ptr);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Native to UDWORD value. Supports 0x<HEX> codes. Non digits NOT ALLOWED
|
|
NO LEADING SPACES ALLOWED ! ! ! No checks for overflow over 4 bytes!
|
|
Return: UDWORD value of what is being pointed to
|
|
Notes: This algorithm is NOT standard, assumes UNSIGNED char arithmetic
|
|
so (20 - 30) should be 245 and NOT -10.
|
|
****************************************************************************/
|
|
FLMUINT FLMAPI f_atoud(
|
|
const char * pszBuf,
|
|
FLMBOOL bAllowUnprefixedHex)
|
|
{
|
|
FLMUINT uiValue;
|
|
FLMBOOL bAllowHex = FALSE;
|
|
|
|
if( *pszBuf == NATIVE_ZERO &&
|
|
(*(pszBuf + 1) == NATIVE_LOWER_X || *(pszBuf + 1) == NATIVE_UPPER_X))
|
|
{
|
|
pszBuf += 2;
|
|
bAllowHex = TRUE;
|
|
}
|
|
else if( bAllowUnprefixedHex)
|
|
{
|
|
bAllowHex = TRUE;
|
|
}
|
|
|
|
uiValue = 0;
|
|
while( *pszBuf)
|
|
{
|
|
if( *pszBuf >= '0' && *pszBuf <= '9')
|
|
{
|
|
if( !bAllowHex)
|
|
{
|
|
uiValue *= 10;
|
|
}
|
|
else
|
|
{
|
|
uiValue <<= 4;
|
|
}
|
|
|
|
uiValue += (FLMUINT)(*pszBuf - '0');
|
|
}
|
|
else if( bAllowHex)
|
|
{
|
|
if( *pszBuf >= 'A' && *pszBuf <= 'F')
|
|
{
|
|
uiValue <<= 4;
|
|
uiValue += (FLMUINT)(*pszBuf - 'A') + 10;
|
|
}
|
|
else if( *pszBuf >= 'a' && *pszBuf <= 'f')
|
|
{
|
|
uiValue <<= 4;
|
|
uiValue += (FLMUINT)(*pszBuf - 'a') + 10;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
pszBuf++;
|
|
}
|
|
|
|
return( uiValue);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Native to FLMUINT64 value. Supports 0x<HEX> codes. Non digits
|
|
NOT ALLOWED NO LEADING SPACES ALLOWED! No checks for overflow
|
|
over 4 bytes!
|
|
Return: FLMUINT64 value of what is being pointed to
|
|
Notes: This algorithm is NOT standard, assumes UNSIGNED char arithmetic
|
|
so (20 - 30) should be 245 and NOT -10.
|
|
****************************************************************************/
|
|
FLMUINT64 FLMAPI f_atou64(
|
|
const char * pszBuf)
|
|
{
|
|
FLMUINT64 ui64Value;
|
|
FLMBOOL bAllowHex = FALSE;
|
|
|
|
if( *pszBuf == NATIVE_ZERO &&
|
|
(*(pszBuf + 1) == NATIVE_LOWER_X || *(pszBuf + 1) == NATIVE_UPPER_X))
|
|
{
|
|
pszBuf += 2;
|
|
bAllowHex = TRUE;
|
|
}
|
|
|
|
ui64Value = 0;
|
|
while( *pszBuf)
|
|
{
|
|
if( *pszBuf >= '0' && *pszBuf <= '9')
|
|
{
|
|
if( !bAllowHex)
|
|
{
|
|
ui64Value *= 10;
|
|
}
|
|
else
|
|
{
|
|
ui64Value <<= 4;
|
|
}
|
|
|
|
ui64Value += (FLMUINT64)(*pszBuf - '0');
|
|
}
|
|
else if( bAllowHex)
|
|
{
|
|
if( *pszBuf >= 'A' && *pszBuf <= 'F')
|
|
{
|
|
ui64Value <<= 4;
|
|
ui64Value += (FLMUINT64)(*pszBuf - 'A') + 10;
|
|
}
|
|
else if( *pszBuf >= 'a' && *pszBuf <= 'f')
|
|
{
|
|
ui64Value <<= 4;
|
|
ui64Value += (FLMUINT64)(*pszBuf - 'a') + 10;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
pszBuf++;
|
|
}
|
|
|
|
return( ui64Value);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Unsigned double (4 byte) number to native value & null terminate
|
|
Return: char pointer to the NULL byte in the native string
|
|
Notes: Radix not defined.
|
|
****************************************************************************/
|
|
char * FLMAPI f_udtoa(
|
|
FLMUINT value,
|
|
char * ptr)
|
|
{
|
|
char stack[ 10];
|
|
char * sp = stack;
|
|
|
|
PUSH_DIGITS( value);
|
|
|
|
POP_DIGITS;
|
|
|
|
return( ptr);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Word to native value - null terminate the native string
|
|
Return: char pointer to the NULL byte in the native string
|
|
Notes: Radix not defined because it is not needed
|
|
****************************************************************************/
|
|
char * FLMAPI f_wtoa(
|
|
FLMINT16 value,
|
|
char * ptr)
|
|
{
|
|
char stack[ 10];
|
|
char * sp = stack;
|
|
FLMUINT absValue;
|
|
|
|
HANDLE_NEGATIVE;
|
|
|
|
PUSH_DIGITS( absValue);
|
|
|
|
POP_DIGITS;
|
|
|
|
return( ptr);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Double (4 byte) number to native value - null terminate the string
|
|
Return: char pointer to the NULL byte in the native string
|
|
****************************************************************************/
|
|
char * FLMAPI f_dtoa(
|
|
FLMINT value,
|
|
char * ptr)
|
|
{
|
|
char stack[ 10];
|
|
char * sp = stack;
|
|
FLMUINT absValue;
|
|
|
|
HANDLE_DNEGATIVE;
|
|
|
|
PUSH_DIGITS( absValue);
|
|
|
|
POP_DIGITS;
|
|
|
|
return( ptr);
|
|
}
|
|
|
|
/*****************************************************************************
|
|
Desc: Convert unsigned 64 bit value to ASCII.
|
|
*****************************************************************************/
|
|
char * FLMAPI f_ui64toa(
|
|
FLMUINT64 ui64Value,
|
|
char * pszAscii)
|
|
{
|
|
char szStack [30];
|
|
char * pszStack = &szStack [0];
|
|
|
|
do
|
|
{
|
|
*pszStack++ = (char)((ui64Value % 10) + '0');
|
|
}
|
|
while ((ui64Value /= 10) > 0);
|
|
|
|
pszStack--;
|
|
for (;;)
|
|
{
|
|
*pszAscii++ = *pszStack;
|
|
if (pszStack == &szStack [0])
|
|
{
|
|
break;
|
|
}
|
|
pszStack--;
|
|
}
|
|
*pszAscii = 0;
|
|
|
|
// Return pointer to terminating null character
|
|
|
|
return( pszAscii);
|
|
}
|
|
|
|
/*****************************************************************************
|
|
Desc: Convert signed 64 bit value to ASCII.
|
|
*****************************************************************************/
|
|
char * FLMAPI f_i64toa(
|
|
FLMINT64 i64Value,
|
|
char * pszAscii)
|
|
{
|
|
if (i64Value < 0)
|
|
{
|
|
*pszAscii++ = '-';
|
|
i64Value = -i64Value;
|
|
}
|
|
return( f_ui64toa( (FLMUINT64)i64Value, pszAscii));
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Ascii to integer
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_atoi(
|
|
const char * pszStr)
|
|
{
|
|
return( f_atod( pszStr));
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: native to long
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_atol(
|
|
const char * pszStr)
|
|
{
|
|
return( f_atod( pszStr));
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: native to DWORD value. Supports 0x<HEX> codes. Non digits NOT ALLOWED
|
|
NO LEADING SPACES ALLOWED ! ! ! No checks for overflow over 4 bytes!
|
|
Return: DWORD value of what is being pointed to
|
|
Notes: This algorithm is NOT standard! Assumes UNSIGNED char arithmetic
|
|
so (20 - 30) should be 245 and NOT -10.
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_atod(
|
|
const char * pszBuf)
|
|
{
|
|
FLMINT iValue;
|
|
FLMBOOL bNeg = FALSE;
|
|
|
|
if( *pszBuf == '-')
|
|
{
|
|
bNeg = TRUE;
|
|
pszBuf++;
|
|
}
|
|
else if( *pszBuf == '+')
|
|
{
|
|
pszBuf++;
|
|
}
|
|
|
|
iValue = (FLMINT)f_atoud( pszBuf);
|
|
return( bNeg ? -iValue : iValue);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Utility function to return the maximum size of a hex number
|
|
represented as a string.
|
|
****************************************************************************/
|
|
FINLINE FLMUINT maxHexSize(
|
|
FLMUINT uiSizeOfPtr)
|
|
{
|
|
return uiSizeOfPtr * 2;
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Utility function to return the maximum size of a decimal number
|
|
represented as a string.
|
|
****************************************************************************/
|
|
FINLINE FLMUINT maxDecimalSize(
|
|
FLMUINT uiSizeOfPtr)
|
|
{
|
|
switch (uiSizeOfPtr)
|
|
{
|
|
case 4:
|
|
return 10;
|
|
case 8:
|
|
return 20;
|
|
default:
|
|
f_assert( 0);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Returns the length of a unicode string
|
|
****************************************************************************/
|
|
FLMUINT FLMAPI f_unilen(
|
|
const FLMUNICODE * puzStr)
|
|
{
|
|
FLMUINT uiLen = 0;
|
|
|
|
if( !puzStr)
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
while( *puzStr)
|
|
{
|
|
puzStr++;
|
|
uiLen++;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( uiLen);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Copies a unicode string
|
|
****************************************************************************/
|
|
FLMUNICODE * FLMAPI f_unicpy(
|
|
FLMUNICODE * puzDestStr,
|
|
const FLMUNICODE * puzSrcStr)
|
|
{
|
|
const FLMUNICODE * puzSrc = puzSrcStr;
|
|
FLMUNICODE * puzDest = puzDestStr;
|
|
|
|
while( *puzSrc)
|
|
{
|
|
*puzDest++ = *puzSrc++;
|
|
}
|
|
|
|
*puzDest = 0;
|
|
return( puzDestStr);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: A rather trivial unicode monocase function.
|
|
****************************************************************************/
|
|
FLMUNICODE FLMAPI f_uniToLower(
|
|
FLMUNICODE uChar)
|
|
{
|
|
static const FLMUNICODE basicAlpha[ 0x600] =
|
|
{
|
|
0x0000, /* Monocases to self */
|
|
0x0001, /* Monocases to self */
|
|
0x0002, /* Monocases to self */
|
|
0x0003, /* Monocases to self */
|
|
0x0004, /* Monocases to self */
|
|
0x0005, /* Monocases to self */
|
|
0x0006, /* Monocases to self */
|
|
0x0007, /* Monocases to self */
|
|
0x0008, /* Monocases to self */
|
|
0x0009, /* Monocases to self */
|
|
0x000A, /* Monocases to self */
|
|
0x000B, /* Monocases to self */
|
|
0x000C, /* Monocases to self */
|
|
0x000D, /* Monocases to self */
|
|
0x000E, /* Monocases to self */
|
|
0x000F, /* Monocases to self */
|
|
0x0010, /* Monocases to self */
|
|
0x0011, /* Monocases to self */
|
|
0x0012, /* Monocases to self */
|
|
0x0013, /* Monocases to self */
|
|
0x0014, /* Monocases to self */
|
|
0x0015, /* Monocases to self */
|
|
0x0016, /* Monocases to self */
|
|
0x0017, /* Monocases to self */
|
|
0x0018, /* Monocases to self */
|
|
0x0019, /* Monocases to self */
|
|
0x001A, /* Monocases to self */
|
|
0x001B, /* Monocases to self */
|
|
0x001C, /* Monocases to self */
|
|
0x001D, /* Monocases to self */
|
|
0x001E, /* Monocases to self */
|
|
0x001F, /* Monocases to self */
|
|
0x0020, /* Monocases to self */
|
|
0x0021, /* Monocases to self */
|
|
0x0022, /* Monocases to self */
|
|
0x0023, /* Monocases to self */
|
|
0x0024, /* Monocases to self */
|
|
0x0025, /* Monocases to self */
|
|
0x0026, /* Monocases to self */
|
|
0x0027, /* Monocases to self */
|
|
0x0028, /* Monocases to self */
|
|
0x0029, /* Monocases to self */
|
|
0x002A, /* Monocases to self */
|
|
0x002B, /* Monocases to self */
|
|
0x002C, /* Monocases to self */
|
|
0x002D, /* Monocases to self */
|
|
0x002E, /* Monocases to self */
|
|
0x002F, /* Monocases to self */
|
|
0x0030, /* Monocases to self */
|
|
0x0031, /* Monocases to self */
|
|
0x0032, /* Monocases to self */
|
|
0x0033, /* Monocases to self */
|
|
0x0034, /* Monocases to self */
|
|
0x0035, /* Monocases to self */
|
|
0x0036, /* Monocases to self */
|
|
0x0037, /* Monocases to self */
|
|
0x0038, /* Monocases to self */
|
|
0x0039, /* Monocases to self */
|
|
0x003A, /* Monocases to self */
|
|
0x003B, /* Monocases to self */
|
|
0x003C, /* Monocases to self */
|
|
0x003D, /* Monocases to self */
|
|
0x003E, /* Monocases to self */
|
|
0x003F, /* Monocases to self */
|
|
0x0040, /* Monocases to self */
|
|
0x0061, /* LATIN LETTER A */
|
|
0x0062, /* LATIN LETTER B */
|
|
0x0063, /* LATIN LETTER C */
|
|
0x0064, /* LATIN LETTER D */
|
|
0x0065, /* LATIN LETTER E */
|
|
0x0066, /* LATIN LETTER F */
|
|
0x0067, /* LATIN LETTER G */
|
|
0x0068, /* LATIN LETTER H */
|
|
0x0069, /* LATIN LETTER I */
|
|
0x006A, /* LATIN LETTER J */
|
|
0x006B, /* LATIN LETTER K */
|
|
0x006C, /* LATIN LETTER L */
|
|
0x006D, /* LATIN LETTER M */
|
|
0x006E, /* LATIN LETTER N */
|
|
0x006F, /* LATIN LETTER O */
|
|
0x0070, /* LATIN LETTER P */
|
|
0x0071, /* LATIN LETTER Q */
|
|
0x0072, /* LATIN LETTER R */
|
|
0x0073, /* LATIN LETTER S */
|
|
0x0074, /* LATIN LETTER T */
|
|
0x0075, /* LATIN LETTER U */
|
|
0x0076, /* LATIN LETTER V */
|
|
0x0077, /* LATIN LETTER W */
|
|
0x0078, /* LATIN LETTER X */
|
|
0x0079, /* LATIN LETTER Y */
|
|
0x007A, /* LATIN LETTER Z */
|
|
0x005B, /* Monocases to self */
|
|
0x005C, /* Monocases to self */
|
|
0x005D, /* Monocases to self */
|
|
0x005E, /* Monocases to self */
|
|
0x005F, /* Monocases to self */
|
|
0x0060, /* Monocases to self */
|
|
0x0061, /* Monocases to self */
|
|
0x0062, /* Monocases to self */
|
|
0x0063, /* Monocases to self */
|
|
0x0064, /* Monocases to self */
|
|
0x0065, /* Monocases to self */
|
|
0x0066, /* Monocases to self */
|
|
0x0067, /* Monocases to self */
|
|
0x0068, /* Monocases to self */
|
|
0x0069, /* Monocases to self */
|
|
0x006A, /* Monocases to self */
|
|
0x006B, /* Monocases to self */
|
|
0x006C, /* Monocases to self */
|
|
0x006D, /* Monocases to self */
|
|
0x006E, /* Monocases to self */
|
|
0x006F, /* Monocases to self */
|
|
0x0070, /* Monocases to self */
|
|
0x0071, /* Monocases to self */
|
|
0x0072, /* Monocases to self */
|
|
0x0073, /* Monocases to self */
|
|
0x0074, /* Monocases to self */
|
|
0x0075, /* Monocases to self */
|
|
0x0076, /* Monocases to self */
|
|
0x0077, /* Monocases to self */
|
|
0x0078, /* Monocases to self */
|
|
0x0079, /* Monocases to self */
|
|
0x007A, /* Monocases to self */
|
|
0x007B, /* Monocases to self */
|
|
0x007C, /* Monocases to self */
|
|
0x007D, /* Monocases to self */
|
|
0x007E, /* Monocases to self */
|
|
0x007F, /* Monocases to self */
|
|
0x0080, /* Monocases to self */
|
|
0x0081, /* Monocases to self */
|
|
0x0082, /* Monocases to self */
|
|
0x0083, /* Monocases to self */
|
|
0x0084, /* Monocases to self */
|
|
0x0085, /* Monocases to self */
|
|
0x0086, /* Monocases to self */
|
|
0x0087, /* Monocases to self */
|
|
0x0088, /* Monocases to self */
|
|
0x0089, /* Monocases to self */
|
|
0x008A, /* Monocases to self */
|
|
0x008B, /* Monocases to self */
|
|
0x008C, /* Monocases to self */
|
|
0x008D, /* Monocases to self */
|
|
0x008E, /* Monocases to self */
|
|
0x008F, /* Monocases to self */
|
|
0x0090, /* Monocases to self */
|
|
0x0091, /* Monocases to self */
|
|
0x0092, /* Monocases to self */
|
|
0x0093, /* Monocases to self */
|
|
0x0094, /* Monocases to self */
|
|
0x0095, /* Monocases to self */
|
|
0x0096, /* Monocases to self */
|
|
0x0097, /* Monocases to self */
|
|
0x0098, /* Monocases to self */
|
|
0x0099, /* Monocases to self */
|
|
0x009A, /* Monocases to self */
|
|
0x009B, /* Monocases to self */
|
|
0x009C, /* Monocases to self */
|
|
0x009D, /* Monocases to self */
|
|
0x009E, /* Monocases to self */
|
|
0x009F, /* Monocases to self */
|
|
0x00A0, /* Monocases to self */
|
|
0x00A1, /* Monocases to self */
|
|
0x00A2, /* Monocases to self */
|
|
0x00A3, /* Monocases to self */
|
|
0x00A4, /* Monocases to self */
|
|
0x00A5, /* Monocases to self */
|
|
0x00A6, /* Monocases to self */
|
|
0x00A7, /* Monocases to self */
|
|
0x00A8, /* Monocases to self */
|
|
0x00A9, /* Monocases to self */
|
|
0x00AA, /* Monocases to self */
|
|
0x00AB, /* Monocases to self */
|
|
0x00AC, /* Monocases to self */
|
|
0x00AD, /* Monocases to self */
|
|
0x00AE, /* Monocases to self */
|
|
0x00AF, /* Monocases to self */
|
|
0x00B0, /* Monocases to self */
|
|
0x00B1, /* Monocases to self */
|
|
0x00B2, /* Monocases to self */
|
|
0x00B3, /* Monocases to self */
|
|
0x00B4, /* Monocases to self */
|
|
0x00B5, /* Monocases to self */
|
|
0x00B6, /* Monocases to self */
|
|
0x00B7, /* Monocases to self */
|
|
0x00B8, /* Monocases to self */
|
|
0x00B9, /* Monocases to self */
|
|
0x00BA, /* Monocases to self */
|
|
0x00BB, /* Monocases to self */
|
|
0x00BC, /* Monocases to self */
|
|
0x00BD, /* Monocases to self */
|
|
0x00BE, /* Monocases to self */
|
|
0x00BF, /* Monocases to self */
|
|
0x00E0, /* LATIN LETTER A GRAVE */
|
|
0x00E1, /* LATIN LETTER A ACUTE */
|
|
0x00E2, /* LATIN LETTER A CIRCUMFLEX */
|
|
0x00E3, /* LATIN LETTER A TILDE */
|
|
0x00E4, /* LATIN LETTER A DIAERESIS */
|
|
0x00E5, /* LATIN LETTER A RING */
|
|
0x00E6, /* LATIN LETTER A E */
|
|
0x00E7, /* LATIN LETTER C CEDILLA */
|
|
0x00E8, /* LATIN LETTER E GRAVE */
|
|
0x00E9, /* LATIN LETTER E ACUTE */
|
|
0x00EA, /* LATIN LETTER E CIRCUMFLEX */
|
|
0x00EB, /* LATIN LETTER E DIAERESIS */
|
|
0x00EC, /* LATIN LETTER I GRAVE */
|
|
0x00ED, /* LATIN LETTER I ACUTE */
|
|
0x00EE, /* LATIN LETTER I CIRCUMFLEX */
|
|
0x00EF, /* LATIN LETTER I DIAERESIS */
|
|
0x00F0, /* LATIN LETTER ETH */
|
|
0x00F1, /* LATIN LETTER N TILDE */
|
|
0x00F2, /* LATIN LETTER O GRAVE */
|
|
0x00F3, /* LATIN LETTER O ACUTE */
|
|
0x00F4, /* LATIN LETTER O CIRCUMFLEX */
|
|
0x00F5, /* LATIN LETTER O TILDE */
|
|
0x00F6, /* LATIN LETTER O DIAERESIS */
|
|
0x00D7, /* Monocases to self */
|
|
0x00F8, /* LATIN LETTER O SLASH */
|
|
0x00F9, /* LATIN LETTER U GRAVE */
|
|
0x00FA, /* LATIN LETTER U ACUTE */
|
|
0x00FB, /* LATIN LETTER U CIRCUMFLEX */
|
|
0x00FC, /* LATIN LETTER U DIAERESIS */
|
|
0x00FD, /* LATIN LETTER Y ACUTE */
|
|
0x00FE, /* LATIN LETTER THORN */
|
|
0x00DF, /* Monocases to self */
|
|
0x00E0, /* Monocases to self */
|
|
0x00E1, /* Monocases to self */
|
|
0x00E2, /* Monocases to self */
|
|
0x00E3, /* Monocases to self */
|
|
0x00E4, /* Monocases to self */
|
|
0x00E5, /* Monocases to self */
|
|
0x00E6, /* Monocases to self */
|
|
0x00E7, /* Monocases to self */
|
|
0x00E8, /* Monocases to self */
|
|
0x00E9, /* Monocases to self */
|
|
0x00EA, /* Monocases to self */
|
|
0x00EB, /* Monocases to self */
|
|
0x00EC, /* Monocases to self */
|
|
0x00ED, /* Monocases to self */
|
|
0x00EE, /* Monocases to self */
|
|
0x00EF, /* Monocases to self */
|
|
0x00F0, /* Monocases to self */
|
|
0x00F1, /* Monocases to self */
|
|
0x00F2, /* Monocases to self */
|
|
0x00F3, /* Monocases to self */
|
|
0x00F4, /* Monocases to self */
|
|
0x00F5, /* Monocases to self */
|
|
0x00F6, /* Monocases to self */
|
|
0x00F7, /* Monocases to self */
|
|
0x00F8, /* Monocases to self */
|
|
0x00F9, /* Monocases to self */
|
|
0x00FA, /* Monocases to self */
|
|
0x00FB, /* Monocases to self */
|
|
0x00FC, /* Monocases to self */
|
|
0x00FD, /* Monocases to self */
|
|
0x00FE, /* Monocases to self */
|
|
0x00FF, /* Monocases to self */
|
|
0x0101, /* LATIN LETTER A MACRON */
|
|
0x0101, /* Monocases to self */
|
|
0x0103, /* LATIN LETTER A BREVE */
|
|
0x0103, /* Monocases to self */
|
|
0x0105, /* LATIN LETTER A OGONEK */
|
|
0x0105, /* Monocases to self */
|
|
0x0107, /* LATIN LETTER C ACUTE */
|
|
0x0107, /* Monocases to self */
|
|
0x0109, /* LATIN LETTER C CIRCUMFLEX */
|
|
0x0109, /* Monocases to self */
|
|
0x010B, /* LATIN LETTER C DOT */
|
|
0x010B, /* Monocases to self */
|
|
0x010D, /* LATIN LETTER C HACEK */
|
|
0x010D, /* Monocases to self */
|
|
0x010F, /* LATIN LETTER D HACEK */
|
|
0x010F, /* Monocases to self */
|
|
0x0111, /* LATIN LETTER D BAR */
|
|
0x0111, /* Monocases to self */
|
|
0x0113, /* LATIN LETTER E MACRON */
|
|
0x0113, /* Monocases to self */
|
|
0x0115, /* LATIN LETTER E BREVE */
|
|
0x0115, /* Monocases to self */
|
|
0x0117, /* LATIN LETTER E DOT */
|
|
0x0117, /* Monocases to self */
|
|
0x0119, /* LATIN LETTER E OGONEK */
|
|
0x0119, /* Monocases to self */
|
|
0x011B, /* LATIN LETTER E HACEK */
|
|
0x011B, /* Monocases to self */
|
|
0x011D, /* LATIN LETTER G CIRCUMFLEX */
|
|
0x011D, /* Monocases to self */
|
|
0x011F, /* LATIN LETTER G BREVE */
|
|
0x011F, /* Monocases to self */
|
|
0x0121, /* LATIN LETTER G DOT */
|
|
0x0121, /* Monocases to self */
|
|
0x0123, /* LATIN LETTER G CEDILLA */
|
|
0x0123, /* Monocases to self */
|
|
0x0125, /* LATIN LETTER H CIRCUMFLEX */
|
|
0x0125, /* Monocases to self */
|
|
0x0127, /* LATIN LETTER H BAR */
|
|
0x0127, /* Monocases to self */
|
|
0x0129, /* LATIN LETTER I TILDE */
|
|
0x0129, /* Monocases to self */
|
|
0x012B, /* LATIN LETTER I MACRON */
|
|
0x012B, /* Monocases to self */
|
|
0x012D, /* LATIN LETTER I BREVE */
|
|
0x012D, /* Monocases to self */
|
|
0x012F, /* LATIN LETTER I OGONEK */
|
|
0x012F, /* Monocases to self */
|
|
0x0069, /* LATIN LETTER I DOT */
|
|
0x0131, /* Monocases to self */
|
|
0x0133, /* LATIN LETTER I J */
|
|
0x0133, /* Monocases to self */
|
|
0x0135, /* LATIN LETTER J CIRCUMFLEX */
|
|
0x0135, /* Monocases to self */
|
|
0x0137, /* LATIN LETTER K CEDILLA */
|
|
0x0137, /* Monocases to self */
|
|
0x0138, /* Monocases to self */
|
|
0x013A, /* LATIN LETTER L ACUTE */
|
|
0x013A, /* Monocases to self */
|
|
0x013C, /* LATIN LETTER L CEDILLA */
|
|
0x013C, /* Monocases to self */
|
|
0x013E, /* LATIN LETTER L HACEK */
|
|
0x013E, /* Monocases to self */
|
|
0x0140, /* LATIN LETTER L WITH MIDDLE DOT */
|
|
0x0140, /* Monocases to self */
|
|
0x0142, /* LATIN LETTER L SLASH */
|
|
0x0142, /* Monocases to self */
|
|
0x0144, /* LATIN LETTER N ACUTE */
|
|
0x0144, /* Monocases to self */
|
|
0x0146, /* LATIN LETTER N CEDILLA */
|
|
0x0146, /* Monocases to self */
|
|
0x0148, /* LATIN LETTER N HACEK */
|
|
0x0148, /* Monocases to self */
|
|
0x0149, /* Monocases to self */
|
|
0x014B, /* LATIN LETTER ENG */
|
|
0x014B, /* Monocases to self */
|
|
0x014D, /* LATIN LETTER O MACRON */
|
|
0x014D, /* Monocases to self */
|
|
0x014F, /* LATIN LETTER O BREVE */
|
|
0x014F, /* Monocases to self */
|
|
0x0151, /* LATIN LETTER O DOUBLE ACUTE */
|
|
0x0151, /* Monocases to self */
|
|
0x0153, /* LATIN LETTER O E */
|
|
0x0153, /* Monocases to self */
|
|
0x0155, /* LATIN LETTER R ACUTE */
|
|
0x0155, /* Monocases to self */
|
|
0x0157, /* LATIN LETTER R CEDILLA */
|
|
0x0157, /* Monocases to self */
|
|
0x0159, /* LATIN LETTER R HACEK */
|
|
0x0159, /* Monocases to self */
|
|
0x015B, /* LATIN LETTER S ACUTE */
|
|
0x015B, /* Monocases to self */
|
|
0x015D, /* LATIN LETTER S CIRCUMFLEX */
|
|
0x015D, /* Monocases to self */
|
|
0x015F, /* LATIN LETTER S CEDILLA */
|
|
0x015F, /* Monocases to self */
|
|
0x0161, /* LATIN LETTER S HACEK */
|
|
0x0161, /* Monocases to self */
|
|
0x0163, /* LATIN LETTER T CEDILLA */
|
|
0x0163, /* Monocases to self */
|
|
0x0165, /* LATIN LETTER T HACEK */
|
|
0x0165, /* Monocases to self */
|
|
0x0167, /* LATIN LETTER T BAR */
|
|
0x0167, /* Monocases to self */
|
|
0x0169, /* LATIN LETTER U TILDE */
|
|
0x0169, /* Monocases to self */
|
|
0x016B, /* LATIN LETTER U MACRON */
|
|
0x016B, /* Monocases to self */
|
|
0x016D, /* LATIN LETTER U BREVE */
|
|
0x016D, /* Monocases to self */
|
|
0x016F, /* LATIN LETTER U RING */
|
|
0x016F, /* Monocases to self */
|
|
0x0171, /* LATIN LETTER U DOUBLE ACUTE */
|
|
0x0171, /* Monocases to self */
|
|
0x0173, /* LATIN LETTER U OGONEK */
|
|
0x0173, /* Monocases to self */
|
|
0x0175, /* LATIN LETTER W CIRCUMFLEX */
|
|
0x0175, /* Monocases to self */
|
|
0x0177, /* LATIN LETTER Y CIRCUMFLEX */
|
|
0x0177, /* Monocases to self */
|
|
0x00FF, /* LATIN LETTER Y DIAERESIS */
|
|
0x017A, /* LATIN LETTER Z ACUTE */
|
|
0x017A, /* Monocases to self */
|
|
0x017C, /* LATIN LETTER Z DOT */
|
|
0x017C, /* Monocases to self */
|
|
0x017E, /* LATIN LETTER Z HACEK */
|
|
0x017E, /* Monocases to self */
|
|
0x017F, /* Monocases to self */
|
|
0x0180, /* Monocases to self */
|
|
0x0253, /* LATIN LETTER B HOOK */
|
|
0x0183, /* LATIN LETTER B TOPBAR */
|
|
0x0183, /* Monocases to self */
|
|
0x0185, /* LATIN LETTER TONE SIX */
|
|
0x0185, /* Monocases to self */
|
|
0x0254, /* LATIN LETTER OPEN O */
|
|
0x0188, /* LATIN LETTER C HOOK */
|
|
0x0188, /* Monocases to self */
|
|
0x0256, /* LATIN LETTER AFRICAN D */
|
|
0x0257, /* LATIN LETTER D HOOK */
|
|
0x018C, /* LATIN LETTER D TOPBAR */
|
|
0x018C, /* Monocases to self */
|
|
0x018D, /* Monocases to self */
|
|
0x01DD, /* LATIN LETTER TURNED E */
|
|
0x0259, /* LATIN LETTER SCHWA */
|
|
0x025B, /* LATIN LETTER EPSILON */
|
|
0x0192, /* LATIN LETTER F HOOK */
|
|
0x0192, /* Monocases to self */
|
|
0x0260, /* LATIN LETTER G HOOK */
|
|
0x0263, /* LATIN LETTER GAMMA */
|
|
0x0195, /* Monocases to self */
|
|
0x0269, /* LATIN LETTER IOTA */
|
|
0x0268, /* LATIN LETTER BARRED I */
|
|
0x0199, /* LATIN LETTER K HOOK */
|
|
0x0199, /* Monocases to self */
|
|
0x019A, /* Monocases to self */
|
|
0x019B, /* Monocases to self */
|
|
0x026F, /* LATIN LETTER TURNED M */
|
|
0x0272, /* LATIN LETTER N HOOK */
|
|
0x019E, /* Monocases to self */
|
|
0x0275, /* LATIN LETTER BARRED O */
|
|
0x01A1, /* LATIN LETTER O HORN */
|
|
0x01A1, /* Monocases to self */
|
|
0x01A3, /* LATIN LETTER O I */
|
|
0x01A3, /* Monocases to self */
|
|
0x01A5, /* LATIN LETTER P HOOK */
|
|
0x01A5, /* Monocases to self */
|
|
0x01A6, /* Monocases to self */
|
|
0x01A8, /* LATIN LETTER TONE TWO */
|
|
0x01A8, /* Monocases to self */
|
|
0x0283, /* LATIN LETTER ESH */
|
|
0x01AA, /* Monocases to self */
|
|
0x01AB, /* Monocases to self */
|
|
0x01AD, /* LATIN LETTER T HOOK */
|
|
0x01AD, /* Monocases to self */
|
|
0x0288, /* LATIN LETTER T RETROFLEX HOOK */
|
|
0x01B0, /* LATIN LETTER U HORN */
|
|
0x01B0, /* Monocases to self */
|
|
0x028A, /* LATIN LETTER UPSILON */
|
|
0x028B, /* LATIN LETTER SCRIPT V */
|
|
0x01B4, /* LATIN LETTER Y HOOK */
|
|
0x01B4, /* Monocases to self */
|
|
0x01B6, /* LATIN LETTER Z BAR */
|
|
0x01B6, /* Monocases to self */
|
|
0x0292, /* LATIN LETTER YOGH */
|
|
0x01B9, /* LATIN LETTER REVERSED YOGH */
|
|
0x01B9, /* Monocases to self */
|
|
0x01BA, /* Monocases to self */
|
|
0x01BB, /* Monocases to self */
|
|
0x01BD, /* LATIN LETTER TONE FIVE */
|
|
0x01BD, /* Monocases to self */
|
|
0x01BE, /* Monocases to self */
|
|
0x01BF, /* Monocases to self */
|
|
0x01C0, /* Monocases to self */
|
|
0x01C1, /* Monocases to self */
|
|
0x01C2, /* Monocases to self */
|
|
0x01C3, /* Monocases to self */
|
|
0x01C6, /* LATIN LETTER D Z HACEK */
|
|
0x01C6, /* LATIN LETTER CAPITAL D SMALL Z HACEK */
|
|
0x01C6, /* Monocases to self */
|
|
0x01C9, /* LATIN LETTER CAPITAL L CAPTIAL J */
|
|
0x01C9, /* LATIN LETTER CAPITAL L SMALL J */
|
|
0x01C9, /* Monocases to self */
|
|
0x01CC, /* LATIN LETTER CAPITAL N CAPITAL J */
|
|
0x01CC, /* LATIN LETTER CAPITAL N SMALL J */
|
|
0x01CC, /* Monocases to self */
|
|
0x01CE, /* LATIN LETTER A HACEK */
|
|
0x01CE, /* Monocases to self */
|
|
0x01D0, /* LATIN LETTER I HACEK */
|
|
0x01D0, /* Monocases to self */
|
|
0x01D2, /* LATIN LETTER O HACEK */
|
|
0x01D2, /* Monocases to self */
|
|
0x01D4, /* LATIN LETTER U HACEK */
|
|
0x01D4, /* Monocases to self */
|
|
0x01D6, /* LATIN LETTER U DIAERESIS MACRON */
|
|
0x01D6, /* Monocases to self */
|
|
0x01D8, /* LATIN LETTER U DIAERESIS ACUTE */
|
|
0x01D8, /* Monocases to self */
|
|
0x01DA, /* LATIN LETTER U DIAERESIS HACEK */
|
|
0x01DA, /* Monocases to self */
|
|
0x01DC, /* LATIN LETTER U DIAERESIS GRAVE */
|
|
0x01DC, /* Monocases to self */
|
|
0x01DD, /* Monocases to self */
|
|
0x01DF, /* LATIN LETTER A DIAERESIS MACRON */
|
|
0x01DF, /* Monocases to self */
|
|
0x01E1, /* LATIN LETTER A DOT MACRON */
|
|
0x01E1, /* Monocases to self */
|
|
0x01E3, /* LATIN LETTER A E MACRON */
|
|
0x01E3, /* Monocases to self */
|
|
0x01E5, /* LATIN LETTER G BAR */
|
|
0x01E5, /* Monocases to self */
|
|
0x01E7, /* LATIN LETTER G HACEK */
|
|
0x01E7, /* Monocases to self */
|
|
0x01E9, /* LATIN LETTER K HACEK */
|
|
0x01E9, /* Monocases to self */
|
|
0x01EB, /* LATIN LETTER O OGONEK */
|
|
0x01EB, /* Monocases to self */
|
|
0x01ED, /* LATIN LETTER O OGONEK MACRON */
|
|
0x01ED, /* Monocases to self */
|
|
0x01EF, /* LATIN LETTER YOGH HACEK */
|
|
0x01EF, /* Monocases to self */
|
|
0x01F0, /* Monocases to self */
|
|
0x01F1, /* Monocases to self */
|
|
0x01F2, /* Monocases to self */
|
|
0x01F3, /* Monocases to self */
|
|
0x01F4, /* Monocases to self */
|
|
0x01F5, /* Monocases to self */
|
|
0x01F6, /* Monocases to self */
|
|
0x01F7, /* Monocases to self */
|
|
0x01F8, /* Monocases to self */
|
|
0x01F9, /* Monocases to self */
|
|
0x01FA, /* Monocases to self */
|
|
0x01FB, /* Monocases to self */
|
|
0x01FC, /* Monocases to self */
|
|
0x01FD, /* Monocases to self */
|
|
0x01FE, /* Monocases to self */
|
|
0x01FF, /* Monocases to self */
|
|
0x0200, /* Monocases to self */
|
|
0x0201, /* Monocases to self */
|
|
0x0202, /* Monocases to self */
|
|
0x0203, /* Monocases to self */
|
|
0x0204, /* Monocases to self */
|
|
0x0205, /* Monocases to self */
|
|
0x0206, /* Monocases to self */
|
|
0x0207, /* Monocases to self */
|
|
0x0208, /* Monocases to self */
|
|
0x0209, /* Monocases to self */
|
|
0x020A, /* Monocases to self */
|
|
0x020B, /* Monocases to self */
|
|
0x020C, /* Monocases to self */
|
|
0x020D, /* Monocases to self */
|
|
0x020E, /* Monocases to self */
|
|
0x020F, /* Monocases to self */
|
|
0x0210, /* Monocases to self */
|
|
0x0211, /* Monocases to self */
|
|
0x0212, /* Monocases to self */
|
|
0x0213, /* Monocases to self */
|
|
0x0214, /* Monocases to self */
|
|
0x0215, /* Monocases to self */
|
|
0x0216, /* Monocases to self */
|
|
0x0217, /* Monocases to self */
|
|
0x0218, /* Monocases to self */
|
|
0x0219, /* Monocases to self */
|
|
0x021A, /* Monocases to self */
|
|
0x021B, /* Monocases to self */
|
|
0x021C, /* Monocases to self */
|
|
0x021D, /* Monocases to self */
|
|
0x021E, /* Monocases to self */
|
|
0x021F, /* Monocases to self */
|
|
0x0220, /* Monocases to self */
|
|
0x0221, /* Monocases to self */
|
|
0x0222, /* Monocases to self */
|
|
0x0223, /* Monocases to self */
|
|
0x0224, /* Monocases to self */
|
|
0x0225, /* Monocases to self */
|
|
0x0226, /* Monocases to self */
|
|
0x0227, /* Monocases to self */
|
|
0x0228, /* Monocases to self */
|
|
0x0229, /* Monocases to self */
|
|
0x022A, /* Monocases to self */
|
|
0x022B, /* Monocases to self */
|
|
0x022C, /* Monocases to self */
|
|
0x022D, /* Monocases to self */
|
|
0x022E, /* Monocases to self */
|
|
0x022F, /* Monocases to self */
|
|
0x0230, /* Monocases to self */
|
|
0x0231, /* Monocases to self */
|
|
0x0232, /* Monocases to self */
|
|
0x0233, /* Monocases to self */
|
|
0x0234, /* Monocases to self */
|
|
0x0235, /* Monocases to self */
|
|
0x0236, /* Monocases to self */
|
|
0x0237, /* Monocases to self */
|
|
0x0238, /* Monocases to self */
|
|
0x0239, /* Monocases to self */
|
|
0x023A, /* Monocases to self */
|
|
0x023B, /* Monocases to self */
|
|
0x023C, /* Monocases to self */
|
|
0x023D, /* Monocases to self */
|
|
0x023E, /* Monocases to self */
|
|
0x023F, /* Monocases to self */
|
|
0x0240, /* Monocases to self */
|
|
0x0241, /* Monocases to self */
|
|
0x0242, /* Monocases to self */
|
|
0x0243, /* Monocases to self */
|
|
0x0244, /* Monocases to self */
|
|
0x0245, /* Monocases to self */
|
|
0x0246, /* Monocases to self */
|
|
0x0247, /* Monocases to self */
|
|
0x0248, /* Monocases to self */
|
|
0x0249, /* Monocases to self */
|
|
0x024A, /* Monocases to self */
|
|
0x024B, /* Monocases to self */
|
|
0x024C, /* Monocases to self */
|
|
0x024D, /* Monocases to self */
|
|
0x024E, /* Monocases to self */
|
|
0x024F, /* Monocases to self */
|
|
0x0250, /* Monocases to self */
|
|
0x0251, /* Monocases to self */
|
|
0x0252, /* Monocases to self */
|
|
0x0253, /* Monocases to self */
|
|
0x0254, /* Monocases to self */
|
|
0x0255, /* Monocases to self */
|
|
0x0256, /* Monocases to self */
|
|
0x0257, /* Monocases to self */
|
|
0x0258, /* Monocases to self */
|
|
0x0259, /* Monocases to self */
|
|
0x025A, /* Monocases to self */
|
|
0x025B, /* Monocases to self */
|
|
0x025C, /* Monocases to self */
|
|
0x025D, /* Monocases to self */
|
|
0x025E, /* Monocases to self */
|
|
0x025F, /* Monocases to self */
|
|
0x0260, /* Monocases to self */
|
|
0x0261, /* Monocases to self */
|
|
0x0262, /* Monocases to self */
|
|
0x0263, /* Monocases to self */
|
|
0x0264, /* Monocases to self */
|
|
0x0265, /* Monocases to self */
|
|
0x0266, /* Monocases to self */
|
|
0x0267, /* Monocases to self */
|
|
0x0268, /* Monocases to self */
|
|
0x0269, /* Monocases to self */
|
|
0x026A, /* Monocases to self */
|
|
0x026B, /* Monocases to self */
|
|
0x026C, /* Monocases to self */
|
|
0x026D, /* Monocases to self */
|
|
0x026E, /* Monocases to self */
|
|
0x026F, /* Monocases to self */
|
|
0x0270, /* Monocases to self */
|
|
0x0271, /* Monocases to self */
|
|
0x0272, /* Monocases to self */
|
|
0x0273, /* Monocases to self */
|
|
0x0274, /* Monocases to self */
|
|
0x0275, /* Monocases to self */
|
|
0x0276, /* Monocases to self */
|
|
0x0277, /* Monocases to self */
|
|
0x0278, /* Monocases to self */
|
|
0x0279, /* Monocases to self */
|
|
0x027A, /* Monocases to self */
|
|
0x027B, /* Monocases to self */
|
|
0x027C, /* Monocases to self */
|
|
0x027D, /* Monocases to self */
|
|
0x027E, /* Monocases to self */
|
|
0x027F, /* Monocases to self */
|
|
0x0280, /* Monocases to self */
|
|
0x0281, /* Monocases to self */
|
|
0x0282, /* Monocases to self */
|
|
0x0283, /* Monocases to self */
|
|
0x0284, /* Monocases to self */
|
|
0x0285, /* Monocases to self */
|
|
0x0286, /* Monocases to self */
|
|
0x0287, /* Monocases to self */
|
|
0x0288, /* Monocases to self */
|
|
0x0289, /* Monocases to self */
|
|
0x028A, /* Monocases to self */
|
|
0x028B, /* Monocases to self */
|
|
0x028C, /* Monocases to self */
|
|
0x028D, /* Monocases to self */
|
|
0x028E, /* Monocases to self */
|
|
0x028F, /* Monocases to self */
|
|
0x0290, /* Monocases to self */
|
|
0x0291, /* Monocases to self */
|
|
0x0292, /* Monocases to self */
|
|
0x0293, /* Monocases to self */
|
|
0x0294, /* Monocases to self */
|
|
0x0295, /* Monocases to self */
|
|
0x0296, /* Monocases to self */
|
|
0x0297, /* Monocases to self */
|
|
0x0298, /* Monocases to self */
|
|
0x0299, /* Monocases to self */
|
|
0x029A, /* Monocases to self */
|
|
0x029B, /* Monocases to self */
|
|
0x029C, /* Monocases to self */
|
|
0x029D, /* Monocases to self */
|
|
0x029E, /* Monocases to self */
|
|
0x029F, /* Monocases to self */
|
|
0x02A0, /* Monocases to self */
|
|
0x02A1, /* Monocases to self */
|
|
0x02A2, /* Monocases to self */
|
|
0x02A3, /* Monocases to self */
|
|
0x02A4, /* Monocases to self */
|
|
0x02A5, /* Monocases to self */
|
|
0x02A6, /* Monocases to self */
|
|
0x02A7, /* Monocases to self */
|
|
0x02A8, /* Monocases to self */
|
|
0x02A9, /* Monocases to self */
|
|
0x02AA, /* Monocases to self */
|
|
0x02AB, /* Monocases to self */
|
|
0x02AC, /* Monocases to self */
|
|
0x02AD, /* Monocases to self */
|
|
0x02AE, /* Monocases to self */
|
|
0x02AF, /* Monocases to self */
|
|
0x02B0, /* Monocases to self */
|
|
0x02B1, /* Monocases to self */
|
|
0x02B2, /* Monocases to self */
|
|
0x02B3, /* Monocases to self */
|
|
0x02B4, /* Monocases to self */
|
|
0x02B5, /* Monocases to self */
|
|
0x02B6, /* Monocases to self */
|
|
0x02B7, /* Monocases to self */
|
|
0x02B8, /* Monocases to self */
|
|
0x02B9, /* Monocases to self */
|
|
0x02BA, /* Monocases to self */
|
|
0x02BB, /* Monocases to self */
|
|
0x02BC, /* Monocases to self */
|
|
0x02BD, /* Monocases to self */
|
|
0x02BE, /* Monocases to self */
|
|
0x02BF, /* Monocases to self */
|
|
0x02C0, /* Monocases to self */
|
|
0x02C1, /* Monocases to self */
|
|
0x02C2, /* Monocases to self */
|
|
0x02C3, /* Monocases to self */
|
|
0x02C4, /* Monocases to self */
|
|
0x02C5, /* Monocases to self */
|
|
0x02C6, /* Monocases to self */
|
|
0x02C7, /* Monocases to self */
|
|
0x02C8, /* Monocases to self */
|
|
0x02C9, /* Monocases to self */
|
|
0x02CA, /* Monocases to self */
|
|
0x02CB, /* Monocases to self */
|
|
0x02CC, /* Monocases to self */
|
|
0x02CD, /* Monocases to self */
|
|
0x02CE, /* Monocases to self */
|
|
0x02CF, /* Monocases to self */
|
|
0x02D0, /* Monocases to self */
|
|
0x02D1, /* Monocases to self */
|
|
0x02D2, /* Monocases to self */
|
|
0x02D3, /* Monocases to self */
|
|
0x02D4, /* Monocases to self */
|
|
0x02D5, /* Monocases to self */
|
|
0x02D6, /* Monocases to self */
|
|
0x02D7, /* Monocases to self */
|
|
0x02D8, /* Monocases to self */
|
|
0x02D9, /* Monocases to self */
|
|
0x02DA, /* Monocases to self */
|
|
0x02DB, /* Monocases to self */
|
|
0x02DC, /* Monocases to self */
|
|
0x02DD, /* Monocases to self */
|
|
0x02DE, /* Monocases to self */
|
|
0x02DF, /* Monocases to self */
|
|
0x02E0, /* Monocases to self */
|
|
0x02E1, /* Monocases to self */
|
|
0x02E2, /* Monocases to self */
|
|
0x02E3, /* Monocases to self */
|
|
0x02E4, /* Monocases to self */
|
|
0x02E5, /* Monocases to self */
|
|
0x02E6, /* Monocases to self */
|
|
0x02E7, /* Monocases to self */
|
|
0x02E8, /* Monocases to self */
|
|
0x02E9, /* Monocases to self */
|
|
0x02EA, /* Monocases to self */
|
|
0x02EB, /* Monocases to self */
|
|
0x02EC, /* Monocases to self */
|
|
0x02ED, /* Monocases to self */
|
|
0x02EE, /* Monocases to self */
|
|
0x02EF, /* Monocases to self */
|
|
0x02F0, /* Monocases to self */
|
|
0x02F1, /* Monocases to self */
|
|
0x02F2, /* Monocases to self */
|
|
0x02F3, /* Monocases to self */
|
|
0x02F4, /* Monocases to self */
|
|
0x02F5, /* Monocases to self */
|
|
0x02F6, /* Monocases to self */
|
|
0x02F7, /* Monocases to self */
|
|
0x02F8, /* Monocases to self */
|
|
0x02F9, /* Monocases to self */
|
|
0x02FA, /* Monocases to self */
|
|
0x02FB, /* Monocases to self */
|
|
0x02FC, /* Monocases to self */
|
|
0x02FD, /* Monocases to self */
|
|
0x02FE, /* Monocases to self */
|
|
0x02FF, /* Monocases to self */
|
|
0x0300, /* Monocases to self */
|
|
0x0301, /* Monocases to self */
|
|
0x0302, /* Monocases to self */
|
|
0x0303, /* Monocases to self */
|
|
0x0304, /* Monocases to self */
|
|
0x0305, /* Monocases to self */
|
|
0x0306, /* Monocases to self */
|
|
0x0307, /* Monocases to self */
|
|
0x0308, /* Monocases to self */
|
|
0x0309, /* Monocases to self */
|
|
0x030A, /* Monocases to self */
|
|
0x030B, /* Monocases to self */
|
|
0x030C, /* Monocases to self */
|
|
0x030D, /* Monocases to self */
|
|
0x030E, /* Monocases to self */
|
|
0x030F, /* Monocases to self */
|
|
0x0310, /* Monocases to self */
|
|
0x0311, /* Monocases to self */
|
|
0x0312, /* Monocases to self */
|
|
0x0313, /* Monocases to self */
|
|
0x0314, /* Monocases to self */
|
|
0x0315, /* Monocases to self */
|
|
0x0316, /* Monocases to self */
|
|
0x0317, /* Monocases to self */
|
|
0x0318, /* Monocases to self */
|
|
0x0319, /* Monocases to self */
|
|
0x031A, /* Monocases to self */
|
|
0x031B, /* Monocases to self */
|
|
0x031C, /* Monocases to self */
|
|
0x031D, /* Monocases to self */
|
|
0x031E, /* Monocases to self */
|
|
0x031F, /* Monocases to self */
|
|
0x0320, /* Monocases to self */
|
|
0x0321, /* Monocases to self */
|
|
0x0322, /* Monocases to self */
|
|
0x0323, /* Monocases to self */
|
|
0x0324, /* Monocases to self */
|
|
0x0325, /* Monocases to self */
|
|
0x0326, /* Monocases to self */
|
|
0x0327, /* Monocases to self */
|
|
0x0328, /* Monocases to self */
|
|
0x0329, /* Monocases to self */
|
|
0x032A, /* Monocases to self */
|
|
0x032B, /* Monocases to self */
|
|
0x032C, /* Monocases to self */
|
|
0x032D, /* Monocases to self */
|
|
0x032E, /* Monocases to self */
|
|
0x032F, /* Monocases to self */
|
|
0x0330, /* Monocases to self */
|
|
0x0331, /* Monocases to self */
|
|
0x0332, /* Monocases to self */
|
|
0x0333, /* Monocases to self */
|
|
0x0334, /* Monocases to self */
|
|
0x0335, /* Monocases to self */
|
|
0x0336, /* Monocases to self */
|
|
0x0337, /* Monocases to self */
|
|
0x0338, /* Monocases to self */
|
|
0x0339, /* Monocases to self */
|
|
0x033A, /* Monocases to self */
|
|
0x033B, /* Monocases to self */
|
|
0x033C, /* Monocases to self */
|
|
0x033D, /* Monocases to self */
|
|
0x033E, /* Monocases to self */
|
|
0x033F, /* Monocases to self */
|
|
0x0340, /* Monocases to self */
|
|
0x0341, /* Monocases to self */
|
|
0x0342, /* Monocases to self */
|
|
0x0343, /* Monocases to self */
|
|
0x0344, /* Monocases to self */
|
|
0x0345, /* Monocases to self */
|
|
0x0346, /* Monocases to self */
|
|
0x0347, /* Monocases to self */
|
|
0x0348, /* Monocases to self */
|
|
0x0349, /* Monocases to self */
|
|
0x034A, /* Monocases to self */
|
|
0x034B, /* Monocases to self */
|
|
0x034C, /* Monocases to self */
|
|
0x034D, /* Monocases to self */
|
|
0x034E, /* Monocases to self */
|
|
0x034F, /* Monocases to self */
|
|
0x0350, /* Monocases to self */
|
|
0x0351, /* Monocases to self */
|
|
0x0352, /* Monocases to self */
|
|
0x0353, /* Monocases to self */
|
|
0x0354, /* Monocases to self */
|
|
0x0355, /* Monocases to self */
|
|
0x0356, /* Monocases to self */
|
|
0x0357, /* Monocases to self */
|
|
0x0358, /* Monocases to self */
|
|
0x0359, /* Monocases to self */
|
|
0x035A, /* Monocases to self */
|
|
0x035B, /* Monocases to self */
|
|
0x035C, /* Monocases to self */
|
|
0x035D, /* Monocases to self */
|
|
0x035E, /* Monocases to self */
|
|
0x035F, /* Monocases to self */
|
|
0x0360, /* Monocases to self */
|
|
0x0361, /* Monocases to self */
|
|
0x0362, /* Monocases to self */
|
|
0x0363, /* Monocases to self */
|
|
0x0364, /* Monocases to self */
|
|
0x0365, /* Monocases to self */
|
|
0x0366, /* Monocases to self */
|
|
0x0367, /* Monocases to self */
|
|
0x0368, /* Monocases to self */
|
|
0x0369, /* Monocases to self */
|
|
0x036A, /* Monocases to self */
|
|
0x036B, /* Monocases to self */
|
|
0x036C, /* Monocases to self */
|
|
0x036D, /* Monocases to self */
|
|
0x036E, /* Monocases to self */
|
|
0x036F, /* Monocases to self */
|
|
0x0370, /* Monocases to self */
|
|
0x0371, /* Monocases to self */
|
|
0x0372, /* Monocases to self */
|
|
0x0373, /* Monocases to self */
|
|
0x0374, /* Monocases to self */
|
|
0x0375, /* Monocases to self */
|
|
0x0376, /* Monocases to self */
|
|
0x0377, /* Monocases to self */
|
|
0x0378, /* Monocases to self */
|
|
0x0379, /* Monocases to self */
|
|
0x037A, /* Monocases to self */
|
|
0x037B, /* Monocases to self */
|
|
0x037C, /* Monocases to self */
|
|
0x037D, /* Monocases to self */
|
|
0x037E, /* Monocases to self */
|
|
0x037F, /* Monocases to self */
|
|
0x0380, /* Monocases to self */
|
|
0x0381, /* Monocases to self */
|
|
0x0382, /* Monocases to self */
|
|
0x0383, /* Monocases to self */
|
|
0x0384, /* Monocases to self */
|
|
0x0385, /* Monocases to self */
|
|
0x03AC, /* GREEK LETTER ALPHA TONOS */
|
|
0x0387, /* Monocases to self */
|
|
0x03AD, /* GREEK LETTER EPSILON TONOS */
|
|
0x03AE, /* GREEK LETTER ETA TONOS */
|
|
0x03AF, /* GREEK LETTER IOTA TONOS */
|
|
0x038B, /* Monocases to self */
|
|
0x03CC, /* GREEK LETTER OMICRON TONOS */
|
|
0x038D, /* Monocases to self */
|
|
0x03CD, /* GREEK LETTER UPSILON TONOS */
|
|
0x03CE, /* GREEK LETTER OMEGA TONOS */
|
|
0x0390, /* Monocases to self */
|
|
0x03B1, /* GREEK LETTER ALPHA */
|
|
0x03B2, /* GREEK LETTER BETA */
|
|
0x03B3, /* GREEK LETTER GAMMA */
|
|
0x03B4, /* GREEK LETTER DELTA */
|
|
0x03B5, /* GREEK LETTER EPSILON */
|
|
0x03B6, /* GREEK LETTER ZETA */
|
|
0x03B7, /* GREEK LETTER ETA */
|
|
0x03B8, /* GREEK LETTER THETA */
|
|
0x03B9, /* GREEK LETTER IOTA */
|
|
0x03BA, /* GREEK LETTER KAPPA */
|
|
0x03BB, /* GREEK LETTER LAMBDA */
|
|
0x03BC, /* GREEK LETTER MU */
|
|
0x03BD, /* GREEK LETTER NU */
|
|
0x03BE, /* GREEK LETTER Xl */
|
|
0x03BF, /* GREEK LETTER OMICRON */
|
|
0x03C0, /* GREEK LETTER PI */
|
|
0x03C1, /* GREEK LETTER RHO */
|
|
0x03A2, /* Monocases to self */
|
|
0x03C3, /* GREEK LETTER SIGMA */
|
|
0x03C4, /* GREEK LETTER TAU */
|
|
0x03C5, /* GREEK LETTER UPSILON */
|
|
0x03C6, /* GREEK LETTER PHI */
|
|
0x03C7, /* GREEK LETTER CHI */
|
|
0x03C8, /* GREEK LETTER PSI */
|
|
0x03C9, /* GREEK LETTER OMEGA */
|
|
0x03CA, /* GREEK LETTER IOTA DIAERESIS */
|
|
0x03CB, /* GREEK LETTER UPSILON DIAERESIS */
|
|
0x03AC, /* Monocases to self */
|
|
0x03AD, /* Monocases to self */
|
|
0x03AE, /* Monocases to self */
|
|
0x03AF, /* Monocases to self */
|
|
0x03B0, /* Monocases to self */
|
|
0x03B1, /* Monocases to self */
|
|
0x03B2, /* Monocases to self */
|
|
0x03B3, /* Monocases to self */
|
|
0x03B4, /* Monocases to self */
|
|
0x03B5, /* Monocases to self */
|
|
0x03B6, /* Monocases to self */
|
|
0x03B7, /* Monocases to self */
|
|
0x03B8, /* Monocases to self */
|
|
0x03B9, /* Monocases to self */
|
|
0x03BA, /* Monocases to self */
|
|
0x03BB, /* Monocases to self */
|
|
0x03BC, /* Monocases to self */
|
|
0x03BD, /* Monocases to self */
|
|
0x03BE, /* Monocases to self */
|
|
0x03BF, /* Monocases to self */
|
|
0x03C0, /* Monocases to self */
|
|
0x03C1, /* Monocases to self */
|
|
0x03C2, /* Monocases to self */
|
|
0x03C3, /* Monocases to self */
|
|
0x03C4, /* Monocases to self */
|
|
0x03C5, /* Monocases to self */
|
|
0x03C6, /* Monocases to self */
|
|
0x03C7, /* Monocases to self */
|
|
0x03C8, /* Monocases to self */
|
|
0x03C9, /* Monocases to self */
|
|
0x03CA, /* Monocases to self */
|
|
0x03CB, /* Monocases to self */
|
|
0x03CC, /* Monocases to self */
|
|
0x03CD, /* Monocases to self */
|
|
0x03CE, /* Monocases to self */
|
|
0x03CF, /* Monocases to self */
|
|
0x03D0, /* Monocases to self */
|
|
0x03D1, /* Monocases to self */
|
|
0x03C5, /* GREEK LETTER UPSILON HOOK */
|
|
0x03CD, /* GREEK LETTER UPSILON HOOK TONOS */
|
|
0x03CB, /* GREEK LETTER UPSILON HOOK DIAERESIS */
|
|
0x03D5, /* Monocases to self */
|
|
0x03D6, /* Monocases to self */
|
|
0x03D7, /* Monocases to self */
|
|
0x03D8, /* Monocases to self */
|
|
0x03D9, /* Monocases to self */
|
|
0x03DB, /* GREEK LETTER STIGMA */
|
|
0x03DB, /* Monocases to self */
|
|
0x03DD, /* GREEK LETTER DIGAMMA */
|
|
0x03DD, /* Monocases to self */
|
|
0x03DF, /* GREEK LETTER KOPPA */
|
|
0x03DF, /* Monocases to self */
|
|
0x03E1, /* GREEK LETTER SAMPI */
|
|
0x03E1, /* Monocases to self */
|
|
0x03E3, /* GREEK LETTER SHEI */
|
|
0x03E3, /* Monocases to self */
|
|
0x03E5, /* GREEK LETTER FEI */
|
|
0x03E5, /* Monocases to self */
|
|
0x03E7, /* GREEK LETTER KHEI */
|
|
0x03E7, /* Monocases to self */
|
|
0x03E9, /* GREEK LETTER HORI */
|
|
0x03E9, /* Monocases to self */
|
|
0x03EB, /* GREEK LETTER GANGIA */
|
|
0x03EB, /* Monocases to self */
|
|
0x03ED, /* GREEK LETTER SHIMA */
|
|
0x03ED, /* Monocases to self */
|
|
0x03EF, /* GREEK LETTER DEI */
|
|
0x03EF, /* Monocases to self */
|
|
0x03F0, /* Monocases to self */
|
|
0x03F1, /* Monocases to self */
|
|
0x03F2, /* Monocases to self */
|
|
0x03F3, /* Monocases to self */
|
|
0x03F4, /* Monocases to self */
|
|
0x03F5, /* Monocases to self */
|
|
0x03F6, /* Monocases to self */
|
|
0x03F7, /* Monocases to self */
|
|
0x03F8, /* Monocases to self */
|
|
0x03F9, /* Monocases to self */
|
|
0x03FA, /* Monocases to self */
|
|
0x03FB, /* Monocases to self */
|
|
0x03FC, /* Monocases to self */
|
|
0x03FD, /* Monocases to self */
|
|
0x03FE, /* Monocases to self */
|
|
0x03FF, /* Monocases to self */
|
|
0x0400, /* Monocases to self */
|
|
0x0451, /* CYRILLIC LETTER IO */
|
|
0x0452, /* CYRILLIC LETTER DJE */
|
|
0x0453, /* CYRILLIC LETTER GJE */
|
|
0x0454, /* CYRILLIC LETTER E */
|
|
0x0455, /* CYRILLIC LETTER DZE */
|
|
0x0456, /* CYRILLIC LETTER I */
|
|
0x0457, /* CYRILLIC LETTER YI */
|
|
0x0458, /* CYRILLIC LETTER JE */
|
|
0x0459, /* CYRILLIC LETTER LJE */
|
|
0x045A, /* CYRILLIC LETTER NJE */
|
|
0x045B, /* CYRILLIC LETTER TSHE */
|
|
0x045C, /* CYRILLIC LETTER KJE */
|
|
0x040D, /* Monocases to self */
|
|
0x045E, /* CYRILLIC LETTER SHORT U */
|
|
0x045F, /* CYRILLIC LETTER DZHE */
|
|
0x0430, /* CYRILLIC LETTER A */
|
|
0x0431, /* CYRILLIC LETTER BE */
|
|
0x0432, /* CYRILLIC LETTER VE */
|
|
0x0433, /* CYRILLIC LETTER GE */
|
|
0x0434, /* CYRILLIC LETTER DE */
|
|
0x0435, /* CYRILLIC LETTER IE */
|
|
0x0436, /* CYRILLIC LETTER ZHE */
|
|
0x0437, /* CYRILLIC LETTER ZE */
|
|
0x0438, /* CYRILLIC LETTER II */
|
|
0x0439, /* CYRILLIC LETTER SHORT II */
|
|
0x043A, /* CYRILLIC LETTER KA */
|
|
0x043B, /* CYRILLIC LETTER EL */
|
|
0x043C, /* CYRILLIC LETTER EM */
|
|
0x043D, /* CYRILLIC LETTER EN */
|
|
0x043E, /* CYRILLIC LETTER O */
|
|
0x043F, /* CYRILLIC LETTER PE */
|
|
0x0440, /* CYRILLIC LETTER ER */
|
|
0x0441, /* CYRILLIC LETTER ES */
|
|
0x0442, /* CYRILLIC LETTER TE */
|
|
0x0443, /* CYRILLIC LETTER U */
|
|
0x0444, /* CYRILLIC LETTER EF */
|
|
0x0445, /* CYRILLIC LETTER KHA */
|
|
0x0446, /* CYRILLIC LETTER TSE */
|
|
0x0447, /* CYRILLIC LETTER CHE */
|
|
0x0448, /* CYRILLIC LETTER SHA */
|
|
0x0449, /* CYRILLIC LETTER SHCHA */
|
|
0x044A, /* CYRILLIC LETTER HARD SIGN */
|
|
0x044B, /* CYRILLIC LETTER YERI */
|
|
0x044C, /* CYRILLIC LETTER SOFT SIGN */
|
|
0x044D, /* CYRILLIC LETTER REVERSED E */
|
|
0x044E, /* CYRILLIC LETTER IU */
|
|
0x044F, /* CYRILLIC LETTER IA */
|
|
0x0430, /* Monocases to self */
|
|
0x0431, /* Monocases to self */
|
|
0x0432, /* Monocases to self */
|
|
0x0433, /* Monocases to self */
|
|
0x0434, /* Monocases to self */
|
|
0x0435, /* Monocases to self */
|
|
0x0436, /* Monocases to self */
|
|
0x0437, /* Monocases to self */
|
|
0x0438, /* Monocases to self */
|
|
0x0439, /* Monocases to self */
|
|
0x043A, /* Monocases to self */
|
|
0x043B, /* Monocases to self */
|
|
0x043C, /* Monocases to self */
|
|
0x043D, /* Monocases to self */
|
|
0x043E, /* Monocases to self */
|
|
0x043F, /* Monocases to self */
|
|
0x0440, /* Monocases to self */
|
|
0x0441, /* Monocases to self */
|
|
0x0442, /* Monocases to self */
|
|
0x0443, /* Monocases to self */
|
|
0x0444, /* Monocases to self */
|
|
0x0445, /* Monocases to self */
|
|
0x0446, /* Monocases to self */
|
|
0x0447, /* Monocases to self */
|
|
0x0448, /* Monocases to self */
|
|
0x0449, /* Monocases to self */
|
|
0x044A, /* Monocases to self */
|
|
0x044B, /* Monocases to self */
|
|
0x044C, /* Monocases to self */
|
|
0x044D, /* Monocases to self */
|
|
0x044E, /* Monocases to self */
|
|
0x044F, /* Monocases to self */
|
|
0x0450, /* Monocases to self */
|
|
0x0451, /* Monocases to self */
|
|
0x0452, /* Monocases to self */
|
|
0x0453, /* Monocases to self */
|
|
0x0454, /* Monocases to self */
|
|
0x0455, /* Monocases to self */
|
|
0x0456, /* Monocases to self */
|
|
0x0457, /* Monocases to self */
|
|
0x0458, /* Monocases to self */
|
|
0x0459, /* Monocases to self */
|
|
0x045A, /* Monocases to self */
|
|
0x045B, /* Monocases to self */
|
|
0x045C, /* Monocases to self */
|
|
0x045D, /* Monocases to self */
|
|
0x045E, /* Monocases to self */
|
|
0x045F, /* Monocases to self */
|
|
0x0461, /* CYRILLIC LETTER OMEGA */
|
|
0x0461, /* Monocases to self */
|
|
0x0463, /* CYRILLIC LETTER YAT */
|
|
0x0463, /* Monocases to self */
|
|
0x0465, /* CYRILLIC LETTER IOTIFIED E */
|
|
0x0465, /* Monocases to self */
|
|
0x0467, /* CYRILLIC LETTER LITTLE YUS */
|
|
0x0467, /* Monocases to self */
|
|
0x0469, /* CYRILLIC LETTER IOTIFIED LITTLE YUS */
|
|
0x0469, /* Monocases to self */
|
|
0x046B, /* CYRILLIC LETTER BIG YUS */
|
|
0x046B, /* Monocases to self */
|
|
0x046D, /* CYRILLIC LETTER IOTIFIED BIG YUS */
|
|
0x046D, /* Monocases to self */
|
|
0x046F, /* CYRILLIC LETTER KSI */
|
|
0x046F, /* Monocases to self */
|
|
0x0471, /* CYRILLIC LETTER PSI */
|
|
0x0471, /* Monocases to self */
|
|
0x0473, /* CYRILLIC LETTER FITA */
|
|
0x0473, /* Monocases to self */
|
|
0x0475, /* CYRILLIC LETTER IZHITSA */
|
|
0x0475, /* Monocases to self */
|
|
0x0477, /* CYRILLIC LETTER IZHITSA DOUBLE GRAVE */
|
|
0x0477, /* Monocases to self */
|
|
0x0479, /* CYRILLIC LETTER UK DIGRAPH */
|
|
0x0479, /* Monocases to self */
|
|
0x047B, /* CYRILLIC LETTER ROUND OMEGA */
|
|
0x047B, /* Monocases to self */
|
|
0x047D, /* CYRILLIC LETTER OMEGA TITLO */
|
|
0x047D, /* Monocases to self */
|
|
0x047F, /* CYRILLIC LETTER OT */
|
|
0x047F, /* Monocases to self */
|
|
0x0481, /* CYRILLIC LETTER KOPPA */
|
|
0x0481, /* Monocases to self */
|
|
0x0482, /* Monocases to self */
|
|
0x0483, /* Monocases to self */
|
|
0x0484, /* Monocases to self */
|
|
0x0485, /* Monocases to self */
|
|
0x0486, /* Monocases to self */
|
|
0x0487, /* Monocases to self */
|
|
0x0488, /* Monocases to self */
|
|
0x0489, /* Monocases to self */
|
|
0x048A, /* Monocases to self */
|
|
0x048B, /* Monocases to self */
|
|
0x048C, /* Monocases to self */
|
|
0x048D, /* Monocases to self */
|
|
0x048E, /* Monocases to self */
|
|
0x048F, /* Monocases to self */
|
|
0x0491, /* CYRILLIC LETTER GE WITH UPTURN */
|
|
0x0491, /* Monocases to self */
|
|
0x0493, /* CYRILLIC LETTER GE BAR */
|
|
0x0493, /* Monocases to self */
|
|
0x0495, /* CYRILLIC LETTER GE HOOK */
|
|
0x0495, /* Monocases to self */
|
|
0x0497, /* CYRILLIC LETTER ZHE WITH RIGHT DESCENDER */
|
|
0x0497, /* Monocases to self */
|
|
0x0499, /* CYRILLIC LETTER ZE CEDILLA */
|
|
0x0499, /* Monocases to self */
|
|
0x049B, /* CYRILLIC LETTER KA WITH RIGHT DESCENDER */
|
|
0x049B, /* Monocases to self */
|
|
0x049D, /* CYRILLIC LETTER KA VERTICAL BAR */
|
|
0x049D, /* Monocases to self */
|
|
0x049F, /* CYRILLIC LETTER KA BAR */
|
|
0x049F, /* Monocases to self */
|
|
0x04A1, /* CYRILLIC LETTER REVERSED GE KA */
|
|
0x04A1, /* Monocases to self */
|
|
0x04A3, /* CYRILLIC LETTER EN WITH RIGHT DESCENDER */
|
|
0x04A3, /* Monocases to self */
|
|
0x04A5, /* CYRILLIC LETTER EN GE */
|
|
0x04A5, /* Monocases to self */
|
|
0x04A7, /* CYRILLIC LETTER PE HOOK */
|
|
0x04A7, /* Monocases to self */
|
|
0x04A9, /* CYRILLIC LETTER O HOOK */
|
|
0x04A9, /* Monocases to self */
|
|
0x04AB, /* CYRILLIC LETTER ES CEDILLA */
|
|
0x04AB, /* Monocases to self */
|
|
0x04AD, /* CYRILLIC LETTER TE WITH RIGHT DESCENDER */
|
|
0x04AD, /* Monocases to self */
|
|
0x04AF, /* CYRILLIC LETTER STRAIGHT U */
|
|
0x04AF, /* Monocases to self */
|
|
0x04B1, /* CYRILLIC LETTER STRAIGHT U BAR */
|
|
0x04B1, /* Monocases to self */
|
|
0x04B3, /* CYRILLIC LETTER KHA WITH RIGHT DESCENDER */
|
|
0x04B3, /* Monocases to self */
|
|
0x04B5, /* CYRILLIC LETTER TE TSE */
|
|
0x04B5, /* Monocases to self */
|
|
0x04B7, /* CYRILLIC LETTER CHE WITH RIGHT DESCENDER */
|
|
0x04B7, /* Monocases to self */
|
|
0x04B9, /* CYRILLIC LETTER CHE VERTICAL BAR */
|
|
0x04B9, /* Monocases to self */
|
|
0x04BB, /* CYRILLIC LETTER H */
|
|
0x04BB, /* Monocases to self */
|
|
0x04BD, /* CYRILLIC LETTER IE HOOK */
|
|
0x04BD, /* Monocases to self */
|
|
0x04BF, /* CYRILLIC LETTER IE HOOK OGONEK */
|
|
0x04BF, /* Monocases to self */
|
|
0x04C0, /* Monocases to self */
|
|
0x04C2, /* CYRILLIC LETTER SHORT ZHE */
|
|
0x04C2, /* Monocases to self */
|
|
0x04C4, /* CYRILLIC LETTER KA HOOK */
|
|
0x04C4, /* Monocases to self */
|
|
0x04C6, /* CYRILLIC LETTER KA OGONEK */
|
|
0x04C6, /* Monocases to self */
|
|
0x04C8, /* CYRILLIC LETTER EN HOOK */
|
|
0x04C8, /* Monocases to self */
|
|
0x04CA, /* CYRILLIC LETTER KHA OGONEK */
|
|
0x04CA, /* Monocases to self */
|
|
0x04CC, /* CYRILLIC LETTER CHE WITH LEFT DESCENDER */
|
|
0x04CC, /* Monocases to self */
|
|
0x04CD, /* Monocases to self */
|
|
0x04CE, /* Monocases to self */
|
|
0x04CF, /* Monocases to self */
|
|
0x04D0, /* Monocases to self */
|
|
0x04D1, /* Monocases to self */
|
|
0x04D2, /* Monocases to self */
|
|
0x04D3, /* Monocases to self */
|
|
0x04D4, /* Monocases to self */
|
|
0x04D5, /* Monocases to self */
|
|
0x04D6, /* Monocases to self */
|
|
0x04D7, /* Monocases to self */
|
|
0x04D8, /* Monocases to self */
|
|
0x04D9, /* Monocases to self */
|
|
0x04DA, /* Monocases to self */
|
|
0x04DB, /* Monocases to self */
|
|
0x04DC, /* Monocases to self */
|
|
0x04DD, /* Monocases to self */
|
|
0x04DE, /* Monocases to self */
|
|
0x04DF, /* Monocases to self */
|
|
0x04E0, /* Monocases to self */
|
|
0x04E1, /* Monocases to self */
|
|
0x04E2, /* Monocases to self */
|
|
0x04E3, /* Monocases to self */
|
|
0x04E4, /* Monocases to self */
|
|
0x04E5, /* Monocases to self */
|
|
0x04E6, /* Monocases to self */
|
|
0x04E7, /* Monocases to self */
|
|
0x04E8, /* Monocases to self */
|
|
0x04E9, /* Monocases to self */
|
|
0x04EA, /* Monocases to self */
|
|
0x04EB, /* Monocases to self */
|
|
0x04EC, /* Monocases to self */
|
|
0x04ED, /* Monocases to self */
|
|
0x04EE, /* Monocases to self */
|
|
0x04EF, /* Monocases to self */
|
|
0x04F0, /* Monocases to self */
|
|
0x04F1, /* Monocases to self */
|
|
0x04F2, /* Monocases to self */
|
|
0x04F3, /* Monocases to self */
|
|
0x04F4, /* Monocases to self */
|
|
0x04F5, /* Monocases to self */
|
|
0x04F6, /* Monocases to self */
|
|
0x04F7, /* Monocases to self */
|
|
0x04F8, /* Monocases to self */
|
|
0x04F9, /* Monocases to self */
|
|
0x04FA, /* Monocases to self */
|
|
0x04FB, /* Monocases to self */
|
|
0x04FC, /* Monocases to self */
|
|
0x04FD, /* Monocases to self */
|
|
0x04FE, /* Monocases to self */
|
|
0x04FF, /* Monocases to self */
|
|
0x0500, /* Monocases to self */
|
|
0x0501, /* Monocases to self */
|
|
0x0502, /* Monocases to self */
|
|
0x0503, /* Monocases to self */
|
|
0x0504, /* Monocases to self */
|
|
0x0505, /* Monocases to self */
|
|
0x0506, /* Monocases to self */
|
|
0x0507, /* Monocases to self */
|
|
0x0508, /* Monocases to self */
|
|
0x0509, /* Monocases to self */
|
|
0x050A, /* Monocases to self */
|
|
0x050B, /* Monocases to self */
|
|
0x050C, /* Monocases to self */
|
|
0x050D, /* Monocases to self */
|
|
0x050E, /* Monocases to self */
|
|
0x050F, /* Monocases to self */
|
|
0x0510, /* Monocases to self */
|
|
0x0511, /* Monocases to self */
|
|
0x0512, /* Monocases to self */
|
|
0x0513, /* Monocases to self */
|
|
0x0514, /* Monocases to self */
|
|
0x0515, /* Monocases to self */
|
|
0x0516, /* Monocases to self */
|
|
0x0517, /* Monocases to self */
|
|
0x0518, /* Monocases to self */
|
|
0x0519, /* Monocases to self */
|
|
0x051A, /* Monocases to self */
|
|
0x051B, /* Monocases to self */
|
|
0x051C, /* Monocases to self */
|
|
0x051D, /* Monocases to self */
|
|
0x051E, /* Monocases to self */
|
|
0x051F, /* Monocases to self */
|
|
0x0520, /* Monocases to self */
|
|
0x0521, /* Monocases to self */
|
|
0x0522, /* Monocases to self */
|
|
0x0523, /* Monocases to self */
|
|
0x0524, /* Monocases to self */
|
|
0x0525, /* Monocases to self */
|
|
0x0526, /* Monocases to self */
|
|
0x0527, /* Monocases to self */
|
|
0x0528, /* Monocases to self */
|
|
0x0529, /* Monocases to self */
|
|
0x052A, /* Monocases to self */
|
|
0x052B, /* Monocases to self */
|
|
0x052C, /* Monocases to self */
|
|
0x052D, /* Monocases to self */
|
|
0x052E, /* Monocases to self */
|
|
0x052F, /* Monocases to self */
|
|
0x0530, /* Monocases to self */
|
|
0x0561, /* ARMENIAN LETTER AYB */
|
|
0x0562, /* ARMENIAN LETTER BEN */
|
|
0x0563, /* ARMENIAN LETTER GIM */
|
|
0x0564, /* ARMENIAN LETTER DA */
|
|
0x0565, /* ARMENIAN LETTER ECH */
|
|
0x0566, /* ARMENIAN LETTER ZA */
|
|
0x0567, /* ARMENIAN LETTER EH */
|
|
0x0568, /* ARMENIAN LETTER ET */
|
|
0x0569, /* ARMENIAN LETTER TO */
|
|
0x056A, /* ARMENIAN LETTER ZHE */
|
|
0x056B, /* ARMENIAN LETTER INI */
|
|
0x056C, /* ARMENIAN LETTER LIWN */
|
|
0x056D, /* ARMENIAN LETTER XEH */
|
|
0x056E, /* ARMENIAN LETTER CA */
|
|
0x056F, /* ARMENIAN LETTER KEN */
|
|
0x0570, /* ARMENIAN LETTER HO */
|
|
0x0571, /* ARMENIAN LETTER JA */
|
|
0x0572, /* ARMENIAN LETTER LAD */
|
|
0x0573, /* ARMENIAN LETTER CHEH */
|
|
0x0574, /* ARMENIAN LETTER MEN */
|
|
0x0575, /* ARMENIAN LETTER YI */
|
|
0x0576, /* ARMENIAN LETTER NOW */
|
|
0x0577, /* ARMENIAN LETTER SHA */
|
|
0x0578, /* ARMENIAN LETTER VO */
|
|
0x0579, /* ARMENIAN LETTER CHA */
|
|
0x057A, /* ARMENIAN LETTER PEH */
|
|
0x057B, /* ARMENIAN LETTER JHEH */
|
|
0x057C, /* ARMENIAN LETTER RA */
|
|
0x057D, /* ARMENIAN LETTER SEH */
|
|
0x057E, /* ARMENIAN LETTER VEW */
|
|
0x057F, /* ARMENIAN LETTER TIWN */
|
|
0x0580, /* ARMENIAN LETTER REH */
|
|
0x0581, /* ARMENIAN LETTER CO */
|
|
0x0582, /* ARMENIAN LETTER YIWN */
|
|
0x0583, /* ARMENIAN LETTER PIWR */
|
|
0x0584, /* ARMENIAN LETTER KEH */
|
|
0x0585, /* ARMENIAN LETTER OH */
|
|
0x0586, /* ARMENIAN LETTER FEH */
|
|
0x0557, /* Monocases to self */
|
|
0x0558, /* Monocases to self */
|
|
0x0559, /* Monocases to self */
|
|
0x055A, /* Monocases to self */
|
|
0x055B, /* Monocases to self */
|
|
0x055C, /* Monocases to self */
|
|
0x055D, /* Monocases to self */
|
|
0x055E, /* Monocases to self */
|
|
0x055F, /* Monocases to self */
|
|
0x0560, /* Monocases to self */
|
|
0x0561, /* Monocases to self */
|
|
0x0562, /* Monocases to self */
|
|
0x0563, /* Monocases to self */
|
|
0x0564, /* Monocases to self */
|
|
0x0565, /* Monocases to self */
|
|
0x0566, /* Monocases to self */
|
|
0x0567, /* Monocases to self */
|
|
0x0568, /* Monocases to self */
|
|
0x0569, /* Monocases to self */
|
|
0x056A, /* Monocases to self */
|
|
0x056B, /* Monocases to self */
|
|
0x056C, /* Monocases to self */
|
|
0x056D, /* Monocases to self */
|
|
0x056E, /* Monocases to self */
|
|
0x056F, /* Monocases to self */
|
|
0x0570, /* Monocases to self */
|
|
0x0571, /* Monocases to self */
|
|
0x0572, /* Monocases to self */
|
|
0x0573, /* Monocases to self */
|
|
0x0574, /* Monocases to self */
|
|
0x0575, /* Monocases to self */
|
|
0x0576, /* Monocases to self */
|
|
0x0577, /* Monocases to self */
|
|
0x0578, /* Monocases to self */
|
|
0x0579, /* Monocases to self */
|
|
0x057A, /* Monocases to self */
|
|
0x057B, /* Monocases to self */
|
|
0x057C, /* Monocases to self */
|
|
0x057D, /* Monocases to self */
|
|
0x057E, /* Monocases to self */
|
|
0x057F, /* Monocases to self */
|
|
0x0580, /* Monocases to self */
|
|
0x0581, /* Monocases to self */
|
|
0x0582, /* Monocases to self */
|
|
0x0583, /* Monocases to self */
|
|
0x0584, /* Monocases to self */
|
|
0x0585, /* Monocases to self */
|
|
0x0586, /* Monocases to self */
|
|
0x0587, /* Monocases to self */
|
|
0x0588, /* Monocases to self */
|
|
0x0589, /* Monocases to self */
|
|
0x058A, /* Monocases to self */
|
|
0x058B, /* Monocases to self */
|
|
0x058C, /* Monocases to self */
|
|
0x058D, /* Monocases to self */
|
|
0x058E, /* Monocases to self */
|
|
0x058F, /* Monocases to self */
|
|
0x0590, /* Monocases to self */
|
|
0x0591, /* Monocases to self */
|
|
0x0592, /* Monocases to self */
|
|
0x0593, /* Monocases to self */
|
|
0x0594, /* Monocases to self */
|
|
0x0595, /* Monocases to self */
|
|
0x0596, /* Monocases to self */
|
|
0x0597, /* Monocases to self */
|
|
0x0598, /* Monocases to self */
|
|
0x0599, /* Monocases to self */
|
|
0x059A, /* Monocases to self */
|
|
0x059B, /* Monocases to self */
|
|
0x059C, /* Monocases to self */
|
|
0x059D, /* Monocases to self */
|
|
0x059E, /* Monocases to self */
|
|
0x059F, /* Monocases to self */
|
|
0x05A0, /* Monocases to self */
|
|
0x05A1, /* Monocases to self */
|
|
0x05A2, /* Monocases to self */
|
|
0x05A3, /* Monocases to self */
|
|
0x05A4, /* Monocases to self */
|
|
0x05A5, /* Monocases to self */
|
|
0x05A6, /* Monocases to self */
|
|
0x05A7, /* Monocases to self */
|
|
0x05A8, /* Monocases to self */
|
|
0x05A9, /* Monocases to self */
|
|
0x05AA, /* Monocases to self */
|
|
0x05AB, /* Monocases to self */
|
|
0x05AC, /* Monocases to self */
|
|
0x05AD, /* Monocases to self */
|
|
0x05AE, /* Monocases to self */
|
|
0x05AF, /* Monocases to self */
|
|
0x05B0, /* Monocases to self */
|
|
0x05B1, /* Monocases to self */
|
|
0x05B2, /* Monocases to self */
|
|
0x05B3, /* Monocases to self */
|
|
0x05B4, /* Monocases to self */
|
|
0x05B5, /* Monocases to self */
|
|
0x05B6, /* Monocases to self */
|
|
0x05B7, /* Monocases to self */
|
|
0x05B8, /* Monocases to self */
|
|
0x05B9, /* Monocases to self */
|
|
0x05BA, /* Monocases to self */
|
|
0x05BB, /* Monocases to self */
|
|
0x05BC, /* Monocases to self */
|
|
0x05BD, /* Monocases to self */
|
|
0x05BE, /* Monocases to self */
|
|
0x05BF, /* Monocases to self */
|
|
0x05C0, /* Monocases to self */
|
|
0x05C1, /* Monocases to self */
|
|
0x05C2, /* Monocases to self */
|
|
0x05C3, /* Monocases to self */
|
|
0x05C4, /* Monocases to self */
|
|
0x05C5, /* Monocases to self */
|
|
0x05C6, /* Monocases to self */
|
|
0x05C7, /* Monocases to self */
|
|
0x05C8, /* Monocases to self */
|
|
0x05C9, /* Monocases to self */
|
|
0x05CA, /* Monocases to self */
|
|
0x05CB, /* Monocases to self */
|
|
0x05CC, /* Monocases to self */
|
|
0x05CD, /* Monocases to self */
|
|
0x05CE, /* Monocases to self */
|
|
0x05CF, /* Monocases to self */
|
|
0x05D0, /* Monocases to self */
|
|
0x05D1, /* Monocases to self */
|
|
0x05D2, /* Monocases to self */
|
|
0x05D3, /* Monocases to self */
|
|
0x05D4, /* Monocases to self */
|
|
0x05D5, /* Monocases to self */
|
|
0x05D6, /* Monocases to self */
|
|
0x05D7, /* Monocases to self */
|
|
0x05D8, /* Monocases to self */
|
|
0x05D9, /* Monocases to self */
|
|
0x05DA, /* Monocases to self */
|
|
0x05DB, /* Monocases to self */
|
|
0x05DC, /* Monocases to self */
|
|
0x05DD, /* Monocases to self */
|
|
0x05DE, /* Monocases to self */
|
|
0x05DF, /* Monocases to self */
|
|
0x05E0, /* Monocases to self */
|
|
0x05E1, /* Monocases to self */
|
|
0x05E2, /* Monocases to self */
|
|
0x05E3, /* Monocases to self */
|
|
0x05E4, /* Monocases to self */
|
|
0x05E5, /* Monocases to self */
|
|
0x05E6, /* Monocases to self */
|
|
0x05E7, /* Monocases to self */
|
|
0x05E8, /* Monocases to self */
|
|
0x05E9, /* Monocases to self */
|
|
0x05EA, /* Monocases to self */
|
|
0x05EB, /* Monocases to self */
|
|
0x05EC, /* Monocases to self */
|
|
0x05ED, /* Monocases to self */
|
|
0x05EE, /* Monocases to self */
|
|
0x05EF, /* Monocases to self */
|
|
0x05F0, /* Monocases to self */
|
|
0x05F1, /* Monocases to self */
|
|
0x05F2, /* Monocases to self */
|
|
0x05F3, /* Monocases to self */
|
|
0x05F4, /* Monocases to self */
|
|
0x05F5, /* Monocases to self */
|
|
0x05F6, /* Monocases to self */
|
|
0x05F7, /* Monocases to self */
|
|
0x05F8, /* Monocases to self */
|
|
0x05F9, /* Monocases to self */
|
|
0x05FA, /* Monocases to self */
|
|
0x05FB, /* Monocases to self */
|
|
0x05FC, /* Monocases to self */
|
|
0x05FD, /* Monocases to self */
|
|
0x05FE, /* Monocases to self */
|
|
0x05FF, /* Monocases to self */
|
|
};
|
|
|
|
static const FLMUNICODE georgian[ 40] =
|
|
{
|
|
0x10D0, /* GEORGIAN LETTER AN */
|
|
0x10D1, /* GEORGIAN LETTER BAN */
|
|
0x10D2, /* GEORGIAN LETTER GAN */
|
|
0x10D3, /* GEORGIAN LETTER DON */
|
|
0x10D4, /* GEORGIAN LETTER EN */
|
|
0x10D5, /* GEORGIAN LETTER VIN */
|
|
0x10D6, /* GEORGIAN LETTER ZEN */
|
|
0x10D7, /* GEORGIAN LETTER TAN */
|
|
0x10D8, /* GEORGIAN LETTER IN */
|
|
0x10D9, /* GEORGIAN LETTER KAN */
|
|
0x10DA, /* GEORGIAN LETTER LAS */
|
|
0x10DB, /* GEORGIAN LETTER MAN */
|
|
0x10DC, /* GEORGIAN LETTER NAR */
|
|
0x10DD, /* GEORGIAN LETTER ON */
|
|
0x10DE, /* GEORGIAN LETTER PAR */
|
|
0x10DF, /* GEORGIAN LETTER ZHAR */
|
|
0x10E0, /* GEORGIAN LETTER RAE */
|
|
0x10E1, /* GEORGIAN LETTER SAN */
|
|
0x10E2, /* GEORGIAN LETTER TAR */
|
|
0x10E3, /* GEORGIAN LETTER UN */
|
|
0x10E4, /* GEORGIAN LETTER PHAR */
|
|
0x10E5, /* GEORGIAN LETTER KHAR */
|
|
0x10E6, /* GEORGIAN LETTER GHAN */
|
|
0x10E7, /* GEORGIAN LETTER QAR */
|
|
0x10E8, /* GEORGIAN LETTER SHIN */
|
|
0x10E9, /* GEORGIAN LETTER CHIN */
|
|
0x10EA, /* GEORGIAN LETTER CAN */
|
|
0x10EB, /* GEORGIAN LETTER JIL */
|
|
0x10EC, /* GEORGIAN LETTER CIL */
|
|
0x10ED, /* GEORGIAN LETTER CHAR */
|
|
0x10EE, /* GEORGIAN LETTER XAN */
|
|
0x10EF, /* GEORGIAN LETTER JHAN */
|
|
0x10F0, /* GEORGIAN LETTER HAE */
|
|
0x10F1, /* GEORGIAN LETTER HE */
|
|
0x10F2, /* GEORGIAN LETTER HIE */
|
|
0x10F3, /* GEORGIAN LETTER WE */
|
|
0x10F4, /* GEORGIAN LETTER HAR */
|
|
0x10F5, /* GEORGIAN LETTER HOE */
|
|
};
|
|
|
|
static const FLMUNICODE circledLatin[26] =
|
|
{
|
|
0x24D0, /* CIRCLED LATIN LETTER A */
|
|
0x24D1, /* CIRCLED LATIN LETTER B */
|
|
0x24D2, /* CIRCLED LATIN LETTER C */
|
|
0x24D3, /* CIRCLED LATIN LETTER D */
|
|
0x24D4, /* CIRCLED LATIN LETTER E */
|
|
0x24D5, /* CIRCLED LATIN LETTER F */
|
|
0x24D6, /* CIRCLED LATIN LETTER G */
|
|
0x24D7, /* CIRCLED LATIN LETTER H */
|
|
0x24D8, /* CIRCLED LATIN LETTER I */
|
|
0x24D9, /* CIRCLED LATIN LETTER J */
|
|
0x24DA, /* CIRCLED LATIN LETTER K */
|
|
0x24DB, /* CIRCLED LATIN LETTER L */
|
|
0x24DC, /* CIRCLED LATIN LETTER M */
|
|
0x24DD, /* CIRCLED LATIN LETTER N */
|
|
0x24DE, /* CIRCLED LATIN LETTER O */
|
|
0x24DF, /* CIRCLED LATIN LETTER P */
|
|
0x24E0, /* CIRCLED LATIN LETTER Q */
|
|
0x24E1, /* CIRCLED LATIN LETTER R */
|
|
0x24E2, /* CIRCLED LATIN LETTER S */
|
|
0x24E3, /* CIRCLED LATIN LETTER T */
|
|
0x24E4, /* CIRCLED LATIN LETTER U */
|
|
0x24E5, /* CIRCLED LATIN LETTER V */
|
|
0x24E6, /* CIRCLED LATIN LETTER W */
|
|
0x24E7, /* CIRCLED LATIN LETTER X */
|
|
0x24E8, /* CIRCLED LATIN LETTER Y */
|
|
0x24E9, /* CIRCLED LATIN LETTER Z */
|
|
};
|
|
|
|
static const FLMUNICODE compat[] =
|
|
{
|
|
0x2025,
|
|
0x2014,
|
|
0x2013,
|
|
0x005F,
|
|
0x005F,
|
|
0x0028,
|
|
0x0029,
|
|
0x007B,
|
|
0x007D,
|
|
0x3014,
|
|
0x3015,
|
|
0x3010,
|
|
0x3011,
|
|
0x300A,
|
|
0x300B,
|
|
0x3008,
|
|
0x3009,
|
|
0x300C,
|
|
0x300D,
|
|
0x300E,
|
|
0x300F,
|
|
0xFE45,
|
|
0xFE46,
|
|
0xFE47,
|
|
0xFE48,
|
|
0x203E,
|
|
0x203E,
|
|
0x203E,
|
|
0x203E,
|
|
0x005F,
|
|
0x005F,
|
|
0x005F,
|
|
0x002C,
|
|
0x3001,
|
|
0x002E,
|
|
0xFE53,
|
|
0x003B,
|
|
0x003A,
|
|
0x003F,
|
|
0x0021,
|
|
0x2014,
|
|
0x0028,
|
|
0x0029,
|
|
0x007B,
|
|
0x007D,
|
|
0x3014,
|
|
0x3015,
|
|
0x0023,
|
|
0x0026,
|
|
0x002A,
|
|
0x002B,
|
|
0x002D,
|
|
0x003C,
|
|
0x003E,
|
|
0x003D,
|
|
0xFE67,
|
|
0x005C,
|
|
0x0024,
|
|
0x0025,
|
|
0x0040,
|
|
0xFE6C,
|
|
0xFE6D,
|
|
0xFE6E,
|
|
0xFE6F,
|
|
0x064B,
|
|
0x064B,
|
|
0x064C,
|
|
0xFE73,
|
|
0x064D,
|
|
0xFE75,
|
|
0x064E,
|
|
0x064E,
|
|
0x064F,
|
|
0x064F,
|
|
0x0650,
|
|
0x0650,
|
|
0x0651,
|
|
0x0651,
|
|
0x0652,
|
|
0x0652,
|
|
0x0621,
|
|
0x0622,
|
|
0x0622,
|
|
0x0623,
|
|
0x0623,
|
|
0x0624,
|
|
0x0624,
|
|
0x0625,
|
|
0x0625,
|
|
0x0626,
|
|
0x0626,
|
|
0x0626,
|
|
0x0626,
|
|
0x0627,
|
|
0x0627,
|
|
0x0628,
|
|
0x0628,
|
|
0x0628,
|
|
0x0628,
|
|
0x0629,
|
|
0x0629,
|
|
0x062A,
|
|
0x062A,
|
|
0x062A,
|
|
0x062A,
|
|
0x062B,
|
|
0x062B,
|
|
0x062B,
|
|
0x062B,
|
|
0x062C,
|
|
0x062C,
|
|
0x062C,
|
|
0x062C,
|
|
0x062D,
|
|
0x062D,
|
|
0x062D,
|
|
0x062D,
|
|
0x062E,
|
|
0x062E,
|
|
0x062E,
|
|
0x062E,
|
|
0x062F,
|
|
0x062F,
|
|
0x0630,
|
|
0x0630,
|
|
0x0631,
|
|
0x0631,
|
|
0x0632,
|
|
0x0632,
|
|
0x0633,
|
|
0x0633,
|
|
0x0633,
|
|
0x0633,
|
|
0x0634,
|
|
0x0634,
|
|
0x0634,
|
|
0x0634,
|
|
0x0635,
|
|
0x0635,
|
|
0x0635,
|
|
0x0635,
|
|
0x0636,
|
|
0x0636,
|
|
0x0636,
|
|
0x0636,
|
|
0x0637,
|
|
0x0637,
|
|
0x0637,
|
|
0x0637,
|
|
0x0638,
|
|
0x0638,
|
|
0x0638,
|
|
0x0638,
|
|
0x0639,
|
|
0x0639,
|
|
0x0639,
|
|
0x0639,
|
|
0x063A,
|
|
0x063A,
|
|
0x063A,
|
|
0x063A,
|
|
0x0641,
|
|
0x0641,
|
|
0x0641,
|
|
0x0641,
|
|
0x0642,
|
|
0x0642,
|
|
0x0642,
|
|
0x0642,
|
|
0x0643,
|
|
0x0643,
|
|
0x0643,
|
|
0x0643,
|
|
0x0644,
|
|
0x0644,
|
|
0x0644,
|
|
0x0644,
|
|
0x0645,
|
|
0x0645,
|
|
0x0645,
|
|
0x0645,
|
|
0x0646,
|
|
0x0646,
|
|
0x0646,
|
|
0x0646,
|
|
0x0647,
|
|
0x0647,
|
|
0x0647,
|
|
0x0647,
|
|
0x0648,
|
|
0x0648,
|
|
0x0649,
|
|
0x0649,
|
|
0x064A,
|
|
0x064A,
|
|
0x064A,
|
|
0x064A,
|
|
0xFEF5,
|
|
0xFEF6,
|
|
0xFEF7,
|
|
0xFEF8,
|
|
0xFEF9,
|
|
0xFEFA,
|
|
0xFEFB,
|
|
0xFEFC,
|
|
0xFEFD,
|
|
0xFEFE,
|
|
0xFEFE,
|
|
0xFE00,
|
|
0x0021,
|
|
0x0022,
|
|
0x0023,
|
|
0x0024,
|
|
0x0025,
|
|
0x0026,
|
|
0x0027,
|
|
0x0028,
|
|
0x0029,
|
|
0x002A,
|
|
0x002B,
|
|
0x002C,
|
|
0x002D,
|
|
0x002E,
|
|
0x002F,
|
|
0x0030,
|
|
0x0031,
|
|
0x0032,
|
|
0x0033,
|
|
0x0034,
|
|
0x0035,
|
|
0x0036,
|
|
0x0037,
|
|
0x0038,
|
|
0x0039,
|
|
0x003A,
|
|
0x003B,
|
|
0x003C,
|
|
0x003D,
|
|
0x003E,
|
|
0x003F,
|
|
0x0040,
|
|
0x0061,
|
|
0x0062,
|
|
0x0063,
|
|
0x0064,
|
|
0x0065,
|
|
0x0066,
|
|
0x0067,
|
|
0x0068,
|
|
0x0069,
|
|
0x006A,
|
|
0x006B,
|
|
0x006C,
|
|
0x006D,
|
|
0x006E,
|
|
0x006F,
|
|
0x0070,
|
|
0x0071,
|
|
0x0072,
|
|
0x0073,
|
|
0x0074,
|
|
0x0075,
|
|
0x0076,
|
|
0x0077,
|
|
0x0078,
|
|
0x0079,
|
|
0x007A,
|
|
0x005B,
|
|
0x005C,
|
|
0x005D,
|
|
0x005E,
|
|
0x005F,
|
|
0x0060,
|
|
0x0061,
|
|
0x0062,
|
|
0x0063,
|
|
0x0064,
|
|
0x0065,
|
|
0x0066,
|
|
0x0067,
|
|
0x0068,
|
|
0x0069,
|
|
0x006A,
|
|
0x006B,
|
|
0x006C,
|
|
0x006D,
|
|
0x006E,
|
|
0x006F,
|
|
0x0070,
|
|
0x0071,
|
|
0x0072,
|
|
0x0073,
|
|
0x0074,
|
|
0x0075,
|
|
0x0076,
|
|
0x0077,
|
|
0x0078,
|
|
0x0079,
|
|
0x007A,
|
|
0x007B,
|
|
0x007C,
|
|
0x007D,
|
|
0x007E,
|
|
0xFF5F,
|
|
0xFF60,
|
|
0x3002,
|
|
0x300C,
|
|
0x300D,
|
|
0x3001,
|
|
0x30FB,
|
|
0x30F2,
|
|
0x30A1,
|
|
0x30A3,
|
|
0x30A5,
|
|
0x30A7,
|
|
0x30A9,
|
|
0x30E3,
|
|
0x30E5,
|
|
0x30E7,
|
|
0x30C3,
|
|
0x30FC,
|
|
0x30A2,
|
|
0x30A4,
|
|
0x30A6,
|
|
0x30A8,
|
|
0x30AA,
|
|
0x30AB,
|
|
0x30AD,
|
|
0x30AF,
|
|
0x30B1,
|
|
0x30B3,
|
|
0x30B5,
|
|
0x30B7,
|
|
0x30B9,
|
|
0x30BB,
|
|
0x30BD,
|
|
0x30BF,
|
|
0x30C1,
|
|
0x30C4,
|
|
0x30C6,
|
|
0x30C8,
|
|
0x30CA,
|
|
0x30CB,
|
|
0x30CC,
|
|
0x30CD,
|
|
0x30CE,
|
|
0x30CF,
|
|
0x30D2,
|
|
0x30D5,
|
|
0x30D8,
|
|
0x30DB,
|
|
0x30DE,
|
|
0x30DF,
|
|
0x30E0,
|
|
0x30E1,
|
|
0x30E2,
|
|
0x30E4,
|
|
0x30E6,
|
|
0x30E8,
|
|
0x30E9,
|
|
0x30EA,
|
|
0x30EB,
|
|
0x30EC,
|
|
0x30ED,
|
|
0x30EF,
|
|
0x30F3,
|
|
0x309B,
|
|
0x309C,
|
|
0x3164,
|
|
0x3131,
|
|
0x3132,
|
|
0x3133,
|
|
0x3134,
|
|
0x3135,
|
|
0x3136,
|
|
0x3137,
|
|
0x3138,
|
|
0x3139,
|
|
0x313A,
|
|
0x313B,
|
|
0x313C,
|
|
0x313D,
|
|
0x313E,
|
|
0x313F,
|
|
0x3140,
|
|
0x3141,
|
|
0x3142,
|
|
0x3143,
|
|
0x3144,
|
|
0x3145,
|
|
0x3146,
|
|
0x3147,
|
|
0x3148,
|
|
0x3149,
|
|
0x314A,
|
|
0x314B,
|
|
0x314C,
|
|
0x314D,
|
|
0x314E,
|
|
0xFFBF,
|
|
0xFFC0,
|
|
0xFFC1,
|
|
0x314F,
|
|
0x3150,
|
|
0x3151,
|
|
0x3152,
|
|
0x3153,
|
|
0x3154,
|
|
0xFFC8,
|
|
0xFFC9,
|
|
0x3155,
|
|
0x3156,
|
|
0x3157,
|
|
0x3158,
|
|
0x3159,
|
|
0x315A,
|
|
0xFFD0,
|
|
0xFFD1,
|
|
0x315B,
|
|
0x315C,
|
|
0x315D,
|
|
0x315E,
|
|
0x315F,
|
|
0x3160,
|
|
0xFFD8,
|
|
0xFFD9,
|
|
0x3161,
|
|
0x3162,
|
|
0x3163,
|
|
0xFFDD,
|
|
0xFFDE,
|
|
0xFFDF,
|
|
0x00A2,
|
|
0x00A3,
|
|
0x00AC,
|
|
0x00AF,
|
|
0x00A6,
|
|
0x00A5,
|
|
0x20A9
|
|
};
|
|
|
|
if( uChar < 0x600)
|
|
{
|
|
uChar = basicAlpha[ uChar];
|
|
}
|
|
else if( uChar < 0x10A0)
|
|
{
|
|
;
|
|
}
|
|
else if( uChar >= 0x10A0 && uChar <= 0x10C5)
|
|
{
|
|
uChar = georgian[ uChar - 0x10A0];
|
|
}
|
|
else if( uChar >= 0x24B6 && uChar <= 0x24CF)
|
|
{
|
|
uChar = circledLatin[ uChar - 0x24B6];
|
|
}
|
|
else if( uChar >= 0xFE30 && uChar <= 0xFFE6)
|
|
{
|
|
uChar = compat[ uChar - 0xFE30];
|
|
}
|
|
|
|
return( uChar);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Compares two Unicode strings
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_unicmp(
|
|
const FLMUNICODE * puzStr1,
|
|
const FLMUNICODE * puzStr2)
|
|
{
|
|
while( *puzStr1 == *puzStr2 && *puzStr1)
|
|
{
|
|
puzStr1++;
|
|
puzStr2++;
|
|
}
|
|
|
|
return( (FLMINT)*puzStr1 - (FLMINT)*puzStr2);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Performs a case-insensitive comparision of two Unicode strings
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_uniicmp(
|
|
const FLMUNICODE * puzStr1,
|
|
const FLMUNICODE * puzStr2)
|
|
{
|
|
while( f_uniToLower( *puzStr1) == f_uniToLower( *puzStr2) && *puzStr1)
|
|
{
|
|
puzStr1++;
|
|
puzStr2++;
|
|
}
|
|
|
|
return( (FLMINT)f_uniToLower( *puzStr1) - (FLMINT)f_uniToLower( *puzStr2));
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Compares two strings, one Unicode and one native
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_uninativecmp(
|
|
const FLMUNICODE * puzStr1,
|
|
const char * pszStr2)
|
|
{
|
|
while( *puzStr1 == ((FLMUNICODE)f_toascii( *pszStr2)) && *puzStr1)
|
|
{
|
|
puzStr1++;
|
|
pszStr2++;
|
|
}
|
|
|
|
return( (FLMINT)*puzStr1 - (FLMINT)*pszStr2);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Compares two strings, one Unicode and one native
|
|
****************************************************************************/
|
|
FLMINT FLMAPI f_uninativencmp(
|
|
const FLMUNICODE * puzStr1,
|
|
const char * pszStr2,
|
|
FLMUINT uiCount)
|
|
{
|
|
if( !uiCount)
|
|
{
|
|
return( 0);
|
|
}
|
|
|
|
while( uiCount &&
|
|
*puzStr1 == ((FLMUNICODE)f_toascii( *pszStr2)) && *puzStr1)
|
|
{
|
|
puzStr1++;
|
|
pszStr2++;
|
|
uiCount--;
|
|
}
|
|
|
|
return( uiCount ? ((FLMINT)*puzStr1 - (FLMINT)*pszStr2) : 0);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FLMBOOL FLMAPI f_uniIsUpper(
|
|
FLMUNICODE uzChar)
|
|
{
|
|
FLMBOOL bRV;
|
|
|
|
if (uzChar & 0x1)
|
|
{
|
|
bRV = (UnicodeProperties[uzChar / 2] & UNICODE_UPPERCASE_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
else
|
|
{
|
|
bRV = ((UnicodeProperties[ uzChar / 2] >> 4) & UNICODE_UPPERCASE_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
|
|
return( bRV);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FLMBOOL FLMAPI f_uniIsLower(
|
|
FLMUNICODE uzChar)
|
|
{
|
|
FLMBOOL bRV;
|
|
|
|
if (uzChar & 0x1)
|
|
{
|
|
bRV = (UnicodeProperties[ uzChar / 2] & UNICODE_LOWERCASE_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
else
|
|
{
|
|
bRV = ((UnicodeProperties[ uzChar / 2] >> 4) & UNICODE_LOWERCASE_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
|
|
return( bRV);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FLMBOOL FLMAPI f_uniIsAlpha(
|
|
FLMUNICODE uzChar)
|
|
{
|
|
FLMBOOL bRV;
|
|
|
|
if (uzChar & 0x1)
|
|
{
|
|
bRV = (UnicodeProperties[ uzChar / 2] & UNICODE_ALPHABETIC_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
else
|
|
{
|
|
bRV = ((UnicodeProperties[ uzChar / 2] >> 4) & UNICODE_ALPHABETIC_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
|
|
return( bRV);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FLMBOOL FLMAPI f_uniIsDecimalDigit(
|
|
FLMUNICODE uzChar)
|
|
{
|
|
FLMBOOL bRV;
|
|
|
|
if (uzChar & 0x1)
|
|
{
|
|
bRV = (UnicodeProperties[ uzChar / 2] & UNICODE_DECIMAL_DIGIT_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
else
|
|
{
|
|
bRV = ((UnicodeProperties[ uzChar / 2] >> 4) & UNICODE_DECIMAL_DIGIT_MASK)
|
|
? TRUE
|
|
: FALSE;
|
|
}
|
|
|
|
return( bRV);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_nextUCS2Char(
|
|
const FLMBYTE ** ppszUTF8,
|
|
const FLMBYTE * pszEndOfUTF8String,
|
|
FLMUNICODE * puzChar)
|
|
{
|
|
return( f_getCharFromUTF8Buf( ppszUTF8, pszEndOfUTF8String, puzChar));
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_numUCS2Chars(
|
|
const FLMBYTE * pszUTF8,
|
|
FLMUINT * puiNumChars)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMUINT uiTemp = 0;
|
|
FLMUNICODE uzChar;
|
|
|
|
for (;;)
|
|
{
|
|
if( RC_BAD( rc = f_getCharFromUTF8Buf( &pszUTF8, NULL, &uzChar)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if (!uzChar)
|
|
{
|
|
break;
|
|
}
|
|
|
|
uiTemp++;
|
|
}
|
|
|
|
Exit:
|
|
|
|
*puiNumChars = uiTemp;
|
|
return( rc);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Reads the next character from the storage buffer
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_getCharFromUTF8Buf(
|
|
const FLMBYTE ** ppucBuf,
|
|
const FLMBYTE * pucEnd,
|
|
FLMUNICODE * puChar)
|
|
{
|
|
const FLMBYTE * pucBuf = *ppucBuf;
|
|
FLMUINT uiMaxLen = pucEnd ? (FLMUINT)(pucEnd - *ppucBuf) : 3;
|
|
|
|
if( !uiMaxLen)
|
|
{
|
|
*puChar = 0;
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( pucBuf[ 0] <= 0x7F)
|
|
{
|
|
if( (*puChar = (FLMUNICODE)pucBuf[ 0]) != 0)
|
|
{
|
|
(*ppucBuf)++;
|
|
}
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( uiMaxLen < 2 || (pucBuf[ 1] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
if( (pucBuf[ 0] >> 5) == 0x06)
|
|
{
|
|
*puChar =
|
|
(FLMUNICODE)(((FLMUNICODE)( pucBuf[ 0] - 0xC0) << 6) +
|
|
(FLMUNICODE)(pucBuf[ 1] - 0x80));
|
|
(*ppucBuf) += 2;
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( uiMaxLen < 3 ||
|
|
(pucBuf[ 0] >> 4) != 0x0E ||
|
|
(pucBuf[ 2] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
*puChar =
|
|
(FLMUNICODE)(((FLMUNICODE)(pucBuf[ 0] - 0xE0) << 12) +
|
|
((FLMUNICODE)(pucBuf[ 1] - 0x80) << 6) +
|
|
(FLMUNICODE)(pucBuf[ 2] - 0x80));
|
|
(*ppucBuf) += 3;
|
|
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Convert a Unicode character to UTF-8
|
|
*****************************************************************************/
|
|
RCODE FLMAPI f_uni2UTF8(
|
|
FLMUNICODE uChar,
|
|
FLMBYTE * pucBuf,
|
|
FLMUINT * puiBufSize)
|
|
{
|
|
if( uChar <= 0x007F)
|
|
{
|
|
if( pucBuf)
|
|
{
|
|
if( *puiBufSize < 1)
|
|
{
|
|
return( RC_SET( NE_FLM_CONV_DEST_OVERFLOW));
|
|
}
|
|
|
|
*pucBuf = (FLMBYTE)uChar;
|
|
}
|
|
*puiBufSize = 1;
|
|
}
|
|
else if( uChar <= 0x07FF)
|
|
{
|
|
if( pucBuf)
|
|
{
|
|
if( *puiBufSize < 2)
|
|
{
|
|
return( RC_SET( NE_FLM_CONV_DEST_OVERFLOW));
|
|
}
|
|
|
|
*pucBuf++ = (FLMBYTE)(0xC0 | (FLMBYTE)(uChar >> 6));
|
|
*pucBuf = (FLMBYTE)(0x80 | (FLMBYTE)(uChar & 0x003F));
|
|
}
|
|
*puiBufSize = 2;
|
|
}
|
|
else
|
|
{
|
|
if( pucBuf)
|
|
{
|
|
if( *puiBufSize < 3)
|
|
{
|
|
return( RC_SET( NE_FLM_CONV_DEST_OVERFLOW));
|
|
}
|
|
|
|
*pucBuf++ = (FLMBYTE)(0xE0 | (FLMBYTE)(uChar >> 12));
|
|
*pucBuf++ = (FLMBYTE)(0x80 | (FLMBYTE)((uChar & 0x0FC0) >> 6));
|
|
*pucBuf = (FLMBYTE)(0x80 | (FLMBYTE)(uChar & 0x003F));
|
|
}
|
|
*puiBufSize = 3;
|
|
}
|
|
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Reads the next UTF-8 character from a UTF-8 buffer
|
|
Notes: This routine assumes that the destination buffer can hold at least
|
|
three bytes
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_getUTF8CharFromUTF8Buf(
|
|
FLMBYTE ** ppucBuf,
|
|
FLMBYTE * pucEnd,
|
|
FLMBYTE * pucDestBuf,
|
|
FLMUINT * puiLen)
|
|
{
|
|
FLMBYTE * pucBuf = *ppucBuf;
|
|
FLMUINT uiMaxLen = pucEnd ? (FLMUINT)(pucEnd - *ppucBuf) : 3;
|
|
|
|
if( !uiMaxLen || !pucBuf[ 0])
|
|
{
|
|
*puiLen = 0;
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( pucBuf[ 0] <= 0x7F)
|
|
{
|
|
*pucDestBuf = pucBuf[ 0];
|
|
(*ppucBuf)++;
|
|
*puiLen = 1;
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( uiMaxLen < 2 || (pucBuf[ 1] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
if( (pucBuf[ 0] >> 5) == 0x06)
|
|
{
|
|
pucDestBuf[ 0] = pucBuf[ 0];
|
|
pucDestBuf[ 1] = pucBuf[ 1];
|
|
(*ppucBuf) += 2;
|
|
*puiLen = 2;
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
if( uiMaxLen < 3 ||
|
|
(pucBuf[ 0] >> 4) != 0x0E ||
|
|
(pucBuf[ 2] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
pucDestBuf[ 0] = pucBuf[ 0];
|
|
pucDestBuf[ 1] = pucBuf[ 1];
|
|
pucDestBuf[ 2] = pucBuf[ 2];
|
|
(*ppucBuf) += 3;
|
|
*puiLen = 3;
|
|
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_getUTF8Length(
|
|
const FLMBYTE * pucBuf,
|
|
FLMUINT uiBufLen,
|
|
FLMUINT * puiBytes,
|
|
FLMUINT * puiChars)
|
|
{
|
|
const FLMBYTE * pucStart = pucBuf;
|
|
const FLMBYTE * pucEnd = uiBufLen ? (pucStart + uiBufLen) : NULL;
|
|
FLMUINT uiChars = 0;
|
|
|
|
if (!pucBuf)
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
while( (!pucEnd || pucBuf < pucEnd) && *pucBuf)
|
|
{
|
|
if( *pucBuf <= 0x7F)
|
|
{
|
|
pucBuf++;
|
|
uiChars++;
|
|
continue;
|
|
}
|
|
|
|
if( (pucEnd && pucBuf + 1 >= pucEnd) ||
|
|
(pucBuf[ 1] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
if( ((*pucBuf) >> 5) == 0x06)
|
|
{
|
|
pucBuf += 2;
|
|
uiChars++;
|
|
continue;
|
|
}
|
|
|
|
if( (pucEnd && pucBuf + 2 >= pucEnd) ||
|
|
(pucBuf[ 0] >> 4) != 0x0E ||
|
|
(pucBuf[ 2] >> 6) != 0x02)
|
|
{
|
|
return( RC_SET( NE_FLM_BAD_UTF8));
|
|
}
|
|
|
|
pucBuf += 3;
|
|
uiChars++;
|
|
}
|
|
|
|
Exit:
|
|
|
|
*puiChars = uiChars;
|
|
if (pucEnd && pucBuf == pucEnd)
|
|
{
|
|
*puiBytes = (FLMUINT)(pucBuf - pucStart);
|
|
}
|
|
else
|
|
{
|
|
// Hit a null byte
|
|
*puiBytes = (FLMUINT)(pucBuf - pucStart) + 1;
|
|
}
|
|
|
|
return( NE_FLM_OK);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Reads the next UTF-8 character from the stream
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_readUTF8CharAsUnicode(
|
|
IF_IStream * pIStream,
|
|
FLMUNICODE * puChar)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMBYTE ucBuf[ 3];
|
|
FLMUINT uiLen;
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( &ucBuf[ 0], uiLen, &uiLen)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( ucBuf[ 0] <= 0x7F)
|
|
{
|
|
if( !ucBuf [0])
|
|
{
|
|
rc = RC_SET( NE_FLM_EOF_HIT);
|
|
goto Exit;
|
|
}
|
|
*puChar = (FLMUNICODE)ucBuf[ 0];
|
|
goto Exit;
|
|
}
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( &ucBuf[ 1], uiLen, &uiLen)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( (ucBuf[ 1] >> 6) != 0x02)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
goto Exit;
|
|
}
|
|
|
|
if( (ucBuf[ 0] >> 5) == 0x06)
|
|
{
|
|
*puChar = ((FLMUNICODE)( ucBuf[ 0] - 0xC0) << 6) +
|
|
(FLMUNICODE)(ucBuf[ 1] - 0x80);
|
|
goto Exit;
|
|
}
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( &ucBuf[ 2], uiLen, &uiLen)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( (ucBuf[ 0] >> 4) != 0x0E || (ucBuf[ 2] >> 6) != 0x02)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
goto Exit;
|
|
}
|
|
|
|
*puChar = ((FLMUNICODE)(ucBuf[ 0] - 0xE0) << 12) +
|
|
((FLMUNICODE)(ucBuf[ 1] - 0x80) << 6) +
|
|
(FLMUNICODE)(ucBuf[ 2] - 0x80);
|
|
|
|
Exit:
|
|
|
|
if( RC_BAD( rc))
|
|
{
|
|
*puChar = 0;
|
|
}
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Format text removing leading and trailing spaces. Treat
|
|
underscores as spaces. As options, remove all spaces and dashes.
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_formatUTF8Text(
|
|
IF_PosIStream * pIStream,
|
|
FLMBOOL bAllowEscapes,
|
|
FLMUINT uiCompareRules,
|
|
F_DynaBuf * pDynaBuf)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMUINT uiFirstSpaceCharPos = FLM_MAX_UINT;
|
|
FLMUNICODE uChar;
|
|
FLMUINT uiSize;
|
|
FLMUINT uiStrSize = 0;
|
|
FLMBYTE * pucTmp;
|
|
|
|
if( !pIStream->remainingSize())
|
|
{
|
|
pDynaBuf->truncateData( 0);
|
|
goto Exit;
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
if (RC_BAD( rc = f_readUTF8CharAsUnicode( pIStream, &uChar)))
|
|
{
|
|
if (rc == NE_FLM_EOF_HIT)
|
|
{
|
|
rc = NE_FLM_OK;
|
|
break;
|
|
}
|
|
goto Exit;
|
|
}
|
|
|
|
if ((uChar = f_convertChar( uChar, uiCompareRules)) == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (uChar == ASCII_SPACE)
|
|
{
|
|
if (uiCompareRules &
|
|
(FLM_COMP_COMPRESS_WHITESPACE |
|
|
FLM_COMP_IGNORE_TRAILING_SPACE))
|
|
{
|
|
|
|
// Remember the position of the first space.
|
|
// When we come to the end of the spaces, we may reset
|
|
// the size to compress out spaces if necessary. Or,
|
|
// we may opt to get rid of all of them.
|
|
|
|
if (uiFirstSpaceCharPos == FLM_MAX_UINT)
|
|
{
|
|
uiFirstSpaceCharPos = uiStrSize;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
// Once we hit a non-space character, we can turn off the
|
|
// ignore leading spaces flag.
|
|
|
|
uiCompareRules &= (~(FLM_COMP_IGNORE_LEADING_SPACE));
|
|
|
|
// See if we need to compress spaces.
|
|
|
|
if (uiFirstSpaceCharPos != FLM_MAX_UINT)
|
|
{
|
|
|
|
// Output exactly one ASCII_SPACE character if we are compressing
|
|
// spaces. If we are not compressing spaces, then the only other
|
|
// way uiFirstSpaceCharPos would have been set is if we were
|
|
// ignoring trailing spaces. In that case, since the spaces
|
|
// were not trailing spaces, we need to leave them as is.
|
|
|
|
if (uiCompareRules & FLM_COMP_COMPRESS_WHITESPACE)
|
|
{
|
|
|
|
// A space will already have been encoded into the string.
|
|
// Since we know a space takes exactly one byte in the UTF8
|
|
// space, we can simply set our pointer one byte past where
|
|
// the last non-space character was found.
|
|
|
|
uiStrSize = uiFirstSpaceCharPos + 1;
|
|
pDynaBuf->truncateData( uiStrSize);
|
|
}
|
|
uiFirstSpaceCharPos = FLM_MAX_UINT;
|
|
}
|
|
|
|
// If we are allowing escaped characters, backslash is treated
|
|
// always as an escape character. Whatever follows the
|
|
// backslash is the character we need to process.
|
|
|
|
if (uChar == ASCII_BACKSLASH && bAllowEscapes)
|
|
{
|
|
if (RC_BAD( rc = f_readUTF8CharAsUnicode( pIStream, &uChar)))
|
|
{
|
|
if (rc == NE_FLM_EOF_HIT)
|
|
{
|
|
rc = NE_FLM_OK;
|
|
}
|
|
else
|
|
{
|
|
goto Exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Output the character - need at most three bytes
|
|
|
|
if (RC_BAD( rc = pDynaBuf->allocSpace( 3, (void **)&pucTmp)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
uiSize = 3;
|
|
if (RC_BAD( rc = f_uni2UTF8( uChar, pucTmp, &uiSize)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
uiStrSize += uiSize;
|
|
pDynaBuf->truncateData( uiStrSize);
|
|
}
|
|
|
|
// If uiFirstSpaceCharPos != FLM_MAX_UINT, it means that all of the
|
|
// characters at the end of the string were spaces. If we
|
|
// are ignoring trailing spaces, we need to truncate the string so
|
|
// they will be ignored. Otherwise, we need to compress them into
|
|
// a single space.
|
|
|
|
if (uiFirstSpaceCharPos != FLM_MAX_UINT)
|
|
{
|
|
if (uiCompareRules & FLM_COMP_IGNORE_TRAILING_SPACE)
|
|
{
|
|
uiStrSize = uiFirstSpaceCharPos;
|
|
}
|
|
else
|
|
{
|
|
f_assert( uiCompareRules & FLM_COMP_COMPRESS_WHITESPACE);
|
|
|
|
// A space will already have been encoded into the string.
|
|
// Since we know a space takes exactly one byte in the UTF8
|
|
// space, we can simply set our pointer one byte past where
|
|
// the last non-space character was found.
|
|
|
|
uiStrSize = uiFirstSpaceCharPos + 1;
|
|
}
|
|
pDynaBuf->truncateData( uiStrSize);
|
|
}
|
|
|
|
// Terminate the UTF-8 string
|
|
|
|
if (RC_BAD( rc = pDynaBuf->appendByte( 0)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FSTATIC FLMBOOL f_addMetaphone(
|
|
const char * pszStr,
|
|
const char * pszAltStr,
|
|
FLMBYTE * pszMeta,
|
|
FLMUINT * puiMetaOffset,
|
|
FLMBYTE * pszAltMeta,
|
|
FLMUINT * puiAltMetaOffset)
|
|
{
|
|
FLMBOOL bDone = FALSE;
|
|
|
|
if( pszStr)
|
|
{
|
|
while( *pszStr)
|
|
{
|
|
if( *puiMetaOffset < 4)
|
|
{
|
|
pszMeta[ (*puiMetaOffset)++] = *pszStr;
|
|
}
|
|
|
|
if( !pszAltStr && pszAltMeta && *puiAltMetaOffset < 4)
|
|
{
|
|
pszAltMeta[ (*puiAltMetaOffset)++] = *pszStr;
|
|
}
|
|
|
|
if( *puiMetaOffset == 4 && *puiAltMetaOffset == 4)
|
|
{
|
|
bDone = TRUE;
|
|
break;
|
|
}
|
|
|
|
pszStr++;
|
|
}
|
|
}
|
|
|
|
if( pszAltStr)
|
|
{
|
|
while( *pszAltStr)
|
|
{
|
|
if( *puiAltMetaOffset < 4)
|
|
{
|
|
pszAltMeta[ (*puiAltMetaOffset)++] = *pszAltStr;
|
|
}
|
|
|
|
if( *puiMetaOffset == 4 && *puiAltMetaOffset == 4)
|
|
{
|
|
bDone = TRUE;
|
|
break;
|
|
}
|
|
|
|
pszAltStr++;
|
|
}
|
|
}
|
|
|
|
return( bDone);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
FSTATIC void f_metaStrToNum(
|
|
FLMBYTE * pszMeta,
|
|
FLMUINT * puiMeta)
|
|
{
|
|
FLMUINT uiMeta = 0;
|
|
FLMUINT uiOffset = 0;
|
|
|
|
for( ;;)
|
|
{
|
|
if( *pszMeta)
|
|
{
|
|
switch( *pszMeta)
|
|
{
|
|
case '0':
|
|
break;
|
|
case 'A':
|
|
uiMeta += 1;
|
|
break;
|
|
case 'F':
|
|
uiMeta += 2;
|
|
break;
|
|
case 'H':
|
|
uiMeta += 3;
|
|
break;
|
|
case 'J':
|
|
uiMeta += 4;
|
|
break;
|
|
case 'K':
|
|
uiMeta += 5;
|
|
break;
|
|
case 'L':
|
|
uiMeta += 6;
|
|
break;
|
|
case 'M':
|
|
uiMeta += 7;
|
|
break;
|
|
case 'N':
|
|
uiMeta += 8;
|
|
break;
|
|
case 'P':
|
|
uiMeta += 9;
|
|
break;
|
|
case 'R':
|
|
uiMeta += 10;
|
|
break;
|
|
case 'S':
|
|
uiMeta += 11;
|
|
break;
|
|
case 'T':
|
|
uiMeta += 12;
|
|
break;
|
|
case 'X':
|
|
uiMeta += 13;
|
|
break;
|
|
default:
|
|
f_assert( 0);
|
|
}
|
|
|
|
pszMeta++;
|
|
}
|
|
|
|
if( ++uiOffset == 4)
|
|
{
|
|
f_assert( *pszMeta == 0);
|
|
break;
|
|
}
|
|
uiMeta <<= 4;
|
|
}
|
|
|
|
*puiMeta = uiMeta;
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Generate the metaphone and alternate metaphone keys for a given
|
|
input string
|
|
Notes: Lawrence Philips' Metaphone Algorithm is an algorithm which returns
|
|
the rough approximation of how an English word sounds. Rather
|
|
than returning the character representation of the encoded word,
|
|
this routine returns a 16-bit numeric representation.
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_getNextMetaphone(
|
|
IF_IStream * pIStream,
|
|
FLMUINT * puiMetaphone,
|
|
FLMUINT * puiAltMetaphone)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMUINT uiInputOffset = 0;
|
|
FLMUINT uiInputLen = 0;
|
|
FLMUINT uiLast;
|
|
FLMUINT uiLoop;
|
|
FLMUINT uiMetaOffset = 0;
|
|
FLMUINT uiAltMetaOffset = 0;
|
|
FLMBOOL bSlavoGermanic = FALSE;
|
|
FLMBOOL bHavePrefix = FALSE;
|
|
#define MAX_METAPHONE_INPUT_CHARS 32
|
|
FLMUNICODE uzRealInputBuffer[ MAX_METAPHONE_INPUT_CHARS + 6];
|
|
FLMUNICODE * uzInput = &uzRealInputBuffer [5];
|
|
FLMUNICODE uChar;
|
|
FLMBYTE ucMeta[ 5];
|
|
FLMBYTE ucAltMeta[ 5];
|
|
|
|
// Tack on five extra spaces at the beginning of the real buffer, so that we
|
|
// can safely access characters before the beginning of the string:
|
|
// i.e., the uzInput [uiInputLen - n] comparisons. NOTE: n never
|
|
// gets to be more than 5.
|
|
|
|
for( uiLoop = 0; uiLoop < 5; uiLoop++)
|
|
{
|
|
uzRealInputBuffer [uiLoop] = FLM_UNICODE_SPACE;
|
|
}
|
|
|
|
*puiMetaphone = 0;
|
|
|
|
if( puiAltMetaphone)
|
|
{
|
|
*puiAltMetaphone = 0;
|
|
}
|
|
|
|
// Get the first word from the stream
|
|
|
|
for( ;;)
|
|
{
|
|
if( RC_BAD( rc = f_readUTF8CharAsUnicode(
|
|
pIStream, &uChar)))
|
|
{
|
|
if (rc == NE_FLM_EOF_HIT)
|
|
{
|
|
if( uiInputLen)
|
|
{
|
|
rc = NE_FLM_OK;
|
|
break;
|
|
}
|
|
}
|
|
|
|
goto Exit;
|
|
}
|
|
|
|
if( f_isWhitespace( uChar))
|
|
{
|
|
if( !uiInputLen)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
// Handle the special cases of "san ", "van ", "von ",
|
|
// and "mac ". Since these are common name prefixes
|
|
// handled by the metaphone algorithm, we want to continue
|
|
// getting the rest of the name.
|
|
|
|
if( !bHavePrefix && uiInputLen == 3 &&
|
|
(f_uninativencmp( uzInput, "san", 3) == 0 ||
|
|
f_uninativencmp( uzInput, "van", 3) == 0 ||
|
|
f_uninativencmp( uzInput, "von", 3) == 0 ||
|
|
f_uninativencmp( uzInput, "mac", 3) == 0))
|
|
{
|
|
uzInput[ uiInputLen++] = FLM_UNICODE_SPACE;
|
|
bHavePrefix = TRUE;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if( bHavePrefix && uiInputLen == 4)
|
|
{
|
|
// Since there wasn't anything following the "prefix",
|
|
// the trailing space needs to be removed
|
|
|
|
uiInputLen--;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if( uiInputLen < (MAX_METAPHONE_INPUT_CHARS - 5))
|
|
{
|
|
uzInput[ uiInputLen++] = f_uniToLower( uChar);
|
|
|
|
if( !bSlavoGermanic &&
|
|
(uChar == FLM_UNICODE_w ||
|
|
uChar == FLM_UNICODE_k ||
|
|
(uiInputLen > 1 && uChar == FLM_UNICODE_z &&
|
|
uzInput[ uiInputLen - 2] == FLM_UNICODE_c) ||
|
|
(uiInputLen >= 4 && uChar == FLM_UNICODE_z &&
|
|
uzInput[ uiInputLen - 2] == FLM_UNICODE_t &&
|
|
uzInput[ uiInputLen - 3] == FLM_UNICODE_i &&
|
|
uzInput[ uiInputLen - 4] == FLM_UNICODE_w)))
|
|
{
|
|
bSlavoGermanic = TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Tack on five extra spaces to the end of the string so that
|
|
// the algorithm below can access characters beyond the end safely.
|
|
|
|
for( uiLoop = 0; uiLoop < 5; uiLoop++)
|
|
{
|
|
uzInput[ uiInputLen + uiLoop] = FLM_UNICODE_SPACE;
|
|
}
|
|
|
|
uzInput[ uiInputLen + 5] = 0;
|
|
uiLast = uiInputLen - 1;
|
|
|
|
// Skip the first letter of the following sequences when
|
|
// they are found at the beginning of the word
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "gn", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "kn", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "pn", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "wr", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "ps", 2) == 0)
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
else if( uzInput[ uiInputOffset] == FLM_UNICODE_x)
|
|
{
|
|
// An initial 'X' is pronounced as a 'Z' which maps to 'S'
|
|
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
}
|
|
|
|
while( uiMetaOffset < 4 || uiAltMetaOffset < 4)
|
|
{
|
|
if( uiInputOffset >= uiInputLen)
|
|
{
|
|
break;
|
|
}
|
|
|
|
switch( uzInput[ uiInputOffset])
|
|
{
|
|
case FLM_UNICODE_a:
|
|
case FLM_UNICODE_e:
|
|
case FLM_UNICODE_i:
|
|
case FLM_UNICODE_o:
|
|
case FLM_UNICODE_u:
|
|
case FLM_UNICODE_y:
|
|
{
|
|
if( !uiInputOffset)
|
|
{
|
|
// All initial vowels map to 'A'
|
|
|
|
if( f_addMetaphone( "A", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_b:
|
|
{
|
|
//"-mb", e.g", "dumb", already skipped over...
|
|
|
|
if( f_addMetaphone( "P", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_b)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_c_CEDILLA:
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_c:
|
|
{
|
|
// Various Germanic
|
|
|
|
if( uiInputOffset && !f_isvowel( uzInput[ uiInputOffset - 2]) &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "ach", 3) == 0 &&
|
|
((f_uninativencmp( &uzInput[ uiInputOffset + 2], "i", 1) != 0) &&
|
|
((f_uninativencmp( &uzInput[ uiInputOffset + 2], "e", 1) != 0) ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "bacher", 6) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "macher", 6) == 0)))
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Special case of "caesar"
|
|
|
|
if( !uiInputOffset &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "caesar", 6) == 0)
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset +=2;
|
|
break;
|
|
}
|
|
|
|
// Italian "chianti"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "chia", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "ch", 2) == 0)
|
|
{
|
|
// Handle case of "Michael"
|
|
|
|
if( uiInputOffset &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "chae", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "K", "X", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset +=2;
|
|
break;
|
|
}
|
|
|
|
// Greek roots such as "chemistry" and "chorus"
|
|
|
|
if( !uiInputOffset &&
|
|
(f_uninativencmp( &uzInput[ uiInputOffset + 1], "harac", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "haris", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "hor", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "hym", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "hia", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "hem", 3) == 0) &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "chore", 5) != 0)
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Germanic, Greek 'CH' -> 'KH'
|
|
|
|
if( f_uninativencmp( &uzInput[ 0], "van ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "von ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "sch", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "orches", 6) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "archit", 6) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "orchid", 6) == 0 ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_t ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_s ||
|
|
((uzInput[ uiInputOffset - 1] == FLM_UNICODE_a ||
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_o ||
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_u ||
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_e ||
|
|
!uiInputOffset) &&
|
|
(uzInput[ uiInputOffset + 2] == FLM_UNICODE_l ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_r ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_n ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_m ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_b ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_h ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_f ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_v ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_w ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_SPACE)))
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( uiInputOffset)
|
|
{
|
|
if( f_uninativencmp( &uzInput[ 0], "mc", 2) == 0)
|
|
{
|
|
// Names such as "McHugh"
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "X", "K", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// "czerny"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "cz", 2) == 0 &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "wicz", 4) != 0)
|
|
{
|
|
if( f_addMetaphone( "S", "X", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], "cia", 3) == 0)
|
|
{
|
|
// Words such as "focaccia"
|
|
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
// Double 'C', but not if in a name such as "McClellan"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "cc", 2) == 0 &&
|
|
!(uiInputOffset == 1 && uzInput[ 0] == FLM_UNICODE_m))
|
|
{
|
|
// "bellocchio" but not "bacchus"
|
|
|
|
if( (uzInput[ uiInputOffset + 2] == FLM_UNICODE_i ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_e ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_h) &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 2], "hu", 2) != 0)
|
|
{
|
|
// "accident", "accede", "succeed"
|
|
|
|
if( (uiInputOffset == 1 &&
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_a) ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "uccee", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "ucces", 5) == 0)
|
|
{
|
|
if( f_addMetaphone( "KS", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// "bacci", "bertucci", and other Italian words
|
|
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
// Pierce's rule
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "ck", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "cg", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "cq", 2) == 0)
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "ci", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "ce", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "cy", 2) == 0)
|
|
{
|
|
// Italian vs. English
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "cio", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "cie", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "cia", 3) == 0)
|
|
{
|
|
if( f_addMetaphone( "S", "X", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// else
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
// Name such as "Mac Caffrey", "Mac Gregor"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], " c", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], " q", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], " g", 2) == 0)
|
|
{
|
|
uiInputOffset += 3;
|
|
}
|
|
else
|
|
{
|
|
if( (uzInput[ uiInputOffset + 1] == FLM_UNICODE_c ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_k ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_q) &&
|
|
!(f_uninativencmp( &uzInput[ uiInputOffset + 1], "ce", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ci", 2) == 0))
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset += 1;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_d:
|
|
{
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "dg", 2) == 0)
|
|
{
|
|
if( uzInput[ uiInputOffset + 2] == FLM_UNICODE_i ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_e ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_y)
|
|
{
|
|
// "edge"
|
|
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
// "edgar"
|
|
|
|
if( f_addMetaphone( "TK", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "dt", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "dd", 2) == 0)
|
|
{
|
|
if( f_addMetaphone( "T", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// else
|
|
|
|
if( f_addMetaphone( "T", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_f:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_f)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset += 1;
|
|
}
|
|
|
|
if( f_addMetaphone( "F", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_g:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_h)
|
|
{
|
|
if( uiInputOffset > 0 &&
|
|
!f_isvowel( uzInput[ uiInputOffset - 1]))
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( uiInputOffset < 3)
|
|
{
|
|
// "ghislane", "ghiradelli"
|
|
|
|
if( !uiInputOffset)
|
|
{
|
|
if( uzInput[ uiInputOffset + 2] == FLM_UNICODE_i)
|
|
{
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Parker's rule (with some further refinements) - "hugh"
|
|
|
|
if( (uiInputOffset &&
|
|
(uzInput[ uiInputOffset - 2] == FLM_UNICODE_b ||
|
|
uzInput[ uiInputOffset - 2] == FLM_UNICODE_h ||
|
|
uzInput[ uiInputOffset - 2] == FLM_UNICODE_d)) ||
|
|
(uiInputOffset > 2 && // "bough"
|
|
(uzInput[ uiInputOffset - 3] == FLM_UNICODE_b ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_h ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_d)) ||
|
|
(uiInputOffset > 3 && // "broughton"
|
|
(uzInput[ uiInputOffset - 4] == FLM_UNICODE_b ||
|
|
uzInput[ uiInputOffset - 4] == FLM_UNICODE_h)))
|
|
{
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
// "laugh", "McLaughlin", "cough", "gough", "rough", "tough"
|
|
|
|
if( uiInputOffset > 2 &&
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_u &&
|
|
(uzInput[ uiInputOffset - 3] == FLM_UNICODE_c ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_g ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_l ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_r ||
|
|
uzInput[ uiInputOffset - 3] == FLM_UNICODE_t))
|
|
{
|
|
if( f_addMetaphone( "F", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else if( uiInputOffset && uzInput[ uiInputOffset - 1] != FLM_UNICODE_i)
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_n)
|
|
{
|
|
if( uiInputOffset == 1 && f_isvowel( uzInput[ 0]) &&
|
|
!bSlavoGermanic)
|
|
{
|
|
if( f_addMetaphone( "KN", "N", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Not "cagney", etc.
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 2], "ey", 2) != 0 &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_y &&
|
|
!bSlavoGermanic)
|
|
{
|
|
if( f_addMetaphone( "N", "KN", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "KN", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// "tagliaro"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], "li", 2) == 0 &&
|
|
!bSlavoGermanic)
|
|
{
|
|
if( f_addMetaphone( "KL", "L", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Words starting with "ges", "gep", "gel", "gie", etc.
|
|
|
|
if( !uiInputOffset &&
|
|
(uzInput[ uiInputOffset + 1] == FLM_UNICODE_y ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "es", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ep", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "eb", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "el", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ey", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ib", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "il", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "in", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ie", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "ei", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "er", 2) == 0))
|
|
{
|
|
if( f_addMetaphone( "K", "J", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// -ger-, -gy-
|
|
|
|
if( (f_uninativencmp( &uzInput[ uiInputOffset + 1], "er", 2) == 0 ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_y) &&
|
|
!(f_uninativencmp( &uzInput[ 0], "danger", 6) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "ranger", 6) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "manger", 6) == 0) &&
|
|
!(uzInput[ uiInputOffset - 1] == FLM_UNICODE_e ||
|
|
uzInput[ uiInputOffset - 1] == FLM_UNICODE_i) &&
|
|
!(f_uninativencmp( &uzInput[ uiInputOffset - 1], "rgy", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "ogy", 3) == 0))
|
|
{
|
|
if( f_addMetaphone( "K", "J", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Italian words such as "biaggi"
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_e ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_i ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_y ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "aggi", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "oggi", 4) == 0)
|
|
{
|
|
// Obvious Germanic
|
|
|
|
if( f_uninativencmp( &uzInput[ 0], "van ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "von ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "sch", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "et", 2) == 0)
|
|
{
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Always soft if French ending
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], "ier ", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "J", "K", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_g)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset += 1;
|
|
}
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_h:
|
|
{
|
|
// Only keep if first and if before a vowel or between two vowels
|
|
|
|
if( (!uiInputOffset || f_isvowel( uzInput[ uiInputOffset - 1])) &&
|
|
f_isvowel( uzInput[ uiInputOffset + 1]))
|
|
{
|
|
if( f_addMetaphone( "H", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
// Take care of "HH"
|
|
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_j:
|
|
{
|
|
// Obvious Spanish such as "Jose" and "San Jacinto"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "jose", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "san ", 4) == 0)
|
|
{
|
|
if( (!uiInputOffset && uzInput[ uiInputOffset + 4] == FLM_UNICODE_SPACE) ||
|
|
f_uninativencmp( &uzInput[ 0], "san ", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "H", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "J", "H", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
if( !uiInputOffset &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "jose", 4) != 0)
|
|
{
|
|
// Yankelovich / Jankelowicz
|
|
|
|
if( f_addMetaphone( "J", "A", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Spanish pronunciation of words such as "bajador"
|
|
|
|
if( f_isvowel( uzInput[ uiInputOffset - 1]) &&
|
|
!bSlavoGermanic &&
|
|
(uzInput[ uiInputOffset + 1] == FLM_UNICODE_a ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_o))
|
|
{
|
|
if( f_addMetaphone( "J", "H", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( uiInputOffset == uiLast)
|
|
{
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
NULL, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] != FLM_UNICODE_l &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_t &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_k &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_s &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_n &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_m &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_b &&
|
|
uzInput[ uiInputOffset + 1] != FLM_UNICODE_z &&
|
|
uzInput[ uiInputOffset - 1] != FLM_UNICODE_s &&
|
|
uzInput[ uiInputOffset - 1] != FLM_UNICODE_k &&
|
|
uzInput[ uiInputOffset - 1] != FLM_UNICODE_l)
|
|
{
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_j)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_k:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_k)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_l:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_l)
|
|
{
|
|
// Spanish words such as "cabrillo" and "gallegos"
|
|
|
|
if( (uiInputOffset == (uiInputLen - 3) &&
|
|
(f_uninativencmp( &uzInput[ uiInputOffset - 1], "illo", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "illa", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "alle", 4) == 0)) ||
|
|
((f_uninativencmp( &uzInput[ uiLast - 1], "as", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiLast - 1], "os", 2) == 0 ||
|
|
uzInput[ uiLast] == FLM_UNICODE_a ||
|
|
uzInput[ uiLast] == FLM_UNICODE_o) &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "alle", 4) == 0))
|
|
{
|
|
if( f_addMetaphone( "L", NULL, ucMeta, &uiMetaOffset,
|
|
NULL, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "L", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_m:
|
|
{
|
|
if( (f_uninativencmp( &uzInput[ uiInputOffset - 1], "umb", 3) == 0 &&
|
|
((uiInputOffset + 1) == uiLast ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 2], "er", 2) == 0)) ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_m) // "dumb", "thumb", etc.
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "M", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_n:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_n)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "N", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_n_TILDE:
|
|
{
|
|
if( f_addMetaphone( "N", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_p:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_h)
|
|
{
|
|
if( f_addMetaphone( "F", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Account for "Campbell", "raspberry", etc.
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_p ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_b)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "P", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_q:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_q)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset += 1;
|
|
}
|
|
|
|
if( f_addMetaphone( "K", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_r:
|
|
{
|
|
// French words such as "rogier". Excludes "Hochmeier"
|
|
|
|
if( uiInputOffset == uiLast &&
|
|
!bSlavoGermanic &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "ie", 2) == 0 &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 4], "me", 2) != 0 &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 4], "ma", 2) != 0)
|
|
{
|
|
if( f_addMetaphone( NULL, "R", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "R", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_r)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_s:
|
|
{
|
|
// Special cases of "island", "isle", "carlisle", "carlysle"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset - 1], "isl", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "ysl", 3) == 0)
|
|
{
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
// Special case of 'sugar-'
|
|
|
|
if( !uiInputOffset &&
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "sugar", 5) == 0)
|
|
{
|
|
if( f_addMetaphone( "X", "S", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "sh", 2) == 0)
|
|
{
|
|
// Germanic
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], "heim", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "hoek", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "holm", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "holz", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
// Italian and Armenian
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "sio", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "sia", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "sian", 4) == 0)
|
|
{
|
|
if( !bSlavoGermanic)
|
|
{
|
|
if( f_addMetaphone( "S", "X", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
// German & Anglicisations such as "Smith" matching "Schmidt" and
|
|
// "Snider" matching "Schneider"
|
|
|
|
if( (!uiInputOffset &&
|
|
(uzInput[ uiInputOffset + 1] == FLM_UNICODE_m ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_n ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_l ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_w)) ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_z)
|
|
{
|
|
if( f_addMetaphone( "S", "X", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_z)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "sc", 2) == 0)
|
|
{
|
|
// Schlesinger's rule
|
|
|
|
if( uzInput[ uiInputOffset + 2] == FLM_UNICODE_h)
|
|
{
|
|
// Words of Dutch origin such as "school" and "schooner"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 3], "oo", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "er", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "en", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "uy", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "ed", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "em", 2) == 0)
|
|
{
|
|
// "Schermerhorn", "Schenker"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 3], "er", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 3], "en", 2) == 0)
|
|
{
|
|
if( f_addMetaphone( "X", "SK", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "SK", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if( !uiInputOffset && !f_isvowel( uzInput[ 3]) &&
|
|
uzInput[ 3] != FLM_UNICODE_w)
|
|
{
|
|
if( f_addMetaphone( "X", "S", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 2] == FLM_UNICODE_i ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_e ||
|
|
uzInput[ uiInputOffset + 2] == FLM_UNICODE_y)
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
if( f_addMetaphone( "SK", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
// French words such as "resnais" and "artois"
|
|
|
|
if( uiInputOffset == uiLast &&
|
|
(f_uninativencmp( &uzInput[ uiInputOffset - 2], "ai", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "oi", 2) == 0))
|
|
{
|
|
if( f_addMetaphone( NULL, "S", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_s ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_z)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_t:
|
|
{
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "tion", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "tia", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "tch", 3) == 0)
|
|
{
|
|
if( f_addMetaphone( "X", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 3;
|
|
break;
|
|
}
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "th", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "tth", 3) == 0)
|
|
{
|
|
// Special cases of "Thomas", "Thames", or Germanic
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 2], "om", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 2], "am", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "van ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "von ", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "sch", 3) == 0)
|
|
{
|
|
if( f_addMetaphone( "T", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "0", "T", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_t ||
|
|
uzInput[ uiInputOffset] == FLM_UNICODE_d)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "T", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_v:
|
|
{
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_v)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
|
|
if( f_addMetaphone( "F", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_w:
|
|
{
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "wr", 2) == 0)
|
|
{
|
|
if( f_addMetaphone( "R", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
|
|
if( !uiInputOffset &&
|
|
(f_isvowel( uzInput[ uiInputOffset + 1]) ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "wh", 2) == 0))
|
|
{
|
|
// "Wasserman" should match "Vasserman"
|
|
|
|
if( f_isvowel( uzInput[ uiInputOffset + 1]))
|
|
{
|
|
if( f_addMetaphone( "A", "F", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// "Uomo" should match "Womo"
|
|
|
|
if( f_addMetaphone( "A", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
}
|
|
|
|
// "Arnow" should match "Arnoff"
|
|
|
|
if( (uiInputOffset == uiLast &&
|
|
f_isvowel( uzInput[ uiInputOffset - 1])) ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "ewski", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "ewsky", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "owski", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 1], "owsky", 5) == 0 ||
|
|
f_uninativencmp( &uzInput[ 0], "sch", 3) == 0)
|
|
{
|
|
if( f_addMetaphone( NULL, "F", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
// Polish names and words such as "Filipowicz"
|
|
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset], "wicz", 4) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset], "witz", 4) == 0)
|
|
{
|
|
if( f_addMetaphone( "TS", "FX", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset +=4;
|
|
break;
|
|
}
|
|
|
|
// otherwise, skip the current character
|
|
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_x:
|
|
{
|
|
// French words such as "breaux"
|
|
|
|
if( !(uiInputOffset == uiLast &&
|
|
(f_uninativencmp( &uzInput[ uiInputOffset - 3], "iau", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 3], "eau", 3) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "au", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset - 2], "ou", 2) == 0)))
|
|
{
|
|
if( f_addMetaphone( "KS", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_c ||
|
|
uzInput[ uiInputOffset + 1] == FLM_UNICODE_x)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case FLM_UNICODE_z:
|
|
{
|
|
// Chinese pinyin such as "Zhao"
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_h)
|
|
{
|
|
if( f_addMetaphone( "J", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
|
|
uiInputOffset += 2;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if( f_uninativencmp( &uzInput[ uiInputOffset + 1], "zo", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "zi", 2) == 0 ||
|
|
f_uninativencmp( &uzInput[ uiInputOffset + 1], "za", 2) == 0 ||
|
|
(bSlavoGermanic && uiInputOffset &&
|
|
uzInput[ uiInputOffset - 1] != FLM_UNICODE_t))
|
|
{
|
|
if( f_addMetaphone( "S", "TS", ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( f_addMetaphone( "S", NULL, ucMeta, &uiMetaOffset,
|
|
ucAltMeta, &uiAltMetaOffset))
|
|
{
|
|
goto Done;
|
|
}
|
|
}
|
|
|
|
if( uzInput[ uiInputOffset + 1] == FLM_UNICODE_z)
|
|
{
|
|
uiInputOffset += 2;
|
|
}
|
|
else
|
|
{
|
|
uiInputOffset++;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
default:
|
|
{
|
|
uiInputOffset++;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
Done:
|
|
|
|
ucMeta[ uiMetaOffset] = 0;
|
|
f_metaStrToNum( ucMeta, puiMetaphone);
|
|
|
|
if( puiAltMetaphone)
|
|
{
|
|
ucAltMeta[ uiAltMetaOffset] = 0;
|
|
f_metaStrToNum( ucAltMeta, puiAltMetaphone);
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc: Verifies that the metaphone routines are generating the correct
|
|
codes for a hard-coded set of words.
|
|
****************************************************************************/
|
|
#ifdef FLM_DEBUG
|
|
RCODE f_verifyMetaphoneRoutines( void)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
METAPHONE_MAPPING * pMetaMap = gv_MetaTestTable;
|
|
IF_BufferIStream * pBufferStream = NULL;
|
|
FLMUINT uiMeta;
|
|
FLMUINT uiAltMeta;
|
|
|
|
if( RC_BAD( rc = FlmAllocBufferIStream( &pBufferStream)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
for( ;;)
|
|
{
|
|
if( !pMetaMap->pszWord)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if( RC_BAD( rc = pBufferStream->open(
|
|
pMetaMap->pszWord, f_strlen( pMetaMap->pszWord))))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = f_getNextMetaphone( pBufferStream,
|
|
&uiMeta, &uiAltMeta)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( uiMeta != pMetaMap->uiMeta ||
|
|
uiAltMeta != pMetaMap->uiAltMeta)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_FAILURE);
|
|
goto Exit;
|
|
}
|
|
|
|
pBufferStream->close();
|
|
pMetaMap++;
|
|
}
|
|
|
|
Exit:
|
|
|
|
if( pBufferStream)
|
|
{
|
|
pBufferStream->Release();
|
|
}
|
|
|
|
f_assert( RC_OK( rc));
|
|
return( rc);
|
|
}
|
|
#endif
|
|
|
|
/*****************************************************************************
|
|
Desc:
|
|
Notes: pucBuf must be able to contain at least 3 bytes
|
|
******************************************************************************/
|
|
RCODE FLMAPI f_readUTF8CharAsUTF8(
|
|
IF_IStream * pIStream,
|
|
FLMBYTE * pucBuf,
|
|
FLMUINT * puiLen)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMUINT uiLen;
|
|
|
|
if( *puiLen == 0)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_CONV_DEST_OVERFLOW);
|
|
goto Exit;
|
|
}
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( pucBuf, uiLen, &uiLen)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( pucBuf[ 0] <= 0x7F)
|
|
{
|
|
if( !pucBuf[ 0])
|
|
{
|
|
rc = RC_SET( NE_FLM_EOF_HIT);
|
|
goto Exit;
|
|
}
|
|
|
|
*puiLen = 1;
|
|
goto Exit;
|
|
}
|
|
|
|
if( *puiLen < 2)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_CONV_DEST_OVERFLOW);
|
|
goto Exit;
|
|
}
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( &pucBuf[ 1], uiLen, &uiLen)))
|
|
{
|
|
if( rc == NE_FLM_EOF_HIT)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
}
|
|
goto Exit;
|
|
}
|
|
|
|
if( (pucBuf[ 1] >> 6) != 0x02)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
goto Exit;
|
|
}
|
|
|
|
if( (pucBuf[ 0] >> 5) == 0x06)
|
|
{
|
|
*puiLen = 2;
|
|
goto Exit;
|
|
}
|
|
|
|
if( *puiLen < 3)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_CONV_DEST_OVERFLOW);
|
|
goto Exit;
|
|
}
|
|
|
|
uiLen = 1;
|
|
if( RC_BAD( rc = pIStream->read( &pucBuf[ 2], uiLen, &uiLen)))
|
|
{
|
|
if( rc == NE_FLM_EOF_HIT)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
}
|
|
goto Exit;
|
|
}
|
|
|
|
if( (pucBuf[ 0] >> 4) != 0x0E || (pucBuf[ 2] >> 6) != 0x02)
|
|
{
|
|
rc = RC_SET_AND_ASSERT( NE_FLM_BAD_UTF8);
|
|
goto Exit;
|
|
}
|
|
|
|
*puiLen = 3;
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_compareUnicodeStrings(
|
|
const FLMUNICODE * puzLString,
|
|
FLMUINT uiLStrBytes,
|
|
FLMBOOL bLeftWild,
|
|
const FLMUNICODE * puzRString,
|
|
FLMUINT uiRStrBytes,
|
|
FLMBOOL bRightWild,
|
|
FLMUINT uiCompareRules,
|
|
FLMUINT uiLanguage,
|
|
FLMINT * piResult)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
F_BufferIStream bufferLStream;
|
|
F_BufferIStream bufferRStream;
|
|
F_CollIStream lStream;
|
|
F_CollIStream rStream;
|
|
|
|
if( RC_BAD( rc = bufferLStream.open(
|
|
(const char *)puzLString, uiLStrBytes)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = bufferRStream.open(
|
|
(const char *)puzRString, uiRStrBytes)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = lStream.open( &bufferLStream, TRUE, uiLanguage,
|
|
uiCompareRules, bLeftWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = rStream.open( &bufferRStream, TRUE, uiLanguage,
|
|
uiCompareRules, bRightWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = f_compareCollStreams(
|
|
(IF_CollIStream *)&lStream, (IF_CollIStream *)&rStream,
|
|
(bLeftWild || bRightWild) ? TRUE : FALSE, uiLanguage, piResult)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_compareUTF8Strings(
|
|
const FLMBYTE * pucLString,
|
|
FLMUINT uiLStrBytes,
|
|
FLMBOOL bLeftWild,
|
|
const FLMBYTE * pucRString,
|
|
FLMUINT uiRStrBytes,
|
|
FLMBOOL bRightWild,
|
|
FLMUINT uiCompareRules,
|
|
FLMUINT uiLanguage,
|
|
FLMINT * piResult)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
F_BufferIStream bufferLStream;
|
|
F_BufferIStream bufferRStream;
|
|
F_CollIStream lStream;
|
|
F_CollIStream rStream;
|
|
|
|
if (RC_BAD( rc = bufferLStream.open(
|
|
(const char *)pucLString, uiLStrBytes)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = bufferRStream.open(
|
|
(const char *)pucRString, uiRStrBytes)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = lStream.open( &bufferLStream, FALSE, uiLanguage,
|
|
uiCompareRules, bLeftWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = rStream.open( &bufferRStream, FALSE, uiLanguage,
|
|
uiCompareRules, bRightWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = f_compareCollStreams(
|
|
(IF_CollIStream *)&lStream, (IF_CollIStream *)&rStream,
|
|
(bLeftWild || bRightWild) ? TRUE : FALSE,
|
|
uiLanguage, piResult)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_compareUTF8Streams(
|
|
IF_PosIStream * pLStream,
|
|
FLMBOOL bLeftWild,
|
|
IF_PosIStream * pRStream,
|
|
FLMBOOL bRightWild,
|
|
FLMUINT uiCompareRules,
|
|
FLMUINT uiLanguage,
|
|
FLMINT * piResult)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
F_CollIStream lStream;
|
|
F_CollIStream rStream;
|
|
|
|
if( RC_BAD( rc = lStream.open( pLStream, FALSE, uiLanguage,
|
|
uiCompareRules, bLeftWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = rStream.open( pRStream, FALSE, uiLanguage,
|
|
uiCompareRules, bRightWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = f_compareCollStreams(
|
|
&lStream, &rStream, (bLeftWild || bRightWild) ? TRUE : FALSE,
|
|
uiLanguage, piResult)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_compareUnicodeStreams(
|
|
IF_PosIStream * pLStream,
|
|
FLMBOOL bLeftWild,
|
|
IF_PosIStream * pRStream,
|
|
FLMBOOL bRightWild,
|
|
FLMUINT uiCompareRules,
|
|
FLMUINT uiLanguage,
|
|
FLMINT * piResult)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
F_CollIStream lStream;
|
|
F_CollIStream rStream;
|
|
|
|
if( RC_BAD( rc = lStream.open( pLStream, TRUE, uiLanguage,
|
|
uiCompareRules, bLeftWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = rStream.open( pRStream, TRUE, uiLanguage,
|
|
uiCompareRules, bRightWild)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
if( RC_BAD( rc = f_compareCollStreams(
|
|
&lStream, &rStream, (bLeftWild || bRightWild) ? TRUE : FALSE,
|
|
uiLanguage, piResult)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
Exit:
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/***************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_utf8IsSubStr(
|
|
const FLMBYTE * pszString,
|
|
const FLMBYTE * pszSubString,
|
|
FLMUINT uiCompareRules,
|
|
FLMUINT uiLanguage,
|
|
FLMBOOL * pbExists)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
FLMINT iResult = 0;
|
|
FLMBYTE * pszSearch = NULL;
|
|
FLMUINT uiSubStringLen = f_strlen( (const char *)pszSubString);
|
|
|
|
if( RC_BAD( rc = f_alloc( uiSubStringLen + 3, &pszSearch)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
pszSearch[0] = '*';
|
|
f_memcpy( &pszSearch[ 1], pszSubString, uiSubStringLen);
|
|
pszSearch[ uiSubStringLen + 1] = '*';
|
|
pszSearch[ uiSubStringLen + 2] = '\0';
|
|
|
|
if( RC_BAD( rc = f_compareUTF8Strings(
|
|
pszString, f_strlen( (const char *)pszString), FALSE, pszSearch,
|
|
uiSubStringLen + 2, TRUE, uiCompareRules, uiLanguage, &iResult)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
*pbExists = (iResult)?FALSE:TRUE;
|
|
|
|
Exit:
|
|
|
|
if( pszSearch)
|
|
{
|
|
f_free( &pszSearch);
|
|
}
|
|
|
|
return( rc);
|
|
}
|
|
|
|
/****************************************************************************
|
|
Desc:
|
|
****************************************************************************/
|
|
RCODE FLMAPI f_strdup(
|
|
const char * pszSrc,
|
|
char ** ppszDup)
|
|
{
|
|
RCODE rc = NE_FLM_OK;
|
|
char * pszDup = NULL;
|
|
|
|
if( RC_BAD( rc = f_alloc( f_strlen( pszSrc) + 1, &pszDup)))
|
|
{
|
|
goto Exit;
|
|
}
|
|
|
|
f_strcpy( pszDup, pszSrc);
|
|
*ppszDup = pszDup;
|
|
pszDup = NULL;
|
|
|
|
Exit:
|
|
|
|
if( pszDup)
|
|
{
|
|
f_free( &pszDup);
|
|
}
|
|
|
|
return( rc);
|
|
}
|
|
|