*** empty log message ***
authorhanda <handa>
Tue, 5 Dec 2006 12:45:12 +0000 (12:45 +0000)
committerhanda <handa>
Tue, 5 Dec 2006 12:45:12 +0000 (12:45 +0000)
.cvsignore
Makefile.am
data/dbformat.txt [deleted file]
images/.cvsignore [new file with mode: 0644]
images/ru-kbd.eps [new file with mode: 0644]
images/ru-kbd.png [new file with mode: 0644]
images/ru-phonetic.eps [new file with mode: 0644]
images/ru-phonetic.png [new file with mode: 0644]
utils/.cvsignore [new file with mode: 0644]
utils/dbdata.sh
utils/imdoc.c

index da167d8..730a058 100644 (file)
@@ -13,3 +13,4 @@ dev
 ja
 warning
 *.tar.gz
+data
index f82cc65..735afdc 100644 (file)
@@ -243,6 +243,7 @@ data/m17n-db.txt: @M17NDB@/m17n-db.in
                        utils/%_filter.rb m17n-lib.css
        rm -f `dirname $@`/*.html
        ${DOXYGEN} $<
+       cp images/icon-*.png `dirname $@`
        cd `dirname $@`; rm -f *_8c* *_8h* *_8txt* dirs.html dir_* files.html
        echo 'code { font-weight: bold }' >> `dirname $@`/doxygen.css
 
diff --git a/data/dbformat.txt b/data/dbformat.txt
deleted file mode 100644 (file)
index 230da94..0000000
+++ /dev/null
@@ -1,2499 +0,0 @@
-/* -*- coding: euc-jp; -*- */
-/***en @page m17nDBFormat Data format of the m17n database
-
-This section describes formats of these data supplied by the m17n
-database.
-
-<ul>
-<li> @ref mdbGeneral "General" -- General Format
-<li> @ref mdbCharsetList "CharsetList" -- List of character set definitions 
-<li> @ref mdbCodingList "CodingList" -- List of coding system definitions
-<li> @ref mdbDir "Dir" -- List of data in a database directory.
-<li> @ref mdbFLT "FLT" -- Font Layout Table
-<li> @ref mdbFontEncoding "FontEncoding" -- Font Encoding
-<li> @ref mdbFontSize "FontSize" -- Font Size
-<li> @ref mdbFontset "Fontset" -- Fontset
-<li> @ref mdbIM "IM" -- Input Method
-</ul>
-*/
-/***ja @page m17nDBFormat M17N ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¡¼¥¿¡¦¥Õ¥©¡¼¥Þ¥Ã¥È
-
-¤³¤³¤Ç¤Ï¡¢M17N ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÇÄ󶡤µ¤ì¤ë³Æ¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò²òÀ⤹
-¤ë¡£
-
-<ul>
-<li> @ref mdbGeneral "General" -- °ìÈÌŪ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È
-<li> @ref mdbCharsetList "CharsetList" -- Ê¸»ú¥»¥Ã¥ÈÄêµÁ¤Î¥ê¥¹¥È
-<li> @ref mdbCodingList "CodingList" -- ¥³¡¼¥É·ÏÄêµÁ¤Î¥ê¥¹¥È
-<li> @ref mdbDir "Dir" -- ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Ç¥£¥ì¥¯¥È¥êÃæ¤Î¥Ç¡¼¥¿¤Î¥ê¥¹¥È
-<li> @ref mdbFLT "FLT" -- ¥Õ¥©¥ó¥È¥ì¥¤¥¢¥¦¥È¥Æ¡¼¥Ö¥ë
-<li> @ref mdbFontEncoding "FontEncoding" -- ¥Õ¥©¥ó¥È¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
-<li> @ref mdbFontSize "FontSize" -- ¥Õ¥©¥ó¥È¥µ¥¤¥º
-<li> @ref mdbFontset "Fontset" -- ¥Õ¥©¥ó¥È¥»¥Ã¥È
-<li> @ref mdbIM "IM" -- ¥¤¥ó¥×¥Ã¥È¥á¥½¥Ã¥É
-</ul>
-*/
-/***ja
-
-@section mdbGeneral °ìÈÌŪ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È
-
-@subsection general-description ÀâÌÀ
-
-´Ø¿ô mdatabase_load () ¤Ï¡¢Âè°ì¥¿¥°¤¬ @c Mchartable ¤« @c Mcharset ¤Ç
-¤Ê¤¤¸Â¤ê¡¢¥¿¥°¤Ç»ØÄꤵ¤ì¤¿¥Ç¡¼¥¿¤ò¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î·Á¤ÇÊÖ¤¹¡£ÊÖ¤µ¤ì¤ë
-¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î¥­¡¼¤Ï<tt>Minteger</tt>, <tt>Msymbol</tt>,
-<tt>Mtext</tt>, <tt>Mplist</tt> ¤Ë¸Â¤ë¡£Ãͤη¿¤Ï¥­¡¼¤Ë¤è¤Ã¤ÆÛ£ËæÀ­¤Ê¤¯
-·èÄꤵ¤ì¤ë¡£¥­¡¼¤¬ <tt>Minteger</tt> ¤Ê¤é¤ÐÃͤÏÀ°¿ôÃͤǤ¢¤ê¡¢¥­¡¼¤¬ 
-<tt>Msymbol</tt> ¤Ê¤éÃͤϥ·¥ó¥Ü¥ë¡¢<tt>Mtext</tt> ¤Ê¤é¤Ð M-text¡¢
-<tt>Mplist</tt> ¤Ê¤é¤Ð¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Ç¤¢¤ë¡£
-
-¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤ò¼¨¤¹¤¿¤á¤Ë¤Ï¤µ¤Þ¤¶¤Þ¤Êɽ¸½·Á¼°¤¬²Äǽ¤Ç¤¢¤ë¡£¤¿¤È¤¨¤Ð
-<tt>(K1:V1, K2:V2, ..., Kn:Vn)</tt> ¤È¤¤¤¦·Á¤Ç¡¢ºÇ½é¤ÎK1 ¤È V1¡¢Æó¤ÄÌÜ
-¤Î¥­¡¼¤ÈÃͤ¬K2 ¤È V2 ¤È¤¤¤Ã¤¿¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤òɽ¸½¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£
-¤·¤«¤·¡¢m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÇÍѤ¤¤é¤ì¤ë¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î¥¿¥¤¥×¤Ï¤«¤Ê¤ê
-¸ÂÄꤵ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤â¤Ã¤Èñ½ã¤Êɽ¸½·Á¼°¤òÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-
-¤³¤ì°Ê¹ß¡¢¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î¼¨¤¹¤¿¤á¤Ë¤Ï S ¼°¤ËÎà»÷¤·¤¿É½¸½¤òÍѤ¤¤ë¡£
-(¼ÂºÝ m17n ¥é¥¤¥Ö¥é¥ê¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥í¡¼¥À¤Ï¤³¤Îɽ¸½¤Ç½ñ¤«
-¤ì¤¿¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òÆɤà¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£)
-
-¤³¤Îɽ¸½·Á¼°¤Ï 1 ¤Ê¤¤¤·¤½¤ì°Ê¾å¤Î <i>Í×ÁÇ (element)</i> ¤«¤é¤Ê¤ë¡£¸Ä¡¹
-¤ÎÍ×ÁǤϥץí¥Ñ¥Æ¥£¤¹¤Ê¤ï¤Á¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î°ì¤Ä¤ÎÍ×ÁǤòɽ¤¹¡£
-
-Í×ÁǴ֤Ϡ1 ¤Ê¤¤¤·¤½¤ì°Ê¾å¤Î <i> ¶õÇò (whitespace)</i> ¤¹¤Ê¤ï¤Á¥¹¥Ú¡¼¥¹
-(code 32)¡¢¥¿¥Ö (code 9)¡¢²þ¹Ô (code 10) ¤Î¤¤¤º¤ì¤«¤Ç¶èÀÚ¤é¤ì¤ë¡£¥»¥ß
-¥³¥í¥ó(<tt>;</tt>) ¤Ç»Ï¤Þ¤ë¹Ô¤Ï¥³¥á¥ó¥È¤Ç¤¢¤ë¡£
-
-³Æ¥×¥í¥Ñ¥Æ¥£¤Î¥­¡¼¤ÈÃͤϡ¢Í×ÁǤΥ¿¥¤¥×¤Ë´ð¤Å¤¤¤Æ°Ê²¼¤Î¤è¤¦¤Ë·èÄꤵ¤ì¤ë¡£
-
-<ul>
-
-<li> À°¿ô
-
-Àµµ¬É½¸½<tt>-?[0-9]+</tt> ¤Þ¤¿¤Ï<tt>0[xX][0-9A-Fa-f]+</tt> ¤Ë¹çÃפ¹¤ë
-Í×ÁǤϡ¢¥­¡¼¤¬<tt>Minteger</tt>¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ò¼¨¤¹¡£ºÇ½é¤ÎÀµµ¬É½¸½
-¤È¹çÃפ¹¤ë¤â¤Î¤Ï 10 ¿Ê¤ÎÀ°¿ô¡¢¸å¤ÎÀµµ¬É½¸½¤È¹çÃפ¹¤ë¤â¤Î¤Ï 16 ¿Ê¤ÎÀ°¿ô
-¤È²ò¼á¤·¡¢¤½¤Î²ò¼á¤Î·ë²Ì¤¬¥×¥í¥Ñ¥Æ¥£¤ÎÃͤǤ¢¤ë¡£
-
-¤¿¤È¤¨¤Ð¡¢Í×ÁÇ <tt>0xA0</tt> ¤Ï10 ¿Ê¤Ç 160 ¤òÃͤȤ¹¤ë¥×¥í¥Ñ¥Æ¥£¤Ç¤¢¤ë¡£
-
-<li> ¥·¥ó¥Ü¥ë
-
-Àµµ¬É½¸½<tt>[^-0-9(]([^\\()]|\\.)+</tt> ¤Ë¹çÃפ¹¤ëÍ×ÁǤϡ¢¥­¡¼¤¬<tt>
-Msymbol</tt>¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ò¼¨¤¹¡£Í×ÁÇÃæ¤Î <tt>\\t</tt>,
-<tt>\\n</tt>, <tt>\\r</tt>, <tt>\\e</tt> ¤Ï¤½¤ì¤¾¤ì¡¢¥¿¥Ö (code 9)¡¢²þ
-¹Ô (code 10)¡¢Éüµ¢(code 13)¡¢¥¨¥¹¥±¡¼¥× (code 27) ¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¡£¥Ð¥Ã
-¥¯¥¹¥é¥Ã¥·¥å¤Ë³¤¯Â¾¤Îʸ»ú¤Ï¤½¤ì¼«¿È¤È²ò¼á¤µ¤ì¤ë¡£¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢·ë
-²Ì¤È¤·¤ÆÆÀ¤é¤ì¤ëʸ»úÎó¤ò̾Á°¤È¤·¤Æ»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£
-
-¤¿¤È¤¨¤Ð¡¢Í×ÁÇ <tt>abc\ def</tt> ¤Ï "abc def" ¤ò̾Á°¤È¤·¤Æ»ý¤Ä¥·¥ó¥Ü¥ë
-¤òÃͤȤ¹¤ë¥×¥í¥Ñ¥Æ¥£¤Ç¤¢¤ë¡£
-
-<li> MTEXT
-
-Àµµ¬É½¸½ <tt>"([^"]|\\")*"</tt> ¤Ë¹çÃפ¹¤ëÍ×ÁǤϡ¢¥­¡¼ <tt>Mtext</tt> 
-¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ò¼¨¤¹¡£¾åµ­¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¥¨¥¹¥±¡¼¥×¤Ï¤³¤³¤Ç
-¤âÍ­¸ú¤Ç¤¢¤ë¡£¤µ¤é¤Ë¡¢Í×ÁÇÃæ¤ÎÀµµ¬É½¸½
-<tt>\\[xX][0-9A-Fa-f][0-9A-Fa-f]</tt> ¤Ë¹çÃפ¹¤ëÉôʬ¤Ï¡¢16¿Ê¤Ç²ò¼á¤·¤¿
-·ë²Ì¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¡£
-
-¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥¨¥¹¥±¡¼¥×¤ò½èÍý¤·¤¿¾å¤Ç¡¢¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ë¤Ï¤µ¤Þ¤ì¤¿¥Ð
-¥¤¥ÈÎó¤òUTF-8 Îó¤È¤·¤Æ²ò¼á¤·¡¢M-text ¤Ë¥Ç¥³¡¼¥É¤¹¤ë¡£¤³¤Î M-text ¤¬¥×
-¥í¥Ñ¥Æ¥£¤ÎÃͤǤ¢¤ë¡£
-
-<li> PLIST
-
-Âбþ¤¹¤ë³ç¸Ì¤Ë¤Ï¤µ¤Þ¤ì¤¿ 0 ¸Ä°Ê¾å¤ÎÍ×ÁǤÏ<tt>Mplist</tt> ¤ò¥­¡¼¤È¤¹¤ë
-¥×¥í¥Ñ¥Æ¥£¤ò¼¨¤¹¡£³ç¸Ì¤ÎÁ°¸å¤Î¶õÇò¤Ï¼è¤ê½ü¤«¤ì¤ë¡£¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢¥×
-¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Ç¤¢¤ê¡¢¤½¤Î³ç¸ÌÆâ¤Î³ÆÍ×ÁǤòºÆµ¢Åª¤Ë²ò¼á¤·¤¿·ë²Ì¤Ç¤¢¤ë¡£
-
-</ul>
-
-@subsection general-syntax Ê¸Ë¡¤Îɽµ­
-
-¥Ç¡¼¥¿¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÀâÌÀ¤Ç¤Ï¡¢BNFÉ÷¤Îµ­Ë¡¤¬ÍѤ¤¤é¤ì
-¤ë¡£¤³¤Îµ­Ë¡¤Ç¤Ï¡¢Èó½ªÃ¼¤ÏÂçʸ»ú¡Ê´Ö¤Ë'-'¤¬Æþ¤Ã¤Æ¤â¤è¤¤¡Ë ¤Ç¡¢½ªÃ¼¤Ï " 
-¤Ç°Ï¤Ã¤Æɽ¤µ¤ì¤ë¡£ÆÃÊ̤ÊÈó½ªÃ¼ INTEGER, SYMBOL,
-MTEXT, PLIST ¤Ï¤½¤ì¤¾¤ìÂбþ¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤ò°ÕÌ£¤¹¤ë¡£
-
-@subsection general-example Îã
-
-¼¡¤Îñ½ã¤Ê·Á¼°¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤ËÆɤ߹þ¤Þ¤ì¤ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¡¼¥¿¤Î
-°ìÎã¤ò¼¨¤¹¡§
-
-@verbatim
-DATA-FORMAT ::=
-    [ INTEGER | SYMBOL | MTEXT | FUNC ] *
-
-FUNC ::=
-    '(' FUNC-NAME FUNC-ARG * ')'
-
-FUNC-NAME ::=
-    SYMBOL
-
-FUNC-ARG ::=
-    INTEGER | SYMBOL | MTEXT | '(' FUNC-ARG ')'
-@endverbatim
-
-¤¿¤È¤¨¤Ð¡¢¼¡¤Î¥Æ¥­¥¹¥È¤ò´Þ¤à¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Ï¾å¤Îʸˡ¤Ë¹çÃפ¹¤ë¡§
-
-@verbatim
-abc 123 (pqr 0xff) "m\"text" (_\\_ ("string" xyz) -456)
-@endverbatim
-
-¤½¤·¤Æ¼¡¤Î¤è¤¦¤Ê¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·¤ÆÆɤ߹þ¤Þ¤ì¤ë¡§
-
-@verbatim
-Â裱Í×ÁÇ: ¥­¡¼: Msymbol,  ÃÍ: abc
-Â裲Í×ÁÇ: ¥­¡¼: Minteger, ÃÍ: 123
-Â裳Í×ÁÇ: ¥­¡¼: Mplist,   ÃÍ: ¼¡¤ÎÍ×ÁǤ«¤é¤Ê¤ë¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È
-    Â裱Í×ÁÇ: ¥­¡¼ Msymbol,  ÃÍ: pgr
-    Â裲Í×ÁÇ: ¥­¡¼ Minteger, ÃÍ: 255
-Â裴Í×ÁÇ: ¥­¡¼: Mtext,    ÃÍ: m"text
-Â裵Í×ÁÇ: ¥­¡¼: Mplist,   ÃÍ: ¼¡¤ÎÍ×ÁǤ«¤é¤Ê¤ë¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È
-    Â裱Í×ÁÇ: ¥­¡¼: Msymbol, ÃÍ: _\_
-    Â裲Í×ÁÇ: ¥­¡¼: Mplist,  ÃÍ: ¼¡¤ÎÍ×ÁǤ«¤é¤Ê¤ë¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È
-        Â裱Í×ÁÇ: ¥­¡¼: Mtext,    ÃÍ: string
-       Â裲Í×ÁÇ: ¥­¡¼: Msymbol,  ÃÍ: xyz
-       Â裳Í×ÁÇ: ¥­¡¼: Minteger, ÃÍ: -456
-@endverbatim
-*/
-/***en
-
-@section mdbGeneral General Format
-
-@subsection general-description DESCRIPTION
-
-The mdatabase_load () function returns the data specified by tags in
-the form of plist if the first tag is not @c Mchartable nor @c
-Mcharset.  The keys of the returned plist are limited to
-<tt>Minteger</tt>, <tt>Msymbol</tt>, <tt>Mtext</tt>, and
-<tt>Mplist</tt>.  The type of the value is unambiguously determined by
-the corresponding key.  If the key is <tt>Minteger</tt>, the value is
-an integer.  If the key is <tt>Msymbol</tt>, the value is a symbol.
-And so on.
-
-A number of expressions are possible to represent a plist.  For
-instance, we can use the form <tt>(K1:V1, K2:V2, ..., Kn:Vn)</tt> to
-represent a plist whose first property key and value are K1 and V1,
-second key and value are K2 and V2, and so on.  However, we can use a
-simpler expression here because the types of plists used in the m17n
-database are fairly restricted.
-
-Hereafter, we use an expression, which is similar to S-expression, to
-represent a plist.  (Actually, the default database loader of the m17n
-library is designed to read data files written in this expression.)
-
-The expression consists of one or more <i>elements</i>.  Each element
-represents a property, i.e. a single element of a plist.
-
-Elements are separated by one or more <i>whitespaces</i>, i.e. a space
-(code 32), a tab (code 9), or a newline (code 10).  Comments begin
-with a semicolon (<tt>;</tt>) and extend to the end of the line.
-
-The key and the value of each property are determined based on the
-type of the element as explained below.
-
-<ul>
-
-<li> INTEGER
-
-An element that matches the regular expression <tt>-?[0-9]+</tt> or
-<tt>0[xX][0-9A-Fa-f]+</tt> represents a property whose key is
-<tt>Minteger</tt>.  An element matching the former expression is
-interpreted as an integer in decimal notation, and one matching the
-latter is interpreted as an integer in hexadecimal notation.  The
-value of the property is the result of interpretation.
-
-For instance, the element <tt>0xA0</tt> represents a property whose
-value is 160 in decimal.
-
-<li> SYMBOL
-
-An element that matches the regular expression
-<tt>[^-0-9(]([^\\()]|\\.)+</tt> represents a property whose key is
-<tt> Msymbol</tt>.  In the element, <tt>\\t</tt>, <tt>\\n</tt>,
-<tt>\\r</tt>, and <tt>\\e</tt> are replaced with tab (code 9), newline
-(code 10), carriage return (code 13), and escape (code 27)
-respectively.  Other characters following a backslash is interpreted
-as it is.  The value of the property is the symbol having the
-resulting string as its name.
-
-For instance, the element <tt>abc\ def</tt> represents a property
-whose value is the symbol having the name "abc def".
-
-<li> MTEXT
-
-An element that matches the regular expression <tt>"([^"]|\\")*"</tt>
-represents a property whose key is <tt>Mtext</tt>.  The backslash
-escape explained above also applies here.  Moreover, each part in the
-element matching the regular expression <tt>
-\\[xX][0-9A-Fa-f][0-9A-Fa-f]</tt> is replaced with its hexadecimal
-interpretation.
-
-After having resolved the backslash escapes, the byte sequence between
-the double quotes is interpreted as a UTF-8 sequence and decoded into
-an M-text.  This M-text is the value of the property.
-
-<li> PLIST
-
-Zero or more elements surrounded by a pair of parentheses represent a
-property whose key is <tt>Mplist</tt>.  Whitespaces before and after a
-parenthesis can be omitted.  The value of the property is a plist,
-which is the result of recursive interpretation of the elements
-between the parentheses.
-
-</ul>
-
-@subsection general-syntax SYNTAX NOTATION
-
-In an explanation of a plist format of data, a BNF-like notation is
-used.  In the notation, non-terminals are represented by a string of
-uppercase letters (including '-' in the middle), terminals are
-represented by a string surrounded by '"'.  Special non-terminals
-INTEGER, SYMBOL, MTEXT and PLIST represents property integer, symbol,
-M-text, or plist respectively.
-
-@subsection general-example EXAMPLE
-
-Here is an example of database data that is read into a plist of this
-simple format:
-
-@verbatim
-DATA-FORMAT ::=
-    [ INTEGER | SYMBOL | MTEXT | FUNC ] *
-
-FUNC ::=
-    '(' FUNC-NAME FUNC-ARG * ')'
-
-FUNC-NAME ::=
-    SYMBOL
-
-FUNC-ARG ::=
-    INTEGER | SYMBOL | MTEXT | '(' FUNC-ARG ')'
-@endverbatim
-
-For instance, a data file that contains this text matches the above
-syntax:
-
-@verbatim
-abc 123 (pqr 0xff) "m\"text" (_\\_ ("string" xyz) -456)
-@endverbatim
-
-and is read into this plist:
-
-@verbatim
-1st element: key: Msymbol,  value: abc
-2nd element: key: Minteger, value: 123
-3rd element: key: Mplist,   value: a plist of these elements:
-    1st element: key Msymbol,  value: pgr
-    2nd element: key Minteger, value: 255
-4th element: key: Mtext,    value: m"text
-5th element: key: Mplist,   value: a plist of these elements:
-    1st element: key: Msymbol, value: _\_
-    2nd element: key: Mplist,  value: a plist of these elements:
-        1st element: key: Mtext,    value: string
-       2nd element: key: Msymbol,  value: xyz
-       3rd element: key: Minteger, value: -456
-@endverbatim
-*/
-/***ja
-
-@section mdbCharsetList Ê¸»ú¥»¥Ã¥ÈÄêµÁ¤Î¥ê¥¹¥È
-
-@subsection cslist-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¥¿¥° \<charset-list\> ¤ò»ý¤Ä¥Ç¡¼¥¿¤«¤éʸ»ú¥»¥Ã¥ÈÄêµÁ
-¤Î¥ê¥¹¥È¤ò¥í¡¼¥É¤¹¤ë¡£¥Ç¡¼¥¿¤Ï°Ê²¼¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·
-¤Æ¥í¡¼¥É¤µ¤ì¤ë¡£
-
-@verbatim
-CHARSET-LIST ::= DEFINITION *
-
-DEFINITION ::= '(' NAME ( KEY VALUE ) * ')'
-
-NAME ::= SYMBOL
-
-KEY ::= SYMBOL
-
-VALUE ::= SYMBOL | INTEGER | MTEXT | PLIST
-@endverbatim
-
-@c NAME ¤ÏÄêµÁ¤¹¤ëʸ»ú¥»¥Ã¥È¤Î̾Á°¤Ç¤¢¤ë¡£
-
-@c KEY ¤È @c VALUE ¤Î¥Ú¥¢¤Ï¡¢´Ø¿ô mchar_define_charset () ¤ËÂ裲°ú¿ô
-$PLIST ¤ÎÍ×ÁǤȤ·¤ÆÍ¿¤¨¤é¤ì¤ë¥×¥í¥Ñ¥Æ¥£¤Ç¤¢¤ë¡£
-
-@subsection cslist-seealso SEE ALSO
-
-@ref mdbGeneral "mdbGeneral(5)", mchar_define_charset ()
-*/
-/***en
-
-@section mdbCharsetList List of character set definitions 
-
-@subsection cslist-description DESCRIPTION
-
-The m17n library loads a list of charset definitions from the data of
-tag \<charset-list\>.  The data is loaded as a plist of this format.
-
-@verbatim
-CHARSET-LIST ::= DEFINITION *
-
-DEFINITION ::= '(' NAME ( KEY VALUE ) * ')'
-
-NAME ::= SYMBOL
-
-KEY ::= SYMBOL
-
-VALUE ::= SYMBOL | INTEGER | MTEXT | PLIST
-@endverbatim
-
-@c NAME is a name of a charset to define.
-
-@c KEY and @c VALUE pair is a property given to the function
-mchar_define_charset () as an element of the second argument $PLIST.
-
-@subsection cslist-seealso SEE ALSO
-
-@ref mdbGeneral "mdbGeneral(5)", mchar_define_charset ()
-*/
-/***ja
-
-@section mdbCodingList ¥³¡¼¥É·ÏÄêµÁ¤Î¥ê¥¹¥È
-
-@subsection coding-list-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï¡¢½é´ü²½¤ÎºÝ m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥¿¥° \<coding-list\> 
-¤Î¤Ä¤¤¤¿¥Ç¡¼¥¿¤«¤é¥³¡¼¥É·ÏÄêµÁ¤Î¥ê¥¹¥È¤ò¥í¡¼¥É¤¹¤ë¡£¤³¤Î¥Ç¡¼¥¿¤Ï°Ê²¼¤Î
-¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·¤Æ¥í¡¼¥É¤µ¤ì¤ë¡£
-
-@verbatim
-CODING-LIST ::= DEFINITION *
-
-DEFINITION ::= '(' NAME ( KEY VALUE ) * ')'
-NAME ::= SYMBOL
-
-KEY ::= SYMBOL
-
-VALUE ::= SYMBOL | INTEGER | MTEXT | PLIST
-@endverbatim
-
-@c NAME ¤ÏÄêµÁ¤¹¤ë¥³¡¼¥É·Ï¤Î̾Á°¤Ç¤¢¤ë¡£
-
-@c KEY ¤È @c VALUE ¤Î¥Ú¥¢¤Ï¡¢´Ø¿ô mchar_define_coding () ¤Ë£²ÈÖÌܤΰú
-¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤ë¥×¥í¥Ñ¥Æ¥£¤Ç¤¢¤ë¡£
-
-@subsection coding-list-seealso »²¾È
-
-@ref mdbGeneral "mdbGeneral(5)", mconv_define_coding ()
-*/
-/***en
-
-@section mdbCodingList List of coding system definitions
-
-@subsection coding-list-description DESCRIPTION
-
-The m17n library loads a list of coding system definitions from the
-m17n database by the tags \<coding-list\> at initialization time.  The
-data is loaded as a plist of this format.
-
-@verbatim
-CODING-LIST ::= DEFINITION *
-
-DEFINITION ::= '(' NAME ( KEY VALUE ) * ')'
-NAME ::= SYMBOL
-
-KEY ::= SYMBOL
-
-VALUE ::= SYMBOL | INTEGER | MTEXT | PLIST
-@endverbatim
-
-@c NAME is a name of a coding system to define.
-
-@c KEY and @c VALUE pair is a property given to the function
-mconv_define_coding () as the second argument.
-
-@subsection coding-list-seealso SEE ALSO
-
-@ref mdbGeneral "mdbGeneral(5)", mconv_define_coding ()
-*/
-/***ja
-
-@section mdbDir ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Ç¥£¥ì¥¯¥È¥êÃæ¤Î¥Ç¡¼¥¿¤Î¥ê¥¹¥È
-
-@subsection dir-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï½é´ü²½¤ÎºÝ¡¢m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹Ãæ¤Î¥Ç¡¼¥¿ÄêµÁ¤Î¥ê¥¹¥È¤ò
-³Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Ç¥£¥ì¥¯¥È¥êÃæ¤Î "mdb.dir" ¤È¤¤¤¦Ì¾Á°¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤«¤é¥í¡¼
-¥É¤¹¤ë¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ª¤±¤ë¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï°Ê²¼¤Ç¤¢¤ë¡£
-
-@verbatim
-MDB-DIR ::= DEFINITION *
-
-DEFINITION ::= '(' TAG [ TAG [ TAG [ TAG ] ] ] FILE ')'
-
-TAG ::= SYMBOL
-
-FILE ::= MTEXT
-@endverbatim
-*/
-/***en
-
-@section mdbDir List of data in a database directory.
-
-@subsection dir-description DESCRIPTION
-
-The m17n library loads a list of definitions of data of the m17n
-database from files of name "mdb.dir" in each database directory at
-initialization time.  The plist format of this file is as follows:
-
-@verbatim
-MDB-DIR ::= DEFINITION *
-
-DEFINITION ::= '(' TAG [ TAG [ TAG [ TAG ] ] ] FILE ')'
-
-TAG ::= SYMBOL
-
-FILE ::= MTEXT
-@endverbatim
-*/
-/***ja
-
-@section mdbFLT ¥Õ¥©¥ó¥È¥ì¥¤¥¢¥¦¥È¥Æ¡¼¥Ö¥ë
-
-@subsection flt-description ÀâÌÀ
-
-ñ½ã¤Ê¥¹¥¯¥ê¥×¥È¤Î¾ì¹ç¡¢É½¼¨¥¨¥ó¥¸¥ó¤ÏÁªÂò¤·¤¿¥Õ¥©¥ó¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó
-¥°¤Ë±þ¤¸¤Æʸ»ú¥³¡¼¥É¤ò¥°¥ê¥Õ¥³¡¼¥É¤Ë°ìʸ»ú¤º¤ÄÊÑ´¹¤¹¤ë¡£¤·¤«¤·¡¢Ê£»¨¤Ê
-¥ì¥¤¥¢¥¦¥È¤òÍ׵᤹¤ëʸ½ñ¡¢¤¿¤È¤¨¤Ð¥¿¥¤¤ä¥¤¥ó¥É·Ï¤Î¥¹¥¯¥ê¥×¥È¤Ê¤É¤Î¾ì¹ç¡¢
-£±ÂУ±¤ÎÊÑ´¹¤Ç¤ÏÉÔ½½Ê¬¤Ç¤¢¤ë¡£Ê£¿ô¤Îʸ»ú¤¬°ì¤Ä¤Î¥ê¥¬¥Á¥ã¤È¤·¤ÆÉÁ¤«¤ì¤¿¤ê¡¢
-£²¼¡¸µÅª¤Ë¤º¤é¤·¤¿°ÌÃÖ¤ËÉÁ¤«¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¥°¥ê¥Õ¤¬¤¢¤Ã¤¿¤ê¤¹¤ë¡£
-
-¤³¤Î¤è¤¦¤ÊÊ£»¨¤Ê¥¹¥¯¥ê¥×¥È¤ò½èÍý¤¹¤ë¤¿¤á¡¢m17n ¥é¥¤¥Ö¥é¥ê¤Ï¥Õ¥©¥ó¥È¥ì
-¥¤¥¢¥¦¥È¥Æ¡¼¥Ö¥ë (û½Ì¤·¤Æ FLT ¤È¸Æ¤Ö¤³¤È¤Ë¤¹¤ë) ¤òÍѤ¤¤ë¡£FLT ¥É¥é¥¤
-¥Ð¤Ï FLT ¤ò²ò¼á¤·¡¢Ê¸»úÎó¤òɽ¼¨¥¨¥ó¥¸¥ó¤ËÅϤ¹¤³¤È¤Î¤Ç¤­¤ë¥°¥ê¥ÕÎó¤ËÊÑ
-´¹¤¹¤ë¡£
-
-FLT ¤Ï OpenType Layout Table ¤Ë¸«¤é¤ì¤ë¾ðÊó (CMAP, GSUB, and GPOS) ¤Ë
-²Ã¤¨¤Æ¡¢Ê¸»úÎ󤫤é½ñµ­ÁÇ (grapheme) ¥¯¥é¥¹¥¿¤òÃê½Ð¤·¤¿¤ê¡¢¥¯¥é¥¹¥¿Æâ¤Ç
-ʸ»ú¤òʤÙÊѤ¨¤¿¤ê¤¹¤ë¤¿¤á¤Î¾ðÊó¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£
-
-FLT ¤Ï 1 ¤Ä°Ê¾å¤ÎÊÑ´¹¥¹¥Æ¡¼¥¸¤¬Â³¤¤¤¿¤â¤Î¤Ç¤¢¤ë¡£³Æ¥¹¥Æ¡¼¥¸¤Ç¥³¡¼¥ÉÎó
-¤ÏÊ̤Τâ¤Î¤ËÊÑ´¹¤µ¤ì¡¢¼¡¤Î¥¹¥Æ¡¼¥¸¤ËÆɤޤì¤ë¡£Îó¤ÎŤµ¤Ï¥¹¥Æ¡¼¥¸Ëè¤Ë°Û
-¤Ê¤ë¤³¤È¤¬¤¢¤ë¡£¥³¡¼¥ÉÎó¤Î³ÆÍ×ÁǤϰʲ¼¤ÎÀ°¿ôÃͤΰÀ­¤ò»ý¤Ä¡£
-
-<ul>
-<li> ¥³¡¼¥É
-
-ÊÑ´¹¤ÎºÇ½é¤Î¥¹¥Æ¡¼¥¸¤Ç¤Ï¡¢¸µ¤Îʸ»úÎó¤Îʸ»ú¥³¡¼¥É¡£ºÇ¸å¤Î¥¹¥Æ¡¼¥¸¤Ç¤Ï¡¢
-ɽ¼¨¥¨¥ó¥¸¥ó¤ËÅϤµ¤ì¤ë¥°¥ê¥Õ¥³¡¼¥É¡£¤½¤ì°Ê³°¤Ç¤ÏÃæ´ÖŪ¤Ê¥°¥ê¥Õ¥³¡¼¥É¡£
-
-<li> ¥«¥Æ¥´¥ê
-
-¤½¤Î¥¹¥Æ¡¼¥¸¤Î @c CATEGORY-TABLE ¤ÇÄêµÁ¤µ¤ì¤¿¥«¥Æ¥´¥ê¡¼¥³¡¼¥É¡£
-
-<li> ·ë¹çµ¬Â§
-
-0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¤³¤Î¡ÊÃæ´Ö¡Ë¥°¥ê¥Õ¤òÁ°¤Î¤â¤Î¤È¤É¤¦·ë¹ç¤¹¤ë¤«¤ò»ØÄꤹ¤ë¡£
-
-<li> º¸¥Ñ¥Ç¥£¥ó¥°¥Õ¥é¥°
-
-0 ¤Ç¤Ê¤±¤ì¤Ð¡¢É½¼¨´Ø¿ô¤Ë¤³¤Î¡ÊÃæ´Ö¡Ë¥°¥ê¥Õ¤ÎÁ°¤Ë¥¹¥Ú¡¼¥¹¤òÁÞÆþ¤·¤Æ¡¢Á°
-¤Î¥°¥ê¥Õ¤È½Å¤Ê¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤è¤¦»Ø¼¨¤¹¤ë¡£
-
-<li> ±¦¥Ñ¥Ç¥£¥ó¥°¥Õ¥é¥°
-
-0 ¤Ç¤Ê¤±¤ì¤Ð¡¢É½¼¨´Ø¿ô¤Ë¤³¤Î¡ÊÃæ´Ö¡Ë¥°¥ê¥Õ¤Î¸å¤Ë¥¹¥Ú¡¼¥¹¤òÁÞÆþ¤·¤Æ¡¢¸å
-¤Î¥°¥ê¥Õ¤È½Å¤Ê¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤è¤¦»Ø¼¨¤¹¤ë¡£
-
-</ul>
-
-¥ì¥¤¥¢¥¦¥È¥¨¥ó¥¸¥ó¤¬¥Æ¥­¥¹¥È¤òÉÁ¤¯ºÝ¤Ë¤Ï¡¢¤Þ¤º¥Æ¥­¥¹¥È¤Î³Æʸ»ú¤ËÂФ·¤Æ
-¤½¤ì¤¾¤ì¥Õ¥©¥ó¥È¤ÈFLT ¤ò·èÄꤹ¤ë¡£Æ±¤¸¥Õ¥©¥ó¥È¤È FLT ¤òÍѤ¤¤ëÉôʬʸ»ú
-Îó¤Ë´Ø¤·¤Æ¡¢¥ì¥¤¥¢¥¦¥È¥¨¥ó¥¸¥ó¤ÏÂбþ¤¹¤ëÃæ´ÖŪ¤Ê¥°¥ê¥Õ¤ÎÎó¤òÀ¸À®¤¹¤ë¡£
-Ãæ´ÖŪ¤Ê¥°¥ê¥Õ¥³¡¼¥É¤Î³ÆÍ×ÁǤϡ¢¥³¡¼¥É¤Î°À­¤È¤·¤ÆÂбþ¤¹¤ëʸ»ú¥³¡¼¥É¡¢
-¾¤Î°À­¤È¤·¤Æ 0 ¤ò»ý¤Ä¡£¤³¤ÎÎó¤ÏFLT ¤ÎºÇ½é¤Î¥¹¥Æ¡¼¥¸¤Ç¸½¹Ô¤Î @e ¥é¥ó 
-(ÉôʬÎó) ¤È¤·¤Æ½èÍý¤µ¤ì¤ë¡£
-
-³Æ¥¹¥Æ¡¼¥¸¤Ï°Ê²¼¤Î¤è¤¦¤ËƯ¤¯¡£
-
-¤Þ¤º¤³¤Î¥¹¥Æ¡¼¥¸¤Ë @c CATEGORY-TABLE ¤¬¤¢¤ì¤Ð¡¢¸½¹Ô¤Î¥é¥ó¤Î¤¹¤Ù¤Æ¤Î¥°
-¥ê¥Õ¤Î¥«¥Æ¥´¥ê¤¬¹¹¿·¤µ¤ì¤ë¡£¥«¥Æ¥´¥ê¤Î̵¤¤¥°¥ê¥Õ¤¬¤¢¤ì¤Ð¡¢¥é¥ó¤Ï¤½¤Î¥°
-¥ê¥Õ¤ÎÁ°¤Ç½ª¤ë¡£
-
-¼¡¤Ë¤³¤Î¥¹¥Æ¡¼¥¸¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È¡¢·ë¹çµ¬Â§¡¢º¸¥Ñ¥Ç¥£¥ó¥°¥Õ¥é¥°¤¬ 0 
-¤Ë½é´ü²½¤µ¤ì¤ë¡£
-
-¼¡¤¤¤Ç¡¢¤³¤Î¥¹¥Æ¡¼¥¸¤ÎºÇ½é¤ÎÊÑ´¹µ¬Â§¤¬¸½¹Ô¤Î¥é¥ó¤ËŬÍѤµ¤ì¤ë¡£
-
-ºÇ¸å¤Ë¸½¹Ô¤Î¥é¥ó¤Ï¿·¤·¤¯ºî¤é¤ì¤¿¡ÊÃæ´Ö¡Ë¥°¥ê¥ÕÎó¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¡£
-
-@subsection flt-syntax Ê¸Ë¡¤È°ÕÌ£
-
-m17n ¥é¥¤¥Ö¥é¥ê ¤Ï m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¥¿¥° \<font, layouter,
-FLT-NAME\> ¤òÍѤ¤¤Æ FLT ¤ò¥í¡¼¥É¤¹¤ë¡£FLT ¤Î¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï°Ê²¼¤ÎÄ̤ꡧ
-
-@verbatim
-FONT-LAYOUT-TABLE ::= STAGE0 STAGE *
-
-STAGE0 ::= CATEGORY-TABLE GENERATOR
-
-STAGE ::= CATEGORY-TABLE ? GENERATOR
-
-CATEGORY-TABLE ::= '(' 'category' CATEGORY-SPEC + ')'
-
-CATEGORY-SPEC ::= '(' CODE CATEGORY ')'
-                  | '(' CODE CODE CATEGORY ')'
-
-CODE ::= INTEGER
-
-CATEGORY ::= INTEGER
-@endverbatim
-
-@c CATEGORY-SPEC ¤ÎÄêµÁÃæ¤Ç¡¢ @c CODE ¤Ï¥°¥ê¥Õ¥³¡¼¥É @c CATEGORY ¤ÏÂç
-ʸ»ú¤¢¤ë¤¤¤Ï¾®Ê¸»ú¤Î ASCII code¡¢¤¹¤Ê¤ï¤Á 'A', ... 'Z', 'a', .. 'z' ¤Î
-¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£
-
-@c CATEGORY-SPEC ¤ÎºÇ½é¤Î·Á¼°¤Ï¡¢@c CATEGORY ¤ò¥³¡¼¥É @c CODE ¤ò»ý¤Ä¥°
-¥ê¥Õ¤Ë³ä¤êÅö¤Æ¡¢Æó¤ÄÌܤηÁ¼°¤Ï @c CATEGORY ¤òÆó¤Ä¤Î @c CODE ¤Î´Ö¤Î¥³¡¼
-¥É¤ò»ý¤Ä¥°¥ê¥Õ¤Ë³ä¤êÅö¤Æ¤ë¡£
-
-@verbatim
-GENERATOR ::= '(' 'generator' RULE MACRO-DEF * ')'
-
-RULE ::= REGEXP-BLOCK | MATCH-BLOCK | SUBST-BLOCK | COND-BLOCK
-         | DIRECT-CODE | COMBINING-SPEC | OTF-SPEC
-         | PREDEFINED-RULE | MACRO-NAME
-
-MACOR-DEF ::= '(' MACRO-NAME RULE + ')'
-@endverbatim
-
-³Æ @c RULE ¤Ï¡¢¾ÃÈñ¤¹¤ë¥°¥ê¥Õ¤ÈÀ¸À®¤¹¤ë¥°¥ê¥Õ¤ò»ØÄꤹ¤ë¡£¡Ö¾ÃÈñ¤µ¤ì¤¿¡×
-¥°¥ê¥Õ¤Ï¸½¹Ô¤Î¥é¥ó¤«¤é¼è¤ê½ü¤«¤ì¤ë¡£¥ë¡¼¥ë¤Ï¾õ¶·¤Ë¤è¤Ã¤Æ¤Ï¼ºÇÔ¤¹¤ë¡£ÌÀ
-¼¨Åª¤Ë¼ºÇԤȽñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤ò¤Î¤¾¤­¡¢À®¸ù¤È¤ß¤Ê¤¹¡£
-
-@verbatim
-DIRECT-CODE ::= INTEGER
-@endverbatim
-
-¤³¤Î¥ë¡¼¥ë¤Ï¥°¥ê¥Õ¤ò¾ÃÈñ¤»¤º¡¢°Ê²¼¤Î°À­¤ò»ý¤Ä¥°¥ê¥Õ¤òÀ¸À®¤¹¤ë¡£
-
-<ul>
-<li> ¥³¡¼¥É : @c INTEGER ¡Ü ¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È
-<li> ·ë¹çµ¬Â§ : ¥Ç¥Õ¥©¥ë¥ÈÃÍ
-<li> º¸¥Ñ¥Ç¥¤¥ó¥°¥Õ¥é¥° : ¥Ç¥Õ¥©¥ë¥ÈÃÍ
-<li> ±¦¥Ñ¥Ç¥¤¥ó¥°¥Õ¥é¥° : 0
-</ul>
-
-¥°¥ê¥ÕÀ¸À®¸å¡¢¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È¡¢·ë¹çµ¬Â§, º¸¥Ñ¥Ç¥£¥ó¥°¥Õ¥é
-¥° ¤Ï¤¹¤Ù¤Æ 0 ¤Ë¥ê¥»¥Ã¥È¤µ¤ì¤ë¡£
-
-@verbatim
-PREDEFINED-RULE ::= '=' | '*' | '<' | '>' | '|' | '[' | ']'
-@endverbatim
-
-¤³¤ì¤é¤Ï°Ê²¼¤Î¤è¤¦¤ËƯ¤¯¡£
-
-<ul>
-<li> @c =
-
-¸½¹Ô¤Î¥é¥ó¤ÎºÇ½é¤Î¥°¥ê¥Õ¤ò¾ÃÈñ¤·¡¢Æ±¤¸¥°¥ê¥Õ¤òÀ¸À®¤¹¤ë¡£¸½¹Ô¤Î¥é¥ó¤¬¶õ
-¤Ê¤é¤Ð¼ºÇÔ¤¹¤ë¡£
-
-<li> @c *
-
-Á°¤Î¥ë¡¼¥ë¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ë¡£Á°¤Î¥ë¡¼¥ë¤¬¼ºÇÔ¤¹¤ì¤Ð¡¢²¿¤â¤»¤º¼ºÇÔ¤¹¤ë¡£
-
-<li> @c @<
-
-½ñµ­ÁÇ¥¯¥é¥¹¥¿¤Î»Ï¤á¤ò¼¨¤¹¡£
-
-<li> @c @>
-
-½ñµ­ÁÇ¥¯¥é¥¹¥¿¤Î½ª¤ê¤ò¼¨¤¹¡£
-
-<li> @c @[
-
-¤³¤Îµ¬Â§¤Ï¥Ç¥Õ¥©¥ë¥È¤Îº¸¥Ñ¥Ç¥£¥ó¥°¥Õ¥é¥°¤ò 1 ¤Ë¤¹¤ë¡£¥°¥ê¥Õ¤Î¾ÃÈñ¤äÀ¸
-À®¤Ï¤·¤Ê¤¤¡£
-
-<li> @c @]
-
-¤³¤Îµ¬Â§¤ÏºÇ¶áÀ¸À®¤µ¤ì¤¿¥°¥ê¥Õ¤Î±¦¥Ñ¥Ç¥£¥ó¥°¥Õ¥é¥°¤ò 1 ¤Ë¤¹¤ë¡£¥°¥ê¥Õ
-¤Î¾ÃÈñ¤äÀ¸À®¤Ï¤·¤Ê¤¤¡£
-
-<li> @c |
-
-¥°¥ê¥Õ¤ò¾ÃÈñ¤»¤º¡¢¥«¥Æ¥´¥ê¤¬ ' ' ¤Ç¾¤Î°À­¤¬ 0 ¤Ç¤¢¤ëÆÃÊ̤ʥ°¥ê¥Õ¤òÀ¸
-À®¤¹¤ë¡£¤³¤Îµ¬Â§¤À¤±¤¬¤³¤ÎÆÃÊ̤ʥ°¥ê¥Õ¤òÀ¸À®¤¹¤ë¡£
-
-</ul>
-
-@verbatim
-REGEXP-BLOCK ::= '(' REGEXP RULE * ')'
-
-REGEXP ::= MTEXT
-@endverbatim
-
-@c MTEXT ¤Ï¸½¹Ô¤Î¥é¥ó¤Î¥«¥Æ¥´¥êÎó¤Ë¹çÃפ¹¤Ù¤­Àµµ¬É½¸½¤Ç¤¢¤ë¡£¹çÃפ¹¤ì
-¤Ð¡¢¤³¤Îµ¬Â§¤Ï°ì»þŪ¤Ë¸½¹Ô¤Î¥é¥ó¤ò¹çÃפ·¤¿Éôʬ¤À¤±¤Ë¸ÂÄꤷ¤¿¾å¤Ç¡¢@c
-RULE ¤ò¼Â¹Ô¤¹¤ë¡£¹çÃפ·¤¿Éôʬ¤Ï¤³¤Îµ¬Â§¤Ë¤è¤Ã¤Æ¾ÃÈñ¤µ¤ì¤ë¡£
-
-³ç¸Ì¤Î¤Ä¤¤¤¿Éôʬɽ¸½¤¬¤¢¤ì¤Ð¡¢@c RULE ¤ÎÃæ¤Ë½Ð¸½¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤ @c
-MATCH-BLOCK ¤Ë¤è¤Ã¤Æ»ÈÍѤ¹¤ë¤¿¤á¤Ëµ­Ï¿¤µ¤ì¤ë¡£
-
-¹çÃפ¹¤ëÉôʬ¤¬Ìµ¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£
-
-@verbatim
-MATCH-BLOCK ::= '(' MATCH-INDEX RULE * ')'
-
-MATCH-INDEX ::= INTEGER
-@endverbatim
-
-@c MATCH-INDEX ¤ÏľÁ°¤Î @c REGEXP-BLOCK ¤Ë¤è¤Ã¤Æµ­Ï¿¤µ¤ì¤¿Éôʬɽ¸½¤ò»Ø
-Äꤹ¤ëÀ°¿ô¤Ç¤¢¤ë¡£¤³¤Î¤è¤¦¤ÊÉôʬɽ¸½¤¬¤¢¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï°ì»þŪ¤Ë¸½¹Ô¤Î
-¥é¥ó¤ò¹çÃפ·¤¿Éôʬɽ¸½¤À¤±¤Ë¸ÂÄꤷ¤¿¾å¤Ç¡¢@c RULE ¤ò¼Â¹Ô¤¹¤ë¡£¹çÃפ·¤¿
-Éôʬ¤Ï¤³¤Îµ¬Â§¤Ë¤è¤Ã¤Æ¾ÃÈñ¤µ¤ì¤ë¡£
-
-¹çÃפ¹¤ëÉôʬ¤¬Ìµ¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£
-
-¤³¤Îµ¬Â§¤¬¥¹¥Æ¡¼¥¸¤ÎºÇ½é¤Ëµ¬Â§¤Ç¤¢¤ì¤Ð¡¢@c MATCH-INDEX ¤Ï 0 ¤Ç¤¢¤ê¡¢¸½
-¹Ô¤Î¥é¥óÁ´ÂΤ˹çÃפ¹¤ë¡£
-
-@verbatim
-SUBST-BLOCK ::= '(' SOURCE-PATTERN RULE * ')'
-
-SOURCE-PATTERN ::= '(' CODE + ')'
-                   | (' 'range' CODE CODE ')'
-@endverbatim
-
-¸½¹Ô¤Î¥é¥ó¤Î¥³¡¼¥ÉÎ󤬠@c SOURCE-PATTERN ¤È¹çÃפ¹¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï°ì»þ
-Ū¤Ë¸½¹Ô¤Î¥é¥ó¤ò¹çÃפ·¤¿Éôʬ¤À¤±¤Ë¸ÂÄꤷ¤¿¾å¤Ç¡¢@c RULE ¤ò¼Â¹Ô¤¹¤ë¡£
-¹çÃפ·¤¿Éôʬ¤Ï¾ÃÈñ¤µ¤ì¤ë¡£
-
-@c SOURCE-PATTERN ¤ÎºÇ½é¤Î·Á¼°¤Ï¡¢¹çÃפ¹¤ë¥°¥ê¥Õ¥³¡¼¥É¤ÎÎó¤ò»ØÄꤹ¤ë¡£
-¤³¤Î¾ì¹ç¡¢¤³¤Îµ¬Â§¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È¤ò 0 ¤Ë¥ê¥»¥Ã¥È¤¹¤ë¡£
-
-Æó¤Ä¤á¤Î·Á¼°¤Ï¡¢¥³¡¼¥ÉÎó¤ÎºÇ½é¤Î¥°¥ê¥Õ¥³¡¼¥É¤ÎÈϰϤò»ØÄꤹ¤ë¡£¤³¤Î¾ì¹ç¡¢
-¤³¤Îµ¬Â§¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È¤òºÇ½é¤Î¥°¥ê¥Õ¥³¡¼¥É¤«¤éÈϰϤò»Ø
-Äꤹ¤ë½é¤á¤Î @c CODE ¤ò°ú¤¤¤¿¤â¤Î¤ËÀßÄꤹ¤ë¡£
-
-¹çÃפ¹¤ëÉôʬ¤¬Ìµ¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£
-
-@verbatim
-COND-BLOCK ::= '(' 'cond' RULE + ')'
-@endverbatim
-
-¤³¤Îµ¬Â§¤Ï @c RULE ¤ò½ç¤Ë¡¢¤É¤ì¤«¤¬À®¸ù¤¹¤ë¤Þ¤Ç¼Â¹Ô¤¹¤ë¡£¤É¤Î¥ë¡¼¥ë¤â
-À®¸ù¤·¤Ê¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÀ®¸ù¤Ç¤¢¤ë¡£
-
-@verbatim
-OTF-SPEC ::= SYMBOL
-@endverbatim
-
-@c OTF-SPEC ¤Ï¡¢OTF ¥É¥é¥¤¥Ð¤Ø¤Î»Ø¼¨¤ò»ØÄꤹ¤ë̾Á°¤ò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£
-̾Á°¤Ï°Ê²¼¤Îʸˡ¤Ë½¾¤¦¡£
-
-@verbatim
-  OTF-SPEC-NAME ::= 'otf:' SCRIPT LANGSYS ? GSUB-FEATURES ? GPOS-FEATURES ?
-
-  SCRIPT ::= SYMBOL
-
-  LANGSYS ::= '/' SYMBOL
-
-  GSUB-FEATURES ::= '=' FEATURE-LIST ?
-
-  GPOS-FEATURES ::= '+' FEATURE-LIST ?
-
-  FEATURE-LIST ::= ( SYMBOL ',' ) * [ SYMBOL | '*' ]
-
-@endverbatim
-
-³Æ @c SYMBOL ¤Ï OpenType specification Ãæ¤Ç¤Î¥¿¥°Ì¾¤ò»ØÄꤹ¤ë¡£
-
-@c SCRIPT ¤Ë¤Ä¤¤¤Æ¤Ï¡¢@c SYMBOL ¤Ï¥¹¥¯¥ê¥×¥È¥¿¥°Ì¾¤òɽ¤¹¡£Devanagari 
-¤Ï deva ¤Ê¤É¡£)
-
-@c LANGSYS ¤Î¾ì¹ç¤Ï¡¢@c SYMBOL ¤Ï¸À¸ì¥·¥¹¥Æ¥à¥¿¥°Ì¾¤ò»ØÄꤹ¤ë¡£@c
-LANGSYS ¤¬¾Êά¤µ¤ì¤ì¤Ð¡¢¥Ç¥Õ¥©¥ë¥È¤Î¸À¸ì¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤¬»ÈÍѤµ¤ì¤ë¡£
-
-@c GSUB-FEATURES ¤Ç¤Ï¡¢ @c FEATURE LIST Ãæ¤Î³Æ @c SYMBOL ¤Ï Å¬ÍѤ¹¤ë 
-GSUB feature ¥¿¥°Ì¾¤ò»ØÄꤹ¤ë¡£'*' ¤Ï»Ä¤ê¤¹¤Ù¤Æ¤Î feature ¤ò»ØÄꤹ¤ë¤¿
-¤á¤ËºÇ¸å¤ÎÍ×ÁǤȤ·¤ÆÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ @c SYMBOL ¤ÎÁ°¤Ë'~' ¤¬¤Ä¤¤¤Æ
-¤ª¤ê¡¢ºÇ¸å¤ÎÍ×ÁǤ¬ '*' ¤Ê¤é¤Ð¡¢@c SYMBOL ¤ÏŬÍѤ¹¤ëfeature ¤«¤é½ü¤«¤ì
-¤ë¡£@c SYMBOL ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢GSUB feature ¤ÏŬÍѤµ¤ì¤Ê¤¤¡£@c
-GSUB-FEATURES ¼«ÂΤ¬¾Êά¤µ¤ì¤ì¤Ð¤¹¤Ù¤Æ¤Î GSUB feature ¤¬Å¬ÍѤµ¤ì¤ë¡£
-
-@c GPOS-FEATURES ¤Î»ØÄê¤Ï @c GSUB-FEATURES ¤Î¾ì¹ç¤ÈƱÍͤǤ¢¤ë¡£
-
-Á´¤Æ¤Î¥¿¥°Ì¾¤Ï ASCII ¤Î£´Ê¸»ú¤Ç¤¢¤ë¤³¤È¡£
-
-OpenType ¤Î»ØÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¼¡¤Î¥Ú¡¼¥¸¤ò»²¾È¤Î¤³¤È¡£\n
-    <http://www.microsoft.com/typography/otspec/default.htm>
-
-@verbatim
-COMBINING ::= SYMBOL
-@endverbatim
-
-@c COMBINING ¤Ï¡¢ ¼¡¤Î¥°¥ê¥Õ¤òÁ°¤Î¤â¤Î¤È¤É¤¦·ë¹ç¤¹¤ë¤«¤Î»Ø¼¨¤ò̾Á°¤È¤·
-¤Æ»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£¤³¤Î¥ë¡¼¥ë¤Ï¥Ç¥Õ¥©¥ë¥È¤Î·ë¹çµ¬Â§¤ò¥·¥ó¥Ü¥ë̾¸ÇÍ­
-¤ÎÀ°¿ô¥³¡¼¥É¤Ë¥»¥Ã¥È¤¹¤ë¡£Ì¾Á°¤Ï°Ê²¼¤Îʸˡ¤Ë½¾¤¦¡£
-following syntax.
-
-@verbatim
-  COMBINING-NAME ::= VPOS HPOS OFFSET VPOS HPOS
-
-  VPOS ::= 't' | 'c' | 'b' | 'B'
-
-  HPOS ::= 'l' | 'c' | 'r'
-
-  OFFSET :: = '.' | XOFF | YOFF XOFF ?
-
-  XOFF ::= ('<' | '>') INTEGER ?
-
-  YOFF ::= ('+' | '-') INTEGER ?
-@endverbatim
-
-@c VPOS ¤È @c HPOS ¤Ï¼¡¤Î¤è¤¦¤Ë¿âľ¡¢¿åÊ¿°ÌÃÖ¤ò»ØÄꤹ¤ë¡£
-
-@verbatim
-                                POINT VPOS HPOS
-                                ----- ---- ----
-    0----1----2 <---- top       0     t    l
-    |         |                 1     t    c
-    |         |                 2     t    r
-    |         |                 3     B    l
-    9   10   11 <---- center    4     B    c
-    |         |                 5     B    r
-  --3----4----5-- <-- baseline  6     b    l
-    |         |                 7     b    c
-    6----7----8 <---- bottom    8     b    r
-                                9     c    l
-    |    |    |                10     c    c
-  left center right            11     c    r
-@endverbatim
-
-º¸¤Î¿Þ¤Ï¤¢¤ë¥°¥ê¥Õ¤Î 12 ¤Î»²¾ÈÅÀ¤ò 0 ¤«¤é 11 ¤Þ¤Ç¤Î¿ô»ú¤Ç¼¨¤·¤Æ¤¤¤ë¡£
-»Í³Ñ·Á 0-6-8-2 ¤Ï¥°¥ê¥Õ¤Îɽ¼¨Îΰè¤Ç¤¢¤ê¡¢°ÌÃÖ3, 4, 5 ¤Ï¥Ù¡¼¥¹¥é¥¤¥ó¾å
-¤Ë¤¢¤ë¡£ 9 ¤È 11 ¤Ï¤½¤ì¤¾¤ìÀþ0-6 ¤È 2-8 ¤ÎÃæ¿´¤Ç¤¢¤ë¡£1, 10, 4, 7 ¤Ï¤½
-¤ì¤¾¤ìÀþ1-2, 3-5, 9-11, 6-8 ¤ÎÃæ¿´¤Ç¤¢¤ë¡£
-
-±¦¤Îɽ¤Ï¡¢³Æ»²¾ÈÅÀ¤¬@c VPOS ¤È @c HPOS ¤ÎÁȹ礻¤Ë¤è¤Ã¤Æ¤É¤Î¤è¤¦¤Ë»ØÄê
-¤µ¤ì¤ë¤«¤ò¼¨¤·¤Æ¤¤¤ë¡£
-
-@c COMBINING-NAME ¤ÎÄêµÁÃæ¤ÎºÇ½é¤Î @c VPOS ¤È @c HPOS ¤Ï¡¢Á°¤Î¥°¥ê¥Õ¤Î
-»²¾ÈÅÀ¤ò¡¢Æó¤ÄÌܤΠ@c VPOS ¤È @c HPOS ¤Ï¼¡¤Î¥°¥ê¥Õ¤Î»²¾ÈÅÀ¤ò»ØÄꤹ¤ë¡£
-¼¡¤Î¥°¥ê¥Õ¤Ï¤³¤ÎÆó¸Ä¤Î»²¾ÈÅÀ¤¬½Å¤Ê¤ë¤è¤¦¤ËÉÁ¤«¤ì¤ë¡£
-
-@c OFFSET ¤Ï½Å¤Ê¤ê¤«Â¾¤Î¾ÜºÙ¤ò»ØÄꤹ¤ë¡£'.' ¤Ç¤¢¤ì¤Ð¡¢»²¾ÈÅÀÆó¤Ä¤ÏƱ¤¸
-°ÌÃ֤ˤ¢¤ë¡£
-
-@c XOFF ¤Ï¡¢¼¡¤Î¥°¥ê¥Õ¤Î»²¾ÈÅÀ¤Î X ºÂɸ¤ò¡¢Á°¤Î»²¾ÈÅÀ¤«¤é¤É¤ì¤Û¤É±¦ 
-('<') ¤¢¤ë¤¤¤Ïº¸ ('>') ¤Ø¤º¤é¤¹¤«»ØÄꤹ¤ë¡£
-
-@c YOFF ¤Ï¡¢¼¡¤Î¥°¥ê¥Õ¤Î»²¾ÈÅÀ¤Î Y ºÂɸ¤ò¡¢Á°¤Î»²¾ÈÅÀ¤«¤é¤É¤ì¤Û¤É¾å 
-('+') ¤¢¤ë¤¤¤Ï²¼ ('-') ¤Ø¤º¤é¤¹¤«»ØÄꤹ¤ë¡£
-
-¤É¤Á¤é¤Î¾ì¹ç¤Ë¤â¡¢@c INTEGER ¤Ï¥Õ¥©¥ó¥È¥µ¥¤¥º¤Î²¿¡ó¤º¤é¤¹¤«¤ò¼¨¤¹ÃͤÇ
-¤¢¤ë¡£¤¹¤Ê¤ï¤Á¡¢¤â¤· @c INTEGER ¤¬ 10 ¤Ê¤é¤Ð¥Õ¥©¥ó¥È¥µ¥¤¥º¤Î10% (1/10) 
-¤º¤é¤¹¤³¤È¤Ë¤Ê¤ë¡£ @c INTEGER ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢5 ¤¬»ØÄꤵ¤ì¤¿¤â¤Î
-¤È¤¹¤ë¡£
-
-¼¡¤Î¥°¥ê¥Õ¤¬Á°¤Î¥°¥ê¥Õ¤Ë·ë¹ç¤µ¤ì¤ë¤È¡¢¤½¤ì¤é¤Ï°ì¤Ä¤Î·ë¹ç¥°¥ê¥Õ¤È¤·¤Æ°·
-¤ï¤ì¤ë¡£
-
-@verbatim
-MACRO-NAME ::= SYMBOL
-@endverbatim
-
-@c MACRO-NAME ¤Ï @c MACRO-DEF ¤Î¤¤¤º¤ì¤«¤Ë¸½¤ï¤ì¤ë¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢Âбþ
-¤¹¤ë@c RULE ¤ÎÎó¤ËŸ³«¤µ¤ì¤ë¡£
-
-@subsection flt-context-dependent Ê¸Ì®¤Ë°Í¸¤¹¤ë¿¶Éñ
-
-¤³¤³¤Þ¤Ç¤Ï¡¢ÆÃÄê¤Î¥Õ¥©¥ó¥È¤ÇÉÁ¤«¤ì¤ë³Æʸ»ú¡¿¥°¥ê¥ÕÎó¤¬Ê¸Ì®¼«Í³¤Ç¤¢¤ë¤³
-¤È¡¢¤¹¤Ê¤ï¤ÁÁ°¸å¤Î¥°¥ê¥Õ¤Ë±Æ¶Á¤µ¤ì¤Ê¤¤¤³¤È¤òÁ°Äó¤È¤·¤Æ¤­¤¿¡£¤³¤ì¤Ï¡¢Îó 
-S1 ¤¬¥Õ¥©¥ó¥ÈF1 ¤Ë¤è¤Ã¤ÆÉÁ¤«¤ì¡¢Àè¹Ô¤¹¤ëÎó S0 ¤¬¾ï¤Ë¥Õ¥©¥ó¥È F0 ¤òÍ×µá
-¤¹¤ë¾ì¹ç¤Ë¤ÏÀµ¤·¤¤¡£
-
-@verbatim
-  Îó                            S0      S1
-  ¸½¹Ô¤Î¥Õ¥©¥ó¥È                F0      F1
-  ÍøÍѲÄǽ¤Ê¥Õ¥©¥ó¥È            F0      F1
-@endverbatim
-
-¤·¤«¤·»þ¤Ë¤Ï¡¢Îó¤òÌÀ³Î¤Ë¶èÀڤ뤳¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤â¤¢¤ë¡£Àè¹Ô¤¹¤ëÎó S0
-¤¬ F0 ¤À¤±¤Ç¤Ê¤¯ F1 ¤Ç¤âÉÁ¤±¤ë¤È¤·¤è¤¦¡£
-
-@verbatim
-  Îó                            S0      S1
-  ¸½¹Ô¤Î¥Õ¥©¥ó¥È                F0      F1
-  ÍøÍѲÄǽ¤Ê¥Õ¥©¥ó¥È            F0,F1   F1
-@endverbatim
-
-¤³¤Î¾ì¹ç¡¢Àè¹Ô¤¹¤ë S0 ¤òÉÁ¤¯¤¿¤á¤Ë»È¤ï¤ì¤¿¥°¥ê¥Õ¤¬ S1 ¤Î¥°¥ê¥Õ¤ÎÀ¸À®¤Ë
-±Æ¶Á¤òÍ¿¤¨¤ë¤³¤È¤â¤¢¤ë¡£¤½¤³¤Ç S1 ¤Î½èÍý¤ÎºÝ¤Ë¤¹¤Ç¤Ë½èÍý¤Î½ª¤Ã¤¿ S0 ¤Ë
-´Ø¤¹¤ë¾ðÊó¤Ë¥¢¥¯¥»¥¹¤¹¤ëɬÍפ¬¤¢¤ë¡£ºÇ½é¤Î¥¹¥Æ¡¼¥¸¡Ê¤³¤Î¥¹¥Æ¡¼¥¸¤Î¤ß¡Ë
-¤ÎÀ¸À®µ¬Â§¤Ï¡¢½èÍýºÑ¤ß¤ÎÉôʬ¤Ø¥¢¥¯¥»¥¹¤¹¤ëÆÃÊ̤ÊÀµµ¬É½¸½¤òµö¤·¤Æ¤¤¤ë¡£
-
-@verbatim
-  "RE0 RE1"
-@endverbatim
-
-@c RE0 ¤È @c RE1 ¤ÏÀè¹Ô¤ÎÎó S0 ¤È¸å³¤ÎÎó S1 ¤Ë¤½¤ì¤¾¤ìÂбþ¤¹¤ëÀµµ¬É½
-¸½¤Ç¤¢¤ë¡£
-
-Æó¤Ä¤ÎÀµµ¬É½¸½¤Î´Ö¤Î¥¹¥Ú¡¼¥¹¤ËÃí°Õ¡£¤³¤ì¤ÏÆÃÊ̤ʥ«¥Æ¥´¥ê ' ' ¤ò¼¨¤·¤Æ
-¤¤¤ë (¾åµ­»²¾È) ¡£¤³¤ÎÀµµ¬É½¸½¤Ï¥Õ¥©¥ó¥È F1 ¤ò»ÈÍѤ¹¤ë¥°¥ê¥ÕÀ¸À®µ¬Â§¤Ë
-°¤·¤Æ¤ª¤ê¡¢¤·¤¿¤¬¤Ã¤Æ RE1 ¤À¤±¤Ç¤Ê¤¯RE0 ¤â F1 ÍѤΥ«¥Æ¥´¥ê¤òÍѤ¤¤Æɽ
-¸½¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¢Àè¹Ô¤¹¤ëÎóS0 ¤¬ F1 ÍѤΥ«¥Æ¥´¥ê¤Çɽ¤»
-¤Ê¤¤¾ì¹ç¤Ë¤Ï(¾å¤ÎºÇ½é¤ÎÎã¤Î¤è¤¦¤Ë) ¤³¤Î¥Ñ¥¿¡¼¥ó¤ò»ý¤ÄÀ¸À®µ¬Â§¤Ë¤Ï¹çÃ×
-¤·¤Ê¤¤¡£
-
-@subsection flt-seealso »²¾È
-
-@ref mdbGeneral "mdbGeneral(5)", 
-@ref flt-list "FLTs provided by the m17n database"
-*/
-/***en
-
-@section mdbFLT Font Layout Table
-
-@subsection flt-description DESCRIPTION
-
-For simple scripts, the rendering engine converts character codes into glyph
-codes one by one by consulting the encoding of each selected font.
-But, to render text that requires complicated layout (e.g. Thai and
-Indic scripts), one to one conversion is not sufficient.  A sequence
-of characters may have to be drawn as a single ligature.  Some
-glyphs may have to be drawn at 2-dimensionally shifted positions.
-
-To handle those complicated scripts, the m17n library uses Font Layout
-Tables (FLTs for short).  The FLT driver interprets an FLT and
-converts a character sequence into a glyph sequence that is ready to
-be passed to the rendering engine.
-
-An FLT can contain information to extract a grapheme cluster from a
-character sequence and to reorder the characters in the cluster, in
-addition to information found in OpenType Layout Tables (CMAP, GSUB,
-and GPOS).
-
-An FLT is a cascade of one or more conversion stages.  In each stage, a
-sequence is converted into another sequence to be read in the
-next stage.  The length of sequences may differ from stage to
-stage.  Each element in a sequence has the following integer attributes.
-
-<ul>
-<li> code
-
-In the first conversion stage, this is the character code in the
-original character sequence.  In the last stage, it is the glyph code
-passed to the rendering engine.  In other cases, it is an intermediate
-glyph code.
-
-<li> category
-
-This is the category code defined in the @c CATEGORY-TABLE
-of the current stage.
-
-<li> combining-spec
-
-If nonzero, it specifies how to combine this (intermediate) glyph
-with the previous one.
-
-<li> left-padding-flag
-
-If nonzero, it instructs the rendering function to insert a padding
-space before this (intermediate) glyph so that the glyph does not
-overlap with the previous one.
-
-<li> right-padding-flag
-
-If nonzero, it instructs the rendering function to insert a padding
-space after this (intermediate) glyph so that the glyph does not
-overlap with the next one.
-
-</ul>
-
-When the layout engine draws text, it at first determines a font and
-an FLT for each character in the text.  For each subsequence of
-characters that use use the same font and FLT, the layout engine
-generates an intermediate glyph sequence from the character
-subsequence.  Each element in the intermediate glyph sequence
-has the corresponding character code as the code attribute and zeroes
-for other attributes.  This sequence is processed in the
-first stage of FLT as the current @e run (substring).
-
-Each stage works as follows.
-
-At first, if the stage has a @c CATEGORY-TABLE, the category of each glyph
-in the current run is updated.  If there is a glyph that has no category,
-the current run ends before that glyph.
-
-Then, the default values of code-offset, combining-spec, and left-padding-flag
-of this stage are initialized to zero.
-
-Next, the initial conversion rule of the stage is applied to the
-current run.
-
-Lastly, the current run is replaced with the newly produced
-(intermediate) glyph sequence.
-
-@subsection flt-syntax SYNTAX and SEMANTICS
-
-The m17n library loads an FLT from the m17n database using the tag
-\<font, layouter, FLT-NAME\>.  The date format of an FLT is as follows:
-
-@verbatim
-FONT-LAYOUT-TABLE ::= STAGE0 STAGE *
-
-STAGE0 ::= CATEGORY-TABLE GENERATOR
-
-STAGE ::= CATEGORY-TABLE ? GENERATOR
-
-CATEGORY-TABLE ::= '(' 'category' CATEGORY-SPEC + ')'
-
-CATEGORY-SPEC ::= '(' CODE CATEGORY ')'
-                  | '(' CODE CODE CATEGORY ')'
-
-CODE ::= INTEGER
-
-CATEGORY ::= INTEGER
-@endverbatim
-
-In the definition of @c CATEGORY-SPEC, @c CODE is a glyph code, and @c
-CATEGORY is ASCII code of an upper or lower letter, i.e. one of 'A',
-... 'Z', 'a', .. 'z'.
-
-The first form of @c CATEGORY-SPEC assigns @c CATEGORY to a glyph
-whose code @c CODE.  The second form assigns @c CATEGORY to glyphs
-whose code falls between the two @c CODEs.
-
-@verbatim
-GENERATOR ::= '(' 'generator' RULE MACRO-DEF * ')'
-
-RULE ::= REGEXP-BLOCK | MATCH-BLOCK | SUBST-BLOCK | COND-BLOCK
-         | DIRECT-CODE | COMBINING-SPEC | OTF-SPEC
-         | PREDEFINED-RULE | MACRO-NAME
-
-MACOR-DEF ::= '(' MACRO-NAME RULE + ')'
-@endverbatim
-
-Each @c RULE specifies glyphs to be consumed and glyphs to be produced.  When
-some glyphs are consumed, they are taken away from the current run.  A
-rule may fail in some condition.  If not described explicitly to
-fail, it should be regarded that the rule succeeds.
-
-@verbatim
-DIRECT-CODE ::= INTEGER
-@endverbatim
-
-This rule consumes no glyph and produces a glyph which has the
-following attributes:
-
-<ul>
-<li> code : @c INTEGER plus the default code-offset
-<li> combining-spec : default value
-<li> left-padding-flag : default value
-<li> right-padding-flag : zero
-</ul>
-
-After having produced the glyph, the default code-offset,
-combining-spec, and left-padding-flag are all reset to zero.
-
-@verbatim
-PREDEFINED-RULE ::= '=' | '*' | '<' | '>' | '|' | '[' | ']'
-@endverbatim
-
-They perform actions as follows.
-
-<ul>
-<li> @c =
-
-This rule consumes the first glyph in the current run and produces the
-same glyph.  It fails if the current run is empty.
-
-<li> @c *
-
-This rule repeatedly executes the previous rule.
-If the previous rule fails, this rule does nothing and fails.
-
-<li> @c @<
-
-This rule specifies the start of a grapheme cluster.
-
-<li> @c @>
-
-This rule specifies the end of a grapheme cluster.
-
-<li> @c @[
-
-This rule sets the default left-padding-flag to 1.
-No glyph is consumed.  No glyph is produced.
-
-<li> @c @]
-
-This rule changes the right-padding-flag of the lastly generated
-glyph to 1.
-No glyph is consumed.  No glyph is produced.
-
-<li> @c |
-
-This rule consumes no glyph and produces a special glyph whose
-category is ' ' and other attributes are zero.  
-This is the only rule that produces that special glyph.
-
-</ul>
-
-@verbatim
-REGEXP-BLOCK ::= '(' REGEXP RULE * ')'
-
-REGEXP ::= MTEXT
-@endverbatim
-
-@c MTEXT is a regular expression that should match the sequence of
-categories of the current run.  If a match is found, this rule
-executes @c RULEs temporarily limiting the current run to the matched
-part.  The matched part is consumed by this rule.
-
-Parenthesized subexpressions, if any, are recorded to be used in @c
-MATCH-BLOCK that may appear in one of @c RULEs.
-
-If no match is found, this rule fails.
-
-@verbatim
-MATCH-BLOCK ::= '(' MATCH-INDEX RULE * ')'
-
-MATCH-INDEX ::= INTEGER
-@endverbatim
-
-@c MATCH-INDEX is an integer specifying a parenthesized subexpression
-recorded by the previous @c REGEXP-BLOCK.  If such a subexpression was
-found by the previous regular expression matching, this rule executes @c
-RULEs temporarily limiting the current run to the matched part
-of the subexpression.  The matched part is consumed by this rule.
-
-If no match was found, this rule fails.
-
-If this is the first rule of the stage, @c MATCH-INDEX must be 0, and
-it matches the whole current run.
-
-@verbatim
-SUBST-BLOCK ::= '(' SOURCE-PATTERN RULE * ')'
-
-SOURCE-PATTERN ::= '(' CODE + ')'
-                   | (' 'range' CODE CODE ')'
-@endverbatim
-
-If the sequence of codes of the current run matches @c SOURCE-PATTERN,
-this rule executes @c RULEs temporarily limiting the current run to
-the matched part.  The matched part is consumed.
-
-The first form of @c SOURCE-PATTERN specifies a sequence of glyph codes to be
-matched.  In this case, this rule resets the default code-offset to
-zero.
-
-The second form specifies a range of codes that should match the first
-glyph code of the code sequence.  In this case, this rule sets the
-default code-offset to the first glyph code minus the first @c CODE
-specifying the range.
-
-
-If no match is found, this rule fails.
-
-@verbatim
-COND-BLOCK ::= '(' 'cond' RULE + ')'
-@endverbatim
-
-This rule sequentially executes @c RULEs until one succeeds.  If no
-rule succeeds, this rule fails.  Otherwise, it succeeds.
-
-@verbatim
-OTF-SPEC ::= SYMBOL
-@endverbatim
-
-@c OTF-SPEC is a symbol whose name specifies an instruction to the OTF
-driver.  The name has the following syntax.
-
-@verbatim
-  OTF-SPEC-NAME ::= 'otf:' SCRIPT LANGSYS ? GSUB-FEATURES ? GPOS-FEATURES ?
-
-  SCRIPT ::= SYMBOL
-
-  LANGSYS ::= '/' SYMBOL
-
-  GSUB-FEATURES ::= '=' FEATURE-LIST ?
-
-  GPOS-FEATURES ::= '+' FEATURE-LIST ?
-
-  FEATURE-LIST ::= ( SYMBOL ',' ) * [ SYMBOL | '*' ]
-
-@endverbatim
-
-Each @c SYMBOL specifies a tag name defined in the OpenType
-specification.
-
-For @c SCRIPT, @c SYMBOL specifies a Script tag name (e.g. deva for
-Devanagari).
-
-For @c LANGSYS, @c SYMBOL specifies a Language System tag name.  If @c
-LANGSYS is omitted, the Default Language System
-table is used.
-
-For @c GSUB-FEATURES, each @c SYMBOL in @c FEATURE LIST specifies a GSUB Feature tag name
-to apply.  '*' is allowed as the last item to specify all remaining
-features.  If @c SYMBOL is preceded by '~' and the last item is '*',
-@c SYMBOL is excluded from the features to apply.  If no @c SYMBOL is
-specified, no GSUB feature is applied.  If @c GSUB-FEATURES itself is
-omitted, all GSUB features are applied.
-
-The specification of @c GPOS-FEATURES is analogous to that of @c
-GSUB-FEATURES.
-
-Please note that all the tags above must be 4 ASCII printable characters.
-
-See the following page for the OpenType specification.\n
-    <http://www.microsoft.com/typography/otspec/default.htm>
-
-@verbatim
-COMBINING ::= SYMBOL
-@endverbatim
-
-@c COMBINING is a symbol whose name specifies how
-to combine the next glyph with the previous one.  This rule sets the
-default combining-spec to an integer code that is unique to the symbol
-name.  The name has the following syntax.
-
-@verbatim
-  COMBINING-NAME ::= VPOS HPOS OFFSET VPOS HPOS
-
-  VPOS ::= 't' | 'c' | 'b' | 'B'
-
-  HPOS ::= 'l' | 'c' | 'r'
-
-  OFFSET :: = '.' | XOFF | YOFF XOFF ?
-
-  XOFF ::= ('<' | '>') INTEGER ?
-
-  YOFF ::= ('+' | '-') INTEGER ?
-@endverbatim
-
-@c VPOS and @c HPOS specify the vertical and horizontal positions
-as described below.
-
-@verbatim
-                                POINT VPOS HPOS
-                                ----- ---- ----
-    0----1----2 <---- top       0     t    l
-    |         |                 1     t    c
-    |         |                 2     t    r
-    |         |                 3     B    l
-    9   10   11 <---- center    4     B    c
-    |         |                 5     B    r
-  --3----4----5-- <-- baseline  6     b    l
-    |         |                 7     b    c
-    6----7----8 <---- bottom    8     b    r
-                                9     c    l
-    |    |    |                10     c    c
-  left center right            11     c    r
-@endverbatim
-
-The left figure shows 12 reference points of a glyph by numbers 0 to
-11.  The rectangle 0-6-8-2 is the bounding box of the glyph, the
-positions 3, 4, and 5 are on the baseline, 9 and 11 are on the center
-of the lines 0-6 and 2-8 respectively, 1, 10, 4, and 7 are on the
-center of the lines 1-2, 3-5, 9-11, and 6-8 respectively.
-
-The right table shows how those reference points are specified by a
-pair of @c VPOS and @c HPOS.
-
-The first @c VPOS and @c HPOS in the definition of @c COMBINING-NAME
-specify the
-reference point of the previous glyph, and the second @c VPOS and @c
-HPOS specify that of the next glyph.
-The next glyph is drawn so that these two reference points align.
-
-@c OFFSET specifies the way of alignment in detail.  If it is '.', the
-reference points are on the same position.
-
-@c XOFF specifies how much the X position of the reference point of
-the next glyph should be shifted to the right ('<') or left ('>') from
-the previous reference point.
-
-@c YOFF specifies how much the Y position of the reference point the
-next glyphshould be shifted upward ('+') or downward ('-') from the
-previous reference point.
-
-In both cases, @c INTEGER is the amount of shift expressed as a
-percentage of the font size, i.e., if @c INTEGER is 10, it means
-10% (1/10) of the font size.  If @c INTEGER is omitted, it is assumed that
-5 is specified.
-
-Once the next glyph is combined with the previous one, they
-are treated as a single combined glyph.
-
-@verbatim
-MACRO-NAME ::= SYMBOL
-@endverbatim
-
-@c MACRO-NAME is a symbol that appears in one of @c MACRO-DEF.  It is
-exapanded to the sequence of the correponding @c RULEs.
-
-@subsection flt-context-dependent CONTEXT DEPENDENT BEHAVIOR
-
-So far, it has been assumed that each sequence, which is drawn with a
-specific font, is context free, i.e. not affected by the glyphs
-preceding or following that sequence.  This is true when sequence S1
-is drawn with font F1 while the preceding sequence S0 unconditionally
-requires font F0.
-
-@verbatim
-  sequence                              S0      S1
-  currently used font                   F0      F1
-  usable font(s)                        F0      F1
-@endverbatim
-
-Sometimes, however, a clear separation of sequences is not possible.
-Suppose that the preceding sequence S0 can be drawn not only with F0
-but also with F1.
-
-@verbatim
-  sequence                              S0      S1
-  currently used font                   F0      F1
-  usable font(s)                        F0,F1   F1
-@endverbatim
-
-In this case, glyphs used to draw the preceding S0 may affect glyph
-generation of S1.  Therefore it is necessary to access information
-about S0, which has already been processed, when processing S1.
-Generation rules in the first stage (only in the first stage) accept a
-special regular expression to access already processed parts.
-
-@verbatim
-  "RE0 RE1"
-@endverbatim
-
-@c RE0 and @c RE1 are regular expressions that match the preceding
-sequence S0 and the following sequence S1, respectively.
-
-Pay attention to the space between the two regular expressions.  It
-represents the special category ' ' (see above).  Note that the
-regular expression above belongs to glyph generation rules using font
-F1, therefore not only RE1 but also RE0 must be expressed with the
-categories for F1.  This means when the preceding sequence S0 cannot
-be expressed with the categories for F1 (as in the first example
-above) generation rules having these patterns never match.
-
-@subsection flt-seealso SEE ALSO
-
-@ref mdbGeneral "mdbGeneral(5)", 
-@ref flt-list "FLTs provided by the m17n database"
-*/
-/***ja
-
-@section mdbFontEncoding ¥Õ¥©¥ó¥È¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
-
-@subsection font-encoding-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï¡¢m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é \<font, encoding\> ¥¿¥°¤Ë¤è¤Ã
-¤Æ¸Ä¡¹¤Î¥Õ¥©¥ó¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ë´Ø¤¹¤ë¾ðÊó¤ò¥í¡¼¥É¤¹¤ë¡£¤³¤Î¥Ç¡¼¥¿
-¤Ï°Ê²¼¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·¤Æ¥í¡¼¥É¤µ¤ì¤ë¡£
-
-@verbatim
-FONT-ENCODING ::= PER-FONT *
-
-PER-FONT ::= '(' FONT-SPEC ENCODING [ REPERTORY ] ')'
-
-FONT-SPEC ::=
-    '(' [ FOUNDRY FAMILY
-         [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-       REGISTRY ')'
-
-ENCODING ::= SYMBOL
-@endverbatim
-
-@c FONT-SPEC ¤Ï¥Õ¥©¥ó¥È¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¡£@c FOUNDRY ¤«¤é @c
-REGISTRY ¤Ï¥Õ¥©¥ó¥È¤Î #Mfoundry ¤«¤é #Mregistry ¥×¥í¥Ñ¥Æ¥£¤ËÂбþ¤¹¤ë¥·
-¥ó¥Ü¥ë¤Ç¤¢¤ë¡£³Æ¥×¥í¥Ñ¥Æ¥£¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï @ref m17nFont »²¾È¡£
-
-¤¿¤È¤¨¤Ð¤³¤Î @c FONT-SPEC:
-
-@verbatim
-    (nil alice0\ lao iso8859-1)
-@endverbatim
-
-¤Ï¥Õ¥©¥ó¥È¤Î¥Õ¥¡¥ß¥ê̾¤¬ "alice0 lao" ¤Ç¥ì¥¸¥¹¥È¥ê¤¬ "iso8859-1" ¤Ç¤¢
-¤ë¤¹¤Ù¤Æ¤Î¥Õ¥©¥ó¥È¤ËŬÍѤǤ­¤ë¡£
-
-@c ENCODING ¤Ïʸ»ú¥»¥Ã¥È¤ò¼¨¤¹¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£@c FONT-SPEC ¤Ë¹çÃפ¹¤ë
-¥Õ¥©¥ó¥È¤Ï¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤ÎÁ´Ê¸»ú¤ò¥µ¥Ý¡¼¥È¤·¡¢¤½¤Îʸ»ú¥»¥Ã¥È¤Ë¤è¤Ã¤Æ
-ʸ»ú¥³¡¼¥É¤Ï¤½¤Î¥Õ¥©¥ó¥È¤ÎÂбþ¤¹¤ë¥°¥ê¥Õ¥³¡¼¥É¤Ë¥Þ¥Ã¥×¤µ¤ì¤ë¡£
-
-@c REPERTORY ¤Ïʸ»ú¥»¥Ã¥È¤ò¼¨¤¹¥·¥ó¥Ü¥ë¤« "nil" ¤Ç¤¢¤ë¡£¾Êά¤·¤¿¾ì¹ç¤Ï¡¢
-@c ENCODING ¤ò @c REPERTORY ¤Ë»ØÄꤷ¤¿¤Î¤ÈƱ¤¸°ÕÌ£¤Ë¤Ê¤ë¡£"nil" ¤Ç¤Ê¤±
-¤ì¤Ð¡¢Ê¸»ú¥»¥Ã¥È¤Ï¥Õ¥©¥ó¥È¤Î¥ì¥Ñ¡¼¥È¥ê¡¢¤¹¤Ê¤ï¤Á¥µ¥Ý¡¼¥È¤¹¤ëʸ»ú¤ò¼¨¤¹¡£
-¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢ÆÃÄê¤Îʸ»ú¤¬¤½¤Î¥Õ¥©¥ó¥È¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï
-¸Ä¡¹¤Î¥Õ¥©¥ó¥È¥É¥é¥¤¥Ð¤ËÌ䤤¹ç¤ï¤»¤ë¡£
-
-¤¤¤ï¤æ¤ë¥æ¥Ë¥³¡¼¥É¥Õ¥©¥ó¥È (¥ì¥¸¥¹¥È¥ê¤Ï "iso10646-1") ¤Ë¤Ä¤¤¤Æ¤Ï¡¢Éá
-ÄÌ¥æ¥Ë¥³¡¼¥Éʸ»ú¤Î°ìÉô¤·¤«¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢@c REPERTORY ¤ò 
-"nil" ¤Ë¤¹¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£     */
-/***en
-
-@section mdbFontEncoding Font Encoding
-
-@subsection font-encoding-description DESCRIPTION
-
-The m17n library loads information about the encoding of each font
-form the m17n database by the tags \<font, encoding\>.  The data is
-loaded as a plist of this format.
-
-@verbatim
-FONT-ENCODING ::= PER-FONT *
-
-PER-FONT ::= '(' FONT-SPEC ENCODING [ REPERTORY ] ')'
-
-FONT-SPEC ::=
-    '(' [ FOUNDRY FAMILY
-         [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-       REGISTRY ')'
-
-ENCODING ::= SYMBOL
-@endverbatim
-
-@c FONT-SPEC is to specify properties of a font.  @c FOUNDRY to @c
-REGISTRY are symbols corresponding to #Mfoundry to #Mregistry property
-of a font.  See @ref m17nFont for the meaning of each property.
-
-For instance, this @c FONT-SPEC:
-
-@verbatim
-    (nil alice0\ lao iso8859-1)
-@endverbatim
-
-should be applied to all fonts whose family name is "alice0 lao", and
-registry is "iso8859-1".
-
-@c ENCODING is a symbol representing a charset.  A font matching @c
-FONT-SPEC supports all characters of the charset, and a character code
-is mapped to the corresponding glyph code of the font by this charset.
-
-@c REPERTORY is a symbol representing a charset or "nil".  Omitting it
-is the same as specifying @c ENCODING as @c REPERTORY.  If it is not
-"nil", the charset specifies the repertory of the font, i.e, which
-character it supports.  Otherwise, whether a specific character is
-supported by the font or not is asked to each font driver.
-
-For so called Unicode fonts (registry is "iso10646-1"), it is
-recommended to specify "nil" as @c REPERTORY because such fonts
-usually supports only a subset of Unicode characters.  */
-/***ja
-
-@section mdbFontSize ¥Õ¥©¥ó¥È¥µ¥¤¥º
-
-@subsection font-size-description ÀâÌÀ
-
-»þ¤Ë¥Õ¥©¥ó¥È¤Ï¤½¤Î¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¸í¤Ã¤¿¾ðÊó¤ò´Þ¤ó¤Ç¤¤¤ë¤³¤È¤¬¤¢¤ë (ŵ·¿
-Ū¤ÊÎã¤È¤·¤Æ¤Ï hack ¤µ¤ì¤¿ TrueType ¥Õ¥©¥ó¥È¤Ê¤É) ¡£¤³¤Î¤è¤¦¤Ê¥Õ¥©¥ó¥È
-¤¬Â¾¤Î¥Õ¥©¥ó¥È¤È°ì½ï¤Ë»È¤ï¤ì¤ë¤È¡¢¥ì¥¤¥¢¥¦¥È¤¬¤ª¤«¤·¤¯¤Ê¤ë¡£¤³¤ÎÌäÂê¤ò
-²ò·è¤¹¤ë¤¿¤á¡¢m17n ¥é¥¤¥Ö¥é¥ê¤Ïm17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¥¿¥° \<font,
-resize\> ¤ò»ý¤Ä¥Ç¡¼¥¿¤ò¥í¡¼¥É¤·¡¢¥Õ¥©¥ó¥È¥µ¥¤¥º¤òÄ´À°¤¹¤ë¤¿¤á¤Î¾ðÊó¤È¤·
-¤ÆÍѤ¤¤ë¡£¤³¤Î¥Ç¡¼¥¿¤Ï°Ê²¼¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ý¤Ä¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·¤Æ¥í¡¼
-¥É¤µ¤ì¤ë¡£
-
-@verbatim
-FONT-SIZE-ADJUSTMENT ::= PER-FONT *
-
-PER-FONT ::= '(' FONT-SPEC ADJUST-RATIO ')'
-
-FONT-SPEC ::=
-    '(' [ FOUNDRY FAMILY
-         [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-       REGISTRY ')'
-
-ADJUST-RATIO ::= INTEGER
-@endverbatim
-
-@c FONT-SPEC ¤Ï¥Õ¥©¥ó¥È¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¡£@c FOUNDRY ¤«¤é @c
-REGISTRY ¤Þ¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¥Õ¥©¥ó¥È¤Î #Mfoundry ¤«¤é #Mregistry ¥×¥í¥Ñ¥Æ¥£
-¤Þ¤Ç¤ËÂбþ¤·¤Æ¤¤¤ë¡£³Æ¥×¥í¥Ñ¥Æ¥£¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï @ref m17nFont »²¾È¤Î¤³¤È¡£
-
-@c ADJUST-RATIO ¤Ï¡¢À°¿ôÃͤǤ¢¤ê¡¢¥Õ¥©¥ó¥È¥µ¥¤¥º¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤Ð
-¤è¤¤¤«¤ò¥Ñ¡¼¥»¥ó¥È¤Ç¤¢¤é¤ï¤¹¡£¤¿¤È¤¨¤Ð°Ê²¼¤Î @c PER-FONT:
-
-@verbatim
-    ((devanagari-cdac) 150)
-@endverbatim
-
-¤Ï¡¢m17n ¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥©¥ó¥È¥Ï¥ó¥É¥é¤Ë¡¢"devanagari-cdac" ¤È¤¤¤¦¥ì¥¸¥¹
-¥È¥ê¤ò»ý¤Ä¥Õ¥©¥ó¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢Í׵ᤵ¤ì¤¿Â礭¤µ¤Î 1.5 ÇܤΥµ¥¤¥º¤Î¥Õ¥©¥ó
-¥È¤ò³«¤¯¤è¤¦¤Ë»Ø¼¨¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
-
-*/
-/***en
-
-@section mdbFontSize Font Size
-
-@subsection font-size-description DESCRIPTION
-
-In some case, a font contains incorrect information about its size
-(typically in the case of a hacked TrueType font), which results in a
-bad text layout when such a font is used in combination with the other
-fonts.  To overcome this problem, the m17n library loads information
-about font-size adjustment from the m17n database by the tags \<font,
-resize\>.  The data is loaded as a plist of this format.
-
-@verbatim
-FONT-SIZE-ADJUSTMENT ::= PER-FONT *
-
-PER-FONT ::= '(' FONT-SPEC ADJUST-RATIO ')'
-
-FONT-SPEC ::=
-    '(' [ FOUNDRY FAMILY
-         [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-       REGISTRY ')'
-
-ADJUST-RATIO ::= INTEGER
-@endverbatim
-
-@c FONT-SPEC is to specify properties of a font.  @c FOUNDRY to @c
-REGISTRY are symbols corresponding to #Mfoundry to #Mregistry property
-of a font.  See @ref m17nFont for the meaning of each property.
-
-@c ADJUST-RATIO is an integer number specifying by percentage how much
-the font-size must be adjusted.  For instance, this @c PER-FONT:
-
-@verbatim
-    ((devanagari-cdac) 150)
-@endverbatim
-
-instructs the font handler of the m17n library to open a font of 1.5
-times bigger than a requested size on opening a font whose registry
-is "devanagari-cdac".
-*/
-/***ja
-
-@section mdbFontset ¥Õ¥©¥ó¥È¥»¥Ã¥È
-
-@subsection fontset-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï¡¢m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é \<fontset, FONTSET-NAME\> ¥¿
-¥°¤Ë¤è¤Ã¤Æ¥Õ¥©¥ó¥È¥»¥Ã¥È¤ÎÄêµÁ¤ò¥í¡¼¥É¤¹¤ë¡£¤³¤Î¥Ç¡¼¥¿¤Ï°Ê²¼¤Î¥Õ¥©¡¼¥Þ¥Ã
-¥È¤Î¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤È¤·¤Æ¥í¡¼¥É¤µ¤ì¤ë¡£
-
-@verbatim
-FONTSET ::= PER-SCRIPT * PER-CHARSET * FALLBACK *
-
-PER-SCRIPT ::= '(' SCRIPT PER-LANGUAGE + ')'
-
-PER-LANGUAGE ::= '(' LANGUAGE FONT-SPEC-ELEMENT + ')'
-
-PER-CHARSET ::= '(' CHARSET FONT-SPEC-ELEMENT + ')'
-
-FALLBACK ::= FONT-SPEC-ELEMENT
-
-FONT-SPEC-ELEMENT ::= '(' FONT-SPEC [ FLT-NAME ] ')'
-
-FONT-SPEC ::=
-     '(' [ FOUNDRY FAMILY
-           [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-         REGISTRY ')'
-@endverbatim    
-
-@c SCRIPT ¤Ï¥¹¥¯¥ê¥×¥È̾ (e.g. latin, han) ¤ò¼¨¤¹¥·¥ó¥Ü¥ë¤« @c nil¤Ç¤¢
-¤ë¡£@c LANGUAGE ¤ÏISO 639 ¤ËÄêµÁ¤µ¤ì¤¿¸À¸ì̾¥³¡¼¥É (e.g. ja, zh) ¤Ç¤¢
-¤ë£²Ê¸»ú¤Î¥·¥ó¥Ü¥ë¤« @c nil ¤Ç¤¢¤ë¡£
-
-@c FONT-SPEC ¤Ï¥Õ¥©¥ó¥È¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë¡£@c FOUNDRY ¤«¤é @c
-REGISTRY ¤Ï¥Õ¥©¥ó¥È¤Î #Mfoundry ¤«¤é #Mregistry ¥×¥í¥Ñ¥Æ¥£¤ËÂбþ¤¹¤ë¥·
-¥ó¥Ü¥ë¤Ç¤¢¤ë¡£³Æ¥×¥í¥Ñ¥Æ¥£¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï @ref m17nFont »²¾È¡£
-
-@c FLT-NAME ¤Ï¥Õ¥©¥ó¥È¥ì¥¤¥¢¥¦¥È¥Æ¡¼¥Ö¥ë¤Î̾Á°¤Ç¤¢¤ë¡£(@ref mdbFLT).
-
-@subsection fontset-example Îã
-
-¤³¤ì¤Ï @c PER_SCRIPT ¤ÎÎã¤Ç¤¢¤ë¡£
-
-@verbatim
-(han
-  (ja
-    ((jisx0208.1983-0)))
-  (zh
-    ((gb2312.1980-0)))
-  (nil
-    ((big5-0))))
-@endverbatim
-
-¤³¤ì¤Ë¤è¤Ã¤Æ¥Õ¥©¥ó¥È¥»¥ì¥¯¥¿¤Ï¡¢"han" Ê¸»ú (¤Ä¤Þ¤ê#Mscript ¥×¥í¥Ñ¥Æ¥£
-¤¬ 'han' ¤Ç¤¢¤ëʸ»ú)¤Î¤¦¤Á¡¢Ê¸»ú¤Î M-text Ãæ¤Ç¤Î #Mlanguage ¥Æ¥­¥¹¥È¥×
-¥í¥Ñ¥Æ¥£¤¬ "ja" ¤Ç¤¢¤ê¤½¤Îʸ»ú¤¬¥Õ¥©¥ó¥È¤Î¥ì¥Ñ¡¼¥È¥ê¡¼¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ì¤â
-¤Î¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥ì¥¸¥¹¥È¥ê¤¬"jisx0208.1983-0" ¤Ç¤¢¤ë¥Õ¥©¥ó¥È¤ò»È¤¦¤³¤È¤ò
-»Ø¼¨¤µ¤ì¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¥ì¥¸¥¹¥È¥ê¤¬ "gb2312.1980-0" ¤ä"big5-0" ¤Ç
-¤¢¤ë¤â¤Î¤¬»î¤µ¤ì¤ë¡£"han" Ê¸»ú¤Ë #Mlanguage ¥Æ¥­¥¹¥È¥×¥í¥Ñ¥Æ¥£¤¬Ìµ¤±¤ì
-¤Ð¡¢£³¤Ä¤È¤â»î¤µ¤ì¤ë¡£
-
-¥Õ¥©¥ó¥ÈÁªÂò¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï´Ø¿ô mdraw_text () »²¾È¡£
-*/
-/***en
-
-@section mdbFontset Fontset
-
-@subsection fontset-description DESCRIPTION
-
-The m17n library loads a fontset definition from the m17n database by
-the tags \<fontset, FONTSET-NAME\>.  The plist format of the data is
-as follows:
-
-@verbatim
-FONTSET ::= PER-SCRIPT * PER-CHARSET * FALLBACK *
-
-PER-SCRIPT ::= '(' SCRIPT PER-LANGUAGE + ')'
-
-PER-LANGUAGE ::= '(' LANGUAGE FONT-SPEC-ELEMENT + ')'
-
-PER-CHARSET ::= '(' CHARSET FONT-SPEC-ELEMENT + ')'
-
-FALLBACK ::= FONT-SPEC-ELEMENT
-
-FONT-SPEC-ELEMENT ::= '(' FONT-SPEC [ FLT-NAME ] ')'
-
-FONT-SPEC ::=
-     '(' [ FOUNDRY FAMILY
-           [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
-         REGISTRY ')'
-@endverbatim    
-
-@c SCRIPT is a symbol of script name (e.g. latin, han) or @c nil.  @c
-LANGUAGE is a two-letter symbol of language name code defined by ISO
-639 (e.g. ja, zh) or @c nil.
-
-@c FONT-SPEC is to specify properties of a font.  @c FOUNDRY to @c
-REGISTRY are symbols corresponding to #Mfoundry to #Mregistry property
-of a font.  See @ref m17nFont for the meaning of each property.
-
-@c FLT-NAME is a name of Font Layout Table (@ref mdbFLT).
-
-@subsection fontset-example EXAMPLE
-
-This is an example of @c PER_SCRIPT.
-
-@verbatim
-(han
-  (ja
-    ((jisx0208.1983-0)))
-  (zh
-    ((gb2312.1980-0)))
-  (nil
-    ((big5-0))))
-@endverbatim
-
-It instructs the font selector to use a font of registry
-"jisx0208.1983-0" for a "han" character (i.e. a character whose
-#Mscript property is 'han') if the character has #Mlanguage text
-property "ja" in an M-text and the character is in the repertories of
-such fonts.  Otherwise, try a font of registry "gb2312.1980-0" or
-"big5-0".  If that "han" character does not have #Mlanguage text
-property, try all three fonts.
-
-See the function mdraw_text () for the detail of how a font is
-selected.
-*/
-/***ja
-
-@section mdbIM ¥¤¥ó¥×¥Ã¥È¥á¥½¥Ã¥É
-
-@subsection im-description ÀâÌÀ
-
-m17n ¥é¥¤¥Ö¥é¥ê¤Ï¡¢m17n ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤éưŪ¤Ë¥í¡¼¥É¤Ç¤­¤ëÆþÎϥ᥽¥Ã¥É
-¥É¥é¥¤¥Ð¤òÄ󶡤·¤Æ¤¤¤ë¡£(@ref m17nInputMethod »²¾È¡£ @latexonly
-(P.\pageref{group__m17nInputMethod}) @endlatexonly).
-
-¤³¤³¤Ç¤ÏÆþÎϥ᥽¥Ã¥ÉÄêµÁ¤Î¥Ç¡¼¥¿¥Õ¥©¡¼¥Þ¥Ã¥È¤òÀâÌÀ¤¹¤ë¡£
-
-@subsection im-format Ê¸Ë¡¤È°ÕÌ£
-
-°Ê²¼¤Î¥Ç¡¼¥¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤è¤Ã¤ÆÆþÎϥ᥽¥Ã¥É¤¬ÄêµÁ¤µ¤ì¤ë¡£¥É¥é¥¤¥Ð¤Ï¥Õ¥¡
-¥¤¥ë¤ä¥¹¥È¥ê¡¼¥à¤«¤éÄêµÁ¤ò¥í¡¼¥É¤·¡¢¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤Î·Á¼°¤ËÊÑ´¹¤¹¤ë¡£
-
-@verbatim
-INPUT-METHOD ::= TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
-
-TITLE ::= '(' 'title' MTEXT ')'
-@endverbatim
-
-@c MTEXT ¤Ï¤³¤ÎÆþÎϥ᥽¥Ã¥É¤¬Í­¸ú¤ÊºÝ¥¹¥¯¥ê¡¼¥ó¾å¤Ëɽ¼¨¤µ¤ì¤ë¥Æ¥­¥¹¥È¤Ç¤¢¤ë ¡£
-
-@verbatim 
-MAP-LIST ::= '(' 'map' MAP * ')'
-
-MAP ::= '(' MAP-NAME RULE * ')'
-
-MAP-NAME ::= SYMBOL
-
-RULE ::= '(' KEYSEQ MAP-ACTION * ')'
-
-KEYSEQ ::= MTEXT | '(' [ SYMBOL | INTEGER ] * ')'
-@endverbatim
-
-@c MAP-NAME ÄêµÁÃæ¤Î @c SYMBOL ¤Ï¡¢ @c t ¤¢¤ë¤¤¤Ï @c nil ¤Ç¤¢¤Ã¤Æ¤Ï¤Ê
-¤é¤Ê¤¤¡£
-
-@c KEYSEQ ÄêµÁÃæ¤Î @c MTEXT ¤Ï¡¢¥­¡¼¥Ü¡¼¥É¤«¤éÀ¸À®¤Ç¤­¤ëʸ»ú¤Ç¹½À®¤µ¤ì
-¤ë¡£¤¹¤Ê¤ï¤Á @c MTEXT ¤ÏÄ̾ïASCII Ê¸»ú¤Î¤ß¤ò´Þ¤à¡£¤·¤«¤·¡¢ÆþÎϥ᥽¥Ã¥É
-¤¬¤¿¤È¤¨¤ÐÀ¾¥è¡¼¥í¥Ã¥ÑÍÑ¥­¡¼¥Ü¡¼¥É¤ò»È¤¦¤³¤È¤òÁÛÄꤷ¤¿¤â¤Î¤Ç¤¢¤ì¤Ð¡¢@c
-MTEXT ¤Ï Latin-1 Ê¸»ú¤ò´Þ¤ó¤Ç¤â¤è¤¤¡£
-
-@c KEYSEQ ÄêµÁÃæ¤Î @c SYMBOL ¤Ï¡¢´Ø¿ô minput_event_to_key () ¤ÎÌá¤êÃÍ
-¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-@c KEYSEQ ÄêµÁÃæ¤Î @c INTEGER ¤Ï¡¢Í­¸ú¤Êʸ»ú¥³¡¼¥É¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-@verbatim
-MAP-ACTION ::= ACTION
-
-ACTION ::= INSERT | DELETE | SELECT | MOVE | MARK |
-           | SHOW | HIDE | PUSHBACK | UNDO | SHIFT | CALL
-          | SET | IF | '(' MACRO-NAME ')'
-
-PREDEFINED-SYMBOL ::=
-    '@0' | '@1' | '@2' | '@3' | '@4' |
-    '@5' | '@6' | '@7' | '@8' | '@9' |
-    '@<' | '@=' | '@>' | '@-' | '@+' | '@[' | '@]'
-@endverbatim
-@verbatim
-MACRO-LIST ::= '(' 'macro' MACRO * ')'
-
-MACRO ::= '(' MACRO-NAME MACRO-ACTION * ')'
-
-MACRO-NAME ::= SYMBOL
-
-MACRO-ACTION ::= ACTION
-@endverbatim
-@verbatim
-MODULE-LIST ::= '(' 'module' MODULE * ')'
-
-MODULE ::= '(' MODULE-NAME FUNCTION * ')'
-
-MODULE-NAME ::= SYMBOL
-
-FUNCTION ::= SYMBOL
-@endverbatim
-
-³Æ @c MODULE ¤Ï³°Éô¥â¥¸¥å¡¼¥ë (ưŪ¥é¥¤¥Ö¥é¥ê) ¤Î̾Á°¤È¤½¤Î¥â¥¸¥å¡¼¥ë
-¤¬¸ø³«¤¹¤ë´Ø¿ô̾¤òÀë¸À¤¹¤ë¡£@c FUNCTION ¤¬ "init" ¤È¤¤¤¦Ì¾Á°¤Ç¤¢¤ì¤Ð¡¢
-¤³¤ÎÆþÎϥ᥽¥Ã¥ÉÍѤÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬À¸À®¤µ¤ì¤ëºÝ¤Ë¤Î¤ß¡¢¥Ç¥Õ¥©¥ë¥È¤Î
-°ú¿ô (@c CALL ¤ÎÀỲ¾È) ¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£ @c FUNCTION ¤¬ "fini" ¤È¤¤
-¤¦Ì¾Á°¤ò»ý¤Æ¤Ð, ÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤¬Ç˲õ¤µ¤ì¤ëºÝ¤Ë¤Î¤ß¡¢¥Ç¥Õ¥©¥ë¥È¤Î°ú¿ô
-¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£
-
-@verbatim
-STATE-LIST ::= '(' 'state' STATE * ')'
-
-STATE ::= '(' STATE-NAME BRANCH * ')'
-
-STATE-NAME ::= SYMBOL
-
-BRANCH ::= '(' MAP-NAME BRANCH-ACTION * ')'
-          | '(' nil BRANCH-ACTION * ')'
-          | '(' t BRANCH-ACTION * ')'
-@endverbatim
-
-@c BRANCH ¤ÎºÇ½é¤Î·Á¼°¤Ç¤Ï¡¢@c MAP-NAME ¤Ï @c MAP ¤Ë¸½¤ï¤ì¤ë¤â¤Î¤Ç¤Ê¤¯
-¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢@c MAP-NAME ¤Î @c KEYSEQ ¤Î°ì¤Ä¤Ë¹çÃפ¹¤ë¥­¡¼
-Î󤬥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢ @c BRANCH-ACTION ¤¬¼Â¹Ô¤µ¤ì¤ë¡£
-
-@c BRANCH ¤ÎÆó¤ÄÌܤηÁ¼°¤Ç¤Ï¡¢¤½¤Î»þÅÀ¤Î¾õÂ֤Τ¤¤º¤ì¤Î @c BRANCH ¤Ë¤â
-¹çÃפ·¤Ê¤¤¥­¡¼Î󤬥¿¥¤¥×¤µ¤ì¤ì¤Ð¡¢@c BRANCH-ACTION¤¬¼Â¹Ô¤µ¤ì¤ë¡£
-
-@c BRANCH ¤Î»°¤ÄÌܤηÁ¼°¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥­¡¼¤ò½èÍý¤·¤¿¸å¤Ç¤½¤Î¾õÂ֤˰ÜÆ°
-¤·¤¿¾ì¹ç¤Ë @c BRANCH-ACTION ¤¬¼Â¹Ô¤µ¤ì¤ë¡£¤â¤·½é´ü¾õÂ֤Ǥ¢¤ì¤Ð¡¢ÆþÎÏ¥á
-¥½¥Ã¥É¤ÎÆþÎÏ¥³¥ó¥Æ¥¯¥¹¥È¤òÀ¸À®¤·¤¿Ä¾¸å¤Ë @c BRANCH-ACTION ¤ò¼Â¹Ô¤¹¤ë¡£
-
-@verbatim
-BRANCH-ACTION ::= ACTION
-@endverbatim
-
-ÆþÎϥ᥽¥Ã¥É¤Ï¼¡¤ÎÆó¤Ä¤Î¥·¥ó¥Ü¥ë¤Î¥ê¥¹¥È¤ò»ý¤Ä¡£
-
-<ul>
-<li> ¥Þ¡¼¥«¥ê¥¹¥È
-
-¥Þ¡¼¥«¤Ï preediting ¥Æ¥­¥¹¥ÈÃæ¤Ç¤Îʸ»ú°ÌÃÖ¤ò¼¨¤¹¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£@c
-MARK ¥¢¥¯¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤ò¤¢¤ë°ÌÃÖ¤ËÀßÄꤹ¤ë¡£@c MOVE ¤È @c DELETE ¥¢¥¯
-¥·¥ç¥ó¤Ï¥Þ¡¼¥«¤Î°ÌÃÖ¤ò»²¾È¤¹¤ë¡£
-
-<li> ÊÑ¿ô¥ê¥¹¥È
-
-ÊÑ¿ô¤ÏÀ°¿ô¤ÎÃͤò»ý¤Ä¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¡£ÃͤÏ@c SET ¥¢¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀßÄê
-¤µ¤ì¡¢@c SET, @c INSERT, @c IF ¤Ë»²¾È¤µ¤ì¤ë¡£¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤Î½é´üÃͤϠ0 
-¤Ç¤¢¤ë¡£
-
-</ul>
-
-@c PREDEFINED-SYMBOL ¤Ï¥Þ¡¼¥«¤È¤·¤ÆÍѤ¤¤é¤ì¤¿¾ì¹çÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
-
-<ul>
-<li> @c @@0, @c @@1, @c @@2, @c @@3, @c @@4, @c @@5, @c @@6, @c @@7, @c @@8, @c @@9
-
-¤½¤ì¤¾¤ì£°ÈÖÌܤ«¤é£¹ÈÖÌܤΰÌÃÖ
-
-<li> @c @@<, @c @@=, @c @@>
-
-ºÇ½é¤Î¡¢º£¤Î¡¢ºÇ¸å¤Î°ÌÃÖ
-
-<li> @c @@-, @c @@+
-
-Á°¤Î¡¢¼¡¤Î°ÌÃÖ
-
-<li> @c @@[, @c @@]
-
-¸õÊä¥ê¥¹¥È¤¬ÊѲ½¤¹¤ëºÝ¤ÎÁ°¤È¼¡¤Î°ÌÃÖ
-</ul>
-
-@c PREDEFINED-SYMBOL ¤Ï @c SELECT ¥¢¥¯¥·¥ç¥óÃæ¤Ç¸õÊä¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤·
-¤ÆÍѤ¤¤é¤ì¤¿ºÝÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¡£
-
-<ul>
-<li> @c @@<, @c @@=, @c @@>
-
-¸½ºß¤Î¸õÊ䥰¥ë¡¼¥×Ãæ¤Ç¤ÎºÇ½é¤Î¡¢º£¤Î¡¢ºÇ¸å¤Î¸õÊä
-
-<li> @c @@-
-
-Á°¸õÊä¡£º£¤Î¸õÊ䤬º£¤Î¸õÊ䥰¥ë¡¼¥×Ãæ¤Ç¤ÎºÇ½é¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢Á°¤Î¸õÊ䥰
-¥ë¡¼¥×¤ÎºÇ¸å¤Î¸õÊä¡£
-
-<li> @c @@+
-
-¼¡¸õÊä¡£º£¤Î¸õÊ䤬º£¤Î¸õÊ䥰¥ë¡¼¥×Ãæ¤Ç¤ÎºÇ¸å¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¼¡¤Î¸õÊ䥰
-¥ë¡¼¥×¤ÎºÇ½é¤Î¸õÊä¡£
-
-<li> @c @@[, @c @@]
-
-¤½¤ì¤¾¤ìÁ°¤È¸å¤Î¸õÊ䥰¥ë¡¼¥×Ãæ¤Ç¡¢º£¤Î¸õÊä¤ÈƱ¤¸¸õÊ䥤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä
-¤â¤Î¡£
-</ul>
-
-³Æ¥¢¥¯¥·¥ç¥ó¤Î°ú¿ô¤È¿¶Éñ¤¤¤Ï°Ê²¼¤ÎÄ̤ꡣ
-
-@verbatim
-INSERT ::= '(' 'insert' MTEXT ')'
-           | MTEXT
-          | INTEGER
-           | '(' 'insert' SYMBOL ')'
-           | '(' 'insert' '(' CANDIDATES * ')' ')'
-           | '(' CANDIDATES * ')' 
-
-CANDIDATES ::= MTEXT | '(' MTEXT * ')'
-@endverbatim
-
-Âè°ì¡¢ÂèÆó¤Î·Á¼°¤Ï @c MTEXT ¤ò¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
-
-Âè»°¤Î·Á¼°¤Ï¡¢Ê¸»ú @c INTEGER ¤ò¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
-
-Âè»Í¤Î·Á¼°¤Ï¡¢@c SYMBOL ¤òÊÑ¿ô¤È¤·¤Æ°·¤¤¡¢¤½¤ÎÃͤ¬Àµ¤·¤¤Ê¸»ú¥³¡¼¥É¤Ç
-¤¢¤ì¤Ð¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
-
-Âè¸Þ¡¢ÂèÏ»¤Î·Á¼°¤Ç¤Ï¡¢@c CANDIDATES ¤Ï¸õÊ䥰¥ë¡¼¥×¤òɽ¤·¡¢@c
-CANDIDATES ¤Î³ÆÍ×ÁǤ¬¸õÊä¤òɽ¤¹¡£¤Ä¤Þ¤ê@c CANDIDATES ¤¬ M-text ¤Ç¤¢¤ì
-¤Ð¡¢¸õÊä¤Ï¤½¤ÎM-text Ãæ¤Îʸ»ú¤Ç¤¢¤ê¡¢@c CANDIDATES ¤¬ M-text ¤Î¥ê¥¹¥È
-¤Ç¤¢¤ì¤Ð¡¢¸õÊä¤Ï¤½¤ì¤é¤Î M-text ¤Ç¤¢¤ë¡£
-
-¤³¤ì¤é¤Î·Á¼°¤Ï¸½ºß¤Î°ÌÃ֤ξÁ°¤ËºÇ½é¤Î¸õÊä¤òÁÞÆþ¤¹¤ë¡£ÁÞÆþ¤µ¤ì¤¿Ê¸»úÎó
-¤Ë¤Ï¡¢¸õÊä¤Î¥ê¥¹¥È¤È¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¸õÊä¤ò»Ø¤¹¾ðÊó¤¬Éղ䵤ì¤Æ¤¤¤ë¡£
-
-ÁÞÆþ¤Ë¤è¤Ã¤Æ¥Þ¡¼¥«¤Î°ÌÃ֤ϼ«Æ°Åª¤ËÊѹ¹¤µ¤ì¤ë¡£
-
-@verbatim
-DELETE ::= '(' 'delete' SYMBOL ')'
-           | '(' 'delete' INTEGER ')'
-@endverbatim
-
-Âè°ì¤Î·Á¼°¤Ï @c SYMBOL ¤ò¥Þ¡¼¥«¤È¤·¤Æ¡¢¥Þ¡¼¥«¤È¸½ºß¤Î°ÌÃ֤δ֤Îʸ»ú¤ò
-ºï½ü¤¹¤ë¡£
-
-ÂèÆó¤Î·Á¼°¤Ï @c INTEGER ¤òʸ»ú°ÌÃ֤Ȥ·¤Æ¡¢¤½¤Îʸ»ú°ÌÃ֤ȸ½ºß¤Î°ÌÃ֤δÖ
-¤Îʸ»ú¤òºï½ü¤¹¤ë¡£
-
-ºï½ü¤Ë¤è¤Ã¤Æ¥Þ¡¼¥«¤Î°ÌÃ֤ϼ«Æ°Åª¤ËÊѹ¹¤µ¤ì¤ë¡£
-
-@verbatim
-SELECT ::= '(' 'select' PREDEFINED-SYMBOL ')'
-           | '(' 'select' INTEGER ')'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¤Þ¤º¡¢¸½ºß¤Î°ÌÃ֤ξÁ°¤Îʸ»ú¤¬¡¢¸õÊä¥ê¥¹¥È¤¬Éղ䵤ì¤Æ
-¤¤¤ëʸ»úÎó¤Ë°¤¹¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¡£¤½¤¦¤Ç¤¢¤ì¤Ð¡¢¤½¤Îʸ»úÎó¤ò°ú¿ô¤Ë¤è¤Ã
-¤Æ»ØÄꤵ¤ì¤¿¸õÊä¤ËÆþ¤ì´¹¤¨¤ë¡£
-
-Âè°ì¤Î·Á¼°¤Ç¤Ï @c PREDEFINED-SYMBOL ¤òÁ°½Ò¤Î¸õÊ䥤¥ó¥Ç¥Ã¥¯¥¹¤È¤·¤Æ°·¤¤¡¢
-¤½¤ì¤Ë¤è¤Ã¤Æ¸õÊä¥ê¥¹¥ÈÃæ¤Î¿·¤·¤¤¸õÊ䤬»ØÄꤵ¤ì¤ë¡£
-
-ÂèÆó¤Î·Á¼°¤Ç¤Ï @c INTEGER ¤Ï¸õÊ䥤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ê¡¢¸õÊä¥ê¥¹¥ÈÃæ¤Î¿·¤·
-¤¤¸õÊä¤ò»ØÄꤹ¤ë¡£
-
-@verbatim
-SHOW ::= '(show)'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¸½ºß¤Î°ÌÃÖ¤ÎÁ°¤Ë¤¢¤ëʸ»úÎó¤ËÉÕ
-²Ã¤µ¤ì¤Æ¤¤¤ë¸õÊä¥ê¥¹¥È¤ò¼¨¤¹¤è¤¦¤Ë»Ø¼¨¤¹¤ë¡£
-
-@verbatim
-HIDE ::= '(hide)'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¡¢ÆþÎϥ᥽¥Ã¥É¥É¥é¥¤¥Ð¤Ë¸½ºß¼¨¤µ¤ì¤Æ¤¤¤ë¸õÊä¥ê¥¹¥È¤ò±£
-¤¹¤è¤¦¤Ë»Ø¼¨¤¹¤ë¡£
-
-@verbatim
-MOVE ::= '(' 'move' SYMBOL ')'
-         | '(' 'move' INTEGER ')'
-@endverbatim
-
-Âè°ì¤Î·Á¼°¤Ï @c SYMBOL ¤ò¥Þ¡¼¥«¤È¤·¤Æ¡¢¤½¤ì¤ò¿·¤·¤¤¸½ºß¤Î°ÌÃ֤Ȥ¹¤ë¡£
-
-ÂèÆó¤Î·Á¼°¤Ï @c INTEGER ¤òʸ»ú°ÌÃ֤Ȥ·¤Æ¡¢¤½¤Î°ÌÃÖ¤ò¿·¤·¤¤¸½ºß¤Î°ÌÃÖ¤È
-¤¹¤ë¡£
-
-@verbatim
-MARK ::= '(' 'mark' SYMBOL ')'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï @c SYMBOL ¤ò¥Þ¡¼¥«¤È¤·¤Æ¡¢¤½¤ì¤ò¸½ºß¤Î°ÌÃÖ¤ËÀßÄꤹ¤ë¡£
-@c SYMBOL ¤Ï @c PREDEFINED-SYMBOL ¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-
-@verbatim
-PUSHBACK :: = '(pushback INTEGER)'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏºÇ¿·¤Î¥­¡¼¥¤¥Ù¥ó¥È¤ò¥¤¥Ù¥ó¥È¥­¥å¡¼¤ËÌ᤹¡£
-
-@verbatim
-UNDO :: = '(undo)'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÏºÇ¸å¤Î¥­¡¼¥¤¥Ù¥ó¥È¤ò¼è¤ê¾Ã¤¹¡£
-
-@verbatim
-SHIFT :: = '(' 'shift' STATE-NAME ')'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¸½ºß¤Î¾õÂÖ¤ò @c STATE-NAME ¤Ë°ÜÆ°¤µ¤»¤ë¡£ @c
-STATE-NAME ¤Ï @c STATE-LIST ¤Ë¸½¤ï¤ì¤ë¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-@verbatim
-CALL ::= '(' 'call' MODULE-NAME FUNCTION ARG * ')'
-
-ARG ::= INTEGER | SYMBOL | MTEXT | PLIST
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï³°Éô¥â¥¸¥å¡¼¥ë @c MODULE-NAME ¤Î´Ø¿ô @c FUNCTION ¤ò¸Æ
-¤Ö¡£@c MODULE-NAME ¤È @c FUNCTION ¤Ï @c MODULE-LIST ¤Ë¸½¤ï¤ì¤ë¤â¤Î¤Ç¤Ê
-¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-´Ø¿ô¤Ï (#MPlist *) ·¿¤Î°ú¿ô¤È¤È¤â¤Ë¸Æ¤Ð¤ì¤ë¡£ºÇ½é¤ÎÍ×ÁǤΥ­¡¼¤Ï #Mt ¤Ç
-¤¢¤ê¡¢¤½¤ÎÃͤÏ#MInputContext ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£ÂèÆó
-¤ÎÍ×ÁǤΥ­¡¼¤Ï#Msymbol ¤Ç¤¢¤ê¡¢Ãͤϸ½ºß¤Î¾õÂÖ̾¤Ç¤¢¤ë¡£ @c ARGs ¤Ï»°¤Ä
-ÌܰʹߤÎÍ×ÁǤÎÃͤȤ·¤ÆÍѤ¤¤é¤ì¤ë¡£¤½¤ì¤é¤ÎÍ×ÁǤΥ­¡¼¤Ï¼«Æ°Åª¤Ë·èÄꤵ¤ì
-¤ë¡£@c ARG ¤¬À°¿ôÃͤʤé¤ÐÂбþ¤¹¤ë¥­¡¼¤Ï #Minteger ¤Ç¤¢¤ê¡¢@c ARG ¤¬¥·
-¥ó¥Ü¥ë¤Ê¤é¤Ð¡¢Âбþ¤¹¤ë¥­¡¼¤Ï #Msymbol¡¢¤Ê¤É¤Î¤è¤¦¤Ë¡£
-
-´Ø¿ô¤Ï NULL ¤òÊÖ¤¹¤«¡¢¤Þ¤¿¤Ï¹Ô¤¦¤Ù¤­¥¢¥¯¥·¥ç¥ó¤Î¥ê¥¹¥È¤òɽ¤¹ (#MPlist
-*) ·¿¤ÎÃͤòÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
-
-@verbatim
-SET ::= '(' OPERAND SYMBOL1 [ INTEGER | SYMBOL2 ] ')'
-
-OPERAND ::= 'set' | 'add' | 'sub' | 'mul' | 'div'
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï @c SYMBOL1 ¤È @c SYMBOL2 ¤òÊÑ¿ô¤È¤·¤Æ¡¢@c SYMBOL1 ¤Î
-Ãͤò°Ê²¼¤Î¤è¤¦¤ËÀßÄꤹ¤ë¡£
-
-@c OPERAND ¤¬ 'set' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤϠ@c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ËÀßÄꤵ¤ì¤ë¡£
-
-@c OPERAND ¤¬ 'add' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤÀ¤±Áý¤ä¤¹¡£
-
-@c OPERAND ¤¬ 'sub' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤÀ¤±¸º¤é¤¹¡£
-
-@c OPERAND ¤¬ 'mul' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤˠ@c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤò³Ý¤±¤ë¡£
-
-@c OPERAND ¤¬ 'div' ¤Ê¤é¤Ð¡¢@c SYMBOL1 ¤ÎÃͤò @c INTEGER ¤Þ¤¿¤Ï @c
-SYMBOL2 ¤ÎÃͤdzä¤ë¡£
-
-@verbatim
-IF ::= '(' 'if' CONDITION ACTION-LIST1 ACTION-LIST2 * ')'
-
-CONDITION ::= '(' OPERAND VAL1 VAL2 ')'
-
-ACTION-LIST1 ::= '(' ACTION * ')'
-
-ACTION-LIST2 ::= '(' ACTION * ')'
-
-OPERAND ::= '=' '<' '>'
-
-VAL1 ::= [ INTEGER1 | SYMBOL1 ]
-
-VAL2 ::= [ INTEGER2 | SYMBOL2 ]
-@endverbatim
-
-¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ï¡¢ @c CONDITION ¤¬¿¿¤Ç¤¢¤ì¤Ð @c ACTION-LIST1 ¤ò¼Â¹Ô¤·¡¢
-¤½¤¦¤Ç¤Ê¤±¤ì¤Ð @c ACTION-LIST2 ¤ò (¤â¤·¤¢¤ì¤Ð) ¼Â¹Ô¤¹¤ë¡£
-
-@c SYMBOL1 ¤È @c SYMBOL2 ¤ÏÊÑ¿ô¤È¤·¤Æ°·¤ï¤ì¤ë¡£
-
-@ifnot FOR-MAN
-
-@subsection im-seealso SEE ALSO
-
-@ref mim-list "Input Methods provided by the m17n database",
-@ref mdbGeneral "mdbGeneral(5)"
-*/
-/***en
-
-@section mdbIM Input Method
-
-@subsection im-description DESCRIPTION
-
-The m17n library provides a driver for input methods that are
-dynamically loadable from the m17n database (see @ref m17nInputMethod
-@latexonly (P.\pageref{group__m17nInputMethod}) @endlatexonly).
-
-This section describes the data format that defines those input
-methods.
-
-@subsection im-format SYNTAX and SEMANTICS
-
-The following data format defines an input method.  The driver loads
-a definition from a file, a stream, etc.  A definitions is converted
-into the form of plist in the driver.
-
-@verbatim
-INPUT-METHOD ::= TITLE MAP-LIST MACRO-LIST ? MODULE-LIST ? STATE-LIST
-
-TITLE ::= '(' 'title' MTEXT ')'
-@endverbatim
-
-@c MTEXT is a text displayed on the screen when this input method is
-active.
-
-@verbatim
-MAP-LIST ::= '(' 'map' MAP * ')'
-
-MAP ::= '(' MAP-NAME RULE * ')'
-
-MAP-NAME ::= SYMBOL
-
-RULE ::= '(' KEYSEQ MAP-ACTION * ')'
-
-KEYSEQ ::= MTEXT | '(' [ SYMBOL | INTEGER ] * ')'
-@endverbatim
-
-@c SYMBOL in the definitions of @c MAP-NAME must not be @c t nor @c
-nil.
-
-@c MTEXT in the definition of @c KEYSEQ consists of characters that
-can be generated by a keyboard.  Therefore @c MTEXT usually contains
-only ASCII characters.  However, if the input method is intended to be
-used, for instance, with a West European keyboard, @c MTEXT may
-contain Latin-1 characters.
-
-@c SYMBOL in the definition of @c KEYSEQ must be the return value of
-the minput_event_to_key () function.
-
-@c INTEGER in the definition of @c KEYSEQ must be a valid character
-code.
-
-@verbatim
-MAP-ACTION ::= ACTION
-
-ACTION ::= INSERT | DELETE | SELECT | MOVE | MARK |
-           | SHOW | HIDE | PUSHBACK | UNDO | SHIFT | CALL
-          | SET | IF | '(' MACRO-NAME ')'
-
-PREDEFINED-SYMBOL ::=
-    '@0' | '@1' | '@2' | '@3' | '@4' |
-    '@5' | '@6' | '@7' | '@8' | '@9' |
-    '@<' | '@=' | '@>' | '@-' | '@+' | '@[' | '@]'
-@endverbatim
-@verbatim
-MACRO-LIST ::= '(' 'macro' MACRO * ')'
-
-MACRO ::= '(' MACRO-NAME MACRO-ACTION * ')'
-
-MACRO-NAME ::= SYMBOL
-
-MACRO-ACTION ::= ACTION
-@endverbatim
-@verbatim
-MODULE-LIST ::= '(' 'module' MODULE * ')'
-
-MODULE ::= '(' MODULE-NAME FUNCTION * ')'
-
-MODULE-NAME ::= SYMBOL
-
-FUNCTION ::= SYMBOL
-@endverbatim
-
-Each @c MODULE declares the name of external module (i.e. dynamic
-library) and function names exported by the module.  If a @c FUNCTION has
-name "init", it is called with only the default arguments (see the
-section about @c CALL) when an input context is created for the input
-method.  If a @c FUNCTION has name "fini", it is called with only the
-default arguments when an input context is destroyed.
-
-@verbatim
-STATE-LIST ::= '(' 'state' STATE * ')'
-
-STATE ::= '(' STATE-NAME BRANCH * ')'
-
-STATE-NAME ::= SYMBOL
-
-BRANCH ::= '(' MAP-NAME BRANCH-ACTION * ')'
-          | '(' nil BRANCH-ACTION * ')'
-          | '(' t BRANCH-ACTION * ')'
-@endverbatim
-
-In the first form of @c BRANCH, @c MAP-NAME must be an item that appears
-in @c MAP.  In this case, if a key sequence matching one of @c
-KEYSEQs of @c MAP-NAME is typed, @c BRANCH-ACTIONs are executed.
-
-In the second form of @c BRANCH, @c BRANCH-ACTIONs are executed if a
-key sequence that doesn't match any of @c Branch's of the current
-state is typed.
-
-In the third form of @c BRANCH, @c BRANCH-ACTIONs are executed if we
-shift to the current state after handling all typed keys.  If the
-current state is the initial state, @c BRANCH-ACTIONs are executed
-just after an input context of the input method is created.
-
-@verbatim
-BRANCH-ACTION ::= ACTION
-@endverbatim
-
-An input method has the following two lists of symbols.
-
-<ul>
-<li> marker list
-
-A marker is a symbol indicating a character position in the preediting
-text.  The @c MARK action assigns a position to a marker.  The
-position of a marker is referred by the @c MOVE and the @c DELETE actions.
-
-<li> variable list
-
-A variable is a symbol associated with an integer value.  The value of
-a variable is set by the @c SET action, and is referred by the @c SET,
-the @c INSERT, and the @c IF actions.  All variables are implicitly
-initialized to zero.
-
-</ul>
-
-Each @c PREDEFINED-SYMBOL has a special meaning when used as a marker.
-
-<ul>
-<li> @c @@0, @c @@1, @c @@2, @c @@3, @c @@4, @c @@5, @c @@6, @c @@7, @c @@8, @c @@9
-
-The 0th, 1st, 2nd, ... 9th position respectively.
-
-<li> @c @@<, @c @@=, @c @@>
-
-The first, the current, and the last position.
-
-<li> @c @@-, @c @@+
-
-The previous and the next position.
-
-<li> @c @@[, @c @@]
-
-The previous and the next position where a candidate list changes.
-</ul>
-
-Some of the @c PREDEFINED-SYMBOL has a special meaning when used as a candidate
-index in the @c SELECT action.
-
-<ul>
-
-<li> @c @@<, @c @@=, @c @@>
-
-The first, the current, and the last candidate of the current candidate group.
-
-<li> @c @@-
-
-The previous candidate.  If the current candidate is the first one in
-the current candidate group, then it means the last candidate in the
-previous candidate group.
-
-<li> @c @@+
-
-The next candidate.  If the current candidate is the last one in the
-current candidate group, then it means the first candidate in the next
-candidate group.
-
-<li> @c @@[, @c @@]
-
-The candidate in the previous and the next candidate group having the same
-candidate index as the current one.
-</ul>
-
-The arguments and the behavior of each action are listed below.
-
-@verbatim
-INSERT ::= '(' 'insert' MTEXT ')'
-           | MTEXT
-          | INTEGER
-           | '(' 'insert' SYMBOL ')'
-           | '(' 'insert' '(' CANDIDATES * ')' ')'
-           | '(' CANDIDATES * ')' 
-
-CANDIDATES ::= MTEXT | '(' MTEXT * ')'
-@endverbatim
-
-The first and second forms insert @c MTEXT before the current position.
-
-The third form inserts the character @c INTEGER before the current
-position.
-
-The fourth form treats @c SYMBOL as a variable, and inserts its value
-(if it is a valid character code) before the current position.
-
-In the fifth and sixth forms, each @c CANDIDATES represents a
-candidate group, and each element of @c CANDIDATES represents a
-candidate, i.e. if @c CANDIDATES is an M-text, the candidates are the
-characters in the M-text; if @c CANDIDATES is a list of M-texts, the
-candidates are the M-texts in the list.
-
-These forms insert the first candidate before the current position.
-The inserted string is associated with the list of candidates and
-the information indicating the currently selected candidate.
-
-The marker positions affected by the insertion are automatically relocated.
-
-@verbatim
-DELETE ::= '(' 'delete' SYMBOL ')'
-           | '(' 'delete' INTEGER ')'
-@endverbatim
-
-The first form treats @c SYMBOL as a marker, and deletes characters
-between the current position and the marker position.
-
-The second form treats @c INTEGER as a character position, and deletes
-characters between the current position and the character position.
-
-The marker positions affected by the deletion are automatically relocated.
-
-@verbatim
-SELECT ::= '(' 'select' PREDEFINED-SYMBOL ')'
-           | '(' 'select' INTEGER ')'
-@endverbatim
-
-This action first checks if the character just before the current position
-belongs to a string that is associated with a candidate list.  If it is,
-the action replaces that string with a candidate specified by the
-argument.
-
-The first form treats @c PREDEFINED-SYMBOL as a candidate index (as
-described above) that specifies a new candidate in the candidate list.
-
-The second form treats @c INTEGER as a candidate index that specifies a
-new candidate in the candidate list.
-
-@verbatim
-SHOW ::= '(show)'
-@endverbatim
-
-This actions instructs the input method driver to display a candidate
-list associated with the string before the current position.
-
-@verbatim
-HIDE ::= '(hide)'
-@endverbatim
-
-This action instructs the input method driver to hide the currently
-displayed candidate list.
-
-@verbatim
-MOVE ::= '(' 'move' SYMBOL ')'
-         | '(' 'move' INTEGER ')'
-@endverbatim
-
-The first form treats @c SYMBOL as a marker, and makes the marker
-position be the new current position.
-
-The second form treats @c INTEGER as a character position, and makes
-that position be the new current position.
-
-@verbatim
-MARK ::= '(' 'mark' SYMBOL ')'
-@endverbatim
-
-This action treats @c SYMBOL as a marker, and sets its position to the
-current position.  @c SYMBOL must not be a @c PREDEFINED-SYMBOL.
-
-
-@verbatim
-PUSHBACK :: = '(pushback INTEGER)'
-@endverbatim
-
-This action pushes back the latest @c INTEGER number of key events to the event queue.
-
-@verbatim
-UNDO :: = '(undo)'
-@endverbatim
-
-This action cancels the last key event.
-
-@verbatim
-SHIFT :: = '(' 'shift' STATE-NAME ')'
-@endverbatim
-
-This action shifts the current state to @c STATE-NAME.  @c
-STATE-NAME must appear in @c STATE-LIST.
-
-@verbatim
-CALL ::= '(' 'call' MODULE-NAME FUNCTION ARG * ')'
-
-ARG ::= INTEGER | SYMBOL | MTEXT | PLIST
-@endverbatim
-
-This action calls the function @c FUNCTION of external module @c
-MODULE-NAME.  @c MODULE-NAME and @c FUNCTION must appear in @c
-MODULE-LIST.
-
-The function is called with an argument of the type (#MPlist *).  The
-key of the first element is #Mt and its value is a pointer to an
-object of the type #MInputContext.  The key of the second element is
-#Msymbol and its value is the current state name.  @c ARGs are used as
-the value of the third and later elements.  Their keys are determined
-automatically; if an @c ARG is an integer, the corresponding key is
-#Minteger; if an @c ARG is a symbol, the corresponding key is
-#Msymbol, etc.
-
-The function must return NULL or a value of the type (#MPlist *) that
-represents a list of actions to take.
-
-@verbatim
-SET ::= '(' OPERAND SYMBOL1 [ INTEGER | SYMBOL2 ] ')'
-
-OPERAND ::= 'set' | 'add' | 'sub' | 'mul' | 'div'
-@endverbatim
-
-This action treats @c SYMBOL1 and @c SYMBOL2 as variables and sets the
-value of @c SYMBOL1 as below.
-
-If @c OPERAND is 'set', it sets the value of @c SYMBOL1 to @c INTEGER or the
-value of @c SYMBOL2.
-
-If @c OPERAND is 'add', it increments the value of @c SYMBOL1 by @c INTEGER
-or the value of @c SYMBOL2.
-
-If @c OPERAND is 'sub', it decrements the value of @c SYMBOL1 by @c INTEGER
-or the value of @c SYMBOL2.
-
-If @c OPERAND is 'mul', it multiplies the value of @c SYMBOL1 by @c INTEGER
-or the value of @c SYMBOL2.
-
-If @c OPERAND is 'div', it divides the value of @c SYMBOL1 by @c INTEGER or
-the value of @c SYMBOL2.
-
-@verbatim
-IF ::= '(' CONDITION ACTION-LIST1 ACTION-LIST2 * ')'
-
-CONDITION ::= OPERAND VAL1 VAL2
-
-ACTION-LIST1 ::= '(' ACTION * ')'
-
-ACTION-LIST2 ::= '(' ACTION * ')'
-
-OPERAND ::= '=' '<' '>'
-
-VAL1 ::= [ INTEGER1 | SYMBOL1 ]
-
-VAL2 ::= [ INTEGER2 | SYMBOL2 ]
-@endverbatim
-
-This action performs actions in @c ACTION-LIST1 if @c CONDITION is
-true, and performs @c ACTION-LIST2 (if any) otherwise.
-
-@c SYMBOL1 and @c SYMBOL2 are treated as variables.
-
-@ifnot FOR-MAN
-
-@subsection im-example1 EXAMPLE 1
-
-This is a very simple example for inputting Latin characters with
-diacritical marks (acute and cedilla).  For instance, when you type:
-@verbatim
-    Comme'die-Franc,ais, chic,,
-@endverbatim
-you will get this:
-@if FOR-HTML
-@verbatim
-    Commédie-Français, chic,
-@endverbatim
-@endif
-@if FOR-LATEX
-@latexonly
-\hskip5mm\texttt{\footnotesize Comm\'{e}die-Fran\c{c}ais, chic,}
-@endlatexonly
-@endif
-
-The definition of the input method is very simple as below, and it is
-quite straight forward to extend it to cover all Latin characters.
-
-@if FOR-HTML
-@verbatim
-(title "latin-postfix")
-(map
- (trans
-  ("a'" ?á) ("e'" ?é) ("i'" ?í) ("o'" ?ó) ("u'" ?ú) ("c," ?ç)
-  ("A'" ?Á) ("E'" ?É) ("I'" ?Í) ("O'" ?Ó) ("U'" ?Ú) ("C," ?Ç)
-  ("a''" "a'") ("e''" "e'") ("i''" "i'") ("o''" "o'") ("u''" "u'")
-  ("c,," "c,")
-  ("A''" "A'") ("E''" "E'") ("I''" "I'") ("O''" "O'") ("U''" "U'")
-  ("C,," "C,")))
-(state
- (init
-  (trans)))
-@endverbatim
-@endif
-@if FOR-LATEX
-@latexonly
-\texttt{\footnotesize
-\hskip2mm(title "latin-postfix")\\
-\hskip2mm(map\\
-\hskip4mm (trans\\
-\hskip6mm  ("a'" ?\'{a}) ("e'" ?\'{e}) ("i'" ?\'{i}) ("o'" ?\'{o})
-("u'" ?\'{u}) ("c," ?\c{c})\\
-\hskip6mm  ("A'" ?\'{A}) ("E'" ?\'{E}) ("I'" ?\'{I}) ("O'" ?\'{O})
-("U'" ?\'{U}) ("C," ?\c{C})\\
-\hskip6mm  ("a''" "a'") ("e''" "e'") ("i''" "i'") ("o''" "o'") ("u''" "u'")\\
-\hskip6mm  ("c,," "c,")\\
-\hskip6mm  ("A''" "A'") ("E''" "E'") ("I''" "I'") ("O''" "O'") ("U''" "U'")\\
-\hskip6mm  ("C,," "C,")))\\
-\hskip2mm(state\\
-\hskip4mm (init\\
-\hskip6mm  (trans)))}
-@endlatexonly
-@endif
-
-@subsection im-example2 EXAMPLE 2
-
-This example is for inputting Unicode characters by typing C-u
-(Control-u) followed by four hexadecimal numbers.  For instance, when
-you type ("^u" means Control-u):
-@verbatim
-    ^u2190^u2191^u2192^u2193
-@endverbatim
-you will get this (Unicode arrow symbols):
-@verbatim
-    ←↑→↓
-@endverbatim
-
-The definition utilizes @c SET and @c IF commands as below:
-@verbatim
-(title "UNICODE")
-(map
- (starter
-  ((C-U) "U+"))
- (hex
-  ("0" ?0) ("1" ?1) ... ("9" ?9) ("a" ?A) ("b" ?B) ... ("f" ?F)))
-(state
- (init
-  (starter (set code 0) (set count 0) (shift unicode)))
- (unicode
-  (hex (set this @-)
-       (< this ?A
-         ((sub this 48))
-         ((sub this 55)))
-       (mul code 16) (add code this)
-       (add count 1)
-       (= count 4
-         ((delete @<) (insert code) (shift init))))))
-@endverbatim
-
-@subsection im-example3 EXAMPLE 3
-
-This example is for inputting Chinese characters by typing PinYin key
-sequence.
-@if FOR-HTML
-For instance, when you type:
-@verbatim
-    nihaobei2jing2
-@endverbatim
-you will get:
-@verbatim
-    你好北京
-@endverbatim
-
-The definition utilizes @c CANDIDATE and @c SELECT commands as below.
-Note that this is just an example, and it ignores such important key
-as Backspace.
-
-@verbatim
-(title "拼")
-
-(map
- ;; The initial character of Pinyin.
- (starter
-  ("a") ("b") ... ("h") ("j") ... ("t") ("w") ("x") ("y") ("z"))
-
- ;; Big table of Pinyin vs the corresponding Chinese characters.
- (pinyin
-  ...
-  ("bei" ("被北备背悲辈杯倍贝碑" ...))
-  ("hao" ("好号毫豪浩耗皓嚎昊郝" ...))
-  ("jing" ("经京精境警竟静惊景敬" ...))
-  ("ni" ("你呢尼泥逆倪匿拟腻妮" ...))
-  ...)
- ;; Typing 1, 2, ..., 0 selects the 0th, 1st, ..., 9th candidate.
- (choose
-  ("1" (select 0)) ("2" (select 1)) ... ("9" (select 8)) ("0" (select 9))))
-
-(state
- (init
-  ;; When an initial character of Pinyin is typed, re-handle it in
-  ;; "main" state.  Anything else is just produced as is.
-  (starter (show) (pushback 1) (shift main)))
-
- (main
-  ;; When a complete Pinyin sequence is typed, shift to "select" state
-  ;; to allow users to select one from the candidates.
-  (pinyin (shift select))
-
-  ;; When anything else is typed, produce the current candidate (if
-  ;; any), and re-handle the last input in "init" state.
-  (nil (hide) (shift init)))
-
- (select
-  ;; When a number is typed, select the corresponding canidate,
-  ;; produce it, and shift to "init" state.
-  (choose (hide) (shift init))
-
-  ;; When anything else is typed, produce the current candidate,
-  ;; and re-handle the last input in "init" state.
-  (nil (hide) (shift init))))
-@endverbatim
-
-@elseif FOR-LATEX
-@latexonly
-\begin{center}
-\fbox{This example is readable only in the documentation of HTML version.}
-\end{center}
-@endlatexonly
-@endif
-
-@endif
-
-@subsection im-seealso SEE ALSO
-
-@ref mim-list "Input Methods provided by the m17n database",
-@ref mdbGeneral "mdbGeneral(5)"
-*/
diff --git a/images/.cvsignore b/images/.cvsignore
new file mode 100644 (file)
index 0000000..ada7024
--- /dev/null
@@ -0,0 +1 @@
+icon-*.png
diff --git a/images/ru-kbd.eps b/images/ru-kbd.eps
new file mode 100644 (file)
index 0000000..5c38acb
--- /dev/null
@@ -0,0 +1,1233 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: pnmtops
+%%Title: noname.ps
+%%Pages: 1
+%%BoundingBox: 76 299 536 492
+%%EndComments
+/readstring {
+  currentfile exch readhexstring pop
+} bind def
+/rpicstr 60 string def
+/gpicstr 60 string def
+/bpicstr 60 string def
+%%EndProlog
+%%Page: 1 1
+gsave
+76.08 299.52 translate
+459.84 192.96 scale
+479 201 1
+[ 479 0 0 -201 0 201 ]
+{ rpicstr readstring }
+{ gpicstr readstring }
+{ bpicstr readstring }
+true 3
+colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffc9f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffce7f3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3fffffe3f3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffccff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffccff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffccff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ff3ff3ff3fe0fccff3fe0f3e7f3ff9fffff3f8078e7f3fe0fffff3f803
+e1ff3fe1fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fce7803f3e
+f3ff3ff3ff3fe0fccff3fe0f3e7f3ff9fffff3f8078e7f3fe0fffff3f803
+e1ff3fe1fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fce7803f3e
+f3ff3ff3ff3fe0fccff3fe0f3e7f3ff9fffff3f8078e7f3fe0fffff3f803
+e1ff3fe1fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fce7803f3e
+f3fe3ff3ff3fc07ccff3fc071e7f3ff9fffff3f807067f3fc07ffff3f803
+c0ff3fc0fffff3fc07f9ff3fc0fe7ff3ffffffff3ffffffff3fce7803f3e
+f3fe3ff3ff3fc07ccff3fc071e7f3ff9fffff3f807067f3fc07ffff3f803
+c0ff3fc0fffff3fc07f9ff3fc0fe7ff3ffffffff3ffffffff3fce7803f3e
+f3fe3ff3ff3fc07ccff3fc071e7f3ff9fffff3f807067f3fc07ffff3f803
+c0ff3fc0fffff3fc07f9ff3fc0fe7ff3ffffffff3ffffffff3fce7803f3e
+f3fc3ff3ff3f9e3ccff3f9e31e7f3ff3fffff3f9ff24ff3f8f3ffff3ffe7
+8c7f3f9e7f3ff3f8e3f1ff3f8c7e3ff3ffffffff3ffffffff3ffff9fff3e
+f3fc3ff3ff3f9e3ccff3f9e31e7f3ff3fffff3f9ff24ff3f8f3ffff3ffe7
+8c7f3f9e7f3ff3f8e3f1ff3f8c7e3ff3ffffffff3ffffffff3ffff9fff3e
+f3fc3ff3ff3f9e3ccff3f9e31e7f3ff3fffff3f9ff24ff3f8f3ffff3ffe7
+8c7f3f9e7f3ff3f8e3f1ff3f8c7e3ff3ffffffff3ffffffff3ffff9fff3e
+f3f93ff3ff3f9f3ccff3f9f30e7f3ff3ff3ff3f9ff04ff3f9f3f3ff3ffe7
+be7f3f9e7f3ff3f9f3f3ff3f9e7f3ff3ffffffff3fffff3ff3ffff9fff3e
+f3f93ff3ff3f9f3ccff3f9f30e7f3ff3ff3ff3f9ff04ff3f9f3f3ff3ffe7
+be7f3f9e7f3ff3f9f3f3ff3f9e7f3ff3ffffffff3fffff3ff3ffff9fff3e
+f3f93ff3ff3f9f3ccff3f9f30e7f3ff3ff3ff3f9ff04ff3f9f3f3ff3ffe7
+be7f3f9e7f3ff3f9f3f3ff3f9e7f3ff3ffffffff3fffff3ff3ffff9fff3e
+f3ff3ff3ff3fff3ffff3fff30e7f3fe4fe1ff3f9ff89ff3f9ffe1ff3ffcf
+fe7f3f9e7333f3f9f3e3ff3f9c7f1ff3ffffffff3fffff3ff3fe0f9fff3e
+f3ff3ff3ff3fff3ffff3fff30e7f3fe4fe1ff3f9ff89ff3f9ffe1ff3ffcf
+fe7f3f9e7333f3f9f3e3ff3f9c7f1ff3ffffffff3fffff3ff3fe0f9fff3e
+f3ff3ff3ff3fff3ffff3fff30e7f3fe4fe1ff3f9ff89ff3f9ffe1ff3ffcf
+fe7f3f9e7333f3f9f3e3ff3f9c7f1ff3ffffffff3fffff3ff3fe0f9fff3e
+f3ff3ff3ff3ffe7ffff3ffe7267f3fe4fe1ff3f80ff9ff3f90fe1ff3ffcf
+fcff3fc0f123f3f8e3e7ff3f987f9ff3ffffffff3f003f3ff3fc079fff3e
+f3ff3ff3ff3ffe7ffff3ffe7267f3fe4fe1ff3f80ff9ff3f90fe1ff3ffcf
+fcff3fc0f123f3f8e3e7ff3f987f9ff3ffffffff3f003f3ff3fc079fff3e
+f3ff3ff3ff3ffe7ffff3ffe7267f3fe4fe1ff3f80ff9ff3f90fe1ff3ffcf
+fcff3fc0f123f3f8e3e7ff3f987f9ff3ffffffff3f003f3ff3fc079fff3e
+f3ff3ff3ff3ffcfffff3ff0f267f3fccff3ff3f807f3ff3f807f3ff3ff9f
+f9ff3fc0fc0ff3fc03e7ff3f927f9ff3ffffffff3f003f3ff3f8f380ff3e
+f3ff3ff3ff3ffcfffff3ff0f267f3fccff3ff3f807f3ff3f807f3ff3ff9f
+f9ff3fc0fc0ff3fc03e7ff3f927f9ff3ffffffff3f003f3ff3f8f380ff3e
+f3ff3ff3ff3ffcfffff3ff0f267f3fccff3ff3f807f3ff3f807f3ff3ff9f
+f9ff3fc0fc0ff3fc03e7ff3f927f9ff3ffffffff3f003f3ff3f8f380ff3e
+f3ff3ff3ff3ff9fffff3ff07327f3fccfffff3ffe3f3ff3f8e3ffff3ff9f
+f3ff3f8c7f3ff3fe13e7ff3f867f9ff3f003ffff3ffff003f3f9f380ff3e
+f3ff3ff3ff3ff9fffff3ff07327f3fccfffff3ffe3f3ff3f8e3ffff3ff9f
+f3ff3f8c7f3ff3fe13e7ff3f867f9ff3f003ffff3ffff003f3f9f380ff3e
+f3ff3ff3ff3ff9fffff3ff07327f3fccfffff3ffe3f3ff3f8e3ffff3ff9f
+f3ff3f8c7f3ff3fe13e7ff3f867f9ff3f003ffff3ffff003f3f9f380ff3e
+f3ff3ff3ff3ff3fffff3fff3327f3f9cfffff3fff3e7ff3f9f3ffff3ff3f
+f3ff3f1e3c0ff3fff3e7ff3f8e7f9ff3f003ffff3ffff003f3f8039fff3e
+f3ff3ff3ff3ff3fffff3fff3327f3f9cfffff3fff3e7ff3f9f3ffff3ff3f
+f3ff3f1e3c0ff3fff3e7ff3f8e7f9ff3f003ffff3ffff003f3f8039fff3e
+f3ff3ff3ff3ff3fffff3fff3327f3f9cfffff3fff3e7ff3f9f3ffff3ff3f
+f3ff3f1e3c0ff3fff3e7ff3f8e7f9ff3f003ffff3ffff003f3f8039fff3e
+f3ff3ff3ff3fe7fffff3fff3387f3f803ffff3fff3e47f3f9f3ffff3ff3f
+f3ff3f3f3123f3fff3e3ff3f9e7f1ff3ffffffff3f003f3ff3f8039fff3e
+f3ff3ff3ff3fe7fffff3fff3387f3f803ffff3fff3e47f3f9f3ffff3ff3f
+f3ff3f3f3123f3fff3e3ff3f9e7f1ff3ffffffff3f003f3ff3f8039fff3e
+f3ff3ff3ff3fe7fffff3fff3387f3f803ffff3fff3e47f3f9f3ffff3ff3f
+f3ff3f3f3123f3fff3e3ff3f9e7f1ff3ffffffff3f003f3ff3f8039fff3e
+f3ff3fffff3fcffffff3f9f3387f3f803f3ff3f9f3c83f3f9f3f3ff3fe7f
+ffff3f3f3333f3f9f3f3ff3f9e7f3ff3ffffffff3f003f3ff3f9ff9fff3e
+f3ff3fffff3fcffffff3f9f3387f3f803f3ff3f9f3c83f3f9f3f3ff3fe7f
+ffff3f3f3333f3f9f3f3ff3f9e7f3ff3ffffffff3f003f3ff3f9ff9fff3e
+f3ff3fffff3fcffffff3f9f3387f3f803f3ff3f9f3c83f3f9f3f3ff3fe7f
+ffff3f3f3333f3f9f3f3ff3f9e7f3ff3ffffffff3f003f3ff3f9ff9fff3e
+f3ff3fffff3f9ffffff3f9e33c7f3ffcfe1ff3f9e3c93f3f8e3e1ff3fe7f
+ffff3f1e3f3ff3f9e3f1ff3f8c7e3ff3ffffffff3fffff3ff3f9f39fff3e
+f3ff3fffff3f9ffffff3f9e33c7f3ffcfe1ff3f9e3c93f3f8e3e1ff3fe7f
+ffff3f1e3f3ff3f9e3f1ff3f8c7e3ff3ffffffff3fffff3ff3f9f39fff3e
+f3ff3fffff3f9ffffff3f9e33c7f3ffcfe1ff3f9e3c93f3f8e3e1ff3fe7f
+ffff3f1e3f3ff3f9e3f1ff3f8c7e3ff3ffffffff3fffff3ff3f9f39fff3e
+f3f807f3ff3f803ffff3fc073c7f3ffcfe1ff3fc07983f3fc07e1ff3fcff
+f3ff3f807f3ff3fc07f9ff3fc0fe7ff3ffffffff3fffff3ff3fc03803f3e
+f3f807f3ff3f803ffff3fc073c7f3ffcfe1ff3fc07983f3fc07e1ff3fcff
+f3ff3f807f3ff3fc07f9ff3fc0fe7ff3ffffffff3fffff3ff3fc03803f3e
+f3f807f3ff3f803ffff3fc073c7f3ffcfe1ff3fc07983f3fc07e1ff3fcff
+f3ff3f807f3ff3fc07f9ff3fc0fe7ff3ffffffff3fffff3ff3fc03803f3e
+f3f807e1ff3f803ffff3fe0f3e7f3ffcff9ff3fe0f9c7f3fe0ff3ff3fcff
+e1ff3fc0fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fe07803f3e
+f3f807e1ff3f803ffff3fe0f3e7f3ffcff9ff3fe0f9c7f3fe0ff3ff3fcff
+e1ff3fc0fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fe07803f3e
+f3f807e1ff3f803ffff3fe0f3e7f3ffcff9ff3fe0f9c7f3fe0ff3ff3fcff
+e1ff3fc0fffff3fe0ffcff3fe1fcfff3ffffffff3ffffffff3fe07803f3e
+f3fffff3ff3ffffffff3ffffffff3fffff9ff3ffffffff3ffffffff3ffff
+f3ff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3fffff3ff3ffffffff3ffffffff3fffff9ff3ffffffff3ffffffff3ffff
+f3ff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3fffff3ff3ffffffff3ffffffff3fffff9ff3ffffffff3ffffffff3ffff
+f3ff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3fffe001f3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+f00000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff39fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff83fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff83fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3fff83fff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff83fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff83fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff83fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe78fff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff01fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe78fff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff01fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe78fff3ffe00fff3ffe7cff
+f3ffe00fff3ffcccfff3ffcccfff3fff01fff3ffe7cfff3ffc3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe78fff3ffe79fff3ffe7cfff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3ffe38fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3ffe38fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3ffe38fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3fff39fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3fff39fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3ffff3fffe
+fffffff3ffe70fff3ffe79fff3fff39fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3ffff3fffe
+fffffff3ffe64fff3ffe79fff3fff11fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff03fff3fffe
+fffffff3ffe64fff3ffe79fff3fff11fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff03fff3fffe
+fffffff3ffe64fff3ffe79fff3fff11fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff03fff3fffe
+fffffff3ffe64fff3ffe79fff3fff93fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff01fff3fffe
+fffffff3ffe64fff3ffe79fff3fff93fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff01fff3fffe
+fffffff3ffe64fff3ffe79fff3fff93fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff01fff3fffe
+fffffff3ffe4cfff3ffe79fff3fff83fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff38fff3fffe
+fffffff3ffe4cfff3ffe79fff3fff83fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff38fff3fffe
+fffffff3ffe4cfff3ffe79fff3fff83fff3ffe0ffff3ffe03fff3ffe00ff
+f3ffe7ffff3ffcccfff3ffcccfff3fffc3fff3fffc7fff3fff38fff3fffe
+fffffff3ffe4cfff3ffe79fff3fffc7fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff3cfff3fffe
+fffffff3ffe4cfff3ffe79fff3fffc7fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff3cfff3fffe
+fffffff3ffe4cfff3ffe79fff3fffc7fff3ffe67fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffff9fff3fff93fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffc7fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffc7fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffc7fff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffffcfff3fff93fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffcffff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffcffff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3cfff3fffe
+fffffff3ffe1cfff3ffe79fff3fffcffff3ffe73fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff3cfff3fffe
+fffffff3ffe3cfff3ffe79fff3fff8ffff3ffe79fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff38fff3fffe
+fffffff3ffe3cfff3ffe79fff3fff8ffff3ffe79fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff38fff3fffe
+fffffff3ffe3cfff3ffe79fff3fff8ffff3ffe79fff3ffe7ffff3ffe7cff
+f3ffe7ffff3ffcccfff3ffcccfff3ffe7cfff3fff39fff3fff38fff3fffe
+fffffff3ffe3cfff3ffe01fff3ffe1ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff01fff3ffe7cfff3fff01fff3fffe
+fffffff3ffe3cfff3ffe01fff3ffe1ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff01fff3ffe7cfff3fff01fff3fffe
+fffffff3ffe3cfff3ffe01fff3ffe1ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff01fff3ffe7cfff3fff01fff3fffe
+fffffff3ffe7cfff3ffe01fff3ffe3ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff83fff3ffe7cfff3fff03fff3fffe
+fffffff3ffe7cfff3ffe01fff3ffe3ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff83fff3ffe7cfff3fff03fff3fffe
+fffffff3ffe7cfff3ffe01fff3ffe3ffff3ffe7cfff3ffe00fff3ffe7cff
+f3ffe7ffff3ffc00fff3ffc00fff3fff83fff3ffe7cfff3fff03fff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffff9fff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffcfff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffe7ff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffe
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+fffffff00000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe07fff3fff83fff3ffe00fff3ffe0
+3fff3fff83fff3fff80fff3fffc1fff3ffcccfff3fff87fff3f9fff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe07fff3fff83fff3ffe00fff3ffe0
+3fff3fff83fff3fff80fff3fffc1fff3ffcccfff3fff87fff3f9fff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe07fff3fff83fff3ffe00fff3ffe0
+3fff3fff83fff3fff80fff3fffc1fff3ffcccfff3fff87fff3f9fff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe03fff3fff01fff3ffe00fff3ffe0
+1fff3fff01fff3fff80fff3fff81fff3ffcccfff3ffe01fff3f9fff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe03fff3fff01fff3ffe00fff3ffe0
+1fff3fff01fff3fff80fff3fff81fff3ffcccfff3ffe01fff3f9fff3ff3e
+ffffffffff3fffcffff3ffe7cfff3ffe03fff3fff01fff3ffe00fff3ffe0
+1fff3fff01fff3fff80fff3fff81fff3ffcccfff3ffe01fff3f9fff3ff3e
+ffffffffff3fff03fff3ffe7cfff3ffe71fff3ffe38fff3ffe7cfff3ffe7
+8fff3ffe38fff3fff9cfff3fff99fff3ffe49fff3ffe79fff3fcfff3ff3e
+ffffffffff3fff03fff3ffe7cfff3ffe71fff3ffe38fff3ffe7cfff3ffe7
+8fff3ffe38fff3fff9cfff3fff99fff3ffe49fff3ffe79fff3fcfff3ff3e
+ffffffffff3fff03fff3ffe7cfff3ffe71fff3ffe38fff3ffe7cfff3ffe7
+8fff3ffe38fff3fff9cfff3fff99fff3ffe49fff3ffe79fff3fcfff3ff3e
+ffffffffff3ffe01fff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff99fff3ffe49fff3ffffcfff3fcfff3ff3e
+ffffffffff3ffe01fff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff99fff3ffe49fff3ffffcfff3fcfff3ff3e
+ffffffffff3ffe01fff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff99fff3ffe49fff3ffffcfff3fcfff3ff3e
+ffffffffff3ffcccfff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff39fff3ffe49fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff39fff3ffe49fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe7cfff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+cfff3ffe7cfff3fff9cfff3fff39fff3ffe49fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe0cfff3ffe73fff3ffe7cfff3ffe7cfff3ffe7
+8fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe0cfff3ffe73fff3ffe7cfff3ffe7cfff3ffe7
+8fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe0cfff3ffe73fff3ffe7cfff3ffe7cfff3ffe7
+8fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3ffffcfff3fe7ff3ff3e
+ffffffffff3ffcccfff3ffe04fff3ffe03fff3ffe00fff3ffe7cfff3ffe0
+1fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe04fff3ffe03fff3ffe00fff3ffe7cfff3ffe0
+1fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe04fff3ffe03fff3ffe00fff3ffe7cfff3ffe0
+1fff3ffe7cfff3fff9cfff3fff39fff3fff03fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe01fff3ffe00fff3ffe7cfff3ffe0
+3fff3ffe7cfff3fff9cfff3ffe79fff3fff87fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe01fff3ffe00fff3ffe7cfff3ffe0
+3fff3ffe7cfff3fff9cfff3ffe79fff3fff87fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe01fff3ffe00fff3ffe7cfff3ffe0
+3fff3ffe7cfff3fff9cfff3ffe79fff3fff87fff3fff80fff3ff3ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe79fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffcccfff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffe79fff3fff03fff3ffffcfff3ff9ff3ff3e
+ffffffffff3ffe01fff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffcf9fff3ffe49fff3ffffcfff3ffcff3ff3e
+ffffffffff3ffe01fff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffcf9fff3ffe49fff3ffffcfff3ffcff3ff3e
+ffffffffff3ffe01fff3ffe64fff3ffe7cfff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe7cfff3fff9cfff3ffcf9fff3ffe49fff3ffffcfff3ffcff3ff3e
+ffffffffff3fff03fff3ffe64fff3ffe78fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe38fff3fff3cfff3ffcf9fff3ffe49fff3ffe79fff3ffcff3ff3e
+ffffffffff3fff03fff3ffe64fff3ffe78fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe38fff3fff3cfff3ffcf9fff3ffe49fff3ffe79fff3ffcff3ff3e
+ffffffffff3fff03fff3ffe64fff3ffe78fff3ffe7cfff3ffe7cfff3ffe7
+ffff3ffe38fff3fff3cfff3ffcf9fff3ffe49fff3ffe79fff3ffcff3ff3e
+ffffffffff3fffcffff3ffe04fff3ffe01fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff01fff3ffe3cfff3ffc01fff3ffcccfff3ffe01fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffe04fff3ffe01fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff01fff3ffe3cfff3ffc01fff3ffcccfff3ffe01fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffe04fff3ffe01fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff01fff3ffe3cfff3ffc01fff3ffcccfff3ffe01fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffe0cfff3ffe03fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff83fff3ffe7cfff3ffc01fff3ffcccfff3fff87fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffe0cfff3ffe03fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff83fff3ffe7cfff3ffc01fff3ffcccfff3fff87fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffe0cfff3ffe03fff3ffe7cfff3ffe7cfff3ffe7
+ffff3fff83fff3ffe7cfff3ffc01fff3ffcccfff3fff87fff3ffe7f3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3fffcffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffcfff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffefff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffefff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffefff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffff
+ffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffff00000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000003e
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe7cfff3fff83fff3ffe7cfff3ffe7cff
+f3ffc00fff3ffe7ffff3ffe03fff3ffce3fff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe7cfff3fff83fff3ffe7cfff3ffe7cff
+f3ffc00fff3ffe7ffff3ffe03fff3ffce3fff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe7cfff3fff83fff3ffe7cfff3ffe7cff
+f3ffc00fff3ffe7ffff3ffe03fff3ffce3fff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe7cfff3fff01fff3ffe38fff3ffe78ff
+f3ffc00fff3ffe7ffff3ffe03fff3ffcc1fff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe7cfff3fff01fff3ffe38fff3ffe78ff
+f3ffc00fff3ffe7ffff3ffe03fff3ffcc1fff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe7cfff3fff01fff3ffe38fff3ffe78ff
+f3ffc00fff3ffe7ffff3ffe03fff3ffcc1fff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe38fff3ffe38fff3ffe78ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe38fff3ffe38fff3ffe78ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe38fff3ffe38fff3ffe78ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7cfff3ffe10fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7cfff3ffe10fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7cfff3ffe10fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7ffff3ffe00fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7ffff3ffe00fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffe7cfff3ffe7ffff3ffe00fff3ffe70ff
+f3fffcffff3ffe7ffff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe07fff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe07fff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffe3cfff3ffe7cfff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe07fff3ffe7ffff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe78fff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe03fff3ffe03fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe78fff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe03fff3ffe03fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff00fff3ffe78fff3ffe7ffff3ffe44fff3ffe64ff
+f3fffcffff3ffe03fff3ffe03fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe30fff3ffe7ffff3ffe6cfff3ffe4cff
+f3fffcffff3ffe71fff3ffe01fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe30fff3ffe7ffff3ffe6cfff3ffe4cff
+f3fffcffff3ffe71fff3ffe01fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff80fff3ffe30fff3ffe7ffff3ffe6cfff3ffe4cff
+f3fffcffff3ffe71fff3ffe01fff3ffc1cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff04fff3ffe7ffff3ffe7cfff3ffe4cff
+f3fffcffff3ffe79fff3ffe78fff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff04fff3ffe7ffff3ffe7cfff3ffe4cff
+f3fffcffff3ffe79fff3ffe78fff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff04fff3ffe7ffff3ffe7cfff3ffe4cff
+f3fffcffff3ffe79fff3ffe78fff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff8cfff3ffe7ffff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff8cfff3ffe7ffff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff9cfff3fff8cfff3ffe7ffff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ffffffff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe7cfff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ff3ff3ff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe7cfff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ff3ff3ff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe7cfff3ffe7cfff3ffe1cff
+f3fffcffff3ffe79fff3ffe7cfff3ffc9cfff3ff3ff3ff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe38fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe71fff3ffe78fff3ffc9cfff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe38fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe71fff3ffe78fff3ffc9cfff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3fff3cfff3ffffcfff3ffe38fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe71fff3ffe78fff3ffc9cfff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff01fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe03fff3ffe01fff3ffcc1fff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff01fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe03fff3ffe01fff3ffcc1fff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff01fff3ffe7cfff3ffe3cff
+f3fffcffff3ffe03fff3ffe01fff3ffcc1fff3fe1fe1ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff83fff3ffe7cfff3ffe7cff
+f3fffcffff3ffe07fff3ffe03fff3ffce3fff3ff3ff9ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff83fff3ffe7cfff3ffe7cff
+f3fffcffff3ffe07fff3ffe03fff3ffce3fff3ff3ff9ff3ffffffffffffe
+ffffffffffffffff3ffe7cfff3ffffcfff3fff83fff3ffe7cfff3ffe7cff
+f3fffcffff3ffe07fff3ffe03fff3ffce3fff3ff3ff9ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff9ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff9ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff9ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3fffff3ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffe7ff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff3ffffffff3ffffffff3ffffffff3ffffffff3fffffff
+f3ffffffff3ffffffff3ffffffff3ffffffff3ffffffff3ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffff00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000003ffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
+grestore
+showpage
+%%Trailer
diff --git a/images/ru-kbd.png b/images/ru-kbd.png
new file mode 100644 (file)
index 0000000..cb86fdb
Binary files /dev/null and b/images/ru-kbd.png differ
diff --git a/images/ru-phonetic.eps b/images/ru-phonetic.eps
new file mode 100644 (file)
index 0000000..6ff1745
--- /dev/null
@@ -0,0 +1,1227 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: pnmtops
+%%Title: noname.ps
+%%Pages: 1
+%%BoundingBox: 77 300 534 492
+%%EndComments
+/readstring {
+  currentfile exch readhexstring pop
+} bind def
+/rpicstr 60 string def
+/gpicstr 60 string def
+/bpicstr 60 string def
+%%EndProlog
+%%Page: 1 1
+gsave
+77.52 300 translate
+456.96 192 scale
+476 200 1
+[ 476 0 0 -200 0 200 ]
+{ rpicstr readstring }
+{ gpicstr readstring }
+{ bpicstr readstring }
+true 3
+colorimage
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7ffff9cfe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fe7fe7fe7fc1fc1fe7fc1f9cfe7ff3f007e7f00ffffe7fc1e1ffe7f007
+e3fe7fc3ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffff3e7e7fffe71fe70
+e7fe7fe7fe7fc1fc1fe7fc1f9cfe7ff3f007e7f00ffffe7fc1e1ffe7f007
+e3fe7fc3ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffff3e7e7fffe71fe70
+e7fe7fe7fe7fc1fc1fe7fc1f9cfe7ff3f007e7f00ffffe7fc1e1ffe7f007
+e3fe7fc3ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffff3e7e7fffe71fe70
+e7fc7fe7fe7f80f80fe7f80f9cfe7ff3f007e7f00ffffe7f80e1ffe7f007
+c1fe7f81ffffe7f80ff3fe7f81fcffe7fffffffe7ffff3e7e7fffe60fe70
+e7fc7fe7fe7f80f80fe7f80f9cfe7ff3f007e7f00ffffe7f80e1ffe7f007
+c1fe7f81ffffe7f80ff3fe7f81fcffe7fffffffe7ffff3e7e7fffe60fe70
+e7fc7fe7fe7f80f80fe7f80f9cfe7ff3f007e7f00ffffe7f80e1ffe7f007
+c1fe7f81ffffe7f80ff3fe7f81fcffe7fffffffe7ffff3e7e7fffe60fe70
+e7f87fe7fe7f3c71e7e7f3c7fffe7fe7f3ffe7f3fffffe7f1e79ffe7ffcf
+88fe7f3cfe7fe7f1c7e3fe7f18fc7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7f87fe7fe7f3c71e7e7f3c7fffe7fe7f3ffe7f3fffffe7f1e79ffe7ffcf
+88fe7f3cfe7fe7f1c7e3fe7f18fc7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7f87fe7fe7f3c71e7e7f3c7fffe7fe7f3ffe7f3fffffe7f1e79ffe7ffcf
+88fe7f3cfe7fe7f1c7e3fe7f18fc7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7f27fe7fe7f3e73e7e7f3e7fffe7fe7f3ffe7f3fffffe7f3e79ffe7ffcf
+9cfe7f3cfe7fe7f3e7e7fe7f3cfe7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7f27fe7fe7f3e73e7e7f3e7fffe7fe7f3ffe7f3fffffe7f3e79ffe7ffcf
+9cfe7f3cfe7fe7f3e7e7fe7f3cfe7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7f27fe7fe7f3e73e7e7f3e7fffe7fe7f3ffe7f3fffffe7f3e79ffe7ffcf
+9cfe7f3cfe7fe7f3e7e7fe7f3cfe7fe7fffffffe7ffff3e7e7fffe4e7e70
+e7fe7fe7fe7ffe7307e7ffe7c1fe7fc9f3ffe7f3ff0ffe7f3ff9ffe7ff9f
+99fe7f3ce667e7f3e7c7fe7f38fe3fe7fffffffe7f3e73e7e7e70e4e7e70
+e7fe7fe7fe7ffe7307e7ffe7c1fe7fc9f3ffe7f3ff0ffe7f3ff9ffe7ff9f
+99fe7f3ce667e7f3e7c7fe7f38fe3fe7fffffffe7f3e73e7e7e70e4e7e70
+e7fe7fe7fe7ffe7307e7ffe7c1fe7fc9f3ffe7f3ff0ffe7f3ff9ffe7ff9f
+99fe7f3ce667e7f3e7c7fe7f38fe3fe7fffffffe7f3e73e7e7e70e4e7e70
+e7fe7fe7fe7ffcf207e7ffcf80fe7fc9f3ffe7f01f0ffe7f21f81fe7ff9f
+c1fe7f81e247e7f1c7cffe7f30ff3fe7fffffffe7f3e73e7e7e6064e7e70
+e7fe7fe7fe7ffcf207e7ffcf80fe7fc9f3ffe7f01f0ffe7f21f81fe7ff9f
+c1fe7f81e247e7f1c7cffe7f30ff3fe7fffffffe7f3e73e7e7e6064e7e70
+e7fe7fe7fe7ffcf207e7ffcf80fe7fc9f3ffe7f01f0ffe7f21f81fe7ff9f
+c1fe7f81e247e7f1c7cffe7f30ff3fe7fffffffe7f3e73e7e7e6064e7e70
+e7fe7fe7fe7ff9f267e7fe1f1e7e7f99f01fe7f00fcffe7f00f80fe7ff3f
+83fe7f81f81fe7f807cffe7f24ff3fe7fffffffe7f3e73c7e7e6660e7e70
+e7fe7fe7fe7ff9f267e7fe1f1e7e7f99f01fe7f00fcffe7f00f80fe7ff3f
+83fe7f81f81fe7f807cffe7f24ff3fe7fffffffe7f3e73c7e7e6660e7e70
+e7fe7fe7fe7ff9f267e7fe1f1e7e7f99f01fe7f00fcffe7f00f80fe7ff3f
+83fe7f81f81fe7f807cffe7f24ff3fe7fffffffe7f3e73c7e7e6660e7e70
+e7fe7fe7fe7ff3f267e7fe0f3e7e7f99f01fe7ffc7c0fe7f1c79c7e7ff3f
+07fe7f18fe7fe7fc27cffe7f0cff3fe7e007fffe7f3e7187e7e6660e7e70
+e7fe7fe7fe7ff3f267e7fe0f3e7e7f99f01fe7ffc7c0fe7f1c79c7e7ff3f
+07fe7f18fe7fe7fc27cffe7f0cff3fe7e007fffe7f3e7187e7e6660e7e70
+e7fe7fe7fe7ff3f267e7fe0f3e7e7f99f01fe7ffc7c0fe7f1c79c7e7ff3f
+07fe7f18fe7fe7fc27cffe7f0cff3fe7e007fffe7f3e7187e7e6660e7e70
+e7fe7fe7fe7fe7f267e7ffe7007e7f39f3ffe7ffe7c07e7f3e79e7e7fe7e
+327e7e3c781fe7ffe7cffe7f1cff3fe7e007fffe7f187827e7e0664e7e70
+e7fe7fe7fe7fe7f267e7ffe7007e7f39f3ffe7ffe7c07e7f3e79e7e7fe7e
+327e7e3c781fe7ffe7cffe7f1cff3fe7e007fffe7f187827e7e0664e7e70
+e7fe7fe7fe7fe7f267e7ffe7007e7f39f3ffe7ffe7c07e7f3e79e7e7fe7e
+327e7e3c781fe7ffe7cffe7f1cff3fe7e007fffe7f187827e7e0664e7e70
+e7fe7fe7fe7fcff207e7ffe7007e7f0073ffe7ffe7ce7e7f3e79e7e7fe7e
+787e7e7e6247e7ffe7c7fe7f3cfe3fe7fffffffe7f807c67e7e0664e7e70
+e7fe7fe7fe7fcff207e7ffe7007e7f0073ffe7ffe7ce7e7f3e79e7e7fe7e
+787e7e7e6247e7ffe7c7fe7f3cfe3fe7fffffffe7f807c67e7e0664e7e70
+e7fe7fe7fe7fcff207e7ffe7007e7f0073ffe7ffe7ce7e7f3e79e7e7fe7e
+787e7e7e6247e7ffe7c7fe7f3cfe3fe7fffffffe7f807c67e7e0664e7e70
+e7fe7ffffe7f9ff30fe7f3e73ffe7f0073ffe7f3e7ce7e7f3e79e7e7fcfe
+78fe7e7e6667e7f3e7e7fe7f3cfe7fe7fffffffe7fc67fe7e7e6664e7e70
+e7fe7ffffe7f9ff30fe7f3e73ffe7f0073ffe7f3e7ce7e7f3e79e7e7fcfe
+78fe7e7e6667e7f3e7e7fe7f3cfe7fe7fffffffe7fc67fe7e7e6664e7e70
+e7fe7ffffe7f9ff30fe7f3e73ffe7f0073ffe7f3e7ce7e7f3e79e7e7fcfe
+78fe7e7e6667e7f3e7e7fe7f3cfe7fe7fffffffe7fc67fe7e7e6664e7e70
+e7fe7ffffe7f3ff1ffe7f3c73e7e7ff9f3ffe7f3c7ce7e7f1c79c7e7fcfe
+79fe7e3c7e7fe7f3c7e3fe7f18fc7fe7fffffffe7ffe7fe7e7e6664e7e70
+e7fe7ffffe7f3ff1ffe7f3c73e7e7ff9f3ffe7f3c7ce7e7f1c79c7e7fcfe
+79fe7e3c7e7fe7f3c7e3fe7f18fc7fe7fffffffe7ffe7fe7e7e6664e7e70
+e7fe7ffffe7f3ff1ffe7f3c73e7e7ff9f3ffe7f3c7ce7e7f1c79c7e7fcfe
+79fe7e3c7e7fe7f3c7e3fe7f18fc7fe7fffffffe7ffe7fe7e7e6664e7e70
+e7f00fe7fe7f007807e7f80f807e7ff9f007e7f80fc07e7f80f80fe7f9ff
+007e7f00fe7fe7f80ff3fe7f81fcffe7fffffffe7ffe7fe7e7e60660fe70
+e7f00fe7fe7f007807e7f80f807e7ff9f007e7f80fc07e7f80f80fe7f9ff
+007e7f00fe7fe7f80ff3fe7f81fcffe7fffffffe7ffe7fe7e7e60660fe70
+e7f00fe7fe7f007807e7f80f807e7ff9f007e7f80fc07e7f80f80fe7f9ff
+007e7f00fe7fe7f80ff3fe7f81fcffe7fffffffe7ffe7fe7e7e60660fe70
+e7f00fc3fe7f007c07e7fc1fc0fe7ff9f007e7fc1fc0fe7fc1f81fe7f9ff
+867e7f81ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffe7fe7e7e70e71fe70
+e7f00fc3fe7f007c07e7fc1fc0fe7ff9f007e7fc1fc0fe7fc1f81fe7f9ff
+867e7f81ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffe7fe7e7e70e71fe70
+e7f00fc3fe7f007c07e7fc1fc0fe7ff9f007e7fc1fc0fe7fc1f81fe7f9ff
+867e7f81ffffe7fc1ff9fe7fc3f9ffe7fffffffe7ffe7fe7e7e70e71fe70
+e7ffffe7fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7ffffe7fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7ffffe7fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffc003e7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+e00000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7ffffc07e7ffff03fe7ffff007e7ffff01fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3e7e7ffffc1fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffffc07e7ffff03fe7ffff007e7ffff01fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3e7e7ffffc1fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffffc07e7ffff03fe7ffff007e7ffff01fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3e7e7ffffc1fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffff807e7ffff01fe7ffff007e7ffff00fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff80fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffff807e7ffff01fe7ffff007e7ffff00fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff80fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffff807e7ffff01fe7ffff007e7ffff00fe7fffe007e7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff80fe7ffff007e7fffe667e7fffe667e7fff0
+ffffffe7ffff1e7e7ffff38fe7ffff3ffe7ffff3c7e7ffffe7fe7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff1c7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7ffff1e7e7ffff38fe7ffff3ffe7ffff3c7e7ffffe7fe7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff1c7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7ffff1e7e7ffff38fe7ffff3ffe7ffff3c7e7ffffe7fe7ffff3e7
+e7ffff3e7e7ffff3c7e7ffff1c7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7ffff3e7e7ffff3cfe7ffff3ffe7ffff3e7e7ffffe7fe7ffff3e7
+e7ffff1c7e7ffff387e7ffff3e7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7ffff3e7e7ffff3cfe7ffff3ffe7ffff3e7e7ffffe7fe7ffff3e7
+e7ffff1c7e7ffff387e7ffff3e7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7ffff3e7e7ffff3cfe7ffff3ffe7ffff3e7e7ffffe7fe7ffff3e7
+e7ffff1c7e7ffff387e7ffff3e7e7ffff3e7e7fffe667e7fffe667e7fff0
+ffffffe7fc073e7e7f03f3cfe7fc1f3ffe7f31f3e7e7e007e7fe7f3e73e7
+e7f3e79cfe7f3e7387e7fc1f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7fc073e7e7f03f3cfe7fc1f3ffe7f31f3e7e7e007e7fe7f3e73e7
+e7f3e79cfe7f3e7387e7fc1f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7fc073e7e7f03f3cfe7fc1f3ffe7f31f3e7e7e007e7fe7f3e73e7
+e7f3e79cfe7f3e7387e7fc1f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7f8071e7e7f01f39fe7f80f3ffe7f20f3c7e7e007e7fe7f3e7067
+e7f3e788fe7f3e7327e7f80f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7f8071e7e7f01f39fe7f80f3ffe7f20f3c7e7e007e7fe7f3e7067
+e7f3e788fe7f3e7327e7f80f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7f8071e7e7f01f39fe7f80f3ffe7f20f3c7e7e007e7fe7f3e7067
+e7f3e788fe7f3e7327e7f80f3e7e7f0073e7e7e666667e7e666667e7fff0
+ffffffe7f3e7807e7f3cf01fe7f1e701fe7f0c700fe7fe7fe7fe7f3e7027
+e7f3e7c9fe7f3c7327e7f1c73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f3e7807e7f3cf01fe7f1e701fe7f0c700fe7fe7fe7fe7f3e7027
+e7f3e7c9fe7f3c7327e7f1c73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f3e7807e7f3cf01fe7f1e701fe7f0c700fe7fe7fe7fe7f3e7027
+e7f3e7c9fe7f3c7327e7f1c73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f3e7c07e7f3cf00fe7f3e701fe7f1e701fe7fe7fe7fe7f067327
+e7f1c7c1fe7f387267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f3e7c07e7f3cf00fe7f3e701fe7f1e701fe7fe7fe7fe7f067327
+e7f1c7c1fe7f387267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f3e7c07e7f3cf00fe7f3e701fe7f1e701fe7fe7fe7fe7f067327
+e7f1c7c1fe7f387267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f807ce7e7f01f3cfe7f0073ffe7f3e73ffe7fe7fe7fe7f027327
+e7f9cfe3fe7f327267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f807ce7e7f01f3cfe7f0073ffe7f3e73ffe7fe7fe7fe7f027327
+e7f9cfe3fe7f327267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f807ce7e7f01f3cfe7f0073ffe7f3e73ffe7fe7fe7fe7f027327
+e7f9cfe3fe7f327267e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fc07ce7e7f00f3e7e7f0073ffe7f3e73ffe7fe7fe7fe7f327327
+e7f88fe3fe7f2670e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fc07ce7e7f00f3e7e7f0073ffe7f3e73ffe7fe7fe7fe7f327327
+e7f88fe3fe7f2670e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fc07ce7e7f00f3e7e7f0073ffe7f3e73ffe7fe7fe7fe7f327327
+e7f88fe3fe7f2670e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fce79e7e7f3c73e7e7f3ff3ffe7f1e73ffe7fe7fe7fe7f327327
+e7fc9fe7fe7f0e70e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fce79e7e7f3c73e7e7f3ff3ffe7f1e73ffe7fe7fe7fe7f327327
+e7fc9fe7fe7f0e70e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7fce79e7e7f3c73e7e7f3ff3ffe7f1e73ffe7fe7fe7fe7f327327
+e7fc9fe7fe7f0e70e7e7f3e73e7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f8e79e7e7f3e73c7e7f3e73ffe7f0c73ffe7fe7fe7fe7f327327
+e7fc1fc7fe7f1e71e7e7f1c71c7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f8e79e7e7f3e73c7e7f3e73ffe7f0c73ffe7fe7fe7fe7f327327
+e7fc1fc7fe7f1e71e7e7f1c71c7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f8e79e7e7f3e73c7e7f3e73ffe7f0c73ffe7fe7fe7fe7f327327
+e7fc1fc7fe7f1e71e7e7f1c71c7e7f3e73e7e7e666667e7e666667e7fff0
+ffffffe7f1e73e7e7f00f00fe7f807007e7f20f3ffe7fe7fe7fe7f027027
+e7fe3f0ffe7f3e71e7e7f80f80fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7f1e73e7e7f00f00fe7f807007e7f20f3ffe7fe7fe7fe7f027027
+e7fe3f0ffe7f3e71e7e7f80f80fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7f1e73e7e7f00f00fe7f807007e7f20f3ffe7fe7fe7fe7f027027
+e7fe3f0ffe7f3e71e7e7f80f80fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7f3e73e7e7f01f01fe7fc0f007e7f31f3ffe7fe7fe7fe7f067067
+e7fe3f1ffe7f3e73e7e7fc1fc1fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7f3e73e7e7f01f01fe7fc0f007e7f31f3ffe7fe7fe7fe7f067067
+e7fe3f1ffe7f3e73e7e7fc1fc1fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7f3e73e7e7f01f01fe7fc0f007e7f31f3ffe7fe7fe7fe7f067067
+e7fe3f1ffe7f3e73e7e7fc1fc1fe7f3e73e7e7e006007e7e006007e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fe7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fe7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fe7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fc7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fc7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fc7ffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffe7fe7e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fcfffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff3ff3e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fcfffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff3ff3e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7fcfffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff3ff3e7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7f8fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7f8fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7f3fffffe7fffffffe7fffffff
+e7f8fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7f9fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7f9fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7f9fffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fff0
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+ffffffe00000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffff9cfe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffffc1fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffffc1fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7ffffc1fe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7ffffe7fe7fffffffe7ffff
+fffe7f9cffffe7fffffffe7fffffffe7fffffffe7fc3f99fe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7ffffe7fe7fffffffe7ffff
+fffe7f9cffffe7fffffffe7fffffffe7fffffffe7fc3f99fe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7ffffe7fe7fffffffe7ffff
+fffe7f9cffffe7fffffffe7fffffffe7fffffffe7fc3f99fe7fffffffe70
+fffffffffe7ffffc1fe7ffffc1fe7ffffe0fe7ffffe7fe7ffff007e7ffff
+3e7e7f9cf3e7e7ffff3e7e7ffffc07e7fffffffe7fc3f99fe7ffffc3fe70
+fffffffffe7ffffc1fe7ffffc1fe7ffffe0fe7ffffe7fe7ffff007e7ffff
+3e7e7f9cf3e7e7ffff3e7e7ffffc07e7fffffffe7fc3f99fe7ffffc3fe70
+fffffffffe7ffffc1fe7ffffc1fe7ffffe0fe7ffffe7fe7ffff007e7ffff
+3e7e7f9cf3e7e7ffff3e7e7ffffc07e7fffffffe7fc3f99fe7ffffc3fe70
+fffffffffe7ffff80fe7ffff80fe7ffffc0fe7ffffe7fe7ffff007e7ffff
+3e7e7fc1f3c7e7ffff3c7e7ffffc07e7fffffffe7ff3f99fe7ffff00fe70
+fffffffffe7ffff80fe7ffff80fe7ffffc0fe7ffffe7fe7ffff007e7ffff
+3e7e7fc1f3c7e7ffff3c7e7ffffc07e7fffffffe7ff3f99fe7ffff00fe70
+fffffffffe7ffff80fe7ffff80fe7ffffc0fe7ffffe7fe7ffff007e7ffff
+3e7e7fc1f3c7e7ffff3c7e7ffffc07e7fffffffe7ff3f99fe7ffff00fe70
+fffffffffe7ffff1c7e7ffff1c7e7ffffccfe7fe7f81fe7ffff3ffe7ffff
+9cfe7ffff3c7e7ffff39fe7ffffce7e7fffffffe7ff3f99fe7ffff3cfe70
+fffffffffe7ffff1c7e7ffff1c7e7ffffccfe7fe7f81fe7ffff3ffe7ffff
+9cfe7ffff3c7e7ffff39fe7ffffce7e7fffffffe7ff3f99fe7ffff3cfe70
+fffffffffe7ffff1c7e7ffff1c7e7ffffccfe7fe7f81fe7ffff3ffe7ffff
+9cfe7ffff3c7e7ffff39fe7ffffce7e7fffffffe7ff3f99fe7ffff3cfe70
+fffffffffe7ffff3e7e7ffff3e7e7ffffccfe7fe7f00fe7ffff3ffe7ffff
+9cfe7ffff387e7ffff39fe7ffffce7e7fe7fe7fe7fe7f99fe7fffffe7e70
+fffffffffe7ffff3e7e7ffff3e7e7ffffccfe7fe7f00fe7ffff3ffe7ffff
+9cfe7ffff387e7ffff39fe7ffffce7e7fe7fe7fe7fe7f99fe7fffffe7e70
+fffffffffe7ffff3e7e7ffff3e7e7ffffccfe7fe7f00fe7ffff3ffe7ffff
+9cfe7ffff387e7ffff39fe7ffffce7e7fe7fe7fe7fe7f99fe7fffffe7e70
+fffffffffe7fe1f3e7e7fe0f3ffe7fe079cfe7fe7e667e7f0073ffe7f3e7
+c9fe7f3e7387e7f3c733fe7fc07ce7e7fc3fc3fe7fcfffffe7fc1ffe7e70
+fffffffffe7fe1f3e7e7fe0f3ffe7fe079cfe7fe7e667e7f0073ffe7f3e7
+c9fe7f3e7387e7f3c733fe7fc07ce7e7fc3fc3fe7fcfffffe7fc1ffe7e70
+fffffffffe7fe1f3e7e7fe0f3ffe7fe079cfe7fe7e667e7f0073ffe7f3e7
+c9fe7f3e7387e7f3c733fe7fc07ce7e7fc3fc3fe7fcfffffe7fc1ffe7e70
+fffffffffe7fc0f3e7e7f80f3ffe7fe079cfe7f00e667e7f0073ffe7f1c7
+c9fe7f3e7327e7f38733fe7fc07ce7e7fc3fc3fe7fffffffe7f80ffe7e70
+fffffffffe7fc0f3e7e7f80f3ffe7fe079cfe7f00e667e7f0073ffe7f1c7
+c9fe7f3e7327e7f38733fe7fc07ce7e7fc3fc3fe7fffffffe7f80ffe7e70
+fffffffffe7fc0f3e7e7f80f3ffe7fe079cfe7f00e667e7f0073ffe7f1c7
+c9fe7f3e7327e7f38733fe7fc07ce7e7fc3fc3fe7fffffffe7f80ffe7e70
+fffffffffe7f9e7007e7f1e73ffe7fce79cfe7e006667e7f3ff3ffe7f88f
+e3fe7f3c7327e7f31f07fe7fce7ce7e7fe7fe7fe7fffffffe7f3e7c07e70
+fffffffffe7f9e7007e7f1e73ffe7fce79cfe7e006667e7f3ff3ffe7f88f
+e3fe7f3c7327e7f31f07fe7fce7ce7e7fe7fe7fe7fffffffe7f3e7c07e70
+fffffffffe7f9e7007e7f1e73ffe7fce79cfe7e006667e7f3ff3ffe7f88f
+e3fe7f3c7327e7f31f07fe7fce7ce7e7fe7fe7fe7fffffffe7f3e7c07e70
+fffffffffe7ffe7007e7f3e73ffe7fce73cfe7e666667e7f3ff3ffe7fc1f
+e3fe7f387267e7f23f07fe7fce7ce7e7fffffffe7fffffffe7ffe7c07e70
+fffffffffe7ffe7007e7f3e73ffe7fce73cfe7e666667e7f3ff3ffe7fc1f
+e3fe7f387267e7f23f07fe7fce7ce7e7fffffffe7fffffffe7ffe7c07e70
+fffffffffe7ffe7007e7f3e73ffe7fce73cfe7e666667e7f3ff3ffe7fc1f
+e3fe7f387267e7f23f07fe7fce7ce7e7fffffffe7fffffffe7ffe7c07e70
+fffffffffe7fe073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f327267e7f07f33fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7fe073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f327267e7f07f33fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7fe073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f327267e7f07f33fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7f8073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f2670e7e7f03f39fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7f8073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f2670e7e7f03f39fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7f8073e7e7f3ff3ffe7f9e73cfe7e666667e7f3ff3ffe7fe3f
+c9fe7f2670e7e7f03f39fe7fce7ce7e7fffffffe7fffffffe7fe07fe7e70
+fffffffffe7f3e73e7e7f3ff3e7e7f3e67cfe7e66700fe7f3ff3ffe7fc1f
+9cfe7f0e70e7e7f31f39fe7fce7ce7e7fe7fe7fe7fffffffe7ffe7fe7e70
+fffffffffe7f3e73e7e7f3ff3e7e7f3e67cfe7e66700fe7f3ff3ffe7fc1f
+9cfe7f0e70e7e7f31f39fe7fce7ce7e7fe7fe7fe7fffffffe7ffe7fe7e70
+fffffffffe7f3e73e7e7f3ff3e7e7f3e67cfe7e66700fe7f3ff3ffe7fc1f
+9cfe7f0e70e7e7f31f39fe7fce7ce7e7fe7fe7fe7fffffffe7ffe7fe7e70
+fffffffffe7f3c73e7e7f1e71c7e7f3e67cfe7e00781fe7f3ff3ffe7f88f
+9cfe7f1e71e7e7f38f3cfe7f9e79e7e7fc3fc3fe7fffffffe7f3e73cfe70
+fffffffffe7f3c73e7e7f1e71c7e7f3e67cfe7e00781fe7f3ff3ffe7f88f
+9cfe7f1e71e7e7f38f3cfe7f9e79e7e7fc3fc3fe7fffffffe7f3e73cfe70
+fffffffffe7f3c73e7e7f1e71c7e7f3e67cfe7e00781fe7f3ff3ffe7f88f
+9cfe7f1e71e7e7f38f3cfe7f9e79e7e7fc3fc3fe7fffffffe7f3e73cfe70
+fffffffffe7f0073e7e7f80780fe7f00600fe7f00fe7fe7f3ff3ffe7f1c7
+3e7e7f3e71e7e7f3c73e7e7f9e71e7e7fc3fc3fe7fffffffe7f80f00fe70
+fffffffffe7f0073e7e7f80780fe7f00600fe7f00fe7fe7f3ff3ffe7f1c7
+3e7e7f3e71e7e7f3c73e7e7f9e71e7e7fc3fc3fe7fffffffe7f80f00fe70
+fffffffffe7f0073e7e7f80780fe7f00600fe7f00fe7fe7f3ff3ffe7f1c7
+3e7e7f3e71e7e7f3c73e7e7f9e71e7e7fc3fc3fe7fffffffe7f80f00fe70
+fffffffffe7f8273e7e7fc0fc1fe7f00600fe7fe7fe7fe7f3ff3ffe7f3e7
+3e7e7f3e73e7e7f3e73e7e7f3e73e7e7ff3fe7fe7fffffffe7fc1fc3fe70
+fffffffffe7f8273e7e7fc0fc1fe7f00600fe7fe7fe7fe7f3ff3ffe7f3e7
+3e7e7f3e73e7e7f3e73e7e7f3e73e7e7ff3fe7fe7fffffffe7fc1fc3fe70
+fffffffffe7f8273e7e7fc0fc1fe7f00600fe7fe7fe7fe7f3ff3ffe7f3e7
+3e7e7f3e73e7e7f3e73e7e7f3e73e7e7ff3fe7fe7fffffffe7fc1fc3fe70
+fffffffffe7fffffffe7fffffffe7fffffe7e7fe7fe7fe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7ff3ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffe7e7fe7fe7fe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7ff3ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffe7e7fe7fe7fe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7ff3ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7ffffff7e7fe7ffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7ffffff7e7fe7ffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7ffffff7e7fe7ffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffff
+fffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe70
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffe00000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000070
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7ffffc1fe7ffff3ffe7ffff3cfe7fffe667e7fc0701f
+e7ffff3e7e7ffff3e7e7fffffffe7fffffffe7ffcfc3fe7ffffffffffff0
+fffffffffffffffe7ffffc1fe7ffff3ffe7ffff3cfe7fffe667e7fc0701f
+e7ffff3e7e7ffff3e7e7fffffffe7fffffffe7ffcfc3fe7ffffffffffff0
+fffffffffffffffe7ffffc1fe7ffff3ffe7ffff3cfe7fffe667e7fc0701f
+e7ffff3e7e7ffff3e7e7fffffffe7fffffffe7ffcfc3fe7ffffffffffff0
+fffffffffffffffe7ffff80fe7ffff3ffe7ffff3cfe7fffe667e7f80701f
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ffcf81fe7ffffffffffff0
+fffffffffffffffe7ffff80fe7ffff3ffe7ffff3cfe7fffe667e7f80701f
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ffcf81fe7ffffffffffff0
+fffffffffffffffe7ffff80fe7ffff3ffe7ffff3cfe7fffe667e7f80701f
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ffcf81fe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f1ff3ff
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ff9f18fe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f1ff3ff
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ff9f18fe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f1ff3ff
+e7ffff3e7e7ffff1c7e7fffffffe7fffffffe7ff9f18fe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f3ff3ff
+e7ffff3e7e7ffff087e7fffffe7e7fffe7ffe7ff9f7cfe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f3ff3ff
+e7ffff3e7e7ffff087e7fffffe7e7fffe7ffe7ff9f7cfe7ffffffffffff0
+fffffffffffffffe7ffff3e7e7ffff3ffe7ffff3cfe7ffff24fe7f3ff3ff
+e7ffff3e7e7ffff087e7fffffe7e7fffe7ffe7ff9f7cfe7ffffffffffff0
+fffffffffffffffe7fc1ffe7e7f3ff3ffe7f3cf3cfe7e66724fe7f01f3ff
+e7f3e73e7e7f3e7007e7fffff8fe7ffff1ffe7ff3ffcfe7ffffffffffff0
+fffffffffffffffe7fc1ffe7e7f3ff3ffe7f3cf3cfe7e66724fe7f01f3ff
+e7f3e73e7e7f3e7007e7fffff8fe7ffff1ffe7ff3ffcfe7ffffffffffff0
+fffffffffffffffe7fc1ffe7e7f3ff3ffe7f3cf3cfe7e66724fe7f01f3ff
+e7f3e73e7e7f3e7007e7fffff8fe7ffff1ffe7ff3ffcfe7ffffffffffff0
+fffffffffffffffe7f80ffcfe7f3ff03fe7f3cf3cfe7e66781fe7f00f3ff
+e7f3e73e7e7f1c7227e7ffffe3fe7ffffc7fe7ff3ff9fe7ffffffffffff0
+fffffffffffffffe7f80ffcfe7f3ff03fe7f3cf3cfe7e66781fe7f00f3ff
+e7f3e73e7e7f1c7227e7ffffe3fe7ffffc7fe7ff3ff9fe7ffffffffffff0
+fffffffffffffffe7f80ffcfe7f3ff03fe7f3cf3cfe7e66781fe7f00f3ff
+e7f3e73e7e7f1c7227e7ffffe3fe7ffffc7fe7ff3ff9fe7ffffffffffff0
+fffffffffffffffe7f3e7e1fe7f3ff01fe7f3cf3cfe7f24f81fe7f1c701f
+e7f3e7007e7f1c7227e7ffff87fe7ffffe1fe7fe7ff3fe7ffffffffffff0
+fffffffffffffffe7f3e7e1fe7f3ff01fe7f3cf3cfe7f24f81fe7f1c701f
+e7f3e7007e7f1c7227e7ffff87fe7ffffe1fe7fe7ff3fe7ffffffffffff0
+fffffffffffffffe7f3e7e1fe7f3ff01fe7f3cf3cfe7f24f81fe7f1c701f
+e7f3e7007e7f1c7227e7ffff87fe7ffffe1fe7fe7ff3fe7ffffffffffff0
+fffffffffffffffe7ffe7e1fe7f03f38fe7f3cf3cfe7f24fc3fe7f3e700f
+e7f3e7007e7f087367e7fffe1ffe7fffff87e7fe7fe7fe7ffffffffffff0
+fffffffffffffffe7ffe7e1fe7f03f38fe7f3cf3cfe7f24fc3fe7f3e700f
+e7f3e7007e7f087367e7fffe1ffe7fffff87e7fe7fe7fe7ffffffffffff0
+fffffffffffffffe7ffe7e1fe7f03f38fe7f3cf3cfe7f24fc3fe7f3e700f
+e7f3e7007e7f087367e7fffe1ffe7fffff87e7fe7fe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffcfe7f01f3cfe7f3cf3cfe7f81f81fe7f3e73c7
+e7f0073e7e7f0073e7e7fffe1ffe7fffff87e7fcffe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffcfe7f01f3cfe7f3cf3cfe7f81f81fe7f3e73c7
+e7f0073e7e7f0073e7e7fffe1ffe7fffff87e7fcffe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffcfe7f01f3cfe7f3cf3cfe7f81f81fe7f3e73c7
+e7f0073e7e7f0073e7e7fffe1ffe7fffff87e7fcffe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffe7e7f3cf3cfe7f3cf3cfe7f81f81fe7f3e73e7
+e7f0073e7e7f2273e7e7ffff87fe7ffffe1fe7fcffe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffe7e7f3cf3cfe7f3cf3cfe7f81f81fe7f3e73e7
+e7f0073e7e7f2273e7e7ffff87fe7ffffe1fe7fcffe7fe7ffffffffffff0
+fffffffffffffffe7fe0ffe7e7f3cf3cfe7f3cf3cfe7f81f81fe7f3e73e7
+e7f0073e7e7f2273e7e7ffff87fe7ffffe1fe7fcffe7fe7ffffffffffff0
+fffffffffffffffe7ffe73e7e7f3cf3cfe7f3cf3cfe7f24f24fe7f3e73e7
+e7f3e73e7e7f2273e7e7fe7fe1fe7fe7fc7fe7f9fffffe7ffffffffffff0
+fffffffffffffffe7ffe73e7e7f3cf3cfe7f3cf3cfe7f24f24fe7f3e73e7
+e7f3e73e7e7f2273e7e7fe7fe1fe7fe7fc7fe7f9fffffe7ffffffffffff0
+fffffffffffffffe7ffe73e7e7f3cf3cfe7f3cf3cfe7f24f24fe7f3e73e7
+e7f3e73e7e7f2273e7e7fe7fe1fe7fe7fc7fe7f9fffffe7ffffffffffff0
+fffffffffffffffe7f3e73e7e7f3cf38fe7f3cf3cfe7f24f24fe7f1c73c7
+e7f3e73e7e7f3673e7e7fc3ff8fe7fc3f1ffe7f9fffffe7ffffffffffff0
+fffffffffffffffe7f3e73e7e7f3cf38fe7f3cf3cfe7f24f24fe7f1c73c7
+e7f3e73e7e7f3673e7e7fc3ff8fe7fc3f1ffe7f9fffffe7ffffffffffff0
+fffffffffffffffe7f3e73e7e7f3cf38fe7f3cf3cfe7f24f24fe7f1c73c7
+e7f3e73e7e7f3673e7e7fc3ff8fe7fc3f1ffe7f9fffffe7ffffffffffff0
+fffffffffffffffe7f80f80fe7f01f01fe7f00f00fe7e666667e7f80f00f
+e7f3e73e7e7f3e73e7e7fc3ffe7e7fc3e7ffe7f3ffe7fe7ffffffffffff0
+fffffffffffffffe7f80f80fe7f01f01fe7f00f00fe7e666667e7f80f00f
+e7f3e73e7e7f3e73e7e7fc3ffe7e7fc3e7ffe7f3ffe7fe7ffffffffffff0
+fffffffffffffffe7f80f80fe7f01f01fe7f00f00fe7e666667e7f80f00f
+e7f3e73e7e7f3e73e7e7fc3ffe7e7fc3e7ffe7f3ffe7fe7ffffffffffff0
+fffffffffffffffe7fc1fc1fe7f03f03fe7f00f00fe7e666667e7fc1f01f
+e7f3e73e7e7f3e73e7e7ff3ffffe7fe7ffffe7f3ffc3fe7ffffffffffff0
+fffffffffffffffe7fc1fc1fe7f03f03fe7f00f00fe7e666667e7fc1f01f
+e7f3e73e7e7f3e73e7e7ff3ffffe7fe7ffffe7f3ffc3fe7ffffffffffff0
+fffffffffffffffe7fc1fc1fe7f03f03fe7f00f00fe7e666667e7fc1f01f
+e7f3e73e7e7f3e73e7e7ff3ffffe7fe7ffffe7f3ffc3fe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7ff3ffffe7fffffffe7ffffe7fe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7ff3ffffe7fffffffe7ffffe7fe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7ff3ffffe7fffffffe7ffffe7fe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffcffcfe7fffffffe7fffffff
+e7fffffffe7fffffffe7fe7ffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffe7fe7e7fffffffe7fffffff
+e7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffe7fe7e7fffffffe7fffffff
+e7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7ffe7fe7e7fffffffe7fffffff
+e7fffffffe7fffffffe7fcfffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe7fffffffe7fffffffe7fffffffe7fffffffe7fffffff
+e7fffffffe7fffffffe7fffffffe7fffffffe7fffffffe7ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+fffffffffffffffe00000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000007ffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
+grestore
+showpage
+%%Trailer
diff --git a/images/ru-phonetic.png b/images/ru-phonetic.png
new file mode 100644 (file)
index 0000000..9af88da
Binary files /dev/null and b/images/ru-phonetic.png differ
diff --git a/utils/.cvsignore b/utils/.cvsignore
new file mode 100644 (file)
index 0000000..3093169
--- /dev/null
@@ -0,0 +1,4 @@
+imdoc
+.deps
+Makefile.in
+Makefile
index d3125fb..0bea10b 100755 (executable)
@@ -2,12 +2,12 @@
 
 IMDOC=`pwd`/utils/imdoc
 
-cd $1
-set `ls $2`
+set `ls $1/$2`
 FILE=$1
 while shift 1; do
     IM=`grep '^(input-method' $FILE`
     if test -n "$IM"; then
+       if false; then
        sed -n -e '/^(input-method/s/(input-method \([^ ]*\) \([^ )]*\)\( \([^)]*\)\)*)/\1 \2 \4/p' $FILE | (read LANG NAME EXTRA
            if test -z "NAME"; then
                NAME=$EXTRA
@@ -18,12 +18,25 @@ while shift 1; do
            if test "$NAME" = "nil"; then
                echo "<li> $FILE (extra-name:$EXTRA, only for inclusion)"
            else
-               echo "<li> $FILE (language:$LANG name:$NAME)"
+               base=`basename $FILE`
+               dir=`dirname $FILE`
+               icon="$dir/icons/$base"
+               if [ -f "$icon" ] ; then
+                   [ -f "images/icon-$base" ] || cp "$icon" "images/icon-$base"
+               fi
+               echo "<li> $FILE (language:$LANG name:$NAME @htmlonly"
+               echo "<img src=\"icon-$base\" style=\"vertical-align:middle;\">"
+               echo "@endhtmlonly"
+               echo ")"
            fi)
        if grep -q '^;;;' $FILE; then
+           echo
             sed -n -e '/^;;;/ p' $FILE | sed -e '/^[^;]/ s/$/<br>/' -e '/^;;;/ s/^;;; *//' | sed -e 's,^||,<tr><td align="center">,' -e 's,||$,</td></tr>,' -e 's,|,</td><td align="center">,g'
        else
-           $IMDOC $FILE "$IM"
+           M17NDIR=/usr/share/m17n $IMDOC $FILE "$IM"
+       fi
+       else
+           M17NDIR=/usr/share/m17n $IMDOC $FILE
        fi
     else
        echo
index 3226417..346da2f 100644 (file)
@@ -1,8 +1,22 @@
 #include <stdio.h>
 #include <string.h>
 #include <locale.h>
+#include <libgen.h>
 #include <m17n.h>
 
+struct CommentList
+{
+  char line[256];
+  struct CommentList *next;
+};
+
+void
+invalid_file (char *filename)
+{
+  fprintf (stderr, "Invalid input method file: %s\n", filename);
+  exit (1);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -10,20 +24,55 @@ main (int argc, char **argv)
   MPlist *plist;
   MSymbol language, name;
   MText *mt;
+  FILE *fp;
+  char buf[256];
+  struct CommentList *head_comment = NULL, *cur_comment = NULL;
+  MSymbol Minput_method, Mutf8;
 
   setlocale (LC_ALL, "");
   M17N_INIT ();
+  Minput_method = msymbol ("input-method");
+  Mutf8 = msymbol ("utf-8");
 
-  if (argc < 3)
+  if (argc < 2)
+    {
+      fprintf (stderr, "Usage: imdoc FILE\n");
+      exit (1);
+    }
+  fp = fopen (argv[1], "r");
+  if (! fp)
     {
-      fprintf (stderr, "Usage: imdoc FILE (input-method LANG NAME [EXTRA])\n");
+      fprintf (stderr, "Usage: imdoc FILE\n");
       exit (1);
     }
-  file = argv[1];
-  mt = mtext_from_data (argv[2], strlen (argv[2]), MTEXT_FORMAT_US_ASCII);
+  while (fgets (buf, 256, fp)
+        && buf[0] != '(')
+    {
+      if (buf[0] == ';' && buf[1] == ';' && buf[2] == ';')
+       {
+         if (! head_comment)
+           {
+             cur_comment = head_comment = alloca (sizeof (struct CommentList));
+           }
+         else
+           {
+             cur_comment->next = alloca (sizeof (struct CommentList));
+             cur_comment = cur_comment->next;
+           }
+         strcpy (cur_comment->line, buf + 4);
+         cur_comment->next = NULL;
+       }
+    }
+  if (! buf[0])
+    invalid_file (argv[1]);
+  mt = mtext_from_data (buf, strlen (buf), MTEXT_FORMAT_US_ASCII);
   plist = mplist_deserialize (mt);
   m17n_object_unref (mt);
+  if (! plist)
+    invalid_file (argv[1]);
   plist = mplist_value (plist);
+  if (mplist_value (plist) != Minput_method)
+    invalid_file (argv[1]);
   plist = mplist_next (plist);
   language = mplist_value (plist);
   plist = mplist_next (plist);
@@ -32,26 +81,92 @@ main (int argc, char **argv)
   if (mplist_key (plist) != Mnil)
     language = mplist_value (plist), name = Mnil;
   m17n_object_unref (plist);
+
+  file = basename (strdup (argv[1]));
+
+  if (name != Mnil)
+    {
+      MPlist *plist;
+
+      printf ("*/\n/***ja\n<li> %s (language:", file);
+      if (language == Mt)
+       printf ("generic name:%s", msymbol_name (name));
+      else
+       printf ("%s name:%s", msymbol_name (language), msymbol_name (name));
+      printf (")*/\n/***en\n<li> %s (language:", file);
+      if (language == Mt)
+       printf ("generic name:%s", msymbol_name (name));
+      else
+       printf ("%s name:%s", msymbol_name (language), msymbol_name (name));
+      plist = minput_get_title_icon (language, name);
+      if (plist)
+       {
+         MText *title = mplist_value (plist);
+         
+         printf ("@htmlonly\n title:\"");
+         plist = mplist_next (plist);
+         mconv_encode_stream (Mutf8, title, stdout);
+         printf ("\"");
+         if (mplist_key (plist) != Mnil)
+           {
+             MText *icon = mplist_value (plist);
+             char *iconfile = mtext_data (icon, MTEXT_FORMAT_US_ASCII,
+                                          NULL, NULL, NULL);
+             char *base;
+             char cmd[1024];
+
+             base = basename (strdup (iconfile));
+             sprintf (cmd, "convert -resize 50%% %s images/icon-%s",
+                      iconfile, base);
+             system (cmd);
+             printf (" icon:<img src=\"icon-%s\" border=\"1\" style=\"vertical-align:middle;\">\n", base);
+           }
+         else
+           printf (" icon:none\n");
+         printf ("@endhtmlonly\n");
+       }
+      printf (")*/\n/***\n");
+    }
+  else
+    printf ("<li> %s (extra-name:%s, only for inclusion)\n", file,
+           msymbol_name (name));
+
   mt = minput_get_description (language, name);
   if (! mt)
     {
-      fprintf (stderr, "Invalid IM name: %s %s\n", argv[1] ,argv[2]);
-      exit (1);
+      printf ("Not yet officially released.\n");
+      exit (0);
     }
-#if 0
-  if (argc < 5)
+  else if (head_comment)
     {
-      if (language == Mt)
-       printf ("<li> %s (language:generic name:%s)\n", file, argv[3]);
-      else
-       printf ("<li> %s (language:%s name:%s)\n", file, argv[2], argv[3]);
+      for (; head_comment; head_comment = head_comment->next)
+       {
+         char *p = head_comment->line;
+
+         if (p[0] == '|' && p[1] == '|')
+           printf ("<tr><td align=\"center\">"), p += 2;
+         while (*p)
+           {
+             if (p[0] == '|')
+               {
+                 if (p[1] == '|')
+                   printf ("</td></tr>"), p += 2;
+                 else
+                   printf ("</td><td align=\"center\">"), p++;
+               }
+             else
+               putchar (*p), p++;
+           }
+       }
     }
   else
-    printf ("<li> %s (extra-name:%s, only for inclusion)\n", file, argv[4]);
-#endif
-  printf ("@verbatim\n");
-  mconv_encode_stream (msymbol ("utf-8"), mt, stdout);
-  printf ("\n@endverbatim\n");
+    {
+      printf ("@verbatim\n");
+      mconv_encode_stream (msymbol ("utf-8"), mt, stdout);
+      if (mtext_ref_char (mt, mtext_len (mt) - 1) != '\n')
+       printf ("\n");
+      printf ("@endverbatim\n");
+    }
 
   M17N_FINI ();
   exit (0);