[Tux4kids-commits] r871 - in tuxmath/trunk: . data/images/icons doc linebreak linebreak/unistr linebreak/uniwidth po src
dbruce-guest at alioth.debian.org
dbruce-guest at alioth.debian.org
Fri Feb 6 17:36:45 UTC 2009
Author: dbruce-guest
Date: 2009-02-06 17:36:45 +0000 (Fri, 06 Feb 2009)
New Revision: 871
Added:
tuxmath/trunk/data/images/icons/tuxmath.svg
tuxmath/trunk/src/cjk.h
tuxmath/trunk/src/lbrkprop.h
tuxmath/trunk/src/linebreak.c
tuxmath/trunk/src/linebreak.h
tuxmath/trunk/src/localcharset.h
tuxmath/trunk/src/streq.h
tuxmath/trunk/src/u16-mbtouc-aux.c
tuxmath/trunk/src/u16-mbtouc-aux.c~
tuxmath/trunk/src/u16-mbtouc-unsafe-aux.c
tuxmath/trunk/src/u16-mbtouc-unsafe.c
tuxmath/trunk/src/u16-mbtouc.c
tuxmath/trunk/src/u16-mbtouc.c~
tuxmath/trunk/src/u8-mbtouc-aux.c
tuxmath/trunk/src/u8-mbtouc-unsafe-aux.c
tuxmath/trunk/src/u8-mbtouc-unsafe.c
tuxmath/trunk/src/u8-mbtouc.c
tuxmath/trunk/src/u8-uctomb-aux.c
tuxmath/trunk/src/u8-uctomb.c
tuxmath/trunk/src/unistr.h
tuxmath/trunk/src/unitypes.h
tuxmath/trunk/src/uniwidth.h
tuxmath/trunk/src/width.c
tuxmath/trunk/src/xsize.h
Removed:
tuxmath/trunk/linebreak/lbrkprop.h
tuxmath/trunk/linebreak/linebreak.c
tuxmath/trunk/linebreak/linebreak.h
tuxmath/trunk/linebreak/localcharset.h
tuxmath/trunk/linebreak/streq.h
tuxmath/trunk/linebreak/unistr.h
tuxmath/trunk/linebreak/unistr/u16-mbtouc-aux.c
tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe-aux.c
tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe.c
tuxmath/trunk/linebreak/unistr/u16-mbtouc.c
tuxmath/trunk/linebreak/unistr/u8-mbtouc-aux.c
tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe-aux.c
tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe.c
tuxmath/trunk/linebreak/unistr/u8-mbtouc.c
tuxmath/trunk/linebreak/unistr/u8-uctomb-aux.c
tuxmath/trunk/linebreak/unistr/u8-uctomb.c
tuxmath/trunk/linebreak/unitypes.h
tuxmath/trunk/linebreak/uniwidth.h
tuxmath/trunk/linebreak/uniwidth/cjk.h
tuxmath/trunk/linebreak/uniwidth/width.c
tuxmath/trunk/linebreak/xsize.h
Modified:
tuxmath/trunk/Makefile.am
tuxmath/trunk/data/images/icons/Makefile.am
tuxmath/trunk/doc/changelog
tuxmath/trunk/po/ar.po
tuxmath/trunk/po/cs.po
tuxmath/trunk/po/de.po
tuxmath/trunk/po/en at boldquot.po
tuxmath/trunk/po/en at quot.po
tuxmath/trunk/po/en_GB.po
tuxmath/trunk/po/es.po
tuxmath/trunk/po/fi.po
tuxmath/trunk/po/fr.po
tuxmath/trunk/po/ga.po
tuxmath/trunk/po/he.po
tuxmath/trunk/po/hu.po
tuxmath/trunk/po/it.po
tuxmath/trunk/po/ja.po
tuxmath/trunk/po/nb.po
tuxmath/trunk/po/nl.po
tuxmath/trunk/po/nn.po
tuxmath/trunk/po/oc.po
tuxmath/trunk/po/pl.po
tuxmath/trunk/po/pt.po
tuxmath/trunk/po/pt_BR.po
tuxmath/trunk/po/ru.po
tuxmath/trunk/po/sk.po
tuxmath/trunk/po/sv.po
tuxmath/trunk/po/tr.po
tuxmath/trunk/po/tuxmath.pot
tuxmath/trunk/po/zh_CN.po
tuxmath/trunk/src/Makefile.am
tuxmath/trunk/src/campaign.c
tuxmath/trunk/src/globals.h
tuxmath/trunk/src/linewrap.c
Log:
moved linebreak source files into src
Modified: tuxmath/trunk/Makefile.am
===================================================================
--- tuxmath/trunk/Makefile.am 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/Makefile.am 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,10 +1,10 @@
## Top-level Makefile.am for tuxmath:
## Process with Automake to create Makefile.in
-SUBDIRS = doc \
+SUBDIRS = data \
+ doc \
intl \
po \
- src \
- data
+ src
ACLOCAL_AMFLAGS = -I m4
Modified: tuxmath/trunk/data/images/icons/Makefile.am
===================================================================
--- tuxmath/trunk/data/images/icons/Makefile.am 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/data/images/icons/Makefile.am 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,4 +6,5 @@
dist_icons_DATA = tuxmath.ico \
icon.png \
icon.xpm \
- tuxmath.icns
+ tuxmath.icns \
+ tuxmath.svg
Added: tuxmath/trunk/data/images/icons/tuxmath.svg
===================================================================
--- tuxmath/trunk/data/images/icons/tuxmath.svg (rev 0)
+++ tuxmath/trunk/data/images/icons/tuxmath.svg 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,1066 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 76) -->
+<svg
+ xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="132"
+ height="117"
+ viewBox="0.008 -0.291 132 117"
+ overflow="visible"
+ enable-background="new 0.008 -0.291 132 117"
+ xml:space="preserve"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="tuxmath.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
+ id="metadata283"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs281"><inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 58.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="132 : 58.5 : 1"
+ inkscape:persp3d-origin="66 : 39 : 1"
+ id="perspective285" />
+
+
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_1_"
+ id="linearGradient3151"
+ gradientUnits="userSpaceOnUse"
+ x1="33.455101"
+ y1="134.8"
+ x2="33.455101"
+ y2="79.492203" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_2_"
+ id="linearGradient3153"
+ gradientUnits="userSpaceOnUse"
+ x1="34.128399"
+ y1="51.917999"
+ x2="34.128399"
+ y2="78.923302" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient3155"
+ gradientUnits="userSpaceOnUse"
+ x1="29.4014"
+ y1="90.037102"
+ x2="51.554901"
+ y2="112.191" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient3157"
+ gradientUnits="userSpaceOnUse"
+ x1="25.8179"
+ y1="86.409203"
+ x2="51.3773"
+ y2="112.146" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_5_"
+ id="linearGradient3159"
+ gradientUnits="userSpaceOnUse"
+ x1="24.374001"
+ y1="66.755898"
+ x2="33.8414"
+ y2="76.223099" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_6_"
+ id="linearGradient3161"
+ gradientUnits="userSpaceOnUse"
+ x1="40.188"
+ y1="67.644501"
+ x2="48.386002"
+ y2="75.842499" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_7_"
+ id="linearGradient3163"
+ gradientUnits="userSpaceOnUse"
+ x1="31.747999"
+ y1="73.683601"
+ x2="31.747999"
+ y2="68.590599" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="linearGradient3165"
+ gradientUnits="userSpaceOnUse"
+ x1="35.980999"
+ y1="72.686501"
+ x2="35.980999"
+ y2="69.1763" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_9_"
+ id="linearGradient3167"
+ gradientUnits="userSpaceOnUse"
+ x1="37.716801"
+ y1="78.847702"
+ x2="35.737"
+ y2="77.450104" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_10_"
+ id="linearGradient3169"
+ gradientUnits="userSpaceOnUse"
+ x1="37.429699"
+ y1="78.079102"
+ x2="31.775499"
+ y2="75.251999" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_11_"
+ id="linearGradient3171"
+ gradientUnits="userSpaceOnUse"
+ x1="33.480999"
+ y1="127.388"
+ x2="33.480999"
+ y2="105.1" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_12_"
+ id="linearGradient3173"
+ gradientUnits="userSpaceOnUse"
+ x1="33.829601"
+ y1="100.71"
+ x2="33.829601"
+ y2="110.822" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_13_"
+ id="linearGradient3175"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4258"
+ y1="117.758"
+ x2="49.4258"
+ y2="105.512" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_14_"
+ id="linearGradient3177"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4263"
+ y1="109.792"
+ x2="49.4263"
+ y2="117.86" /><radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_15_"
+ id="radialGradient3179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9706,0,0,0.4062,0.2742,524.622)"
+ cx="50.122101"
+ cy="-1005.98"
+ fx="50.122101"
+ fy="-1005.98"
+ r="17.6775" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_16_"
+ id="linearGradient3181"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4263"
+ y1="107.75"
+ x2="49.4263"
+ y2="112.283" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_17_"
+ id="linearGradient3183"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="118.006"
+ x2="20.0718"
+ y2="105.762" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_18_"
+ id="linearGradient3185"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="110.042"
+ x2="20.0718"
+ y2="118.111" /><radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_19_"
+ id="radialGradient3187"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9706,0,0,0.4062,0.2742,524.622)"
+ cx="19.8799"
+ cy="-1005.37"
+ fx="19.8799"
+ fy="-1005.37"
+ r="17.6759" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_20_"
+ id="linearGradient3189"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="107.999"
+ x2="20.0718"
+ y2="112.532" />
+
+
+ </defs><sodipodi:namedview
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showgrid="false"
+ inkscape:zoom="1"
+ inkscape:cx="228.47932"
+ inkscape:cy="47.347533"
+ inkscape:current-layer="svg2"><inkscape:grid
+ type="xygrid"
+ id="grid3344" /></sodipodi:namedview>
+ <g
+ id="g9"
+ transform="matrix(1.8160959,0,0,1.8160959,4,-97.450562)">
+ <path
+ d="M 9.2,79.784 C 9.255,79.73 9.289,79.66 9.3,79.585 C 11.16,65.699 21.745,55.23 33.923,55.23 C 46.277,55.23 56.883,65.878 58.594,79.999 C 58.602,80.079 58.64,80.151 58.697,80.207 C 58.697,80.207 65.106,86.437 66.126,87.43 C 64.797,87.463 58.943,87.609 58.943,87.609 C 58.771,87.614 58.629,87.747 58.608,87.918 C 58.181,91.57 57.158,95.057 55.566,98.278 C 51.135,107.248 42.842,112.82 33.923,112.82 C 25.604,112.82 17.866,108.043 13.223,100.041 C 11.211,96.575 9.902,92.743 9.329,88.652 C 9.306,88.483 9.164,88.356 8.994,88.351 C 8.994,88.351 2.163,88.176 0.821,88.14 C 1.83,87.134 9.2,79.784 9.2,79.784 z"
+ id="path11" />
+ <linearGradient
+ id="XMLID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="33.455101"
+ y1="134.8"
+ x2="33.455101"
+ y2="79.492203">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,255)"
+ id="stop14" />
+ <stop
+ offset="0.2033"
+ style="stop-color:rgb(194,194,194)"
+ id="stop16" />
+ <stop
+ offset="0.494"
+ style="stop-color:rgb(112,112,112)"
+ id="stop18" />
+ <stop
+ offset="0.733"
+ style="stop-color:rgb(51,51,51)"
+ id="stop20" />
+ <stop
+ offset="0.9078"
+ style="stop-color:rgb(14,14,14)"
+ id="stop22" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(0,0,0)"
+ id="stop24" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.435"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <path
+ d="M 58.134,80.79 C 57.944,80.606 57.823,80.361 57.791,80.096 C 56.13,66.384 45.869,56.043 33.922,56.043 C 22.147,56.043 11.906,66.21 10.1,79.692 C 10.066,79.946 9.949,80.182 9.768,80.361 C 9.768,80.361 5.105,85.011 2.733,87.376 C 5.377,87.443 9.014,87.538 9.014,87.538 C 9.578,87.553 10.049,87.975 10.128,88.537 C 10.685,92.524 11.961,96.255 13.919,99.629 C 18.416,107.379 25.894,112.006 33.922,112.006 C 42.532,112.006 50.547,106.607 54.841,97.915 C 56.391,94.776 57.388,91.381 57.805,87.822 C 57.872,87.249 58.348,86.811 58.922,86.796 C 58.922,86.796 61.804,86.724 64.176,86.665 C 61.931,84.479 58.134,80.79 58.134,80.79 z"
+ style="fill:url(#linearGradient3151)"
+ id="path26" />
+ <linearGradient
+ id="XMLID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="34.128399"
+ y1="51.917999"
+ x2="34.128399"
+ y2="78.923302">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,255)"
+ id="stop29" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(0,0,0)"
+ id="stop31" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="screen"
+ d="M 52.363,69.489 C 52.363,76.967 44.198,83.027 34.127,83.027 C 24.057,83.027 15.893,76.966 15.893,69.489 C 15.893,62.012 24.057,55.952 34.127,55.952 C 44.199,55.952 52.363,62.013 52.363,69.489 z"
+ style="fill:url(#linearGradient3153)"
+ id="path33" />
+ <path
+ d="M 36.005,68.651 C 36.005,69.038 35.726,69.35 35.383,69.35 C 35.039,69.35 34.76,69.037 34.76,68.651 C 34.76,68.267 35.039,67.954 35.383,67.954 C 35.726,67.954 36.005,68.268 36.005,68.651 z"
+ style="fill:#ffffff"
+ id="path35" />
+ <linearGradient
+ id="XMLID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="29.4014"
+ y1="90.037102"
+ x2="51.554901"
+ y2="112.191">
+ <stop
+ offset="0.0056"
+ style="stop-color:rgb(255,255,255)"
+ id="stop38" />
+ <stop
+ offset="0.2355"
+ style="stop-color:rgb(223,223,223)"
+ id="stop40" />
+ <stop
+ offset="0.5725"
+ style="stop-color:rgb(182,182,182)"
+ id="stop42" />
+ <stop
+ offset="0.839"
+ style="stop-color:rgb(157,157,157)"
+ id="stop44" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(148,148,148)"
+ id="stop46" />
+ <a:midPointStop
+ offset="0.0056"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.4035"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#949494" />
+ </linearGradient>
+ <path
+ d="M 47.723,80.114 C 44.028,76.337 39.335,74.073 34.223,74.073 C 27.903,74.073 22.222,77.531 18.281,83.034 C 14.999,87.613 12.923,93.608 12.694,100.214 C 17.223,108.022 24.935,113.166 33.693,113.166 C 43.101,113.166 51.3,107.229 55.647,98.432 C 55.008,91.041 52.052,84.539 47.723,80.114 z"
+ style="fill:url(#linearGradient3155)"
+ id="path48" />
+ <linearGradient
+ id="XMLID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="25.8179"
+ y1="86.409203"
+ x2="51.3773"
+ y2="112.146">
+ <stop
+ offset="0.0056"
+ style="stop-color:rgb(255,255,255)"
+ id="stop51" />
+ <stop
+ offset="0.0486"
+ style="stop-color:rgb(247,247,247)"
+ id="stop53" />
+ <stop
+ offset="0.3721"
+ style="stop-color:rgb(191,191,191)"
+ id="stop55" />
+ <stop
+ offset="0.6499"
+ style="stop-color:rgb(150,150,150)"
+ id="stop57" />
+ <stop
+ offset="0.8682"
+ style="stop-color:rgb(124,124,124)"
+ id="stop59" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(115,115,115)"
+ id="stop61" />
+ <a:midPointStop
+ offset="0.0056"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.4035"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#737373" />
+ </linearGradient>
+ <path
+ d="M 47.723,80.114 C 44.028,76.337 39.335,74.073 34.223,74.073 C 27.903,74.073 22.222,77.531 18.281,83.034 C 14.999,87.613 12.923,93.608 12.694,100.214 C 17.223,108.022 24.935,113.166 33.693,113.166 C 43.101,113.166 51.3,107.229 55.647,98.432 C 55.008,91.041 52.052,84.539 47.723,80.114 z"
+ style="fill:url(#linearGradient3157)"
+ id="path63" />
+ <linearGradient
+ id="XMLID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="24.374001"
+ y1="66.755898"
+ x2="33.8414"
+ y2="76.223099">
+ <stop
+ offset="0.0337"
+ style="stop-color:rgb(255,255,255)"
+ id="stop66" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(148,148,148)"
+ id="stop68" />
+ <a:midPointStop
+ offset="0.0337"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#949494" />
+ </linearGradient>
+ <path
+ d="M 34.222,68.741 C 34.222,73.551 30.701,77.449 26.36,77.449 C 22.019,77.449 18.498,73.551 18.498,68.741 C 18.498,63.932 22.019,60.035 26.36,60.035 C 30.701,60.035 34.222,63.933 34.222,68.741 z"
+ style="fill:url(#linearGradient3159)"
+ id="path70" />
+ <linearGradient
+ id="XMLID_6_"
+ gradientUnits="userSpaceOnUse"
+ x1="40.188"
+ y1="67.644501"
+ x2="48.386002"
+ y2="75.842499">
+ <stop
+ offset="0.0337"
+ style="stop-color:rgb(255,255,255)"
+ id="stop73" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(148,148,148)"
+ id="stop75" />
+ <a:midPointStop
+ offset="0.0337"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#949494" />
+ </linearGradient>
+ <path
+ d="M 49.593,69.364 C 49.593,73.044 46.152,76.028 41.907,76.028 C 37.663,76.028 34.222,73.044 34.222,69.364 C 34.222,65.683 37.662,62.7 41.907,62.7 C 46.151,62.7 49.593,65.684 49.593,69.364 z"
+ style="fill:url(#linearGradient3161)"
+ id="path77" />
+ <linearGradient
+ id="XMLID_7_"
+ gradientUnits="userSpaceOnUse"
+ x1="31.747999"
+ y1="73.683601"
+ x2="31.747999"
+ y2="68.590599">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,255)"
+ id="stop80" />
+ <stop
+ offset="0.2033"
+ style="stop-color:rgb(194,194,194)"
+ id="stop82" />
+ <stop
+ offset="0.494"
+ style="stop-color:rgb(112,112,112)"
+ id="stop84" />
+ <stop
+ offset="0.733"
+ style="stop-color:rgb(51,51,51)"
+ id="stop86" />
+ <stop
+ offset="0.9078"
+ style="stop-color:rgb(14,14,14)"
+ id="stop88" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(0,0,0)"
+ id="stop90" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.435"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <path
+ d="M 34.045,69.009 C 34.045,70.432 33.016,71.585 31.748,71.585 C 30.48,71.585 29.451,70.432 29.451,69.009 C 29.451,67.585 30.48,66.432 31.748,66.432 C 33.016,66.432 34.045,67.585 34.045,69.009 z"
+ style="fill:url(#linearGradient3163)"
+ id="path92" />
+ <path
+ d="M 31.863,68.261 C 31.863,68.745 31.513,69.138 31.083,69.138 C 30.65,69.138 30.302,68.745 30.302,68.261 C 30.302,67.777 30.651,67.384 31.083,67.384 C 31.513,67.384 31.863,67.776 31.863,68.261 z"
+ style="fill:#ffffff"
+ id="path94" />
+ <linearGradient
+ id="XMLID_8_"
+ gradientUnits="userSpaceOnUse"
+ x1="35.980999"
+ y1="72.686501"
+ x2="35.980999"
+ y2="69.1763">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,255)"
+ id="stop97" />
+ <stop
+ offset="0.2033"
+ style="stop-color:rgb(194,194,194)"
+ id="stop99" />
+ <stop
+ offset="0.494"
+ style="stop-color:rgb(112,112,112)"
+ id="stop101" />
+ <stop
+ offset="0.733"
+ style="stop-color:rgb(51,51,51)"
+ id="stop103" />
+ <stop
+ offset="0.9078"
+ style="stop-color:rgb(14,14,14)"
+ id="stop105" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(0,0,0)"
+ id="stop107" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.435"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <path
+ d="M 37.564,69.465 C 37.564,70.444 36.855,71.24 35.981,71.24 C 35.107,71.24 34.398,70.444 34.398,69.465 C 34.398,68.484 35.107,67.689 35.981,67.689 C 36.855,67.688 37.564,68.483 37.564,69.465 z"
+ style="fill:url(#linearGradient3165)"
+ id="path109" />
+ <path
+ d="M 35.786,69.183 C 35.786,69.538 35.528,69.829 35.21,69.829 C 34.89,69.829 34.633,69.538 34.633,69.183 C 34.633,68.824 34.89,68.535 35.21,68.535 C 35.528,68.534 35.786,68.823 35.786,69.183 z"
+ style="fill:#ffffff"
+ id="path111" />
+ <linearGradient
+ id="XMLID_9_"
+ gradientUnits="userSpaceOnUse"
+ x1="37.716801"
+ y1="78.847702"
+ x2="35.737"
+ y2="77.450104">
+ <stop
+ offset="0.0337"
+ style="stop-color:rgb(255,255,255)"
+ id="stop114" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(128,128,128)"
+ id="stop116" />
+ <a:midPointStop
+ offset="0.0337"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#808080" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="multiply"
+ d="M 28.039,75.009 C 28.039,75.009 32.131,74.073 34.55,74.073 C 36.967,74.073 40.874,75.009 40.874,75.009 L 34.55,82.68 L 28.039,75.009 z"
+ style="opacity:0.4;fill:url(#linearGradient3167)"
+ id="path118" />
+ <linearGradient
+ id="XMLID_10_"
+ gradientUnits="userSpaceOnUse"
+ x1="37.429699"
+ y1="78.079102"
+ x2="31.775499"
+ y2="75.251999">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,139,0)"
+ id="stop121" />
+ <stop
+ offset="0.2022"
+ style="stop-color:rgb(255,194,0)"
+ id="stop123" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(255,255,0)"
+ id="stop125" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FF8B00" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FF8B00" />
+ <a:midPointStop
+ offset="0.2022"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFFF00" />
+ </linearGradient>
+ <path
+ d="M 27.508,74.111 C 27.508,74.111 31.565,73.183 33.962,73.183 C 36.357,73.183 40.23,74.111 40.23,74.111 L 33.962,81.713 L 27.508,74.111 z"
+ style="fill:url(#linearGradient3169)"
+ id="path127" />
+ <linearGradient
+ id="XMLID_11_"
+ gradientUnits="userSpaceOnUse"
+ x1="33.480999"
+ y1="127.388"
+ x2="33.480999"
+ y2="105.1">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,255)"
+ id="stop130" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(0,0,0)"
+ id="stop132" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#000000" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="screen"
+ d="M 58.923,86.796 C 58.349,86.812 57.873,87.249 57.806,87.822 C 57.389,91.381 56.392,94.776 54.842,97.915 C 50.548,106.606 42.532,112.006 33.923,112.006 C 25.895,112.006 18.417,107.379 13.92,99.629 C 11.962,96.255 10.686,92.525 10.129,88.537 C 10.05,87.974 9.579,87.553 9.015,87.538 C 9.015,87.538 5.377,87.443 2.734,87.376 C 5.106,85.012 9.769,80.361 9.769,80.361 C 9.95,80.182 10.067,79.946 10.101,79.692 C 11.908,66.21 22.148,56.043 33.923,56.043 C 45.869,56.043 56.131,66.384 57.792,80.096 C 57.824,80.362 57.944,80.607 58.135,80.79 C 58.135,80.79 61.931,84.479 64.177,86.665 C 61.805,86.724 58.923,86.796 58.923,86.796 z M 58.938,79.956 C 57.22,65.788 46.678,54.881 33.922,54.881 C 21.292,54.881 10.827,65.573 8.957,79.537 L 0,88.467 L 8.985,88.698 C 9.573,92.908 10.948,96.812 12.922,100.214 C 17.453,108.022 25.164,113.166 33.922,113.166 C 43.33,113.166 51.529,107.229 55.875,98.432 C 57.44,95.263 58.511,91.727 58.952,87.957 L 66.962,87.756 L 58.938,79.956 z"
+ style="fill:url(#linearGradient3171)"
+ id="path134" />
+ <linearGradient
+ id="XMLID_12_"
+ gradientUnits="userSpaceOnUse"
+ x1="33.829601"
+ y1="100.71"
+ x2="33.829601"
+ y2="110.822">
+ <stop
+ offset="0.0337"
+ style="stop-color:rgb(255,255,255)"
+ id="stop137" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(178,178,178)"
+ id="stop139" />
+ <a:midPointStop
+ offset="0.0337"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFFFFF" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#B2B2B2" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="multiply"
+ d="M 33.468,106.637 C 24.457,106.637 16.656,102.019 12.85,95.287 C 12.579,96.826 12.409,98.415 12.353,100.04 C 16.883,107.848 24.595,112.993 33.352,112.993 C 42.76,112.993 50.958,107.055 55.304,98.257 C 55.183,96.848 54.976,95.47 54.692,94.131 C 51.158,101.486 42.985,106.637 33.468,106.637 z"
+ style="opacity:0.4;fill:url(#linearGradient3173)"
+ id="path141" />
+ <g
+ id="g143">
+ <path
+ d="M 48.325,106.81 C 41.816,106.81 36.539,109.02 36.539,111.749 C 36.539,112.226 36.704,112.687 37.007,113.125 C 41.615,112.267 45.839,110.049 49.38,106.831 C 49.031,106.819 48.68,106.81 48.325,106.81 z"
+ style="opacity:0.2"
+ id="path145" />
+ <path
+ d="M 21.593,106.975 C 20.52,106.975 19.485,107.041 18.506,107.163 C 22.263,110.512 26.836,112.645 31.812,113.079 C 32.232,112.596 32.462,112.072 32.462,111.526 C 32.463,109.012 27.597,106.975 21.593,106.975 z"
+ style="opacity:0.2"
+ id="path147" />
+ <g
+ id="g149">
+ <linearGradient
+ id="XMLID_13_"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4258"
+ y1="117.758"
+ x2="49.4258"
+ y2="105.512">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,194,0)"
+ id="stop152" />
+ <stop
+ offset="0.1548"
+ style="stop-color:rgb(247,181,0)"
+ id="stop154" />
+ <stop
+ offset="0.716"
+ style="stop-color:rgb(222,136,0)"
+ id="stop156" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(212,119,0)"
+ id="stop158" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="0.4463"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#D47700" />
+ </linearGradient>
+ <path
+ d="M 37.949,111.906 C 37.949,114.554 43.097,116.711 49.425,116.711 C 55.755,116.711 60.903,114.555 60.903,111.906 C 60.903,109.259 55.755,107.101 49.425,107.101 C 43.097,107.102 37.949,109.259 37.949,111.906 z M 38.992,111.906 C 38.992,109.498 43.672,107.539 49.425,107.539 C 55.179,107.539 59.859,109.498 59.859,111.906 C 59.859,114.315 55.18,116.273 49.425,116.273 C 43.672,116.273 38.992,114.315 38.992,111.906 z"
+ style="fill:url(#linearGradient3175)"
+ id="path160" />
+ <linearGradient
+ id="XMLID_14_"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4263"
+ y1="109.792"
+ x2="49.4263"
+ y2="117.86">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,167,0)"
+ id="stop163" />
+ <stop
+ offset="0.691"
+ style="stop-color:rgb(255,255,0)"
+ id="stop165" />
+ <stop
+ offset="0.792"
+ style="stop-color:rgb(255,252,0)"
+ id="stop167" />
+ <stop
+ offset="0.8546"
+ style="stop-color:rgb(255,244,0)"
+ id="stop169" />
+ <stop
+ offset="0.9067"
+ style="stop-color:rgb(255,229,0)"
+ id="stop171" />
+ <stop
+ offset="0.953"
+ style="stop-color:rgb(255,209,0)"
+ id="stop173" />
+ <stop
+ offset="0.9952"
+ style="stop-color:rgb(255,183,0)"
+ id="stop175" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(255,179,0)"
+ id="stop177" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFA700" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFA700" />
+ <a:midPointStop
+ offset="0.691"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="0.7952"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFB300" />
+ </linearGradient>
+ <path
+ d="M 60.382,111.906 C 60.382,114.439 55.476,116.491 49.425,116.491 C 43.374,116.491 38.47,114.439 38.47,111.906 C 38.47,109.374 43.374,107.321 49.425,107.321 C 55.476,107.321 60.382,109.374 60.382,111.906 z"
+ style="fill:url(#linearGradient3177)"
+ id="path179" />
+ <radialGradient
+ id="XMLID_15_"
+ cx="50.122101"
+ cy="-1005.98"
+ r="17.6775"
+ fx="50.122101"
+ fy="-1005.98"
+ gradientTransform="matrix(0.9706,0,0,0.4062,0.2742,524.622)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,0)"
+ id="stop182" />
+ <stop
+ offset="0.1643"
+ style="stop-color:rgb(255,241,0)"
+ id="stop184" />
+ <stop
+ offset="0.7192"
+ style="stop-color:rgb(255,196,0)"
+ id="stop186" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(255,179,0)"
+ id="stop188" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="0.4463"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFB300" />
+ </radialGradient>
+ <path
+ d="M 59.397,112.671 C 59.397,114.576 54.933,116.121 49.425,116.121 C 43.918,116.121 39.454,114.576 39.454,112.671 C 39.454,110.767 43.918,109.222 49.425,109.222 C 54.933,109.222 59.397,110.767 59.397,112.671 z"
+ style="fill:url(#radialGradient3179)"
+ id="path190" />
+ <linearGradient
+ id="XMLID_16_"
+ gradientUnits="userSpaceOnUse"
+ x1="49.4263"
+ y1="107.75"
+ x2="49.4263"
+ y2="112.283">
+ <stop
+ offset="9.77011%"
+ style="stop-color:rgb(255,255,255)"
+ id="stop193" />
+ <stop
+ offset="100%"
+ style="stop-opacity:0;stop-color:rgb(255,255,255)"
+ id="stop195" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="screen"
+ d="M 58.592,110.335 C 58.592,111.863 54.488,113.105 49.425,113.105 C 44.363,113.105 40.26,111.864 40.26,110.335 C 40.26,108.806 44.363,107.567 49.425,107.567 C 54.488,107.567 58.592,108.807 58.592,110.335 z"
+ style="fill:url(#linearGradient3181)"
+ id="path197" />
+ </g>
+ <g
+ id="g199">
+ <linearGradient
+ id="XMLID_17_"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="118.006"
+ x2="20.0718"
+ y2="105.762">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,194,0)"
+ id="stop202" />
+ <stop
+ offset="0.1548"
+ style="stop-color:rgb(247,181,0)"
+ id="stop204" />
+ <stop
+ offset="0.716"
+ style="stop-color:rgb(222,136,0)"
+ id="stop206" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(212,119,0)"
+ id="stop208" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="0.4463"
+ style="stop-color:#FFC200" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#D47700" />
+ </linearGradient>
+ <path
+ d="M 8.595,112.155 C 8.595,114.805 13.743,116.96 20.072,116.96 C 26.401,116.96 31.55,114.806 31.55,112.155 C 31.55,109.508 26.401,107.352 20.072,107.352 C 13.743,107.352 8.595,109.508 8.595,112.155 z M 9.637,112.155 C 9.637,109.747 14.319,107.788 20.072,107.788 C 25.825,107.788 30.505,109.747 30.505,112.155 C 30.505,114.563 25.826,116.523 20.072,116.523 C 14.319,116.523 9.637,114.563 9.637,112.155 z"
+ style="fill:url(#linearGradient3183)"
+ id="path210" />
+ <linearGradient
+ id="XMLID_18_"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="110.042"
+ x2="20.0718"
+ y2="118.111">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,167,0)"
+ id="stop213" />
+ <stop
+ offset="0.691"
+ style="stop-color:rgb(255,255,0)"
+ id="stop215" />
+ <stop
+ offset="0.792"
+ style="stop-color:rgb(255,252,0)"
+ id="stop217" />
+ <stop
+ offset="0.8546"
+ style="stop-color:rgb(255,244,0)"
+ id="stop219" />
+ <stop
+ offset="0.9067"
+ style="stop-color:rgb(255,229,0)"
+ id="stop221" />
+ <stop
+ offset="0.953"
+ style="stop-color:rgb(255,209,0)"
+ id="stop223" />
+ <stop
+ offset="0.9952"
+ style="stop-color:rgb(255,183,0)"
+ id="stop225" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(255,179,0)"
+ id="stop227" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFA700" />
+ <a:midPointStop
+ offset="0.5"
+ style="stop-color:#FFA700" />
+ <a:midPointStop
+ offset="0.691"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="0.7952"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFB300" />
+ </linearGradient>
+ <path
+ d="M 31.028,112.155 C 31.028,114.689 26.123,116.743 20.072,116.743 C 14.02,116.743 9.116,114.689 9.116,112.155 C 9.116,109.624 14.02,107.571 20.072,107.571 C 26.123,107.571 31.028,109.624 31.028,112.155 z"
+ style="fill:url(#linearGradient3185)"
+ id="path229" />
+ <radialGradient
+ id="XMLID_19_"
+ cx="19.8799"
+ cy="-1005.37"
+ r="17.6759"
+ fx="19.8799"
+ fy="-1005.37"
+ gradientTransform="matrix(0.9706,0,0,0.4062,0.2742,524.622)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:rgb(255,255,0)"
+ id="stop232" />
+ <stop
+ offset="0.1643"
+ style="stop-color:rgb(255,241,0)"
+ id="stop234" />
+ <stop
+ offset="0.7192"
+ style="stop-color:rgb(255,196,0)"
+ id="stop236" />
+ <stop
+ offset="1"
+ style="stop-color:rgb(255,179,0)"
+ id="stop238" />
+ <a:midPointStop
+ offset="0"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="0.4463"
+ style="stop-color:#FFFF00" />
+ <a:midPointStop
+ offset="1"
+ style="stop-color:#FFB300" />
+ </radialGradient>
+ <path
+ d="M 30.043,112.92 C 30.043,114.826 25.579,116.371 20.072,116.371 C 14.565,116.371 10.101,114.826 10.101,112.92 C 10.101,111.017 14.565,109.472 20.072,109.472 C 25.579,109.472 30.043,111.017 30.043,112.92 z"
+ style="fill:url(#radialGradient3187)"
+ id="path240" />
+ <linearGradient
+ id="XMLID_20_"
+ gradientUnits="userSpaceOnUse"
+ x1="20.0718"
+ y1="107.999"
+ x2="20.0718"
+ y2="112.532">
+ <stop
+ offset="10.9195%"
+ style="stop-color:rgb(255,255,255)"
+ id="stop243" />
+ <stop
+ offset="100%"
+ style="stop-opacity:0;stop-color:rgb(255,255,255)"
+ id="stop245" />
+ </linearGradient>
+ <path
+ a:adobe-blending-mode="screen"
+ d="M 29.238,110.584 C 29.238,112.113 25.134,113.354 20.071,113.354 C 15.008,113.354 10.904,112.114 10.904,110.584 C 10.904,109.056 15.008,107.816 20.071,107.816 C 25.134,107.816 29.238,109.056 29.238,110.584 z"
+ style="fill:url(#linearGradient3189)"
+ id="path247" />
+ </g>
+ </g>
+ <path
+ d="M 58.257,80.14 L 53.519,87.286 L 58.257,87.112 L 58.257,80.14 z"
+ id="path249" />
+ </g>
+<path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3924"
+ d="M 40.671773,71.969328 C 41.905218,71.721478 43.175578,71.644648 44.430337,71.540077 C 49.503727,71.190685 54.589443,71.088307 59.671561,70.942659 C 60.394015,70.92064 61.116464,70.89862 61.838919,70.8766 L 60.293152,72.003846 C 59.597102,72.006908 58.901046,72.00997 58.204991,72.013033 C 53.053005,72.087429 47.892547,72.22499 42.765899,72.774464 C 41.414487,72.926847 40.069232,73.111331 38.737341,73.374778 L 40.671773,71.969328 z" /><path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3926"
+ d="M 52.815851,50.979956 C 54.821217,49.894393 53.496851,50.730117 51.923357,52.171788 C 50.02155,54.051911 48.58631,56.268364 47.629107,58.754935 C 46.817087,60.955697 46.933511,63.048757 47.685679,65.228416 C 48.410358,66.873548 49.450395,68.012472 51.314534,67.94777 C 53.395432,67.264213 53.522501,67.31769 54.519303,64.27802 C 54.79471,61.862169 53.449064,59.998139 51.628786,58.584205 C 50.142422,57.559139 48.514138,58.877454 51.634307,57.1384 C 51.594158,57.174169 51.554015,57.209938 51.513866,57.245708 L 49.348738,58.172845 C 49.381578,58.115814 49.414423,58.058783 49.447269,58.001752 C 51.394219,56.87295 51.79475,56.16538 53.498758,57.413207 C 55.279892,58.963418 56.651812,60.904927 56.42918,63.376821 C 55.481142,66.546441 52.725321,68.499748 49.533241,69.243282 C 47.578641,69.198887 46.543314,68.010138 45.792111,66.272859 C 45.039932,64.033484 44.883722,61.906425 45.71301,59.645332 C 46.649245,57.137419 48.093593,54.919453 49.948061,52.982734 C 51.372513,51.61022 52.892375,50.293902 54.750283,49.574509 L 52.815851,50.979956 z" /><path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3930"
+ d="M 45.008,76.709 C 45.575863,75.448548 47.18433,74.971249 48.489669,75.020739 C 51.206549,75.445819 53.678762,76.936342 55.873172,78.530129 C 57.573627,79.764681 58.699592,81.645968 56.764485,83.161233 C 54.269386,84.859362 52.277905,84.816796 49.54122,84.214141 C 46.931962,83.437396 51.046583,82.793361 52.330942,83.453739 C 54.337409,84.524245 56.266252,85.759772 57.959421,87.282863 C 59.112812,88.416829 59.495297,89.605091 58.144429,90.683019 C 54.925763,92.772111 51.778458,92.038852 48.252872,91.344084 C 47.870966,91.255688 47.489048,91.167298 47.107142,91.078908 L 48.863193,89.866925 C 49.22875,89.963186 49.594308,90.059447 49.959865,90.155708 C 51.653766,90.514643 58.904366,90.353917 56.064031,91.50703 C 57.456057,90.587269 57.173028,89.589736 56.092734,88.436027 C 54.463117,86.865932 52.555958,85.618232 50.506782,84.66011 C 48.176983,83.657129 50.079273,82.54543 51.383454,82.938913 C 52.685342,83.258136 56.996027,82.798173 54.711802,83.969865 C 56.741638,82.709721 55.72577,80.856415 54.128674,79.636085 C 51.945182,78.017675 49.450509,76.544675 46.681063,76.341558 C 44.510334,76.527214 45.456255,76.919982 47.138478,75.623468 L 45.008,76.709 z" /><path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3932"
+ d="M 63.353509,69.117757 C 64.069614,68.334202 65.158341,68.038609 66.058177,67.546006 C 66.976655,67.344437 67.928132,67.481014 68.851071,67.597311 C 70.046364,67.727738 71.239592,67.862287 72.428973,68.038431 C 73.807266,68.271412 73.539417,67.931086 73.19689,68.220294 L 73.509375,68.21604 C 71.660524,69.402635 71.998609,69.658659 70.534848,69.367465 C 69.377945,69.157713 68.214969,68.991033 67.043533,68.883243 C 66.098565,68.812332 65.12011,68.682892 64.20528,68.998748 C 64.650035,68.72185 64.407394,68.751304 64.045099,69.129755 L 63.353509,69.117757 z"
+ sodipodi:nodetypes="ccccccccccc" /><path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3934"
+ d="M 65.44179,74.366018 C 66.530517,74.436158 67.62178,74.335919 68.708935,74.27365 C 69.91938,74.221959 71.123867,74.099684 72.328382,73.975282 L 70.472131,75.349598 C 69.297153,75.442057 68.122124,75.527961 66.944082,75.57202 C 65.799913,75.642932 64.657122,75.739471 63.510853,75.768923 L 65.44179,74.366018 z" /><path
+ style="opacity:0.13934427999999999;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#111111;stroke-width:1.50000011999999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4001"
+ d="M 74.324771,65.663258 C 74.53026,65.087481 75.035246,64.665845 75.530795,64.208818 C 79.375989,61.029341 82.378821,61.212434 85.618796,61.512766 C 88.504762,62.230825 92.487791,62.425001 93.058576,65.594813 C 92.342919,69.241053 87.089599,71.772635 83.960022,73.625373 C 81.493155,75.120664 77.296391,76.73041 80.033871,78.332203 C 83.605791,79.482438 87.929181,79.377403 92.183549,79.243313 L 90.08359,80.599289 C 85.849152,80.592937 81.521835,80.672395 77.804368,79.689924 C 74.620216,78.055839 79.117078,76.079627 81.889032,74.499095 C 84.886524,72.735696 89.893082,70.344687 90.75887,66.869364 C 90.375738,63.674456 86.418263,62.784431 83.563225,62.823634 C 78.989742,62.886433 78.721326,63.444877 76.919513,64.339433 C 74.789114,65.397121 74.324771,65.663258 74.324771,65.663258 z"
+ sodipodi:nodetypes="cccccccccccssc" /><path
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3958"
+ d="M 74.324771,65.663258 C 74.53026,65.087481 75.035246,64.665845 75.530795,64.208818 C 79.375989,61.029341 82.378821,61.212434 85.618796,61.512766 C 88.504762,62.230825 92.487791,62.425001 93.058576,65.594813 C 92.342919,69.241053 87.089599,71.772635 83.960022,73.625373 C 81.493155,75.120664 77.296391,76.73041 80.033871,78.332203 C 83.605791,79.482438 87.929181,79.377403 92.183549,79.243313 L 90.08359,80.599289 C 85.849152,80.592937 81.521835,80.672395 77.804368,79.689924 C 74.620216,78.055839 79.117078,76.079627 81.889032,74.499095 C 84.886524,72.735696 89.893082,70.344687 90.75887,66.869364 C 90.375738,63.674456 86.368683,62.651081 83.563225,62.823634 C 78.797458,63.116758 78.746777,63.478252 76.919513,64.339433 C 74.759946,65.357226 74.324771,65.663258 74.324771,65.663258 z"
+ sodipodi:nodetypes="cccccccccccssc" /><path
+ d="M 40.671773,71.969328 C 41.905218,71.721478 43.175578,71.644648 44.430337,71.540077 C 49.503727,71.190685 54.589443,71.088307 59.671561,70.942659 C 60.394015,70.92064 61.116464,70.89862 61.838919,70.8766 L 60.293152,72.003846 C 59.597102,72.006908 58.901046,72.00997 58.204991,72.013033 C 53.053005,72.087429 47.892547,72.22499 42.765899,72.774464 C 41.414487,72.926847 40.069232,73.111331 38.737341,73.374778 L 40.671773,71.969328 z"
+ id="path3979"
+ style="opacity:0.13934427999999999;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000000999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 52.815851,50.979956 C 54.821217,49.894393 53.496851,50.730117 51.923357,52.171788 C 50.02155,54.051911 48.58631,56.268364 47.629107,58.754935 C 46.817087,60.955697 46.933511,63.048757 47.685679,65.228416 C 48.410358,66.873548 49.450395,68.012472 51.314534,67.94777 C 53.395432,67.264213 53.522501,67.31769 54.519303,64.27802 C 54.79471,61.862169 53.449064,59.998139 51.628786,58.584205 C 50.142422,57.559139 48.514138,58.877454 51.634307,57.1384 C 51.594158,57.174169 51.554015,57.209938 51.513866,57.245708 L 49.348738,58.172845 C 49.381578,58.115814 49.414423,58.058783 49.447269,58.001752 C 51.394219,56.87295 51.79475,56.16538 53.498758,57.413207 C 55.279892,58.963418 56.651812,60.904927 56.42918,63.376821 C 55.481142,66.546441 52.725321,68.499748 49.533241,69.243282 C 47.578641,69.198887 46.543314,68.010138 45.792111,66.272859 C 45.039932,64.033484 44.883722,61.906425 45.71301,59.645332 C 46.649245,57.137419 48.093593,54.919453 49.948061,52.982734 C 51.372513,51.61022 52.892375,50.293902 54.750283,49.574509 L 52.815851,50.979956 z"
+ id="path3981"
+ style="opacity:0.13934427999999999;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000000999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 45.008,76.709 C 45.575863,75.448548 47.18433,74.971249 48.489669,75.020739 C 51.206549,75.445819 53.678762,76.936342 55.873172,78.530129 C 57.573627,79.764681 58.699592,81.645968 56.764485,83.161233 C 54.269386,84.859362 52.277905,84.816796 49.54122,84.214141 C 46.931962,83.437396 51.046583,82.793361 52.330942,83.453739 C 54.337409,84.524245 56.266252,85.759772 57.959421,87.282863 C 59.112812,88.416829 59.495297,89.605091 58.144429,90.683019 C 54.925763,92.772111 51.778458,92.038852 48.252872,91.344084 C 47.870966,91.255688 47.489048,91.167298 47.107142,91.078908 L 48.863193,89.866925 C 49.22875,89.963186 49.594308,90.059447 49.959865,90.155708 C 51.653766,90.514643 58.904366,90.353917 56.064031,91.50703 C 57.456057,90.587269 57.173028,89.589736 56.092734,88.436027 C 54.463117,86.865932 52.555958,85.618232 50.506782,84.66011 C 48.176983,83.657129 50.079273,82.54543 51.383454,82.938913 C 52.685342,83.258136 56.996027,82.798173 54.711802,83.969865 C 56.741638,82.709721 55.72577,80.856415 54.128674,79.636085 C 51.945182,78.017675 49.450509,76.544675 46.681063,76.341558 C 44.510334,76.527214 45.456255,76.919982 47.138478,75.623468 L 45.008,76.709 z"
+ id="path3983"
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 63.353509,69.117757 C 64.069614,68.334202 65.158341,68.038609 66.058177,67.546006 C 66.976655,67.344437 67.928132,67.481014 68.851071,67.597311 C 70.046364,67.727738 71.239592,67.862287 72.428973,68.038431 C 73.807266,68.271412 74.297333,67.510022 71.386313,69.315062 L 73.509375,68.21604 C 71.660524,69.402635 71.998609,69.658659 70.534848,69.367465 C 69.377945,69.157713 68.214969,68.991033 67.043533,68.883243 C 66.098565,68.812332 65.12011,68.682892 64.20528,68.998748 C 64.650035,68.72185 65.923226,67.824962 65.560931,68.203413 L 63.353509,69.117757 z"
+ id="path3985"
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 65.44179,74.366018 C 66.530517,74.436158 67.62178,74.335919 68.708935,74.27365 C 69.91938,74.221959 71.123867,74.099684 72.328382,73.975282 L 70.472131,75.349598 C 69.297153,75.442057 68.122124,75.527961 66.944082,75.57202 C 65.799913,75.642932 64.657122,75.739471 63.510853,75.768923 L 65.44179,74.366018 z"
+ id="path3987"
+ style="opacity:0.13934427999999999;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000000999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
+ d="M 74.324771,65.663258 C 74.53026,65.087481 75.035246,64.665845 75.530795,64.208818 C 79.375989,61.029341 82.378821,61.212434 85.618796,61.512766 C 88.504762,62.230825 92.487791,62.425001 93.058576,65.594813 C 92.342919,69.241053 87.089599,71.772635 83.960022,73.625373 C 81.493155,75.120664 77.296391,76.73041 80.033871,78.332203 C 83.605791,79.482438 87.929181,79.377403 92.183549,79.243313 L 90.08359,80.599289 C 85.849152,80.592937 81.521835,80.672395 77.804368,79.689924 C 74.620216,78.055839 79.117078,76.079627 81.889032,74.499095 C 84.886524,72.735696 89.893082,70.344687 90.75887,66.869364 C 90.375738,63.674456 86.469835,62.861079 83.607528,62.882707 C 78.498296,62.921311 78.456564,63.713141 76.963816,64.398505 C 74.795861,65.393876 74.324771,65.663258 74.324771,65.663258 z"
+ id="path3989"
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cccccccccccssc" /><path
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3991"
+ d="M 40.671773,71.969328 C 41.905218,71.721478 43.175578,71.644648 44.430337,71.540077 C 49.503727,71.190685 54.589443,71.088307 59.671561,70.942659 C 60.394015,70.92064 61.116464,70.89862 61.838919,70.8766 L 60.293152,72.003846 C 59.597102,72.006908 58.901046,72.00997 58.204991,72.013033 C 53.053005,72.087429 47.892547,72.22499 42.765899,72.774464 C 41.414487,72.926847 40.069232,73.111331 38.737341,73.374778 L 40.671773,71.969328 z" /><path
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3993"
+ d="M 52.815851,50.979956 C 54.821217,49.894393 53.496851,50.730117 51.923357,52.171788 C 50.02155,54.051911 48.58631,56.268364 47.629107,58.754935 C 46.817087,60.955697 46.933511,63.048757 47.685679,65.228416 C 48.410358,66.873548 49.450395,68.012472 51.314534,67.94777 C 53.395432,67.264213 53.522501,67.31769 54.519303,64.27802 C 54.79471,61.862169 53.449064,59.998139 51.628786,58.584205 C 50.142422,57.559139 48.514138,58.877454 51.634307,57.1384 C 51.594158,57.174169 51.554015,57.209938 51.513866,57.245708 L 49.348738,58.172845 C 49.381578,58.115814 49.414423,58.058783 49.447269,58.001752 C 51.394219,56.87295 51.79475,56.16538 53.498758,57.413207 C 55.279892,58.963418 56.651812,60.904927 56.42918,63.376821 C 55.481142,66.546441 52.725321,68.499748 49.533241,69.243282 C 47.578641,69.198887 46.543314,68.010138 45.792111,66.272859 C 45.039932,64.033484 44.883722,61.906425 45.71301,59.645332 C 46.649245,57.137419 48.093593,54.919453 49.948061,52.982734 C 51.372513,51.61022 52.892375,50.293902 54.750283,49.574509 L 52.815851,50.979956 z" /><path
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50000012;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3997"
+ d="M 63.353509,69.117757 C 64.069614,68.334202 65.158341,68.038609 66.058177,67.546006 C 66.976655,67.344437 67.928132,67.481014 68.851071,67.597311 C 70.046364,67.727738 71.239592,67.862287 72.428973,68.038431 C 73.807266,68.271412 74.297333,67.510022 71.386313,69.315062 L 73.509375,68.21604 C 71.660524,69.402635 71.998609,69.658659 70.534848,69.367465 C 69.377945,69.157713 68.214969,68.991033 67.043533,68.883243 C 66.098565,68.812332 65.12011,68.682892 64.20528,68.998748 C 64.650035,68.72185 65.923226,67.824962 65.560931,68.203413 L 63.353509,69.117757 z" /><path
+ style="opacity:0.13934428;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.50000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3999"
+ d="M 65.44179,74.366018 C 66.530517,74.436158 67.62178,74.335919 68.708935,74.27365 C 69.91938,74.221959 71.123867,74.099684 72.328382,73.975282 L 70.472131,75.349598 C 69.297153,75.442057 68.122124,75.527961 66.944082,75.57202 C 65.799913,75.642932 64.657122,75.739471 63.510853,75.768923 L 65.44179,74.366018 z" /></svg>
Modified: tuxmath/trunk/doc/changelog
===================================================================
--- tuxmath/trunk/doc/changelog 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/doc/changelog 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,3 +1,10 @@
+2009.Feb.06 (svn.debian.org/tux4kids - revision 871)
+ Moved linewrapping source files into main src directory and
+ adjusted autotools files accordingly. Note - plan to combine most of
+ the libgettextpo-derived files into one larger file to reduce clutter.
+
+ David Bruce <davidstuartbruce at gmail.com>
+
2009.Feb.04 (svn.debian.org/tux4kids - revision 869)
Added algorithmic linewrapping to the code. This should make life
easier for the translators.
Deleted: tuxmath/trunk/linebreak/lbrkprop.h
===================================================================
--- tuxmath/trunk/linebreak/lbrkprop.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/lbrkprop.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,1895 +0,0 @@
-/* Line breaking properties of Unicode characters. */
-/* Generated automatically by gen-lbrkprop for Unicode 3.1.0. */
-
-/* Copyright (C) 2000-2004 Free Software Foundation, Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#define lbrkprop_header_0 16
-#define lbrkprop_header_1 15
-#define lbrkprop_header_2 7
-#define lbrkprop_header_3 511
-#define lbrkprop_header_4 127
-static const
-struct
- {
- int level1[15];
- int level2[4 << 9];
- unsigned char level3[100 << 7];
- }
-lbrkprop =
-{
- { 0, 512, 1024, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1536 },
- {
- 0, 128, 256, 384, 512, 640, 768, 896,
- 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920,
- -1, -1, 2048, 2176, 2304, 2432, 2560, 2688,
- 2816, 2944, 3072, 3200, 3328, 3456, 3584, 3712,
- 3840, 3968, 4096, 4224, 4352, 4480, 4608, 4736,
- 4864, 4992, 4992, 4992, 5120, 5248, -1, 5376,
- 5504, 5632, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4992, 5760, 5888, 6016,
- 6144, 6272, 6400, 6528, 6656, 6784, 6912, 7040,
- 7168, 7296, 7424, 7552, 7680, -1, 7808, 7936,
- 4992, 4992, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 8064, 8192, 8320,
- 8448, 8576, 8704, 8832, 8960, 9088, 9216, 9344,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 9472, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 9600,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 9728, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 9856,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 8192, 8192, 9984, -1, 10112, 10240,
- 4992, 4992, 10368, 10496, 10624, 10752, 10880, 11008,
- -1, -1, -1, -1, -1, -1, 11136, -1,
- 11264, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 4992, 11392, 11520, 11648, -1, -1, -1, -1,
- 11776, 11904, 12032, 4992, 4992, 12160, 4992, 12288,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
- 8192, 8192, 8192, 8192, 8192, 12416, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 8192, 8192, 8192, 8192, 12544, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 12672, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1
- },
- {
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_BA, LBP_BK, LBP_CM, LBP_BK, LBP_BK, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_SP, LBP_EX, LBP_QU, LBP_AL, LBP_PR, LBP_PO, LBP_AL, LBP_QU,
- LBP_OP, LBP_CL, LBP_AL, LBP_PR, LBP_IS, LBP_HY, LBP_IS, LBP_SY,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_IS, LBP_IS, LBP_AL, LBP_AL, LBP_AL, LBP_EX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_PR, LBP_CL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_BA, LBP_CL, LBP_AL, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BK, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_GL, LBP_AI, LBP_PO, LBP_PR, LBP_PR, LBP_PR, LBP_AL, LBP_AI,
- LBP_AI, LBP_AL, LBP_AI, LBP_QU, LBP_AL, LBP_BA, LBP_AL, LBP_AL,
- LBP_PO, LBP_PR, LBP_AI, LBP_AI, LBP_BB, LBP_AL, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_QU, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
- LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
- LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_BB, LBP_AI, LBP_AI, LBP_AI, LBP_BB, LBP_AI, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_XX, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
- LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
- LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_IS, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_CM,
- LBP_AL, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM,
- LBP_CM, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_CM,
- LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
- LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM,
- LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_AL, LBP_AL, LBP_PR, LBP_PR, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
- LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
- LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_CM, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_PR,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NS, LBP_NS, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA,
- LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_SA,
- LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_CM, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_SA, LBP_XX, LBP_XX,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_GL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL, LBP_CM,
- LBP_AL, LBP_CM, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_CM, LBP_CM,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_ID,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
- LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_NS, LBP_BA, LBP_NS, LBP_NS,
- LBP_NS, LBP_NS, LBP_NS, LBP_PR, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BB, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_GL,
- LBP_BA, LBP_BA, LBP_BA, LBP_ZW, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_BA, LBP_GL, LBP_BA, LBP_BA, LBP_B2, LBP_AI, LBP_AI, LBP_AL,
- LBP_QU, LBP_QU, LBP_OP, LBP_QU, LBP_QU, LBP_QU, LBP_OP, LBP_QU,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_IN, LBP_IN, LBP_IN, LBP_BA,
- LBP_BK, LBP_BK, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_GL,
- LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO,
- LBP_AL, LBP_QU, LBP_QU, LBP_AI, LBP_NS, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_NS, LBP_OP, LBP_CL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_AI,
- LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PO,
- LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_PO, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_PR, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AL, LBP_AI, LBP_PR, LBP_PR, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_OP, LBP_CL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL,
- LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
- LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_CL, LBP_CL, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID,
- LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
- LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
- LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_NS, LBP_OP, LBP_CL, LBP_CL,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_ID, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID,
- LBP_XX, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
- LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_XX,
- LBP_XX, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
- LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_CM, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP,
- LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
- LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_CL, LBP_ID, LBP_CL, LBP_XX, LBP_NS, LBP_NS, LBP_EX, LBP_EX,
- LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_GL,
- LBP_XX, LBP_EX, LBP_ID, LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_ID,
- LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_CL, LBP_ID, LBP_CL, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_EX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_XX,
- LBP_XX, LBP_CL, LBP_OP, LBP_CL, LBP_CL, LBP_NS, LBP_AL, LBP_NS,
- LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS,
- LBP_NS, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_NS, LBP_NS,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
- LBP_PO, LBP_PR, LBP_ID, LBP_ID, LBP_ID, LBP_PR, LBP_PR, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CB, LBP_AI, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
- LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
- LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
- LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
- LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
- LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM
- }
-};
Deleted: tuxmath/trunk/linebreak/linebreak.c
===================================================================
--- tuxmath/trunk/linebreak/linebreak.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/linebreak.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,1335 +0,0 @@
-/* linebreak.c - line breaking of Unicode strings
- Copyright (C) 2001-2003, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <haible at clisp.cons.org>, 2001.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "linebreak.h"
-
-#include <stdlib.h>
-#include <string.h>
-//#include "c-ctype.h"
-#include "ctype.h"
-#include "xsize.h"
-#include "unistr.h"
-#include "uniwidth.h"
-#include "uniwidth/cjk.h"
-#include "streq.h"
-
-
-static int
-is_utf8_encoding (const char *encoding)
-{
- if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
- return 1;
- return 0;
-}
-
-
-/* Determine the line break points in S, and store the result at p[0..n-1]. */
-/* We don't support line breaking of complex-context dependent characters
- (Thai, Lao, Myanmar, Khmer) yet, because it requires dictionary lookup. */
-
-/* Line breaking classification. */
-
-enum
-{
- /* Values >= 20 are resolved at run time. */
- LBP_BK = 0, /* mandatory break */
-/*LBP_CR, carriage return - not used here because it's a DOSism */
-/*LBP_LF, line feed - not used here because it's a DOSism */
- LBP_CM = 20, /* attached characters and combining marks */
-/*LBP_SG, surrogates - not used here because they are not characters */
- LBP_ZW = 1, /* zero width space */
- LBP_IN = 2, /* inseparable */
- LBP_GL = 3, /* non-breaking (glue) */
- LBP_CB = 22, /* contingent break opportunity */
- LBP_SP = 21, /* space */
- LBP_BA = 4, /* break opportunity after */
- LBP_BB = 5, /* break opportunity before */
- LBP_B2 = 6, /* break opportunity before and after */
- LBP_HY = 7, /* hyphen */
- LBP_NS = 8, /* non starter */
- LBP_OP = 9, /* opening punctuation */
- LBP_CL = 10, /* closing punctuation */
- LBP_QU = 11, /* ambiguous quotation */
- LBP_EX = 12, /* exclamation/interrogation */
- LBP_ID = 13, /* ideographic */
- LBP_NU = 14, /* numeric */
- LBP_IS = 15, /* infix separator (numeric) */
- LBP_SY = 16, /* symbols allowing breaks */
- LBP_AL = 17, /* ordinary alphabetic and symbol characters */
- LBP_PR = 18, /* prefix (numeric) */
- LBP_PO = 19, /* postfix (numeric) */
- LBP_SA = 23, /* complex context (South East Asian) */
- LBP_AI = 24, /* ambiguous (alphabetic or ideograph) */
- LBP_XX = 25 /* unknown */
-};
-
-#include "lbrkprop.h"
-
-static inline unsigned char
-lbrkprop_lookup (unsigned int uc)
-{
- unsigned int index1 = uc >> lbrkprop_header_0;
- if (index1 < lbrkprop_header_1)
- {
- int lookup1 = lbrkprop.level1[index1];
- if (lookup1 >= 0)
- {
- unsigned int index2 = (uc >> lbrkprop_header_2) & lbrkprop_header_3;
- int lookup2 = lbrkprop.level2[lookup1 + index2];
- if (lookup2 >= 0)
- {
- unsigned int index3 = uc & lbrkprop_header_4;
- return lbrkprop.level3[lookup2 + index3];
- }
- }
- }
- return LBP_XX;
-}
-
-/* Table indexed by two line breaking classifications. */
-#define D 1 /* direct break opportunity, empty in table 7.3 of UTR #14 */
-#define I 2 /* indirect break opportunity, '%' in table 7.3 of UTR #14 */
-#define P 3 /* prohibited break, '^' in table 7.3 of UTR #14 */
-static const unsigned char lbrk_table[19][19] = {
- /* after */
- /* ZW IN GL BA BB B2 HY NS OP CL QU EX ID NU IS SY AL PR PO */
-/* ZW */ { P, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, },
-/* IN */ { P, I, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* GL */ { P, I, I, I, I, I, I, I, I, P, I, P, I, I, P, P, I, I, I, },
-/* BA */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* BB */ { P, I, I, I, I, I, I, I, I, P, I, P, I, I, P, P, I, I, I, },
-/* B2 */ { P, D, I, I, D, P, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* HY */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* NS */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* OP */ { P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, },
-/* CL */ { P, D, I, I, D, D, I, P, D, P, I, P, D, D, P, P, D, D, I, },
-/* QU */ { P, I, I, I, I, I, I, I, P, P, I, P, I, I, P, P, I, I, I, },
-/* EX */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* ID */ { P, I, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, I, },
-/* NU */ { P, I, I, I, D, D, I, I, D, P, I, P, D, I, P, P, I, D, I, },
-/* IS */ { P, D, I, I, D, D, I, I, D, P, I, P, D, I, P, P, D, D, D, },
-/* SY */ { P, D, I, I, D, D, I, I, D, P, I, P, D, I, P, P, D, D, D, },
-/* AL */ { P, I, I, I, D, D, I, I, D, P, I, P, D, I, P, P, I, D, D, },
-/* PR */ { P, D, I, I, D, D, I, I, I, P, I, P, I, I, P, P, I, D, D, },
-/* PO */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
-/* "" */
-/* before */
-};
-/* Note: The (B2,B2) entry should probably be D instead of P. */
-/* Note: The (PR,ID) entry should probably be D instead of I. */
-
-void
-u8_possible_linebreaks (const unsigned char *s, size_t n, const char *encoding, char *p)
-{
- int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
- const unsigned char *s_end = s + n;
- int last_prop = LBP_BK; /* line break property of last non-space character */
- char *seen_space = NULL; /* Was a space seen after the last non-space character? */
- char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
-
- /* Don't break inside multibyte characters. */
- memset (p, UC_BREAK_PROHIBITED, n);
-
- while (s < s_end)
- {
- unsigned int uc;
- int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
- int prop = lbrkprop_lookup (uc);
-
- if (prop == LBP_BK)
- {
- /* Mandatory break. */
- *p = UC_BREAK_MANDATORY;
- last_prop = LBP_BK;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- else
- {
- char *q;
-
- /* Resolve property values whose behaviour is not fixed. */
- switch (prop)
- {
- case LBP_AI:
- /* Resolve ambiguous. */
- prop = LBP_AI_REPLACEMENT;
- break;
- case LBP_CB:
- /* This is arbitrary. */
- prop = LBP_ID;
- break;
- case LBP_SA:
- /* We don't handle complex scripts yet.
- Treat LBP_SA like LBP_XX. */
- case LBP_XX:
- /* This is arbitrary. */
- prop = LBP_AL;
- break;
- }
-
- /* Deal with combining characters. */
- q = p;
- if (prop == LBP_CM)
- {
- /* Don't break just before a combining character. */
- *p = UC_BREAK_PROHIBITED;
- /* A combining character turns a preceding space into LBP_AL. */
- if (seen_space != NULL)
- {
- q = seen_space;
- seen_space = seen_space2;
- prop = LBP_AL;
- goto lookup_via_table;
- }
- }
- else if (prop == LBP_SP)
- {
- /* Don't break just before a space. */
- *p = UC_BREAK_PROHIBITED;
- seen_space2 = seen_space;
- seen_space = p;
- }
- else
- {
- lookup_via_table:
- /* prop must be usable as an index for table 7.3 of UTR #14. */
- if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
- abort ();
-
- if (last_prop == LBP_BK)
- {
- /* Don't break at the beginning of a line. */
- *q = UC_BREAK_PROHIBITED;
- }
- else
- {
- switch (lbrk_table [last_prop-1] [prop-1])
- {
- case D:
- *q = UC_BREAK_POSSIBLE;
- break;
- case I:
- *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
- break;
- case P:
- *q = UC_BREAK_PROHIBITED;
- break;
- default:
- abort ();
- }
- }
- last_prop = prop;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- }
-
- s += count;
- p += count;
- }
-}
-
-#ifdef unused
-
-void
-u16_possible_linebreaks (const unsigned short *s, size_t n, const char *encoding, char *p)
-{
- int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
- const unsigned short *s_end = s + n;
- int last_prop = LBP_BK; /* line break property of last non-space character */
- char *seen_space = NULL; /* Was a space seen after the last non-space character? */
- char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
-
- /* Don't break inside multibyte characters. */
- memset (p, UC_BREAK_PROHIBITED, n);
-
- while (s < s_end)
- {
- unsigned int uc;
- int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
- int prop = lbrkprop_lookup (uc);
-
- if (prop == LBP_BK)
- {
- /* Mandatory break. */
- *p = UC_BREAK_MANDATORY;
- last_prop = LBP_BK;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- else
- {
- char *q;
-
- /* Resolve property values whose behaviour is not fixed. */
- switch (prop)
- {
- case LBP_AI:
- /* Resolve ambiguous. */
- prop = LBP_AI_REPLACEMENT;
- break;
- case LBP_CB:
- /* This is arbitrary. */
- prop = LBP_ID;
- break;
- case LBP_SA:
- /* We don't handle complex scripts yet.
- Treat LBP_SA like LBP_XX. */
- case LBP_XX:
- /* This is arbitrary. */
- prop = LBP_AL;
- break;
- }
-
- /* Deal with combining characters. */
- q = p;
- if (prop == LBP_CM)
- {
- /* Don't break just before a combining character. */
- *p = UC_BREAK_PROHIBITED;
- /* A combining character turns a preceding space into LBP_AL. */
- if (seen_space != NULL)
- {
- q = seen_space;
- seen_space = seen_space2;
- prop = LBP_AL;
- goto lookup_via_table;
- }
- }
- else if (prop == LBP_SP)
- {
- /* Don't break just before a space. */
- *p = UC_BREAK_PROHIBITED;
- seen_space2 = seen_space;
- seen_space = p;
- }
- else
- {
- lookup_via_table:
- /* prop must be usable as an index for table 7.3 of UTR #14. */
- if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
- abort ();
-
- if (last_prop == LBP_BK)
- {
- /* Don't break at the beginning of a line. */
- *q = UC_BREAK_PROHIBITED;
- }
- else
- {
- switch (lbrk_table [last_prop-1] [prop-1])
- {
- case D:
- *q = UC_BREAK_POSSIBLE;
- break;
- case I:
- *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
- break;
- case P:
- *q = UC_BREAK_PROHIBITED;
- break;
- default:
- abort ();
- }
- }
- last_prop = prop;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- }
-
- s += count;
- p += count;
- }
-}
-
-void
-u32_possible_linebreaks (const unsigned int *s, size_t n, const char *encoding, char *p)
-{
- int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
- const unsigned int *s_end = s + n;
- int last_prop = LBP_BK; /* line break property of last non-space character */
- char *seen_space = NULL; /* Was a space seen after the last non-space character? */
- char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
-
- while (s < s_end)
- {
- unsigned int uc = *s;
- int prop = lbrkprop_lookup (uc);
-
- if (prop == LBP_BK)
- {
- /* Mandatory break. */
- *p = UC_BREAK_MANDATORY;
- last_prop = LBP_BK;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- else
- {
- char *q;
-
- /* Resolve property values whose behaviour is not fixed. */
- switch (prop)
- {
- case LBP_AI:
- /* Resolve ambiguous. */
- prop = LBP_AI_REPLACEMENT;
- break;
- case LBP_CB:
- /* This is arbitrary. */
- prop = LBP_ID;
- break;
- case LBP_SA:
- /* We don't handle complex scripts yet.
- Treat LBP_SA like LBP_XX. */
- case LBP_XX:
- /* This is arbitrary. */
- prop = LBP_AL;
- break;
- }
-
- /* Deal with combining characters. */
- q = p;
- if (prop == LBP_CM)
- {
- /* Don't break just before a combining character. */
- *p = UC_BREAK_PROHIBITED;
- /* A combining character turns a preceding space into LBP_AL. */
- if (seen_space != NULL)
- {
- q = seen_space;
- seen_space = seen_space2;
- prop = LBP_AL;
- goto lookup_via_table;
- }
- }
- else if (prop == LBP_SP)
- {
- /* Don't break just before a space. */
- *p = UC_BREAK_PROHIBITED;
- seen_space2 = seen_space;
- seen_space = p;
- }
- else
- {
- lookup_via_table:
- /* prop must be usable as an index for table 7.3 of UTR #14. */
- if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
- abort ();
-
- if (last_prop == LBP_BK)
- {
- /* Don't break at the beginning of a line. */
- *q = UC_BREAK_PROHIBITED;
- }
- else
- {
- switch (lbrk_table [last_prop-1] [prop-1])
- {
- case D:
- *q = UC_BREAK_POSSIBLE;
- break;
- case I:
- *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
- break;
- case P:
- *q = UC_BREAK_PROHIBITED;
- break;
- default:
- abort ();
- }
- }
- last_prop = prop;
- seen_space = NULL;
- seen_space2 = NULL;
- }
- }
-
- s++;
- p++;
- }
-}
-
-#endif
-
-
-/* Choose the best line breaks, assuming the uc_width function.
- Return the column after the end of the string. */
-
-int
-u8_width_linebreaks (const unsigned char *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p)
-{
- const unsigned char *s_end;
- char *last_p;
- int last_column;
- int piece_width;
-
- u8_possible_linebreaks (s, n, encoding, p);
-
- s_end = s + n;
- last_p = NULL;
- last_column = start_column;
- piece_width = 0;
- while (s < s_end)
- {
- unsigned int uc;
- int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
-
- /* Respect the override. */
- if (o != NULL && *o != UC_BREAK_UNDEFINED)
- *p = *o;
-
- if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
- {
- /* An atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
- }
-
- if (*p == UC_BREAK_MANDATORY)
- {
- /* uc is a line break character. */
- /* Start a new piece at column 0. */
- last_p = NULL;
- last_column = 0;
- piece_width = 0;
- }
- else
- {
- /* uc is not a line break character. */
- int w;
-
- if (*p == UC_BREAK_POSSIBLE)
- {
- /* Start a new piece. */
- last_p = p;
- last_column += piece_width;
- piece_width = 0;
- /* No line break for the moment, may be turned into
- UC_BREAK_POSSIBLE later, via last_p. */
- }
-
- *p = UC_BREAK_PROHIBITED;
-
- w = uc_width (uc, encoding);
- if (w >= 0) /* ignore control characters in the string */
- piece_width += w;
- }
-
- s += count;
- p += count;
- if (o != NULL)
- o += count;
- }
-
- /* The last atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width + at_end_columns > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
-
- return last_column + piece_width;
-}
-
-#ifdef unused
-
-int
-u16_width_linebreaks (const unsigned short *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p)
-{
- const unsigned short *s_end;
- char *last_p;
- int last_column;
- int piece_width;
-
- u16_possible_linebreaks (s, n, encoding, p);
-
- s_end = s + n;
- last_p = NULL;
- last_column = start_column;
- piece_width = 0;
- while (s < s_end)
- {
- unsigned int uc;
- int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
-
- /* Respect the override. */
- if (o != NULL && *o != UC_BREAK_UNDEFINED)
- *p = *o;
-
- if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
- {
- /* An atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
- }
-
- if (*p == UC_BREAK_MANDATORY)
- {
- /* uc is a line break character. */
- /* Start a new piece at column 0. */
- last_p = NULL;
- last_column = 0;
- piece_width = 0;
- }
- else
- {
- /* uc is not a line break character. */
- int w;
-
- if (*p == UC_BREAK_POSSIBLE)
- {
- /* Start a new piece. */
- last_p = p;
- last_column += piece_width;
- piece_width = 0;
- /* No line break for the moment, may be turned into
- UC_BREAK_POSSIBLE later, via last_p. */
- }
-
- *p = UC_BREAK_PROHIBITED;
-
- w = uc_width (uc, encoding);
- if (w >= 0) /* ignore control characters in the string */
- piece_width += w;
- }
-
- s += count;
- p += count;
- if (o != NULL)
- o += count;
- }
-
- /* The last atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width + at_end_columns > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
-
- return last_column + piece_width;
-}
-
-int
-u32_width_linebreaks (const unsigned int *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p)
-{
- const unsigned int *s_end;
- char *last_p;
- int last_column;
- int piece_width;
-
- u32_possible_linebreaks (s, n, encoding, p);
-
- s_end = s + n;
- last_p = NULL;
- last_column = start_column;
- piece_width = 0;
- while (s < s_end)
- {
- unsigned int uc = *s;
-
- /* Respect the override. */
- if (o != NULL && *o != UC_BREAK_UNDEFINED)
- *p = *o;
-
- if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
- {
- /* An atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
- }
-
- if (*p == UC_BREAK_MANDATORY)
- {
- /* uc is a line break character. */
- /* Start a new piece at column 0. */
- last_p = NULL;
- last_column = 0;
- piece_width = 0;
- }
- else
- {
- /* uc is not a line break character. */
- int w;
-
- if (*p == UC_BREAK_POSSIBLE)
- {
- /* Start a new piece. */
- last_p = p;
- last_column += piece_width;
- piece_width = 0;
- /* No line break for the moment, may be turned into
- UC_BREAK_POSSIBLE later, via last_p. */
- }
-
- *p = UC_BREAK_PROHIBITED;
-
- w = uc_width (uc, encoding);
- if (w >= 0) /* ignore control characters in the string */
- piece_width += w;
- }
-
- s++;
- p++;
- if (o != NULL)
- o++;
- }
-
- /* The last atomic piece of text ends here. */
- if (last_p != NULL && last_column + piece_width + at_end_columns > width)
- {
- /* Insert a line break. */
- *last_p = UC_BREAK_POSSIBLE;
- last_column = 0;
- }
-
- return last_column + piece_width;
-}
-
-#endif
-
-
-#ifdef TEST1
-
-#include <stdio.h>
-
-/* Read the contents of an input stream, and return it, terminated with a NUL
- byte. */
-char *
-read_file (FILE *stream)
-{
-#define BUFSIZE 4096
- char *buf = NULL;
- int alloc = 0;
- int size = 0;
- int count;
-
- while (! feof (stream))
- {
- if (size + BUFSIZE > alloc)
- {
- alloc = alloc + alloc / 2;
- if (alloc < size + BUFSIZE)
- alloc = size + BUFSIZE;
- buf = realloc (buf, alloc);
- if (buf == NULL)
- {
- fprintf (stderr, "out of memory\n");
- exit (1);
- }
- }
- count = fread (buf + size, 1, BUFSIZE, stream);
- if (count == 0)
- {
- if (ferror (stream))
- {
- perror ("fread");
- exit (1);
- }
- }
- else
- size += count;
- }
- buf = realloc (buf, size + 1);
- if (buf == NULL)
- {
- fprintf (stderr, "out of memory\n");
- exit (1);
- }
- buf[size] = '\0';
- return buf;
-#undef BUFSIZE
-}
-
-int
-main (int argc, char * argv[])
-{
- if (argc == 1)
- {
- /* Display all the break opportunities in the input string. */
- char *input = read_file (stdin);
- int length = strlen (input);
- char *breaks = malloc (length);
- int i;
-
- u8_possible_linebreaks ((unsigned char *) input, length, "UTF-8", breaks);
-
- for (i = 0; i < length; i++)
- {
- switch (breaks[i])
- {
- case UC_BREAK_POSSIBLE:
- /* U+2027 in UTF-8 encoding */
- putc (0xe2, stdout); putc (0x80, stdout); putc (0xa7, stdout);
- break;
- case UC_BREAK_MANDATORY:
- /* U+21B2 (or U+21B5) in UTF-8 encoding */
- putc (0xe2, stdout); putc (0x86, stdout); putc (0xb2, stdout);
- break;
- case UC_BREAK_PROHIBITED:
- break;
- default:
- abort ();
- }
- putc (input[i], stdout);
- }
-
- free (breaks);
-
- return 0;
- }
- else if (argc == 2)
- {
- /* Insert line breaks for a given width. */
- int width = atoi (argv[1]);
- char *input = read_file (stdin);
- int length = strlen (input);
- char *breaks = malloc (length);
- int i;
-
- u8_width_linebreaks ((unsigned char *) input, length, width, 0, 0, NULL, "UTF-8", breaks);
-
- for (i = 0; i < length; i++)
- {
- switch (breaks[i])
- {
- case UC_BREAK_POSSIBLE:
- putc ('\n', stdout);
- break;
- case UC_BREAK_MANDATORY:
- break;
- case UC_BREAK_PROHIBITED:
- break;
- default:
- abort ();
- }
- putc (input[i], stdout);
- }
-
- free (breaks);
-
- return 0;
- }
- else
- return 1;
-}
-
-#endif /* TEST1 */
-
-
-/* Now the same thing with an arbitrary encoding.
-
- We convert the input string to Unicode.
-
- The standardized Unicode encodings are UTF-8, UCS-2, UCS-4, UTF-16,
- UTF-16BE, UTF-16LE, UTF-7. UCS-2 supports only characters up to
- \U0000FFFF. UTF-16 and variants support only characters up to
- \U0010FFFF. UTF-7 is way too complex and not supported by glibc-2.1.
- UCS-4 specification leaves doubts about endianness and byte order mark.
- glibc currently interprets it as big endian without byte order mark,
- but this is not backed by an RFC. So we use UTF-8. It supports
- characters up to \U7FFFFFFF and is unambiguously defined. */
-
-#if HAVE_ICONV
-
-#include <iconv.h>
-#include <errno.h>
-
-/* Luckily, the encoding's name is platform independent. */
-#define UTF8_NAME "UTF-8"
-
-/* Return the length of a string after conversion through an iconv_t. */
-static size_t
-iconv_string_length (iconv_t cd, const char *s, size_t n)
-{
-#define TMPBUFSIZE 4096
- size_t count = 0;
- char tmpbuf[TMPBUFSIZE];
- const char *inptr = s;
- size_t insize = n;
- while (insize > 0)
- {
- char *outptr = tmpbuf;
- size_t outsize = TMPBUFSIZE;
- size_t res = iconv (cd, (ICONV_CONST char **) &inptr, &insize, &outptr, &outsize);
- if (res == (size_t)(-1) && errno != E2BIG)
- return (size_t)(-1);
- count += outptr - tmpbuf;
- }
- /* Avoid glibc-2.1 bug and Solaris 7 through 9 bug. */
-#if defined _LIBICONV_VERSION \
- || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
- {
- char *outptr = tmpbuf;
- size_t outsize = TMPBUFSIZE;
- size_t res = iconv (cd, NULL, NULL, &outptr, &outsize);
- if (res == (size_t)(-1))
- return (size_t)(-1);
- count += outptr - tmpbuf;
- }
- /* Return to the initial state. */
- iconv (cd, NULL, NULL, NULL, NULL);
-#endif
- return count;
-#undef TMPBUFSIZE
-}
-
-static void
-iconv_string_keeping_offsets (iconv_t cd, const char *s, size_t n,
- size_t *offtable, char *t, size_t m)
-{
- size_t i;
- const char *s_end;
- const char *inptr;
- char *outptr;
- size_t outsize;
- /* Avoid glibc-2.1 bug. */
-#if !defined _LIBICONV_VERSION && (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1)
- const size_t extra = 1;
-#else
- const size_t extra = 0;
-#endif
-
- for (i = 0; i < n; i++)
- offtable[i] = (size_t)(-1);
-
- s_end = s + n;
- inptr = s;
- outptr = t;
- outsize = m + extra;
- while (inptr < s_end)
- {
- const char *saved_inptr;
- size_t insize;
- size_t res;
-
- offtable[inptr - s] = outptr - t;
-
- saved_inptr = inptr;
- res = (size_t)(-1);
- for (insize = 1; inptr + insize <= s_end; insize++)
- {
- res = iconv (cd, (ICONV_CONST char **) &inptr, &insize, &outptr, &outsize);
- if (!(res == (size_t)(-1) && errno == EINVAL))
- break;
- /* We expect that no input bytes have been consumed so far. */
- if (inptr != saved_inptr)
- abort ();
- }
- /* After we verified the convertibility and computed the translation's
- size m, there shouldn't be any conversion error here. */
- if (res == (size_t)(-1))
- abort ();
- }
- /* Avoid glibc-2.1 bug and Solaris 7 bug. */
-#if defined _LIBICONV_VERSION \
- || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
- if (iconv (cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1))
- abort ();
-#endif
- /* We should have produced exactly m output bytes. */
- if (outsize != extra)
- abort ();
-}
-
-#endif /* HAVE_ICONV */
-
-#if C_CTYPE_ASCII
-
-/* Tests whether a string is entirely ASCII. Returns 1 if yes.
- Returns 0 if the string is in an 8-bit encoding or an ISO-2022 encoding. */
-static int
-is_all_ascii (const char *s, size_t n)
-{
- for (; n > 0; s++, n--)
- {
- unsigned char c = (unsigned char) *s;
-
- if (!(c_isprint (c) || c_isspace (c)))
- return 0;
- }
- return 1;
-}
-
-#endif /* C_CTYPE_ASCII */
-
-#if defined unused || defined TEST2
-
-void
-mbs_possible_linebreaks (const char *s, size_t n, const char *encoding,
- char *p)
-{
- if (n == 0)
- return;
- if (is_utf8_encoding (encoding))
- u8_possible_linebreaks ((const unsigned char *) s, n, encoding, p);
- else
- {
-#if HAVE_ICONV
- iconv_t to_utf8;
- /* Avoid glibc-2.1 bug with EUC-KR. */
-# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
- if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0))
- to_utf8 = (iconv_t)(-1);
- else
-# endif
- /* Avoid Solaris 9 bug with GB2312, EUC-TW, BIG5, BIG5-HKSCS, GBK,
- GB18030. */
-# if defined __sun && !defined _LIBICONV_VERSION
- if ( STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
- || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
- || STREQ (encoding, "BIG5-HKSCS", 'B', 'I', 'G', '5', '-', 'H', 'K', 'S', 'C')
- || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
- || STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
- to_utf8 = (iconv_t)(-1);
- else
-# endif
- to_utf8 = iconv_open (UTF8_NAME, encoding);
- if (to_utf8 != (iconv_t)(-1))
- {
- /* Determine the length of the resulting UTF-8 string. */
- size_t m = iconv_string_length (to_utf8, s, n);
- if (m != (size_t)(-1))
- {
- /* Convert the string to UTF-8 and build a translation table
- from offsets into s to offsets into the translated string. */
- size_t memory_size = xsum3 (xtimes (n, sizeof (size_t)), m, m);
- char *memory =
- (size_in_bounds_p (memory_size) ? malloc (memory_size) : NULL);
- if (memory != NULL)
- {
- size_t *offtable = (size_t *) memory;
- char *t = (char *) (offtable + n);
- char *q = (char *) (t + m);
- size_t i;
-
- iconv_string_keeping_offsets (to_utf8, s, n, offtable, t, m);
-
- /* Determine the possible line breaks of the UTF-8 string. */
- u8_possible_linebreaks ((const unsigned char *) t, m, encoding, q);
-
- /* Translate the result back to the original string. */
- memset (p, UC_BREAK_PROHIBITED, n);
- for (i = 0; i < n; i++)
- if (offtable[i] != (size_t)(-1))
- p[i] = q[offtable[i]];
-
- free (memory);
- iconv_close (to_utf8);
- return;
- }
- }
- iconv_close (to_utf8);
- }
-#endif
- /* Impossible to convert. */
-#if C_CTYPE_ASCII
- if (is_all_ascii (s, n))
- {
- /* ASCII is a subset of UTF-8. */
- u8_possible_linebreaks ((const unsigned char *) s, n, encoding, p);
- return;
- }
-#endif
- /* We have a non-ASCII string and cannot convert it.
- Don't produce line breaks except those already present in the
- input string. All we assume here is that the encoding is
- minimally ASCII compatible. */
- {
- const char *s_end = s + n;
- while (s < s_end)
- {
- *p = (*s == '\n' ? UC_BREAK_MANDATORY : UC_BREAK_PROHIBITED);
- s++;
- p++;
- }
- }
- }
-}
-
-#endif
-
-int
-mbs_width_linebreaks (const char *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p)
-{
- if (n == 0)
- return start_column;
- if (is_utf8_encoding (encoding))
- return u8_width_linebreaks ((const unsigned char *) s, n, width, start_column, at_end_columns, o, encoding, p);
- else
- {
-#if HAVE_ICONV
- iconv_t to_utf8;
- /* Avoid glibc-2.1 bug with EUC-KR. */
-# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
- if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0))
- to_utf8 = (iconv_t)(-1);
- else
-# endif
- /* Avoid Solaris 9 bug with GB2312, EUC-TW, BIG5, BIG5-HKSCS, GBK,
- GB18030. */
-# if defined __sun && !defined _LIBICONV_VERSION
- if ( STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
- || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
- || STREQ (encoding, "BIG5-HKSCS", 'B', 'I', 'G', '5', '-', 'H', 'K', 'S', 'C')
- || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
- || STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
- to_utf8 = (iconv_t)(-1);
- else
-# endif
- to_utf8 = iconv_open (UTF8_NAME, encoding);
- if (to_utf8 != (iconv_t)(-1))
- {
- /* Determine the length of the resulting UTF-8 string. */
- size_t m = iconv_string_length (to_utf8, s, n);
- if (m != (size_t)(-1))
- {
- /* Convert the string to UTF-8 and build a translation table
- from offsets into s to offsets into the translated string. */
- size_t memory_size =
- xsum4 (xtimes (n, sizeof (size_t)), m, m,
- (o != NULL ? m : 0));
- char *memory =
- (char *)
- (size_in_bounds_p (memory_size) ? malloc (memory_size) : NULL);
- if (memory != NULL)
- {
- size_t *offtable = (size_t *) memory;
- char *t = (char *) (offtable + n);
- char *q = (char *) (t + m);
- char *o8 = (o != NULL ? (char *) (q + m) : NULL);
- int res_column;
- size_t i;
-
- iconv_string_keeping_offsets (to_utf8, s, n, offtable, t, m);
-
- /* Translate the overrides to the UTF-8 string. */
- if (o != NULL)
- {
- memset (o8, UC_BREAK_UNDEFINED, m);
- for (i = 0; i < n; i++)
- if (offtable[i] != (size_t)(-1))
- o8[offtable[i]] = o[i];
- }
-
- /* Determine the line breaks of the UTF-8 string. */
- res_column =
- u8_width_linebreaks ((const unsigned char *) t, m, width, start_column, at_end_columns, o8, encoding, q);
-
- /* Translate the result back to the original string. */
- memset (p, UC_BREAK_PROHIBITED, n);
- for (i = 0; i < n; i++)
- if (offtable[i] != (size_t)(-1))
- p[i] = q[offtable[i]];
-
- free (memory);
- iconv_close (to_utf8);
- return res_column;
- }
- }
- iconv_close (to_utf8);
- }
-#endif
- /* Impossible to convert. */
-#if C_CTYPE_ASCII
- if (is_all_ascii (s, n))
- {
- /* ASCII is a subset of UTF-8. */
- return u8_width_linebreaks ((const unsigned char *) s, n, width, start_column, at_end_columns, o, encoding, p);
- }
-#endif
- /* We have a non-ASCII string and cannot convert it.
- Don't produce line breaks except those already present in the
- input string. All we assume here is that the encoding is
- minimally ASCII compatible. */
- {
- const char *s_end = s + n;
- while (s < s_end)
- {
- *p = ((o != NULL && *o == UC_BREAK_MANDATORY) || *s == '\n'
- ? UC_BREAK_MANDATORY
- : UC_BREAK_PROHIBITED);
- s++;
- p++;
- if (o != NULL)
- o++;
- }
- /* We cannot compute widths in this case. */
- return start_column;
- }
- }
-}
-
-
-#ifdef TEST2
-
-#include <stdio.h>
-#include <locale.h>
-
-/* Read the contents of an input stream, and return it, terminated with a NUL
- byte. */
-char *
-read_file (FILE *stream)
-{
-#define BUFSIZE 4096
- char *buf = NULL;
- int alloc = 0;
- int size = 0;
- int count;
-
- while (! feof (stream))
- {
- if (size + BUFSIZE > alloc)
- {
- alloc = alloc + alloc / 2;
- if (alloc < size + BUFSIZE)
- alloc = size + BUFSIZE;
- buf = realloc (buf, alloc);
- if (buf == NULL)
- {
- fprintf (stderr, "out of memory\n");
- exit (1);
- }
- }
- count = fread (buf + size, 1, BUFSIZE, stream);
- if (count == 0)
- {
- if (ferror (stream))
- {
- perror ("fread");
- exit (1);
- }
- }
- else
- size += count;
- }
- buf = realloc (buf, size + 1);
- if (buf == NULL)
- {
- fprintf (stderr, "out of memory\n");
- exit (1);
- }
- buf[size] = '\0';
- return buf;
-#undef BUFSIZE
-}
-
-int
-main (int argc, char * argv[])
-{
- setlocale (LC_CTYPE, "");
- if (argc == 1)
- {
- /* Display all the break opportunities in the input string. */
- char *input = read_file (stdin);
- int length = strlen (input);
- char *breaks = malloc (length);
- int i;
-
- mbs_possible_linebreaks (input, length, locale_charset (), breaks);
-
- for (i = 0; i < length; i++)
- {
- switch (breaks[i])
- {
- case UC_BREAK_POSSIBLE:
- putc ('|', stdout);
- break;
- case UC_BREAK_MANDATORY:
- break;
- case UC_BREAK_PROHIBITED:
- break;
- default:
- abort ();
- }
- putc (input[i], stdout);
- }
-
- free (breaks);
-
- return 0;
- }
- else if (argc == 2)
- {
- /* Insert line breaks for a given width. */
- int width = atoi (argv[1]);
- char *input = read_file (stdin);
- int length = strlen (input);
- char *breaks = malloc (length);
- int i;
-
- mbs_width_linebreaks (input, length, width, 0, 0, NULL, locale_charset (), breaks);
-
- for (i = 0; i < length; i++)
- {
- switch (breaks[i])
- {
- case UC_BREAK_POSSIBLE:
- putc ('\n', stdout);
- break;
- case UC_BREAK_MANDATORY:
- break;
- case UC_BREAK_PROHIBITED:
- break;
- default:
- abort ();
- }
- putc (input[i], stdout);
- }
-
- free (breaks);
-
- return 0;
- }
- else
- return 1;
-}
-
-#endif /* TEST2 */
Deleted: tuxmath/trunk/linebreak/linebreak.h
===================================================================
--- tuxmath/trunk/linebreak/linebreak.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/linebreak.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,94 +0,0 @@
-/* linebreak.h - line breaking of Unicode strings
- Copyright (C) 2001-2003, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <haible at clisp.cons.org>, 2001.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef _LINEBREAK_H
-#define _LINEBREAK_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Line breaking. */
-
-enum {
- UC_BREAK_UNDEFINED,
- UC_BREAK_PROHIBITED,
- UC_BREAK_POSSIBLE,
- UC_BREAK_MANDATORY,
- UC_BREAK_HYPHENATION
-};
-
-/* Determine the line break points in S, and store the result at p[0..n-1].
- p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character.
- p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between
- s[i-1] and s[i].
- p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be
- inserted between s[i-1] and s[i]. But beware of language dependent
- hyphenation rules.
- p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated.
- */
-extern void u8_possible_linebreaks (const unsigned char *s, size_t n,
- const char *encoding,
- char *p);
-extern void u16_possible_linebreaks (const unsigned short *s, size_t n,
- const char *encoding,
- char *p);
-extern void u32_possible_linebreaks (const unsigned int *s, size_t n,
- const char *encoding,
- char *p);
-extern void mbs_possible_linebreaks (const char *s, size_t n,
- const char *encoding,
- char *p);
-
-/* Choose the best line breaks, assuming the uc_width function.
- Return the column after the end of the string.
- o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes
- precedence over p[i] as returned by the *_possible_linebreaks function.
- */
-extern int
- u8_width_linebreaks (const unsigned char *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p);
-extern int
- u16_width_linebreaks (const unsigned short *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p);
-extern int
- u32_width_linebreaks (const unsigned int *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p);
-extern int
- mbs_width_linebreaks (const char *s, size_t n,
- int width, int start_column, int at_end_columns,
- const char *o, const char *encoding,
- char *p);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LINEBREAK_H */
Deleted: tuxmath/trunk/linebreak/localcharset.h
===================================================================
--- tuxmath/trunk/linebreak/localcharset.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/localcharset.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,41 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- This file is part of the GNU CHARSET Library.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef _LOCALCHARSET_H
-#define _LOCALCHARSET_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-extern const char * locale_charset (void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LOCALCHARSET_H */
Deleted: tuxmath/trunk/linebreak/streq.h
===================================================================
--- tuxmath/trunk/linebreak/streq.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/streq.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,176 +0,0 @@
-/* Optimized string comparison.
- Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno at clisp.org>. */
-
-#ifndef _GL_STREQ_H
-#define _GL_STREQ_H
-
-#include <string.h>
-
-/* STREQ allows to optimize string comparison with a small literal string.
- STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- is semantically equivalent to
- strcmp (s, "EUC-KR") == 0
- just faster. */
-
-/* Help GCC to generate good code for string comparisons with
- immediate strings. */
-#if defined (__GNUC__) && defined (__OPTIMIZE__)
-
-static inline int
-streq9 (const char *s1, const char *s2)
-{
- return strcmp (s1 + 9, s2 + 9) == 0;
-}
-
-static inline int
-streq8 (const char *s1, const char *s2, char s28)
-{
- if (s1[8] == s28)
- {
- if (s28 == 0)
- return 1;
- else
- return streq9 (s1, s2);
- }
- else
- return 0;
-}
-
-static inline int
-streq7 (const char *s1, const char *s2, char s27, char s28)
-{
- if (s1[7] == s27)
- {
- if (s27 == 0)
- return 1;
- else
- return streq8 (s1, s2, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
-{
- if (s1[6] == s26)
- {
- if (s26 == 0)
- return 1;
- else
- return streq7 (s1, s2, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
-{
- if (s1[5] == s25)
- {
- if (s25 == 0)
- return 1;
- else
- return streq6 (s1, s2, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[4] == s24)
- {
- if (s24 == 0)
- return 1;
- else
- return streq5 (s1, s2, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[3] == s23)
- {
- if (s23 == 0)
- return 1;
- else
- return streq4 (s1, s2, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[2] == s22)
- {
- if (s22 == 0)
- return 1;
- else
- return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[1] == s21)
- {
- if (s21 == 0)
- return 1;
- else
- return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[0] == s20)
- {
- if (s20 == 0)
- return 1;
- else
- return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
- streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
-
-#else
-
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
- (strcmp (s1, s2) == 0)
-
-#endif
-
-#endif /* _GL_STREQ_H */
Deleted: tuxmath/trunk/linebreak/unistr/u16-mbtouc-aux.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u16-mbtouc-aux.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u16-mbtouc-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,51 +0,0 @@
-/* Conversion UTF-16 to UCS-4.
- Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if HAVE_INLINE
-
-int
-u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
- if (c < 0xdc00)
- {
- if (n >= 2)
- {
- if (s[1] >= 0xdc00 && s[1] < 0xe000)
- {
- *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- }
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe-aux.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe-aux.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,55 +0,0 @@
-/* Conversion UTF-16 to UCS-4.
- Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if HAVE_INLINE
-
-int
-u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
-#if CONFIG_UNICODE_SAFETY
- if (c < 0xdc00)
-#endif
- {
- if (n >= 2)
- {
-#if CONFIG_UNICODE_SAFETY
- if (s[1] >= 0xdc00 && s[1] < 0xe000)
-#endif
- {
- *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- }
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u16-mbtouc-unsafe.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,60 +0,0 @@
-/* Look at first character in UTF-16 string.
- Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if !HAVE_INLINE
-
-int
-u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
- if (c < 0xd800 || c >= 0xe000)
- {
- *puc = c;
- return 1;
- }
-#if CONFIG_UNICODE_SAFETY
- if (c < 0xdc00)
-#endif
- {
- if (n >= 2)
- {
-#if CONFIG_UNICODE_SAFETY
- if (s[1] >= 0xdc00 && s[1] < 0xe000)
-#endif
- {
- *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- }
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u16-mbtouc.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u16-mbtouc.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u16-mbtouc.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,56 +0,0 @@
-/* Look at first character in UTF-16 string.
- Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if !HAVE_INLINE
-
-int
-u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
- if (c < 0xd800 || c >= 0xe000)
- {
- *puc = c;
- return 1;
- }
- if (c < 0xdc00)
- {
- if (n >= 2)
- {
- if (s[1] >= 0xdc00 && s[1] < 0xe000)
- {
- *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- }
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u8-mbtouc-aux.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-mbtouc-aux.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-mbtouc-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,158 +0,0 @@
-/* Conversion UTF-8 to UCS-4.
- Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if HAVE_INLINE
-
-int
-u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (n >= 2)
- {
- if ((s[1] ^ 0x80) < 0x40)
- {
- *puc = ((unsigned int) (c & 0x1f) << 6)
- | (unsigned int) (s[1] ^ 0x80);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf0)
- {
- if (n >= 3)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)
- && (c != 0xed || s[1] < 0xa0))
- {
- *puc = ((unsigned int) (c & 0x0f) << 12)
- | ((unsigned int) (s[1] ^ 0x80) << 6)
- | (unsigned int) (s[2] ^ 0x80);
- return 3;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf8)
- {
- if (n >= 4)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)
-#if 1
- && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
-#endif
- )
- {
- *puc = ((unsigned int) (c & 0x07) << 18)
- | ((unsigned int) (s[1] ^ 0x80) << 12)
- | ((unsigned int) (s[2] ^ 0x80) << 6)
- | (unsigned int) (s[3] ^ 0x80);
- return 4;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#if 0
- else if (c < 0xfc)
- {
- if (n >= 5)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88))
- {
- *puc = ((unsigned int) (c & 0x03) << 24)
- | ((unsigned int) (s[1] ^ 0x80) << 18)
- | ((unsigned int) (s[2] ^ 0x80) << 12)
- | ((unsigned int) (s[3] ^ 0x80) << 6)
- | (unsigned int) (s[4] ^ 0x80);
- return 5;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xfe)
- {
- if (n >= 6)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84))
- {
- *puc = ((unsigned int) (c & 0x01) << 30)
- | ((unsigned int) (s[1] ^ 0x80) << 24)
- | ((unsigned int) (s[2] ^ 0x80) << 18)
- | ((unsigned int) (s[3] ^ 0x80) << 12)
- | ((unsigned int) (s[4] ^ 0x80) << 6)
- | (unsigned int) (s[5] ^ 0x80);
- return 6;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#endif
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe-aux.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe-aux.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,168 +0,0 @@
-/* Conversion UTF-8 to UCS-4.
- Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if HAVE_INLINE
-
-int
-u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (n >= 2)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40)
-#endif
- {
- *puc = ((unsigned int) (c & 0x1f) << 6)
- | (unsigned int) (s[1] ^ 0x80);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf0)
- {
- if (n >= 3)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)
- && (c != 0xed || s[1] < 0xa0))
-#endif
- {
- *puc = ((unsigned int) (c & 0x0f) << 12)
- | ((unsigned int) (s[1] ^ 0x80) << 6)
- | (unsigned int) (s[2] ^ 0x80);
- return 3;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf8)
- {
- if (n >= 4)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)
-#if 1
- && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
-#endif
- )
-#endif
- {
- *puc = ((unsigned int) (c & 0x07) << 18)
- | ((unsigned int) (s[1] ^ 0x80) << 12)
- | ((unsigned int) (s[2] ^ 0x80) << 6)
- | (unsigned int) (s[3] ^ 0x80);
- return 4;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#if 0
- else if (c < 0xfc)
- {
- if (n >= 5)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88))
-#endif
- {
- *puc = ((unsigned int) (c & 0x03) << 24)
- | ((unsigned int) (s[1] ^ 0x80) << 18)
- | ((unsigned int) (s[2] ^ 0x80) << 12)
- | ((unsigned int) (s[3] ^ 0x80) << 6)
- | (unsigned int) (s[4] ^ 0x80);
- return 5;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xfe)
- {
- if (n >= 6)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84))
-#endif
- {
- *puc = ((unsigned int) (c & 0x01) << 30)
- | ((unsigned int) (s[1] ^ 0x80) << 24)
- | ((unsigned int) (s[2] ^ 0x80) << 18)
- | ((unsigned int) (s[3] ^ 0x80) << 12)
- | ((unsigned int) (s[4] ^ 0x80) << 6)
- | (unsigned int) (s[5] ^ 0x80);
- return 6;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#endif
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-mbtouc-unsafe.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,173 +0,0 @@
-/* Look at first character in UTF-8 string.
- Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if !HAVE_INLINE
-
-int
-u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c < 0x80)
- {
- *puc = c;
- return 1;
- }
- else if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (n >= 2)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40)
-#endif
- {
- *puc = ((unsigned int) (c & 0x1f) << 6)
- | (unsigned int) (s[1] ^ 0x80);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf0)
- {
- if (n >= 3)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)
- && (c != 0xed || s[1] < 0xa0))
-#endif
- {
- *puc = ((unsigned int) (c & 0x0f) << 12)
- | ((unsigned int) (s[1] ^ 0x80) << 6)
- | (unsigned int) (s[2] ^ 0x80);
- return 3;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf8)
- {
- if (n >= 4)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)
-#if 1
- && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
-#endif
- )
-#endif
- {
- *puc = ((unsigned int) (c & 0x07) << 18)
- | ((unsigned int) (s[1] ^ 0x80) << 12)
- | ((unsigned int) (s[2] ^ 0x80) << 6)
- | (unsigned int) (s[3] ^ 0x80);
- return 4;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#if 0
- else if (c < 0xfc)
- {
- if (n >= 5)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88))
-#endif
- {
- *puc = ((unsigned int) (c & 0x03) << 24)
- | ((unsigned int) (s[1] ^ 0x80) << 18)
- | ((unsigned int) (s[2] ^ 0x80) << 12)
- | ((unsigned int) (s[3] ^ 0x80) << 6)
- | (unsigned int) (s[4] ^ 0x80);
- return 5;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xfe)
- {
- if (n >= 6)
- {
-#if CONFIG_UNICODE_SAFETY
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84))
-#endif
- {
- *puc = ((unsigned int) (c & 0x01) << 30)
- | ((unsigned int) (s[1] ^ 0x80) << 24)
- | ((unsigned int) (s[2] ^ 0x80) << 18)
- | ((unsigned int) (s[3] ^ 0x80) << 12)
- | ((unsigned int) (s[4] ^ 0x80) << 6)
- | (unsigned int) (s[5] ^ 0x80);
- return 6;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#endif
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u8-mbtouc.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-mbtouc.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-mbtouc.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,163 +0,0 @@
-/* Look at first character in UTF-8 string.
- Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2001.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if !HAVE_INLINE
-
-int
-u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c < 0x80)
- {
- *puc = c;
- return 1;
- }
- else if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (n >= 2)
- {
- if ((s[1] ^ 0x80) < 0x40)
- {
- *puc = ((unsigned int) (c & 0x1f) << 6)
- | (unsigned int) (s[1] ^ 0x80);
- return 2;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf0)
- {
- if (n >= 3)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)
- && (c != 0xed || s[1] < 0xa0))
- {
- *puc = ((unsigned int) (c & 0x0f) << 12)
- | ((unsigned int) (s[1] ^ 0x80) << 6)
- | (unsigned int) (s[2] ^ 0x80);
- return 3;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xf8)
- {
- if (n >= 4)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)
-#if 1
- && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
-#endif
- )
- {
- *puc = ((unsigned int) (c & 0x07) << 18)
- | ((unsigned int) (s[1] ^ 0x80) << 12)
- | ((unsigned int) (s[2] ^ 0x80) << 6)
- | (unsigned int) (s[3] ^ 0x80);
- return 4;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#if 0
- else if (c < 0xfc)
- {
- if (n >= 5)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88))
- {
- *puc = ((unsigned int) (c & 0x03) << 24)
- | ((unsigned int) (s[1] ^ 0x80) << 18)
- | ((unsigned int) (s[2] ^ 0x80) << 12)
- | ((unsigned int) (s[3] ^ 0x80) << 6)
- | (unsigned int) (s[4] ^ 0x80);
- return 5;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
- else if (c < 0xfe)
- {
- if (n >= 6)
- {
- if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84))
- {
- *puc = ((unsigned int) (c & 0x01) << 30)
- | ((unsigned int) (s[1] ^ 0x80) << 24)
- | ((unsigned int) (s[2] ^ 0x80) << 18)
- | ((unsigned int) (s[3] ^ 0x80) << 12)
- | ((unsigned int) (s[4] ^ 0x80) << 6)
- | (unsigned int) (s[5] ^ 0x80);
- return 6;
- }
- /* invalid multibyte character */
- }
- else
- {
- /* incomplete multibyte character */
- *puc = 0xfffd;
- return n;
- }
- }
-#endif
- }
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr/u8-uctomb-aux.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-uctomb-aux.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-uctomb-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,69 +0,0 @@
-/* Conversion UCS-4 to UTF-8.
- Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2002.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-int
-u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n)
-{
- int count;
-
- if (uc < 0x80)
- /* The case n >= 1 is already handled by the caller. */
- return -2;
- else if (uc < 0x800)
- count = 2;
- else if (uc < 0x10000)
- {
- if (uc < 0xd800 || uc >= 0xe000)
- count = 3;
- else
- return -1;
- }
-#if 0
- else if (uc < 0x200000)
- count = 4;
- else if (uc < 0x4000000)
- count = 5;
- else if (uc <= 0x7fffffff)
- count = 6;
-#else
- else if (uc < 0x110000)
- count = 4;
-#endif
- else
- return -1;
-
- if (n < count)
- return -2;
-
- switch (count) /* note: code falls through cases! */
- {
-#if 0
- case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
- case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
-#endif
- case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
- case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
- case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
- /*case 1:*/ s[0] = uc;
- }
- return count;
-}
Deleted: tuxmath/trunk/linebreak/unistr/u8-uctomb.c
===================================================================
--- tuxmath/trunk/linebreak/unistr/u8-uctomb.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr/u8-uctomb.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,83 +0,0 @@
-/* Store a character in UTF-8 string.
- Copyright (C) 2002, 2005-2006 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2002.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "unistr.h"
-
-#if !HAVE_INLINE
-
-int
-u8_uctomb (uint8_t *s, ucs4_t uc, int n)
-{
- if (uc < 0x80)
- {
- if (n > 0)
- {
- s[0] = uc;
- return 1;
- }
- /* else return -2, below. */
- }
- else
- {
- int count;
-
- if (uc < 0x800)
- count = 2;
- else if (uc < 0x10000)
- {
- if (uc < 0xd800 || uc >= 0xe000)
- count = 3;
- else
- return -1;
- }
-#if 0
- else if (uc < 0x200000)
- count = 4;
- else if (uc < 0x4000000)
- count = 5;
- else if (uc <= 0x7fffffff)
- count = 6;
-#else
- else if (uc < 0x110000)
- count = 4;
-#endif
- else
- return -1;
-
- if (n >= count)
- {
- switch (count) /* note: code falls through cases! */
- {
-#if 0
- case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
- case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
-#endif
- case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
- case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
- case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
- /*case 1:*/ s[0] = uc;
- }
- return count;
- }
- }
- return -2;
-}
-
-#endif
Deleted: tuxmath/trunk/linebreak/unistr.h
===================================================================
--- tuxmath/trunk/linebreak/unistr.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unistr.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,661 +0,0 @@
-/* Elementary Unicode string functions.
- Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef _UNISTR_H
-#define _UNISTR_H
-
-#include "unitypes.h"
-
-/* Get bool. */
-#include <stdbool.h>
-
-/* Get size_t. */
-#include <stddef.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Conventions:
-
- All functions prefixed with u8_ operate on UTF-8 encoded strings.
- Their unit is an uint8_t (1 byte).
-
- All functions prefixed with u16_ operate on UTF-16 encoded strings.
- Their unit is an uint16_t (a 2-byte word).
-
- All functions prefixed with u32_ operate on UCS-4 encoded strings.
- Their unit is an uint32_t (a 4-byte word).
-
- All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
- n units.
-
- All arguments starting with "str" and the arguments of functions starting
- with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string
- which terminates at the first NUL unit. This termination unit is
- considered part of the string for all memory allocation purposes, but
- is not considered part of the string for all other logical purposes.
-
- Functions returning a string result take a (resultbuf, lengthp) argument
- pair. If resultbuf is not NULL and the result fits into *lengthp units,
- it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly
- allocated string is returned. In both cases, *lengthp is set to the
- length (number of units) of the returned string. In case of error,
- NULL is returned and errno is set. */
-
-
-/* Elementary string checks. */
-
-/* Check whether an UTF-8 string is well-formed.
- Return NULL if valid, or a pointer to the first invalid unit otherwise. */
-extern const uint8_t *
- u8_check (const uint8_t *s, size_t n);
-
-/* Check whether an UTF-16 string is well-formed.
- Return NULL if valid, or a pointer to the first invalid unit otherwise. */
-extern const uint16_t *
- u16_check (const uint16_t *s, size_t n);
-
-/* Check whether an UCS-4 string is well-formed.
- Return NULL if valid, or a pointer to the first invalid unit otherwise. */
-extern const uint32_t *
- u32_check (const uint32_t *s, size_t n);
-
-
-/* Elementary string conversions. */
-
-/* Convert an UTF-8 string to an UTF-16 string. */
-extern uint16_t *
- u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf,
- size_t *lengthp);
-
-/* Convert an UTF-8 string to an UCS-4 string. */
-extern uint32_t *
- u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf,
- size_t *lengthp);
-
-/* Convert an UTF-16 string to an UTF-8 string. */
-extern uint8_t *
- u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf,
- size_t *lengthp);
-
-/* Convert an UTF-16 string to an UCS-4 string. */
-extern uint32_t *
- u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf,
- size_t *lengthp);
-
-/* Convert an UCS-4 string to an UTF-8 string. */
-extern uint8_t *
- u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf,
- size_t *lengthp);
-
-/* Convert an UCS-4 string to an UTF-16 string. */
-extern uint16_t *
- u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf,
- size_t *lengthp);
-
-
-/* Elementary string functions. */
-
-/* Return the length (number of units) of the first character in S, which is
- no longer than N. Return 0 if it is the NUL character. Return -1 upon
- failure. */
-/* Similar to mblen(), except that s must not be NULL. */
-extern int
- u8_mblen (const uint8_t *s, size_t n);
-extern int
- u16_mblen (const uint16_t *s, size_t n);
-extern int
- u32_mblen (const uint32_t *s, size_t n);
-
-/* Return the length (number of units) of the first character in S, putting
- its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
- and an appropriate number of units is returned.
- The number of available units, N, must be > 0. */
-/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0,
- and the NUL character is not treated specially. */
-/* The variants with _safe suffix are safe, even if the library is compiled
- without --enable-safety. */
-
-#ifdef GNULIB_UNISTR_U8_MBTOUC_UNSAFE
-# if !HAVE_INLINE
-extern int
- u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n);
-# else
-extern int
- u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n);
-static inline int
-u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c < 0x80)
- {
- *puc = c;
- return 1;
- }
- else
- return u8_mbtouc_unsafe_aux (puc, s, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U16_MBTOUC_UNSAFE
-# if !HAVE_INLINE
-extern int
- u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n);
-# else
-extern int
- u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n);
-static inline int
-u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
- if (c < 0xd800 || c >= 0xe000)
- {
- *puc = c;
- return 1;
- }
- else
- return u16_mbtouc_unsafe_aux (puc, s, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U32_MBTOUC_UNSAFE
-# if !HAVE_INLINE
-extern int
- u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n);
-# else
-static inline int
-u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n)
-{
- uint32_t c = *s;
-
-# if CONFIG_UNICODE_SAFETY
- if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
-# endif
- *puc = c;
-# if CONFIG_UNICODE_SAFETY
- else
- /* invalid multibyte character */
- *puc = 0xfffd;
-# endif
- return 1;
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U8_MBTOUC
-# if !HAVE_INLINE
-extern int
- u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n);
-# else
-extern int
- u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n);
-static inline int
-u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
-{
- uint8_t c = *s;
-
- if (c < 0x80)
- {
- *puc = c;
- return 1;
- }
- else
- return u8_mbtouc_aux (puc, s, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U16_MBTOUC
-# if !HAVE_INLINE
-extern int
- u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n);
-# else
-extern int
- u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n);
-static inline int
-u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
-{
- uint16_t c = *s;
-
- if (c < 0xd800 || c >= 0xe000)
- {
- *puc = c;
- return 1;
- }
- else
- return u16_mbtouc_aux (puc, s, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U32_MBTOUC
-# if !HAVE_INLINE
-extern int
- u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n);
-# else
-static inline int
-u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n)
-{
- uint32_t c = *s;
-
- if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
- *puc = c;
- else
- /* invalid multibyte character */
- *puc = 0xfffd;
- return 1;
-}
-# endif
-#endif
-
-/* Return the length (number of units) of the first character in S, putting
- its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
- and -1 is returned for an invalid sequence of units, -2 is returned for an
- incomplete sequence of units.
- The number of available units, N, must be > 0. */
-/* Similar to u*_mbtouc(), except that the return value gives more details
- about the failure, similar to mbrtowc(). */
-
-#ifdef GNULIB_UNISTR_U8_MBTOUCR
-extern int
- u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n);
-#endif
-
-#ifdef GNULIB_UNISTR_U16_MBTOUCR
-extern int
- u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n);
-#endif
-
-#ifdef GNULIB_UNISTR_U32_MBTOUCR
-extern int
- u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n);
-#endif
-
-/* Put the multibyte character represented by UC in S, returning its
- length. Return -1 upon failure, -2 if the number of available units, N,
- is too small. The latter case cannot occur if N >= 6/2/1, respectively. */
-/* Similar to wctomb(), except that s must not be NULL, and the argument n
- must be specified. */
-
-#ifdef GNULIB_UNISTR_U8_UCTOMB
-/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */
-extern int
- u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
-# if !HAVE_INLINE
-extern int
- u8_uctomb (uint8_t *s, ucs4_t uc, int n);
-# else
-static inline int
-u8_uctomb (uint8_t *s, ucs4_t uc, int n)
-{
- if (uc < 0x80 && n > 0)
- {
- s[0] = uc;
- return 1;
- }
- else
- return u8_uctomb_aux (s, uc, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U16_UCTOMB
-/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */
-extern int
- u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
-# if !HAVE_INLINE
-extern int
- u16_uctomb (uint16_t *s, ucs4_t uc, int n);
-# else
-static inline int
-u16_uctomb (uint16_t *s, ucs4_t uc, int n)
-{
- if (uc < 0xd800 && n > 0)
- {
- s[0] = uc;
- return 1;
- }
- else
- return u16_uctomb_aux (s, uc, n);
-}
-# endif
-#endif
-
-#ifdef GNULIB_UNISTR_U32_UCTOMB
-# if !HAVE_INLINE
-extern int
- u32_uctomb (uint32_t *s, ucs4_t uc, int n);
-# else
-static inline int
-u32_uctomb (uint32_t *s, ucs4_t uc, int n)
-{
- if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
- {
- if (n > 0)
- {
- *s = uc;
- return 1;
- }
- else
- return -2;
- }
- else
- return -1;
-}
-# endif
-#endif
-
-/* Copy N units from SRC to DEST. */
-/* Similar to memcpy(). */
-extern uint8_t *
- u8_cpy (uint8_t *dest, const uint8_t *src, size_t n);
-extern uint16_t *
- u16_cpy (uint16_t *dest, const uint16_t *src, size_t n);
-extern uint32_t *
- u32_cpy (uint32_t *dest, const uint32_t *src, size_t n);
-
-/* Copy N units from SRC to DEST, guaranteeing correct behavior for
- overlapping memory areas. */
-/* Similar to memmove(). */
-extern uint8_t *
- u8_move (uint8_t *dest, const uint8_t *src, size_t n);
-extern uint16_t *
- u16_move (uint16_t *dest, const uint16_t *src, size_t n);
-extern uint32_t *
- u32_move (uint32_t *dest, const uint32_t *src, size_t n);
-
-/* Set the first N characters of S to UC. UC should be a character that
- occupies only 1 unit. */
-/* Similar to memset(). */
-extern uint8_t *
- u8_set (uint8_t *s, ucs4_t uc, size_t n);
-extern uint16_t *
- u16_set (uint16_t *s, ucs4_t uc, size_t n);
-extern uint32_t *
- u32_set (uint32_t *s, ucs4_t uc, size_t n);
-
-/* Compare S1 and S2, each of length N. */
-/* Similar to memcmp(). */
-extern int
- u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n);
-extern int
- u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n);
-extern int
- u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n);
-
-/* Search the string at S for UC. */
-/* Similar to memchr(). */
-extern uint8_t *
- u8_chr (const uint8_t *s, size_t n, ucs4_t uc);
-extern uint16_t *
- u16_chr (const uint16_t *s, size_t n, ucs4_t uc);
-extern uint32_t *
- u32_chr (const uint32_t *s, size_t n, ucs4_t uc);
-
-/* Count the number of Unicode characters in the N units from S. */
-/* Similar to mbsnlen(). */
-extern size_t
- u8_mbsnlen (const uint8_t *s, size_t n);
-extern size_t
- u16_mbsnlen (const uint16_t *s, size_t n);
-extern size_t
- u32_mbsnlen (const uint32_t *s, size_t n);
-
-/* Elementary string functions with memory allocation. */
-
-/* Make a freshly allocated copy of S, of length N. */
-extern uint8_t *
- u8_cpy_alloc (const uint8_t *s, size_t n);
-extern uint16_t *
- u16_cpy_alloc (const uint16_t *s, size_t n);
-extern uint32_t *
- u32_cpy_alloc (const uint32_t *s, size_t n);
-
-/* Elementary string functions on NUL terminated strings. */
-
-/* Return the length (number of units) of the first character in S.
- Return 0 if it is the NUL character. Return -1 upon failure. */
-extern int
- u8_strmblen (const uint8_t *s);
-extern int
- u16_strmblen (const uint16_t *s);
-extern int
- u32_strmblen (const uint32_t *s);
-
-/* Return the length (number of units) of the first character in S, putting
- its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL
- character. Return -1 upon failure. */
-extern int
- u8_strmbtouc (ucs4_t *puc, const uint8_t *s);
-extern int
- u16_strmbtouc (ucs4_t *puc, const uint16_t *s);
-extern int
- u32_strmbtouc (ucs4_t *puc, const uint32_t *s);
-
-/* Forward iteration step. Advances the pointer past the next character,
- or returns NULL if the end of the string has been reached. Puts the
- character's 'ucs4_t' representation in *PUC. */
-extern const uint8_t *
- u8_next (ucs4_t *puc, const uint8_t *s);
-extern const uint16_t *
- u16_next (ucs4_t *puc, const uint16_t *s);
-extern const uint32_t *
- u32_next (ucs4_t *puc, const uint32_t *s);
-
-/* Backward iteration step. Advances the pointer to point to the previous
- character, or returns NULL if the beginning of the string had been reached.
- Puts the character's 'ucs4_t' representation in *PUC. */
-extern const uint8_t *
- u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start);
-extern const uint16_t *
- u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start);
-extern const uint32_t *
- u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start);
-
-/* Return the number of units in S. */
-/* Similar to strlen(), wcslen(). */
-extern size_t
- u8_strlen (const uint8_t *s);
-extern size_t
- u16_strlen (const uint16_t *s);
-extern size_t
- u32_strlen (const uint32_t *s);
-
-/* Return the number of units in S, but at most MAXLEN. */
-/* Similar to strnlen(), wcsnlen(). */
-extern size_t
- u8_strnlen (const uint8_t *s, size_t maxlen);
-extern size_t
- u16_strnlen (const uint16_t *s, size_t maxlen);
-extern size_t
- u32_strnlen (const uint32_t *s, size_t maxlen);
-
-/* Copy SRC to DEST. */
-/* Similar to strcpy(), wcscpy(). */
-extern uint8_t *
- u8_strcpy (uint8_t *dest, const uint8_t *src);
-extern uint16_t *
- u16_strcpy (uint16_t *dest, const uint16_t *src);
-extern uint32_t *
- u32_strcpy (uint32_t *dest, const uint32_t *src);
-
-/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */
-/* Similar to stpcpy(). */
-extern uint8_t *
- u8_stpcpy (uint8_t *dest, const uint8_t *src);
-extern uint16_t *
- u16_stpcpy (uint16_t *dest, const uint16_t *src);
-extern uint32_t *
- u32_stpcpy (uint32_t *dest, const uint32_t *src);
-
-/* Copy no more than N units of SRC to DEST. */
-/* Similar to strncpy(), wcsncpy(). */
-extern uint8_t *
- u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n);
-extern uint16_t *
- u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n);
-extern uint32_t *
- u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n);
-
-/* Copy no more than N characters of SRC to DEST, returning the address of
- the last character written into DEST. */
-/* Similar to stpncpy(). */
-extern uint8_t *
- u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n);
-extern uint16_t *
- u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n);
-extern uint32_t *
- u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n);
-
-/* Append SRC onto DEST. */
-/* Similar to strcat(), wcscat(). */
-extern uint8_t *
- u8_strcat (uint8_t *dest, const uint8_t *src);
-extern uint16_t *
- u16_strcat (uint16_t *dest, const uint16_t *src);
-extern uint32_t *
- u32_strcat (uint32_t *dest, const uint32_t *src);
-
-/* Append no more than N units of SRC onto DEST. */
-/* Similar to strncat(), wcsncat(). */
-extern uint8_t *
- u8_strncat (uint8_t *dest, const uint8_t *src, size_t n);
-extern uint16_t *
- u16_strncat (uint16_t *dest, const uint16_t *src, size_t n);
-extern uint32_t *
- u32_strncat (uint32_t *dest, const uint32_t *src, size_t n);
-
-/* Compare S1 and S2. */
-/* Similar to strcmp(), wcscmp(). */
-extern int
- u8_strcmp (const uint8_t *s1, const uint8_t *s2);
-extern int
- u16_strcmp (const uint16_t *s1, const uint16_t *s2);
-extern int
- u32_strcmp (const uint32_t *s1, const uint32_t *s2);
-
-/* Compare no more than N units of S1 and S2. */
-/* Similar to strncmp(), wcsncmp(). */
-extern int
- u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n);
-extern int
- u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n);
-extern int
- u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n);
-
-/* Duplicate S, returning an identical malloc'd string. */
-/* Similar to strdup(), wcsdup(). */
-extern uint8_t *
- u8_strdup (const uint8_t *s);
-extern uint16_t *
- u16_strdup (const uint16_t *s);
-extern uint32_t *
- u32_strdup (const uint32_t *s);
-
-/* Find the first occurrence of UC in STR. */
-/* Similar to strchr(), wcschr(). */
-extern uint8_t *
- u8_strchr (const uint8_t *str, ucs4_t uc);
-extern uint16_t *
- u16_strchr (const uint16_t *str, ucs4_t uc);
-extern uint32_t *
- u32_strchr (const uint32_t *str, ucs4_t uc);
-
-/* Find the last occurrence of UC in STR. */
-/* Similar to strrchr(), wcsrchr(). */
-extern uint8_t *
- u8_strrchr (const uint8_t *str, ucs4_t uc);
-extern uint16_t *
- u16_strrchr (const uint16_t *str, ucs4_t uc);
-extern uint32_t *
- u32_strrchr (const uint32_t *str, ucs4_t uc);
-
-/* Return the length of the initial segment of STR which consists entirely
- of Unicode characters not in REJECT. */
-/* Similar to strcspn(), wcscspn(). */
-extern size_t
- u8_strcspn (const uint8_t *str, const uint8_t *reject);
-extern size_t
- u16_strcspn (const uint16_t *str, const uint16_t *reject);
-extern size_t
- u32_strcspn (const uint32_t *str, const uint32_t *reject);
-
-/* Return the length of the initial segment of STR which consists entirely
- of Unicode characters in ACCEPT. */
-/* Similar to strspn(), wcsspn(). */
-extern size_t
- u8_strspn (const uint8_t *str, const uint8_t *accept);
-extern size_t
- u16_strspn (const uint16_t *str, const uint16_t *accept);
-extern size_t
- u32_strspn (const uint32_t *str, const uint32_t *accept);
-
-/* Find the first occurrence in STR of any character in ACCEPT. */
-/* Similar to strpbrk(), wcspbrk(). */
-extern uint8_t *
- u8_strpbrk (const uint8_t *str, const uint8_t *accept);
-extern uint16_t *
- u16_strpbrk (const uint16_t *str, const uint16_t *accept);
-extern uint32_t *
- u32_strpbrk (const uint32_t *str, const uint32_t *accept);
-
-/* Find the first occurrence of NEEDLE in HAYSTACK. */
-/* Similar to strstr(), wcsstr(). */
-extern uint8_t *
- u8_strstr (const uint8_t *haystack, const uint8_t *needle);
-extern uint16_t *
- u16_strstr (const uint16_t *haystack, const uint16_t *needle);
-extern uint32_t *
- u32_strstr (const uint32_t *haystack, const uint32_t *needle);
-
-/* Test whether STR starts with PREFIX. */
-extern bool
- u8_startswith (const uint8_t *str, const uint8_t *prefix);
-extern bool
- u16_startswith (const uint16_t *str, const uint16_t *prefix);
-extern bool
- u32_startswith (const uint32_t *str, const uint32_t *prefix);
-
-/* Test whether STR ends with SUFFIX. */
-extern bool
- u8_endswith (const uint8_t *str, const uint8_t *suffix);
-extern bool
- u16_endswith (const uint16_t *str, const uint16_t *suffix);
-extern bool
- u32_endswith (const uint32_t *str, const uint32_t *suffix);
-
-/* Divide STR into tokens separated by characters in DELIM.
- This interface is actually more similar to wcstok than to strtok. */
-/* Similar to strtok_r(), wcstok(). */
-extern uint8_t *
- u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr);
-extern uint16_t *
- u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr);
-extern uint32_t *
- u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UNISTR_H */
Deleted: tuxmath/trunk/linebreak/unitypes.h
===================================================================
--- tuxmath/trunk/linebreak/unitypes.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/unitypes.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,26 +0,0 @@
-/* Elementary types for the GNU UniString library.
- Copyright (C) 2002, 2005-2006 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef _UNITYPES_H
-#define _UNITYPES_H
-
-/* Get uint8_t, uint16_t, uint32_t. */
-#include <stdint.h>
-
-/* Type representing a Unicode character. */
-typedef uint32_t ucs4_t;
-
-#endif /* _UNITYPES_H */
Deleted: tuxmath/trunk/linebreak/uniwidth/cjk.h
===================================================================
--- tuxmath/trunk/linebreak/uniwidth/cjk.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/uniwidth/cjk.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,37 +0,0 @@
-/* Test for CJK encoding.
- Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2002.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "streq.h"
-
-static int
-is_cjk_encoding (const char *encoding)
-{
- if (0
- /* Legacy Japanese encodings */
- || STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
- /* Legacy Chinese encodings */
- || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
- || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
- || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
- /* Legacy Korean encodings */
- || STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- || STREQ (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
- || STREQ (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
- return 1;
- return 0;
-}
Deleted: tuxmath/trunk/linebreak/uniwidth/width.c
===================================================================
--- tuxmath/trunk/linebreak/uniwidth/width.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/uniwidth/width.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,323 +0,0 @@
-/* Determine display width of Unicode character.
- Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno at clisp.org>, 2002.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "uniwidth.h"
-
-#include "cjk.h"
-
-/*
- * Non-spacing attribute table.
- * Consists of:
- * - Non-spacing characters; generated from PropList.txt or
- * "grep '^[^;]*;[^;]*;[^;]*;[^;]*;NSM;' UnicodeData.txt"
- * - Format control characters; generated from
- * "grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt"
- * - Zero width characters; generated from
- * "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
- */
-static const unsigned char nonspacing_table_data[22*64] = {
- /* 0x0000-0x01ff */
- 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
- 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, /* 0x0080-0x00bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00c0-0x00ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0100-0x013f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0140-0x017f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0180-0x01bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c0-0x01ff */
- /* 0x0200-0x03ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0200-0x023f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0240-0x027f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0280-0x02bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02c0-0x02ff */
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x0300-0x033f */
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x0340-0x037f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0380-0x03bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03c0-0x03ff */
- /* 0x0400-0x05ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0400-0x043f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0440-0x047f */
- 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0480-0x04bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04c0-0x04ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0500-0x053f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0540-0x057f */
- 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
- 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
- /* 0x0600-0x07ff */
- 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
- 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
- 0x00, 0x00, 0xc0, 0xff, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
- 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
- 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
- 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x07c0-0x07ff */
- /* 0x0800-0x09ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0800-0x083f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0900-0x093f */
- 0xfe, 0x21, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
- 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x09c0-0x09ff */
- /* 0x0a00-0x0bff */
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a00-0x0a3f */
- 0x86, 0x39, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0x0a40-0x0a7f */
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a80-0x0abf */
- 0xbe, 0x21, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0ac0-0x0aff */
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0x0b00-0x0b3f */
- 0x0e, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b40-0x0b7f */
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b80-0x0bbf */
- 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0bc0-0x0bff */
- /* 0x0c00-0x0dff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
- 0xc1, 0x3d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0c40-0x0c7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
- 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0cc0-0x0cff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
- 0x0e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d40-0x0d7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d80-0x0dbf */
- 0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0dc0-0x0dff */
- /* 0x0e00-0x0fff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x07, /* 0x0e00-0x0e3f */
- 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0e40-0x0e7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1b, /* 0x0e80-0x0ebf */
- 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0ec0-0x0eff */
- 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02, /* 0x0f00-0x0f3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, /* 0x0f40-0x0f7f */
- 0xdf, 0x00, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0fc0-0x0fff */
- /* 0x1000-0x11ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc5, 0x02, /* 0x1000-0x103f */
- 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* 0x1040-0x107f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c0-0x10ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1100-0x113f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1140-0x117f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1180-0x11bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11c0-0x11ff */
- /* 0x1200-0x13ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1200-0x123f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1240-0x127f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1280-0x12bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12c0-0x12ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1300-0x133f */
- 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1380-0x13bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13c0-0x13ff */
- /* 0x1600-0x17ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1600-0x163f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1640-0x167f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1680-0x16bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16c0-0x16ff */
- 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, /* 0x1700-0x173f */
- 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, /* 0x1740-0x177f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f, /* 0x1780-0x17bf */
- 0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x17c0-0x17ff */
- /* 0x1800-0x19ff */
- 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1840-0x187f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18c0-0x18ff */
- 0x00, 0x00, 0x00, 0x00, 0x87, 0x0f, 0x04, 0x0e, /* 0x1900-0x193f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1940-0x197f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1980-0x19bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
- /* 0x1a00-0x1bff */
- 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a40-0x1a7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
- 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
- 0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1b80-0x1bbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc0-0x1bff */
- /* 0x1c00-0x1dff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c00-0x1c3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1cc0-0x1cff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
- 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x1dc0-0x1dff */
- /* 0x2000-0x21ff */
- 0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
- 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2080-0x20bf */
- 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x20c0-0x20ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2100-0x213f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2140-0x217f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2180-0x21bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x21c0-0x21ff */
- /* 0x3000-0x31ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, /* 0x3000-0x303f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3040-0x307f */
- 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0x3080-0x30bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30c0-0x30ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3100-0x313f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3140-0x317f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3180-0x31bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x31c0-0x31ff */
- /* 0xa800-0xa9ff */
- 0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8c0-0xa8ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa900-0xa93f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa980-0xa9bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
- /* 0xfa00-0xfbff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa00-0xfa3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa40-0xfa7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa80-0xfabf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfac0-0xfaff */
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, /* 0xfb00-0xfb3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb40-0xfb7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb80-0xfbbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfbc0-0xfbff */
- /* 0xfe00-0xffff */
- 0xff, 0xff, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, /* 0xfe00-0xfe3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe40-0xfe7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe80-0xfebf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xfec0-0xfeff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff00-0xff3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff40-0xff7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff80-0xffbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, /* 0xffc0-0xffff */
- /* 0x10a00-0x10bff */
- 0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0x10a00-0x10a3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a40-0x10a7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a80-0x10abf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b00-0x10b3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
- /* 0x1d000-0x1d1ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d080-0x1d0bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d0c0-0x1d0ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d100-0x1d13f */
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf8, /* 0x1d140-0x1d17f */
- 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x1d180-0x1d1bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d1c0-0x1d1ff */
- /* 0x1d200-0x1d3ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d200-0x1d23f */
- 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d240-0x1d27f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d280-0x1d2bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d2c0-0x1d2ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d300-0x1d33f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d340-0x1d37f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d380-0x1d3bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0x1d3c0-0x1d3ff */
-};
-static const signed char nonspacing_table_ind[240] = {
- 0, 1, 2, 3, 4, 5, 6, 7, /* 0x0000-0x0fff */
- 8, 9, -1, 10, 11, 12, 13, -1, /* 0x1000-0x1fff */
- 14, -1, -1, -1, -1, -1, -1, -1, /* 0x2000-0x2fff */
- 15, -1, -1, -1, -1, -1, -1, -1, /* 0x3000-0x3fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x4000-0x4fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x5000-0x5fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x6000-0x6fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7000-0x7fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x8000-0x8fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x9000-0x9fff */
- -1, -1, -1, -1, 16, -1, -1, -1, /* 0xa000-0xafff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb000-0xbfff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc000-0xcfff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd000-0xdfff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
- -1, -1, -1, -1, -1, 17, -1, 18, /* 0xf000-0xffff */
- -1, -1, -1, -1, -1, 19, -1, -1, /* 0x10000-0x10fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x16000-0x16fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
- 20, 21, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
-};
-
-/* Determine number of column positions required for UC. */
-int
-uc_width (ucs4_t uc, const char *encoding)
-{
- /* Test for non-spacing or control character. */
- if ((uc >> 9) < 240)
- {
- int ind = nonspacing_table_ind[uc >> 9];
- if (ind >= 0)
- if ((nonspacing_table_data[64*ind + ((uc >> 3) & 63)] >> (uc & 7)) & 1)
- {
- if (uc > 0 && uc < 0xa0)
- return -1;
- else
- return 0;
- }
- }
- else if ((uc >> 9) == (0xe0000 >> 9))
- {
- if (uc >= 0xe0100)
- {
- if (uc <= 0xe01ef)
- return 0;
- }
- else
- {
- if (uc >= 0xe0020 ? uc <= 0xe007f : uc == 0xe0001)
- return 0;
- }
- }
- /* Test for double-width character.
- * Generated from "grep '^....;[WF]' EastAsianWidth.txt"
- * and "grep '^....;[^WF]' EastAsianWidth.txt"
- */
- if (uc >= 0x1100
- && ((uc < 0x1160) /* Hangul Jamo */
- || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
- || (uc >= 0x2e80 && uc < 0xa4d0 /* CJK ... Yi */
- && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
- || (uc >= 0xac00 && uc < 0xd7a4) /* Hangul Syllables */
- || (uc >= 0xf900 && uc < 0xfb00) /* CJK Compatibility Ideographs */
- || (uc >= 0xfe10 && uc < 0xfe20) /* Presentation Forms for Vertical */
- || (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
- || (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
- || (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
- || (uc >= 0x20000 && uc <= 0x2a6d6) /* CJK */
- || (uc >= 0x2f800 && uc <= 0x2fa1d) /* CJK Compatibility Ideographs */
- ) )
- return 2;
- /* In ancient CJK encodings, Cyrillic and most other characters are
- double-width as well. */
- if (uc >= 0x00A1 && uc < 0xFF61 && uc != 0x20A9
- && is_cjk_encoding (encoding))
- return 2;
- return 1;
-}
Deleted: tuxmath/trunk/linebreak/uniwidth.h
===================================================================
--- tuxmath/trunk/linebreak/uniwidth.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/uniwidth.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,64 +0,0 @@
-/* Display width functions.
- Copyright (C) 2001-2002, 2005, 2007 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef _UNIWIDTH_H
-#define _UNIWIDTH_H
-
-#include "unitypes.h"
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get locale_charset() declaration. */
-#include "localcharset.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Display width. */
-
-/* These functions are locale dependent. The encoding argument identifies
- the encoding (e.g. "ISO-8859-2" for Polish). */
-
-/* Determine number of column positions required for UC. */
-extern int
- uc_width (ucs4_t uc, const char *encoding);
-
-/* Determine number of column positions required for first N units
- (or fewer if S ends before this) in S. */
-extern int
- u8_width (const uint8_t *s, size_t n, const char *encoding);
-extern int
- u16_width (const uint16_t *s, size_t n, const char *encoding);
-extern int
- u32_width (const uint32_t *s, size_t n, const char *encoding);
-
-/* Determine number of column positions required for S. */
-extern int
- u8_strwidth (const uint8_t *s, const char *encoding);
-extern int
- u16_strwidth (const uint16_t *s, const char *encoding);
-extern int
- u32_strwidth (const uint32_t *s, const char *encoding);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UNIWIDTH_H */
Deleted: tuxmath/trunk/linebreak/xsize.h
===================================================================
--- tuxmath/trunk/linebreak/xsize.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/linebreak/xsize.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -1,108 +0,0 @@
-/* xsize.h -- Checked size_t computations.
-
- Copyright (C) 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-#ifndef _XSIZE_H
-#define _XSIZE_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get SIZE_MAX. */
-#include <limits.h>
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-/* The size of memory objects is often computed through expressions of
- type size_t. Example:
- void* p = malloc (header_size + n * element_size).
- These computations can lead to overflow. When this happens, malloc()
- returns a piece of memory that is way too small, and the program then
- crashes while attempting to fill the memory.
- To avoid this, the functions and macros in this file check for overflow.
- The convention is that SIZE_MAX represents overflow.
- malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
- implementation that uses mmap --, it's recommended to use size_overflow_p()
- or size_in_bounds_p() before invoking malloc().
- The example thus becomes:
- size_t size = xsum (header_size, xtimes (n, element_size));
- void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-*/
-
-/* Convert an arbitrary value >= 0 to type size_t. */
-#define xcast_size_t(N) \
- ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-
-/* Sum of two sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum (size_t size1, size_t size2)
-{
- size_t sum = size1 + size2;
- return (sum >= size1 ? sum : SIZE_MAX);
-}
-
-/* Sum of three sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum3 (size_t size1, size_t size2, size_t size3)
-{
- return xsum (xsum (size1, size2), size3);
-}
-
-/* Sum of four sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-{
- return xsum (xsum (xsum (size1, size2), size3), size4);
-}
-
-/* Maximum of two sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xmax (size_t size1, size_t size2)
-{
- /* No explicit check is needed here, because for any n:
- max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
- return (size1 >= size2 ? size1 : size2);
-}
-
-/* Multiplication of a count with an element size, with overflow check.
- The count must be >= 0 and the element size must be > 0.
- This is a macro, not an inline function, so that it works correctly even
- when N is of a wider tupe and N > SIZE_MAX. */
-#define xtimes(N, ELSIZE) \
- ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
-
-/* Check for overflow. */
-#define size_overflow_p(SIZE) \
- ((SIZE) == SIZE_MAX)
-/* Check against overflow. */
-#define size_in_bounds_p(SIZE) \
- ((SIZE) != SIZE_MAX)
-
-#endif /* _XSIZE_H */
Modified: tuxmath/trunk/po/ar.po
===================================================================
--- tuxmath/trunk/po/ar.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/ar.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -2,7 +2,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-02-15 03:00+0100\n"
"Last-Translator: Caroline Ford <caroline.ford.work at googlemail.com>\n"
"Language-Team: \n"
@@ -25,191 +25,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "اكواخ البطاريق من"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -739,3 +654,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "قسمة الأرقام الموجية والسالبة"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "اكواخ البطاريق من"
Modified: tuxmath/trunk/po/cs.po
===================================================================
--- tuxmath/trunk/po/cs.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/cs.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2007-11-12 20:54+0100\n"
"Last-Translator: JardaK <krejci at zstenis.com>\n"
"Language-Team: czech <cs at li.org>\n"
@@ -30,190 +30,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/de.po
===================================================================
--- tuxmath/trunk/po/de.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/de.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-05-02 16:08+0200\n"
"Last-Translator: Lars Vogdt <lars at linux-schulserver.de>\n"
"MIME-Version: 1.0\n"
@@ -27,191 +27,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "die Iglus der Pinguine vor den "
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -742,3 +657,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "Division von positiven und negativen Zahlen"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "die Iglus der Pinguine vor den "
Modified: tuxmath/trunk/po/en at boldquot.po
===================================================================
--- tuxmath/trunk/po/en at boldquot.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/en at boldquot.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -31,8 +31,8 @@
msgstr ""
"Project-Id-Version: tuxmath 1.7.1\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
-"PO-Revision-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
+"PO-Revision-Date: 2009-02-06 11:04-0600\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -53,190 +53,126 @@
msgstr "I'm so glad you've come!"
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
-msgstr "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr "are falling from the sky, and are melting"
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr "the penguins' igloos. To save their homes,"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr "we need you to find the secret code that"
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr " will zap each comet."
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr "Do your best!"
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr "Mission Two: Smart Scout"
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
-msgstr "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
-msgstr "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
-msgstr "for keeping an eye out for trouble..."
-
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr "...like what's happening right now!"
-
-#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
-msgstr "The TakeAways have come, and they're sending"
-
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr "new, trickier comets against the penguins!"
-
-#: src/campaign.h:50
+#: src/campaign.h:42
msgid "But you can save them!"
msgstr "But you can save them!"
-#: src/campaign.h:56
+#: src/campaign.h:48
msgid "Mission Three: Royal Ranger"
msgstr "Mission Three: Royal Ranger"
-#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
-msgstr "You've done it again! The Penguin Emperor has"
+#: src/campaign.h:50
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
+msgstr ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr "chosen you to join his team of Rangers that"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
-#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
-msgstr "help protect the city. We're sending you"
-
-#: src/campaign.h:61
-msgid "there now..."
-msgstr "there now..."
-
-#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
-msgstr "...oh no! Now the Emperor himself is under attack,"
-
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr "from new types of comets: these problems are"
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr "multiplying! To fight these, you need great"
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr "skill. We think you can do it. Join the"
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr "Rangers and help save the city!"
-
-#: src/campaign.h:73
+#: src/campaign.h:58
msgid "Mission Four: Imperial Ace"
msgstr "Mission Four: Imperial Ace"
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr "You did it! The Emperor wants to thank you"
+#: src/campaign.h:60
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr "in person. We are taking you to his ice palace"
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
+msgstr ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr "for a great honor: you will become"
+#: src/campaign.h:63
+msgid "Now is no time for resting; the city needs your help!"
+msgstr "Now is no time for resting; the city needs your help!"
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr "the Imperial Ace!"
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr "But right in the middle of the ceremony,"
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr "a new attack from the land of Division starts!"
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr "Now is no time for resting; the city"
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr "needs your help!"
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr "Final Mission: Computing Commando"
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
-msgstr "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr "these attacks are coming from a secret"
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr "base, and they need you to go fight"
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr "the final battle. They also give you"
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr "this clue: first do multiplication and"
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr "division, and then do addition and subtraction."
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr "I hope that hint helps!"
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
-msgstr "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
+msgstr "This is it! You can stop these attacks forever, Commando!"
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr "forever, Commando!"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr "Congratulations! You win!"
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr "Round"
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr "Sorry, try again!"
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr "Mission accomplished. The galaxy is safe!"
Modified: tuxmath/trunk/po/en at quot.po
===================================================================
--- tuxmath/trunk/po/en at quot.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/en at quot.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -28,8 +28,8 @@
msgstr ""
"Project-Id-Version: tuxmath 1.7.1\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
-"PO-Revision-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
+"PO-Revision-Date: 2009-02-06 11:04-0600\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -50,190 +50,126 @@
msgstr "I'm so glad you've come!"
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
-msgstr "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr "are falling from the sky, and are melting"
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr "the penguins' igloos. To save their homes,"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr "we need you to find the secret code that"
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr " will zap each comet."
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr "Do your best!"
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr "Mission Two: Smart Scout"
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
-msgstr "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
-msgstr "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
-msgstr "for keeping an eye out for trouble..."
-
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr "...like what's happening right now!"
-
-#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
-msgstr "The TakeAways have come, and they're sending"
-
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr "new, trickier comets against the penguins!"
-
-#: src/campaign.h:50
+#: src/campaign.h:42
msgid "But you can save them!"
msgstr "But you can save them!"
-#: src/campaign.h:56
+#: src/campaign.h:48
msgid "Mission Three: Royal Ranger"
msgstr "Mission Three: Royal Ranger"
-#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
-msgstr "You've done it again! The Penguin Emperor has"
+#: src/campaign.h:50
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
+msgstr ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr "chosen you to join his team of Rangers that"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
-#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
-msgstr "help protect the city. We're sending you"
-
-#: src/campaign.h:61
-msgid "there now..."
-msgstr "there now..."
-
-#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
-msgstr "...oh no! Now the Emperor himself is under attack,"
-
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr "from new types of comets: these problems are"
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr "multiplying! To fight these, you need great"
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr "skill. We think you can do it. Join the"
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr "Rangers and help save the city!"
-
-#: src/campaign.h:73
+#: src/campaign.h:58
msgid "Mission Four: Imperial Ace"
msgstr "Mission Four: Imperial Ace"
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr "You did it! The Emperor wants to thank you"
+#: src/campaign.h:60
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr "in person. We are taking you to his ice palace"
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
+msgstr ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr "for a great honor: you will become"
+#: src/campaign.h:63
+msgid "Now is no time for resting; the city needs your help!"
+msgstr "Now is no time for resting; the city needs your help!"
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr "the Imperial Ace!"
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr "But right in the middle of the ceremony,"
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr "a new attack from the land of Division starts!"
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr "Now is no time for resting; the city"
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr "needs your help!"
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr "Final Mission: Computing Commando"
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
-msgstr "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr "these attacks are coming from a secret"
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr "base, and they need you to go fight"
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr "the final battle. They also give you"
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr "this clue: first do multiplication and"
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr "division, and then do addition and subtraction."
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr "I hope that hint helps!"
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
-msgstr "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
+msgstr "This is it! You can stop these attacks forever, Commando!"
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr "forever, Commando!"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr "Congratulations! You win!"
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr "Round"
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr "Sorry, try again!"
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr "Mission accomplished. The galaxy is safe!"
Modified: tuxmath/trunk/po/en_GB.po
===================================================================
--- tuxmath/trunk/po/en_GB.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/en_GB.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -4,7 +4,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-05-09 21:05+0200\n"
"Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -29,191 +29,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "penguins’ igloos from the"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -742,3 +657,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "Division of Positives and Negatives"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "penguins’ igloos from the"
Modified: tuxmath/trunk/po/es.po
===================================================================
--- tuxmath/trunk/po/es.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/es.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: 1.6.2\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-04-26\n"
"Last-Translator: Angela Ruiz <angieruiz211 at hotmail.com>\n"
"Language-Team: espanol <LL at li.org>\n"
@@ -28,191 +28,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "los igloos de tus pinguinos"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -744,3 +659,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "division de numeros positivos y negativos"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "los igloos de tus pinguinos"
Modified: tuxmath/trunk/po/fi.po
===================================================================
--- tuxmath/trunk/po/fi.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/fi.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-22 06:59+0000\n"
"Last-Translator: Miika Metsälä <Unknown>\n"
"Language-Team: Finnish <fi at li.org>\n"
@@ -32,190 +32,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/fr.po
===================================================================
--- tuxmath/trunk/po/fr.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/fr.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: 1.5.8\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2007-11-15 09:00+0100\n"
"Last-Translator: Grumeau Rémi <remi at beosfrance.com>\n"
"Language-Team: Dutch <LL at li.org>\n"
@@ -28,190 +28,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/ga.po
===================================================================
--- tuxmath/trunk/po/ga.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/ga.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-07-13 23:16-0000\n"
"Last-Translator: Seanán à CoistÃn <seananoc at gmail.com>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -27,191 +27,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "Ãoglúanna do phiongain a chosaint"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -740,3 +655,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "Roinnt Deimhneacha agus Diúltacha"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "Ãoglúanna do phiongain a chosaint"
Modified: tuxmath/trunk/po/he.po
===================================================================
--- tuxmath/trunk/po/he.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/he.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2009-01-17 10:32+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron at gmail.com>\n"
"Language-Team: Hebrew <sh.yaron at gmail.com>\n"
@@ -36,191 +36,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "הפינגווינים שלך מפני"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -749,3 +664,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "חלוקת מספרים חיוביים בשליליים"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "הפינגווינים שלך מפני"
Modified: tuxmath/trunk/po/hu.po
===================================================================
--- tuxmath/trunk/po/hu.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/hu.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-02-11 21:56+0100\n"
"Last-Translator: Miklos Merenyi <mermik at freemail.hu>\n"
"Language-Team: LANGUAGE <HU at li.org>\n"
@@ -27,191 +27,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "jégkunyhóinak megvédése"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -741,3 +656,7 @@
#: data/missions/lessons/descr_lessons:58
msgid "Division of Positives and Negatives"
msgstr "Pozitív és negatív számok osztása"
+
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "jégkunyhóinak megvédése"
Modified: tuxmath/trunk/po/it.po
===================================================================
--- tuxmath/trunk/po/it.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/it.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -12,7 +12,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-01 11:49+0000\n"
"Last-Translator: Giovanni Condello <condellog at gmail.com>\n"
"Language-Team: Italian <it at li.org>\n"
@@ -35,190 +35,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/ja.po
===================================================================
--- tuxmath/trunk/po/ja.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/ja.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-05 15:29+0000\n"
"Last-Translator: CMasami <Unknown>\n"
"Language-Team: Japanese <ja at li.org>\n"
@@ -33,190 +33,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/nb.po
===================================================================
--- tuxmath/trunk/po/nb.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/nb.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: nb\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-09-21 19:08+0200\n"
"Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -30,192 +30,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-#, fuzzy
-msgid "the penguins' igloos. To save their homes,"
-msgstr "igloene til pingvinene fra"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-#, fuzzy
-msgid "forever, Commando!"
-msgstr "Romkommandør"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
@@ -746,5 +660,13 @@
msgid "Division of Positives and Negatives"
msgstr "Divisjon av positive og negative tall"
+#, fuzzy
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "igloene til pingvinene fra"
+
+#, fuzzy
+#~ msgid "forever, Commando!"
+#~ msgstr "Romkommandør"
+
#~ msgid "Other Math Command Activities"
#~ msgstr "Andre aktiviteter"
Modified: tuxmath/trunk/po/nl.po
===================================================================
--- tuxmath/trunk/po/nl.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/nl.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2007-11-15 09:00+0100\n"
"Last-Translator: Schrijvers Luc <Begasus at skynet.be>\n"
"Language-Team: Dutch <LL at li.org>\n"
@@ -28,190 +28,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/nn.po
===================================================================
--- tuxmath/trunk/po/nn.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/nn.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: nn\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2009-01-13 23:58+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"
@@ -30,190 +30,109 @@
msgstr "Eg er så glad du endeleg er her!"
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
-msgstr "Pingvinane treng hjelp frå deg! Det fell"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr "kometar frå himmelen, og dei smeltar"
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr "igloane til pingvinane. For å redda heimane"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr "deira, må du finna dei hemmelege kodane"
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr "som øydeleggjer kometane."
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr "Gjer ditt beste!"
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr "Oppdrag 2: Listige læring"
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
-msgstr "Bra jobba! Sidan du klarte å redda heimane til"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
-msgstr "pingvinane, forfremjar me deg til romlærling."
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
-msgstr "Håpar du har lært å hanska vanskar …"
-
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr "… for no får du nokon rett i hendene!"
-
-#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
-msgstr "TaVekk-arane kjem, og dei sender nye og"
-
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr "endå skumlare kometar mot pingvinane!"
-
-#: src/campaign.h:50
+#: src/campaign.h:42
msgid "But you can save them!"
msgstr "Men du kan redda dei!"
-#: src/campaign.h:56
+#: src/campaign.h:48
msgid "Mission Three: Royal Ranger"
msgstr "Oppdrag 3: Vaktsam vaktar"
-#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
-msgstr "Du klarte det igjen! Keisarpingvinen har valt"
+#: src/campaign.h:50
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
+msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr "deg til å delta i den offisielle romvaktargruppa"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
-#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
-msgstr "som vernar om byen. Me sender deg"
-
-#: src/campaign.h:61
-msgid "there now..."
-msgstr "der no …"
-
-#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
-msgstr "Å nei, å nei! Keisarpingvinen sjølv vert no angripen,"
-
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr "av dei nye gongekometane. Desse er endå"
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr "vanskelegare, og for å øydeleggja dei må du"
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr "vera dugande dyktig. Men me trur du vil"
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr "klara det. Vert med romvaktarane og redd byen!"
-
-#: src/campaign.h:73
+#: src/campaign.h:58
msgid "Mission Four: Imperial Ace"
msgstr "Oppdrag fire: Supersjef"
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr "Du klarte det! Keisaren ønskjer å takka deg"
+#: src/campaign.h:60
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr "personleg. Me tek deg med til ispalasset hans,"
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr "der du får æra av å verta utnemnd"
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr "til keisarleg romsjef!"
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr "Men midt under seremonien"
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
+#: src/campaign.h:62
+#, fuzzy
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr "kjem det eit angrep frå deleland!"
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
+#: src/campaign.h:63
+#, fuzzy
+msgid "Now is no time for resting; the city needs your help!"
msgstr "Inga tid til å kvila på laurbæra; byen"
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr "treng di hjelp!"
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr "Siste oppdrag: Kodeknekkingskommandør"
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
-msgstr "Forskarpingvinane har funne ut alle"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr "angrepa kjem frå ein hemmeleg base,"
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr "og dei treng hjelp frå deg til å"
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr "øydeleggja basen. Dei har òg eit"
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr "lite tips: Gonga først, dela så, og"
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr "avslutt med å leggja til og trekkja frå."
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr "Håpar tipset er til hjelp!"
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+#, fuzzy
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr "Endeleg! No kan du klara å stoppa angrepa"
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr "for alltid, romkommandør!"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr "Gratulerer! Du vann!"
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr "Runde"
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr "Prøv på nytt!"
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr "Oppdrag utførd. Galaksen er no trygg!"
@@ -744,5 +663,104 @@
msgid "Division of Positives and Negatives"
msgstr "Divisjon av positive og negative tal"
+#~ msgid "The penguins need your help! Comets"
+#~ msgstr "Pingvinane treng hjelp frå deg! Det fell"
+
+#~ msgid "are falling from the sky, and are melting"
+#~ msgstr "kometar frå himmelen, og dei smeltar"
+
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "igloane til pingvinane. For å redda heimane"
+
+#~ msgid "we need you to find the secret code that"
+#~ msgstr "deira, må du finna dei hemmelege kodane"
+
+#~ msgid " will zap each comet."
+#~ msgstr "som øydeleggjer kometane."
+
+#~ msgid "Great job! Since you saved the penguins' homes,"
+#~ msgstr "Bra jobba! Sidan du klarte å redda heimane til"
+
+#~ msgid "we are promoting you to Scout. Scouts are good"
+#~ msgstr "pingvinane, forfremjar me deg til romlærling."
+
+#~ msgid "for keeping an eye out for trouble..."
+#~ msgstr "Håpar du har lært å hanska vanskar …"
+
+#~ msgid "...like what's happening right now!"
+#~ msgstr "… for no får du nokon rett i hendene!"
+
+#~ msgid "The TakeAways have come, and they're sending"
+#~ msgstr "TaVekk-arane kjem, og dei sender nye og"
+
+#~ msgid "new, trickier comets against the penguins!"
+#~ msgstr "endå skumlare kometar mot pingvinane!"
+
+#~ msgid "You've done it again! The Penguin Emperor has"
+#~ msgstr "Du klarte det igjen! Keisarpingvinen har valt"
+
+#~ msgid "chosen you to join his team of Rangers that"
+#~ msgstr "deg til å delta i den offisielle romvaktargruppa"
+
+#~ msgid "help protect the city. We're sending you"
+#~ msgstr "som vernar om byen. Me sender deg"
+
+#~ msgid "there now..."
+#~ msgstr "der no …"
+
+#~ msgid "...oh no! Now the Emperor himself is under attack,"
+#~ msgstr "Å nei, å nei! Keisarpingvinen sjølv vert no angripen,"
+
+#~ msgid "from new types of comets: these problems are"
+#~ msgstr "av dei nye gongekometane. Desse er endå"
+
+#~ msgid "multiplying! To fight these, you need great"
+#~ msgstr "vanskelegare, og for å øydeleggja dei må du"
+
+#~ msgid "skill. We think you can do it. Join the"
+#~ msgstr "vera dugande dyktig. Men me trur du vil"
+
+#~ msgid "Rangers and help save the city!"
+#~ msgstr "klara det. Vert med romvaktarane og redd byen!"
+
+#~ msgid "You did it! The Emperor wants to thank you"
+#~ msgstr "Du klarte det! Keisaren ønskjer å takka deg"
+
+#~ msgid "in person. We are taking you to his ice palace"
+#~ msgstr "personleg. Me tek deg med til ispalasset hans,"
+
+#~ msgid "for a great honor: you will become"
+#~ msgstr "der du får æra av å verta utnemnd"
+
+#~ msgid "the Imperial Ace!"
+#~ msgstr "til keisarleg romsjef!"
+
+#~ msgid "But right in the middle of the ceremony,"
+#~ msgstr "Men midt under seremonien"
+
+#~ msgid "needs your help!"
+#~ msgstr "treng di hjelp!"
+
+#~ msgid "Penguin scientists have learned that all"
+#~ msgstr "Forskarpingvinane har funne ut alle"
+
+#~ msgid "these attacks are coming from a secret"
+#~ msgstr "angrepa kjem frå ein hemmeleg base,"
+
+#~ msgid "base, and they need you to go fight"
+#~ msgstr "og dei treng hjelp frå deg til å"
+
+#~ msgid "the final battle. They also give you"
+#~ msgstr "øydeleggja basen. Dei har òg eit"
+
+#~ msgid "this clue: first do multiplication and"
+#~ msgstr "lite tips: Gonga først, dela så, og"
+
+#~ msgid "division, and then do addition and subtraction."
+#~ msgstr "avslutt med å leggja til og trekkja frå."
+
+#~ msgid "forever, Commando!"
+#~ msgstr "for alltid, romkommandør!"
+
#~ msgid "Other Math Command Activities"
#~ msgstr "Andre aktivitetar"
Modified: tuxmath/trunk/po/oc.po
===================================================================
--- tuxmath/trunk/po/oc.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/oc.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-02-25 16:55+0000\n"
"Last-Translator: Yannig MARCHEGAY (Kokoyaya) <yannig at marchegay.org>\n"
"Language-Team: Occitan (post 1500) <oc at li.org>\n"
@@ -32,190 +32,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/pl.po
===================================================================
--- tuxmath/trunk/po/pl.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/pl.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -12,7 +12,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-02-25 18:43+0000\n"
"Last-Translator: Mateusz Tybura <wujciol at gmail.com>\n"
"Language-Team: Polish <pl at li.org>\n"
@@ -35,190 +35,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/pt.po
===================================================================
--- tuxmath/trunk/po/pt.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/pt.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -11,7 +11,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-04-12 04:12+0000\n"
"Last-Translator: Mykas0 <Mykas0 at gmail.com>\n"
"Language-Team: Portuguese <pt at li.org>\n"
@@ -34,190 +34,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/pt_BR.po
===================================================================
--- tuxmath/trunk/po/pt_BR.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/pt_BR.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -13,7 +13,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-03 21:35+0000\n"
"Last-Translator: Laudeci Oliveira <laudeci at gmail.com>\n"
"Language-Team: Brazilian Portuguese <pt_BR at li.org>\n"
@@ -36,190 +36,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/ru.po
===================================================================
--- tuxmath/trunk/po/ru.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/ru.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-01 06:56+0000\n"
"Last-Translator: Александр AldeX Крылов <Unknown>\n"
"Language-Team: Russian <ru at li.org>\n"
@@ -33,190 +33,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/sk.po
===================================================================
--- tuxmath/trunk/po/sk.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/sk.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-03-16 09:41+0000\n"
"Last-Translator: Štefan Lučivjanský <lucorp at azet.sk>\n"
"Language-Team: Slovak <sk at li.org>\n"
@@ -33,190 +33,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/sv.po
===================================================================
--- tuxmath/trunk/po/sv.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/sv.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: \n"
"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -29,190 +29,109 @@
msgstr "Jag är så glad att du kom!"
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
-msgstr "Pingvinerna behöver din hjälp! Kometer"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr "faller från himlen och smälter"
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr "pingvinernas igloos. Vi behöver dig"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr "för att hitta hemliga koden som kan"
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr "förstöra varje komet för att rädda dem."
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr "Gör ditt yttersta!"
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr "Uppdrag 2: Smart scout"
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
-msgstr "Bra jobbat! Eftersom du räddat pingvinernas hem"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
-msgstr "så befordrar vi dig till Scout. Scoter är bra"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
-msgstr "på att se upp för problem..."
-
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr "... precis det som händer just nu!"
-
-#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
-msgstr "Bortförarna har kommit och de skickar nya"
-
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr "svårare kometer mot pingvinerna!"
-
-#: src/campaign.h:50
+#: src/campaign.h:42
msgid "But you can save them!"
msgstr "Du kan rädda dem!"
-#: src/campaign.h:56
+#: src/campaign.h:48
msgid "Mission Three: Royal Ranger"
msgstr "Uppdrag 3: Kunglig jägare"
-#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
-msgstr "Du har lyckats igen! Pingvinernas kejsare har"
+#: src/campaign.h:50
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
+msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr "valt dig till sin grupp av jägare som ska"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
-#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
-msgstr "hjälpa till att skydda staden. Vi skickar dit"
-
-#: src/campaign.h:61
-msgid "there now..."
-msgstr "dig nu..."
-
-#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
-msgstr "... Åh nej! Nu är själva kejsaren under attack"
-
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr "från nya typer av kometer. Problemen bara"
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr "förökar sig! Du behöver erfarenhet för"
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr "att bekämpa dessa. Vi tror att du kan göra"
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr "det. Gå med jägarna och rädda staden!"
-
-#: src/campaign.h:73
+#: src/campaign.h:58
msgid "Mission Four: Imperial Ace"
msgstr "Uppdrag 4: Empirisk mästare"
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr "Du klarade det! Kejsaren vill tacka dig"
+#: src/campaign.h:60
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr "personligen. Vi tar dig till hans ispalats"
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr "för att ge dig ära. Du kommer att"
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr "bli en Empirisk mästare!"
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr "Men just i mitten av ceremonin så inleds"
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
+#: src/campaign.h:62
+#, fuzzy
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr "en ny attack från Divisionslandet!"
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
+#: src/campaign.h:63
+#, fuzzy
+msgid "Now is no time for resting; the city needs your help!"
msgstr "Det finns ingen tid att förlora. Staden"
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr "behöver din hjälp!"
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr "Sista uppdraget: Beräknande kommandosoldat"
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
-msgstr "Pingvinvetenskapsmännen har upptäckt att"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr "alla dessa attacker kommer från en hemlig"
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr "bas och de behöver dig för att utkämpa"
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr "den sista striden. De har även gett dig"
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr "denna ledtråd: multiplicera och dividera"
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr "först, gör sedan addition och subtraktion."
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr "Jag hoppas att tipset hjälper!"
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+#, fuzzy
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr "Nu gäller det! Du kan stoppa dessa"
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr "attacker för alltid, Kommandosoldat!"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr "Gratulerar! Du vann!"
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr "Omgång"
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr "Tyvärr, försök igen!"
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr "Uppdraget slutfört! Galaxen är säker!"
@@ -746,6 +665,105 @@
msgid "Division of Positives and Negatives"
msgstr "Division med positiva och negativa tal"
+#~ msgid "The penguins need your help! Comets"
+#~ msgstr "Pingvinerna behöver din hjälp! Kometer"
+
+#~ msgid "are falling from the sky, and are melting"
+#~ msgstr "faller från himlen och smälter"
+
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "pingvinernas igloos. Vi behöver dig"
+
+#~ msgid "we need you to find the secret code that"
+#~ msgstr "för att hitta hemliga koden som kan"
+
+#~ msgid " will zap each comet."
+#~ msgstr "förstöra varje komet för att rädda dem."
+
+#~ msgid "Great job! Since you saved the penguins' homes,"
+#~ msgstr "Bra jobbat! Eftersom du räddat pingvinernas hem"
+
+#~ msgid "we are promoting you to Scout. Scouts are good"
+#~ msgstr "så befordrar vi dig till Scout. Scoter är bra"
+
+#~ msgid "for keeping an eye out for trouble..."
+#~ msgstr "på att se upp för problem..."
+
+#~ msgid "...like what's happening right now!"
+#~ msgstr "... precis det som händer just nu!"
+
+#~ msgid "The TakeAways have come, and they're sending"
+#~ msgstr "Bortförarna har kommit och de skickar nya"
+
+#~ msgid "new, trickier comets against the penguins!"
+#~ msgstr "svårare kometer mot pingvinerna!"
+
+#~ msgid "You've done it again! The Penguin Emperor has"
+#~ msgstr "Du har lyckats igen! Pingvinernas kejsare har"
+
+#~ msgid "chosen you to join his team of Rangers that"
+#~ msgstr "valt dig till sin grupp av jägare som ska"
+
+#~ msgid "help protect the city. We're sending you"
+#~ msgstr "hjälpa till att skydda staden. Vi skickar dit"
+
+#~ msgid "there now..."
+#~ msgstr "dig nu..."
+
+#~ msgid "...oh no! Now the Emperor himself is under attack,"
+#~ msgstr "... Åh nej! Nu är själva kejsaren under attack"
+
+#~ msgid "from new types of comets: these problems are"
+#~ msgstr "från nya typer av kometer. Problemen bara"
+
+#~ msgid "multiplying! To fight these, you need great"
+#~ msgstr "förökar sig! Du behöver erfarenhet för"
+
+#~ msgid "skill. We think you can do it. Join the"
+#~ msgstr "att bekämpa dessa. Vi tror att du kan göra"
+
+#~ msgid "Rangers and help save the city!"
+#~ msgstr "det. Gå med jägarna och rädda staden!"
+
+#~ msgid "You did it! The Emperor wants to thank you"
+#~ msgstr "Du klarade det! Kejsaren vill tacka dig"
+
+#~ msgid "in person. We are taking you to his ice palace"
+#~ msgstr "personligen. Vi tar dig till hans ispalats"
+
+#~ msgid "for a great honor: you will become"
+#~ msgstr "för att ge dig ära. Du kommer att"
+
+#~ msgid "the Imperial Ace!"
+#~ msgstr "bli en Empirisk mästare!"
+
+#~ msgid "But right in the middle of the ceremony,"
+#~ msgstr "Men just i mitten av ceremonin så inleds"
+
+#~ msgid "needs your help!"
+#~ msgstr "behöver din hjälp!"
+
+#~ msgid "Penguin scientists have learned that all"
+#~ msgstr "Pingvinvetenskapsmännen har upptäckt att"
+
+#~ msgid "these attacks are coming from a secret"
+#~ msgstr "alla dessa attacker kommer från en hemlig"
+
+#~ msgid "base, and they need you to go fight"
+#~ msgstr "bas och de behöver dig för att utkämpa"
+
+#~ msgid "the final battle. They also give you"
+#~ msgstr "den sista striden. De har även gett dig"
+
+#~ msgid "this clue: first do multiplication and"
+#~ msgstr "denna ledtråd: multiplicera och dividera"
+
+#~ msgid "division, and then do addition and subtraction."
+#~ msgstr "först, gör sedan addition och subtraktion."
+
+#~ msgid "forever, Commando!"
+#~ msgstr "attacker för alltid, Kommandosoldat!"
+
#~ msgid "Other Math Command Activities"
#~ msgstr "Andra matematikaktiviteter"
Modified: tuxmath/trunk/po/tr.po
===================================================================
--- tuxmath/trunk/po/tr.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/tr.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: tr2\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-12-07 15:54+0200\n"
"Last-Translator: Doruk Fisek <dfisek at fisek.com.tr>\n"
"Language-Team: Turkish <gnu-tr-u12a at lists.sourceforge.net>\n"
@@ -28,190 +28,109 @@
msgstr "Geldiğine çok sevindim!"
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
-msgstr "Penguenlerin yardımına ihtiyacı var!"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
+msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr "Kuyruklu yıldızlar gökten düşüyor ve"
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr "penguenlerin evlerini eritiyor. Evlerini kurtarmak için,"
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr "her kuyruklu yıldızı düşürecek"
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr "gizli kodu bulmanı istiyoruz"
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr "En iyisini yap!"
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr "Görev İki: Akıllı İzci"
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
-msgstr "İyi iş çıkardın! Penguenlerin evlerini kurtardığın için,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
+msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
-msgstr "seni \"İzci\"liğe yükseltiyoruz. İzciler"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
+msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
-msgstr "olası bir soruna karşı tetikte olurlar"
-
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr "... tıpkı şimdi olan gibi!"
-
-#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
-msgstr "Paket servisleri geldi ve penguenlere yeni daha becerikli"
-
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr "kuyruklu yıldızlar gönderiyorlar!"
-
-#: src/campaign.h:50
+#: src/campaign.h:42
msgid "But you can save them!"
msgstr "Ama sen onları kurtarabilirsin!"
-#: src/campaign.h:56
+#: src/campaign.h:48
msgid "Mission Three: Royal Ranger"
msgstr "Görev Üç: Asil Korucu"
-#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
-msgstr "Tekrar başardın! İmparator Penguen seni"
+#: src/campaign.h:50
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
+msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr "şehri korumaya yardımcı olan kendi korucular"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
+msgstr ""
-#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
-msgstr "takımına katılman için seçti. Şimdi seni"
-
-#: src/campaign.h:61
-msgid "there now..."
-msgstr "oraya gönderiyoruz..."
-
-#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
-msgstr "... oo hayır! Şimdi İmparator'un kendisine saldırılıyor,"
-
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr "hem de yeni tip kuyruklu yıldızlarla : problemler"
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr "katlanıyor! Bunlarla savaşmak için, harika yeteneklere"
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr "gereksinim var. Yapabileceğini düşünüyoruz."
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr "Koruculara katıl ve şehri kurtarmaya yardım et!"
-
-#: src/campaign.h:73
+#: src/campaign.h:58
msgid "Mission Four: Imperial Ace"
msgstr "Görev Dört: İmparatorluk Ası"
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr "Başardın! İmparator sana bizzat kendisi teşekkür"
+#: src/campaign.h:60
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
+msgstr ""
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr "etmek istiyor. Seni büyük bir onur kazanman için"
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr "buzdan kalesine götürüyoruz :"
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr "İmparatorluk Ası olacaksın!"
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr "Törenin tam ortasında Bölme Ülkesi'nden"
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
+#: src/campaign.h:62
+#, fuzzy
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr "yeni bir saldırı başlar!"
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
+#: src/campaign.h:63
+#, fuzzy
+msgid "Now is no time for resting; the city needs your help!"
msgstr "Şimdi dinlenmek için zaman yok; şehrin"
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr "yardımında gereksinimi var!"
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr "Son Görev: Hesaplama Komandosu"
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
-msgstr "Penguen bilim adamları tüm bu saldırıların"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
+msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr "gizli bir üsten geldiğini öğrendi ve senin"
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr "gidip bu işi sona erdirecek savaşı"
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr "kazanmana ihtiyaçları var. Sana bir de ipuuc"
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr "verdiler: Önce çarpma ve bölmeyi, ondan"
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr "sonra toplama ve çıkarmayı yap."
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr "Umarım bu ipucu işine yarar!"
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+#, fuzzy
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr "Hepsi bu! Bu saldırıları sonsuza dek"
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr "durdurabilirsin Komando!"
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr "Tebrikler! Kazandın!"
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr "Tur"
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr "Üzgünüm, tekrar dene!"
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr "Görev başarıyla tamamlandı. Galaksi güvenli!"
@@ -746,5 +665,104 @@
msgid "Division of Positives and Negatives"
msgstr "Pozitif ve Negatiflerin Bölünmesi"
+#~ msgid "The penguins need your help! Comets"
+#~ msgstr "Penguenlerin yardımına ihtiyacı var!"
+
+#~ msgid "are falling from the sky, and are melting"
+#~ msgstr "Kuyruklu yıldızlar gökten düşüyor ve"
+
+#~ msgid "the penguins' igloos. To save their homes,"
+#~ msgstr "penguenlerin evlerini eritiyor. Evlerini kurtarmak için,"
+
+#~ msgid "we need you to find the secret code that"
+#~ msgstr "her kuyruklu yıldızı düşürecek"
+
+#~ msgid " will zap each comet."
+#~ msgstr "gizli kodu bulmanı istiyoruz"
+
+#~ msgid "Great job! Since you saved the penguins' homes,"
+#~ msgstr "İyi iş çıkardın! Penguenlerin evlerini kurtardığın için,"
+
+#~ msgid "we are promoting you to Scout. Scouts are good"
+#~ msgstr "seni \"İzci\"liğe yükseltiyoruz. İzciler"
+
+#~ msgid "for keeping an eye out for trouble..."
+#~ msgstr "olası bir soruna karşı tetikte olurlar"
+
+#~ msgid "...like what's happening right now!"
+#~ msgstr "... tıpkı şimdi olan gibi!"
+
+#~ msgid "The TakeAways have come, and they're sending"
+#~ msgstr "Paket servisleri geldi ve penguenlere yeni daha becerikli"
+
+#~ msgid "new, trickier comets against the penguins!"
+#~ msgstr "kuyruklu yıldızlar gönderiyorlar!"
+
+#~ msgid "You've done it again! The Penguin Emperor has"
+#~ msgstr "Tekrar başardın! İmparator Penguen seni"
+
+#~ msgid "chosen you to join his team of Rangers that"
+#~ msgstr "şehri korumaya yardımcı olan kendi korucular"
+
+#~ msgid "help protect the city. We're sending you"
+#~ msgstr "takımına katılman için seçti. Şimdi seni"
+
+#~ msgid "there now..."
+#~ msgstr "oraya gönderiyoruz..."
+
+#~ msgid "...oh no! Now the Emperor himself is under attack,"
+#~ msgstr "... oo hayır! Şimdi İmparator'un kendisine saldırılıyor,"
+
+#~ msgid "from new types of comets: these problems are"
+#~ msgstr "hem de yeni tip kuyruklu yıldızlarla : problemler"
+
+#~ msgid "multiplying! To fight these, you need great"
+#~ msgstr "katlanıyor! Bunlarla savaşmak için, harika yeteneklere"
+
+#~ msgid "skill. We think you can do it. Join the"
+#~ msgstr "gereksinim var. Yapabileceğini düşünüyoruz."
+
+#~ msgid "Rangers and help save the city!"
+#~ msgstr "Koruculara katıl ve şehri kurtarmaya yardım et!"
+
+#~ msgid "You did it! The Emperor wants to thank you"
+#~ msgstr "Başardın! İmparator sana bizzat kendisi teşekkür"
+
+#~ msgid "in person. We are taking you to his ice palace"
+#~ msgstr "etmek istiyor. Seni büyük bir onur kazanman için"
+
+#~ msgid "for a great honor: you will become"
+#~ msgstr "buzdan kalesine götürüyoruz :"
+
+#~ msgid "the Imperial Ace!"
+#~ msgstr "İmparatorluk Ası olacaksın!"
+
+#~ msgid "But right in the middle of the ceremony,"
+#~ msgstr "Törenin tam ortasında Bölme Ülkesi'nden"
+
+#~ msgid "needs your help!"
+#~ msgstr "yardımında gereksinimi var!"
+
+#~ msgid "Penguin scientists have learned that all"
+#~ msgstr "Penguen bilim adamları tüm bu saldırıların"
+
+#~ msgid "these attacks are coming from a secret"
+#~ msgstr "gizli bir üsten geldiğini öğrendi ve senin"
+
+#~ msgid "base, and they need you to go fight"
+#~ msgstr "gidip bu işi sona erdirecek savaşı"
+
+#~ msgid "the final battle. They also give you"
+#~ msgstr "kazanmana ihtiyaçları var. Sana bir de ipuuc"
+
+#~ msgid "this clue: first do multiplication and"
+#~ msgstr "verdiler: Önce çarpma ve bölmeyi, ondan"
+
+#~ msgid "division, and then do addition and subtraction."
+#~ msgstr "sonra toplama ve çıkarmayı yap."
+
+#~ msgid "forever, Commando!"
+#~ msgstr "durdurabilirsin Komando!"
+
#~ msgid "Other Math Command Activities"
#~ msgstr "Diğer Matematik Komutanlığı Etkinlikleri"
Modified: tuxmath/trunk/po/tuxmath.pot
===================================================================
--- tuxmath/trunk/po/tuxmath.pot 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/tuxmath.pot 2009-02-06 17:36:45 UTC (rev 871)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: tuxmath 1.7.1\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -28,190 +28,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/po/zh_CN.po
===================================================================
--- tuxmath/trunk/po/zh_CN.po 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/po/zh_CN.po 2009-02-06 17:36:45 UTC (rev 871)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: tuxmath\n"
"Report-Msgid-Bugs-To: tuxmath-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-24 20:34-0600\n"
+"POT-Creation-Date: 2009-02-06 11:04-0600\n"
"PO-Revision-Date: 2008-02-22 11:56+0000\n"
"Last-Translator: TeliuTe <teliute at 163.com>\n"
"Language-Team: Simplified Chinese <zh_CN at li.org>\n"
@@ -32,190 +32,106 @@
msgstr ""
#: src/campaign.h:29
-msgid "The penguins need your help! Comets"
+msgid ""
+"The penguins need your help! Comets are falling from the sky, and are "
+"melting the penguins' igloos. To save their homes, we need you to find the "
+"secret code that will zap each comet."
msgstr ""
-#: src/campaign.h:30
-msgid "are falling from the sky, and are melting"
-msgstr ""
-
#: src/campaign.h:31
-msgid "the penguins' igloos. To save their homes,"
-msgstr ""
-
-#: src/campaign.h:32
-msgid "we need you to find the secret code that"
-msgstr ""
-
-#: src/campaign.h:33
-msgid " will zap each comet."
-msgstr ""
-
-#: src/campaign.h:35
msgid "Do your best!"
msgstr ""
-#: src/campaign.h:41
+#: src/campaign.h:37
msgid "Mission Two: Smart Scout"
msgstr ""
-#: src/campaign.h:43
-msgid "Great job! Since you saved the penguins' homes,"
+#: src/campaign.h:39
+msgid ""
+"Great job! Since you saved the penguins' homes, we are promoting you to "
+"Scout. Scouts are good for keeping an eye out for trouble..."
msgstr ""
-#: src/campaign.h:44
-msgid "we are promoting you to Scout. Scouts are good"
+#: src/campaign.h:41
+msgid ""
+"...like what's happening right now! The TakeAways have come, and they're "
+"sending new, trickier comets against the penguins!"
msgstr ""
-#: src/campaign.h:45
-msgid "for keeping an eye out for trouble..."
+#: src/campaign.h:42
+msgid "But you can save them!"
msgstr ""
-#: src/campaign.h:47
-msgid "...like what's happening right now!"
-msgstr ""
-
#: src/campaign.h:48
-msgid "The TakeAways have come, and they're sending"
+msgid "Mission Three: Royal Ranger"
msgstr ""
-#: src/campaign.h:49
-msgid "new, trickier comets against the penguins!"
-msgstr ""
-
#: src/campaign.h:50
-msgid "But you can save them!"
+msgid ""
+"You've done it again! The Penguin Emperor has chosen you to join his team of "
+"Rangers that help protect the city. We're sending you there now..."
msgstr ""
-#: src/campaign.h:56
-msgid "Mission Three: Royal Ranger"
+#: src/campaign.h:52
+msgid ""
+"...oh no! Now the Emperor himself is under attack, from new types of comets: "
+"these problems are multiplying! To fight these, you need great skill. We "
+"think you can do it. Join the Rangers and help save the city!"
msgstr ""
#: src/campaign.h:58
-msgid "You've done it again! The Penguin Emperor has"
+msgid "Mission Four: Imperial Ace"
msgstr ""
-#: src/campaign.h:59
-msgid "chosen you to join his team of Rangers that"
-msgstr ""
-
#: src/campaign.h:60
-msgid "help protect the city. We're sending you"
+msgid ""
+"You did it! The Emperor wants to thank you in person. We are taking you to "
+"his ice palace for a great honor: you will become the Imperial Ace!"
msgstr ""
-#: src/campaign.h:61
-msgid "there now..."
+#: src/campaign.h:62
+msgid ""
+"But right in the middle of the ceremony, a new attack from the land of "
+"Division starts!"
msgstr ""
#: src/campaign.h:63
-msgid "...oh no! Now the Emperor himself is under attack,"
+msgid "Now is no time for resting; the city needs your help!"
msgstr ""
-#: src/campaign.h:64
-msgid "from new types of comets: these problems are"
-msgstr ""
-
-#: src/campaign.h:65
-msgid "multiplying! To fight these, you need great"
-msgstr ""
-
-#: src/campaign.h:66
-msgid "skill. We think you can do it. Join the"
-msgstr ""
-
-#: src/campaign.h:67
-msgid "Rangers and help save the city!"
-msgstr ""
-
-#: src/campaign.h:73
-msgid "Mission Four: Imperial Ace"
-msgstr ""
-
-#: src/campaign.h:75
-msgid "You did it! The Emperor wants to thank you"
-msgstr ""
-
-#: src/campaign.h:76
-msgid "in person. We are taking you to his ice palace"
-msgstr ""
-
-#: src/campaign.h:77
-msgid "for a great honor: you will become"
-msgstr ""
-
-#: src/campaign.h:78
-msgid "the Imperial Ace!"
-msgstr ""
-
-#: src/campaign.h:80
-msgid "But right in the middle of the ceremony,"
-msgstr ""
-
-#: src/campaign.h:81
-msgid "a new attack from the land of Division starts!"
-msgstr ""
-
-#: src/campaign.h:82
-msgid "Now is no time for resting; the city"
-msgstr ""
-
-#: src/campaign.h:83
-msgid "needs your help!"
-msgstr ""
-
-#: src/campaign.h:89
+#: src/campaign.h:69
msgid "Final Mission: Computing Commando"
msgstr ""
-#: src/campaign.h:91
-msgid "Penguin scientists have learned that all"
+#: src/campaign.h:71
+msgid ""
+"Penguin scientists have learned that all these attacks are coming from a "
+"secret base, and they need you to go fight the final battle. They also give "
+"you this clue: first do multiplication and division, and then do addition "
+"and subtraction."
msgstr ""
-#: src/campaign.h:92
-msgid "these attacks are coming from a secret"
-msgstr ""
-
-#: src/campaign.h:93
-msgid "base, and they need you to go fight"
-msgstr ""
-
-#: src/campaign.h:94
-msgid "the final battle. They also give you"
-msgstr ""
-
-#: src/campaign.h:95
-msgid "this clue: first do multiplication and"
-msgstr ""
-
-#: src/campaign.h:96
-msgid "division, and then do addition and subtraction."
-msgstr ""
-
-#: src/campaign.h:97
+#: src/campaign.h:72
msgid "I hope that hint helps!"
msgstr ""
-#: src/campaign.h:99
-msgid "This is it! You can stop these attacks"
+#: src/campaign.h:74
+msgid "This is it! You can stop these attacks forever, Commando!"
msgstr ""
-#: src/campaign.h:100
-msgid "forever, Commando!"
-msgstr ""
-
-#: src/campaign.c:29
+#: src/campaign.c:31
msgid "Congratulations! You win!"
msgstr ""
-#: src/campaign.c:47
+#: src/campaign.c:49
msgid "Round"
msgstr ""
-#: src/campaign.c:156
+#: src/campaign.c:159
msgid "Sorry, try again!"
msgstr ""
-#: src/campaign.c:162
+#: src/campaign.c:166
msgid "Mission accomplished. The galaxy is safe!"
msgstr ""
Modified: tuxmath/trunk/src/Makefile.am
===================================================================
--- tuxmath/trunk/src/Makefile.am 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/src/Makefile.am 2009-02-06 17:36:45 UTC (rev 871)
@@ -35,6 +35,7 @@
options.c \
credits.c \
highscore.c \
+ linewrap.c \
loaders.c \
audio.c \
mathcards.c \
@@ -46,8 +47,22 @@
SDL_rotozoom.c \
lessons.c \
scandir.c \
- pixels.c
+ pixels.c \
+ linebreak.c \
+ width.c \
+ u16-mbtouc-aux.c \
+ u16-mbtouc.c \
+ u16-mbtouc-unsafe-aux.c \
+ u16-mbtouc-unsafe.c \
+ u8-mbtouc-aux.c \
+ u8-mbtouc.c \
+ u8-mbtouc-unsafe-aux.c \
+ u8-mbtouc-unsafe.c \
+. u8-uctomb-aux.c \
+ u8-uctomb.c
+
+# HACK "TuxMath" is the Windows program, whereas "tuxmath" is the Unix program
TuxMath_SOURCES = $(tuxmath_SOURCES) tuxmathrc.rc
tuxmathadmin_SOURCES = tuxmathadmin.c
@@ -59,37 +74,45 @@
lessons.c
EXTRA_DIST = credits.h \
- factoroids.h \
- fileops.h \
- game.h \
- globals.h \
- highscore.h \
- loaders.h \
- mathcards.h \
- options.h \
- setup.h \
- titlescreen.h \
- campaign.h \
- multiplayer.h \
- tuxmath.h \
- ConvertUTF.h \
- SDL_extras.h \
- SDL_rotozoom.h \
- lessons.h \
- gettext.h \
- scandir.h \
- pixels.h \
- compiler.h
+ factoroids.h \
+ fileops.h \
+ game.h \
+ globals.h \
+ highscore.h \
+ linewrap.h \
+ loaders.h \
+ mathcards.h \
+ options.h \
+ setup.h \
+ titlescreen.h \
+ campaign.h \
+ multiplayer.h \
+ tuxmath.h \
+ ConvertUTF.h \
+ SDL_extras.h \
+ SDL_rotozoom.h \
+ lessons.h \
+ gettext.h \
+ scandir.h \
+ pixels.h \
+ compiler.h \
+ lbrkprop.h \
+ localcharset.h \
+ streq.h \
+ unistr.h \
+ xsize.h \
+ linebreak.h \
+ unitypes.h \
+ uniwidth.h
+
WINDRES=@WINDRES@
# How to make an RC file
tuxmathrc.o: tuxmathrc.rc
$(WINDRES) -i $< -o $@
-noinst_HEADERS = highscore.h
-
Modified: tuxmath/trunk/src/campaign.c
===================================================================
--- tuxmath/trunk/src/campaign.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/src/campaign.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -12,11 +12,9 @@
#include "fileops.h"
#include "mathcards.h"
#include "options.h"
-
-#ifdef LINEBREAK
#include "linewrap.h"
-#endif
+
void briefPlayer(int stage); //show text introducing the given stage
void readStageSettings(int stage);
void readRoundSettings(int stage, int round);
@@ -131,12 +129,8 @@
//show this stage's text
tmdprintf("Briefing\n");
SDL_BlitSurface(icon, NULL, screen, NULL);
-#ifdef LINEBREAK
linewrap_list(briefings[stage], wrapped_lines, 40, MAX_LINES, MAX_LINEWIDTH);
scroll_text(wrapped_lines, textarea, 1);
-#else
- scroll_text(briefings[stage], textarea, 1);
-#endif
tmdprintf("Finished briefing\n");
SDL_FreeSurface(loadedsprite);
@@ -163,21 +157,13 @@
void showGameOver()
{
char* text[2] = {N_("Sorry, try again!"), ""};
-#ifdef LINEBREAK
linewrap_list(text, wrapped_lines, 40, MAX_LINES, MAX_LINEWIDTH);
scroll_text(wrapped_lines, screen->clip_rect, 3);
-#else
- scroll_text(text, screen->clip_rect, 3);
-#endif
}
void showGameWon()
{
char* text[2] = {N_("Mission accomplished. The galaxy is safe!"), ""};
-#ifdef LINEBREAK
linewrap_list(text, wrapped_lines, 40, MAX_LINES, MAX_LINEWIDTH);
scroll_text(wrapped_lines, screen->clip_rect, 3);
-#else
- scroll_text(text, screen->clip_rect, 3);
-#endif
}
Added: tuxmath/trunk/src/cjk.h
===================================================================
--- tuxmath/trunk/src/cjk.h (rev 0)
+++ tuxmath/trunk/src/cjk.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,37 @@
+/* Test for CJK encoding.
+ Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "streq.h"
+
+static int
+is_cjk_encoding (const char *encoding)
+{
+ if (0
+ /* Legacy Japanese encodings */
+ || STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
+ /* Legacy Chinese encodings */
+ || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
+ || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
+ || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
+ /* Legacy Korean encodings */
+ || STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ || STREQ (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
+ || STREQ (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
+ return 1;
+ return 0;
+}
Modified: tuxmath/trunk/src/globals.h
===================================================================
--- tuxmath/trunk/src/globals.h 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/src/globals.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -30,6 +30,7 @@
//#define TUXMATH_DEBUG
/* for Tim's feedback speed control code */
//#define FEEDBACK_DEBUG
+#define LINEBREAK
/* nice inline debugging macro */
#ifdef TUXMATH_DEBUG
#define tmdprintf(...) printf(__VA_ARGS__)
Added: tuxmath/trunk/src/lbrkprop.h
===================================================================
--- tuxmath/trunk/src/lbrkprop.h (rev 0)
+++ tuxmath/trunk/src/lbrkprop.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,1895 @@
+/* Line breaking properties of Unicode characters. */
+/* Generated automatically by gen-lbrkprop for Unicode 3.1.0. */
+
+/* Copyright (C) 2000-2004 Free Software Foundation, Inc.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#define lbrkprop_header_0 16
+#define lbrkprop_header_1 15
+#define lbrkprop_header_2 7
+#define lbrkprop_header_3 511
+#define lbrkprop_header_4 127
+static const
+struct
+ {
+ int level1[15];
+ int level2[4 << 9];
+ unsigned char level3[100 << 7];
+ }
+lbrkprop =
+{
+ { 0, 512, 1024, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1536 },
+ {
+ 0, 128, 256, 384, 512, 640, 768, 896,
+ 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920,
+ -1, -1, 2048, 2176, 2304, 2432, 2560, 2688,
+ 2816, 2944, 3072, 3200, 3328, 3456, 3584, 3712,
+ 3840, 3968, 4096, 4224, 4352, 4480, 4608, 4736,
+ 4864, 4992, 4992, 4992, 5120, 5248, -1, 5376,
+ 5504, 5632, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 4992, 5760, 5888, 6016,
+ 6144, 6272, 6400, 6528, 6656, 6784, 6912, 7040,
+ 7168, 7296, 7424, 7552, 7680, -1, 7808, 7936,
+ 4992, 4992, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 8064, 8192, 8320,
+ 8448, 8576, 8704, 8832, 8960, 9088, 9216, 9344,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 9472, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 9600,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 9728, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 9856,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 8192, 8192, 9984, -1, 10112, 10240,
+ 4992, 4992, 10368, 10496, 10624, 10752, 10880, 11008,
+ -1, -1, -1, -1, -1, -1, 11136, -1,
+ 11264, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 4992, 11392, 11520, 11648, -1, -1, -1, -1,
+ 11776, 11904, 12032, 4992, 4992, 12160, 4992, 12288,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192,
+ 8192, 8192, 8192, 8192, 8192, 12416, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 8192, 8192, 8192, 8192, 12544, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 12672, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1
+ },
+ {
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_BA, LBP_BK, LBP_CM, LBP_BK, LBP_BK, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_SP, LBP_EX, LBP_QU, LBP_AL, LBP_PR, LBP_PO, LBP_AL, LBP_QU,
+ LBP_OP, LBP_CL, LBP_AL, LBP_PR, LBP_IS, LBP_HY, LBP_IS, LBP_SY,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_IS, LBP_IS, LBP_AL, LBP_AL, LBP_AL, LBP_EX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_PR, LBP_CL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_BA, LBP_CL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_BK, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_GL, LBP_AI, LBP_PO, LBP_PR, LBP_PR, LBP_PR, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AI, LBP_QU, LBP_AL, LBP_BA, LBP_AL, LBP_AL,
+ LBP_PO, LBP_PR, LBP_AI, LBP_AI, LBP_BB, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_QU, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_BB, LBP_AI, LBP_AI, LBP_AI, LBP_BB, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_XX, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_IS, LBP_BA, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_CM,
+ LBP_AL, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM,
+ LBP_CM, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_CM,
+ LBP_AL, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_PR, LBP_PR, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_CM, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_PR,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NS, LBP_NS, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA,
+ LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_XX, LBP_SA, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX, LBP_SA,
+ LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_CM, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_CM, LBP_CM, LBP_SA, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_BA, LBP_GL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL, LBP_CM,
+ LBP_AL, LBP_CM, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_CM, LBP_CM,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_XX, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_XX, LBP_SA, LBP_SA, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_ID,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_BA, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_SA,
+ LBP_SA, LBP_SA, LBP_SA, LBP_SA, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_NS, LBP_BA, LBP_NS, LBP_NS,
+ LBP_NS, LBP_NS, LBP_NS, LBP_PR, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_BB, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_BA, LBP_GL,
+ LBP_BA, LBP_BA, LBP_BA, LBP_ZW, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_BA, LBP_GL, LBP_BA, LBP_BA, LBP_B2, LBP_AI, LBP_AI, LBP_AL,
+ LBP_QU, LBP_QU, LBP_OP, LBP_QU, LBP_QU, LBP_QU, LBP_OP, LBP_QU,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_IN, LBP_IN, LBP_IN, LBP_BA,
+ LBP_BK, LBP_BK, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_GL,
+ LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO, LBP_PO,
+ LBP_AL, LBP_QU, LBP_QU, LBP_AI, LBP_NS, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_NS, LBP_OP, LBP_CL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_AI,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PO,
+ LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR, LBP_PR,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_PO, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_PR, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_PO, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AI, LBP_PR, LBP_PR, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_OP, LBP_CL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AI,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AI, LBP_AL, LBP_AI, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AL, LBP_AI, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AI, LBP_AI, LBP_AI, LBP_AL, LBP_AI, LBP_AI, LBP_AL, LBP_AI,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_CL, LBP_CL, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL,
+ LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_NS, LBP_OP, LBP_CL, LBP_CL,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_ID, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID,
+ LBP_XX, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_XX,
+ LBP_XX, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID, LBP_NS, LBP_ID, LBP_NS,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_ID, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_CM, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_OP, LBP_CL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP,
+ LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_CL, LBP_ID, LBP_CL, LBP_XX, LBP_NS, LBP_NS, LBP_EX, LBP_EX,
+ LBP_ID, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_OP, LBP_CL, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_GL,
+ LBP_XX, LBP_EX, LBP_ID, LBP_ID, LBP_PR, LBP_PO, LBP_ID, LBP_ID,
+ LBP_OP, LBP_CL, LBP_ID, LBP_ID, LBP_CL, LBP_ID, LBP_CL, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_NS, LBP_NS, LBP_ID, LBP_ID, LBP_ID, LBP_EX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_OP, LBP_ID, LBP_CL, LBP_ID, LBP_XX,
+ LBP_XX, LBP_CL, LBP_OP, LBP_CL, LBP_CL, LBP_NS, LBP_AL, LBP_NS,
+ LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS, LBP_NS,
+ LBP_NS, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_NS, LBP_NS,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX,
+ LBP_PO, LBP_PR, LBP_ID, LBP_ID, LBP_ID, LBP_PR, LBP_PR, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_CM, LBP_CM, LBP_CB, LBP_AI, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_XX, LBP_XX, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_XX,
+ LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_AL, LBP_XX,
+ LBP_XX, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_XX, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL, LBP_AL,
+ LBP_AL, LBP_AL, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU, LBP_NU,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID,
+ LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_ID, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_CM, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX, LBP_XX,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM,
+ LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM, LBP_CM
+ }
+};
Added: tuxmath/trunk/src/linebreak.c
===================================================================
--- tuxmath/trunk/src/linebreak.c (rev 0)
+++ tuxmath/trunk/src/linebreak.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,1335 @@
+/* linebreak.c - line breaking of Unicode strings
+ Copyright (C) 2001-2003, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible at clisp.cons.org>, 2001.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "linebreak.h"
+
+#include <stdlib.h>
+#include <string.h>
+//#include "c-ctype.h"
+#include "ctype.h"
+#include "xsize.h"
+#include "unistr.h"
+#include "uniwidth.h"
+#include "cjk.h"
+#include "streq.h"
+
+
+static int
+is_utf8_encoding (const char *encoding)
+{
+ if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
+ return 1;
+ return 0;
+}
+
+
+/* Determine the line break points in S, and store the result at p[0..n-1]. */
+/* We don't support line breaking of complex-context dependent characters
+ (Thai, Lao, Myanmar, Khmer) yet, because it requires dictionary lookup. */
+
+/* Line breaking classification. */
+
+enum
+{
+ /* Values >= 20 are resolved at run time. */
+ LBP_BK = 0, /* mandatory break */
+/*LBP_CR, carriage return - not used here because it's a DOSism */
+/*LBP_LF, line feed - not used here because it's a DOSism */
+ LBP_CM = 20, /* attached characters and combining marks */
+/*LBP_SG, surrogates - not used here because they are not characters */
+ LBP_ZW = 1, /* zero width space */
+ LBP_IN = 2, /* inseparable */
+ LBP_GL = 3, /* non-breaking (glue) */
+ LBP_CB = 22, /* contingent break opportunity */
+ LBP_SP = 21, /* space */
+ LBP_BA = 4, /* break opportunity after */
+ LBP_BB = 5, /* break opportunity before */
+ LBP_B2 = 6, /* break opportunity before and after */
+ LBP_HY = 7, /* hyphen */
+ LBP_NS = 8, /* non starter */
+ LBP_OP = 9, /* opening punctuation */
+ LBP_CL = 10, /* closing punctuation */
+ LBP_QU = 11, /* ambiguous quotation */
+ LBP_EX = 12, /* exclamation/interrogation */
+ LBP_ID = 13, /* ideographic */
+ LBP_NU = 14, /* numeric */
+ LBP_IS = 15, /* infix separator (numeric) */
+ LBP_SY = 16, /* symbols allowing breaks */
+ LBP_AL = 17, /* ordinary alphabetic and symbol characters */
+ LBP_PR = 18, /* prefix (numeric) */
+ LBP_PO = 19, /* postfix (numeric) */
+ LBP_SA = 23, /* complex context (South East Asian) */
+ LBP_AI = 24, /* ambiguous (alphabetic or ideograph) */
+ LBP_XX = 25 /* unknown */
+};
+
+#include "lbrkprop.h"
+
+static inline unsigned char
+lbrkprop_lookup (unsigned int uc)
+{
+ unsigned int index1 = uc >> lbrkprop_header_0;
+ if (index1 < lbrkprop_header_1)
+ {
+ int lookup1 = lbrkprop.level1[index1];
+ if (lookup1 >= 0)
+ {
+ unsigned int index2 = (uc >> lbrkprop_header_2) & lbrkprop_header_3;
+ int lookup2 = lbrkprop.level2[lookup1 + index2];
+ if (lookup2 >= 0)
+ {
+ unsigned int index3 = uc & lbrkprop_header_4;
+ return lbrkprop.level3[lookup2 + index3];
+ }
+ }
+ }
+ return LBP_XX;
+}
+
+/* Table indexed by two line breaking classifications. */
+#define D 1 /* direct break opportunity, empty in table 7.3 of UTR #14 */
+#define I 2 /* indirect break opportunity, '%' in table 7.3 of UTR #14 */
+#define P 3 /* prohibited break, '^' in table 7.3 of UTR #14 */
+static const unsigned char lbrk_table[19][19] = {
+ /* after */
+ /* ZW IN GL BA BB B2 HY NS OP CL QU EX ID NU IS SY AL PR PO */
+/* ZW */ { P, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, },
+/* IN */ { P, I, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* GL */ { P, I, I, I, I, I, I, I, I, P, I, P, I, I, P, P, I, I, I, },
+/* BA */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* BB */ { P, I, I, I, I, I, I, I, I, P, I, P, I, I, P, P, I, I, I, },
+/* B2 */ { P, D, I, I, D, P, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* HY */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* NS */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* OP */ { P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, },
+/* CL */ { P, D, I, I, D, D, I, P, D, P, I, P, D, D, P, P, D, D, I, },
+/* QU */ { P, I, I, I, I, I, I, I, P, P, I, P, I, I, P, P, I, I, I, },
+/* EX */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* ID */ { P, I, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, I, },
+/* NU */ { P, I, I, I, D, D, I, I, D, P, I, P, D, I, P, P, I, D, I, },
+/* IS */ { P, D, I, I, D, D, I, I, D, P, I, P, D, I, P, P, D, D, D, },
+/* SY */ { P, D, I, I, D, D, I, I, D, P, I, P, D, I, P, P, D, D, D, },
+/* AL */ { P, I, I, I, D, D, I, I, D, P, I, P, D, I, P, P, I, D, D, },
+/* PR */ { P, D, I, I, D, D, I, I, I, P, I, P, I, I, P, P, I, D, D, },
+/* PO */ { P, D, I, I, D, D, I, I, D, P, I, P, D, D, P, P, D, D, D, },
+/* "" */
+/* before */
+};
+/* Note: The (B2,B2) entry should probably be D instead of P. */
+/* Note: The (PR,ID) entry should probably be D instead of I. */
+
+void
+u8_possible_linebreaks (const unsigned char *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const unsigned char *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ /* Don't break inside multibyte characters. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+
+ while (s < s_end)
+ {
+ unsigned int uc;
+ int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
+ int prop = lbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with combining characters. */
+ q = p;
+ if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character. */
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_AL. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_AL;
+ goto lookup_via_table;
+ }
+ }
+ else if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else
+ {
+ switch (lbrk_table [last_prop-1] [prop-1])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s += count;
+ p += count;
+ }
+}
+
+#ifdef unused
+
+void
+u16_possible_linebreaks (const unsigned short *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const unsigned short *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ /* Don't break inside multibyte characters. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+
+ while (s < s_end)
+ {
+ unsigned int uc;
+ int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
+ int prop = lbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with combining characters. */
+ q = p;
+ if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character. */
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_AL. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_AL;
+ goto lookup_via_table;
+ }
+ }
+ else if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else
+ {
+ switch (lbrk_table [last_prop-1] [prop-1])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s += count;
+ p += count;
+ }
+}
+
+void
+u32_possible_linebreaks (const unsigned int *s, size_t n, const char *encoding, char *p)
+{
+ int LBP_AI_REPLACEMENT = (is_cjk_encoding (encoding) ? LBP_ID : LBP_AL);
+ const unsigned int *s_end = s + n;
+ int last_prop = LBP_BK; /* line break property of last non-space character */
+ char *seen_space = NULL; /* Was a space seen after the last non-space character? */
+ char *seen_space2 = NULL; /* At least two spaces after the last non-space? */
+
+ while (s < s_end)
+ {
+ unsigned int uc = *s;
+ int prop = lbrkprop_lookup (uc);
+
+ if (prop == LBP_BK)
+ {
+ /* Mandatory break. */
+ *p = UC_BREAK_MANDATORY;
+ last_prop = LBP_BK;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ else
+ {
+ char *q;
+
+ /* Resolve property values whose behaviour is not fixed. */
+ switch (prop)
+ {
+ case LBP_AI:
+ /* Resolve ambiguous. */
+ prop = LBP_AI_REPLACEMENT;
+ break;
+ case LBP_CB:
+ /* This is arbitrary. */
+ prop = LBP_ID;
+ break;
+ case LBP_SA:
+ /* We don't handle complex scripts yet.
+ Treat LBP_SA like LBP_XX. */
+ case LBP_XX:
+ /* This is arbitrary. */
+ prop = LBP_AL;
+ break;
+ }
+
+ /* Deal with combining characters. */
+ q = p;
+ if (prop == LBP_CM)
+ {
+ /* Don't break just before a combining character. */
+ *p = UC_BREAK_PROHIBITED;
+ /* A combining character turns a preceding space into LBP_AL. */
+ if (seen_space != NULL)
+ {
+ q = seen_space;
+ seen_space = seen_space2;
+ prop = LBP_AL;
+ goto lookup_via_table;
+ }
+ }
+ else if (prop == LBP_SP)
+ {
+ /* Don't break just before a space. */
+ *p = UC_BREAK_PROHIBITED;
+ seen_space2 = seen_space;
+ seen_space = p;
+ }
+ else
+ {
+ lookup_via_table:
+ /* prop must be usable as an index for table 7.3 of UTR #14. */
+ if (!(prop >= 1 && prop <= sizeof(lbrk_table) / sizeof(lbrk_table[0])))
+ abort ();
+
+ if (last_prop == LBP_BK)
+ {
+ /* Don't break at the beginning of a line. */
+ *q = UC_BREAK_PROHIBITED;
+ }
+ else
+ {
+ switch (lbrk_table [last_prop-1] [prop-1])
+ {
+ case D:
+ *q = UC_BREAK_POSSIBLE;
+ break;
+ case I:
+ *q = (seen_space != NULL ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED);
+ break;
+ case P:
+ *q = UC_BREAK_PROHIBITED;
+ break;
+ default:
+ abort ();
+ }
+ }
+ last_prop = prop;
+ seen_space = NULL;
+ seen_space2 = NULL;
+ }
+ }
+
+ s++;
+ p++;
+ }
+}
+
+#endif
+
+
+/* Choose the best line breaks, assuming the uc_width function.
+ Return the column after the end of the string. */
+
+int
+u8_width_linebreaks (const unsigned char *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const unsigned char *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u8_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ unsigned int uc;
+ int count = u8_mbtouc_unsafe (&uc, s, s_end - s);
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s += count;
+ p += count;
+ if (o != NULL)
+ o += count;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
+
+#ifdef unused
+
+int
+u16_width_linebreaks (const unsigned short *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const unsigned short *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u16_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ unsigned int uc;
+ int count = u16_mbtouc_unsafe (&uc, s, s_end - s);
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s += count;
+ p += count;
+ if (o != NULL)
+ o += count;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
+
+int
+u32_width_linebreaks (const unsigned int *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ const unsigned int *s_end;
+ char *last_p;
+ int last_column;
+ int piece_width;
+
+ u32_possible_linebreaks (s, n, encoding, p);
+
+ s_end = s + n;
+ last_p = NULL;
+ last_column = start_column;
+ piece_width = 0;
+ while (s < s_end)
+ {
+ unsigned int uc = *s;
+
+ /* Respect the override. */
+ if (o != NULL && *o != UC_BREAK_UNDEFINED)
+ *p = *o;
+
+ if (*p == UC_BREAK_POSSIBLE || *p == UC_BREAK_MANDATORY)
+ {
+ /* An atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+ }
+
+ if (*p == UC_BREAK_MANDATORY)
+ {
+ /* uc is a line break character. */
+ /* Start a new piece at column 0. */
+ last_p = NULL;
+ last_column = 0;
+ piece_width = 0;
+ }
+ else
+ {
+ /* uc is not a line break character. */
+ int w;
+
+ if (*p == UC_BREAK_POSSIBLE)
+ {
+ /* Start a new piece. */
+ last_p = p;
+ last_column += piece_width;
+ piece_width = 0;
+ /* No line break for the moment, may be turned into
+ UC_BREAK_POSSIBLE later, via last_p. */
+ }
+
+ *p = UC_BREAK_PROHIBITED;
+
+ w = uc_width (uc, encoding);
+ if (w >= 0) /* ignore control characters in the string */
+ piece_width += w;
+ }
+
+ s++;
+ p++;
+ if (o != NULL)
+ o++;
+ }
+
+ /* The last atomic piece of text ends here. */
+ if (last_p != NULL && last_column + piece_width + at_end_columns > width)
+ {
+ /* Insert a line break. */
+ *last_p = UC_BREAK_POSSIBLE;
+ last_column = 0;
+ }
+
+ return last_column + piece_width;
+}
+
+#endif
+
+
+#ifdef TEST1
+
+#include <stdio.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ if (argc == 1)
+ {
+ /* Display all the break opportunities in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ u8_possible_linebreaks ((unsigned char *) input, length, "UTF-8", breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ /* U+2027 in UTF-8 encoding */
+ putc (0xe2, stdout); putc (0x80, stdout); putc (0xa7, stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ /* U+21B2 (or U+21B5) in UTF-8 encoding */
+ putc (0xe2, stdout); putc (0x86, stdout); putc (0xb2, stdout);
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else if (argc == 2)
+ {
+ /* Insert line breaks for a given width. */
+ int width = atoi (argv[1]);
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ u8_width_linebreaks ((unsigned char *) input, length, width, 0, 0, NULL, "UTF-8", breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('\n', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST1 */
+
+
+/* Now the same thing with an arbitrary encoding.
+
+ We convert the input string to Unicode.
+
+ The standardized Unicode encodings are UTF-8, UCS-2, UCS-4, UTF-16,
+ UTF-16BE, UTF-16LE, UTF-7. UCS-2 supports only characters up to
+ \U0000FFFF. UTF-16 and variants support only characters up to
+ \U0010FFFF. UTF-7 is way too complex and not supported by glibc-2.1.
+ UCS-4 specification leaves doubts about endianness and byte order mark.
+ glibc currently interprets it as big endian without byte order mark,
+ but this is not backed by an RFC. So we use UTF-8. It supports
+ characters up to \U7FFFFFFF and is unambiguously defined. */
+
+#if HAVE_ICONV
+
+#include <iconv.h>
+#include <errno.h>
+
+/* Luckily, the encoding's name is platform independent. */
+#define UTF8_NAME "UTF-8"
+
+/* Return the length of a string after conversion through an iconv_t. */
+static size_t
+iconv_string_length (iconv_t cd, const char *s, size_t n)
+{
+#define TMPBUFSIZE 4096
+ size_t count = 0;
+ char tmpbuf[TMPBUFSIZE];
+ const char *inptr = s;
+ size_t insize = n;
+ while (insize > 0)
+ {
+ char *outptr = tmpbuf;
+ size_t outsize = TMPBUFSIZE;
+ size_t res = iconv (cd, (ICONV_CONST char **) &inptr, &insize, &outptr, &outsize);
+ if (res == (size_t)(-1) && errno != E2BIG)
+ return (size_t)(-1);
+ count += outptr - tmpbuf;
+ }
+ /* Avoid glibc-2.1 bug and Solaris 7 through 9 bug. */
+#if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+ {
+ char *outptr = tmpbuf;
+ size_t outsize = TMPBUFSIZE;
+ size_t res = iconv (cd, NULL, NULL, &outptr, &outsize);
+ if (res == (size_t)(-1))
+ return (size_t)(-1);
+ count += outptr - tmpbuf;
+ }
+ /* Return to the initial state. */
+ iconv (cd, NULL, NULL, NULL, NULL);
+#endif
+ return count;
+#undef TMPBUFSIZE
+}
+
+static void
+iconv_string_keeping_offsets (iconv_t cd, const char *s, size_t n,
+ size_t *offtable, char *t, size_t m)
+{
+ size_t i;
+ const char *s_end;
+ const char *inptr;
+ char *outptr;
+ size_t outsize;
+ /* Avoid glibc-2.1 bug. */
+#if !defined _LIBICONV_VERSION && (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1)
+ const size_t extra = 1;
+#else
+ const size_t extra = 0;
+#endif
+
+ for (i = 0; i < n; i++)
+ offtable[i] = (size_t)(-1);
+
+ s_end = s + n;
+ inptr = s;
+ outptr = t;
+ outsize = m + extra;
+ while (inptr < s_end)
+ {
+ const char *saved_inptr;
+ size_t insize;
+ size_t res;
+
+ offtable[inptr - s] = outptr - t;
+
+ saved_inptr = inptr;
+ res = (size_t)(-1);
+ for (insize = 1; inptr + insize <= s_end; insize++)
+ {
+ res = iconv (cd, (ICONV_CONST char **) &inptr, &insize, &outptr, &outsize);
+ if (!(res == (size_t)(-1) && errno == EINVAL))
+ break;
+ /* We expect that no input bytes have been consumed so far. */
+ if (inptr != saved_inptr)
+ abort ();
+ }
+ /* After we verified the convertibility and computed the translation's
+ size m, there shouldn't be any conversion error here. */
+ if (res == (size_t)(-1))
+ abort ();
+ }
+ /* Avoid glibc-2.1 bug and Solaris 7 bug. */
+#if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+ if (iconv (cd, NULL, NULL, &outptr, &outsize) == (size_t)(-1))
+ abort ();
+#endif
+ /* We should have produced exactly m output bytes. */
+ if (outsize != extra)
+ abort ();
+}
+
+#endif /* HAVE_ICONV */
+
+#if C_CTYPE_ASCII
+
+/* Tests whether a string is entirely ASCII. Returns 1 if yes.
+ Returns 0 if the string is in an 8-bit encoding or an ISO-2022 encoding. */
+static int
+is_all_ascii (const char *s, size_t n)
+{
+ for (; n > 0; s++, n--)
+ {
+ unsigned char c = (unsigned char) *s;
+
+ if (!(c_isprint (c) || c_isspace (c)))
+ return 0;
+ }
+ return 1;
+}
+
+#endif /* C_CTYPE_ASCII */
+
+#if defined unused || defined TEST2
+
+void
+mbs_possible_linebreaks (const char *s, size_t n, const char *encoding,
+ char *p)
+{
+ if (n == 0)
+ return;
+ if (is_utf8_encoding (encoding))
+ u8_possible_linebreaks ((const unsigned char *) s, n, encoding, p);
+ else
+ {
+#if HAVE_ICONV
+ iconv_t to_utf8;
+ /* Avoid glibc-2.1 bug with EUC-KR. */
+# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
+ if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0))
+ to_utf8 = (iconv_t)(-1);
+ else
+# endif
+ /* Avoid Solaris 9 bug with GB2312, EUC-TW, BIG5, BIG5-HKSCS, GBK,
+ GB18030. */
+# if defined __sun && !defined _LIBICONV_VERSION
+ if ( STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
+ || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
+ || STREQ (encoding, "BIG5-HKSCS", 'B', 'I', 'G', '5', '-', 'H', 'K', 'S', 'C')
+ || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
+ || STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+ to_utf8 = (iconv_t)(-1);
+ else
+# endif
+ to_utf8 = iconv_open (UTF8_NAME, encoding);
+ if (to_utf8 != (iconv_t)(-1))
+ {
+ /* Determine the length of the resulting UTF-8 string. */
+ size_t m = iconv_string_length (to_utf8, s, n);
+ if (m != (size_t)(-1))
+ {
+ /* Convert the string to UTF-8 and build a translation table
+ from offsets into s to offsets into the translated string. */
+ size_t memory_size = xsum3 (xtimes (n, sizeof (size_t)), m, m);
+ char *memory =
+ (size_in_bounds_p (memory_size) ? malloc (memory_size) : NULL);
+ if (memory != NULL)
+ {
+ size_t *offtable = (size_t *) memory;
+ char *t = (char *) (offtable + n);
+ char *q = (char *) (t + m);
+ size_t i;
+
+ iconv_string_keeping_offsets (to_utf8, s, n, offtable, t, m);
+
+ /* Determine the possible line breaks of the UTF-8 string. */
+ u8_possible_linebreaks ((const unsigned char *) t, m, encoding, q);
+
+ /* Translate the result back to the original string. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+ for (i = 0; i < n; i++)
+ if (offtable[i] != (size_t)(-1))
+ p[i] = q[offtable[i]];
+
+ free (memory);
+ iconv_close (to_utf8);
+ return;
+ }
+ }
+ iconv_close (to_utf8);
+ }
+#endif
+ /* Impossible to convert. */
+#if C_CTYPE_ASCII
+ if (is_all_ascii (s, n))
+ {
+ /* ASCII is a subset of UTF-8. */
+ u8_possible_linebreaks ((const unsigned char *) s, n, encoding, p);
+ return;
+ }
+#endif
+ /* We have a non-ASCII string and cannot convert it.
+ Don't produce line breaks except those already present in the
+ input string. All we assume here is that the encoding is
+ minimally ASCII compatible. */
+ {
+ const char *s_end = s + n;
+ while (s < s_end)
+ {
+ *p = (*s == '\n' ? UC_BREAK_MANDATORY : UC_BREAK_PROHIBITED);
+ s++;
+ p++;
+ }
+ }
+ }
+}
+
+#endif
+
+int
+mbs_width_linebreaks (const char *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p)
+{
+ if (n == 0)
+ return start_column;
+ if (is_utf8_encoding (encoding))
+ return u8_width_linebreaks ((const unsigned char *) s, n, width, start_column, at_end_columns, o, encoding, p);
+ else
+ {
+#if HAVE_ICONV
+ iconv_t to_utf8;
+ /* Avoid glibc-2.1 bug with EUC-KR. */
+# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
+ if (STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0))
+ to_utf8 = (iconv_t)(-1);
+ else
+# endif
+ /* Avoid Solaris 9 bug with GB2312, EUC-TW, BIG5, BIG5-HKSCS, GBK,
+ GB18030. */
+# if defined __sun && !defined _LIBICONV_VERSION
+ if ( STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
+ || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
+ || STREQ (encoding, "BIG5-HKSCS", 'B', 'I', 'G', '5', '-', 'H', 'K', 'S', 'C')
+ || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
+ || STREQ (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+ to_utf8 = (iconv_t)(-1);
+ else
+# endif
+ to_utf8 = iconv_open (UTF8_NAME, encoding);
+ if (to_utf8 != (iconv_t)(-1))
+ {
+ /* Determine the length of the resulting UTF-8 string. */
+ size_t m = iconv_string_length (to_utf8, s, n);
+ if (m != (size_t)(-1))
+ {
+ /* Convert the string to UTF-8 and build a translation table
+ from offsets into s to offsets into the translated string. */
+ size_t memory_size =
+ xsum4 (xtimes (n, sizeof (size_t)), m, m,
+ (o != NULL ? m : 0));
+ char *memory =
+ (char *)
+ (size_in_bounds_p (memory_size) ? malloc (memory_size) : NULL);
+ if (memory != NULL)
+ {
+ size_t *offtable = (size_t *) memory;
+ char *t = (char *) (offtable + n);
+ char *q = (char *) (t + m);
+ char *o8 = (o != NULL ? (char *) (q + m) : NULL);
+ int res_column;
+ size_t i;
+
+ iconv_string_keeping_offsets (to_utf8, s, n, offtable, t, m);
+
+ /* Translate the overrides to the UTF-8 string. */
+ if (o != NULL)
+ {
+ memset (o8, UC_BREAK_UNDEFINED, m);
+ for (i = 0; i < n; i++)
+ if (offtable[i] != (size_t)(-1))
+ o8[offtable[i]] = o[i];
+ }
+
+ /* Determine the line breaks of the UTF-8 string. */
+ res_column =
+ u8_width_linebreaks ((const unsigned char *) t, m, width, start_column, at_end_columns, o8, encoding, q);
+
+ /* Translate the result back to the original string. */
+ memset (p, UC_BREAK_PROHIBITED, n);
+ for (i = 0; i < n; i++)
+ if (offtable[i] != (size_t)(-1))
+ p[i] = q[offtable[i]];
+
+ free (memory);
+ iconv_close (to_utf8);
+ return res_column;
+ }
+ }
+ iconv_close (to_utf8);
+ }
+#endif
+ /* Impossible to convert. */
+#if C_CTYPE_ASCII
+ if (is_all_ascii (s, n))
+ {
+ /* ASCII is a subset of UTF-8. */
+ return u8_width_linebreaks ((const unsigned char *) s, n, width, start_column, at_end_columns, o, encoding, p);
+ }
+#endif
+ /* We have a non-ASCII string and cannot convert it.
+ Don't produce line breaks except those already present in the
+ input string. All we assume here is that the encoding is
+ minimally ASCII compatible. */
+ {
+ const char *s_end = s + n;
+ while (s < s_end)
+ {
+ *p = ((o != NULL && *o == UC_BREAK_MANDATORY) || *s == '\n'
+ ? UC_BREAK_MANDATORY
+ : UC_BREAK_PROHIBITED);
+ s++;
+ p++;
+ if (o != NULL)
+ o++;
+ }
+ /* We cannot compute widths in this case. */
+ return start_column;
+ }
+ }
+}
+
+
+#ifdef TEST2
+
+#include <stdio.h>
+#include <locale.h>
+
+/* Read the contents of an input stream, and return it, terminated with a NUL
+ byte. */
+char *
+read_file (FILE *stream)
+{
+#define BUFSIZE 4096
+ char *buf = NULL;
+ int alloc = 0;
+ int size = 0;
+ int count;
+
+ while (! feof (stream))
+ {
+ if (size + BUFSIZE > alloc)
+ {
+ alloc = alloc + alloc / 2;
+ if (alloc < size + BUFSIZE)
+ alloc = size + BUFSIZE;
+ buf = realloc (buf, alloc);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ }
+ count = fread (buf + size, 1, BUFSIZE, stream);
+ if (count == 0)
+ {
+ if (ferror (stream))
+ {
+ perror ("fread");
+ exit (1);
+ }
+ }
+ else
+ size += count;
+ }
+ buf = realloc (buf, size + 1);
+ if (buf == NULL)
+ {
+ fprintf (stderr, "out of memory\n");
+ exit (1);
+ }
+ buf[size] = '\0';
+ return buf;
+#undef BUFSIZE
+}
+
+int
+main (int argc, char * argv[])
+{
+ setlocale (LC_CTYPE, "");
+ if (argc == 1)
+ {
+ /* Display all the break opportunities in the input string. */
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ mbs_possible_linebreaks (input, length, locale_charset (), breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('|', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else if (argc == 2)
+ {
+ /* Insert line breaks for a given width. */
+ int width = atoi (argv[1]);
+ char *input = read_file (stdin);
+ int length = strlen (input);
+ char *breaks = malloc (length);
+ int i;
+
+ mbs_width_linebreaks (input, length, width, 0, 0, NULL, locale_charset (), breaks);
+
+ for (i = 0; i < length; i++)
+ {
+ switch (breaks[i])
+ {
+ case UC_BREAK_POSSIBLE:
+ putc ('\n', stdout);
+ break;
+ case UC_BREAK_MANDATORY:
+ break;
+ case UC_BREAK_PROHIBITED:
+ break;
+ default:
+ abort ();
+ }
+ putc (input[i], stdout);
+ }
+
+ free (breaks);
+
+ return 0;
+ }
+ else
+ return 1;
+}
+
+#endif /* TEST2 */
Added: tuxmath/trunk/src/linebreak.h
===================================================================
--- tuxmath/trunk/src/linebreak.h (rev 0)
+++ tuxmath/trunk/src/linebreak.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,94 @@
+/* linebreak.h - line breaking of Unicode strings
+ Copyright (C) 2001-2003, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible at clisp.cons.org>, 2001.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _LINEBREAK_H
+#define _LINEBREAK_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Line breaking. */
+
+enum {
+ UC_BREAK_UNDEFINED,
+ UC_BREAK_PROHIBITED,
+ UC_BREAK_POSSIBLE,
+ UC_BREAK_MANDATORY,
+ UC_BREAK_HYPHENATION
+};
+
+/* Determine the line break points in S, and store the result at p[0..n-1].
+ p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character.
+ p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between
+ s[i-1] and s[i].
+ p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be
+ inserted between s[i-1] and s[i]. But beware of language dependent
+ hyphenation rules.
+ p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated.
+ */
+extern void u8_possible_linebreaks (const unsigned char *s, size_t n,
+ const char *encoding,
+ char *p);
+extern void u16_possible_linebreaks (const unsigned short *s, size_t n,
+ const char *encoding,
+ char *p);
+extern void u32_possible_linebreaks (const unsigned int *s, size_t n,
+ const char *encoding,
+ char *p);
+extern void mbs_possible_linebreaks (const char *s, size_t n,
+ const char *encoding,
+ char *p);
+
+/* Choose the best line breaks, assuming the uc_width function.
+ Return the column after the end of the string.
+ o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes
+ precedence over p[i] as returned by the *_possible_linebreaks function.
+ */
+extern int
+ u8_width_linebreaks (const unsigned char *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ u16_width_linebreaks (const unsigned short *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ u32_width_linebreaks (const unsigned int *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+extern int
+ mbs_width_linebreaks (const char *s, size_t n,
+ int width, int start_column, int at_end_columns,
+ const char *o, const char *encoding,
+ char *p);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LINEBREAK_H */
Modified: tuxmath/trunk/src/linewrap.c
===================================================================
--- tuxmath/trunk/src/linewrap.c 2009-02-05 13:09:44 UTC (rev 870)
+++ tuxmath/trunk/src/linewrap.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -24,7 +24,7 @@
//#include <locale.h>
#include "gettext.h"
-#include "../linebreak/linebreak.h"
+#include "linebreak.h"
#include "linewrap.h"
static char *wrapped_lines0[MAX_LINES]; // for internal storage
Added: tuxmath/trunk/src/localcharset.h
===================================================================
--- tuxmath/trunk/src/localcharset.h (rev 0)
+++ tuxmath/trunk/src/localcharset.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,41 @@
+/* Determine a canonical name for the current locale's character encoding.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
+ This file is part of the GNU CHARSET Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
Added: tuxmath/trunk/src/streq.h
===================================================================
--- tuxmath/trunk/src/streq.h (rev 0)
+++ tuxmath/trunk/src/streq.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,176 @@
+/* Optimized string comparison.
+ Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno at clisp.org>. */
+
+#ifndef _GL_STREQ_H
+#define _GL_STREQ_H
+
+#include <string.h>
+
+/* STREQ allows to optimize string comparison with a small literal string.
+ STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ is semantically equivalent to
+ strcmp (s, "EUC-KR") == 0
+ just faster. */
+
+/* Help GCC to generate good code for string comparisons with
+ immediate strings. */
+#if defined (__GNUC__) && defined (__OPTIMIZE__)
+
+static inline int
+streq9 (const char *s1, const char *s2)
+{
+ return strcmp (s1 + 9, s2 + 9) == 0;
+}
+
+static inline int
+streq8 (const char *s1, const char *s2, char s28)
+{
+ if (s1[8] == s28)
+ {
+ if (s28 == 0)
+ return 1;
+ else
+ return streq9 (s1, s2);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq7 (const char *s1, const char *s2, char s27, char s28)
+{
+ if (s1[7] == s27)
+ {
+ if (s27 == 0)
+ return 1;
+ else
+ return streq8 (s1, s2, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
+{
+ if (s1[6] == s26)
+ {
+ if (s26 == 0)
+ return 1;
+ else
+ return streq7 (s1, s2, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
+{
+ if (s1[5] == s25)
+ {
+ if (s25 == 0)
+ return 1;
+ else
+ return streq6 (s1, s2, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[4] == s24)
+ {
+ if (s24 == 0)
+ return 1;
+ else
+ return streq5 (s1, s2, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[3] == s23)
+ {
+ if (s23 == 0)
+ return 1;
+ else
+ return streq4 (s1, s2, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[2] == s22)
+ {
+ if (s22 == 0)
+ return 1;
+ else
+ return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[1] == s21)
+ {
+ if (s21 == 0)
+ return 1;
+ else
+ return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+static inline int
+streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
+{
+ if (s1[0] == s20)
+ {
+ if (s20 == 0)
+ return 1;
+ else
+ return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
+ }
+ else
+ return 0;
+}
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
+
+#else
+
+#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+ (strcmp (s1, s2) == 0)
+
+#endif
+
+#endif /* _GL_STREQ_H */
Added: tuxmath/trunk/src/u16-mbtouc-aux.c
===================================================================
--- tuxmath/trunk/src/u16-mbtouc-aux.c (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,51 @@
+/* Conversion UTF-16 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_INLINE
+
+int
+u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u16-mbtouc-aux.c~
===================================================================
--- tuxmath/trunk/src/u16-mbtouc-aux.c~ (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc-aux.c~ 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,51 @@
+/* Conversion UTF-16 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "../unistr.h"
+
+#if HAVE_INLINE
+
+int
+u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u16-mbtouc-unsafe-aux.c
===================================================================
--- tuxmath/trunk/src/u16-mbtouc-unsafe-aux.c (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc-unsafe-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,55 @@
+/* Conversion UTF-16 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_INLINE
+
+int
+u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+#endif
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+#endif
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u16-mbtouc-unsafe.c
===================================================================
--- tuxmath/trunk/src/u16-mbtouc-unsafe.c (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc-unsafe.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,60 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+#if CONFIG_UNICODE_SAFETY
+ if (c < 0xdc00)
+#endif
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+#endif
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u16-mbtouc.c
===================================================================
--- tuxmath/trunk/src/u16-mbtouc.c (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,56 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u16-mbtouc.c~
===================================================================
--- tuxmath/trunk/src/u16-mbtouc.c~ (rev 0)
+++ tuxmath/trunk/src/u16-mbtouc.c~ 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,56 @@
+/* Look at first character in UTF-16 string.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "../unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ if (c < 0xdc00)
+ {
+ if (n >= 2)
+ {
+ if (s[1] >= 0xdc00 && s[1] < 0xe000)
+ {
+ *puc = 0x10000 + ((c - 0xd800) << 10) + (s[1] - 0xdc00);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ }
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u8-mbtouc-aux.c
===================================================================
--- tuxmath/trunk/src/u8-mbtouc-aux.c (rev 0)
+++ tuxmath/trunk/src/u8-mbtouc-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,158 @@
+/* Conversion UTF-8 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_INLINE
+
+int
+u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u8-mbtouc-unsafe-aux.c
===================================================================
--- tuxmath/trunk/src/u8-mbtouc-unsafe-aux.c (rev 0)
+++ tuxmath/trunk/src/u8-mbtouc-unsafe-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,168 @@
+/* Conversion UTF-8 to UCS-4.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if HAVE_INLINE
+
+int
+u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u8-mbtouc-unsafe.c
===================================================================
--- tuxmath/trunk/src/u8-mbtouc-unsafe.c (rev 0)
+++ tuxmath/trunk/src/u8-mbtouc-unsafe.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,173 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40)
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+#if CONFIG_UNICODE_SAFETY
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+#endif
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u8-mbtouc.c
===================================================================
--- tuxmath/trunk/src/u8-mbtouc.c (rev 0)
+++ tuxmath/trunk/src/u8-mbtouc.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,163 @@
+/* Look at first character in UTF-8 string.
+ Copyright (C) 1999-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (n >= 2)
+ {
+ if ((s[1] ^ 0x80) < 0x40)
+ {
+ *puc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (s[1] ^ 0x80);
+ return 2;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)
+ && (c != 0xed || s[1] < 0xa0))
+ {
+ *puc = ((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (s[1] ^ 0x80) << 6)
+ | (unsigned int) (s[2] ^ 0x80);
+ return 3;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)
+#if 1
+ && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90))
+#endif
+ )
+ {
+ *puc = ((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (s[1] ^ 0x80) << 12)
+ | ((unsigned int) (s[2] ^ 0x80) << 6)
+ | (unsigned int) (s[3] ^ 0x80);
+ return 4;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#if 0
+ else if (c < 0xfc)
+ {
+ if (n >= 5)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88))
+ {
+ *puc = ((unsigned int) (c & 0x03) << 24)
+ | ((unsigned int) (s[1] ^ 0x80) << 18)
+ | ((unsigned int) (s[2] ^ 0x80) << 12)
+ | ((unsigned int) (s[3] ^ 0x80) << 6)
+ | (unsigned int) (s[4] ^ 0x80);
+ return 5;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+ else if (c < 0xfe)
+ {
+ if (n >= 6)
+ {
+ if ((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84))
+ {
+ *puc = ((unsigned int) (c & 0x01) << 30)
+ | ((unsigned int) (s[1] ^ 0x80) << 24)
+ | ((unsigned int) (s[2] ^ 0x80) << 18)
+ | ((unsigned int) (s[3] ^ 0x80) << 12)
+ | ((unsigned int) (s[4] ^ 0x80) << 6)
+ | (unsigned int) (s[5] ^ 0x80);
+ return 6;
+ }
+ /* invalid multibyte character */
+ }
+ else
+ {
+ /* incomplete multibyte character */
+ *puc = 0xfffd;
+ return n;
+ }
+ }
+#endif
+ }
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+
+#endif
Added: tuxmath/trunk/src/u8-uctomb-aux.c
===================================================================
--- tuxmath/trunk/src/u8-uctomb-aux.c (rev 0)
+++ tuxmath/trunk/src/u8-uctomb-aux.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,69 @@
+/* Conversion UCS-4 to UTF-8.
+ Copyright (C) 2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+int
+u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n)
+{
+ int count;
+
+ if (uc < 0x80)
+ /* The case n >= 1 is already handled by the caller. */
+ return -2;
+ else if (uc < 0x800)
+ count = 2;
+ else if (uc < 0x10000)
+ {
+ if (uc < 0xd800 || uc >= 0xe000)
+ count = 3;
+ else
+ return -1;
+ }
+#if 0
+ else if (uc < 0x200000)
+ count = 4;
+ else if (uc < 0x4000000)
+ count = 5;
+ else if (uc <= 0x7fffffff)
+ count = 6;
+#else
+ else if (uc < 0x110000)
+ count = 4;
+#endif
+ else
+ return -1;
+
+ if (n < count)
+ return -2;
+
+ switch (count) /* note: code falls through cases! */
+ {
+#if 0
+ case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
+ case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
+#endif
+ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
+ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
+ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
+ /*case 1:*/ s[0] = uc;
+ }
+ return count;
+}
Added: tuxmath/trunk/src/u8-uctomb.c
===================================================================
--- tuxmath/trunk/src/u8-uctomb.c (rev 0)
+++ tuxmath/trunk/src/u8-uctomb.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,83 @@
+/* Store a character in UTF-8 string.
+ Copyright (C) 2002, 2005-2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unistr.h"
+
+#if !HAVE_INLINE
+
+int
+u8_uctomb (uint8_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0x80)
+ {
+ if (n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ /* else return -2, below. */
+ }
+ else
+ {
+ int count;
+
+ if (uc < 0x800)
+ count = 2;
+ else if (uc < 0x10000)
+ {
+ if (uc < 0xd800 || uc >= 0xe000)
+ count = 3;
+ else
+ return -1;
+ }
+#if 0
+ else if (uc < 0x200000)
+ count = 4;
+ else if (uc < 0x4000000)
+ count = 5;
+ else if (uc <= 0x7fffffff)
+ count = 6;
+#else
+ else if (uc < 0x110000)
+ count = 4;
+#endif
+ else
+ return -1;
+
+ if (n >= count)
+ {
+ switch (count) /* note: code falls through cases! */
+ {
+#if 0
+ case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000;
+ case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000;
+#endif
+ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000;
+ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800;
+ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0;
+ /*case 1:*/ s[0] = uc;
+ }
+ return count;
+ }
+ }
+ return -2;
+}
+
+#endif
Added: tuxmath/trunk/src/unistr.h
===================================================================
--- tuxmath/trunk/src/unistr.h (rev 0)
+++ tuxmath/trunk/src/unistr.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,661 @@
+/* Elementary Unicode string functions.
+ Copyright (C) 2001-2002, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNISTR_H
+#define _UNISTR_H
+
+#include "unitypes.h"
+
+/* Get bool. */
+#include <stdbool.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Conventions:
+
+ All functions prefixed with u8_ operate on UTF-8 encoded strings.
+ Their unit is an uint8_t (1 byte).
+
+ All functions prefixed with u16_ operate on UTF-16 encoded strings.
+ Their unit is an uint16_t (a 2-byte word).
+
+ All functions prefixed with u32_ operate on UCS-4 encoded strings.
+ Their unit is an uint32_t (a 4-byte word).
+
+ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
+ n units.
+
+ All arguments starting with "str" and the arguments of functions starting
+ with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string
+ which terminates at the first NUL unit. This termination unit is
+ considered part of the string for all memory allocation purposes, but
+ is not considered part of the string for all other logical purposes.
+
+ Functions returning a string result take a (resultbuf, lengthp) argument
+ pair. If resultbuf is not NULL and the result fits into *lengthp units,
+ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly
+ allocated string is returned. In both cases, *lengthp is set to the
+ length (number of units) of the returned string. In case of error,
+ NULL is returned and errno is set. */
+
+
+/* Elementary string checks. */
+
+/* Check whether an UTF-8 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint8_t *
+ u8_check (const uint8_t *s, size_t n);
+
+/* Check whether an UTF-16 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint16_t *
+ u16_check (const uint16_t *s, size_t n);
+
+/* Check whether an UCS-4 string is well-formed.
+ Return NULL if valid, or a pointer to the first invalid unit otherwise. */
+extern const uint32_t *
+ u32_check (const uint32_t *s, size_t n);
+
+
+/* Elementary string conversions. */
+
+/* Convert an UTF-8 string to an UTF-16 string. */
+extern uint16_t *
+ u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-8 string to an UCS-4 string. */
+extern uint32_t *
+ u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-16 string to an UTF-8 string. */
+extern uint8_t *
+ u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UTF-16 string to an UCS-4 string. */
+extern uint32_t *
+ u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UCS-4 string to an UTF-8 string. */
+extern uint8_t *
+ u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf,
+ size_t *lengthp);
+
+/* Convert an UCS-4 string to an UTF-16 string. */
+extern uint16_t *
+ u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf,
+ size_t *lengthp);
+
+
+/* Elementary string functions. */
+
+/* Return the length (number of units) of the first character in S, which is
+ no longer than N. Return 0 if it is the NUL character. Return -1 upon
+ failure. */
+/* Similar to mblen(), except that s must not be NULL. */
+extern int
+ u8_mblen (const uint8_t *s, size_t n);
+extern int
+ u16_mblen (const uint16_t *s, size_t n);
+extern int
+ u32_mblen (const uint32_t *s, size_t n);
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
+ and an appropriate number of units is returned.
+ The number of available units, N, must be > 0. */
+/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0,
+ and the NUL character is not treated specially. */
+/* The variants with _safe suffix are safe, even if the library is compiled
+ without --enable-safety. */
+
+#ifdef GNULIB_UNISTR_U8_MBTOUC_UNSAFE
+# if !HAVE_INLINE
+extern int
+ u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n);
+# else
+extern int
+ u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n);
+static inline int
+u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u8_mbtouc_unsafe_aux (puc, s, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U16_MBTOUC_UNSAFE
+# if !HAVE_INLINE
+extern int
+ u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n);
+# else
+extern int
+ u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n);
+static inline int
+u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u16_mbtouc_unsafe_aux (puc, s, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U32_MBTOUC_UNSAFE
+# if !HAVE_INLINE
+extern int
+ u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n);
+# else
+static inline int
+u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n)
+{
+ uint32_t c = *s;
+
+# if CONFIG_UNICODE_SAFETY
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+# endif
+ *puc = c;
+# if CONFIG_UNICODE_SAFETY
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+# endif
+ return 1;
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U8_MBTOUC
+# if !HAVE_INLINE
+extern int
+ u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n);
+# else
+extern int
+ u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n);
+static inline int
+u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
+{
+ uint8_t c = *s;
+
+ if (c < 0x80)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u8_mbtouc_aux (puc, s, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U16_MBTOUC
+# if !HAVE_INLINE
+extern int
+ u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n);
+# else
+extern int
+ u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n);
+static inline int
+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
+{
+ uint16_t c = *s;
+
+ if (c < 0xd800 || c >= 0xe000)
+ {
+ *puc = c;
+ return 1;
+ }
+ else
+ return u16_mbtouc_aux (puc, s, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U32_MBTOUC
+# if !HAVE_INLINE
+extern int
+ u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n);
+# else
+static inline int
+u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n)
+{
+ uint32_t c = *s;
+
+ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
+ *puc = c;
+ else
+ /* invalid multibyte character */
+ *puc = 0xfffd;
+ return 1;
+}
+# endif
+#endif
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd,
+ and -1 is returned for an invalid sequence of units, -2 is returned for an
+ incomplete sequence of units.
+ The number of available units, N, must be > 0. */
+/* Similar to u*_mbtouc(), except that the return value gives more details
+ about the failure, similar to mbrtowc(). */
+
+#ifdef GNULIB_UNISTR_U8_MBTOUCR
+extern int
+ u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n);
+#endif
+
+#ifdef GNULIB_UNISTR_U16_MBTOUCR
+extern int
+ u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n);
+#endif
+
+#ifdef GNULIB_UNISTR_U32_MBTOUCR
+extern int
+ u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n);
+#endif
+
+/* Put the multibyte character represented by UC in S, returning its
+ length. Return -1 upon failure, -2 if the number of available units, N,
+ is too small. The latter case cannot occur if N >= 6/2/1, respectively. */
+/* Similar to wctomb(), except that s must not be NULL, and the argument n
+ must be specified. */
+
+#ifdef GNULIB_UNISTR_U8_UCTOMB
+/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */
+extern int
+ u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
+# if !HAVE_INLINE
+extern int
+ u8_uctomb (uint8_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u8_uctomb (uint8_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0x80 && n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ else
+ return u8_uctomb_aux (s, uc, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U16_UCTOMB
+/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */
+extern int
+ u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
+# if !HAVE_INLINE
+extern int
+ u16_uctomb (uint16_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u16_uctomb (uint16_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800 && n > 0)
+ {
+ s[0] = uc;
+ return 1;
+ }
+ else
+ return u16_uctomb_aux (s, uc, n);
+}
+# endif
+#endif
+
+#ifdef GNULIB_UNISTR_U32_UCTOMB
+# if !HAVE_INLINE
+extern int
+ u32_uctomb (uint32_t *s, ucs4_t uc, int n);
+# else
+static inline int
+u32_uctomb (uint32_t *s, ucs4_t uc, int n)
+{
+ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
+ {
+ if (n > 0)
+ {
+ *s = uc;
+ return 1;
+ }
+ else
+ return -2;
+ }
+ else
+ return -1;
+}
+# endif
+#endif
+
+/* Copy N units from SRC to DEST. */
+/* Similar to memcpy(). */
+extern uint8_t *
+ u8_cpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_cpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_cpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Copy N units from SRC to DEST, guaranteeing correct behavior for
+ overlapping memory areas. */
+/* Similar to memmove(). */
+extern uint8_t *
+ u8_move (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_move (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_move (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Set the first N characters of S to UC. UC should be a character that
+ occupies only 1 unit. */
+/* Similar to memset(). */
+extern uint8_t *
+ u8_set (uint8_t *s, ucs4_t uc, size_t n);
+extern uint16_t *
+ u16_set (uint16_t *s, ucs4_t uc, size_t n);
+extern uint32_t *
+ u32_set (uint32_t *s, ucs4_t uc, size_t n);
+
+/* Compare S1 and S2, each of length N. */
+/* Similar to memcmp(). */
+extern int
+ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n);
+extern int
+ u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n);
+extern int
+ u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n);
+
+/* Search the string at S for UC. */
+/* Similar to memchr(). */
+extern uint8_t *
+ u8_chr (const uint8_t *s, size_t n, ucs4_t uc);
+extern uint16_t *
+ u16_chr (const uint16_t *s, size_t n, ucs4_t uc);
+extern uint32_t *
+ u32_chr (const uint32_t *s, size_t n, ucs4_t uc);
+
+/* Count the number of Unicode characters in the N units from S. */
+/* Similar to mbsnlen(). */
+extern size_t
+ u8_mbsnlen (const uint8_t *s, size_t n);
+extern size_t
+ u16_mbsnlen (const uint16_t *s, size_t n);
+extern size_t
+ u32_mbsnlen (const uint32_t *s, size_t n);
+
+/* Elementary string functions with memory allocation. */
+
+/* Make a freshly allocated copy of S, of length N. */
+extern uint8_t *
+ u8_cpy_alloc (const uint8_t *s, size_t n);
+extern uint16_t *
+ u16_cpy_alloc (const uint16_t *s, size_t n);
+extern uint32_t *
+ u32_cpy_alloc (const uint32_t *s, size_t n);
+
+/* Elementary string functions on NUL terminated strings. */
+
+/* Return the length (number of units) of the first character in S.
+ Return 0 if it is the NUL character. Return -1 upon failure. */
+extern int
+ u8_strmblen (const uint8_t *s);
+extern int
+ u16_strmblen (const uint16_t *s);
+extern int
+ u32_strmblen (const uint32_t *s);
+
+/* Return the length (number of units) of the first character in S, putting
+ its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL
+ character. Return -1 upon failure. */
+extern int
+ u8_strmbtouc (ucs4_t *puc, const uint8_t *s);
+extern int
+ u16_strmbtouc (ucs4_t *puc, const uint16_t *s);
+extern int
+ u32_strmbtouc (ucs4_t *puc, const uint32_t *s);
+
+/* Forward iteration step. Advances the pointer past the next character,
+ or returns NULL if the end of the string has been reached. Puts the
+ character's 'ucs4_t' representation in *PUC. */
+extern const uint8_t *
+ u8_next (ucs4_t *puc, const uint8_t *s);
+extern const uint16_t *
+ u16_next (ucs4_t *puc, const uint16_t *s);
+extern const uint32_t *
+ u32_next (ucs4_t *puc, const uint32_t *s);
+
+/* Backward iteration step. Advances the pointer to point to the previous
+ character, or returns NULL if the beginning of the string had been reached.
+ Puts the character's 'ucs4_t' representation in *PUC. */
+extern const uint8_t *
+ u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start);
+extern const uint16_t *
+ u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start);
+extern const uint32_t *
+ u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start);
+
+/* Return the number of units in S. */
+/* Similar to strlen(), wcslen(). */
+extern size_t
+ u8_strlen (const uint8_t *s);
+extern size_t
+ u16_strlen (const uint16_t *s);
+extern size_t
+ u32_strlen (const uint32_t *s);
+
+/* Return the number of units in S, but at most MAXLEN. */
+/* Similar to strnlen(), wcsnlen(). */
+extern size_t
+ u8_strnlen (const uint8_t *s, size_t maxlen);
+extern size_t
+ u16_strnlen (const uint16_t *s, size_t maxlen);
+extern size_t
+ u32_strnlen (const uint32_t *s, size_t maxlen);
+
+/* Copy SRC to DEST. */
+/* Similar to strcpy(), wcscpy(). */
+extern uint8_t *
+ u8_strcpy (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_strcpy (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_strcpy (uint32_t *dest, const uint32_t *src);
+
+/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */
+/* Similar to stpcpy(). */
+extern uint8_t *
+ u8_stpcpy (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_stpcpy (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_stpcpy (uint32_t *dest, const uint32_t *src);
+
+/* Copy no more than N units of SRC to DEST. */
+/* Similar to strncpy(), wcsncpy(). */
+extern uint8_t *
+ u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Copy no more than N characters of SRC to DEST, returning the address of
+ the last character written into DEST. */
+/* Similar to stpncpy(). */
+extern uint8_t *
+ u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Append SRC onto DEST. */
+/* Similar to strcat(), wcscat(). */
+extern uint8_t *
+ u8_strcat (uint8_t *dest, const uint8_t *src);
+extern uint16_t *
+ u16_strcat (uint16_t *dest, const uint16_t *src);
+extern uint32_t *
+ u32_strcat (uint32_t *dest, const uint32_t *src);
+
+/* Append no more than N units of SRC onto DEST. */
+/* Similar to strncat(), wcsncat(). */
+extern uint8_t *
+ u8_strncat (uint8_t *dest, const uint8_t *src, size_t n);
+extern uint16_t *
+ u16_strncat (uint16_t *dest, const uint16_t *src, size_t n);
+extern uint32_t *
+ u32_strncat (uint32_t *dest, const uint32_t *src, size_t n);
+
+/* Compare S1 and S2. */
+/* Similar to strcmp(), wcscmp(). */
+extern int
+ u8_strcmp (const uint8_t *s1, const uint8_t *s2);
+extern int
+ u16_strcmp (const uint16_t *s1, const uint16_t *s2);
+extern int
+ u32_strcmp (const uint32_t *s1, const uint32_t *s2);
+
+/* Compare no more than N units of S1 and S2. */
+/* Similar to strncmp(), wcsncmp(). */
+extern int
+ u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n);
+extern int
+ u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n);
+extern int
+ u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n);
+
+/* Duplicate S, returning an identical malloc'd string. */
+/* Similar to strdup(), wcsdup(). */
+extern uint8_t *
+ u8_strdup (const uint8_t *s);
+extern uint16_t *
+ u16_strdup (const uint16_t *s);
+extern uint32_t *
+ u32_strdup (const uint32_t *s);
+
+/* Find the first occurrence of UC in STR. */
+/* Similar to strchr(), wcschr(). */
+extern uint8_t *
+ u8_strchr (const uint8_t *str, ucs4_t uc);
+extern uint16_t *
+ u16_strchr (const uint16_t *str, ucs4_t uc);
+extern uint32_t *
+ u32_strchr (const uint32_t *str, ucs4_t uc);
+
+/* Find the last occurrence of UC in STR. */
+/* Similar to strrchr(), wcsrchr(). */
+extern uint8_t *
+ u8_strrchr (const uint8_t *str, ucs4_t uc);
+extern uint16_t *
+ u16_strrchr (const uint16_t *str, ucs4_t uc);
+extern uint32_t *
+ u32_strrchr (const uint32_t *str, ucs4_t uc);
+
+/* Return the length of the initial segment of STR which consists entirely
+ of Unicode characters not in REJECT. */
+/* Similar to strcspn(), wcscspn(). */
+extern size_t
+ u8_strcspn (const uint8_t *str, const uint8_t *reject);
+extern size_t
+ u16_strcspn (const uint16_t *str, const uint16_t *reject);
+extern size_t
+ u32_strcspn (const uint32_t *str, const uint32_t *reject);
+
+/* Return the length of the initial segment of STR which consists entirely
+ of Unicode characters in ACCEPT. */
+/* Similar to strspn(), wcsspn(). */
+extern size_t
+ u8_strspn (const uint8_t *str, const uint8_t *accept);
+extern size_t
+ u16_strspn (const uint16_t *str, const uint16_t *accept);
+extern size_t
+ u32_strspn (const uint32_t *str, const uint32_t *accept);
+
+/* Find the first occurrence in STR of any character in ACCEPT. */
+/* Similar to strpbrk(), wcspbrk(). */
+extern uint8_t *
+ u8_strpbrk (const uint8_t *str, const uint8_t *accept);
+extern uint16_t *
+ u16_strpbrk (const uint16_t *str, const uint16_t *accept);
+extern uint32_t *
+ u32_strpbrk (const uint32_t *str, const uint32_t *accept);
+
+/* Find the first occurrence of NEEDLE in HAYSTACK. */
+/* Similar to strstr(), wcsstr(). */
+extern uint8_t *
+ u8_strstr (const uint8_t *haystack, const uint8_t *needle);
+extern uint16_t *
+ u16_strstr (const uint16_t *haystack, const uint16_t *needle);
+extern uint32_t *
+ u32_strstr (const uint32_t *haystack, const uint32_t *needle);
+
+/* Test whether STR starts with PREFIX. */
+extern bool
+ u8_startswith (const uint8_t *str, const uint8_t *prefix);
+extern bool
+ u16_startswith (const uint16_t *str, const uint16_t *prefix);
+extern bool
+ u32_startswith (const uint32_t *str, const uint32_t *prefix);
+
+/* Test whether STR ends with SUFFIX. */
+extern bool
+ u8_endswith (const uint8_t *str, const uint8_t *suffix);
+extern bool
+ u16_endswith (const uint16_t *str, const uint16_t *suffix);
+extern bool
+ u32_endswith (const uint32_t *str, const uint32_t *suffix);
+
+/* Divide STR into tokens separated by characters in DELIM.
+ This interface is actually more similar to wcstok than to strtok. */
+/* Similar to strtok_r(), wcstok(). */
+extern uint8_t *
+ u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr);
+extern uint16_t *
+ u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr);
+extern uint32_t *
+ u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNISTR_H */
Added: tuxmath/trunk/src/unitypes.h
===================================================================
--- tuxmath/trunk/src/unitypes.h (rev 0)
+++ tuxmath/trunk/src/unitypes.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,26 @@
+/* Elementary types for the GNU UniString library.
+ Copyright (C) 2002, 2005-2006 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNITYPES_H
+#define _UNITYPES_H
+
+/* Get uint8_t, uint16_t, uint32_t. */
+#include <stdint.h>
+
+/* Type representing a Unicode character. */
+typedef uint32_t ucs4_t;
+
+#endif /* _UNITYPES_H */
Added: tuxmath/trunk/src/uniwidth.h
===================================================================
--- tuxmath/trunk/src/uniwidth.h (rev 0)
+++ tuxmath/trunk/src/uniwidth.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,64 @@
+/* Display width functions.
+ Copyright (C) 2001-2002, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _UNIWIDTH_H
+#define _UNIWIDTH_H
+
+#include "unitypes.h"
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get locale_charset() declaration. */
+#include "localcharset.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Display width. */
+
+/* These functions are locale dependent. The encoding argument identifies
+ the encoding (e.g. "ISO-8859-2" for Polish). */
+
+/* Determine number of column positions required for UC. */
+extern int
+ uc_width (ucs4_t uc, const char *encoding);
+
+/* Determine number of column positions required for first N units
+ (or fewer if S ends before this) in S. */
+extern int
+ u8_width (const uint8_t *s, size_t n, const char *encoding);
+extern int
+ u16_width (const uint16_t *s, size_t n, const char *encoding);
+extern int
+ u32_width (const uint32_t *s, size_t n, const char *encoding);
+
+/* Determine number of column positions required for S. */
+extern int
+ u8_strwidth (const uint8_t *s, const char *encoding);
+extern int
+ u16_strwidth (const uint16_t *s, const char *encoding);
+extern int
+ u32_strwidth (const uint32_t *s, const char *encoding);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNIWIDTH_H */
Added: tuxmath/trunk/src/width.c
===================================================================
--- tuxmath/trunk/src/width.c (rev 0)
+++ tuxmath/trunk/src/width.c 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,323 @@
+/* Determine display width of Unicode character.
+ Copyright (C) 2001-2002, 2006-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno at clisp.org>, 2002.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "uniwidth.h"
+
+#include "cjk.h"
+
+/*
+ * Non-spacing attribute table.
+ * Consists of:
+ * - Non-spacing characters; generated from PropList.txt or
+ * "grep '^[^;]*;[^;]*;[^;]*;[^;]*;NSM;' UnicodeData.txt"
+ * - Format control characters; generated from
+ * "grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt"
+ * - Zero width characters; generated from
+ * "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
+ */
+static const unsigned char nonspacing_table_data[22*64] = {
+ /* 0x0000-0x01ff */
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, /* 0x0080-0x00bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00c0-0x00ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0100-0x013f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0140-0x017f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0180-0x01bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01c0-0x01ff */
+ /* 0x0200-0x03ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0200-0x023f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0240-0x027f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0280-0x02bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02c0-0x02ff */
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x0300-0x033f */
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x0340-0x037f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0380-0x03bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03c0-0x03ff */
+ /* 0x0400-0x05ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0400-0x043f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0440-0x047f */
+ 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0480-0x04bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04c0-0x04ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0500-0x053f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0540-0x057f */
+ 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
+ 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
+ /* 0x0600-0x07ff */
+ 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
+ 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
+ 0x00, 0x00, 0xc0, 0xff, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
+ 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x07c0-0x07ff */
+ /* 0x0800-0x09ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0800-0x083f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0900-0x093f */
+ 0xfe, 0x21, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
+ 0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x09c0-0x09ff */
+ /* 0x0a00-0x0bff */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a00-0x0a3f */
+ 0x86, 0x39, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0x0a40-0x0a7f */
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0a80-0x0abf */
+ 0xbe, 0x21, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0ac0-0x0aff */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0x0b00-0x0b3f */
+ 0x0e, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b40-0x0b7f */
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0b80-0x0bbf */
+ 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0bc0-0x0bff */
+ /* 0x0c00-0x0dff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x0c00-0x0c3f */
+ 0xc1, 0x3d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0c40-0x0c7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0c80-0x0cbf */
+ 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0cc0-0x0cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d00-0x0d3f */
+ 0x0e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d40-0x0d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0d80-0x0dbf */
+ 0x00, 0x04, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0dc0-0x0dff */
+ /* 0x0e00-0x0fff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x07, /* 0x0e00-0x0e3f */
+ 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0e40-0x0e7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x1b, /* 0x0e80-0x0ebf */
+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0ec0-0x0eff */
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02, /* 0x0f00-0x0f3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, /* 0x0f40-0x0f7f */
+ 0xdf, 0x00, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0fc0-0x0fff */
+ /* 0x1000-0x11ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc5, 0x02, /* 0x1000-0x103f */
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* 0x1040-0x107f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c0-0x10ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1100-0x113f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1140-0x117f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1180-0x11bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11c0-0x11ff */
+ /* 0x1200-0x13ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1200-0x123f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1240-0x127f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1280-0x12bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12c0-0x12ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1300-0x133f */
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1380-0x13bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13c0-0x13ff */
+ /* 0x1600-0x17ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1600-0x163f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1640-0x167f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1680-0x16bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16c0-0x16ff */
+ 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, /* 0x1700-0x173f */
+ 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, /* 0x1740-0x177f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x3f, /* 0x1780-0x17bf */
+ 0x40, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x17c0-0x17ff */
+ /* 0x1800-0x19ff */
+ 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1800-0x183f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1840-0x187f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0x1880-0x18bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18c0-0x18ff */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x0f, 0x04, 0x0e, /* 0x1900-0x193f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1940-0x197f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1980-0x19bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
+ /* 0x1a00-0x1bff */
+ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a40-0x1a7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1b80-0x1bbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc0-0x1bff */
+ /* 0x1c00-0x1dff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c00-0x1c3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1cc0-0x1cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
+ 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, /* 0x1dc0-0x1dff */
+ /* 0x2000-0x21ff */
+ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2080-0x20bf */
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, /* 0x20c0-0x20ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2100-0x213f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2140-0x217f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2180-0x21bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x21c0-0x21ff */
+ /* 0x3000-0x31ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, /* 0x3000-0x303f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3040-0x307f */
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0x3080-0x30bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30c0-0x30ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3100-0x313f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3140-0x317f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x3180-0x31bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x31c0-0x31ff */
+ /* 0xa800-0xa9ff */
+ 0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8c0-0xa8ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa900-0xa93f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa980-0xa9bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
+ /* 0xfa00-0xfbff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa00-0xfa3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa40-0xfa7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa80-0xfabf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfac0-0xfaff */
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, /* 0xfb00-0xfb3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb40-0xfb7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfb80-0xfbbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfbc0-0xfbff */
+ /* 0xfe00-0xffff */
+ 0xff, 0xff, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, /* 0xfe00-0xfe3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe40-0xfe7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfe80-0xfebf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xfec0-0xfeff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff00-0xff3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff40-0xff7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xff80-0xffbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, /* 0xffc0-0xffff */
+ /* 0x10a00-0x10bff */
+ 0x6e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0x10a00-0x10a3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a40-0x10a7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10a80-0x10abf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10ac0-0x10aff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b00-0x10b3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
+ /* 0x1d000-0x1d1ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d080-0x1d0bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d0c0-0x1d0ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d100-0x1d13f */
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf8, /* 0x1d140-0x1d17f */
+ 0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x1d180-0x1d1bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d1c0-0x1d1ff */
+ /* 0x1d200-0x1d3ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d200-0x1d23f */
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d240-0x1d27f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d280-0x1d2bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d2c0-0x1d2ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d300-0x1d33f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d340-0x1d37f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d380-0x1d3bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0x1d3c0-0x1d3ff */
+};
+static const signed char nonspacing_table_ind[240] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, /* 0x0000-0x0fff */
+ 8, 9, -1, 10, 11, 12, 13, -1, /* 0x1000-0x1fff */
+ 14, -1, -1, -1, -1, -1, -1, -1, /* 0x2000-0x2fff */
+ 15, -1, -1, -1, -1, -1, -1, -1, /* 0x3000-0x3fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x4000-0x4fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x5000-0x5fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x6000-0x6fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7000-0x7fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x8000-0x8fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x9000-0x9fff */
+ -1, -1, -1, -1, 16, -1, -1, -1, /* 0xa000-0xafff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb000-0xbfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc000-0xcfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd000-0xdfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
+ -1, -1, -1, -1, -1, 17, -1, 18, /* 0xf000-0xffff */
+ -1, -1, -1, -1, -1, 19, -1, -1, /* 0x10000-0x10fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x16000-0x16fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
+ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
+ 20, 21, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
+};
+
+/* Determine number of column positions required for UC. */
+int
+uc_width (ucs4_t uc, const char *encoding)
+{
+ /* Test for non-spacing or control character. */
+ if ((uc >> 9) < 240)
+ {
+ int ind = nonspacing_table_ind[uc >> 9];
+ if (ind >= 0)
+ if ((nonspacing_table_data[64*ind + ((uc >> 3) & 63)] >> (uc & 7)) & 1)
+ {
+ if (uc > 0 && uc < 0xa0)
+ return -1;
+ else
+ return 0;
+ }
+ }
+ else if ((uc >> 9) == (0xe0000 >> 9))
+ {
+ if (uc >= 0xe0100)
+ {
+ if (uc <= 0xe01ef)
+ return 0;
+ }
+ else
+ {
+ if (uc >= 0xe0020 ? uc <= 0xe007f : uc == 0xe0001)
+ return 0;
+ }
+ }
+ /* Test for double-width character.
+ * Generated from "grep '^....;[WF]' EastAsianWidth.txt"
+ * and "grep '^....;[^WF]' EastAsianWidth.txt"
+ */
+ if (uc >= 0x1100
+ && ((uc < 0x1160) /* Hangul Jamo */
+ || (uc >= 0x2329 && uc < 0x232b) /* Angle Brackets */
+ || (uc >= 0x2e80 && uc < 0xa4d0 /* CJK ... Yi */
+ && !(uc == 0x303f) && !(uc >= 0x4dc0 && uc < 0x4e00))
+ || (uc >= 0xac00 && uc < 0xd7a4) /* Hangul Syllables */
+ || (uc >= 0xf900 && uc < 0xfb00) /* CJK Compatibility Ideographs */
+ || (uc >= 0xfe10 && uc < 0xfe20) /* Presentation Forms for Vertical */
+ || (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
+ || (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
+ || (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
+ || (uc >= 0x20000 && uc <= 0x2a6d6) /* CJK */
+ || (uc >= 0x2f800 && uc <= 0x2fa1d) /* CJK Compatibility Ideographs */
+ ) )
+ return 2;
+ /* In ancient CJK encodings, Cyrillic and most other characters are
+ double-width as well. */
+ if (uc >= 0x00A1 && uc < 0xFF61 && uc != 0x20A9
+ && is_cjk_encoding (encoding))
+ return 2;
+ return 1;
+}
Added: tuxmath/trunk/src/xsize.h
===================================================================
--- tuxmath/trunk/src/xsize.h (rev 0)
+++ tuxmath/trunk/src/xsize.h 2009-02-06 17:36:45 UTC (rev 871)
@@ -0,0 +1,108 @@
+/* xsize.h -- Checked size_t computations.
+
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _XSIZE_H
+#define _XSIZE_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get SIZE_MAX. */
+#include <limits.h>
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+/* The size of memory objects is often computed through expressions of
+ type size_t. Example:
+ void* p = malloc (header_size + n * element_size).
+ These computations can lead to overflow. When this happens, malloc()
+ returns a piece of memory that is way too small, and the program then
+ crashes while attempting to fill the memory.
+ To avoid this, the functions and macros in this file check for overflow.
+ The convention is that SIZE_MAX represents overflow.
+ malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
+ implementation that uses mmap --, it's recommended to use size_overflow_p()
+ or size_in_bounds_p() before invoking malloc().
+ The example thus becomes:
+ size_t size = xsum (header_size, xtimes (n, element_size));
+ void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
+*/
+
+/* Convert an arbitrary value >= 0 to type size_t. */
+#define xcast_size_t(N) \
+ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
+
+/* Sum of two sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum (size_t size1, size_t size2)
+{
+ size_t sum = size1 + size2;
+ return (sum >= size1 ? sum : SIZE_MAX);
+}
+
+/* Sum of three sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum3 (size_t size1, size_t size2, size_t size3)
+{
+ return xsum (xsum (size1, size2), size3);
+}
+
+/* Sum of four sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
+{
+ return xsum (xsum (xsum (size1, size2), size3), size4);
+}
+
+/* Maximum of two sizes, with overflow check. */
+static inline size_t
+#if __GNUC__ >= 3
+__attribute__ ((__pure__))
+#endif
+xmax (size_t size1, size_t size2)
+{
+ /* No explicit check is needed here, because for any n:
+ max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
+ return (size1 >= size2 ? size1 : size2);
+}
+
+/* Multiplication of a count with an element size, with overflow check.
+ The count must be >= 0 and the element size must be > 0.
+ This is a macro, not an inline function, so that it works correctly even
+ when N is of a wider tupe and N > SIZE_MAX. */
+#define xtimes(N, ELSIZE) \
+ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
+
+/* Check for overflow. */
+#define size_overflow_p(SIZE) \
+ ((SIZE) == SIZE_MAX)
+/* Check against overflow. */
+#define size_in_bounds_p(SIZE) \
+ ((SIZE) != SIZE_MAX)
+
+#endif /* _XSIZE_H */
More information about the Tux4kids-commits
mailing list