]> git.wh0rd.org Git - fontconfig.git/commitdiff
Add strong/weak pattern value binding, add known charsets for automatic
authorKeith Packard <keithp@keithp.com>
Sat, 29 Jun 2002 20:31:02 +0000 (20:31 +0000)
committerKeith Packard <keithp@keithp.com>
Sat, 29 Jun 2002 20:31:02 +0000 (20:31 +0000)
    lang computation

src/fccfg.c
src/fccharset.c
src/fcfreetype.c
src/fcint.h
src/fcknownsets.h [new file with mode: 0644]
src/fcmatch.c
src/fcname.c
src/fcpat.c

index 6191324bf2f8721011b32353fc7aca5e0d69d807..9c638a3d2338177a327b378fc8f2bea2725ffa25 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.14 2002/06/20 03:43:09 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.15 2002/06/21 06:14:45 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -926,6 +926,7 @@ FcConfigValues (FcPattern *p, FcExpr *e)
        l->value = FcConfigEvaluate (p, e);
        l->next  = 0;
     }
+    l->binding = FcValueBindingWeak;
     while (l && l->value.type == FcTypeVoid)
     {
        FcValueList     *next = l->next;
index cc471264429dcea61c2009335fbd891fee58c1ec..c5941ee879a1e99083be1a34051ffaebcb79f4c1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fccharset.c,v 1.12 2002/06/21 06:14:45 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fccharset.c,v 1.13 2002/06/26 22:56:51 keithp Exp $
  *
  * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -858,7 +858,7 @@ static int  FcCharLeafTotal;
 static int     FcCharLeafUsed;
 
 static FcCharLeaf *
-FcNameParseBuildLeaf (FcCharLeaf *leaf)
+FcCharSetFreezeLeaf (FcCharLeaf *leaf)
 {
     static FcCharLeafEnt       *hashTable[FC_CHAR_LEAF_HASH_SIZE];
     FcChar32                   hash = FcCharLeafHash (leaf);
@@ -915,7 +915,7 @@ static int  FcCharSetUsed;
 static int     FcCharSetTotalEnts, FcCharSetUsedEnts;
 
 static FcCharSet *
-FcNameParseBuildSet (FcCharSet *fcs)
+FcCharSetFreezeBase (FcCharSet *fcs)
 {
     static FcCharSetEnt        *hashTable[FC_CHAR_SET_HASH_SIZE];
     FcChar32           hash = FcCharSetHash (fcs);
@@ -967,6 +967,36 @@ FcNameParseBuildSet (FcCharSet *fcs)
     return &ent->set;
 }
 
+FcCharSet *
+FcCharSetFreeze (FcCharSet *fcs)
+{
+    FcCharSet  *b;
+    FcCharSet  *n = 0;
+    FcCharLeaf *l;
+    int                i;
+
+    b = FcCharSetCreate ();
+    if (!b)
+       goto bail0;
+    for (i = 0; i < fcs->num; i++)
+    {
+       l = FcCharSetFreezeLeaf (fcs->leaves[i]);
+       if (!l)
+           goto bail1;
+       if (!FcCharSetInsertLeaf (b, fcs->numbers[i] << 8, l))
+           goto bail1;
+    }
+    n = FcCharSetFreezeBase (b);
+bail1:
+    if (b->leaves)
+       free (b->leaves);
+    if (b->numbers)
+       free (b->numbers);
+    free (b);
+bail0:
+    return n;
+}
+
 FcCharSet *
 FcNameParseCharSet (FcChar8 *string)
 {
@@ -995,7 +1025,7 @@ FcNameParseCharSet (FcChar8 *string)
        }
        if (bits)
        {
-           leaf = FcNameParseBuildLeaf (&temp);
+           leaf = FcCharSetFreezeLeaf (&temp);
            if (!leaf)
                goto bail1;
            if (!FcCharSetInsertLeaf (c, ucs4, leaf))
@@ -1023,7 +1053,7 @@ FcNameParseCharSet (FcChar8 *string)
            sizeof (FcCharSet) * FcCharSetUsed +
            FcCharSetUsedEnts * (sizeof (FcCharLeaf *) + sizeof (FcChar16)));
 #endif
-    n = FcNameParseBuildSet (c);
+    n = FcCharSetFreezeBase (c);
 bail1:
     if (c->leaves)
        free (c->leaves);
index 100509055545da7328d98bbaba724d2b4df1f3c9..ff5e5fa58b6ae6a2fbc9866ac329138025fe33a6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: $
+ * $XFree86: xc/lib/fontconfig/src/fcfreetype.c,v 1.4 2002/05/31 23:21:25 keithp Exp $
  *
  * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
  *
 #include <freetype/freetype.h>
 #include <freetype/internal/ftobjs.h>
 #include <freetype/tttables.h>
+#include "fcknownsets.h"
 
 static const struct {
     int            bit;
     FcChar8 *name;
 } FcCodePageRange[] = {
     { 0,       (FcChar8 *) FC_LANG_LATIN_1 },
-    { 1,       (FcChar8 *) FC_LANG_LATIN_2_EASTERN_EUROPE },
+    { 1,       (FcChar8 *) FC_LANG_LATIN_2 },
     { 2,       (FcChar8 *) FC_LANG_CYRILLIC },
     { 3,       (FcChar8 *) FC_LANG_GREEK },
     { 4,       (FcChar8 *) FC_LANG_TURKISH },
@@ -75,6 +76,94 @@ static const struct {
 
 #define NUM_CODE_PAGE_RANGE (sizeof FcCodePageRange / sizeof FcCodePageRange[0])
 
+static const struct {
+    const FcCharSet *set;
+    FcChar32       size;
+    FcChar32       missing_tolerance;
+    FcChar8        *name;
+} FcCodePageSet[] = {
+    {
+       &fcCharSet_Latin1_1252,
+       fcCharSet_Latin1_1252_size,
+       8,
+       (FcChar8 *) FC_LANG_LATIN_1,
+    },
+    {
+       &fcCharSet_Latin2_1250,
+       fcCharSet_Latin2_1250_size,
+       8,
+       (FcChar8 *) FC_LANG_LATIN_2,
+    },
+    {
+       &fcCharSet_Cyrillic_1251,
+       fcCharSet_Cyrillic_1251_size,
+       16,
+       (FcChar8 *) FC_LANG_CYRILLIC,
+    },
+    {
+       &fcCharSet_Greek_1253,
+       fcCharSet_Greek_1253_size,
+       8,
+       (FcChar8 *) FC_LANG_GREEK,
+    },
+    {
+       &fcCharSet_Turkish_1254,
+       fcCharSet_Turkish_1254_size,
+       16,
+       (FcChar8 *) FC_LANG_TURKISH,
+    },
+    {
+       &fcCharSet_Hebrew_1255,
+       fcCharSet_Hebrew_1255_size,
+       16,
+       (FcChar8 *) FC_LANG_HEBREW,
+    },
+    {
+       &fcCharSet_Arabic_1256,
+       fcCharSet_Arabic_1256_size,
+       16,
+       (FcChar8 *) FC_LANG_ARABIC,
+    },
+    {
+       &fcCharSet_Windows_Baltic_1257,
+       fcCharSet_Windows_Baltic_1257_size,
+       16,
+       (FcChar8 *) FC_LANG_WINDOWS_BALTIC,
+    },
+    {  
+       &fcCharSet_Thai_874,            
+       fcCharSet_Thai_874_size,
+       16,
+       (FcChar8 *) FC_LANG_THAI,
+    },
+    { 
+       &fcCharSet_Japanese_932,                
+       fcCharSet_Japanese_932_size,            
+       500,
+       (FcChar8 *) FC_LANG_JAPANESE,
+    },
+    { 
+       &fcCharSet_SimplifiedChinese_936,
+       fcCharSet_SimplifiedChinese_936_size,   
+       500,
+       (FcChar8 *) FC_LANG_SIMPLIFIED_CHINESE,
+    },
+    {
+       &fcCharSet_Korean_949,
+       fcCharSet_Korean_949_size,
+       500,
+       (FcChar8 *) FC_LANG_KOREAN_WANSUNG,
+    },
+    {
+       &fcCharSet_TraditionalChinese_950,
+       fcCharSet_TraditionalChinese_950_size,
+       500,
+       (FcChar8 *) FC_LANG_TRADITIONAL_CHINESE,
+    },
+};
+
+#define NUM_CODE_PAGE_SET (sizeof FcCodePageSet / sizeof FcCodePageSet[0])
+
 FcPattern *
 FcFreeTypeQuery (const FcChar8 *file,
                 int            id,
@@ -90,6 +179,9 @@ FcFreeTypeQuery (const FcChar8       *file,
     FT_Library     ftLibrary;
     const FcChar8   *family;
     TT_OS2         *os2;
+    FcBool         hasLang = FcFalse;
+    FcChar32       codepoints;
+    FcBool         matchCodePage[NUM_CODE_PAGE_SET];
 
     if (FT_Init_FreeType (&ftLibrary))
        return 0;
@@ -159,15 +251,49 @@ FcFreeTypeQuery (const FcChar8    *file,
            goto bail1;
 #endif
 
+    /*
+     * Get the OS/2 table and poke about
+     */
+    os2 = (TT_OS2 *) FT_Get_Sfnt_Table (face, ft_sfnt_os2);
+    if (os2 && os2->version >= 0x0001 && os2->version != 0xffff)
+    {
+       for (i = 0; i < NUM_CODE_PAGE_RANGE; i++)
+       {
+           FT_ULong    bits;
+           int         bit;
+           if (FcCodePageRange[i].bit < 32)
+           {
+               bits = os2->ulCodePageRange1;
+               bit = FcCodePageRange[i].bit;
+           }
+           else
+           {
+               bits = os2->ulCodePageRange2;
+               bit = FcCodePageRange[i].bit - 32;
+           }
+           if (bits & (1 << bit))
+           {
+               if (!FcPatternAddString (pat, FC_LANG,
+                                        FcCodePageRange[i].name))
+                   goto bail1;
+               hasLang = FcTrue;
+           }
+       }
+    }
+
+    /*
+     * Compute the unicode coverage for the font
+     */
     cs = FcFreeTypeCharSet (face, blanks);
     if (!cs)
        goto bail1;
 
+    codepoints = FcCharSetCount (cs);
     /*
      * Skip over PCF fonts that have no encoded characters; they're
      * usually just Unicode fonts transcoded to some legacy encoding
      */
-    if (FcCharSetCount (cs) == 0)
+    if (codepoints == 0)
     {
        if (!strcmp(FT_MODULE_CLASS(&face->driver->root)->module_name, "pcf"))
            goto bail2;
@@ -175,6 +301,80 @@ FcFreeTypeQuery (const FcChar8     *file,
 
     if (!FcPatternAddCharSet (pat, FC_CHARSET, cs))
        goto bail2;
+
+    if (!hasLang || (FcDebug() & FC_DBG_SCANV))
+    {
+       /*
+        * Use the Unicode coverage to set lang if it wasn't
+        * set from the OS/2 tables
+        */
+
+        if (FcDebug() & FC_DBG_SCANV)
+           printf ("%s: ", family);
+       for (i = 0; i < NUM_CODE_PAGE_SET; i++)
+       {
+           FcChar32    missing;
+
+           missing = FcCharSetSubtractCount (FcCodePageSet[i].set,
+                                             cs);
+           matchCodePage[i] = missing <= FcCodePageSet[i].missing_tolerance;
+           if (FcDebug() & FC_DBG_SCANV)
+               printf ("%s(%d) ", FcCodePageSet[i].name, missing);
+       }
+        if (FcDebug() & FC_DBG_SCANV)
+           printf ("\n");
+
+       if (hasLang)
+       {
+           FcChar8     *lang;
+           int j;
+           /*
+            * Validate the lang selections
+            */
+           for (i = 0; FcPatternGetString (pat, FC_LANG, i, &lang) == FcResultMatch; i++)
+           {
+               for (j = 0; j < NUM_CODE_PAGE_SET; j++)
+                   if (!strcmp ((char *) FcCodePageSet[j].name,
+                                (char *) lang))
+                   {
+                       if (!matchCodePage[j])
+                           printf ("%s(%s): missing lang %s\n", file, family, lang);
+                   }
+           }
+           for (j = 0; j < NUM_CODE_PAGE_SET; j++)
+           {
+               if (!matchCodePage[j])
+                   continue;
+               lang = 0;
+               for (i = 0; FcPatternGetString (pat, FC_LANG, i, &lang) == FcResultMatch; i++)
+               {
+                   if (!strcmp ((char *) FcCodePageSet[j].name, (char *) lang))
+                       break;
+                   lang = 0;
+               }
+               if (!lang)
+                   printf ("%s(%s): extra lang %s\n", file, family, FcCodePageSet[j].name);
+           }
+       }
+       else
+       {
+           /*
+            * None provided, use the charset derived ones
+            */
+           for (i = 0; i < NUM_CODE_PAGE_SET; i++)
+               if (matchCodePage[i])
+               {
+                   if (!FcPatternAddString (pat, FC_LANG,
+                                            FcCodePageRange[i].name))
+                       goto bail1;
+                   hasLang = TRUE;
+               }
+       }
+    }
+    if (!hasLang)
+       if (!FcPatternAddString (pat, FC_LANG, (FcChar8 *) FC_LANG_UNKNOWN))
+           goto bail1;
+     
     /*
      * Drop our reference to the charset
      */
@@ -190,35 +390,6 @@ FcFreeTypeQuery (const FcChar8     *file,
            goto bail1;
     }
 
-    /*
-     * Get the OS/2 table and poke about
-     */
-    os2 = (TT_OS2 *) FT_Get_Sfnt_Table (face, ft_sfnt_os2);
-    if (os2 && os2->version >= 0x0001 && os2->version != 0xffff)
-    {
-       for (i = 0; i < NUM_CODE_PAGE_RANGE; i++)
-       {
-           FT_ULong    bits;
-           int         bit;
-           if (FcCodePageRange[i].bit < 32)
-           {
-               bits = os2->ulCodePageRange1;
-               bit = FcCodePageRange[i].bit;
-           }
-           else
-           {
-               bits = os2->ulCodePageRange2;
-               bit = FcCodePageRange[i].bit - 32;
-           }
-           if (bits & (1 << bit))
-           {
-               if (!FcPatternAddString (pat, FC_LANG,
-                                        FcCodePageRange[i].name))
-                   goto bail1;
-           }
-       }
-    }
-
     FT_Done_Face (face);
     FT_Done_FreeType (ftLibrary);
     return pat;
index 69187300aa39afc894bc2ac4265c7f71d9d930d6..067852744ab548175d7fc0318f37471b8d055271 100644 (file)
 #include <config.h>
 #endif
 
-typedef struct _FcMatcher {
-    char    *object;
-    double  (*compare) (char *object, FcValue value1, FcValue value2);
-    int            priority;
-} FcMatcher;
-
 typedef struct _FcSymbolic {
     const char *name;
     int                value;
@@ -67,6 +61,7 @@ typedef struct _FcSymbolic {
 #define FC_DBG_CACHEV  32
 #define FC_DBG_PARSE   64
 #define FC_DBG_SCAN    128
+#define FC_DBG_SCANV   256
 #define FC_DBG_MEMORY  512
 
 #define FC_MEM_CHARSET     0
@@ -87,8 +82,13 @@ typedef struct _FcSymbolic {
 #define FC_MEM_STRLIST     15
 #define FC_MEM_CONFIG      16
 
+typedef enum _FcValueBinding {
+    FcValueBindingWeak, FcValueBindingStrong
+} FcValueBinding;
+
 typedef struct _FcValueList {
     struct _FcValueList    *next;
+    FcValueBinding         binding;
     FcValue                value;
 } FcValueList;
 
@@ -356,6 +356,9 @@ FcConfigCompareValue (const FcValue m,
                      const FcValue v);
 
 /* fccharset.c */
+FcCharSet *
+FcCharSetFreeze (FcCharSet *cs);
+
 FcBool
 FcNameUnparseCharSet (FcStrBuf *buf, const FcCharSet *c);
 
diff --git a/src/fcknownsets.h b/src/fcknownsets.h
new file mode 100644 (file)
index 0000000..6a9dbd2
--- /dev/null
@@ -0,0 +1,1895 @@
+/* total size: 412 unique leaves: 403 */
+
+static const FcCharLeaf        leaves[403] = {
+    { { /* 0 */
+    0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00000000, 0x00000001, 0x00000000, 0x00000000,
+    } },
+    { { /* 1 */
+    0xfffffffe, 0x87ffffff, 0x0fffffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 2 */
+    0x33180000, 0x00000044, 0x00000000, 0x00000000,
+    0x00000000, 0x00001000, 0x00000000, 0x00000000,
+    } },
+    { { /* 3 */
+    0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 4 */
+    0x43722f8b, 0x0b042000, 0xe340e82c, 0x40c82800,
+    0x49375944, 0x04407976, 0xa3f02c93, 0x08c50038,
+    } },
+    { { /* 5 */
+    0x0003ee02, 0x35508000, 0x1e23e1c8, 0xc4498200,
+    0x2942ad5a, 0x8060c000, 0xa49a461c, 0x052ac003,
+    } },
+    { { /* 6 */
+    0xd6462a44, 0x08003dda, 0x14208388, 0x01700020,
+    0x03022021, 0x40ac3000, 0x44628620, 0x8a0020a0,
+    } },
+    { { /* 7 */
+    0x80040253, 0x14840402, 0x10047bfb, 0x11e27fa4,
+    0x00a42441, 0x20c01421, 0x70003a50, 0x27430002,
+    } },
+    { { /* 8 */
+    0x208245c9, 0x0fc14630, 0x28503c88, 0xa0248602,
+    0x88062388, 0x40000e19, 0xeb6422aa, 0xcd28001c,
+    } },
+    { { /* 9 */
+    0x02e1a120, 0x8200840b, 0x549e279b, 0xa0b38141,
+    0x85080010, 0x08002061, 0x08d02f08, 0x010fbe3e,
+    } },
+    { { /* 10 */
+    0xa803f718, 0x5b080a41, 0x00020504, 0x382a0500,
+    0x00015041, 0x21081910, 0x00000313, 0x04046122,
+    } },
+    { { /* 11 */
+    0x100140d0, 0x40228000, 0x40488050, 0x10000008,
+    0x370006d1, 0x00005e80, 0x941000a0, 0x60000018,
+    } },
+    { { /* 12 */
+    0x00900240, 0x00548000, 0x00080000, 0x00100900,
+    0x00000040, 0x10105020, 0x4c022400, 0x06010001,
+    } },
+    { { /* 13 */
+    0x814c2918, 0x08012100, 0x00036485, 0x10214452,
+    0x00080904, 0x0000000d, 0x80004988, 0x16910001,
+    } },
+    { { /* 14 */
+    0x40000765, 0x04338492, 0x45928c00, 0x52200016,
+    0xd0080228, 0x4c084300, 0xc32a40a2, 0x2e009810,
+    } },
+    { { /* 15 */
+    0x16708000, 0x40826e84, 0x04b3c390, 0x21187c85,
+    0x02c8041c, 0x4a001120, 0x361b0a48, 0x89005540,
+    } },
+    { { /* 16 */
+    0x9902000a, 0x10400221, 0x04000242, 0x00000044,
+    0x0c040000, 0x00000010, 0x00001216, 0x00000242,
+    } },
+    { { /* 17 */
+    0x00401a20, 0x00000400, 0xb5b30009, 0x15230a18,
+    0x1fe89ba0, 0x8379507c, 0xc09d10fd, 0x0560dbf6,
+    } },
+    { { /* 18 */
+    0x0242ef92, 0xdf020110, 0x08226961, 0x02029035,
+    0x00030000, 0x45aa1a02, 0x02000001, 0x28518101,
+    } },
+    { { /* 19 */
+    0x02d26080, 0x00000280, 0x00011800, 0x00009200,
+    0x20000880, 0x35000405, 0x60442000, 0x609e49e6,
+    } },
+    { { /* 20 */
+    0x2a42104c, 0xa1482820, 0x802010b1, 0x7b9c000e,
+    0x14a08490, 0x41e028c1, 0x8c490704, 0x0cc8100d,
+    } },
+    { { /* 21 */
+    0x89ba8412, 0x142202c0, 0x0ac05500, 0x92833ec4,
+    0x43871ca3, 0x22a04703, 0x03c03028, 0xa0200801,
+    } },
+    { { /* 22 */
+    0x30448000, 0x000085a3, 0x2225200e, 0x0001b73c,
+    0x8c503220, 0x315d0099, 0x940200a0, 0x0e4b0003,
+    } },
+    { { /* 23 */
+    0x8c20e342, 0xd0910080, 0xa3281d94, 0x60c1499c,
+    0x07134406, 0x44445a90, 0x00000f88, 0x95c40040,
+    } },
+    { { /* 24 */
+    0x84477581, 0xc0534402, 0x01082b83, 0x92424000,
+    0x09a60611, 0x32220800, 0x1bddb384, 0xc08af000,
+    } },
+    { { /* 25 */
+    0x00020282, 0x6c008800, 0x00219200, 0x8c844180,
+    0x09441308, 0x000007a7, 0x0c418051, 0x00d06002,
+    } },
+    { { /* 26 */
+    0x10d0a000, 0x44003004, 0x01000000, 0x07008201,
+    0x440e0100, 0x08056830, 0x051464b2, 0x441410e6,
+    } },
+    { { /* 27 */
+    0x21000011, 0xcbc09c08, 0x40c2e120, 0x41b4304c,
+    0x9a8310ac, 0x328198b2, 0x00849822, 0xbc123369,
+    } },
+    { { /* 28 */
+    0xc03bd6c0, 0x0c53a1a1, 0xea008a1e, 0x05d8cbf0,
+    0x21c34390, 0x4a1c4805, 0x324002d0, 0xd79d0041,
+    } },
+    { { /* 29 */
+    0xe8b02b09, 0x24527dc0, 0xd04bc240, 0xc8aba000,
+    0x34a98a80, 0x41c98000, 0x241f8010, 0x487b9200,
+    } },
+    { { /* 30 */
+    0x00cc0000, 0x33008406, 0x001b410f, 0x80402000,
+    0xa0988022, 0x006ba186, 0x85a42a30, 0x06044181,
+    } },
+    { { /* 31 */
+    0x00046021, 0xa0010080, 0x46b80400, 0x03a0e90f,
+    0x18200000, 0x081040a0, 0x0001380a, 0xa8000500,
+    } },
+    { { /* 32 */
+    0xc28a0404, 0x2720000a, 0x830c0910, 0x00000802,
+    0x10806211, 0x0808000c, 0x0c08000c, 0x08400000,
+    } },
+    { { /* 33 */
+    0x00441410, 0x6404000b, 0x800150c0, 0x8984047e,
+    0x41400658, 0x94a4c000, 0x09dca862, 0x00001800,
+    } },
+    { { /* 34 */
+    0x000a8100, 0x41900008, 0xe4a14007, 0x64452501,
+    0x0e7d11ee, 0xfb084800, 0x08a81616, 0x0009c92e,
+    } },
+    { { /* 35 */
+    0x4a821800, 0x6b6406a0, 0x16000002, 0x83905648,
+    0x002a73a0, 0x00248000, 0x470288f9, 0x0faa4d02,
+    } },
+    { { /* 36 */
+    0x8e800000, 0x7554b87b, 0xd9402418, 0x040cc880,
+    0xb0410000, 0x04428c24, 0x001a5a34, 0xc1108000,
+    } },
+    { { /* 37 */
+    0x00328046, 0x8106180d, 0xcd920002, 0x74016014,
+    0x00916112, 0x420ac098, 0x8420040f, 0x40029a13,
+    } },
+    { { /* 38 */
+    0xfd228a62, 0x40808188, 0x21031000, 0x31010808,
+    0x07044420, 0x0388b812, 0xa3008900, 0x22020000,
+    } },
+    { { /* 39 */
+    0x46001210, 0x00410042, 0x52415680, 0x200052f0,
+    0x82148610, 0x46021004, 0x8035430a, 0xd80060e0,
+    } },
+    { { /* 40 */
+    0x08010041, 0x6c653400, 0xab0411c1, 0x22040286,
+    0x00000003, 0x00009084, 0x02814015, 0x33000202,
+    } },
+    { { /* 41 */
+    0x38400400, 0xc0c00e20, 0x00850030, 0x0d250500,
+    0x81d04ad0, 0x020c2280, 0x6240b605, 0x62802679,
+    } },
+    { { /* 42 */
+    0x080802ea, 0x8579dd67, 0xdea0081b, 0x40008735,
+    0xd1000a8c, 0xa22505aa, 0x15108440, 0x0080404d,
+    } },
+    { { /* 43 */
+    0x8d220012, 0x058f1968, 0x3a1a9080, 0x85618464,
+    0x2002ccc0, 0x732e0820, 0x0b3420a4, 0x14150004,
+    } },
+    { { /* 44 */
+    0x82002001, 0x08000057, 0x00445004, 0x79051212,
+    0x000940d0, 0x84004000, 0xd844054c, 0x5114409a,
+    } },
+    { { /* 45 */
+    0x40000b12, 0x15800201, 0x08002001, 0xc200084a,
+    0x40020800, 0x98093020, 0x18800000, 0x0008e22c,
+    } },
+    { { /* 46 */
+    0x00040004, 0x001410e0, 0x20008020, 0x10009800,
+    0x00827082, 0x1c000288, 0x00014c22, 0x08209100,
+    } },
+    { { /* 47 */
+    0x00404002, 0x44001c00, 0x7cc10383, 0x84002121,
+    0x0002e002, 0xe20a44c0, 0x81260e03, 0x080002d0,
+    } },
+    { { /* 48 */
+    0x96902921, 0xb8c24001, 0x00806241, 0xa6510a06,
+    0x812c0112, 0x0400c600, 0xa2800cb0, 0x8640a429,
+    } },
+    { { /* 49 */
+    0x4a028000, 0x02003041, 0x0057ba40, 0x20205001,
+    0x24b08880, 0x01122002, 0x000402d3, 0x00000211,
+    } },
+    { { /* 50 */
+    0x40040080, 0xe0000c82, 0x00003008, 0x00081011,
+    0x81a40208, 0x420e40a0, 0xc0400400, 0x48000081,
+    } },
+    { { /* 51 */
+    0x0f912df5, 0x0629d807, 0x4001007c, 0x824e4546,
+    0x1008c000, 0xed363005, 0x65400c80, 0x0810930b,
+    } },
+    { { /* 52 */
+    0xe8200600, 0x6082c80a, 0x403400ca, 0x12012e02,
+    0x19489004, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 53 */
+    0x00000000, 0x05400000, 0x00311000, 0x02a54c00,
+    0x44105520, 0x23040310, 0x80345422, 0x12010a03,
+    } },
+    { { /* 54 */
+    0x01a1126b, 0xa0482000, 0x45400448, 0xe08d8000,
+    0x28401af0, 0x04168626, 0x4c005018, 0x21120032,
+    } },
+    { { /* 55 */
+    0x0d0005e4, 0x42008a08, 0x00334800, 0x87030860,
+    0x34008501, 0xe4280109, 0x81002045, 0x5c1825a8,
+    } },
+    { { /* 56 */
+    0xd80435a0, 0x02e01c02, 0x020000a1, 0x4146c050,
+    0xa6046800, 0xbb8af260, 0xc8b60000, 0x600200e2,
+    } },
+    { { /* 57 */
+    0x0080023e, 0x03728900, 0x00068681, 0x08880000,
+    0x41404600, 0x20000e04, 0x10481622, 0x22178a00,
+    } },
+    { { /* 58 */
+    0x00007418, 0x21021200, 0x08800200, 0x0420984a,
+    0x12110000, 0x99040002, 0x04022a55, 0x10105000,
+    } },
+    { { /* 59 */
+    0x459a0000, 0xa000b02a, 0x0208420a, 0x00002708,
+    0x08128090, 0x04018740, 0x3020e202, 0x8c800630,
+    } },
+    { { /* 60 */
+    0x04c004c4, 0x80002000, 0xd8314000, 0x02000080,
+    0x00081400, 0x00000218, 0x8a100880, 0x40002010,
+    } },
+    { { /* 61 */
+    0x1500010d, 0x00000000, 0x80a04000, 0x01500140,
+    0x80002004, 0x04080004, 0x00000010, 0x4a049001,
+    } },
+    { { /* 62 */
+    0x80000020, 0x0842000c, 0x2a8c3041, 0xc085090e,
+    0x40c42906, 0x00100800, 0xb2308006, 0x21380102,
+    } },
+    { { /* 63 */
+    0x030d0080, 0x09400420, 0x80000012, 0x80040410,
+    0x004888ca, 0x24040602, 0x00040001, 0x01100008,
+    } },
+    { { /* 64 */
+    0xa9c8550d, 0x0c522428, 0x48310000, 0x022f624d,
+    0x412830a0, 0xd205057b, 0x1844a894, 0x45c26cc2,
+    } },
+    { { /* 65 */
+    0x2ed14017, 0x02081901, 0x1500c202, 0x20919040,
+    0x044d0401, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 66 */
+    0x00000000, 0x80800000, 0x04201542, 0x06000c02,
+    0x60001404, 0xb9d99f87, 0x540a059f, 0x3810245d,
+    } },
+    { { /* 67 */
+    0x004825b0, 0x00000000, 0x00000000, 0x00990850,
+    0x02000420, 0x44080108, 0x28009840, 0x0008810a,
+    } },
+    { { /* 68 */
+    0x40018400, 0x00210400, 0x82000794, 0x00500001,
+    0x00002482, 0x00001c00, 0x80043c01, 0x49000800,
+    } },
+    { { /* 69 */
+    0xf83c0228, 0xcb0886c0, 0xa0006230, 0x00000004,
+    0x18000000, 0x0007a148, 0x00124024, 0x22852c40,
+    } },
+    { { /* 70 */
+    0xe6b3a96f, 0x5126400f, 0x723b6c86, 0xb5a4e20b,
+    0x0222859f, 0x0123854c, 0x40000402, 0x20202102,
+    } },
+    { { /* 71 */
+    0x02240004, 0x00042080, 0x00047e00, 0x01a01604,
+    0x10042a80, 0x0032d800, 0x3183fa81, 0x00200488,
+    } },
+    { { /* 72 */
+    0x40872000, 0x84100000, 0x48800221, 0x00000074,
+    0x114a0029, 0x02c80000, 0x00049000, 0x11000410,
+    } },
+    { { /* 73 */
+    0xc5010010, 0x0000c957, 0x08102d00, 0x50204000,
+    0x04501000, 0x00013088, 0x40020008, 0x00400012,
+    } },
+    { { /* 74 */
+    0x01000010, 0x01200820, 0x08060010, 0xa0000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 75 */
+    0x00000000, 0x00000000, 0x00000000, 0x00800000,
+    0x011e8a09, 0x18022138, 0x10700480, 0x00000006,
+    } },
+    { { /* 76 */
+    0x10000000, 0x88044402, 0xf8013815, 0x21e9041c,
+    0x1b306c60, 0x08820588, 0x1a607af3, 0x0ac5870c,
+    } },
+    { { /* 77 */
+    0x524a00c1, 0x22050080, 0x50420114, 0x04902206,
+    0x0000a800, 0x00002901, 0x10080840, 0x88480000,
+    } },
+    { { /* 78 */
+    0x018f156f, 0x0b012000, 0x45107040, 0x000088a0,
+    0x00000000, 0x00028100, 0x98000090, 0x7010e006,
+    } },
+    { { /* 79 */
+    0x41091608, 0x00000101, 0x00963a20, 0x00000000,
+    0x22400000, 0x021a7120, 0xa2270002, 0x80022000,
+    } },
+    { { /* 80 */
+    0x0200c102, 0x00c10800, 0x8ca02029, 0x00000624,
+    0x00000000, 0x01000100, 0x01180000, 0x00004020,
+    } },
+    { { /* 81 */
+    0x04000000, 0x10020480, 0x0410803e, 0x00008000,
+    0x80024000, 0x00004800, 0x00400200, 0x00000110,
+    } },
+    { { /* 82 */
+    0x00252000, 0x08040020, 0x00800280, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x005802a0,
+    } },
+    { { /* 83 */
+    0x08000200, 0x08000140, 0x20020000, 0x00041003,
+    0x00000000, 0x00108200, 0x00800010, 0x07040000,
+    } },
+    { { /* 84 */
+    0x44000000, 0x00000000, 0x00000000, 0xa2200000,
+    0xa08c0000, 0x48300020, 0x59126008, 0x00100100,
+    } },
+    { { /* 85 */
+    0x00084180, 0x08000001, 0x80044c00, 0x00801482,
+    0x10212000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 86 */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    } },
+    { { /* 87 */
+    0x00000fff, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 88 */
+    0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00000000, 0x00530180, 0x00800000, 0x00800000,
+    } },
+    { { /* 89 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0xfffe0000, 0xfffe03fb, 0x000003fb, 0x00000000,
+    } },
+    { { /* 90 */
+    0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 91 */
+    0x33210000, 0x080d0063, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 92 */
+    0x00400008, 0x00000802, 0x00000000, 0x03ff03ff,
+    0x000f0000, 0x00000000, 0x00140000, 0x00000000,
+    } },
+    { { /* 93 */
+    0xe402098d, 0x20305fa1, 0x00040000, 0x00000cc3,
+    0x000000cc, 0x80000020, 0x00000000, 0x00000000,
+    } },
+    { { /* 94 */
+    0x00040000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 95 */
+    0x00000000, 0x00000000, 0x00000000, 0x000fffff,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 96 */
+    0x3999900f, 0x99999939, 0x00000804, 0x00000000,
+    0x00000000, 0x300c0003, 0x0000c8c0, 0x00008000,
+    } },
+    { { /* 97 */
+    0x00000060, 0x00000000, 0x00000005, 0x0000a400,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 98 */
+    0xa03fffef, 0x00000000, 0xfffffffe, 0xffffffff,
+    0x780fffff, 0xfffffffe, 0xffffffff, 0x787fffff,
+    } },
+    { { /* 99 */
+    0x00000000, 0x02060000, 0x00000000, 0x00000000,
+    0x00000000, 0x000001f0, 0x00000000, 0x00000000,
+    } },
+    { { /* 100 */
+    0x01102008, 0x084008cc, 0x00822600, 0x78000000,
+    0x7000c000, 0x00000002, 0x00002010, 0x00000000,
+    } },
+    { { /* 101 */
+    0x43f36f8b, 0x9b462542, 0xe3e0e82c, 0x400a0004,
+    0xdb365f65, 0x04497977, 0xe3f0ecd7, 0x18c5603a,
+    } },
+    { { /* 102 */
+    0x3403e60b, 0x37518000, 0x7eebe0c8, 0x98698200,
+    0x2d56ad48, 0x8060e803, 0xad93661c, 0xc568c03a,
+    } },
+    { { /* 103 */
+    0xc656aa60, 0x02403f7e, 0x146183cd, 0x21751020,
+    0x07122021, 0x40bc3000, 0x4562a624, 0x0a3060a8,
+    } },
+    { { /* 104 */
+    0x85740217, 0x9c840402, 0x14157ffb, 0x11e27f34,
+    0x22efb665, 0x60ff1f75, 0x38403a70, 0x676336c3,
+    } },
+    { { /* 105 */
+    0x20b24dd9, 0x0fc946b0, 0x4850bc98, 0xa03f8638,
+    0x98162388, 0x5232be49, 0xeba422ab, 0xc72c00dd,
+    } },
+    { { /* 106 */
+    0x26e1a1e7, 0x8f0a841b, 0x559e27eb, 0x89bfc241,
+    0x85480014, 0x084d6361, 0xaad07f0c, 0x05cfff3e,
+    } },
+    { { /* 107 */
+    0xa803ff1a, 0x7b407a41, 0x80024745, 0x38eb0500,
+    0x1005dc51, 0x710c9b34, 0x01000397, 0xa4046366,
+    } },
+    { { /* 108 */
+    0x005180d0, 0x430ac000, 0x30c89071, 0x58000008,
+    0xf7000ed9, 0x00415f80, 0x941000b0, 0x62800018,
+    } },
+    { { /* 109 */
+    0x09d00240, 0x01568200, 0x08015004, 0x05101d10,
+    0x001084c1, 0x10504025, 0x4d8a410f, 0xa60d4009,
+    } },
+    { { /* 110 */
+    0x914cab19, 0x098121c0, 0x0203c485, 0x80000672,
+    0x00080b04, 0x0009141d, 0x905c49c9, 0x16900009,
+    } },
+    { { /* 111 */
+    0x22200c65, 0x24338412, 0x47960c03, 0x42250a04,
+    0xd0880028, 0x4f0c4900, 0xd3aa14a2, 0x3e87d830,
+    } },
+    { { /* 112 */
+    0x1f618e04, 0x41867ea4, 0x2dbbc390, 0x211857ad,
+    0x2a48241e, 0x4e041138, 0x161b0a40, 0x88400d60,
+    } },
+    { { /* 113 */
+    0x9502020a, 0x10608221, 0x04000243, 0x80001444,
+    0x0c040000, 0x70000000, 0x00c11a06, 0x0c00024a,
+    } },
+    { { /* 114 */
+    0x00401a00, 0x40451404, 0xbdf30029, 0x052b0a78,
+    0xbfa0bba9, 0x8379407c, 0xe91d12fd, 0xc5695bf6,
+    } },
+    { { /* 115 */
+    0x444aeff6, 0xff022115, 0x402bed63, 0x0242d033,
+    0x00131000, 0x5dca1b42, 0x020000a0, 0x2c61a703,
+    } },
+    { { /* 116 */
+    0x8ff24880, 0x00000284, 0x100d5804, 0x0048b200,
+    0x20011894, 0x37805004, 0x684d3200, 0x68be49ea,
+    } },
+    { { /* 117 */
+    0x2e42184c, 0x21c9a820, 0x80b050b9, 0xff7c001e,
+    0x14e0849a, 0x01e028c1, 0xac49870e, 0xdddb130f,
+    } },
+    { { /* 118 */
+    0x89fbbe1a, 0x51b2a2e2, 0x32ca5522, 0x928b3ec6,
+    0x438f1dbf, 0x32986703, 0x73c03028, 0xa9230811,
+    } },
+    { { /* 119 */
+    0x3a65c000, 0x04028fe3, 0xa6252c4e, 0x00a1bf3d,
+    0x8cd43e3a, 0x317c06c9, 0xd52a00e0, 0x0edf018b,
+    } },
+    { { /* 120 */
+    0x8c22e34b, 0xf0911183, 0xa7287d94, 0x40fbc9ac,
+    0x07534484, 0x44445a90, 0x00013fc8, 0xf5d40048,
+    } },
+    { { /* 121 */
+    0xec5f7701, 0x891dc442, 0x49286b83, 0xd2424109,
+    0x59fe061d, 0x3a221840, 0x3b9fb7e4, 0xc0eaf003,
+    } },
+    { { /* 122 */
+    0x82021386, 0xe4008980, 0x10a1b200, 0x0cc44b80,
+    0x8944d309, 0x48341faf, 0x0c458259, 0x0470420a,
+    } },
+    { { /* 123 */
+    0x10c8a040, 0x44503140, 0x01004004, 0x05408281,
+    0x642c0108, 0x1a056a30, 0x051460a6, 0x645690cf,
+    } },
+    { { /* 124 */
+    0x31000021, 0xcbf09c18, 0x63e2e120, 0x01b5104c,
+    0x9a83538c, 0x3281b8b2, 0x0a84987a, 0x0c0233e7,
+    } },
+    { { /* 125 */
+    0xd038d6cd, 0x9872e1b1, 0xe2848a1e, 0x0459c3f4,
+    0x23c2439a, 0xd3144845, 0x36400292, 0xffbd0241,
+    } },
+    { { /* 126 */
+    0xe8f0eb09, 0xa5d27dc0, 0xd24bc242, 0xd0afa47f,
+    0x34a11aa0, 0x0bd88247, 0x651bc453, 0xc83ad294,
+    } },
+    { { /* 127 */
+    0x40c8001e, 0x33140e06, 0xb21f615f, 0xc0d00088,
+    0xa898a02a, 0x166ba1c5, 0x85b4af50, 0x0604c08b,
+    } },
+    { { /* 128 */
+    0x1e04f933, 0xa251056e, 0x76380400, 0x73b8ed07,
+    0x19324406, 0xc8164081, 0x63097c8a, 0xaa042984,
+    } },
+    { { /* 129 */
+    0xca9c1c24, 0x27614e0e, 0x830009d0, 0xc10c0846,
+    0x10816011, 0x0908540d, 0xcc0a000e, 0x0c000514,
+    } },
+    { { /* 130 */
+    0xa0440430, 0x6784008b, 0x8a195288, 0x8b18865e,
+    0x41602e59, 0x9cbe8c10, 0x895c6861, 0x00089800,
+    } },
+    { { /* 131 */
+    0x089a8100, 0xc1900018, 0xf4a14007, 0x640d8505,
+    0x0e4d314e, 0xff0a4806, 0x2ea81632, 0x000b852e,
+    } },
+    { { /* 132 */
+    0xca841810, 0x696c0e20, 0x16000032, 0x0390d658,
+    0x1a6851a0, 0x11249000, 0x432698e1, 0x1fae5d52,
+    } },
+    { { /* 133 */
+    0xae280fa0, 0x5700fafb, 0x99406408, 0xc044c880,
+    0xb1419005, 0xa4c48424, 0x603a1a34, 0xc1949000,
+    } },
+    { { /* 134 */
+    0x003a8246, 0xc106180d, 0x99100022, 0x1511e050,
+    0x00824157, 0x022a041a, 0x8930004f, 0x446ad813,
+    } },
+    { { /* 135 */
+    0xed228aa2, 0x400511c0, 0x01021000, 0x31018808,
+    0x02044620, 0x0f08f800, 0xa2008900, 0x22020000,
+    } },
+    { { /* 136 */
+    0x16108210, 0x10400042, 0x126052c0, 0x200052f4,
+    0x82308510, 0x42021100, 0x80b5430a, 0xda2070e1,
+    } },
+    { { /* 137 */
+    0x08012040, 0xfc653500, 0xab0419c1, 0x62140286,
+    0x00440087, 0x42469085, 0x0a85405c, 0x33803207,
+    } },
+    { { /* 138 */
+    0xb8c00400, 0xc0d0ce30, 0x0080c030, 0x0da50508,
+    0x00400a90, 0x280c0200, 0x40446705, 0x41226429,
+    } },
+    { { /* 139 */
+    0x000002e8, 0x847c4664, 0xde200002, 0x4049861d,
+    0xc0000a08, 0x20010084, 0x10108400, 0x01c742cd,
+    } },
+    { { /* 140 */
+    0xd52a703a, 0x1d8f9968, 0x3e12be50, 0x81d9aef5,
+    0x2412cec4, 0x732e0828, 0x4b3424ac, 0xd41d020c,
+    } },
+    { { /* 141 */
+    0x80002a02, 0x08110097, 0x114411c4, 0x7d451786,
+    0x5e4949dd, 0x87914040, 0xd8c4254c, 0x491444ba,
+    } },
+    { { /* 142 */
+    0xc8001b92, 0x15800271, 0x0c0000c1, 0xc200096a,
+    0x40024800, 0xba493021, 0x1c802080, 0x1008e2ac,
+    } },
+    { { /* 143 */
+    0x00341004, 0x841400e3, 0x20004020, 0x14149810,
+    0x04aa70c2, 0x54208688, 0x04130c62, 0x20109180,
+    } },
+    { { /* 144 */
+    0x02064082, 0x54011c40, 0xe4e90383, 0x84802125,
+    0x2810e433, 0xe60944c0, 0x81260a03, 0x080112da,
+    } },
+    { { /* 145 */
+    0x97906901, 0xf8864001, 0x0081e24d, 0xa6510a0e,
+    0x81ec011a, 0x8441c600, 0xb62eadb8, 0x8741acef,
+    } },
+    { { /* 146 */
+    0x4b028d54, 0x02681161, 0x2057bb60, 0x043350a0,
+    0xf7b4a8c0, 0x01122402, 0x20009ad3, 0x00c82271,
+    } },
+    { { /* 147 */
+    0x809e2081, 0xe1800c8a, 0x8151b009, 0x40281031,
+    0x89a52a0e, 0x620e69b6, 0xd1444425, 0x4d548085,
+    } },
+    { { /* 148 */
+    0x1fb12c75, 0x862dd807, 0x5841d97c, 0x226e414e,
+    0x9e088200, 0xedb7f80d, 0x75668c80, 0x08149313,
+    } },
+    { { /* 149 */
+    0xc8040e32, 0x6ea6484e, 0x66742c4a, 0xba0126c0,
+    0x185dd70c, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 150 */
+    0x00000000, 0x05400000, 0x813370a0, 0x03a54f81,
+    0x641055ec, 0x2344c31a, 0x00341462, 0x1a090a43,
+    } },
+    { { /* 151 */
+    0x13a5187b, 0xa8480102, 0xc5440440, 0xe2dd8106,
+    0x2d481af0, 0x0416b626, 0x6e405058, 0x31128032,
+    } },
+    { { /* 152 */
+    0x0c0007e4, 0x420a8208, 0x803b4840, 0x87134860,
+    0x3428850d, 0xe5290319, 0x870a2345, 0x5c1825a9,
+    } },
+    { { /* 153 */
+    0xd9c577a6, 0x03e85e00, 0xa7000081, 0x41c6cd54,
+    0xa2042800, 0x2b0ab860, 0xda9e0020, 0x0e1a08ea,
+    } },
+    { { /* 154 */
+    0x11c0427e, 0x03768908, 0x01058621, 0x98a80004,
+    0xc44846a0, 0x20220d05, 0x914854a2, 0x28d78a01,
+    } },
+    { { /* 155 */
+    0x00087898, 0x31221605, 0x08804340, 0x06a2fa4e,
+    0x92110814, 0x9b142002, 0x16432e52, 0x90105000,
+    } },
+    { { /* 156 */
+    0x85ba0041, 0x20203042, 0x07a84f0b, 0x40802f08,
+    0x1a930591, 0x0601df50, 0x3021a202, 0x4e800630,
+    } },
+    { { /* 157 */
+    0x04c80cc4, 0x8001a004, 0xd4316000, 0x0a020880,
+    0x00281c00, 0x00418e18, 0xca106ad0, 0x4b00f210,
+    } },
+    { { /* 158 */
+    0x1506274d, 0x88900220, 0x82a85a00, 0x81504549,
+    0x80002004, 0x2c088804, 0x000508d1, 0x4ac48001,
+    } },
+    { { /* 159 */
+    0x0062e0a0, 0x0a42008e, 0x6a8c3055, 0xe0a5090e,
+    0x42c42906, 0x80b34814, 0xb330803e, 0x733c0102,
+    } },
+    { { /* 160 */
+    0x700d1494, 0x09400c20, 0xc040301a, 0xc094a451,
+    0x05c88dca, 0xa40c96c2, 0x34040001, 0x011000c8,
+    } },
+    { { /* 161 */
+    0xa9cd550d, 0x1cda2428, 0x48370142, 0x120f7a4d,
+    0x452a32b4, 0xd20531fb, 0xdc44b894, 0x45ca68d7,
+    } },
+    { { /* 162 */
+    0x2ed15097, 0x42081943, 0x9d48d202, 0xa0979840,
+    0x064d5409, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 163 */
+    0x00000000, 0x84800000, 0x04215542, 0x17001c06,
+    0x61107624, 0xb9ddff87, 0x5c0a659f, 0x3c11245d,
+    } },
+    { { /* 164 */
+    0x005dadb0, 0x00000000, 0x00000000, 0x00db28d0,
+    0x02000422, 0x44080108, 0xac409804, 0x90288d0a,
+    } },
+    { { /* 165 */
+    0xe0018700, 0x00310400, 0x82211794, 0x10540019,
+    0x021a2cb2, 0x40039c02, 0x8804bd60, 0x7900080c,
+    } },
+    { { /* 166 */
+    0xba3c1628, 0xcb088640, 0x90807274, 0x0000001e,
+    0xd8000000, 0x9c87e188, 0x04124034, 0x2791ae64,
+    } },
+    { { /* 167 */
+    0xe6fbe86b, 0x5366408f, 0x537feea6, 0xb5e4e3ab,
+    0x0002869f, 0x01228548, 0x48004402, 0x20a02116,
+    } },
+    { { /* 168 */
+    0x02240004, 0x00052080, 0x01547e00, 0x01ac162c,
+    0x10852a84, 0x05308c14, 0xfdc3fbc3, 0x906060fa,
+    } },
+    { { /* 169 */
+    0x40336440, 0x96901200, 0x4e834b31, 0x418200d4,
+    0x1d6a0129, 0x02802080, 0x02ad8000, 0x9f0c2691,
+    } },
+    { { /* 170 */
+    0x67018044, 0x0c24d96f, 0x18d02910, 0x50215001,
+    0x04d01000, 0x02017090, 0x61c30148, 0x01000132,
+    } },
+    { { /* 171 */
+    0x07190088, 0x05620802, 0x4c0e0132, 0xf0a10405,
+    0x00000002, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 172 */
+    0x00000000, 0x00000000, 0x00000000, 0x00800000,
+    0x035e8e8d, 0x5a0421bd, 0x11703488, 0x00000026,
+    } },
+    { { /* 173 */
+    0x10000000, 0x8804c502, 0xf801b815, 0x25ed147c,
+    0x3bb0ed60, 0x1bd78589, 0x1a627af3, 0x0ac50d0c,
+    } },
+    { { /* 174 */
+    0x524ae5d1, 0x6b0d0490, 0x5266a35c, 0x16122b57,
+    0x1101a872, 0x00182949, 0x10080948, 0x886c6000,
+    } },
+    { { /* 175 */
+    0x058f916e, 0x39903012, 0x49b0f840, 0x001b88a0,
+    0x00000000, 0x00428500, 0x98000058, 0x7014ea04,
+    } },
+    { { /* 176 */
+    0x611d1628, 0x60005193, 0x00a71a24, 0x00000000,
+    0x43c00000, 0x10187120, 0xa9270172, 0x89066004,
+    } },
+    { { /* 177 */
+    0x020cc022, 0x40810900, 0x8ca0602d, 0x00000e34,
+    0x00000000, 0x11012100, 0xd31a8011, 0x0892ec4c,
+    } },
+    { { /* 178 */
+    0x85000040, 0x1806c7ac, 0x0512e03e, 0x00348000,
+    0x80cec008, 0x0a126d01, 0x08568641, 0x0027011e,
+    } },
+    { { /* 179 */
+    0x083d3751, 0x4e05e032, 0x048401c0, 0x01400081,
+    0x00000000, 0x00000000, 0x00000000, 0x00591aa0,
+    } },
+    { { /* 180 */
+    0x882443c8, 0xc8001d48, 0x72030152, 0x04059813,
+    0x04008280, 0x0d148a10, 0x02088056, 0x2704a040,
+    } },
+    { { /* 181 */
+    0x4e000000, 0x00000000, 0x00000000, 0xa3200000,
+    0xa0ae1902, 0xdf002660, 0x7b17f010, 0x3ad08121,
+    } },
+    { { /* 182 */
+    0x00284180, 0x48001003, 0x8014cc00, 0x00c414cf,
+    0x30202000, 0x00000001, 0x00000000, 0x00000000,
+    } },
+    { { /* 183 */
+    0x00000000, 0x00000200, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x10000000, 0x00000000,
+    } },
+    { { /* 184 */
+    0xffffc000, 0x00003fff, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 185 */
+    0xfffffffe, 0xffffffff, 0x7fffffff, 0xfffffffe,
+    0xffffffff, 0x00000000, 0x00000000, 0x0000003f,
+    } },
+    { { /* 186 */
+    0x08080002, 0x00000800, 0x00002000, 0x00000800,
+    0x00000000, 0x00000000, 0x15554000, 0x960c3703,
+    } },
+    { { /* 187 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00030190, 0x00800280, 0x00800000,
+    } },
+    { { /* 188 */
+    0x00000002, 0x00000000, 0x00020000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 189 */
+    0x00100000, 0x08010040, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 190 */
+    0x00400008, 0xa80a8008, 0x28000020, 0x10000420,
+    0x000c0000, 0x00800000, 0x00000000, 0x00000000,
+    } },
+    { { /* 191 */
+    0x64028100, 0x20f04e21, 0x01001110, 0x10004007,
+    0x02000000, 0x00000020, 0x00000000, 0x00000000,
+    } },
+    { { /* 192 */
+    0x00040000, 0x00000008, 0x00000000, 0x20000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 193 */
+    0x00000000, 0x00000000, 0x00000000, 0x00080000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 194 */
+    0x00000000, 0x00000000, 0x00000000, 0x00400000,
+    0x00000000, 0x000c0003, 0x0000c8c0, 0x00000000,
+    } },
+    { { /* 195 */
+    0x00000060, 0x01020000, 0x01020005, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 196 */
+    0x00000000, 0x00000040, 0x00400002, 0x00020000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 197 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000200,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 198 */
+    0x00000000, 0x00000000, 0x00000000, 0x00008000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 199 */
+    0x00080028, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 200 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000080,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 201 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000002,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 202 */
+    0x7f7b7f8b, 0xef553db4, 0xf35dfba8, 0x400b0243,
+    0x8d3efb40, 0x8c2c7bf7, 0xe3fa6eff, 0xa8ed1d3a,
+    } },
+    { { /* 203 */
+    0xcf83e602, 0x35558cf5, 0xffabe048, 0xd85992b9,
+    0x2892ab18, 0x8020d7e9, 0xf583c438, 0x450ae74a,
+    } },
+    { { /* 204 */
+    0x9714b000, 0x54007762, 0x1420d188, 0xc8c01020,
+    0x00002121, 0x0c0413a8, 0x04408000, 0x082870c0,
+    } },
+    { { /* 205 */
+    0x000408c0, 0x80000002, 0x14722b7b, 0x3bfb7924,
+    0x1ae43327, 0x38ef9835, 0x28029ad1, 0xbf69a813,
+    } },
+    { { /* 206 */
+    0x2fc665cf, 0x2fc96b11, 0x5053340e, 0xa00486a2,
+    0xe8090106, 0xc00e0f0f, 0x81450a88, 0xc6010010,
+    } },
+    { { /* 207 */
+    0x26e1a161, 0xce00444b, 0xd4eec7aa, 0x85bbcadf,
+    0xa5203a74, 0x8840436c, 0x8bd23f06, 0x3befff79,
+    } },
+    { { /* 208 */
+    0xe8eff75a, 0x5b36fbcb, 0x1be10d49, 0x39ee0154,
+    0x2275d855, 0xa91ab9d8, 0xf0a7f3d7, 0xb40c67e0,
+    } },
+    { { /* 209 */
+    0x081382c2, 0xd08bd491, 0x1061065a, 0x590074f2,
+    0xb3128f9f, 0x0aaa0080, 0xb05e0230, 0x60a0857a,
+    } },
+    { { /* 210 */
+    0xc900d303, 0x8a563098, 0x13907004, 0x00421f14,
+    0x0008c060, 0x10808008, 0xec900400, 0xe6332817,
+    } },
+    { { /* 211 */
+    0x90000758, 0x4e093708, 0xfc83f485, 0x18c8af53,
+    0x080c187c, 0x01146adf, 0xa734c80c, 0x2710a011,
+    } },
+    { { /* 212 */
+    0x422228c5, 0x00210413, 0x51123010, 0x40001820,
+    0xc60c022b, 0x10000300, 0x00220022, 0x02495810,
+    } },
+    { { /* 213 */
+    0x9670a094, 0x1792eeb0, 0x05f2cb96, 0x23580025,
+    0x42cc25de, 0x4a04c938, 0x359f0c40, 0x8a001128,
+    } },
+    { { /* 214 */
+    0x910a139a, 0x125e26a9, 0xae204e51, 0x84f00484,
+    0x0c040000, 0x412c0400, 0x11541206, 0x00020a4b,
+    } },
+    { { /* 215 */
+    0x00c00200, 0x80940000, 0xbfbb0001, 0x242b167c,
+    0x7fa89bbb, 0xe3790c7f, 0xe00d10f4, 0x9f014132,
+    } },
+    { { /* 216 */
+    0x35728652, 0xff1210b4, 0x4223cf27, 0x8602c47b,
+    0x1cd33106, 0xa1aa3a0c, 0x02040812, 0x08012572,
+    } },
+    { { /* 217 */
+    0x485040c0, 0x60106ad0, 0x39009c80, 0x00109a00,
+    0x22000004, 0x00800000, 0x68002020, 0x609ecbe6,
+    } },
+    { { /* 218 */
+    0x3f73916e, 0x218260c0, 0x48301034, 0xbd5c0006,
+    0xd6fb8cd1, 0x43e820e1, 0x084e0600, 0xc4d00500,
+    } },
+    { { /* 219 */
+    0x89aa8d1f, 0x5602a6e9, 0x23ed1001, 0x1a8b3656,
+    0x13a51fb7, 0x30a06502, 0x23c7b278, 0xe9226c93,
+    } },
+    { { /* 220 */
+    0x3a74e41f, 0x98a08fe3, 0x26252d0f, 0xfc49bf9c,
+    0xac543218, 0x1916b949, 0xb5220c60, 0x0659fbc1,
+    } },
+    { { /* 221 */
+    0x8420e343, 0x800048d9, 0x20225502, 0x00a18184,
+    0x20104800, 0x40801380, 0x00160d04, 0x80200040,
+    } },
+    { { /* 222 */
+    0x8de7fd40, 0xe0985436, 0x091e788b, 0xda49fec8,
+    0x8dee0611, 0xba221937, 0x9fdd77f4, 0xf0daf3ec,
+    } },
+    { { /* 223 */
+    0xec424386, 0x26048d3f, 0xca31fe6c, 0x0cc6628e,
+    0x0145d785, 0x559977ad, 0x4045e250, 0xa154260b,
+    } },
+    { { /* 224 */
+    0x58199827, 0xa6103443, 0x413405f2, 0x07003280,
+    0x426600b4, 0x14217210, 0x41856025, 0x00000054,
+    } },
+    { { /* 225 */
+    0x01040201, 0xcb70c820, 0x6a729320, 0x2095184c,
+    0x9a8b1880, 0x3201aab2, 0x00c4d87a, 0x04c233e5,
+    } },
+    { { /* 226 */
+    0xa238d44d, 0x5072b1a1, 0x84fc980a, 0x44d5e1d6,
+    0x20c21094, 0x42104180, 0x22000000, 0xd29d0240,
+    } },
+    { { /* 227 */
+    0xa8b12f01, 0xa63abf40, 0xd25bd35f, 0xd0ada723,
+    0x75a10a92, 0x01e9adac, 0x771f801a, 0xa01b9225,
+    } },
+    { { /* 228 */
+    0x20cadfa1, 0x77884602, 0x003b577f, 0x20d00bfe,
+    0x0088806a, 0x0029a1c4, 0x05242a05, 0x16234009,
+    } },
+    { { /* 229 */
+    0x00056822, 0xa2312010, 0x64901004, 0x1b8a4cc9,
+    0x19302255, 0x08922980, 0x88115402, 0xa0042001,
+    } },
+    { { /* 230 */
+    0x80000400, 0x6422850a, 0x0b810090, 0x1242882a,
+    0x00834011, 0x00001a01, 0x00000000, 0x00000000,
+    } },
+    { { /* 231 */
+    0x00000000, 0x4685009f, 0x0a0032c8, 0x1a010cfc,
+    0x00402ed8, 0x80b80402, 0x0afca826, 0x22288c02,
+    } },
+    { { /* 232 */
+    0x887ba0e0, 0x2135cfd6, 0xf8b106c7, 0x62558613,
+    0x8a19936e, 0xfb0e6efa, 0x48f91630, 0x7c6bcd2f,
+    } },
+    { { /* 233 */
+    0x4e845892, 0x7a2e4ca0, 0x561eedeb, 0x1592ce49,
+    0xe8225324, 0x8124cfdb, 0x634218f1, 0x1a8a5853,
+    } },
+    { { /* 234 */
+    0x24d37420, 0x0514ae3b, 0x8d547458, 0xe904d80a,
+    0x91018268, 0x2cd684a4, 0xc4ba8886, 0x02100377,
+    } },
+    { { /* 235 */
+    0x00388244, 0xc46fae91, 0x73442c44, 0x1515704d,
+    0x10007310, 0x02480082, 0x40060205, 0x0000c003,
+    } },
+    { { /* 236 */
+    0x0c020000, 0x92200008, 0x4040b050, 0xd161b804,
+    0x32744621, 0x3b8af800, 0x8b00050f, 0x2280bbd0,
+    } },
+    { { /* 237 */
+    0x07690600, 0x00c38040, 0x50005420, 0x250cc1d0,
+    0x83108410, 0x02281101, 0x00304008, 0x020040a1,
+    } },
+    { { /* 238 */
+    0x20000040, 0xabe33f88, 0xaa443180, 0x0624c2c6,
+    0x8004ac13, 0x0251b000, 0x4285611e, 0x1d9ff303,
+    } },
+    { { /* 239 */
+    0x78e8440a, 0xc3925e26, 0x00852082, 0x4080b041,
+    0x88424a90, 0x0c8dca04, 0x4203a705, 0x000422a1,
+    } },
+    { { /* 240 */
+    0x0c018668, 0x10f9d764, 0xdea00402, 0x60c12000,
+    0x50014888, 0x04000080, 0x50040000, 0x80d0c05d,
+    } },
+    { { /* 241 */
+    0x970aa010, 0x4dafbba0, 0x1e10dd61, 0x831404e0,
+    0xa6d68848, 0x7327d83b, 0x497427bc, 0x92130ddc,
+    } },
+    { { /* 242 */
+    0x8ba1142b, 0xd5392e75, 0x5450300b, 0x79109a18,
+    0x024a49d4, 0x80164010, 0x89d7e564, 0x5316c020,
+    } },
+    { { /* 243 */
+    0x86002a12, 0x15e8ab65, 0x0c0000cb, 0xe200596e,
+    0x00067031, 0xa82916a4, 0x18802000, 0xe1487aac,
+    } },
+    { { /* 244 */
+    0x84563207, 0x519132e8, 0x202550a1, 0x10807c00,
+    0x9d8a7280, 0x421f00aa, 0x02310e22, 0x04941100,
+    } },
+    { { /* 245 */
+    0x40080022, 0x5c100010, 0xe4c80343, 0x0580a1a5,
+    0x04008433, 0x6e080080, 0x81262a4b, 0x2901aad8,
+    } },
+    { { /* 246 */
+    0x4490684d, 0xba880009, 0x00820040, 0x84d10000,
+    0xb1e6215b, 0x80083161, 0xc2400800, 0xa600a069,
+    } },
+    { { /* 247 */
+    0x4a328d40, 0x550a5d71, 0x2d579aa0, 0x4aa64005,
+    0x30b12021, 0x01123f06, 0x260a10c2, 0x50824402,
+    } },
+    { { /* 248 */
+    0x80409880, 0x810004c0, 0x00002003, 0x38180000,
+    0xf1a60200, 0x420e4434, 0x92e005a2, 0x09008101,
+    } },
+    { { /* 249 */
+    0x00000400, 0x00008885, 0x00000000, 0x00804000,
+    0x00000000, 0x00004040, 0x00000000, 0x00000000,
+    } },
+    { { /* 250 */
+    0x00000000, 0x08000000, 0x00000082, 0x00000000,
+    0x88000004, 0xe7efbcff, 0xffbfe7f8, 0xf1f92fec,
+    } },
+    { { /* 251 */
+    0xbff8e271, 0x05704301, 0x85b30004, 0x42164706,
+    0xe4105402, 0xb3040092, 0x81305422, 0x180b4263,
+    } },
+    { { /* 252 */
+    0x13f5387b, 0xa9ea0705, 0x05143c4c, 0x80020600,
+    0xbd481ad9, 0xf496ee37, 0x7ec0705f, 0x355fb832,
+    } },
+    { { /* 253 */
+    0x455f8644, 0x41469000, 0x003b1d40, 0xce1362a1,
+    0x39028505, 0x0c080548, 0x0000144f, 0x58003488,
+    } },
+    { { /* 254 */
+    0xd8150071, 0x4be3bd00, 0x85008a90, 0xe61dc100,
+    0xb386ed14, 0x639bff72, 0xd9bee592, 0x0a92887b,
+    } },
+    { { /* 255 */
+    0x1c82d3fe, 0x177ab980, 0xc41782c9, 0x39809ffb,
+    0x590c4260, 0x37c70f01, 0xb15094a3, 0x20070623,
+    } },
+    { { /* 256 */
+    0x3102f85a, 0x310201c0, 0x1e820040, 0x056a3a0a,
+    0x12805a04, 0xa7148002, 0xa04b2612, 0x90011069,
+    } },
+    { { /* 257 */
+    0x848a1000, 0x3f801802, 0x42400708, 0x4e140110,
+    0x180080b0, 0x0281c510, 0x10298202, 0x88000210,
+    } },
+    { { /* 258 */
+    0x00420020, 0x11000280, 0x4413e000, 0xfe025804,
+    0x30283c07, 0x04739798, 0xcb13ced1, 0x43196210,
+    } },
+    { { /* 259 */
+    0x55ac278d, 0xc892422e, 0x02885380, 0x18514039,
+    0x8088292c, 0x2428b900, 0x080e0c41, 0x42004421,
+    } },
+    { { /* 260 */
+    0x08680408, 0x12040006, 0x02903031, 0xe0855b3e,
+    0x10442936, 0x10822814, 0x83344266, 0x531b013c,
+    } },
+    { { /* 261 */
+    0x0e0d0404, 0x00510c22, 0xc0000012, 0x88000040,
+    0x0000004a, 0x00000000, 0x544403f6, 0x00088868,
+    } },
+    { { /* 262 */
+    0x00000081, 0x40000000, 0x00000100, 0x02000000,
+    0x00080600, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 263 */
+    0x00000080, 0x00000040, 0x00000000, 0x00001040,
+    0x00000000, 0xf7cdef3f, 0x7ce2ff73, 0x7ffff8fe,
+    } },
+    { { /* 264 */
+    0x3f89fdfe, 0x009333fc, 0x042012c2, 0x07080c06,
+    0x01101624, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 265 */
+    0xe0000000, 0xfff3fffe, 0x7f79fc9f, 0x00f928df,
+    0x80120c32, 0xd53a0008, 0xec021858, 0x2e289d18,
+    } },
+    { { /* 266 */
+    0xe0109620, 0x2622d60c, 0x02000f91, 0x9055b240,
+    0x501180a2, 0x04049800, 0x00004000, 0x00000000,
+    } },
+    { { /* 267 */
+    0x00000000, 0x00000000, 0x00000000, 0xf991fbc0,
+    0xdffb0ff8, 0x62430808, 0xfb3b41b6, 0x23896f74,
+    } },
+    { { /* 268 */
+    0xecd7ae7f, 0x5900e047, 0x0989a096, 0xa030612c,
+    0x2aaa090d, 0x4f7bd44e, 0x388bc4b2, 0x6110a9c6,
+    } },
+    { { /* 269 */
+    0x42000014, 0x0202800c, 0x64853e48, 0x83f7d63e,
+    0x0c073aa0, 0x04300400, 0x1002f680, 0x00000000,
+    } },
+    { { /* 270 */
+    0x00000000, 0x00000000, 0x00000000, 0x00100000,
+    0x00004000, 0x00004000, 0x00000100, 0x00000000,
+    } },
+    { { /* 271 */
+    0x00000000, 0x40000000, 0x00000000, 0x00000400,
+    0x00008000, 0x00000000, 0x00400400, 0x00000000,
+    } },
+    { { /* 272 */
+    0x00000000, 0x40000000, 0x00000000, 0x00000800,
+    0xe2bc4f00, 0xc83e7fe7, 0x3b00007f, 0xc7c73e0e,
+    } },
+    { { /* 273 */
+    0x0f83193f, 0x1e31f37e, 0x38033687, 0x8041a008,
+    0x00000000, 0x00000000, 0x00000000, 0x7f9fef00,
+    } },
+    { { /* 274 */
+    0xb017c367, 0xb87e4406, 0x88313bf5, 0x00f41796,
+    0x1391a960, 0x42490080, 0x0024f2f3, 0x42c88701,
+    } },
+    { { /* 275 */
+    0x5048e3d3, 0x43052400, 0x4a4c0000, 0x10580227,
+    0x01102820, 0x0014a809, 0x00000000, 0x006822c0,
+    } },
+    { { /* 276 */
+    0x00000000, 0x00000000, 0x00000000, 0xffe00000,
+    0x31db87ff, 0x00000091, 0xc1204000, 0x00000180,
+    } },
+    { { /* 277 */
+    0x00012000, 0x00004000, 0x00300000, 0xb4f7e028,
+    0x03c4adf3, 0x00000120, 0x00000000, 0x00000000,
+    } },
+    { { /* 278 */
+    0x00000000, 0x00000000, 0x00000000, 0xfe7bf000,
+    0x45c39df4, 0x15c301b2, 0x810a0027, 0x0a00a842,
+    } },
+    { { /* 279 */
+    0x80088108, 0x18048008, 0x0012a3be, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 280 */
+    0x00000000, 0x00000000, 0x00000000, 0x90000000,
+    0x10006806, 0x01000810, 0xc0400008, 0x00000004,
+    } },
+    { { /* 281 */
+    0x80000000, 0xe1eea06f, 0x41a2c438, 0xc00b2018,
+    0xa00c0804, 0x09100040, 0x8112e210, 0x420086a5,
+    } },
+    { { /* 282 */
+    0x02896800, 0x0a809005, 0x00030010, 0x80000000,
+    0x8e001819, 0x00000001, 0x00000000, 0x00000000,
+    } },
+    { { /* 283 */
+    0x00000010, 0x00000000, 0x40000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000028,
+    } },
+    { { /* 284 */
+    0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
+    0x00000000, 0x00838080, 0x00800000, 0x00800000,
+    } },
+    { { /* 285 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x02002e80, 0x00000000,
+    } },
+    { { /* 286 */
+    0x33180000, 0x082400e0, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 287 */
+    0x00000228, 0x00000000, 0x00000000, 0x000003ff,
+    0x03cf0000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 288 */
+    0xc4200000, 0x00304e29, 0x00040000, 0x000000c3,
+    0x02200000, 0x80000020, 0x00000000, 0x00000000,
+    } },
+    { { /* 289 */
+    0x11111005, 0x10101010, 0xffff0000, 0x001fffff,
+    0x0038fffe, 0x300c0003, 0x0000c8c0, 0x0000003c,
+    } },
+    { { /* 290 */
+    0x00000060, 0x00000000, 0x00000005, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 291 */
+    0x6037ff0f, 0x000003fe, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 292 */
+    0xffffffe0, 0x000003ff, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 293 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000008, 0x00000000, 0x00000000,
+    } },
+    { { /* 294 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x7000c000, 0x00000002, 0x00264010, 0x00000000,
+    } },
+    { { /* 295 */
+    0xc373ff8b, 0x1b0f6840, 0xf34ce9ac, 0xc0080200,
+    0xca3e795c, 0x06487976, 0xf7f02fdf, 0xa8ff033a,
+    } },
+    { { /* 296 */
+    0x233fef37, 0xfd59b004, 0xfffff3ca, 0xfff9de9f,
+    0x7df7abff, 0x8eecc000, 0xffdbeebf, 0x45fad003,
+    } },
+    { { /* 297 */
+    0xdffefae1, 0x10abbfef, 0xfcaaffeb, 0x24fdef3f,
+    0x7f7678ad, 0xedfff00c, 0x2cfacff6, 0xeb6bf7f9,
+    } },
+    { { /* 298 */
+    0x95bf1ffd, 0xbfbf6677, 0xfeb43bfb, 0x11e27bae,
+    0x41bea681, 0x72c31435, 0x71917d70, 0x276b0003,
+    } },
+    { { /* 299 */
+    0x70cf57cb, 0x0def4732, 0xfc747eda, 0xbdb4fe06,
+    0x8bca3f9f, 0x58007e49, 0xebec228f, 0xddbb8a5c,
+    } },
+    { { /* 300 */
+    0xb6e7ef60, 0xf293a40f, 0x549e37bb, 0x9bafd04b,
+    0xf7d4c414, 0x0a1430b0, 0x88d02f08, 0x192fff7e,
+    } },
+    { { /* 301 */
+    0xfb07ffda, 0x7beb7ff1, 0x0010c5ef, 0xfdff99ff,
+    0x056779d7, 0xfdcbffe7, 0x4040c3ff, 0xbd8e6ff7,
+    } },
+    { { /* 302 */
+    0x0497dffa, 0x5bfff4c0, 0xd0e7ed7b, 0xf8e0047e,
+    0xb73eff9f, 0x882e7dfe, 0xbe7ffffd, 0xf6c483fe,
+    } },
+    { { /* 303 */
+    0xb8fdf357, 0xef7dd680, 0x47885767, 0xc3dfff7d,
+    0x37a9f0ff, 0x70fc7de0, 0xec9a3f6f, 0x86814cb3,
+    } },
+    { { /* 304 */
+    0xdd5c3f9e, 0x4819f70d, 0x0007fea3, 0x38ffaf56,
+    0xefb8980d, 0xb760403d, 0x9035d8ce, 0x3fff72bf,
+    } },
+    { { /* 305 */
+    0x7a117ff7, 0xabfff7bb, 0x6fbeff00, 0xfe72a93c,
+    0xf11bcfef, 0xfc0adb6b, 0xef7ec3e6, 0xf6109b9c,
+    } },
+    { { /* 306 */
+    0x16f4f048, 0x5182feb5, 0x15bbc7b1, 0xfbdf6e87,
+    0x63cde43f, 0x7e7ec1ff, 0x7d5ffdeb, 0xfcfe777b,
+    } },
+    { { /* 307 */
+    0xdbea960b, 0x53e86229, 0xfdef37df, 0xbd8136f5,
+    0xfcbddc18, 0xffffd2e4, 0xffe03fd7, 0xaff87f6f,
+    } },
+    { { /* 308 */
+    0x6ed99bae, 0xf115f5fb, 0xbdfb79a9, 0xadaf5a3c,
+    0x1facdbba, 0x837971fc, 0xc35f7cf7, 0x0567dfff,
+    } },
+    { { /* 309 */
+    0x8467ff9a, 0xdf8b1534, 0x3373f9f3, 0x5e1af7bd,
+    0xa03fbf40, 0x01ebffff, 0xcfdddfc0, 0xabd37500,
+    } },
+    { { /* 310 */
+    0xeed6f8c3, 0xb7ff43fd, 0x42275eaf, 0xf6869bac,
+    0xf6bc27d7, 0x35b7f787, 0xe176aacd, 0xe29f49e7,
+    } },
+    { { /* 311 */
+    0xaff2545c, 0x61d82b3f, 0xbbb8fc3b, 0x7b7dffcf,
+    0x1ce0bf95, 0x43ff7dfd, 0xfffe5ff6, 0xc4ced3ef,
+    } },
+    { { /* 312 */
+    0xadbc8db6, 0x11eb63dc, 0x23d0df59, 0xf3dbbeb4,
+    0xdbc71fe7, 0xfae4ff63, 0x63f7b22b, 0xadbaed3b,
+    } },
+    { { /* 313 */
+    0x7efffe01, 0x02bcfff7, 0xef3d32ff, 0x8005fffc,
+    0xbcf577fb, 0xfff7010d, 0xbf3afffb, 0xdfff0057,
+    } },
+    { { /* 314 */
+    0xbd7def7b, 0xc8d4db88, 0xed7cfff3, 0x56ff5dee,
+    0xac5f7e0d, 0xd57fff96, 0xc1403fee, 0xffe76ff9,
+    } },
+    { { /* 315 */
+    0x8e77779b, 0xe45d6ebf, 0x5f1f6fcf, 0xfedfe07f,
+    0x01fed7db, 0xfb7bff00, 0x1fdfffd4, 0xfffff800,
+    } },
+    { { /* 316 */
+    0x007bfb8f, 0x7f5cbf00, 0x07f3ffff, 0x3de7eba0,
+    0xfbd7f7bf, 0x6003ffbf, 0xbfedfffd, 0x027fefbb,
+    } },
+    { { /* 317 */
+    0xddfdfe40, 0xe2f9fdff, 0xfb1f680b, 0xaffdfbe3,
+    0xf7ed9fa4, 0xf80f7a7d, 0x0fd5eebe, 0xfd9fbb5d,
+    } },
+    { { /* 318 */
+    0x3bf9f2db, 0xebccfe7f, 0x73fa876a, 0x9ffc95fc,
+    0xfaf7109f, 0xbbcdddb7, 0xeccdf87e, 0x3c3ff366,
+    } },
+    { { /* 319 */
+    0xb03ffffd, 0x067ee9f7, 0xfe0696ae, 0x5fd7d576,
+    0xa3f33fd1, 0x6fb7cf07, 0x7f449fd1, 0xd3dd7b59,
+    } },
+    { { /* 320 */
+    0xa9bdaf3b, 0xff3a7dcf, 0xf6ebfbe0, 0xffffb401,
+    0xb7bf7afa, 0x0ffdc000, 0xff1fff7f, 0x95fffefc,
+    } },
+    { { /* 321 */
+    0xb5dc0000, 0x3f3eef63, 0x001bfb7f, 0xfbf6e800,
+    0xb8df9eef, 0x003fff9f, 0xf5ff7bd0, 0x3fffdfdb,
+    } },
+    { { /* 322 */
+    0x00bffdf0, 0xbbbd8420, 0xffdedf37, 0x0ff3ff6d,
+    0x5efb604c, 0xfafbfffb, 0x0219fe5e, 0xf9de79f4,
+    } },
+    { { /* 323 */
+    0xebfaa7f7, 0xff3401eb, 0xef73ebd3, 0xc040afd7,
+    0xdcff72bb, 0x2fd8f17f, 0xfe0bb8ec, 0x1f0bdda3,
+    } },
+    { { /* 324 */
+    0x47cf8f1d, 0xffdeb12b, 0xda737fee, 0xcbc424ff,
+    0xcbf2f75d, 0xb4edecfd, 0x4dddbff9, 0xfb8d99dd,
+    } },
+    { { /* 325 */
+    0xaf7bbb7f, 0xc959ddfb, 0xfab5fc4f, 0x6d5fafe3,
+    0x3f7dffff, 0xffdb7800, 0x7effb6ff, 0x022ffbaf,
+    } },
+    { { /* 326 */
+    0xefc7ff9b, 0xffffffa5, 0xc7000007, 0xfff1f7ff,
+    0x01bf7ffd, 0xfdbcdc00, 0xffffbff5, 0x3effff7f,
+    } },
+    { { /* 327 */
+    0xbe000029, 0xff7ff9ff, 0xfd7e6efb, 0x039ecbff,
+    0xfbdde300, 0xf6dfccff, 0x117fffff, 0xfbf6f800,
+    } },
+    { { /* 328 */
+    0xd73ce7ef, 0xdfeffeef, 0xedbfc00b, 0xfdcdfedf,
+    0x40fd7bf5, 0xb75fffff, 0xf930ffdf, 0xdc97fbdf,
+    } },
+    { { /* 329 */
+    0xbff2fef3, 0xdfbf8fdf, 0xede6177f, 0x35530f7f,
+    0x877e447c, 0x45bbfa12, 0x779eede0, 0xbfd98017,
+    } },
+    { { /* 330 */
+    0xde897e55, 0x0447c16f, 0xf75d7ade, 0x290557ff,
+    0xfe9586f7, 0xf32f97b3, 0x9f75cfff, 0xfb1771f7,
+    } },
+    { { /* 331 */
+    0xee1934ee, 0xef6137cc, 0xef4c9fd6, 0xfbddd68f,
+    0x6def7b73, 0xa431d7fe, 0x97d75e7f, 0xffd80f5b,
+    } },
+    { { /* 332 */
+    0x7bce9d83, 0xdcff22ec, 0xef87763d, 0xfdeddfe7,
+    0xa0fc4fff, 0xdbfc3b77, 0x7fdc3ded, 0xf5706fa9,
+    } },
+    { { /* 333 */
+    0x2c403ffb, 0x847fff7f, 0xdeb7ec57, 0xf22fe69c,
+    0xd5b50feb, 0xede7afeb, 0xfff08c2f, 0xe8f0537f,
+    } },
+    { { /* 334 */
+    0xb5ffb99d, 0xe78fff66, 0xbe10d981, 0xe3c19c7c,
+    0x27339cd1, 0xff6d0cbc, 0xefb7fcb7, 0xffffa0df,
+    } },
+    { { /* 335 */
+    0xfe7bbf0b, 0x353fa3ff, 0x97cd13cc, 0xfb277637,
+    0x7e6ccfd6, 0xed31ec50, 0xfc1c677c, 0x5fbff6fa,
+    } },
+    { { /* 336 */
+    0xae2f0fba, 0x7ffea3ad, 0xde74fcf0, 0xf200ffef,
+    0xfea2fbbf, 0xbcff3daf, 0x5fb9f694, 0x3f8ff3ad,
+    } },
+    { { /* 337 */
+    0xa01ff26c, 0x01bfffef, 0x70057728, 0xda03ff35,
+    0xc7fad2fb, 0x5c1d3fbf, 0xec33ff3a, 0xfe9cb7af,
+    } },
+    { { /* 338 */
+    0x7a9f5236, 0xe722bffa, 0xfcff9ff7, 0xb61d2fbb,
+    0x1dfded06, 0xefdf7dd7, 0xf166eb23, 0x0dc07ed9,
+    } },
+    { { /* 339 */
+    0xdfbf3d3d, 0xba83c945, 0x9dd07dd1, 0xcf737b87,
+    0xc3f59ff3, 0xc5fedf0d, 0x83020cb3, 0xaec0e879,
+    } },
+    { { /* 340 */
+    0x6f0fc773, 0x093ffd7d, 0x0157fff1, 0x01ff62fb,
+    0x3bf3fdb4, 0x43b2b013, 0xff305ed3, 0xeb9f0fff,
+    } },
+    { { /* 341 */
+    0xf203feef, 0xfb893fef, 0x9e9937a9, 0xa72cdef9,
+    0xc1f63733, 0xfe3e81ae, 0xf2f75d20, 0x69d7d585,
+    } },
+    { { /* 342 */
+    0xffffffff, 0xff6fdb07, 0xd97fc4ff, 0xbe0fefce,
+    0xf05ef17b, 0xffb7f6cf, 0xef845ef7, 0x0edfd7cb,
+    } },
+    { { /* 343 */
+    0xfcffff08, 0xffffee3f, 0xd7ff13ff, 0x7ffdaf0f,
+    0x1ffabdc7, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 344 */
+    0x00000000, 0xe7400000, 0xf933bd38, 0xfeed7feb,
+    0x7c767fe8, 0xffefb3f7, 0xd8b7feaf, 0xfbbfff6f,
+    } },
+    { { /* 345 */
+    0xdbf7f8fb, 0xe2f91752, 0x754785c8, 0xe3ef9090,
+    0x3f6d9ef4, 0x0536ee2e, 0x7ff3f7bc, 0x7f3fa07b,
+    } },
+    { { /* 346 */
+    0xeb600567, 0x6601babe, 0x583ffcd8, 0x87dfcaf7,
+    0xffa0bfcd, 0xfebf5bcd, 0xefa7b6fd, 0xdf9c77ef,
+    } },
+    { { /* 347 */
+    0xf8773fb7, 0xb7fc9d27, 0xdfefcab5, 0xf1b6fb5a,
+    0xef1fec39, 0x7ffbfbbf, 0xdafe000d, 0x4e7fbdfb,
+    } },
+    { { /* 348 */
+    0x5ac033ff, 0x9ffebff5, 0x005fffbf, 0xfdf80000,
+    0x6ffdffca, 0xa001cffd, 0xfbf2dfff, 0xff7fdfbf,
+    } },
+    { { /* 349 */
+    0x080ffeda, 0xbfffba08, 0xeed77afd, 0x67f9fbeb,
+    0xff93e044, 0x9f57df97, 0x08dffef7, 0xfedfdf80,
+    } },
+    { { /* 350 */
+    0xf7feffc5, 0x6803fffb, 0x6bfa67fb, 0x5fe27fff,
+    0xff73ffff, 0xe7fb87df, 0xf7a7ebfd, 0xefc7bf7e,
+    } },
+    { { /* 351 */
+    0xdf821ef3, 0xdf7e76ff, 0xda7d79c9, 0x1e9befbe,
+    0x77fb7ce0, 0xfffb87be, 0xffdb1bff, 0x4fe03f5c,
+    } },
+    { { /* 352 */
+    0x5f0e7fff, 0xddbf77ff, 0xfffff04f, 0x0ff8ffff,
+    0xfddfa3be, 0xfffdfc1c, 0xfb9e1f7d, 0xdedcbdff,
+    } },
+    { { /* 353 */
+    0xbafb3f6f, 0xfbefdf7f, 0x2eec7d1b, 0xf2f7af8e,
+    0xcfee7b0f, 0x77c61d96, 0xfff5fe07, 0x7fdfd982,
+    } },
+    { { /* 354 */
+    0xc7ff5ee6, 0x79effeee, 0xffcf9a56, 0xde5efe5f,
+    0xf9e8896e, 0xe6c4f45e, 0xbe7c0001, 0xdddf3b7f,
+    } },
+    { { /* 355 */
+    0xe9efd59d, 0xde5334ac, 0x4bf7f573, 0x9eff7b4f,
+    0x476eb8fe, 0xff450dfb, 0xfbfeabfd, 0xddffe9d7,
+    } },
+    { { /* 356 */
+    0x7fffedf7, 0x7eebddfd, 0xb7ffcfe7, 0xef91bde9,
+    0xd77c5d75, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 357 */
+    0x00000000, 0xfa800000, 0xb4f1ffee, 0x2fefbf76,
+    0x77bfb677, 0xfffd9fbf, 0xf6ae95bf, 0x7f3b75ff,
+    } },
+    { { /* 358 */
+    0x0af9a7f5, 0x00000000, 0x00000000, 0x2bddfbd0,
+    0x9a7ff633, 0xd6fcfdab, 0xbfebf9e6, 0xf41fdfdf,
+    } },
+    { { /* 359 */
+    0xffffa6fd, 0xf37b4aff, 0xfef97fb7, 0x1d5cb6ff,
+    0xe5ff7ff6, 0x24041f7b, 0xf99ebe05, 0xdff2dbe3,
+    } },
+    { { /* 360 */
+    0xfdff6fef, 0xcbfcd679, 0xefffebfd, 0x0000001f,
+    0x98000000, 0x8017e148, 0x00fe6a74, 0xfdf16d7f,
+    } },
+    { { /* 361 */
+    0xfef3b87f, 0xf176e01f, 0x7b3fee96, 0xfffdeb8d,
+    0xcbb3adff, 0xe17f84ef, 0xbff04daa, 0xfe3fbf3f,
+    } },
+    { { /* 362 */
+    0xffd7ebff, 0xcf7fffdf, 0x85edfffb, 0x07bcd73f,
+    0xfe0faeff, 0x76bffdaf, 0x37bbfaef, 0xa3ba7fdc,
+    } },
+    { { /* 363 */
+    0x56f7b6ff, 0xe7df60f8, 0x4cdfff61, 0xff45b0fb,
+    0x3ffa7ded, 0x1afc1fff, 0xe3afffff, 0xdf83c7d3,
+    } },
+    { { /* 364 */
+    0xef7dfb57, 0x1378efff, 0x5ff7fec0, 0x5ee334bb,
+    0xeff6f70d, 0x00bfd7fe, 0xf7f7f59d, 0xffe051de,
+    } },
+    { { /* 365 */
+    0x037ffec9, 0xbfef5f01, 0x60a79ff1, 0xf1ffef1d,
+    0x0000000f, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 366 */
+    0x00000000, 0x00000000, 0x00000000, 0x3c800000,
+    0xd91ffb4d, 0xfee37b3a, 0xdc7f3fe9, 0x0000003f,
+    } },
+    { { /* 367 */
+    0x50000000, 0xbe07f51f, 0xf91bfc1d, 0x71ffbc1e,
+    0x5bbe6ff9, 0x9b1b5796, 0xfffc7fff, 0xafe7872e,
+    } },
+    { { /* 368 */
+    0xf34febf5, 0xe725dffd, 0x5d440bdc, 0xfddd5747,
+    0x7790ed3f, 0x8ac87d7f, 0xf3f9fafa, 0xef4b202a,
+    } },
+    { { /* 369 */
+    0x79cff5ff, 0x0ba5abd3, 0xfb8ff77a, 0x001f8ebd,
+    0x00000000, 0xfd4ef300, 0x88001a57, 0x7654aeac,
+    } },
+    { { /* 370 */
+    0xcdff17ad, 0xf42fffb2, 0xdbff5baa, 0x00000002,
+    0x73c00000, 0x2e3ff9ea, 0xbbfffa8e, 0xffd376bc,
+    } },
+    { { /* 371 */
+    0x7e72eefe, 0xe7f77ebd, 0xcefdf77f, 0x00000ff5,
+    0x00000000, 0xdb9ba900, 0x917fa4c7, 0x7ecef8ca,
+    } },
+    { { /* 372 */
+    0xc7e77d7a, 0xdcaecbbd, 0x8f76fd7e, 0x7cf391d3,
+    0x4c2f01e5, 0xa360ed77, 0x5ef807db, 0x21811df7,
+    } },
+    { { /* 373 */
+    0x309c6be0, 0xfade3b3a, 0xc3f57f53, 0x07ba61cd,
+    0x00000000, 0x00000000, 0x00000000, 0xbefe26e0,
+    } },
+    { { /* 374 */
+    0xebb503f9, 0xe9cbe36d, 0xbfde9c2f, 0xabbf9f83,
+    0xffd51ff7, 0xdffeb7df, 0xffeffdae, 0xeffdfb7e,
+    } },
+    { { /* 375 */
+    0x6ebfaaff, 0x00000000, 0x00000000, 0xb6200000,
+    0xbe9e7fcd, 0x58f162b3, 0xfd7bf10d, 0xbefde9f1,
+    } },
+    { { /* 376 */
+    0x5f6dc6c3, 0x69ffff3d, 0xfbf4ffcf, 0x4ff7dcfb,
+    0x11372000, 0x00000015, 0x00000000, 0x00000000,
+    } },
+    { { /* 377 */
+    0x00003000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 378 */
+    0x00000000, 0xfffb0000, 0xfef7fe1f, 0x00000f7f,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 379 */
+    0xffffff7a, 0x97ffffff, 0x7ffffffe, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x0000002b,
+    } },
+    { { /* 380 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0x09f37bd1, 0xb4d86a96, 0x34d86a96,
+    } },
+    { { /* 381 */
+    0x0f03f0fc, 0x66000000, 0xc333019e, 0x1803c00c,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 382 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x2b000080, 0x00000000,
+    } },
+    { { /* 383 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0x08e37ad1, 0x00000000, 0x00000000,
+    } },
+    { { /* 384 */
+    0xffff41f2, 0xffffffff, 0x41f2ffff, 0x00000000,
+    0x00030000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 385 */
+    0x77180000, 0x06010047, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 386 */
+    0x00400000, 0x00000004, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 387 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
+    } },
+    { { /* 388 */
+    0x00000000, 0x00000004, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 389 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0x28ff7ff9, 0x00040000, 0x80000000,
+    } },
+    { { /* 390 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0xffffd760, 0xfffffffb, 0x00007fff, 0x00000000,
+    } },
+    { { /* 391 */
+    0x77380000, 0x06010047, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 392 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0xffffffff, 0x9ffeffff, 0x9ffeffff,
+    } },
+    { { /* 393 */
+    0xc0000000, 0x00030000, 0xc0000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 394 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0xffffffef, 0xfe000400, 0x98000000,
+    } },
+    { { /* 395 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0xfbff0000, 0xffff000f, 0x001f07ff,
+    } },
+    { { /* 396 */
+    0x7718c000, 0x06010047, 0x00000000, 0x00000000,
+    0x00000000, 0x00000400, 0x00000000, 0x00000000,
+    } },
+    { { /* 397 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0x7bfffffd, 0x00800001, 0x9a90cf85,
+    } },
+    { { /* 398 */
+    0x88001000, 0x07fffffe, 0x0007ffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 399 */
+    0x7718f000, 0x06010047, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 400 */
+    0x00000000, 0xffffffff, 0xffffffff, 0x7fffffff,
+    0x00000000, 0x7bff7aff, 0x91e80270, 0x10e80270,
+    } },
+    { { /* 401 */
+    0x03cc30f3, 0x18c0cc0c, 0x0cc0307e, 0x7e0c0c03,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 402 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x02000000, 0x00000000,
+    } },
+};
+
+#define L(n) ((FcCharLeaf *) &leaves[n])
+
+static const FcCharLeaf *leaves_Thai_874[3] = {
+    L(  0), L(  1), L(  2),
+};
+
+static const FcChar16 numbers_Thai_874[3] = {
+    0x0000, 0x000e, 0x0020,
+};
+
+static const FcCharLeaf *leaves_Korean_949[85] = {
+    L(  3), L(  4), L(  5), L(  6), L(  7), L(  8), L(  9), L( 10),
+    L( 11), L( 12), L( 13), L( 14), L( 15), L( 16), L( 17), L( 18),
+    L( 19), L( 20), L( 21), L( 22), L( 23), L( 24), L( 25), L( 26),
+    L( 27), L( 28), L( 29), L( 30), L( 31), L( 32), L( 33), L( 34),
+    L( 35), L( 36), L( 37), L( 38), L( 39), L( 40), L( 41), L( 42),
+    L( 43), L( 44), L( 45), L( 46), L( 47), L( 48), L( 49), L( 50),
+    L( 51), L( 52), L( 53), L( 54), L( 55), L( 56), L( 57), L( 58),
+    L( 59), L( 60), L( 61), L( 62), L( 63), L( 64), L( 65), L( 66),
+    L( 67), L( 68), L( 69), L( 70), L( 71), L( 72), L( 73), L( 74),
+    L( 75), L( 76), L( 77), L( 78), L( 79), L( 80), L( 81), L( 82),
+    L( 83), L( 84), L( 85), L( 86), L( 87),
+};
+
+static const FcChar16 numbers_Korean_949[85] = {
+    0x0000, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+    0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 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, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
+    0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c,
+    0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
+    0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
+    0x009d, 0x009e, 0x009f, 0x00f9, 0x00fa,
+};
+
+static const FcCharLeaf *leaves_Japanese_932[98] = {
+    L( 88), L( 89), L( 90), L( 91), L( 92), L( 93), L( 94), L( 95),
+    L( 96), L( 97), L( 98), L( 99), L(100), L(101), L(102), L(103),
+    L(104), L(105), L(106), L(107), L(108), L(109), L(110), L(111),
+    L(112), L(113), L(114), L(115), L(116), L(117), L(118), L(119),
+    L(120), L(121), L(122), L(123), L(124), L(125), L(126), L(127),
+    L(128), L(129), L(130), L(131), L(132), L(133), L(134), L(135),
+    L(136), L(137), L(138), L(139), L(140), L(141), L(142), L(143),
+    L(144), L(145), L(146), L(147), L(148), L(149), L(150), L(151),
+    L(152), L(153), L(154), L(155), L(156), L(157), L(158), L(159),
+    L(160), L(161), L(162), L(163), L(164), L(165), L(166), L(167),
+    L(168), L(169), L(170), L(171), L(172), L(173), L(174), L(175),
+    L(176), L(177), L(178), L(179), L(180), L(181), L(182), L(183),
+    L(184), L(185),
+};
+
+static const FcChar16 numbers_Japanese_932[98] = {
+    0x0000, 0x0003, 0x0004, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024,
+    0x0025, 0x0026, 0x0030, 0x0032, 0x0033, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+    0x0059, 0x005a, 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, 0x007f, 0x0080,
+    0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
+    0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090,
+    0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098,
+    0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00f9,
+    0x00fa, 0x00ff,
+};
+
+static const FcCharLeaf *leaves_SimplifiedChinese_936[98] = {
+    L(186), L(187), L(188), L(189), L(190), L(191), L(192), L(193),
+    L(194), L(195), L(196), L(197), L(198), L(199), L(200), L(201),
+    L(202), L(203), L(204), L(205), L(206), L(207), L(208), L(209),
+    L(210), L(211), L(212), L(213), L(214), L(215), L(216), L(217),
+    L(218), L(219), L(220), L(221), L(222), L(223), L(224), L(225),
+    L(226), L(227), L(228), L(229), L(230), L(231), L(232), L(233),
+    L(234), L(235), L(236), L(237), L(238), L(239), L(240), L(241),
+    L(242), L(243), L(244), L(245), L(246), L(247), L(248), L(249),
+    L(250), L(251), L(252), L(253), L(254), L(255), L(256), L(257),
+    L(258), L(259), L(260), L(261), L(262), L(263), L(264), L(265),
+    L(266), L(267), L(268), L(269), L(270), L(271), L(272), L(273),
+    L(274), L(275), L(276), L(277), L(278), L(279), L(280), L(281),
+    L(282), L(283),
+};
+
+static const FcChar16 numbers_SimplifiedChinese_936[98] = {
+    0x0001, 0x0002, 0x0004, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024,
+    0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x0030, 0x0031, 0x0049,
+    0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055,
+    0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 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, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085,
+    0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d,
+    0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
+    0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009e,
+    0x009f, 0x00ff,
+};
+
+static const FcCharLeaf *leaves_TraditionalChinese_950[97] = {
+    L(284), L(285), L( 89), L(286), L(287), L(288), L(289), L(290),
+    L(291), L(292), L(293), L(294), L(295), L(296), L(297), L(298),
+    L(299), L(300), L(301), L(302), L(303), L(304), L(305), L(306),
+    L(307), L(308), L(309), L(310), L(311), L(312), L(313), L(314),
+    L(315), L(316), L(317), L(318), L(319), L(320), L(321), L(322),
+    L(323), L(324), L(325), L(326), L(327), L(328), L(329), L(330),
+    L(331), L(332), L(333), L(334), L(335), L(336), L(337), L(338),
+    L(339), L(340), L(341), L(342), L(343), L(344), L(345), L(346),
+    L(347), L(348), L(349), L(350), L(351), L(352), L(353), L(354),
+    L(355), L(356), L(357), L(358), L(359), L(360), L(361), L(362),
+    L(363), L(364), L(365), L(366), L(367), L(368), L(369), L(370),
+    L(371), L(372), L(373), L(374), L(375), L(376), L(377), L(378),
+    L(379),
+};
+
+static const FcChar16 numbers_TraditionalChinese_950[97] = {
+    0x0000, 0x0002, 0x0003, 0x0020, 0x0021, 0x0022, 0x0025, 0x0026,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x004e, 0x004f, 0x0050, 0x0051,
+    0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+    0x005a, 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, 0x007f, 0x0080, 0x0081,
+    0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
+    0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091,
+    0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099,
+    0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00fa, 0x00fe,
+    0x00ff,
+};
+
+static const FcCharLeaf *leaves_Latin2_1250[3] = {
+    L(380), L(381), L(382),
+};
+
+static const FcChar16 numbers_Latin2_1250[3] = {
+    0x0000, 0x0001, 0x0002,
+};
+
+static const FcCharLeaf *leaves_Cyrillic_1251[4] = {
+    L(383), L(384), L(385), L(386),
+};
+
+static const FcChar16 numbers_Cyrillic_1251[4] = {
+    0x0000, 0x0004, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Latin1_1252[3] = {
+    L(387), L(385), L(388),
+};
+
+static const FcChar16 numbers_Latin1_1252[3] = {
+    0x0000, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Greek_1253[4] = {
+    L(389), L(390), L(391), L(388),
+};
+
+static const FcChar16 numbers_Greek_1253[4] = {
+    0x0000, 0x0003, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Turkish_1254[4] = {
+    L(392), L(393), L(385), L(388),
+};
+
+static const FcChar16 numbers_Turkish_1254[4] = {
+    0x0000, 0x0001, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Hebrew_1255[4] = {
+    L(394), L(395), L(396), L(388),
+};
+
+static const FcChar16 numbers_Hebrew_1255[4] = {
+    0x0000, 0x0005, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Arabic_1256[4] = {
+    L(397), L(398), L(399), L(388),
+};
+
+static const FcChar16 numbers_Arabic_1256[4] = {
+    0x0000, 0x0006, 0x0020, 0x0021,
+};
+
+static const FcCharLeaf *leaves_Windows_Baltic_1257[5] = {
+    L(400), L(401), L(402), L(385), L(388),
+};
+
+static const FcChar16 numbers_Windows_Baltic_1257[5] = {
+    0x0000, 0x0001, 0x0002, 0x0020, 0x0021,
+};
+
+#undef L
+
+static const FcCharSet  fcCharSet_Thai_874 = {
+    1, FcTrue, 3, (FcCharLeaf **) leaves_Thai_874, (FcChar16 *) numbers_Thai_874
+};
+
+#define fcCharSet_Thai_874_size 193
+
+static const FcCharSet  fcCharSet_Korean_949 = {
+    1, FcTrue, 85, (FcCharLeaf **) leaves_Korean_949, (FcChar16 *) numbers_Korean_949
+};
+
+#define fcCharSet_Korean_949_size 4984
+
+static const FcCharSet  fcCharSet_Japanese_932 = {
+    1, FcTrue, 98, (FcCharLeaf **) leaves_Japanese_932, (FcChar16 *) numbers_Japanese_932
+};
+
+#define fcCharSet_Japanese_932_size 7485
+
+static const FcCharSet  fcCharSet_SimplifiedChinese_936 = {
+    1, FcTrue, 98, (FcCharLeaf **) leaves_SimplifiedChinese_936, (FcChar16 *) numbers_SimplifiedChinese_936
+};
+
+#define fcCharSet_SimplifiedChinese_936_size 6494
+
+static const FcCharSet  fcCharSet_TraditionalChinese_950 = {
+    1, FcTrue, 97, (FcCharLeaf **) leaves_TraditionalChinese_950, (FcChar16 *) numbers_TraditionalChinese_950
+};
+
+#define fcCharSet_TraditionalChinese_950_size 13588
+
+static const FcCharSet  fcCharSet_Latin2_1250 = {
+    1, FcTrue, 3, (FcCharLeaf **) leaves_Latin2_1250, (FcChar16 *) numbers_Latin2_1250
+};
+
+#define fcCharSet_Latin2_1250_size 191
+
+static const FcCharSet  fcCharSet_Cyrillic_1251 = {
+    1, FcTrue, 4, (FcCharLeaf **) leaves_Cyrillic_1251, (FcChar16 *) numbers_Cyrillic_1251
+};
+
+#define fcCharSet_Cyrillic_1251_size 207
+
+static const FcCharSet  fcCharSet_Latin1_1252 = {
+    1, FcTrue, 3, (FcCharLeaf **) leaves_Latin1_1252, (FcChar16 *) numbers_Latin1_1252
+};
+
+#define fcCharSet_Latin1_1252_size 207
+
+static const FcCharSet  fcCharSet_Greek_1253 = {
+    1, FcTrue, 4, (FcCharLeaf **) leaves_Greek_1253, (FcChar16 *) numbers_Greek_1253
+};
+
+#define fcCharSet_Greek_1253_size 207
+
+static const FcCharSet  fcCharSet_Turkish_1254 = {
+    1, FcTrue, 4, (FcCharLeaf **) leaves_Turkish_1254, (FcChar16 *) numbers_Turkish_1254
+};
+
+#define fcCharSet_Turkish_1254_size 207
+
+static const FcCharSet  fcCharSet_Hebrew_1255 = {
+    1, FcTrue, 4, (FcCharLeaf **) leaves_Hebrew_1255, (FcChar16 *) numbers_Hebrew_1255
+};
+
+#define fcCharSet_Hebrew_1255_size 207
+
+static const FcCharSet  fcCharSet_Arabic_1256 = {
+    1, FcTrue, 4, (FcCharLeaf **) leaves_Arabic_1256, (FcChar16 *) numbers_Arabic_1256
+};
+
+#define fcCharSet_Arabic_1256_size 209
+
+static const FcCharSet  fcCharSet_Windows_Baltic_1257 = {
+    1, FcTrue, 5, (FcCharLeaf **) leaves_Windows_Baltic_1257, (FcChar16 *) numbers_Windows_Baltic_1257
+};
+
+#define fcCharSet_Windows_Baltic_1257_size 207
+
index e1795fbef3136b0038059b7aad4fb88f0f66ff64..ace6d8c1200577b90f5f3775ce2193e6345dddee 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcmatch.c,v 1.13 2002/06/19 20:08:22 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcmatch.c,v 1.14 2002/06/19 21:32:18 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -97,50 +97,56 @@ FcCompareSize (char *object, FcValue value1, FcValue value2)
     return v;
 }
 
+typedef struct _FcMatcher {
+    char           *object;
+    double         (*compare) (char *object, FcValue value1, FcValue value2);
+    int                    strong, weak;
+} FcMatcher;
+
 /*
  * Order is significant, it defines the precedence of
  * each value, earlier values are more significant than
  * later values
  */
 static FcMatcher _FcMatchers [] = {
-    { FC_FOUNDRY,      FcCompareString, },
-#define MATCH_FOUNDRY  0
+    { FC_FOUNDRY,      FcCompareString,        0, 0 },
+#define MATCH_FOUNDRY      0
     
-    { FC_CHARSET,      FcCompareCharSet },
-#define MATCH_CHARSET  1
+    { FC_CHARSET,      FcCompareCharSet,       1, 1 },
+#define MATCH_CHARSET      1
     
-    { FC_LANG,         FcCompareString },
-#define MATCH_LANG     2
+    { FC_FAMILY,       FcCompareString,        2, 4 },
+#define MATCH_FAMILY       2
     
-    { FC_FAMILY,       FcCompareString, },
-#define MATCH_FAMILY   3
+    { FC_LANG,         FcCompareString,        3, 3 },
+#define MATCH_LANG         3
     
-    { FC_SPACING,      FcCompareInteger, },
-#define MATCH_SPACING  4
+    { FC_SPACING,      FcCompareInteger,       5, 5 },
+#define MATCH_SPACING      4
     
-    { FC_PIXEL_SIZE,   FcCompareSize, },
-#define MATCH_PIXEL_SIZE       5
+    { FC_PIXEL_SIZE,   FcCompareSize,          6, 6 },
+#define MATCH_PIXEL_SIZE    5
     
-    { FC_STYLE,                FcCompareString, },
-#define MATCH_STYLE    6
+    { FC_STYLE,                FcCompareString,        7, 7 },
+#define MATCH_STYLE        6
     
-    { FC_SLANT,                FcCompareInteger, },
-#define MATCH_SLANT    7
+    { FC_SLANT,                FcCompareInteger,       8, 8 },
+#define MATCH_SLANT        7
     
-    { FC_WEIGHT,       FcCompareInteger, },
-#define MATCH_WEIGHT   8
+    { FC_WEIGHT,       FcCompareInteger,       9, 9 },
+#define MATCH_WEIGHT       8
     
-    { FC_ANTIALIAS,    FcCompareBool, },
-#define MATCH_ANTIALIAS        9
+    { FC_ANTIALIAS,    FcCompareBool,          10, 10 },
+#define MATCH_ANTIALIAS            9
     
-    { FC_RASTERIZER,   FcCompareString, },
-#define MATCH_RASTERIZER       10
+    { FC_RASTERIZER,   FcCompareString,        11, 11 },
+#define MATCH_RASTERIZER    10
     
-    { FC_OUTLINE,      FcCompareBool, },
-#define MATCH_OUTLINE  11
+    { FC_OUTLINE,      FcCompareBool,          12, 12 },
+#define MATCH_OUTLINE      11
 };
 
-#define NUM_MATCHER (sizeof _FcMatchers / sizeof _FcMatchers[0])
+#define NUM_MATCH_VALUES    13
 
 static FcBool
 FcCompareValueList (const char  *object,
@@ -151,9 +157,9 @@ FcCompareValueList (const char  *object,
                    FcResult    *result)
 {
     FcValueList    *v1, *v2;
-    double         v, best;
-    int                    j;
+    double         v, best, bestStrong, bestWeak;
     int                    i;
+    int                    j;
     
     /*
      * Locate the possible matching entry by examining the
@@ -217,6 +223,8 @@ FcCompareValueList (const char  *object,
     }
 #endif
     best = 1e99;
+    bestStrong = 1e99;
+    bestWeak = 1e99;
     j = 0;
     for (v1 = v1orig; v1; v1 = v1->next)
     {
@@ -239,6 +247,16 @@ FcCompareValueList (const char  *object,
                    *bestValue = v2->value;
                best = v;
            }
+           if (v1->binding == FcValueBindingStrong)
+           {
+               if (v < bestStrong)
+                   bestStrong = v;
+           }
+           else
+           {
+               if (v < bestWeak)
+                   bestWeak = v;
+           }
        }
        j++;
     }
@@ -251,7 +269,17 @@ FcCompareValueList (const char  *object,
        printf ("\n");
     }
     if (value)
-       value[i] += best;
+    {
+       int weak    = _FcMatchers[i].weak;
+       int strong  = _FcMatchers[i].strong;
+       if (weak == strong)
+           value[strong] += best;
+       else
+       {
+           value[weak] += bestWeak;
+           value[strong] += bestStrong;
+       }
+    }
     return FcTrue;
 }
 
@@ -268,7 +296,7 @@ FcCompare (FcPattern        *pat,
 {
     int                    i, i1, i2;
     
-    for (i = 0; i < NUM_MATCHER; i++)
+    for (i = 0; i < NUM_MATCH_VALUES; i++)
        value[i] = 0.0;
     
     i1 = 0;
@@ -330,9 +358,9 @@ FcFontRenderPrepare (FcConfig           *config,
        if (pe)
        {
            int     j;
-           double  score[NUM_MATCHER];
+           double  score[NUM_MATCH_VALUES];
 
-           for (j = 0; j < NUM_MATCHER; j++)
+           for (j = 0; j < NUM_MATCH_VALUES; j++)
                score[j] = 0;
            if (!FcCompareValueList (pe->object, pe->values, 
                                     fe->values, &v, score, &result))
@@ -340,7 +368,7 @@ FcFontRenderPrepare (FcConfig           *config,
                FcPatternDestroy (new);
                return 0;
            }
-           for (j = 0; j < NUM_MATCHER; j++)
+           for (j = 0; j < NUM_MATCH_VALUES; j++)
                if (score[j] >= 100.0)
                {
                    FcValueList *pv;
@@ -372,14 +400,14 @@ FcFontSetMatch (FcConfig    *config,
                FcPattern   *p,
                FcResult    *result)
 {
-    double         score[NUM_MATCHER], bestscore[NUM_MATCHER];
+    double         score[NUM_MATCH_VALUES], bestscore[NUM_MATCH_VALUES];
     int                    f;
     FcFontSet      *s;
     FcPattern      *best;
     int                    i;
     int                    set;
 
-    for (i = 0; i < NUM_MATCHER; i++)
+    for (i = 0; i < NUM_MATCH_VALUES; i++)
        bestscore[i] = 0;
     best = 0;
     if (FcDebug () & FC_DBG_MATCH)
@@ -410,19 +438,19 @@ FcFontSetMatch (FcConfig    *config,
            if (FcDebug () & FC_DBG_MATCHV)
            {
                printf ("Score");
-               for (i = 0; i < NUM_MATCHER; i++)
+               for (i = 0; i < NUM_MATCH_VALUES; i++)
                {
                    printf (" %g", score[i]);
                }
                printf ("\n");
            }
-           for (i = 0; i < NUM_MATCHER; i++)
+           for (i = 0; i < NUM_MATCH_VALUES; i++)
            {
                if (best && bestscore[i] < score[i])
                    break;
                if (!best || score[i] < bestscore[i])
                {
-                   for (i = 0; i < NUM_MATCHER; i++)
+                   for (i = 0; i < NUM_MATCH_VALUES; i++)
                        bestscore[i] = score[i];
                    best = s->fonts[f];
                    break;
@@ -433,7 +461,7 @@ FcFontSetMatch (FcConfig    *config,
     if (FcDebug () & FC_DBG_MATCH)
     {
        printf ("Best score");
-       for (i = 0; i < NUM_MATCHER; i++)
+       for (i = 0; i < NUM_MATCH_VALUES; i++)
            printf (" %g", bestscore[i]);
        FcPatternPrint (best);
     }
@@ -469,7 +497,7 @@ FcFontMatch (FcConfig       *config,
 
 typedef struct _FcSortNode {
     FcPattern  *pattern;
-    double     score[NUM_MATCHER];
+    double     score[NUM_MATCH_VALUES];
 } FcSortNode;
 
 static int
@@ -482,7 +510,7 @@ FcSortCompare (const void *aa, const void *ab)
     double     ad = 0, bd = 0;
     int         i;
 
-    i = NUM_MATCHER;
+    i = NUM_MATCH_VALUES;
     while (i-- && (ad = *as++) == (bd = *bs++))
        ;
     return ad < bd ? -1 : ad > bd ? 1 : 0;
@@ -589,7 +617,7 @@ FcFontSetSort (FcConfig         *config,
            if (FcDebug () & FC_DBG_MATCHV)
            {
                printf ("Score");
-               for (i = 0; i < NUM_MATCHER; i++)
+               for (i = 0; i < NUM_MATCH_VALUES; i++)
                {
                    printf (" %g", new->score[i]);
                }
index f61cf59e2c2c8dba01040b895544b3ca23257071..e6c07580edf2769bcddf698b5181fa904a1e3ba8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcname.c,v 1.8 2002/06/19 20:08:22 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcname.c,v 1.9 2002/06/26 22:14:08 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -40,12 +40,17 @@ static const FcObjectType _FcBaseObjectTypes[] = {
     { FC_FOUNDRY,      FcTypeString, },
 /*    { FC_CORE,               FcTypeBool, }, */
     { FC_ANTIALIAS,    FcTypeBool, },
+    { FC_HINTING,      FcTypeBool, },
+    { FC_VERTICAL_LAYOUT,   FcTypeBool, },
+    { FC_AUTOHINT,     FcTypeBool, },
+    { FC_GLOBAL_ADVANCE,    FcTypeBool, },
 /*    { FC_XLFD,               FcTypeString, }, */
     { FC_FILE,         FcTypeString, },
     { FC_INDEX,                FcTypeInteger, },
     { FC_RASTERIZER,   FcTypeString, },
     { FC_OUTLINE,      FcTypeBool, },
     { FC_SCALABLE,     FcTypeBool, },
+    { FC_DPI,          FcTypeDouble },
     { FC_RGBA,         FcTypeInteger, },
     { FC_SCALE,                FcTypeDouble, },
 /*    { FC_RENDER,     FcTypeBool, },*/
index 3e19732a4e47b879543a6e3a27869f923d0afd23..bab44f4bb54f74da745c2e7241d6fb270abd3ed6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.7 2002/06/03 08:31:15 keithp Exp $
+ * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.9 2002/06/19 20:08:22 keithp Exp $
  *
  * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
  *
@@ -408,6 +408,7 @@ FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append)
        goto bail1;
 
     new->value = value;
+    new->binding = FcValueBindingStrong;
     new->next = 0;
     
     e = FcPatternInsertElt (p, object);