summaryrefslogtreecommitdiff
path: root/Build/source/utils/xindy
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/utils/xindy
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff)
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/xindy')
-rw-r--r--Build/source/utils/xindy/ChangeLog227
-rw-r--r--Build/source/utils/xindy/Makefile.am62
-rw-r--r--Build/source/utils/xindy/Makefile.in992
-rw-r--r--Build/source/utils/xindy/README-clisp6
-rw-r--r--Build/source/utils/xindy/TLpatches/ChangeLog233
-rw-r--r--Build/source/utils/xindy/TLpatches/TL-Changes16
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-01-xindy-script133
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-02-lbrace11
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-03-echo-f34
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-06-markup-range-attr137
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-08-hyperref-seealso63
-rw-r--r--Build/source/utils/xindy/TLpatches/patch-10-doc-min-range48
-rw-r--r--Build/source/utils/xindy/ac/clisp.ac17
-rw-r--r--Build/source/utils/xindy/ac/withenable.ac11
-rw-r--r--Build/source/utils/xindy/ac/xindy.ac19
-rw-r--r--Build/source/utils/xindy/aclocal.m41172
-rwxr-xr-xBuild/source/utils/xindy/configure6485
-rw-r--r--Build/source/utils/xindy/configure.ac139
-rw-r--r--Build/source/utils/xindy/tests/idxhello.idx2
-rw-r--r--Build/source/utils/xindy/tests/idxhello.tex13
-rw-r--r--Build/source/utils/xindy/version.ac11
-rw-r--r--Build/source/utils/xindy/xindy-src/AUTHORS57
-rw-r--r--Build/source/utils/xindy/xindy-src/COPYING339
-rw-r--r--Build/source/utils/xindy/xindy-src/ChangeLog.Gour338
-rw-r--r--Build/source/utils/xindy/xindy-src/INSTALL271
-rw-r--r--Build/source/utils/xindy/xindy-src/Makefile.am49
-rw-r--r--Build/source/utils/xindy/xindy-src/Makefile.in677
-rw-r--r--Build/source/utils/xindy/xindy-src/NEWS44
-rw-r--r--Build/source/utils/xindy/xindy-src/README118
-rw-r--r--Build/source/utils/xindy/xindy-src/TODO.autoconf51
-rw-r--r--Build/source/utils/xindy/xindy-src/VERSION1
-rw-r--r--Build/source/utils/xindy/xindy-src/configure.ac110
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/Makefile.am58
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/Makefile.in495
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/README14
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/dataflow.gifbin0 -> 1988 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/faq-1.html169
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/faq-2.html95
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/faq-3.html83
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/faq-4.html669
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/faq.html90
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/index.gifbin0 -> 9066 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/makeindex4.pdfbin0 -> 5054 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-1.html42
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-2.html302
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-3.html1159
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-4.html230
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-5.html63
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-6.html53
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual-7.html53
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/manual.html73
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/mappings.gifbin0 -> 878 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/next.gifbin0 -> 172 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/prev.gifbin0 -> 220 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial-1.html92
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial-2.html361
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial-3.html263
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial-4.html41
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial.html66
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/Makefile.am30
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.raw20
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.tex16
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.raw35
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.tex16
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/index.tex16
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/style1.xdy55
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/style-tutorial/style2.xdy80
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/tex2xindy.pdfbin0 -> 6357 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/texindy.pdfbin0 -> 17556 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/toc.gifbin0 -> 145 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/doc/xindy.pdfbin0 -> 15917 bytes
-rw-r--r--Build/source/utils/xindy/xindy-src/m4/ac_prog_latex.m422
-rw-r--r--Build/source/utils/xindy/xindy-src/m4/ac_prog_pdflatex.m422
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/Makefile.am23
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/Makefile.in603
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/README40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.am319
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.in1069
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/latin1.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/alphabets-doc.tex39
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/Makefile.am52
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/iso88595.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/isoir111.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/Makefile.am52
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/iso88595.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/koi8-r.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/cp1250.pl148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/latin2.pl148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/utf8.pl.in148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/cp1250.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/latin2.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/cp1252.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/latin9.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-latin1.pl148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-utf8.pl.in148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-y-utf8.pl.in148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/cp1252.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/latin9.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/latin3.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/cp1252.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/latin9.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/cp1252.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/latin9.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/cp1252.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/latin9.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/Makefile.am53
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp1252.pl150
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp850.pl150
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/latin9.pl150
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/template.pl150
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/utf8.pl.in150
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/Makefile.am34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/utf8.pl.in55
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/Makefile.am58
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/braille-utf8.pl.in156
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-latin1.pl149
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-utf8.pl.in149
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-latin1.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/Makefile.am60
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/iso88597.pl47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/polytonic-utf8.pl.in64
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-latin4.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/utf8.pl.in47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/Makefile.am34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/northrussian-utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/Makefile.am34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/iso88598.pl45
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/utf8.pl.in45
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/cp1250.pl147
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/latin2.pl147
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/utf8.pl.in147
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/cp1252.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/latin9.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/latin1.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/Makefile.am35
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/translit-ascii.pl45
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/utf8.pl.in41
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/Makefile.am51
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-latin5.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-latin5.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/Makefile.am34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/latin4.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/latin4.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/cp1250.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/latin2.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/Makefile.am52
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/iso88595.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/isoir111.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/utf8.pl.in72
-rwxr-xr-xBuild/source/utils/xindy/xindy-src/make-rules/alphabets/make-rules.pl269
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/Makefile.am34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/cyrillic-utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/latin1.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/Makefile.am40
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/README34
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant1-utf8.pl.in82
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant2-utf8.pl.in82
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/Makefile.am46
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/cp1250.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/latin2.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/Makefile.am41
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/latin1.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/rom-comma-kludge.sed6
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/Makefile.am41
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/latin2.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/Makefile.am60
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/iso88595.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/koi8-r.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/translit-iso-utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/Makefile.am53
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/iso88595.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/isoir111.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/Makefile.am63
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-cp1250.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-latin2.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-cp1250.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-latin2.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/Makefile.am47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/cp1250.pl148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/latin2.pl148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/utf8.pl.in148
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/Makefile.am53
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-latin1.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-latin1.pl146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-utf8.pl.in146
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/Makefile.am47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/cp1252.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/latin9.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/test.xdy82
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/Makefile.am24
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/test1.pl166
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/Makefile.am47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin3.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin5.pl144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/Makefile.am47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/cp1251.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/koi8-u.pl72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/utf8.pl.in72
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/Makefile.am47
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/cp1250.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/latin2.pl145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/utf8.pl.in145
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/utf8-to-tex.sed105
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/Makefile.am36
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/README12
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/utf8.pl.in144
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.am156
-rw-r--r--Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.in608
-rwxr-xr-xBuild/source/utils/xindy/xindy-src/make-rules/inputenc/make-inp-rules.pl31
-rwxr-xr-xBuild/source/utils/xindy/xindy-src/make-rules/inputenc/make-testidx.pl20
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/Makefile.am39
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/Makefile.in501
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/Makefile.am38
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/book-order.xdy24
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/ff-ranges-only.xdy25
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/ff-ranges.xdy27
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/german-sty.xdy24
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/ignore-hyphen.xdy18
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/ignore-punctuation.xdy42
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/keep-blanks.xdy40
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/latex-loc-fmts.xdy25
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/latex.xdy83
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/latin-lettergroups.xdy26
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/letter-order.xdy18
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/makeindex.xdy51
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/numeric-sort.xdy25
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/page-ranges.xdy18
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/tex.xdy74
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/texindy.xdy20
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/base/word-order.xdy20
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/class/Makefile.am22
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/class/pagenums.xdy7
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/german/Makefile.am24
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/german/din5007.xdy20
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/german/duden.xdy37
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/german/tex.xdy21
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/korean/Makefile.am26
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/korean/README34
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8-lang.xdy23
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8.xdy19400
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/latin/Makefile.am23
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/latin/caseisrt.xdy34
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/lang/latin/letgroup.xdy10
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/ord/Makefile.am22
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/ord/letorder.xdy8
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/rules/Makefile.am25
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-exchange.xdy88
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-tolower.xdy52
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/rules/latin-exchange.xdy64
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/rules/latin-tolower.xdy37
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/styles/Makefile.am23
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/styles/basic.xdy36
-rw-r--r--Build/source/utils/xindy/xindy-src/modules/styles/makeidx.xdy148
-rw-r--r--Build/source/utils/xindy/xindy-src/src/Makefile.am71
-rw-r--r--Build/source/utils/xindy/xindy-src/src/Makefile.in524
-rw-r--r--Build/source/utils/xindy/xindy-src/src/base.lsp237
-rw-r--r--Build/source/utils/xindy/xindy-src/src/defaults.xdy.in5
-rw-r--r--Build/source/utils/xindy/xindy-src/src/dump-xindy.lsp33
-rw-r--r--Build/source/utils/xindy/xindy-src/src/idxstyle.lsp2127
-rw-r--r--Build/source/utils/xindy/xindy-src/src/index.lsp1333
-rw-r--r--Build/source/utils/xindy/xindy-src/src/locref.lsp556
-rw-r--r--Build/source/utils/xindy/xindy-src/src/markup.lsp1298
-rw-r--r--Build/source/utils/xindy/xindy-src/src/ordrules.lsp419
-rw-r--r--Build/source/utils/xindy/xindy-src/src/version.lsp13
-rw-r--r--Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.am32
-rw-r--r--Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.in688
-rw-r--r--Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.1213
-rw-r--r--Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.c2481
-rw-r--r--Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.l541
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/Makefile.am52
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/Makefile.in560
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/texindy.1489
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/texindy.in690
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/xindy.1445
-rw-r--r--Build/source/utils/xindy/xindy-src/user-commands/xindy.in993
330 files changed, 73574 insertions, 0 deletions
diff --git a/Build/source/utils/xindy/ChangeLog b/Build/source/utils/xindy/ChangeLog
new file mode 100644
index 00000000000..6fd49c7fcfe
--- /dev/null
+++ b/Build/source/utils/xindy/ChangeLog
@@ -0,0 +1,227 @@
+2020-06-07 Karl Berry <karl@freefriends.org>
+
+ * ac/withenable.ac: omit $Id$ from generated output.
+
+2020-05-28 J\"urgen Spitzm\"uller <spitz@lyx.org>
+
+ These patches from:
+ https://tug.org/pipermail/tex-live/2020-May/045760.html
+
+ * xindy-src/src/markup.lsp: support giving attributes to the
+ markup of separator with :attr.
+ * doc/manual-3.html: document this.
+ https://sourceforge.net/p/xindy/bugs/1/
+
+ * xindy-src/modules/base/makeindex.xdy
+ (define-crossref-class, markup-crossref-list): handle
+ \see and \seealso added by hyperref.
+ * xindy-src/user-commands/texindy.in,
+ * xindy-src/user-commands/xindy.in: corresponding doc updates.
+ https://sourceforge.net/p/xindy/bugs/62/
+
+ * xindy-src/doc/faq-4.html,
+ * xindy-src/doc/manual-3.html: document workaround for
+ :min-range-length none being broken.
+ https://github.com/jschrod/xindy.ctan/issues/3
+
+2020-03-08 Karl Berry <karl@tug.org>
+
+ * xindy-src/make-rules/alphabets/Makefile.am (alphabets-inc.tex):
+ echo '\f' is not portable; with zsh, dash, others, it outputs
+ a form feed. Use printf instead. Report from jfbu,
+ https://tug.org/pipermail/tex-live/2020-March/044966.html
+
+2019-02-10 Karl Berry <karl@tug.org>
+
+ * ac/withenable.ac (KPSE_ENABLE_PROG): just disable,
+ cross-compilation is possible if clisp is built (per Luigi).
+
+2017-11-13 Karl Berry <karl@tug.org>
+
+ * xindy-src/make-rules/inputenc/make-inp-rules.pl: must use \{
+ to placate current Perl.
+ Report from Josua Stingelin on tex-k, 12 Nov 2017 11:21:27.
+
+2017-03-27 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * xindy-src/user-commands/xindy.in: If a module name cantains directory
+ separators, the module must certainly be a system module. In this case,
+ we don't call kpsewhich to obtain relatively better performance.
+
+2016-06-08 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * xindy-src/user-commands/xindy.in: Use kpsewhich to search for
+ modules. Performance is lost. However user modules specified by
+ the -M option can be under <anytexmf>/xindy/modules/.
+
+2016-02-22 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * Makefile.am, configure.ac: New convention.
+
+2015-02-17 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * ac/xindy.ac: Drop the obsolete '--with-xindy-recode'.
+
+2015-02-16 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Use the fragment ../../am/dist_hook.am.
+
+2014-09-15 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import xindy-2.5.1.
+ * Makefile.am, configure.ac, version.ac: Adapted.
+
+2014-06-16 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Drop the obsolete ACLOCAL_AMFLAGS.
+
+2014-04-28 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import xindy-2.5.0.
+ * Makefile.am, configure.ac, version.ac: Adapted.
+
+2013-10-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Use Makefile fragment for persian alphabet.
+
+2013-07-05 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Moved Makefile fragments to ../../am/.
+
+2013-06-20 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac, ac/xindy.ac: Fixed some typos, replacing
+ 'with-recode' => 'with-xindy-recode'.
+
+2013-02-08 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am (scriptsdir), configure.ac (pkglibdir, docdir):
+ Change texmf => texmf-dist.
+
+2013-01-30 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Use KPSE_COND_WIN32_WRAP for win32 wrappers.
+
+2012-12-17 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Use KPSE_BASIC to enable silent rules.
+ * Makefile.am: Enable silent rules.
+
+2011-12-06 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am, configure.ac:
+ Replace ${prefix}/texmf => $(datarootdir)/texmf.
+
+2011-11-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Add persian alphabet.
+ * version.ac: New file defining the xindy version.
+ * configure.ac: Adapt.
+
+2011-03-31 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Use the ../../texk/am/script_links.am fragment
+ to build and install the user commands here.
+
+2011-03-16 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Use KPSE_CHECK_PERL, KPSE_CHECK_LATEX, and
+ KPSE_CHECK_PDFLATEX Autoconf macros.
+
+2011-03-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Renamed xindy source tree 'xindy' -> 'xindy-2.4'.
+
+2010-05-19 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac (LISP_RUN): Convert dos line endings from cygwin.
+
+2010-05-18 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac (LISP_RUN): Better solution, from Joachim Schrod.
+
+2010-05-17 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac (LISP_RUN): Portability to avoid cygwin problems.
+
+2010-05-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Imported http://www.ctan.org/indexing/xindy/xindy-2.4.tar.gz.
+ * xindy-2.4-pre2-PATCHES/ renamed to xindy-2.4-PATCHES/.
+
+ * Makefile.am, configure.ac: Postponed the reorganization of
+ alphabets/Makefile.am and alphabets/LANG/Makefile.am fragments.
+
+2009-12-19 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Remove test for strrchr(), require strtoul().
+
+2009-12-17 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac (AC_CONFIG_FILES):
+ Remove make-rules/alphabets/*/Makefile (compare patch-50).
+
+2009-12-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported http://www.xindy.org/xindy-2.4-pre2.tar.gz.
+ * xindy-2.4-rc1-PATCHES/ renamed to xindy-2.4-pre2-PATCHES/.
+
+2009-11-27 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.4-rc1.
+ Rearranged the build system to use the original source tree with
+ some modifications as described in xindy-2.4-rc1-PATCHES/.
+
+2009-10-05 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * user-commands/Makefile.am: Add uninstall-hook.
+
+2009-08-05 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * rte/Makefile.am (XINDY_RUN): For clisp Version 2.48 use
+ 'clisp-link add' instead of 'clisp-link add-module-path'.
+
+2009-06-03 Karl Berry <karl@tug.org>
+
+ * rte/Makefile.am (XINDY_RUN): $(STRIP) it.
+
+2009-06-02 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * rte/ordrules/ordrules.c: declare logs, logc, and logi static.
+
+2009-05-18 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac, ac/xindy.ac: Reorganize for dual use:
+ xindy in TL and standalone xindy. Adjust enable/disable.
+
+2009-05-09 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Check for PERL, LATEX, and PDFLATEX.
+ * make-rules/alphabets/Makefile.am: Use PERL and PDFLATEX.
+ * make-rules/inputenc/Makefile.am: Use PERL and LATEX.
+
+2009-05-09 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * m4/ac_prog_latex.m4, m4/ac_prog_pdflatex.m4: Use TL_MSG_ERROR
+ instead of AC_MSG_ERROR.
+
+2009-05-09 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: Remove '--with-clisp=...', use 'CLISP=...'.
+
+2009-05-08 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Allow parallel builds:
+ * binaries/Makefile.am: Add '.NOTPARALLEL:'.
+ * rte/Makefile.am: Serialize rule that creates two targets.
+
+ * configure.ac (AC_CONFIG_AUX_DIR): Use auxiliary files from
+ ../../build-aux in TeX Live tree.
+
+2009-05-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt to TL2009 build system.
+ * configure.ac, Makefile.am: Adapt.
+ * ac/xindy.ac (new): Configure options also shown at top-level.
+ * m4/tl_msg_error.m4 (new): Define TL_MSG_ERROR such that
+ 'configure --disable-build' succeeds without clisp.
diff --git a/Build/source/utils/xindy/Makefile.am b/Build/source/utils/xindy/Makefile.am
new file mode 100644
index 00000000000..d7e423224fc
--- /dev/null
+++ b/Build/source/utils/xindy/Makefile.am
@@ -0,0 +1,62 @@
+## $Id$
+## Makefile.am for the TeX Live subdirectory utils/xindy/
+##
+## Copyright 2017 Karl Berry <tex-live@tug.org>
+## Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org>
+## You may freely use, modify and/or distribute this file.
+
+EXTRA_DIST = README-clisp
+
+## We use the original xindy source tree.
+SUBDIRS = . $(XINDY_TREE)
+DIST_SUBDIRS = $(SUBDIRS)
+
+## Patches applied to the original source tree
+EXTRA_DIST += TLpatches
+
+## We must explicitly distribute some top-level files.
+##
+EXTRA_DIST += \
+ $(XINDY_TREE)/Makefile.am \
+ $(XINDY_TREE)/VERSION \
+ $(XINDY_TREE)/configure.ac \
+ $(XINDY_TREE)/m4
+
+# Files not to be distributed
+include $(srcdir)/../../am/dist_hook.am
+
+all-local: config.force
+
+config.force:
+ echo timestamp >config.force
+ $(SHELL) ./config.status --recheck
+
+DISTCLEANFILES = config.force
+
+perl_scripts = texindy xindy
+scriptsdir = texmf-dist/scripts/xindy
+nodist_bin_SCRIPTS =
+
+include $(srcdir)/../../am/script_links.am
+
+install-data-hook: install-perl-links
+
+install-exec-hook:
+if CLISP_RUNTIME
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) "$(LISP_RUN)" "$(DESTDIR)$(bindir)/$(XINDY_RUN)"
+endif CLISP_RUNTIME
+
+uninstall-hook: uninstall-links
+if CLISP_RUNTIME
+ rm -f "$(DESTDIR)$(bindir)/$(XINDY_RUN)"
+endif CLISP_RUNTIME
+
+texmfdir = $(datarootdir)/$(scriptsdir)
+nodist_texmf_SCRIPTS = $(perl_scripts:=.pl)
+
+%.pl: $(XINDY_TREE)/user-commands/%.in
+ $(AM_V_GEN)sed -e 's:@is_TL\@:yes:' $< >$@
+ $(AM_V_at)chmod +x $@
+
+CLEANFILES = $(nodist_bin_SCRIPTS) $(nodist_texmf_SCRIPTS)
+
diff --git a/Build/source/utils/xindy/Makefile.in b/Build/source/utils/xindy/Makefile.in
new file mode 100644
index 00000000000..de824dc4555
--- /dev/null
+++ b/Build/source/utils/xindy/Makefile.in
@@ -0,0 +1,992 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@WIN32_TRUE@@WIN32_WRAP_TRUE@am__append_1 = $(wrappers)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(texmfdir)"
+SCRIPTS = $(nodist_bin_SCRIPTS) $(nodist_texmf_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir distdir-am dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+am__DIST_COMMON = $(srcdir)/../../am/dist_hook.am \
+ $(srcdir)/../../am/script_links.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/../../build-aux/compile \
+ $(top_srcdir)/../../build-aux/config.guess \
+ $(top_srcdir)/../../build-aux/config.sub \
+ $(top_srcdir)/../../build-aux/install-sh \
+ $(top_srcdir)/../../build-aux/missing ../../build-aux/ar-lib \
+ ../../build-aux/compile ../../build-aux/config.guess \
+ ../../build-aux/config.sub ../../build-aux/depcomp \
+ ../../build-aux/install-sh ../../build-aux/ltmain.sh \
+ ../../build-aux/missing ../../build-aux/texinfo.tex \
+ ../../build-aux/ylwrap ChangeLog
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README-clisp TLpatches $(XINDY_TREE)/Makefile.am \
+ $(XINDY_TREE)/VERSION $(XINDY_TREE)/configure.ac \
+ $(XINDY_TREE)/m4 $(top_builddir)/../../build-aux/relpath
+SUBDIRS = . $(XINDY_TREE)
+DIST_SUBDIRS = $(SUBDIRS)
+NEVER_DIST = `find . $(NEVER_NAMES)`
+NEVER_NAMES = -name .svn
+NEVER_NAMES_SUB = -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'
+NEVER_NAMES_LT = -o -name .libs -o -name '*.lo'
+DISTCLEANFILES = config.force
+perl_scripts = texindy xindy
+scriptsdir = texmf-dist/scripts/xindy
+nodist_bin_SCRIPTS = $(am__append_1)
+all_scripts = $(lua_scripts) $(perl_scripts) $(shell_scripts)
+@WIN32_TRUE@@WIN32_WRAP_TRUE@wrappers = $(all_scripts:=.exe)
+@WIN32_TRUE@@WIN32_WRAP_TRUE@runscript = $(top_srcdir)/../../texk/texlive/$(WIN_WRAPPER)/runscript.exe
+texmfdir = $(datarootdir)/$(scriptsdir)
+nodist_texmf_SCRIPTS = $(perl_scripts:=.pl)
+CLEANFILES = $(nodist_bin_SCRIPTS) $(nodist_texmf_SCRIPTS)
+all: all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../am/dist_hook.am $(srcdir)/../../am/script_links.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/../../am/dist_hook.am $(srcdir)/../../am/script_links.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+install-nodist_binSCRIPTS: $(nodist_bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-nodist_binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-nodist_texmfSCRIPTS: $(nodist_texmf_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(nodist_texmf_SCRIPTS)'; test -n "$(texmfdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(texmfdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(texmfdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(texmfdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(texmfdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-nodist_texmfSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nodist_texmf_SCRIPTS)'; test -n "$(texmfdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(texmfdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS) all-local
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(texmfdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-nodist_texmfSCRIPTS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-nodist_binSCRIPTS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-nodist_binSCRIPTS \
+ uninstall-nodist_texmfSCRIPTS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: $(am__recursive_targets) install-am install-data-am \
+ install-exec-am install-strip uninstall-am
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip dist-zstd distcheck distclean distclean-generic \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-hook install-dvi \
+ install-dvi-am install-exec install-exec-am install-exec-hook \
+ install-html install-html-am install-info install-info-am \
+ install-man install-nodist_binSCRIPTS \
+ install-nodist_texmfSCRIPTS install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-hook uninstall-nodist_binSCRIPTS \
+ uninstall-nodist_texmfSCRIPTS
+
+.PRECIOUS: Makefile
+
+dist-hook:
+ cd "$(distdir)" && rm -rf $(NEVER_DIST)
+
+# Files not to be distributed
+
+all-local: config.force
+
+config.force:
+ echo timestamp >config.force
+ $(SHELL) ./config.status --recheck
+.PHONY: install-lua-links install-perl-links install-shell-links install-sh-links \
+ install-links uninstall-links
+@WIN32_TRUE@@WIN32_WRAP_TRUE@$(wrappers): $(runscript)
+@WIN32_TRUE@@WIN32_WRAP_TRUE@ $(AM_V_GEN)$(LN_S) $(runscript) $@
+
+install-lua-links:
+@WIN32_FALSE@ $(MAKE) $(AM_MAKEFLAGS) TYPE=lua EXT=lua install-links
+
+install-perl-links:
+@WIN32_FALSE@ $(MAKE) $(AM_MAKEFLAGS) TYPE=perl EXT=pl install-links
+
+install-shell-links:
+@WIN32_FALSE@ $(MAKE) $(AM_MAKEFLAGS) TYPE=shell EXT=sh install-links
+
+install-sh-links:
+@WIN32_FALSE@ $(MAKE) $(AM_MAKEFLAGS) TYPE=sh EXT=sh install-links
+
+# We support native builds, multiplatform or not, as well as distro builds.
+install-links:
+ @relpath="$(top_srcdir)/../../build-aux/relpath"; \
+ test -r $$relpath || { \
+ echo 'script_links.am:install-links: could not find relpath script'; \
+ exit 1; \
+ }; \
+ REL=`$(SHELL) $$relpath '$(DESTDIR)' '$(bindir)' '$(datarootdir)'`; \
+ if test -z "$$REL"; then \
+ echo 'script_links.am:install_links: unable to compute relative path for linked $(TYPE) scripts' >&2; \
+ exit 1; \
+ fi; \
+ cd $(DESTDIR)$(bindir) && \
+ for f in $($(TYPE)_scripts); do \
+ rm -f $$f; \
+ if $(AM_V_P); then echo "creating link '$$f' -> '$$REL/$(scriptsdir)/$$f.$(EXT)'"; \
+ else echo " LINK $$f"; fi; \
+ $(LN_S) $$REL/$(scriptsdir)/$$f.$(EXT) $$f || exit 1; \
+ done
+
+uninstall-links:
+@WIN32_FALSE@ @for f in $(all_scripts) $(sh_scripts); do \
+@WIN32_FALSE@ echo "rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+@WIN32_FALSE@ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+@WIN32_FALSE@ done
+
+install-data-hook: install-perl-links
+
+install-exec-hook:
+@CLISP_RUNTIME_TRUE@ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) "$(LISP_RUN)" "$(DESTDIR)$(bindir)/$(XINDY_RUN)"
+
+uninstall-hook: uninstall-links
+@CLISP_RUNTIME_TRUE@ rm -f "$(DESTDIR)$(bindir)/$(XINDY_RUN)"
+
+%.pl: $(XINDY_TREE)/user-commands/%.in
+ $(AM_V_GEN)sed -e 's:@is_TL\@:yes:' $< >$@
+ $(AM_V_at)chmod +x $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/README-clisp b/Build/source/utils/xindy/README-clisp
new file mode 100644
index 00000000000..9c781b69c00
--- /dev/null
+++ b/Build/source/utils/xindy/README-clisp
@@ -0,0 +1,6 @@
+(This file public domain.)
+
+GNU clisp (gnu.org/software/clisp) is required by xindy.
+
+See the end of ../README (that is, Build/source/utils/README in the
+TeX Live repository) for information on building it.
diff --git a/Build/source/utils/xindy/TLpatches/ChangeLog b/Build/source/utils/xindy/TLpatches/ChangeLog
new file mode 100644
index 00000000000..79687fefef6
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/ChangeLog
@@ -0,0 +1,233 @@
+2020-05-28 Karl Berry <karl@tug.org>
+
+ * patch-06-markup-range-attr,
+ * patch-08-hyperref-seealso,
+ * patch-10-doc-min-range: new patches from J\"urgen S.
+ https://tug.org/pipermail/tex-live/2020-May/045760.html
+
+2017-11-13 Karl Berry <karl@tug.org>
+
+ * patch-02-lbrace: new file.
+
+2016-07-07 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * patch-01-xindy-needs-language, patch-02-win32-paths-with-spaces:
+ Unify into patch-01-xindy-script.
+
+2015-08-15 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces: Fix from Joachim Schrod.
+
+2015-08-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces: Use File::Glob::bsd_glob().
+
+2015-06-30 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces: Quotify lang_dir.
+
+2015-06-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces: Sync with MikTeX.
+
+2015-06-27 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces: Also quotify filter.
+
+2015-06-24 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-win32-paths-with-spaces (new): Patch from Akira.
+ See <http://tex.stackexchange.com/questions/251221/
+ miktex-and-xindy-problems>.
+
+2014-10-24 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-01-xindy-needs-language (new): It seems xindy requires
+ that language is set, patch from Akira.
+
+2014-09-15 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.5.1 source tree from
+ http://www.ctan.org/tex-archive/indexing/xindy/base/.
+
+ * patch-01-typo, patch-02-xelatex, patch-03-new_LaTeX2e
+ (removed): Now in distribution.
+
+2014-05-12 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-03-new_LaTeX2e (new): Allow to build utf8.xdy by using
+ also the new LaTeX2e.
+ From Heiko Oberdiek <heiko.oberdiek@googlemail.com>.
+
+2014-05-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-xelatex (new): Add support for "-I xelatex".
+ Also update doc/texindy.pdf and doc/xindy.pdf.
+ From Joachim Schrod <jschrod@acm.org>.
+
+2014-04-28 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.5.0 source tree from
+ http://www.ctan.org/tex-archive/indexing/xindy/base/.
+
+ * patch-01-never-interactive, patch-02-never-interactive,
+ patch-03-win32, patch-04-win32, patch-60-remove-unused,
+ patch-61-detect-TL, patch-62-bug-fix, patch-63-win32,
+ patch-64-do_not_rebuild, patch-65-win32, patch-70-persian
+ (removed): Now in distribution.
+ * patch-99-future-reorg: Omitted.
+
+2013-11-22 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-0[34]-win32: Adapt Win32 changes to MinGW.
+
+2013-10-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-70-persian: Use Makefile fragment.
+
+2013-10-18 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-70-persian: Update persian alphabet.
+
+2013-04-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-65-win32 (new): More Win32 changes (from Akira):
+ - r27491 2012-08-22: support spaces in TMPDIR.
+ - r27520 2012-08-25: use current directory for temporary files
+ on Windows.
+
+2012-09-27 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-0[34]-win32 (new): Various Win32 changes (from Akira).
+
+2012-06-21 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-0[12]-never-interactive (new): Added the never-interactive
+ option to prevent flex from creating a problematic prototype for
+ isatty().
+
+2011-11-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-70-persian (new): Add persian alphabet.
+ * patch-99-future-reorg: Adapt.
+
+2011-03-31 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-61-detect-TL: For TL the user commands are now built and
+ installed from the top level (proxy) Makefile.
+ * patch-64-symlinks (removed).
+
+2011-03-02 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-64-do_not_rebuild (new): Do not rebuild the distributed
+ file romanian/latin2.pl again and again.
+
+2010-12-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-64-symlinks (new): Check symlink creation.
+
+2010-06-21 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-63-win32 (new): Bug fix for Win32 from Akira.
+
+2010-06-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-62-bug-fix (new): Bug fix from Joachim Schrod.
+
+2010-05-12 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-61-detect-TL (new): Better detection of TL installation.
+
+2010-05-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.4.tar.gz source tree from:
+ http://dante.ctan.org/tex-archive/indexing/xindy/.
+ * patch-[0-3]?-*: Removed; have been integrated into xindy-2.4.
+
+ * patch-60-remove-unused (new): remove unused files.
+
+ * patch-50-reorg-* (removed): These changes are postponed ...
+ * patch-99-future-reorg (new): ... for future reorganization.
+
+2010-01-13 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * ../xindy/make-rules/alphabets/{mk-lang.sh,lang.defs}:
+ New files to automatically generate the
+ ../xindy/make-rules/alphabets/*/Makefile.am fragments.
+ * patch-50-reorg-alphabets: Reintroduce generated .pl files.
+ * patch-50-reorg-alphabets-generated (new): Generated fragments.
+
+2009-12-17 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-03-iconv-typo (new): Fix typo in iconv-or-recode patch.
+ * patch-50-reorg-alphabets: Remove generated and unused files.
+
+2009-12-12 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-20-TL-install-dirs: Declare install-links as PHONY.
+ * patch-22-TL-xindy_pl: Simplify the environment setup (for TL).
+
+2009-12-11 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-22-TL-xindy_pl: Verify input files exist (from TL2008).
+ * patch-26-TL-texindy_pl (new): Adapt texindy perl script for
+ use in TL, using code from Tomasz M. Trzeciak.
+
+2009-12-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-22-TL-xindy_pl: Invoke either 'xindy.run' or 'clisp'.
+ * patch-25-subst-in-texindy (new): Except for TL, substitute
+ @libdir@ also in texindy and adapt Makefile.am.
+
+2009-12-09 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-20-TL-install-dirs: For TL, do not substitute @libdir@.
+ * patch-22-TL-xindy_pl (new): Adapt xindy perl script for use
+ in TL (still incomplete). Adapting code from
+ Vladimir Volovich <vvv@vsu.ru> (TL2008/09 version) and
+ Tomasz M. Trzeciak <t34www@googlemail.com>.
+ * patch-23-drop-v2 (new): Completely drop xindy.v2.
+
+2009-12-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-21-TL-no-date (new): Avoid date in latin.xdy.
+
+2009-12-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-50-reorg-alphabets (new): Reorganize alphabets.
+
+2009-12-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.4-pre2 source tree from:
+ http://www.xindy.org/xindy-2.4-pre2.tar.gz.
+ * patch-0?-*, patch-11-parallel: Removed; have been integrated
+ into xindy-2.4-pre2.
+ * patch-20-TL-install-dirs, patch-30-warnings: Adjusted.
+ * patch-12-parallel (new): More parallel build problems.
+ * patch-13-gzip (new): Do not gzip xindy.mem for Win32.
+
+2009-11-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-10-superfluous (new): Remove superfluous part.
+ * patch-11-parallel (new): Dependencies for parallel make.
+ * patch-20-TL-install-dirs (new): Parametrize install dirs.
+ * patch-30-warnings (new): Avoid complier warnings.
+
+2009-11-27 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Imported xindy-2.4-rc1 source tree from:
+ http://www.xindy.org/xindy-2.4-SNAPSHOT.tar.gz
+
+ * TL-Changes (new): Describes modifications of source tree.
+
+ * patch-01-VPATH-and-more (new): Allow VPATH build.
+ * patch-02-VPATH-in-perl (new): More VPATH build.
+ * patch-03-iconv-or-recode (new): Allow to use recode.
+ * patch-04-versiondir (new): Fix installdir for VERSION.
+ * patch-05-notinstall-perl (new): Do not install .pl files.
+ * patch-06-distcheck (new): Allow 'make dist'.
+ * patch-07-perl-runtime (new): Use '/usr/bin/env perl'.
+ * patch-08-perl-build (new): Use $(PERL).
+ * patch-09-flex-1 (new): Use $(LEXLIB).
+ * patch-09-flex-2 (new): Drop use of (f)lex library.
+
diff --git a/Build/source/utils/xindy/TLpatches/TL-Changes b/Build/source/utils/xindy/TLpatches/TL-Changes
new file mode 100644
index 00000000000..d50cc079f48
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/TL-Changes
@@ -0,0 +1,16 @@
+Changes applied to the xindy source tree as obtained from:
+ http://www.ctan.org/tex-archive/indexing/xindy/base/xindy-2.5.1.tar.gz.
+
+Removed:
+ aclocal.m4
+ config.guess
+ config.sub
+ configure
+ depcomp
+ install-sh
+ missing
+ ylwrap
+
+Removed execute permissions:
+ user-commands/texindy.in
+
diff --git a/Build/source/utils/xindy/TLpatches/patch-01-xindy-script b/Build/source/utils/xindy/TLpatches/patch-01-xindy-script
new file mode 100644
index 00000000000..226395213df
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-01-xindy-script
@@ -0,0 +1,133 @@
+diff -ur xindy-2.5.1.orig/user-commands/xindy.1 xindy-2.5.1/user-commands/xindy.1
+--- xindy-2.5.1.orig/user-commands/xindy.1 Fri May 30 05:26:05 2014
++++ xindy-2.5.1/user-commands/xindy.1 Fri Apr 14 06:50:56 2017
+@@ -1,4 +1,4 @@
+-.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
++.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
+ .\"
+ .\" Standard preamble:
+ .\" ========================================================================
+@@ -133,7 +133,7 @@
+ .\" ========================================================================
+ .\"
+ .IX Title "xindy 1"
+-.TH xindy 1 "2014-05-29" "Release 2.5.1" "xindy"
++.TH xindy 1 "2015-08-15" "Release 2.5.1" "xindy"
+ .\" For nroff, turn off justification. Always turn off hyphenation; it makes
+ .\" way too many mistakes in technical documents.
+ .if n .ad l
+@@ -165,7 +165,7 @@
+ .Ve
+ .SH "DESCRIPTION"
+ .IX Header "DESCRIPTION"
+-\&\fBxindy\fR is the formatter-indepedent command of xindy, the flexible
++\&\fBxindy\fR is the formatter-independent command of xindy, the flexible
+ indexing system. It takes a raw index as input, and produces a merged,
+ sorted and tagged index. Merging, sorting, and tagging is controlled
+ by xindy style files.
+@@ -432,7 +432,7 @@
+ Joachim Schrod
+ .SH "LEGALESE"
+ .IX Header "LEGALESE"
+-Copyright (c) 2004\-2014 by Joachim Schrod.
++Copyright (C) 2004\-2014 by Joachim Schrod.
+ .PP
+ \&\fBxindy\fR is free software; you can redistribute it and/or modify it
+ under the terms of the \s-1GNU\s0 General Public License as published by the
+diff -ur xindy-2.5.1.orig/user-commands/xindy.in xindy-2.5.1/user-commands/xindy.in
+--- xindy-2.5.1.orig/user-commands/xindy.in Sun May 11 22:45:44 2014
++++ xindy-2.5.1/user-commands/xindy.in Mon Mar 27 15:19:32 2017
+@@ -353,6 +353,7 @@
+
+ use Cwd;
+ use File::Basename;
++use File::Glob qw(bsd_glob);
+ use File::Spec;
+ use File::Temp qw(tempfile tmpnam);
+ use Getopt::Long qw(:config bundling);
+@@ -394,7 +395,7 @@
+ # FIXME: In standalone installations, modules are still placed in lib
+ # directory. This is not conformant to FHS.
+
+-if ( $is_TL ) { # TeX Live and MikTeX
++if ( $is_TL ) { # TeX Live, MiKTeX, or W32TeX
+
+ $modules_dir = Cwd::realpath("$cmd_dir/../../xindy/modules");
+ die "$cmd: Cannot locate xindy modules directory" unless -d $modules_dir;
+@@ -402,8 +403,12 @@
+ if ( $is_w32 ) {
+ if ( -d "$cmd_dir/../../../bin/win32" ) { # TeX Live
+ $cmd_dir = "$cmd_dir/../../../bin/win32";
+- } elsif ( -d "$cmd_dir/../../miktex/bin" ) { # MikTeX
+- $cmd_dir = "$cmd_dir/../../miktex/bin";
++ } elsif ( -d "$cmd_dir/../../miktex/bin/x64/internal" ) { # MiKTeX 64-bit
++ $cmd_dir = "$cmd_dir/../../miktex/bin/x64/internal";
++ } elsif ( -d "$cmd_dir/../../miktex/bin/internal" ) { # MiKTeX 32-bit
++ $cmd_dir = "$cmd_dir/../../miktex/bin/internal";
++ } elsif ( -d "$cmd_dir/../../../../bin" ) { # W32TeX
++ $cmd_dir = "$cmd_dir/../../../../bin";
+ } else {
+ die "$cmd: Cannot locate bin directory";
+ }
+@@ -626,7 +631,11 @@
+ usage(1);
+ }
+ my ($name, $path, $suffix) = fileparse ($ARGV[0], '\.[^\.]+');
++ if ($path eq ".\\") {
++ $outfile = "$name.ind";
++ } else {
+ $outfile = "$path$name.ind";
++ }
+ }
+
+ # FIXME: xindy wants a log file. Really?
+@@ -706,6 +715,7 @@
+ my $output = tmpnam();
+ push (@temp_files, $output);
+ $output=quotify($output);
++ $filter=quotify($filter);
+ print "Running filter: $filter <$input >$output\n" if $verbose;
+ system "$filter <$input >$output";
+ print "filtered xindy input file: $output\n" if $debug{script};
+@@ -732,6 +742,9 @@
+ #
+ # FIXME: I didn't see all languages. What's on with gypsy and
+ # hausa?
++ if ( !$language ) {
++ $language = "general";
++ }
+ if ( $language ) {
+ # If there is no language directory, this might be a variant.
+ # Language names and variants are separated by hyphens. The
+@@ -762,7 +775,7 @@
+ @codepages = qw(latin cp iso8859 ascii utf8) unless @codepages;
+ my @styles;
+ foreach my $cp ( @codepages ) {
+- @styles = glob("$lang_dir/$variant$cp*-lang.xdy");
++ @styles = bsd_glob("$lang_dir/$variant$cp*-lang.xdy");
+ last if @styles;
+ }
+ unless ( @styles ) {
+@@ -790,7 +803,21 @@
+ push (@temp_files, $style_file);
+ $style_file=quotify($style_file);
+ foreach my $module ( @modules ) {
+- print $sf "(require \"$module\")\n";
++ if (($module =~ /\//) || ($module =~ /\\/)) {
++ # If $module contains directory separators, the module must be a system
++ # module. So we don't call kpsewhich.
++ print $sf "(require \"$module\")\n";
++ } else {
++ # Here we call kpsewhich to search for a module. Thus modules can be under
++ # (anytexmf)/xindy/modules/
++ my $fnmodule=`kpsewhich -progname=xindy -format=othertext $module`;
++ if ($fnmodule) {
++ chomp($fnmodule);
++ print $sf "(require \"$fnmodule\")\n";
++ } else {
++ print $sf "(require \"$module\")\n";
++ }
++ }
+ }
+ close ($sf);
+ }
diff --git a/Build/source/utils/xindy/TLpatches/patch-02-lbrace b/Build/source/utils/xindy/TLpatches/patch-02-lbrace
new file mode 100644
index 00000000000..d638bcd6904
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-02-lbrace
@@ -0,0 +1,11 @@
+--- make-inp-rules.pl (revision 45762)
++++ make-inp-rules.pl (working copy)
+@@ -8,7 +8,7 @@
+
+
+ while (<STDIN>) {
+- if (/\\indexentry{(.+)--([8-9a-f][0-9a-f])\}\{1\}/) {
++ if (/\\indexentry\{(.+)--([8-9a-f][0-9a-f])\}\{1\}/) {
+ if (!($1 =~ /inputenc Error|\@inpenc\@undefined/)) {
+ $i = hex($2);
+ $macro = $1;
diff --git a/Build/source/utils/xindy/TLpatches/patch-03-echo-f b/Build/source/utils/xindy/TLpatches/patch-03-echo-f
new file mode 100644
index 00000000000..33c9b4f050d
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-03-echo-f
@@ -0,0 +1,34 @@
+ https://tug.org/pipermail/tex-live/2020-March/044966.html
+
+--- xindy-src/make-rules/alphabets/Makefile.am (revision 54151)
++++ xindy-src/make-rules/alphabets/Makefile.am (working copy)
+@@ -2,6 +2,7 @@
+ ## autoconf/automake files.
+ ## Or, call `automake Makefile' to create only Makefile.in.
+
++## Copyright 2020 by Karl Berry <tex-live@tug.org>
+ ## Copyright (C) 2004-2005 by Gour.
+ ##
+ ## This program is free software; you can redistribute it and/or
+@@ -245,7 +246,9 @@
+
+ alphabets-inc.tex : $(DOCS)
+ $(RM) $@
+- echo '\chapter{Latin scripts}' >>$@
++# zsh, dash, others make echo '\f' output a form feed. Likewise they
++# interpret \c (no further output). Sigh.
++ printf '\%s{Latin scripts}' "chapter" >>$@
+ echo '\ienc{cp1252}' >>$@
+ echo '\section{Codepage 1252}' >>$@
+ for i in $(DOCS_CP1252); do echo "\\input{$$i}" >>$@; done
+@@ -274,8 +277,8 @@
+ echo '\section{Codepage latin9}' >>$@
+ for i in $(DOCS_LATIN9); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp1251}' >>$@
+- echo '\fenc{T2A}' >>$@
+- echo '\chapter{Cyrillic scripts}' >>$@
++ printf '\%s{T2A}\n' "fenc" >>$@
++ printf '\%s{Cyrillic scripts}' "chapter" >>$@
+ echo '\section{Codepage 1251}' >>$@
+ for i in $(DOCS_CYR_1251); do echo "\\input{$$i}" >>$@; done
+ # echo '\ienc{iso-8859-7}' >>$@
diff --git a/Build/source/utils/xindy/TLpatches/patch-06-markup-range-attr b/Build/source/utils/xindy/TLpatches/patch-06-markup-range-attr
new file mode 100644
index 00000000000..6df9d6262a5
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-06-markup-range-attr
@@ -0,0 +1,137 @@
+ https://sourceforge.net/p/xindy/bugs/1/
+ https://tug.org/pipermail/tex-live/2020-May/045760.html
+
+Index: xindy-src/doc/manual-3.html
+===================================================================
+--- xindy-src/doc/manual-3.html (revision 55314)
++++ xindy-src/doc/manual-3.html (working copy)
+@@ -927,6 +927,7 @@ location references in a hierarchical form. With t
+ <PRE>
+ (markup-range [:open string] [:close string] [:sep string]
+ [:class locref-class]
++ [:attr attribute]
+ [:length num] [:ignore-end])
+ </PRE>
+ </CODE></BLOCKQUOTE>
+@@ -933,11 +934,9 @@ location references in a hierarchical form. With t
+ <P>A range consists of two location references. Markup can be specified
+ with the <CODE>:open</CODE> and <CODE>:close</CODE> arguments and one separator given
+ by the argument <CODE>:sep</CODE>.
+-<P>Since both location references are tagged with markup defined by the
+-command <CODE>markup-locref</CODE> a specialization on attributes or depth is
+-not necessary. Specialization is allowed on the class they belong to,
+-because the separator between two location refences may be different
+-for each location class. Argument <CODE>:length</CODE> can be used to define
++<P>The markup of the separator can be specified attributes via
++the<CODE>:attr</CODE> tag.
++<P>Argument <CODE>:length</CODE> can be used to define
+ different markup for different lengths. In conjunction with
+ <CODE>:length</CODE> is may be useful not to print the second location
+ reference at all. For example, one wishes to markup ranges of length 1
+Index: xindy-src/src/markup.lsp
+===================================================================
+--- xindy-src/src/markup.lsp (revision 55307)
++++ xindy-src/src/markup.lsp (working copy)
+@@ -409,7 +409,7 @@ T
+ (do-markup-list (get-members attribute-group)
+ :identifier LOCREF
+ :open-body (do-markup-locref-list-open loccls 0)
+- :elt-body (do-markup-locref LOCREF loccls 0)
++ :elt-body (do-markup-locref (get-catattr LOCREF) LOCREF loccls 0)
+ :sep-body (do-markup-locref-list-sep loccls 0)
+ :close-body (do-markup-locref-list-close loccls 0))
+
+@@ -429,7 +429,8 @@ T
+ (do-markup-default "LOCREF-LIST:CLOSE" (get-name loccls) depth))
+ :sep ((do-markup-default "LOCREF-LIST:SEP" (get-name loccls) depth)))
+ ;; line 808 "markup.nw"
+-(defmethod do-markup-locref ((locref location-reference)
++(defmethod do-markup-locref ((attr category-attribute)
++ (locref location-reference)
+ (loccls layered-location-class)
+ (depth number))
+ #+ASSERT! (assert! (and (typep locref 'layered-location-reference)
+@@ -455,7 +456,7 @@ T
+ (do-markup-list subrefs
+ :identifier LOCREF
+ :open-body (do-markup-locref-list-open loccls new-depth)
+- :elt-body (do-markup-locref LOCREF loccls new-depth)
++ :elt-body (do-markup-locref attr LOCREF loccls new-depth)
+ :sep-body (do-markup-locref-list-sep loccls new-depth)
+ :close-body (do-markup-locref-list-close loccls new-depth)))
+
+@@ -506,23 +507,24 @@ T
+ (do-markup-default "LOCREF:CLOSE"
+ (get-name attr) (get-name loccls) depth)))
+ ;; line 955 "markup.nw"
+-(defmethod do-markup-locref ((range location-range)
++(defmethod do-markup-locref ((attr category-attribute)
++ (range location-range)
+ (loccls layered-location-class)
+ (depth number))
+ (let ((length (get-length range)))
+- (do-markup-range-open loccls length)
+- (do-markup-locref (get-first range) loccls depth)
+- (do-markup-range-sep loccls length)
++ (do-markup-range-open attr loccls length)
++ (do-markup-locref attr (get-first range) loccls depth)
++ (do-markup-range-sep attr loccls length)
+ (when (markup-range-print-end-p loccls length)
+- (do-markup-locref (get-last range) loccls depth))
+- (do-markup-range-close loccls length)))
++ (do-markup-locref attr (get-last range) loccls depth))
++ (do-markup-range-close attr loccls length)))
+
+ (define-list-environment-methods do-markup-range
+- ((loccls layered-location-class) (length number))
+- :open ((do-markup-default "RANGE:OPEN" (get-name loccls) length)
++ ((attr category-attribute) (loccls layered-location-class) (length number))
++ :open ((do-markup-default "RANGE:OPEN" (get-name attr) (get-name loccls) length)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+- (do-markup-default "RANGE:CLOSE" (get-name loccls) length))
++ (do-markup-default "RANGE:CLOSE" (get-name attr) (get-name loccls) length))
+ :sep ((do-markup-default "RANGE:SEP" (get-name loccls) length)))
+
+ (defmethod markup-range-print-end-p ((loccls layered-location-class)
+@@ -947,7 +949,7 @@ T
+ ;; line 1002 "markup.nw"
+ (defmacro markup-range (&whole whole &rest args)
+ (destructuring-switch-bind (&key
+- open close sep class length
++ open close sep class attr length
+ &switch ignore-end)
+ args
+ (cond
+@@ -965,6 +967,10 @@ T
+ ((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
++;; line 294 "markup.nw"
++((and attr (progn (setq attr (stringify attr))
++ (not (lookup-catattr *indexstyle* attr))))
++ (nraw "parameter `~S' is not an attribute! (ignored)~%" attr))
+ ;; line 1009 "markup.nw"
+ ((and length (not (numberp length)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" length))
+@@ -971,7 +977,10 @@ T
+ (t `(let ()
+ (markup::define-list-environment-methods
+ DO-MARKUP-RANGE
+- (,(if class
++ (,(if attr
++ `(attr (EQL ',(lookup-catattr *indexstyle* attr)))
++ '(attr category-attribute))
++ ,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+@@ -989,7 +998,7 @@ T
+ ,(if length
+ `(length (EQL ,length))
+ '(length number)))
+- :declare ((declare (ignore locrefcls length)))
++ :declare ((declare (ignore attr locrefcls length)))
+ :body (,(not ignore-end))))))))
+ ;; line 1064 "markup.nw"
+ (defmacro markup-crossref-list (&key open sep close class)
diff --git a/Build/source/utils/xindy/TLpatches/patch-08-hyperref-seealso b/Build/source/utils/xindy/TLpatches/patch-08-hyperref-seealso
new file mode 100644
index 00000000000..0ea8960fc8f
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-08-hyperref-seealso
@@ -0,0 +1,63 @@
+ https://sourceforge.net/p/xindy/bugs/62/
+ https://tug.org/pipermail/tex-live/2020-May/045753.html
+
+Index: xindy-src/modules/base/makeindex.xdy
+===================================================================
+--- xindy-src/modules/base/makeindex.xdy (revision 55307)
++++ xindy-src/modules/base/makeindex.xdy (working copy)
+@@ -17,6 +17,11 @@
+ (define-crossref-class "seealso")
+ (markup-crossref-list :class "seealso" :open "\seealso{" :sep "; " :close "}{}")
+
++;; \hyperindexformat is a wrapper to \see and \seealso added by hyperref.
++;; We treat it like \see and \seealso
++(define-crossref-class "hyperindexformat" :unverified)
++(markup-crossref-list :class "hyperindexformat" :open "\hyperindexformat{" :sep "; " :close "}{}")
++
+ ;; Subentries in cross references are seperated by comma for all
+ ;; crossref classes.
+ (markup-crossref-layer-list :sep ", ")
+Index: xindy-src/user-commands/texindy.in
+===================================================================
+--- xindy-src/user-commands/texindy.in (revision 55307)
++++ xindy-src/user-commands/texindy.in (working copy)
+@@ -308,15 +308,9 @@ behaviour.
+
+ For more complex usage, when C<bbb> is not an identifier, no such
+ compatibility definitions exist and may also not been created with
+-current B<xindy>. In particular, this means that by default the LaTeX
+-package C<hyperref> will create raw index files that cannot be
+-processed with B<xindy>. This is not a bug, this is the unfortunate
+-result of an intented incompatibility. It is currently not possible to
+-get both hyperref's index links and use B<xindy>.
++current B<xindy>. Such a situation is reported to exist for the
++C<memoir> LaTeX class.
+
+-A similar situation is reported to exist for the C<memoir> LaTeX
+-class.
+-
+ Programmers who know Common Lisp and Lex and want to work on a remedy
+ should please contact the author.
+
+Index: xindy-src/user-commands/xindy.in
+===================================================================
+--- xindy-src/user-commands/xindy.in (revision 55307)
++++ xindy-src/user-commands/xindy.in (working copy)
+@@ -260,15 +260,9 @@ behaviour.
+
+ For more complex usage, when C<bbb> is not an identifier, no such
+ compatibility definitions exist and may also not been created with
+-current B<xindy>. In particular, this means that by default the LaTeX
+-package C<hyperref> will create raw index files that cannot be
+-processed with B<xindy>. This is not a bug, this is the unfortunate
+-result of an intented incompatibility. It is currently not possible to
+-get both hyperref's index links and use B<xindy>.
++current B<xindy>. Such a situation is reported to exist for the
++C<memoir> LaTeX class.
+
+-A similar situation is reported to exist for the C<memoir> LaTeX
+-class.
+-
+ Programmers who know Common Lisp and Lex and want to work on a remedy
+ should please contact the author.
+
diff --git a/Build/source/utils/xindy/TLpatches/patch-10-doc-min-range b/Build/source/utils/xindy/TLpatches/patch-10-doc-min-range
new file mode 100644
index 00000000000..38dad8d61f2
--- /dev/null
+++ b/Build/source/utils/xindy/TLpatches/patch-10-doc-min-range
@@ -0,0 +1,48 @@
+ https://github.com/jschrod/xindy.ctan/issues/3
+ https://tug.org/pipermail/tex-live/2020-May/045760.html
+
+Index: xindy-src/doc/manual-3.html
+===================================================================
+--- xindy-src/doc/manual-3.html (revision 54835)
++++ xindy-src/doc/manual-3.html (working copy)
+@@ -185,8 +185,8 @@
+ keyword argument <CODE>:sep</CODE>. If the keyword <CODE>:min-range-length</CODE> is
+ specified we define the <EM>minimum range length</EM> to be used when
+ building ranges. The argument <CODE>num</CODE> must be a positive integer
+-number or the keyword <CODE>none</CODE> in which case the building of ranges
+-is disallowed. If the switch <CODE>:var</CODE> is specified the declared class
++number. Use a sufficiently large number (such as 10000) to disallow the building of ranges.
++If the switch <CODE>:var</CODE> is specified the declared class
+ is of type <EM>variable</EM>, i.e. it is a <EM>var-location-class</EM>. Since
+ building of ranges is currently only allowed for standard classes
+ <CODE>:var</CODE> and <CODE>:min-range-length</CODE> must not be used together. The
+@@ -198,7 +198,7 @@
+ <P>
+ <PRE>
+ (define-location-class "page-numbers" ("arabic-numbers")
+- :minimum-range-length 3)
++ :min-range-length 3)
+ </PRE>
+ <P>Defines the location class <CODE>page-numbers</CODE> consisting of one layer
+ which is the alphabet <CODE>arabic-numbers</CODE>. Since the minimum
+Index: xindy-src/doc/faq-4.html
+===================================================================
+--- xindy-src/doc/faq-4.html (revision 54835)
++++ xindy-src/doc/faq-4.html (working copy)
+@@ -460,11 +460,12 @@
+ the form
+ <P>
+ <PRE>
+- (define-location-class ... :min-range-length none)
++ (define-location-class ... :min-range-length 100000)
+ </PRE>
+-<P>The argument <CODE>:min-range-length none</CODE> avoids forming of ranges.
+-Arbitrary numbers instead of <CODE>none</CODE> define the minimum length of a
+-sequence of location references that are needed to form a range.
++<P>Arbitrary numbers define the minimum length of a sequence of location references that are needed to form a range.
++The use of a sufficiently large number (such as <CODE>:min-range-length 100000</CODE>) avoids forming of ranges
++(unless your document has more than 100.000 pages and an index entry spans all of them; in this unlikely case, just increase
++the number sufficiently).
+ <SF>xindy</SF>s default value is&nbsp;2.
+ <P>
+ <P>
diff --git a/Build/source/utils/xindy/ac/clisp.ac b/Build/source/utils/xindy/ac/clisp.ac
new file mode 100644
index 00000000000..f8122cff86c
--- /dev/null
+++ b/Build/source/utils/xindy/ac/clisp.ac
@@ -0,0 +1,17 @@
+## utils/xindy/ac/clisp.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/
+dnl
+dnl Copyright (C) 2009, 2010 Peter Breitenlohner <tex-live@tug.org>
+dnl You may freely use, modify and/or distribute this file.
+dnl
+## configure checks for xindy and clisp
+AS_CASE([$with_clisp_runtime],
+ [default], ,
+ [system], [AS_IF([test "x$enable_native_texlive_build" = xyes],
+ [AC_MSG_ERROR([you can not use the installed clisp for a native TeX Live build])])],
+ [""], [AS_IF([test "x$enable_native_texlive_build" = xyes],
+ [with_clisp_runtime=default],
+ [with_clisp_runtime=system])
+ AC_MSG_NOTICE([Assuming `--with-clisp-runtime=$with_clisp_runtime'])
+ ac_configure_args="$ac_configure_args '--with-clisp-runtime=$with_clisp_runtime'"],
+ [AS_IF([test ! -f "$with_clisp_runtime"],
+ [AC_MSG_ERROR([no such file: "$with_clisp_runtime"])])])
diff --git a/Build/source/utils/xindy/ac/withenable.ac b/Build/source/utils/xindy/ac/withenable.ac
new file mode 100644
index 00000000000..9cace7a5700
--- /dev/null
+++ b/Build/source/utils/xindy/ac/withenable.ac
@@ -0,0 +1,11 @@
+## utils/xindy/ac/withenable.ac: configure.ac fragment for TL subdir
+dnl $Id$
+dnl
+dnl Copyright 2009-2020 Karl Berry <tex-live@tug.org>
+dnl Copyright 2009-2010 Peter Breitenlohner <tex-live@tug.org>
+dnl You may freely use, modify and/or distribute this file.
+dnl
+## configure options and TL libraries required for xindy.
+KPSE_ENABLE_PROG([xindy], , [disable])
+m4_include(kpse_TL[utils/xindy/ac/xindy.ac])
+m4_include(kpse_TL[utils/xindy/ac/clisp.ac])
diff --git a/Build/source/utils/xindy/ac/xindy.ac b/Build/source/utils/xindy/ac/xindy.ac
new file mode 100644
index 00000000000..3aaedcd52a6
--- /dev/null
+++ b/Build/source/utils/xindy/ac/xindy.ac
@@ -0,0 +1,19 @@
+## utils/xindy/ac/xindy.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/
+dnl
+dnl Copyright (C) 2009-2015 Peter Breitenlohner <tex-live@tug.org>
+dnl You may freely use, modify and/or distribute this file.
+dnl
+## configure options for xindy
+m4_define_default([kpse_indent_26], [26])[]dnl
+AC_ARG_ENABLE([xindy-rules],
+ AS_HELP_STRING([--enable-xindy-rules],
+ [build and install make-rules package],
+ kpse_indent_26))[]dnl
+AC_ARG_ENABLE([xindy-docs],
+ AS_HELP_STRING([--enable-xindy-docs],
+ [build and install documentation],
+ kpse_indent_26))[]dnl
+AC_ARG_WITH([clisp-runtime],
+ AS_HELP_STRING([--with-clisp-runtime=PATH],
+ [pathname of clisp runtime to install for `xindy', `default' to derive
+ from clisp, or `system' to use installed version]))[]dnl
diff --git a/Build/source/utils/xindy/aclocal.m4 b/Build/source/utils/xindy/aclocal.m4
new file mode 100644
index 00000000000..6ce83a4cd28
--- /dev/null
+++ b/Build/source/utils/xindy/aclocal.m4
@@ -0,0 +1,1172 @@
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.16'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.16.3], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.16.3])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ AS_CASE([$CONFIG_FILES],
+ [*\'*], [eval set x "$CONFIG_FILES"],
+ [*], [set x $CONFIG_FILES])
+ shift
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
+ do
+ # Strip MF so we end up with the name of the file.
+ am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`AS_DIRNAME(["$am_mf"])`
+ am_filepart=`AS_BASENAME(["$am_mf"])`
+ AM_RUN_LOG([cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles]) || am_rc=$?
+ done
+ if test $am_rc -ne 0; then
+ AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).])
+ fi
+ AS_UNSET([am_dirpart])
+ AS_UNSET([am_filepart])
+ AS_UNSET([am_mf])
+ AS_UNSET([am_rc])
+ rm -f conftest-deps.mk
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
+am__doit:
+ @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+ AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+ ['0:this is the am__doit target'],
+ [AS_CASE([$s],
+ [BSD], [am__include='.include' am__quote='"'],
+ [am__include='include' am__quote=''])])
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../../m4/kpse-common.m4])
+m4_include([../../m4/kpse-progs.m4])
+m4_include([../../m4/kpse-warnings.m4])
+m4_include([../../m4/kpse-win32.m4])
diff --git a/Build/source/utils/xindy/configure b/Build/source/utils/xindy/configure
new file mode 100755
index 00000000000..43153cc1222
--- /dev/null
+++ b/Build/source/utils/xindy/configure
@@ -0,0 +1,6485 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for xindy (TeX Live) 2.5.1.
+#
+# Report bugs to <tex-k@tug.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and tex-k@tug.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='xindy (TeX Live)'
+PACKAGE_TARNAME='xindy--tex-live-'
+PACKAGE_VERSION='2.5.1'
+PACKAGE_STRING='xindy (TeX Live) 2.5.1'
+PACKAGE_BUGREPORT='tex-k@tug.org'
+PACKAGE_URL=''
+
+ac_unique_file="xindy-src/ChangeLog.Gour"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+BUILDDOCS_FALSE
+BUILDDOCS_TRUE
+BUILDRULES_FALSE
+BUILDRULES_TRUE
+CLISP_RUNTIME_FALSE
+CLISP_RUNTIME_TRUE
+XINDY_TREE
+WIN32_WRAP_FALSE
+WIN32_WRAP_TRUE
+WIN_WRAPPER
+WIN32_FALSE
+WIN32_TRUE
+LISP_RUN
+XINDY_RUN
+PDFLATEX
+LATEX
+PERL
+CLISP
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LN_S
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+TEXLIVE_BUILD_FALSE
+TEXLIVE_BUILD_TRUE
+pkglibdir
+memdir
+WARNING_CFLAGS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL
+am__quote'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
+enable_dependency_tracking
+enable_compiler_warnings
+enable_xindy_rules
+enable_xindy_docs
+with_clisp_runtime
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+PERL
+LATEX
+PDFLATEX'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures xindy (TeX Live) 2.5.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root
+ [DATAROOTDIR/doc/xindy--tex-live-]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of xindy (TeX Live) 2.5.1:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
+ --enable-compiler-warnings=[no|min|yes|max|all]
+ Turn on compiler warnings [default: yes if
+ maintainer-mode, min otherwise]
+ --enable-xindy-rules build and install make-rules package
+ --enable-xindy-docs build and install documentation
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-clisp-runtime=PATH
+ pathname of clisp runtime to install for `xindy',
+ `default' to derive from clisp, or `system' to use
+ installed version
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ PERL Perl interpreter command
+ LATEX LaTeX command
+ PDFLATEX pdfLaTeX command
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <tex-k@tug.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+xindy (TeX Live) configure 2.5.1
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by xindy (TeX Live) $as_me 2.5.1, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in ../../build-aux "$srcdir"/../../build-aux; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../../build-aux \"$srcdir\"/../../build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+am__api_version='1.16'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
+am__doit:
+ @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+ (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ case $?:`cat confinc.out 2>/dev/null` in #(
+ '0:this is the am__doit target') :
+ case $s in #(
+ BSD) :
+ am__include='.include' am__quote='"' ;; #(
+ *) :
+ am__include='include' am__quote='' ;;
+esac ;; #(
+ *) :
+ ;;
+esac
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+# Check whether --enable-compiler-warnings was given.
+if test "${enable_compiler_warnings+set}" = set; then :
+ enableval=$enable_compiler_warnings;
+fi
+case $enable_compiler_warnings in #(
+ no | min | yes | max | all) :
+ ;; #(
+ *) :
+ if test "x$enable_maintainer_mode" = xyes; then :
+ enable_compiler_warnings=yes
+else
+ enable_compiler_warnings=min
+fi ;;
+esac
+
+##tldbg KPSE_BASIC: Remember xindy (no-define) as Kpse_Package (for future messages).
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='xindy--tex-live-'
+ VERSION='2.5.1'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts prototypes" >&5
+$as_echo_n "checking whether the compiler accepts prototypes... " >&6; }
+if ${kb_cv_c_prototypes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+extern void foo(int i,...);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ kb_cv_c_prototypes=yes
+else
+ kb_cv_c_prototypes=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kb_cv_c_prototypes" >&5
+$as_echo "$kb_cv_c_prototypes" >&6; }
+if test "x$kb_cv_c_prototypes" = xno; then
+ as_fn_error $? "Sorry, your compiler does not understand prototypes." "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5
+$as_echo_n "checking what warning flags to pass to the C compiler... " >&6; }
+if ${kpse_cv_warning_cflags+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$GCC" = xyes; then
+ kpse_cv_warning_cflags=
+if test "x$enable_compiler_warnings" != xno; then
+ kpse_cv_warning_cflags="-Wimplicit -Wreturn-type"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; #(
+ *) :
+ ;;
+esac
+ case `$CC -dumpversion` in #(
+ 3.[234].* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmin; then
+ kpse_cv_warning_cflags="-Wall -Wunused $kpse_cv_warning_cflags"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations"
+ if test "x$enable_compiler_warnings" != xyes; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmax; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wshadow"
+ fi
+ fi
+ fi
+fi
+elif test "x$enable_compiler_warnings" = xno; then
+ kpse_cv_warning_cflags=
+else
+ kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_warning_cflags" >&5
+$as_echo "$kpse_cv_warning_cflags" >&6; }
+WARNING_CFLAGS=$kpse_cv_warning_cflags
+
+
+
+
+
+
+
+
+# Configure options for xindy also shown at the TeX Live top-level.
+## utils/xindy/ac/xindy.ac: configure.ac fragment for the TeX Live subdirectory utils/xindy/
+## configure options for xindy
+# Check whether --enable-xindy-rules was given.
+if test "${enable_xindy_rules+set}" = set; then :
+ enableval=$enable_xindy_rules;
+fi
+# Check whether --enable-xindy-docs was given.
+if test "${enable_xindy_docs+set}" = set; then :
+ enableval=$enable_xindy_docs;
+fi
+
+# Check whether --with-clisp-runtime was given.
+if test "${with_clisp_runtime+set}" = set; then :
+ withval=$with_clisp_runtime;
+fi
+
+
+case $enable_xindy_rules in #(
+ yes | no) :
+ ;; #(
+ *) :
+ if test "x$enable_native_texlive_build" = xyes; then :
+ enable_xindy_rules=no
+else
+ enable_xindy_rules=yes
+fi ;;
+esac
+case $enable_xindy_docs in #(
+ yes | no) :
+ ;; #(
+ *) :
+ if test "x$enable_native_texlive_build" = xyes; then :
+ enable_xindy_docs=no
+else
+ enable_xindy_docs=yes
+fi ;;
+esac
+
+# Installation directories for TeX Live.
+memdir='$(bindir)'
+pkglibdir='$(datarootdir)/texmf-dist/xindy'
+docdir='$(datarootdir)/texmf-dist/doc/xindy'
+
+
+ if test "x$enable_texlive_build" = xyes; then
+ TEXLIVE_BUILD_TRUE=
+ TEXLIVE_BUILD_FALSE='#'
+else
+ TEXLIVE_BUILD_TRUE='#'
+ TEXLIVE_BUILD_FALSE=
+fi
+
+
+# Checks for programs.
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+for ac_prog in flex lex
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LEX"; then
+ ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LEX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test "x$LEX" != "x:"; then
+ cat >conftest.l <<_ACEOF
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */
+ yyless ((input () != 0)); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+ return ! yylex () + ! yywrap ();
+}
+_ACEOF
+{ { ac_try="$LEX conftest.l"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$LEX conftest.l") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if ${ac_cv_prog_lex_root+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+if test -f lex.yy.c; then
+ ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+ ac_cv_prog_lex_root=lexyy
+else
+ as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+if test -z "${LEXLIB+set}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if ${ac_cv_lib_lex+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_save_LIBS=$LIBS
+ ac_cv_lib_lex='none needed'
+ for ac_lib in '' -lfl -ll; do
+ LIBS="$ac_lib $ac_save_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_lex=$ac_lib
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ test "$ac_cv_lib_lex" != 'none needed' && break
+ done
+ LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
+ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent. Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_prog_lex_yytext_pointer=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
+
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+# Check system type
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+for ac_prog in clisp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CLISP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CLISP"; then
+ ac_cv_prog_CLISP="$CLISP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CLISP="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CLISP=$ac_cv_prog_CLISP
+if test -n "$CLISP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLISP" >&5
+$as_echo "$CLISP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CLISP" && break
+done
+test -n "$CLISP" || CLISP="no"
+
+
+for ac_prog in perl perl5
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PERL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PERL"; then
+ ac_cv_prog_PERL="$PERL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PERL="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PERL" && break
+done
+test -n "$PERL" || PERL="no"
+
+
+for ac_prog in latex elatex lambda
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LATEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LATEX"; then
+ ac_cv_prog_LATEX="$LATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LATEX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LATEX=$ac_cv_prog_LATEX
+if test -n "$LATEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5
+$as_echo "$LATEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LATEX" && break
+done
+test -n "$LATEX" || LATEX="no"
+
+
+for ac_prog in pdflatex
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PDFLATEX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PDFLATEX"; then
+ ac_cv_prog_PDFLATEX="$PDFLATEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PDFLATEX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PDFLATEX=$ac_cv_prog_PDFLATEX
+if test -n "$PDFLATEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5
+$as_echo "$PDFLATEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PDFLATEX" && break
+done
+test -n "$PDFLATEX" || PDFLATEX="no"
+
+
+if test "x$enable_build" != xno || test -f config.force; then
+
+if test "x$CLISP" = xno; then
+ as_fn_error $? "CLISP is required to build and run xindy" "$LINENO" 5
+fi
+
+if test "x$EXEEXT" = x.exe; then
+ XINDY_RUN=xindy-lisp.exe
+ LISP_RUN=lisp.exe
+else
+ XINDY_RUN=xindy.run
+ LISP_RUN=lisp.run
+fi
+
+if test "x$with_clisp_runtime" != xsystem; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clisp runtime" >&5
+$as_echo_n "checking for clisp runtime... " >&6; }
+ if test "x$with_clisp_runtime" = xdefault; then
+ # Convert dos line endings from cygwin clisp.
+ LISP_RUN=`echo '(format t "~a" *lib-directory*)' \
+ | $CLISP -q -norc - | tr -d '\r'`base/$LISP_RUN
+ else
+ LISP_RUN=$with_clisp_runtime
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LISP_RUN" >&5
+$as_echo "$LISP_RUN" >&6; }
+ if test ! -f "$LISP_RUN"; then
+ as_fn_error $? "no such file: \"$LISP_RUN\"" "$LINENO" 5
+ fi
+fi
+
+
+
+
+if test "x$enable_xindy_rules:$PERL" = xyes:no; then
+ as_fn_error $? "PERL is required to build xindy rules" "$LINENO" 5
+fi
+
+if test "x$enable_xindy_rules:$LATEX" = xyes:no; then
+ as_fn_error $? "LATEX is required to build xindy rules" "$LINENO" 5
+fi
+
+if test "x$enable_xindy_rules:$enable_xindy_docs:$PDFLATEX" = xyes:yes:no; then
+ as_fn_error $? "PDFLATEX is required to build xindy docs" "$LINENO" 5
+fi
+
+# No checks for header files. We use stdio.h, unistd.h, and string.h.
+# Today, they are universally available if a C compiler is installed.
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+# The code in tex2indy.l simply assumes that strtoul() is there, would
+# need a replacement.
+for ac_func in strtoul
+do :
+ ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOUL 1
+_ACEOF
+
+else
+ as_fn_error $? "strtoul() is needed" "$LINENO" 5
+fi
+done
+
+
+echo timestamp >config.force
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native WIN32 or MINGW32" >&5
+$as_echo_n "checking for native WIN32 or MINGW32... " >&6; }
+if ${kpse_cv_have_win32+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef WIN32
+ choke me
+#endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __MINGW32__
+ choke me
+#endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ kpse_cv_have_win32=mingw32
+else
+ kpse_cv_have_win32=native
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ kpse_cv_have_win32=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_have_win32" >&5
+$as_echo "$kpse_cv_have_win32" >&6; }
+
+ if test "x$kpse_cv_have_win32" != xno; then
+ WIN32_TRUE=
+ WIN32_FALSE='#'
+else
+ WIN32_TRUE='#'
+ WIN32_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WIN64" >&5
+$as_echo_n "checking for WIN64... " >&6; }
+if ${kpse_cv_have_win64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef _WIN64
+ choke me
+#endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ kpse_cv_have_win64=yes
+else
+ kpse_cv_have_win64=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_have_win64" >&5
+$as_echo "$kpse_cv_have_win64" >&6; }
+case $kpse_cv_have_win64 in #(
+ yes) :
+ if test "x$kpse_cv_have_win32=xmingw"; then :
+ WIN_WRAPPER=w64_mingw_wrapper
+else
+ WIN_WRAPPER=w64_wrapper
+fi ;; #(
+ *) :
+ WIN_WRAPPER=w32_wrapper ;;
+esac
+
+ if test -r "$srcdir/../../texk/texlive/$WIN_WRAPPER/runscript.exe"; then
+ WIN32_WRAP_TRUE=
+ WIN32_WRAP_FALSE='#'
+else
+ WIN32_WRAP_TRUE='#'
+ WIN32_WRAP_FALSE=
+fi
+
+
+
+XINDY_TREE=xindy-src
+
+
+ if test "x$with_clisp_runtime" != xsystem; then
+ CLISP_RUNTIME_TRUE=
+ CLISP_RUNTIME_FALSE='#'
+else
+ CLISP_RUNTIME_TRUE='#'
+ CLISP_RUNTIME_FALSE=
+fi
+
+ if test "x$enable_xindy_rules" = xyes; then
+ BUILDRULES_TRUE=
+ BUILDRULES_FALSE='#'
+else
+ BUILDRULES_TRUE='#'
+ BUILDRULES_FALSE=
+fi
+
+ if test "x$enable_xindy_docs" = xyes; then
+ BUILDDOCS_TRUE=
+ BUILDDOCS_FALSE='#'
+else
+ BUILDDOCS_TRUE='#'
+ BUILDDOCS_FALSE=
+fi
+
+
+ac_config_files="$ac_config_files Makefile xindy-src/Makefile xindy-src/src/Makefile xindy-src/tex2xindy/Makefile xindy-src/modules/Makefile xindy-src/user-commands/Makefile xindy-src/make-rules/Makefile xindy-src/make-rules/alphabets/Makefile xindy-src/make-rules/inputenc/Makefile xindy-src/doc/Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${TEXLIVE_BUILD_TRUE}" && test -z "${TEXLIVE_BUILD_FALSE}"; then
+ as_fn_error $? "conditional \"TEXLIVE_BUILD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then
+ as_fn_error $? "conditional \"WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WIN32_WRAP_TRUE}" && test -z "${WIN32_WRAP_FALSE}"; then
+ as_fn_error $? "conditional \"WIN32_WRAP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CLISP_RUNTIME_TRUE}" && test -z "${CLISP_RUNTIME_FALSE}"; then
+ as_fn_error $? "conditional \"CLISP_RUNTIME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILDRULES_TRUE}" && test -z "${BUILDRULES_FALSE}"; then
+ as_fn_error $? "conditional \"BUILDRULES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILDDOCS_TRUE}" && test -z "${BUILDDOCS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILDDOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by xindy (TeX Live) $as_me 2.5.1, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to <tex-k@tug.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+xindy (TeX Live) config.status 2.5.1
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "xindy-src/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/Makefile" ;;
+ "xindy-src/src/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/src/Makefile" ;;
+ "xindy-src/tex2xindy/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/tex2xindy/Makefile" ;;
+ "xindy-src/modules/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/modules/Makefile" ;;
+ "xindy-src/user-commands/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/user-commands/Makefile" ;;
+ "xindy-src/make-rules/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/make-rules/Makefile" ;;
+ "xindy-src/make-rules/alphabets/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/make-rules/alphabets/Makefile" ;;
+ "xindy-src/make-rules/inputenc/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/make-rules/inputenc/Makefile" ;;
+ "xindy-src/doc/Makefile") CONFIG_FILES="$CONFIG_FILES xindy-src/doc/Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ case $CONFIG_FILES in #(
+ *\'*) :
+ eval set x "$CONFIG_FILES" ;; #(
+ *) :
+ set x $CONFIG_FILES ;; #(
+ *) :
+ ;;
+esac
+ shift
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
+ do
+ # Strip MF so we end up with the name of the file.
+ am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$am_mf" : 'X\(//\)[^/]' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { echo "$as_me:$LINENO: cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles" >&5
+ (cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } || am_rc=$?
+ done
+ if test $am_rc -ne 0; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
+ necessary). You can also try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ { am_dirpart=; unset am_dirpart;}
+ { am_filepart=; unset am_filepart;}
+ { am_mf=; unset am_mf;}
+ { am_rc=; unset am_rc;}
+ rm -f conftest-deps.mk
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/Build/source/utils/xindy/configure.ac b/Build/source/utils/xindy/configure.ac
new file mode 100644
index 00000000000..3481988ac54
--- /dev/null
+++ b/Build/source/utils/xindy/configure.ac
@@ -0,0 +1,139 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright (C) 2009-2014 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl *********************************************************************
+dnl
+dnl Adapted for TeX Live from xindy-src/configure.ac
+dnl Copyright (C) 2004-2005 by Gour.
+dnl Copyright (C) 2008,2009 by Joachim Schrod.
+dnl
+dnl *********************************************************************
+dnl
+m4_include([version.ac])[] dnl define xindy_version
+AC_INIT([xindy (TeX Live)], xindy_version, [tex-k@tug.org])
+AC_PREREQ([2.65])
+AC_CONFIG_SRCDIR([xindy-src/ChangeLog.Gour])
+AC_CONFIG_AUX_DIR([../../build-aux])
+AC_CONFIG_MACRO_DIR([../../m4])
+
+KPSE_BASIC([xindy], [no-define])
+
+# Configure options for xindy also shown at the TeX Live top-level.
+m4_include([ac/xindy.ac])
+
+AS_CASE([$enable_xindy_rules],
+ [yes | no], ,
+ [AS_IF([test "x$enable_native_texlive_build" = xyes],
+ [enable_xindy_rules=no],
+ [enable_xindy_rules=yes])])
+AS_CASE([$enable_xindy_docs],
+ [yes | no], ,
+ [AS_IF([test "x$enable_native_texlive_build" = xyes],
+ [enable_xindy_docs=no],
+ [enable_xindy_docs=yes])])
+
+# Installation directories for TeX Live.
+memdir='$(bindir)'
+pkglibdir='$(datarootdir)/texmf-dist/xindy'
+docdir='$(datarootdir)/texmf-dist/doc/xindy'
+AC_SUBST([memdir])
+AC_SUBST([pkglibdir])
+AM_CONDITIONAL([TEXLIVE_BUILD], [test "x$enable_texlive_build" = xyes])
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_LEX
+AC_PROG_LN_S
+
+# Check system type
+AC_CANONICAL_HOST
+
+AC_CHECK_PROGS([CLISP], [clisp], [no])
+KPSE_CHECK_PERL
+KPSE_CHECK_LATEX
+KPSE_CHECK_PDFLATEX
+
+if test "x$enable_build" != xno || test -f config.force; then
+
+if test "x$CLISP" = xno; then
+ AC_MSG_ERROR([CLISP is required to build and run xindy])
+fi
+
+if test "x$EXEEXT" = x.exe; then
+ XINDY_RUN=xindy-lisp.exe
+ LISP_RUN=lisp.exe
+else
+ XINDY_RUN=xindy.run
+ LISP_RUN=lisp.run
+fi
+
+if test "x$with_clisp_runtime" != xsystem; then
+ AC_MSG_CHECKING([for clisp runtime])
+ if test "x$with_clisp_runtime" = xdefault; then
+ # Convert dos line endings from cygwin clisp.
+ LISP_RUN=`echo '(format t "~a" *lib-directory*)' \
+ | $CLISP -q -norc - | tr -d '\r'`base/$LISP_RUN
+ else
+ LISP_RUN=$with_clisp_runtime
+ fi
+ AC_MSG_RESULT([$LISP_RUN])
+ if test ! -f "$LISP_RUN"; then
+ AC_MSG_ERROR([no such file: "$LISP_RUN"])
+ fi
+fi
+
+AC_SUBST([XINDY_RUN])
+AC_SUBST([LISP_RUN])
+
+if test "x$enable_xindy_rules:$PERL" = xyes:no; then
+ AC_MSG_ERROR([PERL is required to build xindy rules])
+fi
+
+if test "x$enable_xindy_rules:$LATEX" = xyes:no; then
+ AC_MSG_ERROR([LATEX is required to build xindy rules])
+fi
+
+if test "x$enable_xindy_rules:$enable_xindy_docs:$PDFLATEX" = xyes:yes:no; then
+ AC_MSG_ERROR([PDFLATEX is required to build xindy docs])
+fi
+
+# No checks for header files. We use stdio.h, unistd.h, and string.h.
+# Today, they are universally available if a C compiler is installed.
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+# The code in tex2indy.l simply assumes that strtoul() is there, would
+# need a replacement.
+AC_CHECK_FUNCS([strtoul], [],
+ [AC_MSG_ERROR([strtoul() is needed])])
+
+echo timestamp >config.force
+fi
+
+KPSE_COND_WIN32_WRAP
+
+AC_SUBST([XINDY_TREE], [xindy-src])
+
+AM_CONDITIONAL([CLISP_RUNTIME], [test "x$with_clisp_runtime" != xsystem])
+AM_CONDITIONAL([BUILDRULES], [test "x$enable_xindy_rules" = xyes])
+AM_CONDITIONAL([BUILDDOCS], [test "x$enable_xindy_docs" = xyes])
+
+AC_CONFIG_FILES([Makefile \
+ xindy-src/Makefile \
+ xindy-src/src/Makefile \
+ xindy-src/tex2xindy/Makefile \
+ xindy-src/modules/Makefile \
+ xindy-src/user-commands/Makefile \
+ xindy-src/make-rules/Makefile \
+ xindy-src/make-rules/alphabets/Makefile \
+ xindy-src/make-rules/inputenc/Makefile \
+ xindy-src/doc/Makefile \
+])
+
+AC_OUTPUT
diff --git a/Build/source/utils/xindy/tests/idxhello.idx b/Build/source/utils/xindy/tests/idxhello.idx
new file mode 100644
index 00000000000..5f3b98d84d0
--- /dev/null
+++ b/Build/source/utils/xindy/tests/idxhello.idx
@@ -0,0 +1,2 @@
+\indexentry{there}{1}
+\indexentry{hello}{1}
diff --git a/Build/source/utils/xindy/tests/idxhello.tex b/Build/source/utils/xindy/tests/idxhello.tex
new file mode 100644
index 00000000000..6c709ae075e
--- /dev/null
+++ b/Build/source/utils/xindy/tests/idxhello.tex
@@ -0,0 +1,13 @@
+% $Id$
+% public domain. minimal index test:
+% latex idxhello && texindy idxhello.idx && cat idxhello.ind # inspect output
+% (or makeindex for that matter.)
+%
+% xindy must be able to find its modules, which in TL means being run
+% out of Master/bin/*.
+%
+\documentclass{article}
+\begin{document}
+\index{xyz}xyz
+\index{abc}abc
+\end{document}
diff --git a/Build/source/utils/xindy/version.ac b/Build/source/utils/xindy/version.ac
new file mode 100644
index 00000000000..70c08dd11de
--- /dev/null
+++ b/Build/source/utils/xindy/version.ac
@@ -0,0 +1,11 @@
+dnl
+dnl Copyright (C) 2011-2014 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl --------------------------------------------------------
+dnl
+dnl m4-include this file to define the current xindy version
+m4_define([xindy_version], [2.5.1])
diff --git a/Build/source/utils/xindy/xindy-src/AUTHORS b/Build/source/utils/xindy/xindy-src/AUTHORS
new file mode 100644
index 00000000000..52c6c54c3a6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/AUTHORS
@@ -0,0 +1,57 @@
+
+AUTHORS OF XINDY
+================
+
+The xindy base system (CLISP plugins and kernel) was written by Roger
+Kehr, under supervision of Joachim Schrod as a student project in
+1995. It used an architectural design from Joachim that was prototyped
+in his research work on International Makeindex and STIL (SGML
+Transformations In Lisp). Roger continued to work on xindy until 2000,
+but is not involved in xindy development any more. In these years he
+especially designed and realized the current sort-rules framework.
+
+Having been involved as the project's supervisor from the start,
+Joachim Schrod is xindy's lead maintainer since 2000. Together with
+Christine Detig, he wrote the LaTeX Companion (2nd ed.) chapter on
+indexing where xindy is presented. As part of that work, he designed
+and realized user commands and xindy base modules. Ordrules, the basic
+rule evaluation facility, is also his work. In 2009, he moved xindy to
+a pure Lisp implementation, making compilation much easier and the
+overall system much more portable.
+ Joachim also creates the `official' releases, eventually, after
+some time, well, after a long time.
+
+Thomas Henlich wrote the make-rules package that generates xindy
+sort-rules for many languages, with special support for LaTeX Internal
+Character Representations (the markup that appears in *.idx files).
+Martin Vermeer contributed many improvements to this package.
+
+Gour took over the herculian task to create a source distribution from
+the shattered source parts, i.e., this current distribution form that
+uses autoconf/automake and can be installed with the canonical
+"./configure ; make ; make install" procedure. He also maintains the
+Gentoo ebuild package of xindy.
+
+Jörg Sommer chimed in and improved Gour's installation process by
+enabling to use an already installed CLISP. He is also the Debian
+package maintainer of xindy.
+
+Vladimir Volovich changed xindy's compilation and install process to
+fit into TeX-Live, first for TL 2008. He also created the first
+Windows and Mac OS X versions that way. He is also the TeX Live
+package maintainer of xindy.
+
+Peter Breitenlohner improved xindy's autoconf mechanism for better
+integration in TeX-Live 2010 and better maintainability.
+
+Akira Kakuto was instrumental in getting Windows support into shape
+into the hands of many people. Ulrike Fisher pushes for inclusion in
+MikTeX.
+
+Several people contributed whole language modules or fixes for
+existing modules: Claudio Beccari, Vafa Khalighi, Dohyun Kim, Kihwang
+Lee, Pavel Striz, Apostolos Syropoulos.
+
+
+Email addresses for the authors are best looked up in the mailing list
+archives; for spam-protection reasons I don't want to list them here.
diff --git a/Build/source/utils/xindy/xindy-src/COPYING b/Build/source/utils/xindy/xindy-src/COPYING
new file mode 100644
index 00000000000..d511905c164
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 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, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Build/source/utils/xindy/xindy-src/ChangeLog.Gour b/Build/source/utils/xindy/xindy-src/ChangeLog.Gour
new file mode 100644
index 00000000000..fea2da3a6e0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/ChangeLog.Gour
@@ -0,0 +1,338 @@
+Fri Jul 8 13:26:54 CEST 2005 dev@atmarama.org
+ tagged xindy-0.8.0 (aka xindy-2.2-beta2)
+
+Fri Jul 8 13:24:33 CEST 2005 dev@atmarama.org
+ * added setup.sh script to fix-perms script
+
+Fri Jul 8 11:32:18 CEST 2005 dev@atmarama.org
+ * bump version to xindy-2.2-beta2
+
+Fri Jul 8 11:31:06 CEST 2005 dev@atmarama.org
+ * applied changes for BUILDRULES (Makefile.ins)
+
+Fri Jul 8 11:19:55 CEST 2005 dev@atmarama.org
+ * added yindy.ebuild to the repo
+
+Fri Jul 8 11:16:12 CEST 2005 dev@atmarama.org
+ * added 'build make-rules' as a FEATURE
+
+Fri Jul 8 09:39:04 CEST 2005 dev@atmarama.org
+ * moving to beta2 target
+
+Fri Jul 8 09:38:11 CEST 2005 dev@atmarama.org
+ * added setup.sh to EXTRA_DIST
+
+Fri Jul 8 08:33:05 CEST 2005 dev@atmarama.org
+ * replaced iconv .. -t LATIN? --> iconv .. -t ISO8859-? to make Solaris & co. happy
+
+Fri Jul 8 07:57:26 CEST 2005 dev@atmarama.org
+ * replaced iconv --from-code .. to iconv -f ..
+
+Fri Jul 8 07:42:15 CEST 2005 dev@atmarama.org
+ * applied Joachim's clisp patch
+
+Thu Jul 7 21:41:13 CEST 2005 dev@atmarama.org
+ * added setup.sh script for handling binary distribution
+
+Thu Jul 7 21:40:14 CEST 2005 dev@atmarama.org
+ * removed some confusing trailing spaces in ../alphabets/Makefile.am and made BUILDDOCS=yes
+
+Mon Jul 4 15:18:04 CEST 2005 dev@atmarama.org
+ * removed some extra trailing spaces which confuse some 'make' program(s)
+
+Sun Jul 3 12:02:10 CEST 2005 dev@atmarama.org
+ tagged xindy-0.7.0 (aka xindy-2.2-beta1)
+
+Sun Jul 3 11:48:48 CEST 2005 dev@atmarama.org
+ * added some missing (& obscure) .* clisp files
+
+Sun Jul 3 11:32:48 CEST 2005 dev@atmarama.org
+ * $(clispdir)/src/.gdbinit added to fix-perms script
+
+Sun Jul 3 11:27:50 CEST 2005 dev@atmarama.org
+ * clisp's configure --> fix-perms
+
+Sun Jul 3 11:20:44 CEST 2005 dev@atmarama.org
+ * added clisp's configure to fix-perms #$:#"#!%&$#!!
+
+Sun Jul 3 11:11:39 CEST 2005 dev@atmarama.org
+ * added ../user-commands/texindy to fix-perms script
+
+Sun Jul 3 11:05:28 CEST 2005 dev@atmarama.org
+ * added modified fix-perms script
+
+Sun Jul 3 11:03:31 CEST 2005 dev@atmarama.org
+ * fix for xindy.in
+
+Sun Jul 3 10:20:24 CEST 2005 dev@atmarama.org
+ * new Makefile.am rule for xindy.in --> xindy
+
+Sun Jul 3 10:17:42 CEST 2005 dev@atmarama.org
+ * removing some generated files in $clispdir
+
+Sun Jul 3 10:14:46 CEST 2005 dev@atmarama.org
+ * 'xindy' script is not built via configure.ac any longer
+
+Sun Jul 3 08:08:24 CEST 2005 dev@atmarama.org
+ * we're up(de)grading to 2.2-beta1 :-)
+
+Sun Jul 3 08:07:23 CEST 2005 dev@atmarama.org
+ * include modified clisp's configure in the DIST rule
+
+Sat Jul 2 22:32:23 CEST 2005 dev@atmarama.org
+ tagged xindy-0.6.0
+
+Sat Jul 2 22:31:38 CEST 2005 dev@atmarama.org
+ * 'darcs dist' is used for creating xindy distribution!
+
+Sat Jul 2 22:28:45 CEST 2005 dev@atmarama.org
+ * added (fixed) 'fix-perms' script
+
+Sat Jul 2 22:25:17 CEST 2005 dev@atmarama.org
+ * new fix-perms script
+
+Sat Jul 2 22:21:15 CEST 2005 dev@atmarama.org
+ * new fix-perms script
+
+Sat Jul 2 22:14:34 CEST 2005 dev@atmarama.org
+ * removed old fix-perms script
+
+Sat Jul 2 22:09:00 CEST 2005 dev@atmarama.org
+ tagged xindy-0.5.3
+
+Sat Jul 2 22:08:04 CEST 2005 dev@atmarama.org
+ * added 'fix-perms' script to handle 'darcs dist' rule
+
+Sat Jul 2 21:00:37 CEST 2005 dev@atmarama.org
+ * remove some additional files in 'clispdir' to match pristine source
+
+Sat Jul 2 20:10:58 CEST 2005 dev@atmarama.org
+ tagged xindy-0.5.2
+
+Sat Jul 2 20:09:51 CEST 2005 dev@atmarama.org
+ * some typos and added 'clisp-test.c' to distclean rule
+
+Sat Jul 2 19:47:48 CEST 2005 dev@atmarama.org
+ * always clean docs in ../make-rules/alphabets
+
+Sat Jul 2 18:36:11 CEST 2005 dev@atmarama.org
+ tagged xindy-0.5.1
+
+Sat Jul 2 18:34:48 CEST 2005 dev@atmarama.org
+ * install doc in the $(PACKAGE_NAME)-$(PACKAGE_VERSION)
+
+Sat Jul 2 18:12:08 CEST 2005 dev@atmarama.org
+ * added 'build docs' as a FEATURE, removed generated file 'clisp-test.c' & removed 'clisp-distribution' from rte/Makefile.am
+
+Sat Jul 2 10:50:53 CEST 2005 dev@atmarama.org
+ tagged xindy-0.5.0 (aka alpha5)
+
+Sat Jul 2 10:49:40 CEST 2005 dev@atmarama.org
+ * we're ready for alpha5
+
+Sat Jul 2 10:46:52 CEST 2005 dev@atmarama.org
+ * changed class of alphabets-doc.tex article --> report and some cosmetic changes
+
+Sat Jul 2 10:44:06 CEST 2005 dev@atmarama.org
+ * more alphabets enabled in generated aplhabets-doc.pdf
+
+Sat Jul 2 08:22:07 CEST 2005 dev@atmarama.org
+ * patch to test Mac OS X and compile clisp without faulty readline (rte/configure)
+
+Sat Jul 2 08:08:14 CEST 2005 dev@atmarama.org
+ * ordrules patch applied
+
+Fri Jul 1 23:13:09 CEST 2005 dev@atmarama.org
+ tagged xindy-0.4.3
+
+Fri Jul 1 23:09:48 CEST 2005 dev@atmarama.org
+ * (final ?) fix for xindy.run perm & some fixes for alphabets' docs
+
+Fri Jul 1 18:19:45 CEST 2005 dev@atmarama.org
+ * removed make-rules/alphabets lambda-related scripts
+
+Fri Jul 1 18:14:39 CEST 2005 dev@atmarama.org
+ tagged xindy-0.4.2
+
+Fri Jul 1 18:13:37 CEST 2005 dev@atmarama.org
+ * we're going into xindy-2.3-alpha5 version
+
+Fri Jul 1 18:12:40 CEST 2005 dev@atmarama.org
+ * modules/ord & modules/rules incorporated, fixed perms for xindy.mem
+
+Fri Jul 1 17:35:32 CEST 2005 dev@atmarama.org
+ * added modules/ord files
+
+Fri Jul 1 17:32:10 CEST 2005 dev@atmarama.org
+ * added modules/rules files
+
+Fri Jul 1 17:29:07 CEST 2005 dev@atmarama.org
+ * changed perms for the whole package 755/644
+
+Fri Jul 1 15:20:00 CEST 2005 dev@atmarama.org
+ * added m4/ac_prog_pdflatex.m4 macro
+
+Fri Jul 1 15:16:40 CEST 2005 dev@atmarama.org
+ * back to old rte/configure
+
+Fri Jul 1 12:17:46 CEST 2005 dev@atmarama.org
+ * fix for rte/configure enabling one to pass arguments to clisp's configure
+
+Fri Jul 1 11:43:01 CEST 2005 dev@atmarama.org
+ tagged xindy-0.4.1
+
+Fri Jul 1 11:40:39 CEST 2005 dev@atmarama.org
+ * modified rule for ../inputenc/latin.xdy
+
+Fri Jul 1 11:02:56 CEST 2005 dev@atmarama.org
+ * added rules for latin.xdy in ..make-rules/inputenc
+
+Fri Jul 1 10:44:46 CEST 2005 dev@atmarama.org
+ * added isolatin*.xdy files in ..modules/tex folder
+
+Fri Jul 1 10:09:51 CEST 2005 dev@atmarama.org
+ * only xindy.run requires +x attribute
+
+Thu Jun 30 20:36:04 CEST 2005 dev@atmarama.org
+ tagged xindy-0.4.0 (aka alpha4)
+
+Thu Jun 30 20:35:03 CEST 2005 dev@atmarama.org
+ * polishing distribution (TODO 'clisp' distribution!)
+
+Thu Jun 30 10:36:31 CEST 2005 dev@atmarama.org
+ tagged xindy-0.3.4
+
+Thu Jun 30 10:35:59 CEST 2005 dev@atmarama.org
+ * polishing distribution (make-rules, modules)
+
+Thu Jun 30 09:57:57 CEST 2005 dev@atmarama.org
+ tagged xindy-0.3.3
+
+Thu Jun 30 09:56:28 CEST 2005 dev@atmarama.org
+ * polishing distribution (binaries, doc, user-commands, src, tex2xindy)
+
+Thu Jun 30 08:27:02 CEST 2005 dev@atmarama.org
+ * introduced rule for *.fas (binaries/Makefile.am)
+
+Thu Jun 30 07:12:38 CEST 2005 dev@atmarama.org
+ tagged xindy-0.3.2
+
+Thu Jun 30 07:08:25 CEST 2005 dev@atmarama.org
+ * fixed mechanism for handling $lib_dir & $modules_dir in 'xindy' script
+
+Wed Jun 29 17:50:17 CEST 2005 dev@atmarama.org
+ * typo in ..alphabets/slovak/Makefile.am
+
+Wed Jun 29 17:48:05 CEST 2005 dev@atmarama.org
+ * fixed typo in ..alphabets/russian/Makefile.am
+
+Wed Jun 29 17:44:52 CEST 2005 dev@atmarama.org
+ * some fixes in binaries/Makefile.am
+
+Tue Jun 28 14:10:52 CEST 2005 dev@atmarama.org
+ tagged xindy-0.3.1 (aka alpha3 - fixed)
+
+Tue Jun 28 14:08:58 CEST 2005 dev@atmarama.org
+ * obsolete comments about building clisp are commented & replaced with relevant info (it got lost :-o
+
+Tue Jun 28 13:31:36 CEST 2005 dev@atmarama.org
+ tagged xindy-0.3.0 (aka alpha3)
+
+Tue Jun 28 13:30:52 CEST 2005 dev@atmarama.org
+ * make-rules module completed (alpha3 release)
+
+Tue Jun 28 13:28:59 CEST 2005 dev@atmarama.org
+ * new tex2xindy.l
+
+Tue Jun 28 13:27:34 CEST 2005 dev@atmarama.org
+ * added creation of *-utf8.pl scripts
+
+Tue Jun 28 12:04:52 CEST 2005 dev@atmarama.org
+ * turkish, ukrainian, upper-sorbian & vietnamese
+
+Tue Jun 28 11:49:41 CEST 2005 dev@atmarama.org
+ * romanian, russian, serbian, slovak, slovenian, spanish & swedish
+
+Tue Jun 28 10:48:17 CEST 2005 dev@atmarama.org
+ * macedonian, mongolian, norwegian, polish & portuguese
+
+Tue Jun 28 10:31:45 CEST 2005 dev@atmarama.org
+ * klingon, kurdish, latin, latvian, lithuanian & lower-sorbian
+
+Tue Jun 28 08:58:50 CEST 2005 dev@atmarama.org
+ * icelandic & italian
+
+Mon Jun 27 20:19:39 CEST 2005 dev@atmarama.org
+ * hausa, hebrew & hungarian
+
+Mon Jun 27 20:09:09 CEST 2005 dev@atmarama.org
+ * general, georgian, german, greek & gypsy
+
+Mon Jun 27 19:02:41 CEST 2005 dev@atmarama.org
+ * finnish & french
+
+Mon Jun 27 18:40:34 CEST 2005 dev@atmarama.org
+ * esperanto & estonian
+
+Mon Jun 27 18:21:47 CEST 2005 dev@atmarama.org
+ * dutch & english
+
+Mon Jun 27 17:31:11 CEST 2005 dev@atmarama.org
+ * czech & danish
+
+Mon Jun 27 16:29:56 CEST 2005 dev@atmarama.org
+ * bulgarian & croatian
+
+Mon Jun 27 15:49:50 CEST 2005 dev@atmarama.org
+ * albanian & belarusian
+
+Fri Jun 24 14:05:00 CEST 2005 dev@atmarama.org
+ * adde m4/ac_prog_latex.m4 macro for checking 'latex'
+
+Thu Jun 23 13:37:15 CEST 2005 dev@atmarama.org
+ tagged xindy-0.2.0
+
+Thu Jun 23 13:36:12 CEST 2005 dev@atmarama.org
+ * finished 'styles' & 'inputenc' modules in make-rules
+
+Thu Jun 23 10:21:25 CEST 2005 dev@atmarama.org
+ * removed obsolete Makefiles & prepared 'inputenc' module
+
+Wed Jun 22 22:39:03 CEST 2005 dev@atmarama.org
+ * preparation for inclusion of 'make-rules' module
+
+Wed Jun 22 09:56:50 CEST 2005 dev@atmarama.org
+ tagged xindy-0.1.4
+
+Wed Jun 22 09:55:58 CEST 2005 dev@atmarama.org
+ * removed ChangeLog from repo
+
+Wed Jun 22 09:53:00 CEST 2005 dev@atmarama.org
+ * removed make-rules/xorty
+
+Wed Jun 22 09:45:11 CEST 2005 dev@atmarama.org
+ tagged xindy-0.1.3
+
+Wed Jun 22 09:20:24 CEST 2005 dev@atmarama.org
+ * xindy.in mechanism for handling 'lib_dir' & 'modules_dir' added
+
+Wed Jun 22 08:48:19 CEST 2005 dev@atmarama.org
+ tagged xindy-0.1.2
+
+Wed Jun 22 08:46:36 CEST 2005 dev@atmarama.org
+ * obsolete comments about building clisp are commented & replaced with relevant info
+
+Wed Jun 22 08:21:58 CEST 2005 dev@atmarama.org
+ * removed 'mkdir -p' & added 'dist-hook' in top-level Makefile.am to preserve scripts' perms
+
+Tue Jun 21 16:12:50 CEST 2005 dev@atmarama.org
+ tagged xindy-0.1.1
+
+Tue Jun 21 16:12:05 CEST 2005 dev@atmarama.org
+ * added missing *.in files
+
+Mon Jun 20 15:20:59 CEST 2005 dev@atmarama.org
+ tagged xindy-0.1.0 (aka xindy-2.3-alpha2)
+
+Mon Jun 20 15:17:00 CEST 2005 dev@atmarama.org
+ * xindy-2.3-alpha2
diff --git a/Build/source/utils/xindy/xindy-src/INSTALL b/Build/source/utils/xindy/xindy-src/INSTALL
new file mode 100644
index 00000000000..804421d0ceb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/INSTALL
@@ -0,0 +1,271 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+Copyright (C) 2008-2014 Joachim Schrod <jschrod@acm.org>
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it. Additions by
+Joachim Schrod, giving the same permissions.
+
+
+xindy Specifics
+===============
+
+CLISP is required. Often, it's available prepackaged from your
+distribution, otherwise download and install it from
+http://clisp.cons.org/.
+The command clisp must be found at build and run time.
+clisp's version at build and run time must be the same.
+
+Perl is required.
+
+GNU Make is required.
+E.g., on FreeBSD or Solaris, this means to install an appropriate
+package and use the command `gmake' instead of `make'.
+
+An installed LaTeX system is required. It is needed to create the
+LaTeX-specific part of the sort rules that knows how to handle LaTeX
+Internal Character Encodings from *.idx files.
+
+
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PREFIX', the package will
+use PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script). Here is a another example:
+
+ /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--disable-make-rules'
+ Don't create xindy's language modules. Only sensible if you don't
+ have LaTeX on your build system and get the language modules from
+ elsewhere (they are system-independent).
+
+`--disable-docs'
+ Don't create make-rules documentation. Only sensible if you don't
+ have pdfLaTeX on your build system. (Should probably combined
+ with --disable-make-rules, or should not install other docs
+ either.)
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Build/source/utils/xindy/xindy-src/Makefile.am b/Build/source/utils/xindy/xindy-src/Makefile.am
new file mode 100644
index 00000000000..e8449eacd15
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/Makefile.am
@@ -0,0 +1,49 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+# Makefile for xindy
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2008,2009 by Joachim Schrod.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+## Global options
+
+ACLOCAL_AMFLAGS = -I m4
+
+SUBDIRS = src tex2xindy modules user-commands
+
+# do we build make-rules?
+if BUILDRULES
+ SUBDIRS += make-rules
+endif
+
+# do we build docs?
+if BUILDDOCS
+ SUBDIRS += doc
+endif
+
+EXTRA_DIST = ChangeLog.Gour VERSION TODO.autoconf
+
+versiondir = ${pkglibdir}
+version_DATA = VERSION
+
+
+distclean-local:
+ rm -rf autom4te.cache
+
diff --git a/Build/source/utils/xindy/xindy-src/Makefile.in b/Build/source/utils/xindy/xindy-src/Makefile.in
new file mode 100644
index 00000000000..63908beab74
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/Makefile.in
@@ -0,0 +1,677 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for xindy
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+
+# do we build make-rules?
+@BUILDRULES_TRUE@am__append_1 = make-rules
+
+# do we build docs?
+@BUILDDOCS_TRUE@am__append_2 = doc
+subdir = xindy-src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(versiondir)"
+DATA = $(version_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = src tex2xindy modules user-commands make-rules doc
+am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING INSTALL NEWS \
+ README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = src tex2xindy modules user-commands $(am__append_1) \
+ $(am__append_2)
+EXTRA_DIST = ChangeLog.Gour VERSION TODO.autoconf
+versiondir = ${pkglibdir}
+version_DATA = VERSION
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-versionDATA: $(version_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(version_DATA)'; test -n "$(versiondir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(versiondir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(versiondir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(versiondir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(versiondir)" || exit $$?; \
+ done
+
+uninstall-versionDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(version_DATA)'; test -n "$(versiondir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(versiondir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(versiondir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-versionDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-versionDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic cscopelist-am ctags ctags-am \
+ distclean distclean-generic distclean-local distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip install-versionDATA installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-versionDATA
+
+.PRECIOUS: Makefile
+
+
+distclean-local:
+ rm -rf autom4te.cache
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/NEWS b/Build/source/utils/xindy/xindy-src/NEWS
new file mode 100644
index 00000000000..d0d7cb5098e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/NEWS
@@ -0,0 +1,44 @@
+
+XINDY RELEASE NOTES
+===================
+
+Version Date Remarks
+
+2.5.0 2014-04-19 `TeX Live 2014 Release'.
+ Patches from TeX Live. Support for MikTeX.
+ New languages: Persian, Korean.
+ Corrected sorting: Polytonik Greek, Vietnamese.
+ Language modules may be in modules/contrib/lang/.
+ By default, make-rules documentation is not created.
+ texindy utf8 codepage for Latin scripts supported.
+
+2.4 2010-05-11 `TUG30 Release'.
+ Pure Lisp implementation, needs an installed CLISP.
+ Easy compilation and installation, first official
+ Mac OS X support.
+ Bug fixes in user commands.
+ xindy progress messages to stdout, not stderr.
+ Changes from TeX-Live (TL2010), for better
+ autoconf and draft Windows support. (Thanks to
+ Peter Breitenlohner for that contribution.)
+
+2.3.1 2008-01-14 Downgraded to CLISP 2.42; there are many reports
+ of 2.43 compilation problems on AMD64 systems.
+
+2.3 2008-01-09 `Gour and Jörg Waited Too Long For It Release'.
+ Source distribution with canonical install procedure.
+ Includes UTF-8 and Omega support.
+ Bug fixes in base modules and *.idx parsing.
+
+2.2 rc2 2005-05-10 2nd release candidate for `LaTeX Companion Release'.
+ Resolved issues:
+ -- Linux release works on glibc 2.3
+ -- Two double quotes in index key are supported
+ -- Options are checked carefully and errors are reported
+ -- Structured version numbers
+ -- Style file tutorial commands work
+
+2.2 rc1 2004-05-28 First release candidate for `LaTeX Companion Release'.
+ New command interface, new distribution strategy
+ (ready-to-run), consolidated distribution of run time
+ engine, kernel, and language modules.
diff --git a/Build/source/utils/xindy/xindy-src/README b/Build/source/utils/xindy/xindy-src/README
new file mode 100644
index 00000000000..5e9203c5ded
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/README
@@ -0,0 +1,118 @@
+
+xindy (`fleXible INDexing sYstem') is a flexible index processor that
+creates tagged index for publication system. xindy merges, sorts, and
+outputs markup for raw index entries. It is highly configurable. It
+supports many languages.
+
+This is the source distribution of xindy,
+Release notes are available in the file NEWS, in this directory.
+
+The original source is available from Sourceforge, see
+http://www.xindy.org/ for more information. This Web Site should
+contain also the most up-to-date information about xindy. Sadly, it
+hasn't. Nowadays, TeX Live and CTAN are the source of the most current
+distribution; sources are available over Joachim's Github account,
+https://github.com/jschrod/xindy.ctan.
+
+
+INSTALLATION (Short Version)
+------------
+Unpack the distribution archive, a directory xindy-<version> will
+be created. Usual steps follow:
+
+ $ cd xindy-<version>
+ $ ./configure
+ $ make
+ $ make install
+
+You need to use GNU make; e.g., on FreeBSD or on Solaris, you need to
+install it and use the command gmake instead of make.
+
+By default, installation will be done in the /usr/local/ tree.
+You can change that with the configure option `--prefix'.
+
+The long version of the installation instructions are in the file
+INSTALL.
+
+Please note: The xindy modules directory location (currently,
+$prefix/lib/xindy/modules/) is bound to be changed in future
+distributions. This only matters if you install additional modules
+there, at future updates.
+
+
+UPDATE INSTALLATION
+-------------------
+There is no specific update installation procedure, sorry. You need to
+install xindy anew.
+
+If you had installed xindy 2.2 RC1 (the LaTeX Companion Release)
+and you had additional xindy module files installed in the system-wide
+directories, you need to move them manually to the new modules tree.
+That is located in $prefix/lib/xindy/modules/ ($prefix is /usr/local/
+by default).
+
+
+USAGE
+-----
+There are two main commands:
+ -- texindy, for creation of indexes for LaTeX documents
+ -- xindy, for generic index creation
+
+Manuals for these commands are installed in appropriate man
+directories and additionally supplied in PDF format, in the
+/doc/ subdirectory of the distribution, which gets installed as
+$prefix/share/doc/xindy-<version>/.
+
+This documentation directory has more documentation. Technical reports
+are on our Web Site, http://www.xindy.org/.
+
+
+KNOWN ISSUES
+------------
+Known problems and wanted enhancements of xindy are documented in our
+SourceForge tracker system, accessible on the Web at
+https://sourceforge.net/tracker/?group_id=10646
+
+
+FEEDBACK / MAILING LIST
+-----------------------
+Everybody is encouraged to port xindy to new platforms. For any kind
+of suggestions, helpful comments, questions, bug reports and such,
+please mail to the xindy mailing list
+
+ xindy-discuss@lists.sourceforge.net
+
+This is a low-volume mailing list; with a few emails per month.
+You can subscribe to the list by visiting
+
+ http://lists.sourceforge.net/lists/listinfo/xindy-discuss
+
+Mailing list archives are public and can be read at
+
+ http://sourceforge.net/mailarchive/forum.php?forum=xindy-discuss
+
+
+DISTRIBUTION CONTENT
+--------------------
+This distribution contains
+ -- xindy kernel (src/, tex2xindy/, user-commands/)
+ -- sort-rules for many languages (make-rules/)
+ -- base xindy styles, as described in the LaTeX Companion (modules/)
+
+
+LEGALESE
+--------
+This package is freely distributable software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License
+(GPL) as published by the Free Software Foundation.
+
+This software 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 in
+the file COPYING along with this package; if not, write to the Free
+Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+The xindy index processor is released under GPL version 2 or later.
diff --git a/Build/source/utils/xindy/xindy-src/TODO.autoconf b/Build/source/utils/xindy/xindy-src/TODO.autoconf
new file mode 100644
index 00000000000..7768ad5acca
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/TODO.autoconf
@@ -0,0 +1,51 @@
+
+[Check] FIXMEs in configure.ac
+
+ -- flex for tex2indy?
+ -- latex must be available
+
+Sat Mar 28 18:07:07 2009 schrod
+----------------------------------------------------------------------
+
+[Problem] abort while building documentation
+
+Folks on Mac OS X had aborts while make-rules documentation should
+have been created. There exists a ticket from Yannis with logs.
+
+Tue May 11 02:08:07 2010 schrod
+----------------------------------------------------------------------
+
+[Missing] Changes from Vladimir/Peter for TeX Live
+
+TL install dirs
+Reorg of alphabets Makefile.am
+
+Sun Mar 29 13:50:45 2009 schrod
+----------------------------------------------------------------------
+
+[Change] strtoul() might not exist
+
+Replace it with function from gnulib.
+AC_REPLACE_FUNCS
+
+Sun Mar 29 13:46:35 2009 schrod
+----------------------------------------------------------------------
+
+[Change] No need to insist on GNU make any more
+
+pattern rules
+variable subtitutions
+
+OK: src user-commands tex2xindy
+TBD: make-rules
+
+Sat Mar 28 18:18:03 2009 schrod
+----------------------------------------------------------------------
+
+[Change] Use maintainer mode
+
+autoconf builds are triggered too often without reason...
+
+Tue May 11 02:06:04 2010 schrod
+----------------------------------------------------------------------
+
diff --git a/Build/source/utils/xindy/xindy-src/VERSION b/Build/source/utils/xindy/xindy-src/VERSION
new file mode 100644
index 00000000000..73462a5a134
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/VERSION
@@ -0,0 +1 @@
+2.5.1
diff --git a/Build/source/utils/xindy/xindy-src/configure.ac b/Build/source/utils/xindy/xindy-src/configure.ac
new file mode 100644
index 00000000000..69a1c837b8b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/configure.ac
@@ -0,0 +1,110 @@
+## -*- Autoconf -*-
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `autoconf' to create only configure.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2008-2014 by Joachim Schrod.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+AC_PREREQ(2.68)
+dnl Get version string from file; need to discard training newline.
+m4_define([XINDY_VERSION], m4_chomp(m4_include([VERSION])))
+AC_INIT([xindy], XINDY_VERSION, [xindy-discuss@lists.sourceforge.net])
+
+# Automake's dist target needs all to-be-distributed files flagged in
+# Makefile.am files; we have not done that yet. Since we don't do C
+# programs, automake's defaults are not usable for us, too.
+#
+# FIXME: Now make dist works, thanks to Peter's patches. Shouldn't I
+# need to change here now?
+AM_INIT_AUTOMAKE([foreign no-define])
+
+# Installation directory for standalone xindy, different when part of TeX Live.
+memdir='$(pkglibdir)'
+AC_SUBST([memdir])
+AM_CONDITIONAL([TEXLIVE_BUILD], [false])
+
+# Test for building make-rules
+AC_ARG_ENABLE([make-rules],
+ AS_HELP_STRING([--enable-make-rules],
+ [build and install make-rules package (default is YES)]),
+ [BUILDRULES=$enableval],
+ [BUILDRULES=yes])
+AS_IF([test "$BUILDRULES" = "yes"], [AC_PROG_LATEX])
+AM_CONDITIONAL([BUILDRULES], [test "x$BUILDRULES" = xyes])
+
+# Test for building Documentation
+AC_ARG_ENABLE([docs],
+ AS_HELP_STRING([--enable-docs],
+ [build and install documentation (default is NO)]),
+ [BUILDDOCS=$enableval],
+ [BUILDDOCS=no])
+AS_IF([test "$BUILDDOCS" = "yes"], [AC_PROG_PDFLATEX])
+AM_CONDITIONAL([BUILDDOCS], [test "x$BUILDDOCS" = xyes])
+
+# Checks for programs:
+# make and install are needed in all Makefiles.
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+# CLISP for src/
+AC_ARG_VAR([CLISP], [Common Lisp interpreter and compiler command])
+AC_PATH_PROGS([CLISP], [clisp], [no])
+AC_ARG_VAR([PERL], [Perl interpreter command])
+AC_PATH_PROGS([PERL], [perl perl5], [no])
+# flex for tex2xindy
+# FIXME: lex actually must really be flex. But there is no AC_PROG_FLEX!?
+AC_PROG_LEX
+AC_PROG_CC
+AC_PROG_LN_S
+
+# Check system type. This is needed to detect mingw32 environment,
+# then CLISP .mem files must not be compressed.
+AC_CANONICAL_HOST
+
+# Check that CLISP was found.
+if test "x$CLISP" = xno; then
+ AC_MSG_ERROR([CLISP is needed to build and run xindy])
+fi
+
+# Check that PERL was found.
+if test "x$PERL" = xno; then
+ AC_MSG_ERROR([PERL is needed to build and run xindy])
+fi
+
+# No checks for header files. We use stdio.h, unistd.h, and string.h.
+# Today, they are universally available if a C compiler is installed.
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+# The code in tex2indy.l simply assumes that strtoul() is there, would
+# need a replacement.
+AC_CHECK_FUNCS([strtoul],[],AC_MSG_ERROR([strtoul() is needed]))
+
+AC_CONFIG_FILES([Makefile \
+ src/Makefile \
+ tex2xindy/Makefile \
+ modules/Makefile \
+ user-commands/Makefile \
+ make-rules/Makefile \
+ make-rules/alphabets/Makefile \
+ make-rules/inputenc/Makefile \
+ doc/Makefile \
+])
+
+AC_OUTPUT
diff --git a/Build/source/utils/xindy/xindy-src/doc/Makefile.am b/Build/source/utils/xindy/xindy-src/doc/Makefile.am
new file mode 100644
index 00000000000..12f7cd12cd5
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/Makefile.am
@@ -0,0 +1,58 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_doc_DATA = \
+ dataflow.gif \
+ faq-1.html \
+ faq-2.html \
+ faq-3.html \
+ faq-4.html \
+ faq.html \
+ index.gif \
+ makeindex4.pdf \
+ manual-1.html \
+ manual-2.html \
+ manual-3.html \
+ manual-4.html \
+ manual-5.html \
+ manual-6.html \
+ manual-7.html \
+ manual.html \
+ mappings.gif \
+ next.gif \
+ prev.gif \
+ README \
+ style-tutorial-1.html \
+ style-tutorial-2.html \
+ style-tutorial-3.html \
+ style-tutorial-4.html \
+ style-tutorial.html \
+ tex2xindy.pdf \
+ texindy.pdf \
+ toc.gif \
+ xindy.pdf
+
+EXTRA_DIST = $(nobase_doc_DATA)
+
+## Include all Makefile.am fragments.
+##
+include style-tutorial/Makefile.am
diff --git a/Build/source/utils/xindy/xindy-src/doc/Makefile.in b/Build/source/utils/xindy/xindy-src/doc/Makefile.in
new file mode 100644
index 00000000000..96c0eba42e7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/Makefile.in
@@ -0,0 +1,495 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(docdir)"
+DATA = $(nobase_doc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+ $(srcdir)/style-tutorial/Makefile.am README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+nobase_doc_DATA = dataflow.gif faq-1.html faq-2.html faq-3.html \
+ faq-4.html faq.html index.gif makeindex4.pdf manual-1.html \
+ manual-2.html manual-3.html manual-4.html manual-5.html \
+ manual-6.html manual-7.html manual.html mappings.gif next.gif \
+ prev.gif README style-tutorial-1.html style-tutorial-2.html \
+ style-tutorial-3.html style-tutorial-4.html \
+ style-tutorial.html tex2xindy.pdf texindy.pdf toc.gif \
+ xindy.pdf style-tutorial/ex1.raw style-tutorial/ex1.tex \
+ style-tutorial/ex2.raw style-tutorial/ex2.tex \
+ style-tutorial/index.tex style-tutorial/style1.xdy \
+ style-tutorial/style2.xdy
+EXTRA_DIST = $(nobase_doc_DATA)
+tutorialdir = $(docdir)/style-tutorial
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/style-tutorial/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/doc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/style-tutorial/Makefile.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-nobase_docDATA: $(nobase_doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(docdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(docdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_doc_DATA)'; test -n "$(docdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nobase_docDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-nobase_docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-nobase_docDATA install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-nobase_docDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/doc/README b/Build/source/utils/xindy/xindy-src/doc/README
new file mode 100644
index 00000000000..90440f93683
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/README
@@ -0,0 +1,14 @@
+$Id: README.distrib,v 1.3 2008/01/09 11:11:46 jschrod Exp $
+------------------------------------------------------------
+
+This directory contains documentation of `xindy'.
+
+Manual pages for the commands are created during installation and are
+placed in appropriate man directories.
+PDF versions of the manual pages have been added here for your convenience.
+
+The subdirectory ./style-tutorial/ contains the examples that are used
+in the xindy style tutorial.
+
+FAQ and style tutorial are out of date. (Updates are welcome, of course.)
+You find more documentation at the xindy Web Site, at http://www.xindy.org/.
diff --git a/Build/source/utils/xindy/xindy-src/doc/dataflow.gif b/Build/source/utils/xindy/xindy-src/doc/dataflow.gif
new file mode 100644
index 00000000000..203b5521ba6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/dataflow.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/faq-1.html b/Build/source/utils/xindy/xindy-src/doc/faq-1.html
new file mode 100644
index 00000000000..31fcfba7abd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/faq-1.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY FAQ: General Questions</TITLE>
+ <LINK HREF="faq-2.html" REL=next>
+
+ <LINK HREF="faq.html#toc1" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="faq-2.html">Next</A>
+Previous
+<A HREF="faq.html#toc1">Contents</A>
+<HR>
+<H2><A NAME="s1">1. General Questions</A></H2>
+
+<H2><A NAME="ss1.1">1.1 Why a completely new indexing tool? <CODE>makeindex</CODE> works fine!</A>
+</H2>
+
+<P>
+<P>With the <EM>International MakeIndex</EM> project, Joachim Schrod and
+Gabor Herr have shown that adding extensions to
+<CODE>makeindex</CODE> is a difficult job. Thus we have decided to develop a
+new indexing tool from scratch. The new tool is based on a new
+requirements analysis and offers very interesting features for
+processing very complex indexing schemes. The resulting index model is
+described in:
+<P>
+<OL>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Proceedings of the EuroTeX'98, St. Malo, France, March 1998
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Technical Report No. 11/1997, Computer Science Department, Darmstadt
+University of Technology, 1997. Also accessible from the xindy
+homepage.
+</LI>
+<LI> Roger Kehr, xindy <EM>Ein Flexibles Indexierungssystem</EM>,
+Studienarbeit FB Informatik, TH-Darmstadt, November 1995.
+</LI>
+<LI> Joachim Schrod, <EM>An International Version of MakeIndex</EM>,
+Cahiers GUTenberg, 10, p81-90, 1991
+</LI>
+<LI> Joachim Schrod and Gabor Herr, <EM>MakeIndex Version 3.0</EM>,
+Technical University of Darmstadt, 1991
+</LI>
+</OL>
+<P>
+<P>
+<P>
+<H2><A NAME="ss1.2">1.2 I'm an old <CODE>makeindex</CODE> wizard. What does <SF>xindy</SF> offer that <CODE>makeindex</CODE> doesn't?</A>
+</H2>
+
+<P>
+<P>Here are the most important differences between <SF>xindy</SF> and
+<CODE>makeindex</CODE>:
+<P>
+<P>
+<DL>
+<P>
+<DT><B>Internationalization</B><DD><P><SF>xindy</SF> can be configured to process
+indexes for many languages with different letter sets and different
+sorting rules. For example, many roman languages such as Italian,
+French, Portuguese or Spanish contain accentuated letters such as
+&Agrave;, &Aacute;, &ntilde;. Other languages from northern Europe
+have letters like &Auml;, &Oslash;, &aelig; or &szlig; which often
+can't be processed by many index processors not talking about sorting
+them correctly into an index. The <SF>xindy</SF>-system can be configured
+to process these alphabets by defining <EM>sort</EM> and
+<EM>merge-rules</EM> that allow expressing of language specific rules.
+One example of such a rule would be
+<P>
+<PRE>
+(sort-rule &quot;ä&quot; &quot;ae&quot;)
+</PRE>
+<P>defining that a word containing the umlaut-a will be sorted as if it
+contained the letters <CODE>ae</CODE> instead. This is one form of how the
+umlaut-a is sorted into german indexes. With an appropriate set of
+rules one can express the complete rules of a specific language.
+<P>
+<DT><B>Location classes.</B><DD><P><CODE>makeindex</CODE> is able to recognize and
+process arabic numbers, roman numerals and letter-based alphabets as
+specifiers for the indexed location. Simple composite structures of
+these are also possible to process. This implicit recognition scheme
+has completely been dropped in favour of a well-defined and very
+powerful declaration scheme called <EM>location-classes</EM>. Thus,
+<SF>xindy</SF> initally does not know any location-class by default and
+must be instructed to accept certain location-classes. A typical
+declaration might look like:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class "page-numbers" ("arabic-numbers"))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This declares that page numbers consist of the enumeration of the
+arabic numbers. The arabic numbers are referred to as <EM>alphabets</EM>.
+Users may use the pre-defined alphabets arabic numbers, roman
+numerals, etc. or define new alphabets as needed. See the tutorial
+that comes with this distribution for some examples.
+<P>
+<DT><B>The concept of attributes.</B><DD><P>With <CODE>makeindex</CODE> one can assign a
+markup to each index entry using the encapsulators (usually following
+the vertical bar sign in an index entry command). For example in the
+specification
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\index{xindy|bold}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>the encapsulator is <CODE>bold</CODE> which encapsulates the page-numbers in
+the markup-phase. An additional TeX-macro must be supplied to assign
+some markup with the page number. This concept has completely been
+dropped in <SF>xindy</SF> in favour of a more powerful scheme called
+<EM>attributes</EM>. Attributes can be used to (i) define several grouping
+and ordering rules with locations and we can define (ii) markup-tags
+for the document preparation system.
+<P>The result of this design decision is that the user is required to
+define the attributes in the style file and not in the document
+preparation system. The reasons lie in the more powerful markup scheme
+of <SF>xindy</SF> which can't be specified in the document processor anymore.
+In fact, the <CODE>makeindex</CODE>-like markup is only a small subset of
+<SF>xindy</SF>s features.
+<P>
+<DT><B>Cross references.</B><DD><P>Cross-references were implemented in
+<CODE>makeindex</CODE> with the encapsulation mechanism, which only served for
+markup purposes. This has been completely separated in <SF>xindy</SF>.
+Here we distinguish cleanly between attributes and cross references.
+This makes it possible to implement <EM>checked</EM> cross references,
+i.e. cross-refernces that can be checked if they point to an existing
+index entry instead of somewhere ``behind-the-moon''.
+<P>
+<DT><B>Less command-line options.</B><DD><P><SF>xindy</SF> has dropped the usage of
+command-line options in favour of a well-defined indexstyle
+description language. Thus, options that could be activated at the
+command-line level of <CODE>makeindex</CODE> must now be specified in the
+indexstyle file. This sounds more restrictive than it is, because the
+indexstyle files can be composed from several modules which makes it
+possible to write style files in just a few lines of code.
+<P>
+<DT><B>Raw index parser.</B><DD><P>The parser built into <CODE>makeindex</CODE> has
+completely been separated from the core <SF>xindy</SF> system. <SF>xindy</SF>
+understands a well-defined specification language for the raw index
+that is completely different from <CODE>makeindex</CODE>, but in our opinion
+more maintainable than the <CODE>makeindex</CODE> format. This requires a
+separate filter that transforms arbitrary indexes to the <SF>xindy</SF>
+format. An example filter is the program <CODE>tex2xindy</CODE> that comes
+with this distribution.
+<P>
+</DL>
+<P>Summed up, some of the implicit assumptions made by <CODE>makeindex</CODE>
+have been replaced and now burdend to the user. The reason is that
+many of <CODE>makeindex</CODE>'s assumptions were no longer valid in
+multi-language environments or documents with arbitrary location
+structures. This also characterizes <SF>xindy</SF> more as a framework
+instead of a end-user-tailored product. One should notice that writing
+an appropriate index style is an essential part of the document
+preparation process and should be tailored to each document anew.
+<P>
+<P>
+<P>
+<P>
+<HR>
+<A HREF="faq-2.html">Next</A>
+Previous
+<A HREF="faq.html#toc1">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/faq-2.html b/Build/source/utils/xindy/xindy-src/doc/faq-2.html
new file mode 100644
index 00000000000..00be36138dc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/faq-2.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY FAQ: xindy Usage</TITLE>
+ <LINK HREF="faq-3.html" REL=next>
+ <LINK HREF="faq-1.html" REL=previous>
+ <LINK HREF="faq.html#toc2" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="faq-3.html">Next</A>
+<A HREF="faq-1.html">Previous</A>
+<A HREF="faq.html#toc2">Contents</A>
+<HR>
+<H2><A NAME="s2">2. <SF>xindy</SF> Usage</A></H2>
+
+<H2><A NAME="ss2.1">2.1 I don't want to write style files. How can I proceed?</A>
+</H2>
+
+<P>
+<P>You can use the wrapper program <CODE>makeindex4</CODE>. It tries to do it's
+very best to make <SF>xindy</SF> behave as <CODE>makeindex</CODE> does. But if you
+ever need to use some of the features of <SF>xindy</SF> you should learn
+how to write an index style. Its easy!
+<P>
+<P>
+<P>
+<H2><A NAME="ss2.2">2.2 How do I use <CODE>makeindex4</CODE>?</A>
+</H2>
+
+<P>
+<P>Process your document as usual. Then run <CODE>makeindex4</CODE> on the index
+file. It produces an index that should equal the one you would get
+with an ordinary <CODE>makeindex</CODE> run. As far as you are satisfied with
+the default behaviour of <CODE>makeindex</CODE>, <CODE>makeindex4</CODE> will produce
+comparable results.
+<P>Some of the command-line options of <CODE>makeindex</CODE> are accepted by
+<CODE>makeindex4</CODE>, others aren't. This may change in future releases,
+but we recommend using plain <SF>xindy</SF> after a phase of
+investigation, since one cannot use all of its features with
+<CODE>makeindex4</CODE>. You will be informed about unsupported command-line
+arguments when running <CODE>makeindex4</CODE>.
+<P>If you have written special style files for <CODE>makeindex</CODE> they will
+no longer work with <CODE>makeindex4</CODE>. Go ahead and write a new style
+file for <SF>xindy</SF>.
+<P>
+<P>
+<P>
+<H2><A NAME="ss2.3">2.3 How works <CODE>makeindex4</CODE>?</A>
+</H2>
+
+<P>
+<P>This job is now done automatically by <CODE>makeindex4</CODE>. It calls
+<CODE>tex2xindy</CODE> to transform the raw-index into the format suitable for
+<SF>xindy</SF>. <CODE>tex2xindy</CODE> emits some information about the attributes
+(aka. encapsulators in <CODE>makeindex</CODE>) and the usage of
+cross-references into a file, which has the extension `<CODE>.sta</CODE>'. The
+<CODE>makeindex4</CODE> program, written in <CODE>perl</CODE>, parses this
+statistics-file and generates the above presented indexstyle commands
+for you automatically including the required declaration of all
+attributes in the whole index and their markup.
+<P>Another problem is the automatic detection of cross-references. As
+noted above, <CODE>makeindex</CODE> handles cross-references with its
+encapsulation mechanism, a scheme which has been dropped in <SF>xindy</SF>
+and replaced by a more powerful mechanism. To implement a simple
+plug-in mechanism we have extended the syntax of the <CODE>tex2xindy</CODE>
+filter to identify encapsulators of the form
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\indexentry{...|encap{...}}{...}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>as a cross-reference, whereas encapsulators of the form
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\indexentry{...|encap}{...}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>are treated as ordinary attributes. This is standard practice
+defining cross-references in <CODE>makeindex</CODE>. Thus, <CODE>tex2xindy</CODE>
+distinguishes these two forms of encapsulators as opposed to
+<CODE>makeindex</CODE> and our plug-in <CODE>makeindex4</CODE> generates the
+appropriate definitions of the cross-reference classes as well.
+<P>
+<P>
+<P>
+<P>
+<HR>
+<A HREF="faq-3.html">Next</A>
+<A HREF="faq-1.html">Previous</A>
+<A HREF="faq.html#toc2">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/faq-3.html b/Build/source/utils/xindy/xindy-src/doc/faq-3.html
new file mode 100644
index 00000000000..12895e8cb29
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/faq-3.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY FAQ: xindy and LaTeX</TITLE>
+ <LINK HREF="faq-4.html" REL=next>
+ <LINK HREF="faq-2.html" REL=previous>
+ <LINK HREF="faq.html#toc3" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="faq-4.html">Next</A>
+<A HREF="faq-2.html">Previous</A>
+<A HREF="faq.html#toc3">Contents</A>
+<HR>
+<H2><A NAME="s3">3. <SF>xindy</SF> and LaTeX</A></H2>
+
+<H2><A NAME="ss3.1">3.1 What is <CODE>tex2xindy</CODE>?</A>
+</H2>
+
+<P>
+<P><CODE>tex2xindy</CODE> is a filter that parses `<CODE>.idx</CODE>' or similar files
+and converts the <CODE>\indexentry</CODE> macros into a form readable by
+<SF>xindy</SF>.
+<P>The parser of <CODE>makeindex</CODE> can be configured to recognize different
+quoting characters, etc. (see the man-page for <CODE>makeindex</CODE>, section
+<EM>input style specifiers</EM> for further details). We have tried to
+extract the parser from <CODE>makeindex</CODE> but due to several probems we
+have finally rewritten the parser using <CODE>lex</CODE>. Scanners written
+with <CODE>lex</CODE> are usually fixed to a specific character set used in
+the regular expressions. Our parser, <CODE>tex2xindy</CODE> is therefore not
+configurable. If one uses a different configuration of the
+<CODE>makeindex</CODE> input style specifiers, one can change the source
+(<CODE>tex2xindy.l</CODE>) to generate a completely new parser. From our
+personal experience we have rarely used more than two different
+parsers in practice so we have written <CODE>tex2xindy</CODE> in a form that
+is easily maintainable. The input specifiers are stored symbolically
+in the source. The definiton section looks like this:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+KEYWORD \\indexentry
+ENCAP \|
+ACTUAL @
+ESCAPE \\
+LEVEL !
+QUOTE \"
+ROPEN \(
+RCLOSE \)
+ARGOPEN \{
+ARGCLOSE \}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>These definitions are essentially the input style specifiers as can be
+found in the man-page of <CODE>makeindex</CODE>. Changing this section
+according to your needs and recompiling <CODE>tex2xindy</CODE> should be an
+easy task. Maybe we will include more pre-defined parsers in future
+releases if necessary.
+<P>
+<P>
+<P>
+<H2><A NAME="ss3.2">3.2 What LaTeX-package should I use in conjunction with xindy?</A>
+</H2>
+
+<P>
+<P>We strongly recommend using the LaTeX2e-package <CODE>index</CODE> written
+by David M. Jones, which is available at CTAN. It supports multiple
+indexes as well as several shortcuts to easily index terms in a
+document. Multiple indexes support the generation of several indexes
+for one document. For instance, one can make an author or command
+index in addition to a global index.
+<P>Another option is to use the <CODE>xindy.sty</CODE> from Andreas Schlechte
+that comes with the <SF>xindy</SF> distribution. Take a look at the
+<CODE>contrib</CODE> directory that should contain a version.
+<P>
+<P>
+<P>
+<P>
+<HR>
+<A HREF="faq-4.html">Next</A>
+<A HREF="faq-2.html">Previous</A>
+<A HREF="faq.html#toc3">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/faq-4.html b/Build/source/utils/xindy/xindy-src/doc/faq-4.html
new file mode 100644
index 00000000000..3a57b7ac8ad
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/faq-4.html
@@ -0,0 +1,669 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY FAQ: Style Files</TITLE>
+ <LINK HREF="faq-3.html" REL=previous>
+ <LINK HREF="faq.html#toc4" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="faq-3.html">Previous</A>
+<A HREF="faq.html#toc4">Contents</A>
+<HR>
+<H2><A NAME="s4">4. Style Files</A></H2>
+
+<H2><A NAME="ss4.1">4.1 Eventually, I decided to write my first index style. How can I start?</A>
+</H2>
+
+<P>
+<P>Congratulations! You have made a good decision, indeed.
+<P>For a first impression, how a style file can be written from scratch
+reference the <EM>tutorial</EM> that comes with this distribution. It is
+written as a guided step-by-step practicing exercise and you can learn
+the basic concepts quite easily.
+<P>Afterwards, the best starting point is to make a copy of the template
+file that contains all the necessary commands that are needed to make
+a <CODE>makeindex</CODE>-like index. You can find it in the subdirectory
+<CODE>markup/tex</CODE> of the module library. Starting from this template
+you can remove or add commands as necessary.
+<P>Additionally, consult the library of predefined <EM>index style
+modules</EM> that comes with this distribution. Solutions for most of the
+typical problems can be found there, such as a module for doing
+case-insensitive sorting rules, or a typical TeX-like markup. Most
+of the time is is enough to include some of these modules and add a
+few additional commands.
+<P>Maybe some of the examples coming with the <EM>test-suite</EM> are good
+examples of how unusual index style files can be written.
+<P>Thus, there are many ways to learn writing an index style file. But it
+is very easy and after some experience you can process indexes your
+friends will be jealous of.
+<P>
+<P>
+<H2><A NAME="ss4.2">4.2 How to write my first index style?</A>
+</H2>
+
+<P>
+<P>Copy the file <CODE>tex/makeidx.xdy</CODE> from the library to your
+local directory. It is documented in in a way that should make it easy
+to fill in new commands or remove or modify others.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.3">4.3 How works the actual key feature of <CODE>makeindex</CODE> with <SF>xindy</SF>?</A>
+</H2>
+
+<P>
+<P>The treatment of the actual key (usually denoted with <CODE>@</CODE>, the
+at-sign) has changed with <SF>xindy</SF>. Specifying index entries with a
+specific markup can be done in <CODE>makeindex</CODE> with the actual key. The
+<CODE>makeindex-3</CODE> system and <SF>xindy</SF> offer the <EM>merge-</EM> and
+<EM>sort-rules</EM> to transform a key into different representations,
+limiting the need to specify an actual key. For example they support a
+style of writing
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\index{\bf{VIP}}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>which can be transformed with a rule like
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "\bf{\(.*\)}" "\1" :again :bregexp)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>which removes the macro definition for merging and sorting keywords,
+but keeping the original definition for markup purposes. Therefore we
+don't need any actual keys for all keywords written in boldface.
+<P>The <CODE>makeindex</CODE> behaviour, that the two keywords
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\index{VIP}
+\index{VIP@\bf{VIP}}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>are seen as two distinct index entries, can be simulated using the
+following definition:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "\bf{\(.*\)}" "\1~e" :again :bregexp)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This rule tells <SF>xindy</SF> to remove the boldface macro for merging
+and sorting purposes but defines the replacement to include the
+special character <CODE>~e</CODE>, which is the last character in the
+alphabet (ISO-Latin in our case). This makes <SF>xindy</SF> treat them as
+different keywords and positions the boldface keyword right behind the
+one without any markup. Thus we receive the following mapping:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+Keyword: Merged and sorted as: Appears in the index as:
+VIP VIP VIP
+\bf{VIP} VIP~e \bf{VIP}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>With this new style of writing keywords and defining their markup, the
+need to explicitly specifying the print key (aka. actual key) has
+convinced us to remove the <CODE>makeindex</CODE> way of defining keywords.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.4">4.4 I want to process an index for my native language. What must I do?</A>
+</H2>
+
+<P>
+<P>What makes <CODE>makeindex</CODE> hardly usable in non-English speaking
+countries is its lack of support of language specific alphabets and
+sort orderings. For example, many roman languages such as Italian,
+French, Portuguese or Spanish contain accented letters such as
+&Agrave;, &Aacute;, &ntilde;. Other languages from northern Europe
+have letters like &Auml;, &Oslash;, &aelig; or &szlig; which often
+can't even be processed by many index processors let alone sorting
+them correctly into an index.
+<P>Two problems must be solved when processing indexes with a new
+languages:
+<P>
+<OL>
+<LI> The <EM>sort ordering</EM> of the indexed terms must be specified
+in an appropriate manner. This problem can be solved using the
+so-called <EM>keyword mappings</EM>.
+</LI>
+<LI> The <EM>letter groups</EM> that partition the indexed terms into
+separate sections must be specified.</LI>
+</OL>
+<P>The <SF>xindy</SF> system can be configured to process these alphabets by
+defining <EM>sort</EM> and <EM>merge rules</EM> that allow expressing language
+specific rules.
+<P>The keyword mappings are as follows: The <EM>merge key</EM> is generated
+from the <EM>main key</EM> with the so called <EM>merge mapping</EM>. The
+merge mapping can be specified with the command <CODE>merge-rule</CODE>. The
+<EM>sort key</EM> is derived from the merge key using the <EM>sort
+mapping</EM> specified with the <CODE>sort-rule</CODE> command. The following
+scheme shows this mapping process:
+<P>
+<FIGURE>
+<EPS FILE="mappings.eps">
+<IMG SRC="mappings.gif">
+</FIGURE>
+<P>
+<P>The index style commands accomplishing this task are
+<CODE>sort-rule</CODE> and <CODE>merge-rule</CODE>. One example of such a rule would
+be
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule "ä" "ae")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>defining that a word containing the umlaut-a will be sorted as if it
+contained the letters <CODE>ae</CODE> instead. This is one form of how the
+umlaut-a (ä) is sorted into german indexes. With an appropriate set of
+rules on can express the complete rules of a specific language.
+<P>An example of how an appropriate mapping for some of the Roman
+languages could look like is:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule "à" "a")
+(sort-rule "á" "a")
+(sort-rule "ã" "a")
+(sort-rule "è" "e")
+(sort-rule "é" "e")
+(sort-rule "ç" "c")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This makes the accented letters be sorted as their unaccented
+counterparts, yielding the desired sort ordering.
+<P>Sometimes it is necessary to specify keyword mappings that tell the
+system to put something <EM>behind</EM> something else. For instance, we'd
+like to map the character <EM>ö</EM> behind the letter <EM>o</EM>. No problem
+if you use the special characters <CODE>~b</CODE> and <CODE>~e</CODE> which
+are called the <EM>beginning</EM> and <EM>ending</EM> characters. The first
+letter lexicographically precedes all other letters whereas the latter
+one comes after all others. Our mapping problem can now be specified
+as follows.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule "ö" "o~e")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Now the <EM>ö</EM> is directly positioned after the <EM>o</EM> but before
+<EM>p</EM>.
+<P>
+<P>See the manual for a detailed description of this feature.
+Also be informed that the keyword mappings can be specified with
+regular expressions. Rules of the form
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "[-$()]" "")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>are possible. This on removes all letters of the defined letter class.
+Regular expression substitutions are possible as well. Refer to the
+manual for an exact description.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.5">4.5 In my index the capitalized words appear after the lowercase words. Why?</A>
+</H2>
+
+<P>
+<P>The default sort ordering sorts letters according to their ordinal
+number in the ISO Latin alphabet. As a consequence the lowercase
+letters appear before the uppercase letters. To sort them
+case-insensitively use the command
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(require "lang/latin/caseisrt.xdy")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This module defines the appropriate sort rules for the letters `A-Z'
+for latin-based alphabets. If your language has more letters simply
+add the missing ones into your style file. Have a look at the module
+to see how to the sort rules are defined.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.6">4.6 In my index there are no letter groups, yet!</A>
+</H2>
+
+<P>
+<P>Letter groups for latin based alphabets can be defined with the command
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(require "lang/latin/letgroup.xdy")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>If your language needs additional letter groups you can insert them
+into the previously defined letter group with inserting definitions of
+the following form:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-letter-group "ly" :after "l" :before "m")
+(define-letter-group "ny" :after "n" :before "o")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This adds two more letter groups to the latin alphabet. Group <EM>ly</EM>
+is inserted between <EM>l</EM> and <EM>m</EM>, and <EM>ny</EM> is inserted between
+<EM>n</EM> and <EM>o</EM>. This is how two additional letters of the Hungarian
+alphabet can be inserted.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.7">4.7 How can I get rid of any formatting information in the keyword?</A>
+</H2>
+
+<P>
+<P>Assume you have index entries containing arbitrary formatting
+information. For example you write your index entries in TeX in the
+following form:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\index{\bf{In boldface please}}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>To avoid specifying for each index entry the print key separately as
+can be done with the following command
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\index{In boldface please@\bf{In boldface please}}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>you can instead define a rule doing this task for you:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "\\bf *{(.*)}" "\1" :eregexp :again)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This extended regular expression matches all strings that are
+surrounded by this formatting command and in the <EM>merge phase</EM> the
+formatting command is simply stripped off. Thus, you don't need to
+write an explicit print key anymore.
+<P>If for some reason the same word appears more than once in the index,
+each time having another markup tag as in the following example
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+index
+{\tt index}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>you must be warned that a rule like
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "{\\tt *(.*)}" "\1" :eregexp :again)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>is probably not correct. In this case the above strings are both
+mapped into the string <CODE>index</CODE> thus joining their location
+references into one index entry. This happens because the result of
+the merge mapping is used as the equality citerium which views both
+keywords as equal. To avoid this you should specify instead
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule "{\\tt *(.*)}" "\1~e" :eregexp :again)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>With the additional meta character <CODE>~e</CODE> the substitution of the
+second key word is placed <EM>after</EM> the first one making them
+different index entries. If the second keyword should appear first,
+use <CODE>~b</CODE> instead.
+<P>
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.8">4.8 In my index the word <EM>-foo</EM> appears before <EM>bar</EM>. What must I do?</A>
+</H2>
+
+<P>
+<P>Especially for hierarchical indexes sometimes the result is not as
+expected due to special characters appearing in the keyword. In the
+following example the word `card' should appear before `-eyed' since
+the hyphen should not count as an ordinary character by means of
+sorting.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ green
+ -eyed 12
+ card 15
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This is especially problematic if the list of words on the second
+level is very long. To make the hyphen be simply ignored during the
+sorting process you should specify the following command in the index
+style:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ (sort-rule "-" "")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This makes `-eyed' be sorted as `eyed' thus making it appear
+<EM>after</EM> `card' as desired.
+<P>
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.9">4.9 I want to use letter ordering instead of word ordering in my index.</A>
+</H2>
+
+<P>
+<P>According to the <EM>Chicago Manual of Style</EM> there exist two
+different schemes of sorting word lists. In <EM>word ordering</EM>
+a blank precedes any letter in the alphabet, whereas in <EM>letter
+ordering</EM> it does not count at all. The following example borrowed
+from the <CODE>makeindex</CODE> man-page illustrates the difference:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ Word Order: Letter Order:
+ sea lion seal
+ seal sea lion
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>By default, <SF>xindy</SF> uses word ordering. To use letter ordering
+include the appropriate module with the following command:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(require "ord/letorder.xdy")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>It actually defines the following command:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule " " "")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This simply removes all blanks from the keyword resulting in the
+desired behaviour.
+<P>
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.10">4.10 My document does not have page numbers, but a different scheme. What must I do?</A>
+</H2>
+
+<P>
+<P>The ability to deal with user-definable location structures is one of
+the most important new features of <SF>xindy</SF>. Many documents have a
+document structure that is not based on page numbers. Typical examples
+are manuals or appendices that come with a
+<EM>chapter/page-per-chapter</EM> numbering scheme, URLs, Bible verses,
+etc. One can even imagine the Greek alphabet as possibly appearing in
+a location reference. In our analysis we have found many interesting
+examples of location references that made us to develop the concept of
+<EM>location classes</EM>.
+<P>A location class is defined by a sequence of alphabets. An alphabet
+can be the set of arabic numbers (0, 1, 2, ...) or the roman numerals
+(i, ii, iii, ...). These are built-in alphabets in <SF>xindy</SF>.
+Addtionally, one can define more alphabets in the index style with a
+command like
+<P>
+<PRE>
+ (define-alphabet "weekdays"
+ ("mon" "tue" "wed" "thu" "fri" "sat" "sun"))
+</PRE>
+<P>Based on alphabets one can now compose a location class as follows:
+<P>
+<PRE>
+ (define-location-class "weekday-hours"
+ ("weekday" :sep ":" "arabic-numbers"))
+</PRE>
+<P>This class description indicates that all location refernces matching
+this template are viewed as correct instances of this class. Here
+<CODE>:sep</CODE> makes the dot serving as a <EM>separation string</EM> separation
+the alphabets from each other. Example instances of this class are:
+<P>
+<PRE>
+mon:23, thu:45, sun:17
+</PRE>
+<P>For more detailed information consult the description of the command
+<CODE>define-location-class</CODE> in the reference manual.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.11">4.11 I don't want to have ranges in my index. What can I do?</A>
+</H2>
+
+<P>
+<P>By default, <SF>xindy</SF> joins three successive location references into a
+<EM>range</EM>. Ranges are used as an abbrevation for a long sequence of
+location references. For exmaple the sequence
+<P>
+<PRE>
+12, 13, 14, 15, 16
+</PRE>
+<P>would be shorter represented as
+<P>
+<PRE>
+12-16
+</PRE>
+<P>If you don't want to have ranges, simply define your location class in
+the form
+<P>
+<PRE>
+ (define-location-class ... :min-range-length 100000)
+</PRE>
+<P>Arbitrary numbers define the minimum length of a sequence of location references that are needed to form a range.
+The use of a sufficiently large number (such as <CODE>:min-range-length 100000</CODE>) avoids forming of ranges
+(unless your document has more than 100.000 pages and an index entry spans all of them; in this unlikely case, just increase
+the number sufficiently).
+<SF>xindy</SF>s default value is&nbsp;2.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.12">4.12 I want to markup ranges of different length differently. How do I accomplish this?</A>
+</H2>
+
+<P>
+<P>A common way of tagging ranges is as follows: a range of length 1 is
+printed with the starting page number and the suffix `f.', those of
+length 2 with suffix `ff.', and all others in the form `<EM>X--Y</EM>'.
+<P>Assume we want to do this for the location class <EM>pagenums</EM> we can
+specify the markup as follows:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-range :class "pagenums" :close "f." :length 1 :ignore-end)
+(markup-range :class "pagenums" :close "ff." :length 2 :ignore-end)
+(markup-range :class "pagenums" :sep "--")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The first command indicates that a range <EM>(X,Y)</EM> of length 1 should
+be printed in the form <EM>Xf.</EM>, a range of length 2 as <EM>Xff.</EM> and
+all others in the form <EM>X--Y</EM>. The switch <CODE>:ignore-end</CODE> causes
+the end of range location reference Y to be suppressed in the
+resulting output.
+<P>
+<P>
+<H2><A NAME="ss4.13">4.13 I need to suppress some of the markup tags. How can I do this?</A>
+</H2>
+
+<P>Sometimes it is necessary to hide some of the parts of the index. If
+you have a text formatter that allows comments or macros that possibly
+expand to nothing, just define appropriate markup that makes things
+invisible to the formatter. For example, with TeX you can define a
+macro like this
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\def\ignore#1{}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>If you additionally define markup like this
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-index :open "\ignore{" :close "}")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>you can throw away the complete index if you like, which would be a
+real pity!
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.14">4.14 Whats it all about those cross references?</A>
+</H2>
+
+<P>
+<P>Cross references are references pointing to an item in the index
+itself. Typical examples are:
+<P>
+<BLOCKQUOTE><CODE>
+foo-bar <EM>see</EM> baz
+</CODE></BLOCKQUOTE>
+<P>With <CODE>makeindex</CODE> cross references could be specified with the
+encapsulation mechanism. This has completely been removed in <SF>xindy</SF>
+and we have made cross references real first-class objects.
+<P>In <SF>xindy</SF> one can declare different cross reference classes, whose
+purpose is (a) to make all instances of a certain class appear next to
+each other, and (b) to specify appropriate markup with them.
+<P>@begin-comment
+One very interesting feature is the ability to <EM>check</EM> the validity
+of cross-references.
+@end-comment
+<P><CODE>tex2xindy</CODE> recognises all index entries of the form
+<P>
+<PRE>
+ \index{...|\macro{where}}
+</PRE>
+<P>as cross references. Here <CODE>macro</CODE> stands for an arbitrary macro
+name and <CODE>where</CODE> is interpreted as the target keyword of the cross
+references.
+<P>If you want to use these cross references with <SF>xindy</SF>; add the
+following line to your style file.
+<P>
+<PRE>
+ (define-crossref-class "macro")
+</PRE>
+<P>Additionally, you can assign specific markup to cross references using
+the <CODE>markup-crossref</CODE>-commands.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.15">4.15 The keyword mappings don't work as expected!</A>
+</H2>
+
+<P>
+<P>Sometimes the keyword mappings don't work as expected. Especially in
+cases with several regular expressions one might get confused about
+what rule matches exactly when. We have incorporated a detailed
+logging mechanism that lets one step by step follow the rules that
+accomplish the keyword mapping.
+<P>When running <SF>xindy</SF> you can turn on this feature with the command
+line option `<CODE>-L</CODE>'. This option followed by one of the numbers 1,
+2, or 3 turns on the appropriate debugging level. Turning on level 2
+or 3 and specifying a log-file with the command line option `<CODE>-l</CODE>'
+a trace of the mappings is recorded in the log-file. A sample output
+looks like the following:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+Mappings: (add (merge-rule :eregexp `^\\bf{(.*)}' `\1' :again)).
+Mappings: (add (merge-rule :eregexp `^\\"([AEOUaeou])' `\1')).
+ ...
+Mappings: (compare `\"A\"a' :eregexp `^\\bf{(.*)}')
+Mappings: (compare `\"A\"a' :eregexp `^\\"([AEOUaeou])') match!
+Mappings: (compare `\"a' :eregexp `^\\bf{(.*)}')
+Mappings: (compare `\"a' :eregexp `^\\"([AEOUaeou])') match!
+Mappings: (merge-mapping `\"A\"a') -> `Aa'.
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This trace shows that initially two regular expression mappings have
+been added to the rule set. The second section shows how the keyword
+`<CODE>\"A\"a</CODE>' is compared to these rules and substitutions are
+applied as matches are found. In the last line the result of the
+keyword mapping is reported.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.16">4.16 I'm totally confused by the markup scheme!</A>
+</H2>
+
+<P>
+<P>A very important feature is the ability to <EM>trace</EM> all markup tags
+<SF>xindy</SF> emits in the markup phase. Simply use the command line
+switch <CODE>-t</CODE> or insert the command
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-trace :on)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>into the index style. This informs <SF>xindy</SF> to emit additional
+pseudo markup that can be used to understand and debug the
+markup phase. An example output might look like the following:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+&lt;INDEX:OPEN>
+ &lt;LETTER-GROUP-LIST:OPEN>
+ &lt;LETTER-GROUP:OPEN ["a"]>
+ &lt;INDEXENTRY-LIST:OPEN [0]>
+ &lt;INDEXENTRY:OPEN [0]>
+ &lt;KEYWORD-LIST:OPEN [0]>
+ &lt;KEYWORD:OPEN [0]>
+ ...
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The symbolic tags directly lead one to the command that is responsible
+for the definition of that markup tag. For example, the tag
+<CODE>LETTER-GROUP-LIST:OPEN</CODE> indicates that the command
+<CODE>markup-letter-group-list</CODE> is responsible for replacing this
+symbolic tag by a real one.
+Give it a try if you find yourself confused by your own markup
+specification.
+<P>
+<P>
+<P>
+<H2><A NAME="ss4.17">4.17 What editor should I use when writing xindy style files?</A>
+</H2>
+
+<P>
+<P>Use <CODE>Emacs</CODE> or <CODE>XEmacs</CODE>. Turn on the Lisp-mode with
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+M-x lisp-mode
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>and you can properly indent commands using <CODE>M-q</CODE>. To enter this
+mode automatically add the following lines to the end of the style
+file:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+^L
+;; Local Variables:
+;; mode: lisp
+;; End:
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The <CODE>^L</CODE> (Control-L) can be entered with <CODE>C-q C-l</CODE>.
+<P>
+<P>
+<P>
+<HR>
+Next
+<A HREF="faq-3.html">Previous</A>
+<A HREF="faq.html#toc4">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/faq.html b/Build/source/utils/xindy/xindy-src/doc/faq.html
new file mode 100644
index 00000000000..d049b766693
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/faq.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY FAQ</TITLE>
+ <LINK HREF="faq-1.html" REL=next>
+
+
+</HEAD>
+<BODY>
+<A HREF="faq-1.html">Next</A>
+Previous
+Contents
+<HR>
+<H1>XINDY FAQ</H1>
+
+<H2>Or: <SF>xindy</SF> by Topic</H2>
+<H2>Roger Kehr</H2>
+<H3>Computer Science Department, Technical University of Darmstadt</H3>
+ and
+<H2>Joachim Schrod</H2>
+<H3>Joachim Schrod Net &amp; Publication Consultance GmbH</H3>
+$Revision: 1.2 $, $Date: 2004/05/24 21:43:16 $, for xindy version 2.2
+<P><HR>
+<EM> The <SF>xindy</SF> FAQ presents answers to questions that are not
+adequately covered in other parts of the documentation, or are hard to
+find. The FAQ has been constructed from the <EM><SF>xindy</SF> by Topic</EM>
+manual. The most up-to-date version of this FAQ can be obtained from
+the <SF>xindy</SF> homepage at
+<A HREF="http://www.xindy.org/doc/faq.html">http://www.xindy.org/doc/faq.html</A>.
+<p>
+While the content of this document is still valid, it has not been
+updated in years and doesn't describe new developments. In particular,
+it doesn't mention the many languages that are supported by Thomas
+Henlich's <EM>make-rules</EM> system, and also doesn't know anything about
+the new commands that got introduced with the "LaTeX Companion
+Release". So, caveat. We don't want to throw out the document, though,
+since it still contains lots of useful information that's not
+available elsewhere.</EM>
+<HR>
+<P>
+<H2><A NAME="toc1">1.</A> <A HREF="faq-1.html">General Questions</A></H2>
+
+<UL>
+<LI><A HREF="faq-1.html#ss1.1">1.1 Why a completely new indexing tool? <CODE>makeindex</CODE> works fine!</A>
+<LI><A HREF="faq-1.html#ss1.2">1.2 I'm an old <CODE>makeindex</CODE> wizard. What does <SF>xindy</SF> offer that <CODE>makeindex</CODE> doesn't?</A>
+</UL>
+<P>
+<H2><A NAME="toc2">2.</A> <A HREF="faq-2.html"><SF>xindy</SF> Usage</A></H2>
+
+<UL>
+<LI><A HREF="faq-2.html#ss2.1">2.1 I don't want to write style files. How can I proceed?</A>
+<LI><A HREF="faq-2.html#ss2.2">2.2 How do I use <CODE>makeindex4</CODE>?</A>
+<LI><A HREF="faq-2.html#ss2.3">2.3 How works <CODE>makeindex4</CODE>?</A>
+</UL>
+<P>
+<H2><A NAME="toc3">3.</A> <A HREF="faq-3.html"><SF>xindy</SF> and LaTeX</A></H2>
+
+<UL>
+<LI><A HREF="faq-3.html#ss3.1">3.1 What is <CODE>tex2xindy</CODE>?</A>
+<LI><A HREF="faq-3.html#ss3.2">3.2 What LaTeX-package should I use in conjunction with xindy?</A>
+</UL>
+<P>
+<H2><A NAME="toc4">4.</A> <A HREF="faq-4.html">Style Files</A></H2>
+
+<UL>
+<LI><A HREF="faq-4.html#ss4.1">4.1 Eventually, I decided to write my first index style. How can I start?</A>
+<LI><A HREF="faq-4.html#ss4.2">4.2 How to write my first index style?</A>
+<LI><A HREF="faq-4.html#ss4.3">4.3 How works the actual key feature of <CODE>makeindex</CODE> with <SF>xindy</SF>?</A>
+<LI><A HREF="faq-4.html#ss4.4">4.4 I want to process an index for my native language. What must I do?</A>
+<LI><A HREF="faq-4.html#ss4.5">4.5 In my index the capitalized words appear after the lowercase words. Why?</A>
+<LI><A HREF="faq-4.html#ss4.6">4.6 In my index there are no letter groups, yet!</A>
+<LI><A HREF="faq-4.html#ss4.7">4.7 How can I get rid of any formatting information in the keyword?</A>
+<LI><A HREF="faq-4.html#ss4.8">4.8 In my index the word <EM>-foo</EM> appears before <EM>bar</EM>. What must I do?</A>
+<LI><A HREF="faq-4.html#ss4.9">4.9 I want to use letter ordering instead of word ordering in my index.</A>
+<LI><A HREF="faq-4.html#ss4.10">4.10 My document does not have page numbers, but a different scheme. What must I do?</A>
+<LI><A HREF="faq-4.html#ss4.11">4.11 I don't want to have ranges in my index. What can I do?</A>
+<LI><A HREF="faq-4.html#ss4.12">4.12 I want to markup ranges of different length differently. How do I accomplish this?</A>
+<LI><A HREF="faq-4.html#ss4.13">4.13 I need to suppress some of the markup tags. How can I do this?</A>
+<LI><A HREF="faq-4.html#ss4.14">4.14 Whats it all about those cross references?</A>
+<LI><A HREF="faq-4.html#ss4.15">4.15 The keyword mappings don't work as expected!</A>
+<LI><A HREF="faq-4.html#ss4.16">4.16 I'm totally confused by the markup scheme!</A>
+<LI><A HREF="faq-4.html#ss4.17">4.17 What editor should I use when writing xindy style files?</A>
+</UL>
+<HR>
+<A HREF="faq-1.html">Next</A>
+Previous
+Contents
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/index.gif b/Build/source/utils/xindy/xindy-src/doc/index.gif
new file mode 100644
index 00000000000..74f581c4b85
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/index.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/makeindex4.pdf b/Build/source/utils/xindy/xindy-src/doc/makeindex4.pdf
new file mode 100644
index 00000000000..ec03477a43d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/makeindex4.pdf
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-1.html b/Build/source/utils/xindy/xindy-src/doc/manual-1.html
new file mode 100644
index 00000000000..40fc1db4349
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-1.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: About this Manual</TITLE>
+ <LINK HREF="manual-2.html" REL=next>
+
+ <LINK HREF="manual.html#toc1" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="manual-2.html">Next</A>
+Previous
+<A HREF="manual.html#toc1">Contents</A>
+<HR>
+<H2><A NAME="s1">1. About this Manual</A></H2>
+
+<P>We assume that the reader is already familiar with the task of an
+index processor and has basic experience in using a markup-based
+document preparation systems such as TeX/LaTeX [1, 2],
+the roff-family, or SGML-based systems (e.g. its instance HTML).
+<P>This document is structured as follows. The second part gives an
+overview on the index model that is used by our system and we define
+general concepts and terms. The third part contains a list of all
+index style commands, their syntax, and a description of their
+purpose. The reader should at least have read the first part of the
+manual to understand the basic terminology to be able to use the
+command reference. The fourth
+part describes the different processing phases the system runs
+through.
+<P>Invocation of <SF>xindy</SF> is not explained here. Please refer to the
+manual pages of the commands <CODE>xindy</CODE>, <CODE>texindy</CODE>,
+<CODE>makeindex4</CODE>, and to the 2nd edition of the LaTeX Companion. The
+<SF>xindy</SF> Web Site has more documentation, too.
+<P>
+<P>
+<P>
+<HR>
+<A HREF="manual-2.html">Next</A>
+Previous
+<A HREF="manual.html#toc1">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-2.html b/Build/source/utils/xindy/xindy-src/doc/manual-2.html
new file mode 100644
index 00000000000..c3a7a87be77
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-2.html
@@ -0,0 +1,302 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: How the Index Processor Works</TITLE>
+ <LINK HREF="manual-3.html" REL=next>
+ <LINK HREF="manual-1.html" REL=previous>
+ <LINK HREF="manual.html#toc2" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="manual-3.html">Next</A>
+<A HREF="manual-1.html">Previous</A>
+<A HREF="manual.html#toc2">Contents</A>
+<HR>
+<H2><A NAME="how-works"></A> <A NAME="s2">2. How the Index Processor Works</A></H2>
+
+<P>
+<P>
+<H2><A NAME="ss2.1">2.1 Data Flow</A>
+</H2>
+
+<P>Usually document preparation systems produce some form data that
+describe the <EM>index entries</EM> and the <EM>locations</EM> they point to.
+This data is called the <EM>raw index</EM> since it consists of raw data
+which contains structured information about the entries of the index.
+The raw index is fed into the index processor and is processed
+according to a specification called the <EM>index style</EM>. This is a
+user-definable description how the index is to be processed, what
+sort rules for the keywords should be used, which kind of locations
+may appear, and finally, what tags should be emitted when writing the
+index into the output file. The result is sometimes fed back into the
+document preparation system, as it is in the case of TeX, or used
+otherwise. The following figure illustrates this embedding into the
+document preparation process.
+<P>
+<FIGURE>
+<EPS FILE="dataflow.eps">
+<IMG SRC="dataflow.gif">
+</FIGURE>
+<P>The <SF>xindy</SF> system is oriented on book-like indexes in a form that
+is described later in detail. The format of the input data is fixed
+and a small tool that converts some system dependent raw index in a
+form suitable for <SF>xindy</SF> should not be a big hurdle. The user is
+normally not involved in the correct format suitable for <SF>xindy</SF>
+and some tools will make this work invisible to him.
+<P>In contrast, the output of the <SF>xindy</SF> system is highly
+configurable and can produce a variety of different markups.
+Additionally, the way <SF>xindy</SF> processes the index data can be
+parametrized and controlled in many ways and gives the user a powerful
+framework for describing complex indexes. The user can tell <SF>xindy</SF>
+how it should produce an output according to his wishes or simply use
+some of the predefined styles that come with the distribution.
+<P>
+<P>
+<P>
+<P>
+<H2><A NAME="general-concepts"></A> <A NAME="ss2.2">2.2 General Concepts and Terms</A>
+</H2>
+
+<P>In the following sections we introduce some terms that are necessary
+to understand the way <SF>xindy</SF> works.
+<P>The development of <SF>xindy</SF> started with the devlopment of a model
+of a <EM>book-like</EM> index. This rather vague term will now be fleshed
+out by giving a semi-formal description of the model. If the structure
+of an index conforms to this model it can be processed by <SF>xindy</SF>.
+We first present a diagram that describes the structure of a processed
+index. It is a hierarchical recursive data structure which we will
+describe now.
+<P>
+<FIGURE>
+<EPS FILE="index.eps">
+<IMG SRC="index.gif">
+</FIGURE>
+<P>Boxed objects contain elements from the raw index such as the keywords
+or the location reference layers. We start from the root of the
+diagram and explain the different elements.
+<P>
+<P>
+<P>
+<DL>
+<P>
+<DT><B>index</B><DD><P>An index consists of a list of <SF>letter-groups</SF>.
+<P>
+<P>
+<A NAME="def letter-group"></A> <DT><B>letter-group</B><DD><P>The letter groups serve as containers for
+<SF>indexentries</SF>. The letter groups are intended to group all
+index entries sharing a common <SF>keyword</SF> prefix, allowing the
+assignment of a specific markup for each group. For example, indexes
+are often organized in a way that new index entries beginning with a
+new letter are separated by a specific markup. The following example
+illustrates this style.
+<P>
+<PRE>
+ B
+ bread 25, 27
+ butter 26
+
+ M
+ marmalade 19
+ milk 21
+</PRE>
+<P>Here we have two letter groups for the letters `B' and `M' because the
+keywords `bread' and `butter' share the same prefix `b' and
+`marmalade' and `milk' share the prefix `m'. <SF>xindy</SF> can be advised
+to define arbitrary letter groups with a particular markup for each of
+them. See command <CODE>define-letter-group</CODE> for further details.
+<P>
+<P>
+<DT><B>indexentry</B><DD><P>An index entry consists of three components: the
+<SF>keyword</SF> and optionally the list of <SF>location-class-groups</SF> and
+the sub-<SF>indexentries</SF>. An example:
+<P>
+<PRE>
+ bread 25-30
+ brown 26
+ white 27
+</PRE>
+<P>This index entry consists of the keyword `bread', the
+location class list `25-30' and the sub-entries `brown 26' and `white
+27'. The sub-entries themselves are complete index entries as well,
+forming a recursive data structure.
+<P>
+<P>
+<DT><B>keyword</B><DD><P>The keyword is the identifier of an index entry. It
+consists of a list of strings being the <EM>key</EM> if the index entry. In
+our model the keyword constists of a list of strings, since indexes
+are often organized hierarchically with different layers. In the
+example
+<P>
+<PRE>
+ bread 25-30
+ bread, brown 26
+ bread, white 27
+</PRE>
+<P>we have keywords `bread', `bread, brown' and `bread, white'.
+<P>A keyword is actually separated into four different keys. The
+<SF>main-key</SF> is the key that is specified from the author who indexes
+a document. The <SF>merge-key</SF> is derived from the main key with the
+so-called <EM>merge mapping</EM>. This mapping is accomplished with a set
+of rewrite rules. The <SF>sort-key</SF> is derived from the merge key with
+another set of rewrite rules called the <EM>sort mapping</EM>. The
+<SF>print-key</SF> can be specified by the user explicitely or, if it is
+ommited, equals the main key. The rewrite rules consist of string
+substitutions that also include regular expression features.
+<P>The following figure describes this:
+<P>
+<FIGURE>
+<EPS FILE="mappings.eps">
+<IMG SRC="mappings.gif">
+</FIGURE>
+<P>
+<P>The <SF>merge-key</SF> is necessary to define the equality of
+index entry keys. See command <CODE>merge-rule</CODE> for further details about
+defining the merge mapping.
+<P>The <SF>sort-key</SF> is necessary to define a total order on the
+keywords. Since we need a scheme that is independent from any specific
+character set such as ASCII or ISO-Latin, we must be able to define
+completely new alphabets. The index entries are then sorted according
+to the ISO-Latin alphabet. See the command <CODE>sort-rule</CODE> for an
+explanation how these mapping can be specified.
+<P>The <SF>print-key</SF> is used for the final markup and contains the
+string that appears in the generated markup.
+<P>
+<P>
+<DT><B>location-class-group</B><DD><P>There exist two kinds of
+location class groups namely <SF>location-reference-groups</SF> and
+<SF>cross-reference-groups</SF>.
+<P>
+<DT><B>location-reference-group</B><DD><P>consists of a list of
+<SF>attribute-groups</SF>.
+<P>
+<P>
+<DT><B>attribute-groups</B><DD><P>Each <SF>location-reference-group</SF> consists of
+a list of <SF>attribute-groups</SF>. Attribute groups are defined by a set
+of <SF>attributes</SF>. In the markup phase, all location references are
+sorted according to the group number their attributes belong to.
+Additionally all location references of a particular attribute group
+appear together in the index.
+<P>See command <CODE>define-attribute-groups</CODE> for further information about
+the handling of attribute-groups.
+<P>An attribute group consists of a list of <SF>location-references</SF>
+and/or <SF>ranges</SF>.
+<P>
+<P>
+<A NAME="def locref-class"></A> <DT><B>location-reference-class, location-reference, location</B><DD><P>Each
+index entry of an index references at least one <SF>location</SF> in the
+document. A <SF>location</SF> is a logical or physical part of a document,
+such as a single page, a section or subsection, etc. The symbolic name
+of a location is called a <SF>location-reference</SF>. The
+location reference is always represented as a string (a sequence of
+characters). Each location reference is associated a special tag
+called <SF>attribute</SF>. The following examples may give you an idea how
+location references could look like.
+<P>
+<BLOCKQUOTE>
+<CODE>"25" </CODE> represents a page number.
+</BLOCKQUOTE>
+<P>
+<BLOCKQUOTE>
+<CODE>"Chapter-3"</CODE> represents the third chapter of a document.
+</BLOCKQUOTE>
+<P>
+<BLOCKQUOTE>
+<CODE>"A-I" </CODE> represents the first page, written in uppercase roman
+numerals of the appendix `A', separated by a hyphen.
+</BLOCKQUOTE>
+<P>
+<BLOCKQUOTE>
+<CODE>"2.3.4" </CODE> represents the sub-sub-section 2.3.4 of a document.
+</BLOCKQUOTE>
+<P>As we can see, the location references are often composed
+hierarchically of smaller entities, such as numbers or names. All
+location references that belong to the same class form a
+<SF>location-class</SF>. A location class is composed of <SF>alphabets</SF>
+and <SF>separators</SF>. See command <CODE>define-location-class</CODE> for a
+description how classes can be defined.
+<P>
+<P>
+<DT><B>alphabet, separator</B><DD><P>As we have seen in the previous section,
+location classes consist of alphabets and separators. xindy has the
+following built-in set of basic alphabets:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+&lt;tag/&lt;tt/arabic-numbers// contains all non-negative numbers beginning
+with zero: 0, 1, 2, ....
+
+&lt;tag/&lt;tt/roman-numerals-uppercase// the roman numerals I, II, III,
+(IIII/IV), V, ... It recognizes the old and new roman numeral system.
+
+&lt;tag/&lt;tt/roman-numerals-lowercase// the same for the lowercase roman
+numerals.
+
+&lt;tag/&lt;tt/ALPHA// the US-ASCII alphabet (uppercase letters).
+
+&lt;tag/&lt;tt/alpha// the US-ASCII alphabet (lowercase letters).
+
+&lt;tag/&lt;tt/digits// the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9 in this
+order.
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The user is free to define new alphabets as he wishes. See the
+commands <CODE>define-alphabet</CODE> and <CODE>define-enumeration</CODE> for further
+details.
+<P>A complete location class can be defined by composing alphabets and
+separators. The location class of the example <CODE>"A-I"</CODE> can be
+defined as follows
+<P>
+<PRE>
+ (define-location-class "appendix"
+ (ALPHA "-" roman-numerals-uppercase))
+</PRE>
+<P>This is a list that completely describes all possible instances of
+this location class. Other valid members are <CODE>A-II</CODE>, <CODE>B-VI</CODE>,
+etc. Location classes are defined with the command
+<CODE>define-location-class</CODE>.
+<P><SF>xindy</SF> reads the incoming strings representing location references
+and tries to match them against a previously defined location class.
+There exist no predefined location classes.
+<P>
+<DT><B>range</B><DD><P>A <SF>range</SF> is a pair of <SF>location-references</SF>. A
+sequence of location references following one another is transformed
+into an range if the length of the sequence exceeds a certain
+user-definable limit. For example, the location references 11, 12, 13
+and&nbsp;14 may be transformed into the range 11--14. See command
+<CODE>define-location-class</CODE> for further details.
+<P>
+<P>
+<DT><B>cross-reference-group</B><DD><P>Container for all
+<SF>cross-references</SF> of a particular <SF>cross-reference-class</SF>.
+<P>
+<P>
+<A NAME="def crossref-class"></A> <DT><B>cross-reference-class, cross-reference</B><DD><P>A <SF>cross-reference</SF> is
+an unstructured reference. <SF>Cross-reference-classes</SF> are used to
+define different classes of cross references. All elements of a
+cross reference class appear together in the index. A cross reference
+consists of a list of strings.
+<P>
+<P>
+<DT><B>attributes</B><DD><P>Each location reference contains a so-called
+<SF>attribute</SF>. Attributes may be used to give a location reference a
+different meaning that may influence the processing and markup of this
+reference. Sometimes location references pointing to semantically
+different locations such as a definition or a usage of a term are
+tagged differently. They often appear in <EM>italics</EM> or <B>boldface</B>
+indicating this difference. An attribute may now be used to express
+this difference. Since <SF>xindy</SF> needs to know the possible
+attributes before the index entries are read in, the command
+<CODE>define-attributes</CODE> must be used to define a set of attributes and
+how they interact.
+<P>
+</DL>
+<P>
+<P>
+<P>
+<P>
+<HR>
+<A HREF="manual-3.html">Next</A>
+<A HREF="manual-1.html">Previous</A>
+<A HREF="manual.html#toc2">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-3.html b/Build/source/utils/xindy/xindy-src/doc/manual-3.html
new file mode 100644
index 00000000000..10d4a725a54
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-3.html
@@ -0,0 +1,1159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: Command List</TITLE>
+ <LINK HREF="manual-4.html" REL=next>
+ <LINK HREF="manual-2.html" REL=previous>
+ <LINK HREF="manual.html#toc3" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="manual-4.html">Next</A>
+<A HREF="manual-2.html">Previous</A>
+<A HREF="manual.html#toc3">Contents</A>
+<HR>
+<H2><A NAME="s3">3. Command List</A></H2>
+
+<P>Here is the complete list of <SF>xindy</SF>'s commands that may be used in
+the index style. The symbol <CODE>name</CODE> always refers to a string. We
+separate the commands into the <EM>processing</EM> and
+<EM>markup</EM> commands. The commands are listed in alphabetical order.
+<P>The parenthesis `<CODE>[</CODE>' and `<CODE>]</CODE>' denote optional parts of the
+syntax and `<CODE>{</CODE>' and `<CODE>}</CODE>' denote the grouping of elements. A
+vertical bar indicates alternatives. However, the enclosing round
+braces <EM>are</EM> part of the syntax and must be supplied.
+<P>
+<P>
+<H2><A NAME="ss3.1">3.1 Processing Commands</A>
+</H2>
+
+<P>Here follows the list of processing commands.
+<P>
+<A NAME="define-alphabet"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-alphabet name string-list)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines <CODE>name</CODE> to be the alphabet consisting of all elements of the
+<CODE>string-list</CODE>. Examples:
+<P>
+<PRE>
+ (define-alphabet "example-alphabet" ("An" "Example" "Alphabet"))
+</PRE>
+<P>defines an alphabet consisting of exactly three symbols. For the
+successor relationship holds: <CODE>succ("An")="Example"</CODE> and
+<CODE>succ("Example")="Alphabet"</CODE>. The built-in alphabet <CODE>digits</CODE> is
+defined as follows:
+<P>
+<PRE>
+ (define-alphabet "digits"
+ ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
+</PRE>
+<P>
+<P>
+<P>
+<A NAME="define-attributes"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-attributes attribute-list)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines all attributes the raw index may contain. Parameter
+<CODE>attribute-list</CODE> is a list of list of strings. The nesting level
+must not be more than&nbsp;2. So <CODE>(..(..)..)</CODE> is allowed, whereas
+<CODE>(..(..(..)..)..)</CODE> is not.
+<P>The list has two kinds of elements: strings and list of strings. A
+single string is treated as if it were a single element list. So the
+lists <CODE>("definition")</CODE> and <CODE>( ("definition") )</CODE> are equivalent.
+All elements forming a list are a so-called <EM>attribute group</EM>. The
+members of a group are written to the output file before any member
+of the following groups are written.
+<P>Examples of valid attributes lists are:
+<P><CODE>("definition" "usage")</CODE> defines two attribute groups. The first
+one contains all references with the attribute <CODE>definition</CODE> and the
+second one all with the attribute <CODE>usage</CODE>.
+<P><CODE>(("definition" "important") "usage")</CODE> defines two attribute
+groups. The first one contains all references with the attributes
+<CODE>definition</CODE> or <CODE>important</CODE> and the second one all with the
+attribute <CODE>usage</CODE>. In the attribute group <CODE>("definition"
+"important")</CODE> the attribute <CODE>definition</CODE> overrides <CODE>important</CODE>.
+<P>
+<P>
+<P>
+<A NAME="define-crossref-class"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-crossref-class name [:unverified])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines <CODE>name</CODE> to be a class of cross references. We distinguish
+two types of cross reference classes. <EM>Verified</EM> cross reference
+classes can be checked for dangling references. If for instance a
+cross reference points to the non-existent keyword `foo' a warning is
+issued and the user is advised to correct the invalid cross reference.
+This is the default. If for some reasons this mechanism must be
+deactivated the switch <CODE>:unverified</CODE> can be used to suppress this
+behaviour.
+<P>
+<P>
+<A NAME="define-letter-group"></A>
+<A NAME="define-letter-groups"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-letter-group name [:before lgname] [:after lgname]
+ [:prefixes list-of-prefixes])
+
+(define-letter-groups list-of-letter-groups)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This command defines a letter group with name <CODE>name</CODE>, which must be
+a string value, grouping all index entries that have a <EM>sort key</EM>
+beginning with the prefix <CODE>name</CODE>. The command
+<P>
+<PRE>
+ (define-letter-group "a")
+</PRE>
+<P>is equivalent to the command
+<P>
+<PRE>
+ (define-letter-group "a" :prefixes ("a"))
+</PRE>
+<P>Using the latter form one can associate more than one prefix with a
+given letter group. Also further prefixes can be added to an already
+existing letter group by simply defining the same letter group again.
+This results not in a redefinition but in adding more prefixes to the
+currently defined prefixes.
+<P>Example:
+<P>
+<PRE>
+ (define-letter-group "a")
+</PRE>
+<P>defines a letter group containing all index entries beginning with the
+string <CODE>"a"</CODE>.
+<P>
+<PRE>
+ (define-letter-group "c" :after "a")
+</PRE>
+<P>defines a letter group containing all index entries beginning with the
+string <CODE>"c"</CODE>. The letter group appears behind the letter group "a"
+<P>
+<PRE>
+ (define-letter-group "b" :after "a" :before "c")
+</PRE>
+<P>inserts letter group "b" between letter group "a" and "c". This allows
+incremental definition of letter groups by extending already defined
+ones.
+<P>The arguments <CODE>:after</CODE> and <CODE>:before</CODE> define a partial order on
+the letter groups. <SF>xindy</SF> tries to convert this partial order into
+a total one. If this is impossible due to circular definitions, an
+error is reported. If more than one possible total ordering can
+result, it is left open which one is used, so one should always define
+a complete total order.
+<P>The command <CODE>define-letter-groups</CODE> (with an `s' at the end) is
+simply an abbreviation for a sequence of
+<CODE>define-letter-group</CODE> definitions where the elements are ordered in
+the ordering given by the list. Example:
+<P>
+<PRE>
+ (define-letter-groups ("a" "b" "c")
+</PRE>
+<P>equals the definitions
+<P>
+<PRE>
+ (define-letter-group "a")
+ (define-letter-group "b" :after "a")
+ (define-letter-group "c" :after "b")
+</PRE>
+<P>See also commands <CODE>markup-letter-group-list</CODE> and
+<CODE>markup-letter-group</CODE> for further information.
+<P>
+<P>
+<P>
+<A NAME="define-location-class"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class name layer-list
+ [:min-range-length num]
+ [:hierdepth depth]
+ [:var])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines <CODE>name</CODE> to be a location class consisting of the given list
+of layers. A list of layers consists of names of basetypes and/or
+strings representing separators. Separators must follow the
+keyword argument <CODE>:sep</CODE>. If the keyword <CODE>:min-range-length</CODE> is
+specified we define the <EM>minimum range length</EM> to be used when
+building ranges. The argument <CODE>num</CODE> must be a positive integer
+number. Use a sufficiently large number (such as 10000) to disallow the building of ranges.
+If the switch <CODE>:var</CODE> is specified the declared class
+is of type <EM>variable</EM>, i.e. it is a <EM>var-location-class</EM>. Since
+building of ranges is currently only allowed for standard classes
+<CODE>:var</CODE> and <CODE>:min-range-length</CODE> must not be used together. The
+keyword argument <CODE>:hierdepth</CODE> can be used to declare that the
+location references have to be tagged in a hierarchical form. Its
+argument <CODE>depth</CODE> must be an integer number indicating the number of
+layers the hierarchy does contain. See command
+<CODE>markup-locref-list</CODE> for more information. Examples:
+<P>
+<PRE>
+ (define-location-class "page-numbers" ("arabic-numbers")
+ :min-range-length 3)
+</PRE>
+<P>Defines the location class <CODE>page-numbers</CODE> consisting of one layer
+which is the alphabet <CODE>arabic-numbers</CODE>. Since the minimum
+range length is set to 3 the location references 2, 3 and 4 don't form
+a range because the range length is only 2. But the references 6, 7,
+8, and 9 are enough to form a range. Some example instances of this
+class are <CODE>0</CODE>, <CODE>1</CODE>, ... <CODE>2313</CODE>, etc.
+<P>
+<PRE>
+ (define-location-class "sections" :var
+ ("arabic-numbers" :sep "."
+ "arabic-numbers" :sep "."
+ "arabic-numbers"))
+</PRE>
+<P>defines a variable location class. Valid instances are <CODE>1</CODE>,
+<CODE>1.1</CODE>, <CODE>1.2</CODE>, <CODE>2</CODE>, <CODE>2.4.5</CODE>, but none of <CODE>2-3</CODE> (wrong
+separator), <CODE>1.2.3.4</CODE> (more than 3 layers), <CODE>2.3.iv</CODE> (roman
+number instead of arabic one).
+<P>
+<P>
+<P>
+<A NAME="define-location-class-order"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class-order list)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines the order in which the location classes are written to the
+output file. The parameter <CODE>list</CODE> is a list of names of
+location classes. Examples:
+<P>
+<PRE>
+ (define-location-class-order
+ ("page-numbers" "sections" "xrefs"))
+</PRE>
+<P>tells the system that the page numbers should appear before the
+section numbers and that the cross references should appear at the
+end. If this command is omitted, the declaration order of the
+location classes in the index style is implicitly used as the output
+order. In the case that a location class does not appear in the list,
+the output may behave unexpectedly, so one should always enumerate all
+used location classes when using this command.
+<P>
+<P>
+<P>
+<A NAME="define-rule-set"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-rule-set name
+ [ :inherit-from ("rule-set" "rule-set-2") ]
+ :rules (&lt;rule>...) )
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>A complete specification of a multi-phase sorting process for a
+language requires that some rules have to appear in several subsequent
+sorting phases. Rule sets can be used to define a set of rules that
+can be instantiated in an arbitrary sorting phase. Basically, they
+offer means to separate the definition of sorting rules from their
+instantiation, hence, acting as a wrapper for calls to <CODE>sort-rule</CODE>.
+They do not add new functionality that is not already present with
+<CODE>sort-rule</CODE>.
+<P>A rule can be of the form:
+<P>
+<PRE>
+ &lt;rule> ::= ("pattern" "replacement"
+ [:string|:bregexp|:egegexp] [:again])
+</PRE>
+<P>The following incomplete example defines a new rule set of name
+<CODE>isolatin1-tolower</CODE> that inherits definitions from rule set
+<CODE>latin-tolower</CODE>, overriding or adding the sort rules in the list of
+<CODE>:rules</CODE>.
+<P>
+<PRE>
+ (define-rule-set "isolatin1-tolower"
+
+ :inherit-from ("latin-tolower")
+
+ :rules (("À" "à" :string :again)
+ ("Á" "á" :string :again)
+ ("Â" "â" :string :again)
+ ("Ã" "ã" :string :again)
+ ("Ä" "ä" :string :again)
+ ("Å" "å" :string :again)
+ ("Æ" "æ" :string :again)
+ ...
+ )
+ ...)
+</PRE>
+<P>Rule sets can be instantiated with the command <CODE>use-rule-set</CODE>. For
+further descriptions on the sorting model refer to the command
+<CODE>sort-rule</CODE>.
+<P>
+<P>
+<A NAME="define-sort-rule-orientations"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-sort-rule-orientations (orientations...))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines the order for the different sorting phases. The currently
+implemented <EM>orientations</EM> are <CODE>forward</CODE> and <CODE>backward</CODE>. This
+command must precede all <CODE>sort-rule</CODE> commands in an index style. It
+defines the orientations and implicitly sets the maximum number of
+sorting phases performed.
+<P>For further descriptions on the sorting model refer to the command
+<CODE>sort-rule</CODE>.
+<P>
+<P>
+<P>
+<A NAME="merge-rule"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-rule pattern replacement [:again]
+ [:bregexp | :eregexp | :string])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines a keyword mapping rule that can be used to generate the
+<EM>merge key</EM> from the <EM>main key</EM> of an index entry. This mapping
+is necessary to map all keywords that are differently written but
+belong to the same keyword to the same canonical keyword.
+<P>The parameter <CODE>pattern</CODE> can be a POSIX-compliant regular expression
+or an ordinary string. The implementation uses the GNU Rx regular
+expression library which implements the POSIX regular expressions.
+Regular expressions (REs) can be specified as <EM>basic regular
+expressions</EM> (BREs) or <EM>extended regular expressions</EM> (EREs). You
+can use the switch <CODE>:bregexp</CODE> to force the interpretation of the
+pattern as a BRE, or <CODE>:eregexp</CODE> to interpret it as an ERE. If you
+want <SF>xindy</SF> to interpret the pattern literally, use the switch
+<CODE>:string</CODE>. If none of these switches is selected, <SF>xindy</SF> uses
+an auto-detection mechanism to decide, if the pattern is a regular
+expression or not. If it recognizes the pattern as a RE, it interprets
+it as an ERE by default.
+<P>The parameter <CODE>replacement</CODE> must be
+a string possibly containing the special characters <CODE>&amp;</CODE>
+(substitutes for the complete match) and <CODE>\1</CODE>,...,<CODE>\9</CODE>
+(substituting for the <EM>n</EM>-th submatch. Examples:
+<P>
+<PRE>
+ (merge-rule "A" "a")
+</PRE>
+
+replaces each occurrence of the uppercase letter `<CODE>A</CODE>' with its
+lowercase counterpart.
+<P>
+<PRE>
+ (merge-rule "\~"([AEOUaeou])" "\1")
+</PRE>
+
+transforms the TeX umlaut-letters into their stripped counterparts,
+such that `<CODE>\"A</CODE>' is treated as an `<CODE>A</CODE>' afterwards.
+<P>The following sequences have a special meaning:
+<P>`<CODE>~n</CODE>' : End of line symbol (<EM>linefeed</EM>).
+<P>`<CODE>~b</CODE>' : The ISO-Latin character with the lowest ordinal number.
+<P>`<CODE>~e</CODE>' : The ISO-Latin character with the highest ordinal number.
+<P>`<CODE>~~</CODE>' : The tilde character.
+<P>`<CODE>~"</CODE>' : The double quote character.
+<P>Tilde characters and double quotes have to be quoted themselves with a
+tilde character. The special characters `<CODE>~b</CODE>' and
+`<CODE>~e</CODE>' allow the definition of arbitrary sorting orders by
+rules. In connection with an additional character every position in
+the alphabet can be described. E.g. `<CODE>m~e</CODE>' is
+lexicographically placed between `<CODE>m</CODE>' and `<CODE>n</CODE>'.
+<P>Due to efficiency, rules that just exchange characters or substitute
+constant character sequences are not treated as regular expressions.
+Therefore, instead of using the rule
+<P>
+<PRE>
+ (merge-rule "[A-Z]" "&amp;x")
+</PRE>
+<P>it is more efficient (though less comfortable) to use
+<P>
+<PRE>
+ (merge-rule "A" "Ax")
+ (merge-rule "B" "Bx")
+ ...
+ (merge-rule "Z" "Zx")
+</PRE>
+<P>Usually rules are applied in order of their definition. Rules with a
+special prefix precede those that begin with a class of characters, so
+that the search pattern `<CODE>alpha</CODE>' is checked before `<CODE>.*</CODE>', but
+`<CODE>auto</CODE>' and `<CODE>a.*</CODE>' are checked in order of their definition.
+<P>The first rule from a style file that matches the input is
+applied and the process restarts behind the substituted text. If no
+rule could be applied, the actual character is copied from the input
+and the process continues with the next character.
+<P>Sometimes it is necessary to apply rules anew to the result of a
+transformation. By specifying the keyword argument <CODE>:again</CODE> in the
+merge rule the rule is marked as <EM>mutable</EM>, which means that after
+using this rule the transformation process shall restart at the same
+place. E.g. the rule
+<P>
+<PRE>
+ (merge-rule "\$(.*)\$" "\1" :again)
+</PRE>
+<P>deletes <EM>all</EM> surrounding `<CODE>$</CODE>' symbols from the input.
+<P>See also command <CODE>sort-rule</CODE>.
+<P>
+<P>
+<A NAME="merge-to"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(merge-to attr-from attr-to [:drop])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>A <EM>merge rule</EM> says that the attribute <CODE>attr-from</CODE> can be used
+to build ranges in <CODE>attr-to</CODE>. Both attributes must name valid
+attribute names. The switch <CODE>:drop</CODE> indicates, that the original
+location reference with attribute <CODE>attr-from</CODE> has to be dropped
+(removed), if a successful range was built with location references in
+attribute <CODE>attr-to</CODE>. A detailed description is given in the section
+about processing phases.
+<P>
+<P>
+<P>
+<A NAME="require"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(require filename)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This command allows to load more index style modules. The module is
+searched in the directories defined in the search path. The file is
+read in and processing of the current file continues. The argument
+<CODE>filename</CODE> must be a string. This allows to decompose the
+index style into several modules that can be included into the topmost
+index style file. Example:
+<P>
+<PRE>
+ (require "french/alphabet.xdy")
+ (require "french/sort-rules.xdy")
+ (require "tex/locations.xdy")
+ (require "tex/markup.xdy")
+</PRE>
+<P>Submodules can load other submodules as well. If a file is required
+that was already loaded, the <CODE>require</CODE> command is simply ignored
+and processing continues without including this file twice. See also
+command <CODE>searchpath</CODE>.
+<P>
+<P>
+<P>
+<A NAME="searchpath"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(searchpath {path-string | path-list})
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This command adds the given paths to the list of paths, <SF>xindy</SF>
+searches for index style files. The argument <CODE>path-string</CODE> must be
+a colon-separated string of directory names. If this path ends with a
+colon the default search path is added to the end of the path list.
+Example:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ (searchpath ".:/usr/local/lib/xindy:/usr/local/lib/xindy/english:")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>adds the specified directories to the search path. Since the last path
+ends with a colon, the built-in search path is added at the end.
+Specifying
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ (searchpath ("."
+ "/usr/local/lib/xindy"
+ "/usr/local/lib/xindy/english"
+ :default))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>yields exactly the same result as the example above. Here
+<CODE>path-list</CODE> must be a list of strings and/or the keyword(s)
+<CODE>:default</CODE> and <CODE>:last</CODE>. The keyword <CODE>:default</CODE> signifies that
+the default pathnames are to be inserted at the specified position in
+the list. The keyword <CODE>:last</CODE> allows to insert the currently active
+paths at the indicated position. Since this allows to insert the
+built-in paths at any position and incrementally adding new paths to
+the search path, this version of the command ist more flexible than
+the first version.
+<P>
+<P>
+<A NAME="sort-rule"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule pattern replacement [:run level] [:again])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines a keyword mapping rule that can be used to generate the
+<EM>sort key</EM> of an index entry from the <EM>merge key</EM>. This key is
+used to sort the index entries lexicographically after they have been
+merged using the merge key.
+<P>The argument <CODE>:run</CODE> indicates that this rule is only in effect
+a the specified <EM>level</EM> (default is level 0). For a detailed
+discussion on the definition of sort rules for different layers refer
+to the documentation about the new sorting scheme
+(<CODE>new-sort-rules</CODE>) that comes with this distribution.
+<P>See command <CODE>merge-rule</CODE> for more information about keyword
+rules.
+<P>
+<P>
+<P>
+<A NAME="use-rule-set"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(use-rule-set [:run phase]
+ [:rule-set ( &lt;rule-set>... ))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This command instantiates the gives rule sets to be in effect at
+sorting phase <CODE>phase</CODE>. The order of the rule sets given with
+argument <CODE>:rule-set</CODE> is significant. Rule set entries of rule set
+appearing at the beginning of the list override entries in rule sets
+at the end of the list.
+<P>The following example declares that in phase 0 the rule sets
+<CODE>din5007</CODE> and <CODE>isolatin1-tolower</CODE> should be active, whereas in
+phase 2 the other rule sets have to be applied.
+<P>
+<PRE>
+ (use-rule-set :run 0
+ :rule-set ("din5007" "isolatin1-tolower"))
+
+ (use-rule-set :run 1
+ :rule-set ("resolve-umlauts"
+ "resolve-sharp-s"
+ "isolatin1-tolower"
+ ))
+</PRE>
+<P>For a discussion on rule sets refer to command <CODE>define-rule-set</CODE>.
+<P>
+<P>
+<P>
+<H2><A NAME="ss3.2">3.2 Markup Commands</A>
+</H2>
+
+<P>
+<P>The following commands can be used to define the markup of the index.
+They don't have any influence on the indexing process. Since the
+markup scheme is characterized by the concept of <EM>environments</EM>,
+the syntax and naming scheme of all commands follows a simple
+structure.
+<P>The commands can be separated into <EM>environment</EM> and
+<EM>list-environment</EM> commands. All commands of the first group
+support the keyword arguments <CODE>:open</CODE> and <CODE>:close</CODE>, whereas the
+second group additionally supports the keyword argument <CODE>:sep</CODE>. If
+one of these keyword arguments is missing, the default markup tag is
+<EM>always</EM> the empty tag. The <CODE>:open</CODE> tag is always printed before
+the object itself and the <CODE>:close</CODE> tag is always printed after the
+object has been printed. If a list is printed the <CODE>:sep</CODE>tag is
+printed between two elements of the list but not before the first
+element, or after the last one. All commands dealing with a list have
+the suffix `<CODE>-list</CODE>' as part of their command name.
+<P>Since the number of commands and the heavy usage of <EM>default</EM> and
+<EM>specialized</EM> tags makes the markup somehow complex (but very
+powerful) we have added a mechanism to trace the markup tags
+<SF>xindy</SF> omits during its markup phase with the command
+<CODE>markup-trace</CODE>.
+<P>Here follows the list of markup commands in alphabetical order with
+some of the commands grouped together.
+<P>
+<P>
+<A NAME="markup-attribute-group"></A>
+<A NAME="markup-attribute-group-list"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-attribute-group-list [:open string] [:close string]
+ [:sep string])
+
+(markup-attribute-group [:open string] [:close string]
+ [:group group-num])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Location class groups consist of lists of attribute groups. The markup
+of this list can be defined with the command
+<CODE>markup-attribute-group-list</CODE>.
+<P>To allow different markup for different attribute groups the command
+<CODE>markup-attribute-group</CODE> can be specialized on the group number
+with the keyword argument <CODE>:group</CODE> which must be an integer number.
+E.g., given are the groups <CODE>("definition" "theorem")</CODE> and
+<CODE>("default")</CODE> with group numbers 0 and 1, then
+<P>
+<PRE>
+ (markup-attribute-group :open "&lt;group0>" :close "&lt;/group0>"
+ :group 0)
+
+ (markup-attribute-group :open "&lt;group1>" :close "&lt;/group1>"
+ :group 1)
+</PRE>
+<P>can be used to assign different markup for both groups in a SGML-based
+language.
+<P>
+<P>
+<A NAME="markup-crossref-layer"></A>
+<A NAME="markup-crossref-layer-list"></A>
+<A NAME="markup-crossref-list"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-crossref-list [:open string] [:close string]
+ [:sep string]
+ [:class crossref-class])
+
+(markup-crossref-layer-list [:open string] [:close string]
+ [:sep string]
+ [:class crossref-class])
+
+(markup-crossref-layer [:open string] [:close string]
+ [:class crossref-class])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>A crossref class group contains cross references of the same class.
+The separator between the classes is defined with the
+<CODE>(markup-locclass-list :sep)</CODE>-parameter. A list of cross references
+can be tagged with the command <CODE>markup-crossref-list</CODE> that
+specializes on the <CODE>:class</CODE> argument.
+<P>Each cross reference is determined by a list of layers indicating
+the target of the cross reference. To define a suitable markup for
+such a list the command <CODE>markup-crossref-layer-list</CODE> can be used.
+<P>Each layer of a cross reference can be assigned two tags that
+specialize on the class of the reference, like all other commands.
+<P>A suitable markup for a cross reference class <CODE>see</CODE> within LaTeX2e
+could look like that:
+<P>
+<PRE>
+ (markup-crossref-list :class "see" :open "\emph{see} "
+ :sep "; ")
+ (markup-crossref-layer-list :class "see" :sep ",")
+ (markup-crossref-layer :class "see"
+ :open "\textbf{" :close "}")
+</PRE>
+<P>An example output could look like
+<P>
+<BLOCKQUOTE>
+... <EM>see</EM> <B>house</B>; <B>garden</B>,<B>winter</B>; <B>greenhouse</B>
+</BLOCKQUOTE>
+<P>
+<P>
+<A NAME="markup-index"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-index [:open string] [:close string]
+ [ :flat | :tree | :hierdepth depth ])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Defines the markup tags that enclose the whole index via the
+<CODE>:open</CODE> and <CODE>:close</CODE> parameters. Examples:
+<P>
+<PRE>
+ (markup-index :open "Here comes the index~n"
+ :close "That's all folks!~n")
+</PRE>
+<P>defines that the <CODE>:open</CODE> string is printed before the rest of the
+index and the <CODE>:close</CODE> string appears after the index is printed.
+<P>Additionally one can specify the form of the generated index. It is
+possible to produce flat indexes by specifying the switch <CODE>:flat</CODE>,
+to generate a tree with the <CODE>:tree</CODE> switch or any kind of mixture
+between both by specifying the depth up to which trees shall be built
+with the parameter <CODE>:hierdepth</CODE>. Its argument <CODE>depth</CODE> is the
+number of layers that can be formed into a tree. Therefore <CODE>:flat</CODE>
+is an abbrevation of <CODE>:hierdepth 0</CODE> and <CODE>:tree</CODE> is an
+abbrevation of <CODE>:hierdepth max-depth</CODE>, with <CODE>max-depth</CODE> being
+the maximum number of layers a keyword has. An example: the keywords
+<P>
+<PRE>
+ ("tree" "binary" "AVL")
+ ("tree" "binary" "natural")
+</PRE>
+<P>can be transformed in the following ways:
+<P>A flat index (<CODE>:flat</CODE> or <CODE>:hierdepth 0</CODE>)
+<P>
+<PRE>
+ tree binary AVL
+ tree binary natural
+</PRE>
+<P>with <CODE>:hierdepth 1</CODE>
+<P>
+<PRE>
+ tree
+ binary AVL
+ binary natural
+</PRE>
+<P>and a tree (<CODE>:tree</CODE> or <CODE>:hierdepth</CODE> &gt; 1)
+<P>
+<PRE>
+ tree
+ binary
+ AVL
+ natural
+</PRE>
+<P>Most often one will create tree-like indexes or ones that are flat.
+<P>
+<P>
+<A NAME="markup-indexentry-list"></A>
+<A NAME="markup-indexentry"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-indexentry-list [:open string] [:close string]
+ [:sep string] [:depth integer])
+
+(markup-indexentry [:open string] [:close string]
+ [:depth integer])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Letter groups consists of a list of index entries. The command
+<CODE>markup-indexentry-list</CODE> defines the markup of these lists. The
+markup can be specialized on the depth if the index is hierarchically
+organized. The command
+<P>
+<PRE>
+ (markup-indexentry-list :open "\begin{IdxentList}"
+ :close "\end{IdxentList}"
+ :sep "~n")
+</PRE>
+<P>defines that the index entries of all layers are wrapped into the
+given markup tags. If additionally
+<P>
+<PRE>
+ (markup-indexentry-list :open "\begin{IdxentListII}"
+ :close "\end{IdxentListII}"
+ :sep "~n"
+ :depth 2)
+</PRE>
+<P>is defined, all index entry lists of all layers (except layer 2) are
+tagged according to the first specification, and the index entry list
+within depth 2 are tagged according to the second rule.
+<P>The command <CODE>markup-indexentry</CODE> defines the markup of an index entry
+at a given depth. Since index entries may also contain subentries and
+the markup for subentries may be different in different layers, the
+optional keyword argument <CODE>:depth</CODE> can be used to assign different
+markup for different layers. If depth is ommited the default markup
+for all possible depths is defined. The top-most index entries have
+depth 0.
+<P>
+<PRE>
+ (markup-indexentry :open "\begin{Indexentry}"
+ :close "\end{Indexentry}")
+</PRE>
+<P>defines that the index entries of all layers are wrapped into the
+given markup tags. If additionally
+<P>
+<PRE>
+ (markup-indexentry :open "\begin{IndexentryII}"
+ :close "\end{IndexentryII}"
+ :depth 2)
+</PRE>
+<P>is defined, all index entries of all layers (except layer 2) are tagged
+according to the first specification, and the index entries with depth
+2 are tagged according to the second rule.
+<P>
+<P>
+<A NAME="markup-keyword-list"></A>
+<A NAME="markup-keyword"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-keyword-list [:open string] [:close string]
+ [:sep string] [:depth integer])
+
+(markup-keyword [:open string] [:close string]
+ [:depth integer])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>
+<P>The print key of an index entry consists of a list of strings. The
+markup of this list can be defined with the command
+<CODE>markup-keyword-list</CODE>. The keyword argument <CODE>:depth</CODE> may be
+specified to define the markup of the list at a particular depth.
+<P>The keyword of an index entry consists of a list of strings. Each of
+these components is tagged with the strings defined with the command
+<CODE>markup-keyword</CODE>. Since we maybe need different markup for
+different layers, the optional keyword argument can be used to
+specialize this markup for some depth.
+<P>
+<P>
+<A NAME="markup-letter-group-list"></A>
+<A NAME="markup-letter-group"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-letter-group-list [:open string] [:close string]
+ [:sep string])
+
+(markup-letter-group [:open string] [:close string] [:group group-name]
+ [:open-head string] [:close-head string]
+ [:upcase | :downcase | :capitalize])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The first command defines the markup of the letter group with name
+<CODE>group-name</CODE>. Since the markup of letter groups often contains the
+name of the letter group as a part of it, the other keyword arguments
+allow an additional markup for this group name. If one of the
+parameters <CODE>:open-head</CODE> and <CODE>:close-head</CODE> is specified
+additional markup is added as can be described as follows:
+<P>
+<PRE>
+ &lt;OPEN>
+ IF (:open-head OR :close-head)
+ &lt;OPEN-HEAD>
+ transformer-of(&lt;GROUP-NAME>)
+ &lt;CLOSE-HEAD>
+ FI
+ &lt;INDEXENTRIES...>
+ &lt;CLOSE>
+</PRE>
+<P>Here, <CODE>transformer-of</CODE> is a function that possibly transforms the
+string representing the group name into another string. The
+transformers we currently support can be specified with the switches
+<CODE>:upcase</CODE>, <CODE>:downcase</CODE> and <CODE>:capitalize</CODE> which result in the
+corresponding string conversions. If none of them is specified no
+transformation is done at all.
+<P>The command <CODE>markup-letter-group</CODE> defines the markup of the list of
+letter groups.
+<P>
+<P>
+<A NAME="markup-locclass-list"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-locclass-list [:open string] [:close string]
+ [:sep string])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Each index entry contains a list of location class groups. This markup
+command can be used to define the markup of this list.
+<P>
+<P>
+<A NAME="markup-locref"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-locref [:open string] [:close string]
+ [:class locref-class]
+ [:attr attribute]
+ [:depth integer])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The markup tags of a location reference can be specialized on the
+three arguments <CODE>:class</CODE>, <CODE>:attr</CODE> and additionally, if
+sub-references are used, <CODE>:depth</CODE>. Most often one will only use a
+tag depending on the attribute. For example, all location references
+with the attribute <CODE>definition</CODE> should appear in a font series like
+bold, emphasizing the importance of this location reference; those
+with the attribute <CODE>default</CODE> in font shape italic. The markup in
+this case would not specialize on the depth or any particular class. A
+valid definition, suitable for a usage within HTML, could look like
+this.
+<P>
+<PRE>
+ (markup-locref :open "&lt;B>" :close "&lt;/B>" :attr "definition")
+ (markup-locref :open "&lt;I>" :close "&lt;/I>" :attr "default")
+</PRE>
+<P>
+<P>
+<A NAME="markup-locref-class"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-locref-class [:open string] [:close string]
+ [:class locref-class])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>All location references of a particular location reference class can
+be wrapped into the tags defined by this command. It specializes on
+the keyword argument <CODE>:class</CODE>.
+<P>
+<P>
+<A NAME="markup-locref-layer-list"></A>
+<A NAME="markup-locref-layer"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-locref-layer [:open string] [:close string]
+ [:depth integer] [:layer integer]
+ [:class locref-class])
+
+(markup-locref-layer-list [:open string] [:close string]
+ [:sep string]
+ [:depth integer]
+ [:class locref-class])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>A location reference contains a list of location reference layers. The
+second markup command can be used to markup this list. It specializes
+on the class of the location references and the depth (if
+sub-references are used).
+<P>The first command allows to tag the elements of a layer list
+differently. The first element of this list can is specialisable with
+<CODE>:layer 0</CODE>, the next element with <CODE>:layer 1</CODE>, etc. See the next
+example for an example.
+<P>
+<P>
+<A NAME="markup-locref-list"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-locref-list [:open string] [:close string] [:sep string]
+ [:depth integer] [:class locref-class])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>An attribute group contains a list of location references and/or
+ranges. Additionally a layered location reference itself may contain
+sub-references that are stored as a list of location references. We
+specialize the markup for these lists on the location class they
+belong to with the keyword argument <CODE>:class</CODE>, and on <CODE>:depth</CODE>
+that specializes on the different subentry levels when using
+location references with sub-references.
+<P>Given is a list of location references that have the class description
+<P>
+<PRE>
+ (define-location-class "Appendix"
+ ("ALPHA" :sep "-" "arabic-numbers")
+ :hierdepth 2)
+</PRE>
+<P>This location class has instances like <CODE>A-1</CODE>, <CODE>B-5</CODE>, etc. The
+keyword argument <CODE>:hierdepth 2</CODE> informs <SF>xindy</SF> to markup these
+location references in a hierarchical form. With the commands
+<P>
+<PRE>
+ (markup-locref-list :sep "; "
+ :depth 0 :class "Appendix")
+ (markup-locref-list :open " " :sep ","
+ :depth 1 :class "Appendix")
+ (markup-locref-layer :open "{\bf " :close "}" :layer 0
+ :depth 0 :class "Appendix")
+</PRE>
+<P>we obtain a markup sequence for some example data that could look like
+<P>
+<PRE>
+ {\bf A} 1,2,5; {\bf B} 5,6,9; {\bf D} 1,5,8; ...
+</PRE>
+<P>
+<P>
+<P>
+<A NAME="markup-range"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-range [:open string] [:close string] [:sep string]
+ [:class locref-class]
+ [:attr attribute]
+ [:length num] [:ignore-end])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>A range consists of two location references. Markup can be specified
+with the <CODE>:open</CODE> and <CODE>:close</CODE> arguments and one separator given
+by the argument <CODE>:sep</CODE>.
+<P>The markup of the separator can be specified attributes via
+the<CODE>:attr</CODE> tag.
+<P>Argument <CODE>:length</CODE> can be used to define
+different markup for different lengths. In conjunction with
+<CODE>:length</CODE> is may be useful not to print the second location
+reference at all. For example, one wishes to markup ranges of length 1
+in the form <EM>Xf.</EM> instead of <EM>X--Y</EM>. This can be accomplished
+with the switch <CODE>:ignore-end</CODE>.
+<P>The markup tags for a range <EM>(X,Y)</EM> can be described as follows:
+<P>
+<PRE>
+ &lt;OPEN>
+ Markup of location reference X
+ &lt;SEP>
+ IF (not :ignore-end)
+ Markup of location reference Y
+ FI
+ &lt;CLOSE>
+</PRE>
+<P>
+<P>The following tags can be used to define a range of page numbers
+(given in a location class <CODE>page-numbers</CODE>) without considering the
+open and close parameters:
+<P>
+<PRE>
+ (markup-range :sep "-" :class "page-numbers")
+</PRE>
+<P>Location ranges then appear separated by a hyphen in a form like this:
+<P>
+<PRE>
+ ..., 5-8, 19-23, ...
+</PRE>
+<P>
+<P>
+<A NAME="markup-trace"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-trace [:on] [:open string] [:close string])
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This command can be used to activate the tracing of all
+markup commands <SF>xindy</SF> executes. The switch <CODE>:on</CODE> activates the
+trace. If <CODE>:on</CODE> is omitted, the command line flag <CODE>-t</CODE> can be
+used as well. All tags which are emitted but not yet defined
+explicitly by the user are tagged with a symbolic notation indicating
+the commands that must be used to define this tag. The defaults for
+the keyword argument <CODE>:open</CODE> is `<CODE>&lt;</CODE>' and for <CODE>:close</CODE> is
+`<CODE>></CODE>'. The beginning of an example output could look like:
+<P>
+<PRE>
+ &lt;INDEX:OPEN>
+ &lt;LETTER-GROUP-LIST:OPEN>
+ &lt;LETTER-GROUP:OPEN ["a"]>
+ &lt;INDEXENTRY-LIST:OPEN [0]>
+ &lt;INDEXENTRY:OPEN [0]>
+ &lt;KEYWORD-LIST:OPEN [0]>
+ &lt;KEYWORD:OPEN [0]>
+ ...
+</PRE>
+<P>We use a simple indentation scheme to make the structure of the tags
+visible. The symbolic tag <CODE>&lt;LETTER-GROUP:OPEN ["a"]></CODE> for example
+indicates that the tag that can be specified with the command
+<P>
+<PRE>
+ (markup-letter-group :open "XXX" :group "a" ... )
+</PRE>
+<P>is emitted at this point in the markup process. By incrementally
+adding markup commands to the index, more and more tags can be defined
+until the whole markup is defined. This general mechanism should allow
+everyone understand the markup process. The best is to start with a
+small index, define the complete markup and afterwards process the
+whole index. Additionally one can enclose the symbolic tags into an
+environment that is neutral to the document preparation system, such
+as a comment. For TeX this could be
+<P>
+<PRE>
+ (markup-trace :open "%%" :close "~n")
+</PRE>
+<P>or a definition in the TeX document like
+<P>
+<PRE>
+ \def\ignore#1{}
+</PRE>
+<P>combined with the command
+<P>
+<PRE>
+ (markup-trace :open "\ignore{" :close "}")
+</PRE>
+<P>
+<P>
+<P>
+<A NAME="raw-index"></A> <H2><A NAME="ss3.3">3.3 Raw Index Interface</A>
+</H2>
+
+<P>
+<P>This section can be skipped if the reader is not interested in
+adapting <SF>xindy</SF> to a new document preparation system.
+<P>The raw index is the file that represents the index that is to be
+processed. Since many different document preparation systems may use
+different forms of index representations, their output must be
+transformed in a form readable by <SF>xindy</SF>. We also could have
+written an configurable parser performing this task, but usually a
+tool written with some text processing tools such as <CODE>perl</CODE>,
+<CODE>sed</CODE> or <CODE>awk</CODE> can achieve the same task as well. Therefore,
+adapting <SF>xindy</SF> to a completely different system can mostly be
+done by writing an appropriate raw index filter.
+<P>The format of the raw index interface of <SF>xindy</SF> is defined as
+follows:
+<P>
+<A NAME="indexentry"></A>
+<BLOCKQUOTE><CODE>
+<PRE>
+(indexentry { :key string-list [:print string-list]
+ | :tkey list-of-layers }
+ [:attr string]
+ { :locref string [:open-range | :close-range]
+ | :xref string-list } )
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The pseudo variable <EM>string</EM> is a sequence of characters
+surrounded by double quotes, e.g.
+<P>
+<PRE>
+ "Hi, it's me" "one" "a string with two \"double quotes\""
+</PRE>
+<P>are three examples of valid strings. If you need to include a
+double quote as a literal character, you must quote it itself with a
+backslash as shown in the third example. A <EM>string list</EM> is simply
+a list of strings separated by whitespaces and surrounded by round
+braces. An example of a string list is
+<P>
+<PRE>
+ ("This" "is" "a" "list" "of" "strings")
+</PRE>
+<P>So far about the syntax. The semantics of the different elements are
+described here.
+<P>
+<P>
+<DL>
+<P>
+<DT><B><CODE>:key</CODE></B><DD><P>The argument <EM>string list</EM> defines the keyword of
+the index entry. It must be a list of strings, since the keyword may
+consist of different layers such as <CODE>("heap" "fibonacci")</CODE>.
+<P>
+<DT><B><CODE>:print</CODE></B><DD><P>The optional <EM>print key</EM> defines the way the
+keyword has to be printed in the markup phase.
+<P>
+<DT><B><CODE>:tkey</CODE></B><DD><P>Another possibility to define the keys of an
+index entry is with the <CODE>:tkey</CODE> keyword argument. It can be used
+instead of the <CODE>:key</CODE> and <CODE>:print</CODE> arguments. Instead of
+specifying separately the key and the corresponding print key, we
+define the keyword by its layers. Each layer consist of a list of one
+or two strings. The first string will be interpreted as the main key,
+whereas the second one will become the print key. If the print key is
+ommited, the main key is taken instead. So the definition
+<P>
+<PRE>
+ :tkey (("This") ("is") ("a") ("bang" "BANG !!!"))
+</PRE>
+<P>is equivalent to
+<P>
+<PRE>
+ :key ("This" "is" "a" "bang")
+ :print ("This" "is" "a" "BANG !!!")
+</PRE>
+<P>
+<P>
+<DT><B><CODE>:locref</CODE></B><DD><P>The reference an index entry describes can be a
+<EM>location reference</EM> or a <EM>cross reference</EM>. The switch
+<CODE>:locref</CODE> describes a location reference. Its optional arguments
+are <CODE>:open-range</CODE> and <CODE>:close-range</CODE>. The <EM>string</EM> that must
+be supplied must somehow encode the location reference. It might look
+like the string <CODE>"25"</CODE> representing the page number 25, or
+<CODE>"Appendix-I"</CODE> representing the first appendix numbered in
+uppercase roman numerals.
+<P>
+<DT><B><CODE>:open-range</CODE>,<CODE>:close-range</CODE></B><DD><P>These are switches that do not
+take any arguments. They describe the beginning and ending of a
+<EM>range</EM>, starting or ending from the location reference that is
+given by the argument <CODE>:locref</CODE>. If they are supplied, the
+location reference may have influence on the way ranges are build.
+<P>
+<DT><B><CODE>:xref</CODE></B><DD><P>These arguments choose the second alternative. The
+argument <EM>string list</EM> of parameter <CODE>:xref</CODE> describes where the
+index entry should point to.
+<P>
+<DT><B><CODE>:attr</CODE></B><DD><P>This parameter may be used to tag a location reference
+with a certain attribute or it names the class of a cross reference.
+It may also used to associate different markup for different
+attributes in the markup phase. If this parameter is omitted or is the
+empty string, the indexentry is declared to have the attribute
+<CODE>default</CODE>.
+<P>
+</DL>
+<P>Some examples:
+<P>
+<PRE>
+ (indexentry :key ("airplane") :locref "25" :attr "default")
+</PRE>
+<P>defines an index entry with the key `airplane' indexed on page '25'.
+This index entry has the attribute <CODE>default</CODE>.
+<P>
+<PRE>
+ (indexentry :key ("house") :xref ("building") :attr "see")
+</PRE>
+<P>defines a cross reference with the key 'house' pointing to the term
+'building'. This cross reference belongs to the cross reference class
+<CODE>see</CODE>.
+<P>
+<PRE>
+ (indexentry :key ("house") :xref ("building") :open-range)
+</PRE>
+<P>is an invalid specification, since <CODE>:open-range</CODE> mustn't be used
+together with cross references.
+<P>
+<P>
+<P>
+<HR>
+<A HREF="manual-4.html">Next</A>
+<A HREF="manual-2.html">Previous</A>
+<A HREF="manual.html#toc3">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-4.html b/Build/source/utils/xindy/xindy-src/doc/manual-4.html
new file mode 100644
index 00000000000..6d39d7ba240
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-4.html
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: Processing Phases</TITLE>
+ <LINK HREF="manual-5.html" REL=next>
+ <LINK HREF="manual-3.html" REL=previous>
+ <LINK HREF="manual.html#toc4" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="manual-5.html">Next</A>
+<A HREF="manual-3.html">Previous</A>
+<A HREF="manual.html#toc4">Contents</A>
+<HR>
+<H2><A NAME="startup-phase"></A> <A NAME="s4">4. Processing Phases</A></H2>
+
+<H2><A NAME="ss4.1">4.1 The Startup Phase</A>
+</H2>
+
+<P>After the system is started, <SF>xindy</SF> reads in the index style that
+is passed as a command line argument. Each <CODE>require</CODE> command is
+executed and the internal data structures representing the index style
+are built up. The index style must completely be read in before the
+raw index can be read.
+<P>
+<P>
+<A NAME="processing-phase"></A> <H2><A NAME="ss4.2">4.2 The Processing Phase</A>
+</H2>
+
+<P>The processing phase starts with reading the complete raw index. The
+name of the raw index file must be passed via the command line. All
+index entries are read in and pre-processed. All attributes and
+cross reference classes are checked if they are already known to the
+system. All strings representing location references are matched
+against all known location classes. Appropriate warnings are issued,
+if errors are encountered.
+<P>After the raw index has completely been read in, the
+location references of each index entry are merged, separated and
+sorted and the building of ranges takes place. This phase is the most
+complex one and we will describe it in detail.
+<P>
+<OL>
+<LI> All location references are separated according to the class
+they belong to. These groups are called <EM>location class groups</EM>.
+Possible groups are all defined location and crossref classes. See
+the commands <CODE>define-location-class</CODE> and
+<CODE>define-crossref-class</CODE> for a description how these classes can
+be defined.
+
+The classes are sorted according to an order that can be defined with
+the command <CODE>define-location-class-order</CODE>.
+</LI>
+<LI> The further processing of each location class group is
+different for the location classes and the crossref classes.
+
+<UL>
+<LI> Cross references are sorted lexicographically based on
+the ISO-Latin alphabet.
+
+<A NAME="sort-merge-locrefs"></A> </LI>
+<LI> To illustrate the processing of location references we assume
+the following list:
+
+<BLOCKQUOTE>
+ <EM>13</EM>, <EM>14</EM>, <EM>15</EM>, <EM>18</EM>, <B>12</B>, <B>13</B>,
+<B>14</B>, <B>16</B>, 14, 16
+</BLOCKQUOTE>
+
+
+The location references in italics own the attribute `important,
+those with in boldface have attribute `definition', and all others
+are own the attribute `default'. Imagine, the attribute groups were
+defined with the commands
+
+<BLOCKQUOTE><CODE>
+<PRE>
+ (define-attribute-groups (("definition" "important")
+ ("default")))
+
+ (merge-to "definition" "default" :drop)
+
+</PRE>
+</CODE></BLOCKQUOTE>
+
+
+See commands <CODE>define-attributes</CODE> and <CODE>merge-to</CODE> for a
+detailed description.
+
+The substitution rules are applied. This means that
+location references <B>13</B> and <B>14</B> with attribute `important'
+are <EM>substituted</EM> by the location references <EM>13</EM> and <EM>14</EM>
+with attribute `definition'. Substitution means removing from the
+list of location references.
+
+Substitution occurs because the definition of the attribute groups
+implicitly defines <CODE>"definition"</CODE> <EM>substitutes</EM>
+<CODE>"important"</CODE>.
+
+The resulting list is now
+
+<BLOCKQUOTE>
+ <EM>13</EM>, <EM>14</EM>, <EM>15</EM>, <EM>18</EM>, <B>12</B>, <B>16</B>, 14,
+16
+</BLOCKQUOTE>
+
+
+<A NAME="def merge-to"></A> The <CODE>merge-to</CODE> rules are applied.
+Their meaning is to make location references appear with another
+attribute as well, but only in the function of supporting the
+building of ranges. They disappear after the ranges are built. The
+location references that cause new location refererences to be
+added are called <EM>parents</EM>, whereas the new ones are called
+<EM>childs</EM>. The example rule results in the adding of all
+refernces with attribute `definition' to the attribute `default'
+which results in the list
+
+<BLOCKQUOTE>
+ <EM>13</EM>, <EM>14</EM>, <EM>15</EM>, <EM>18</EM>, <B>12</B>, <B>16</B>, (13),
+14, (15), 16, (18)
+</BLOCKQUOTE>
+
+
+The childs are put in parenthesis since they may only be used to
+build up ranges.
+
+For each attribute we now try to build ranges. Since the switch
+<CODE>:drop</CODE> was specified we must start with the attribute
+`default', because a successful merging of location references may
+result in dropping the parents. This results in the range `13--16'.
+The childs
+(13) and (15) were used in the building of ranges, so their parents
+<EM>13</EM> and <EM>15</EM> have to be removed from the list of
+location references. This step would be omitted if the switch
+<CODE>:drop</CODE> were not specified. After unsucessfully trying to build
+more ranges and dropping the location references <EM>13</EM>, <EM>15</EM>
+and (18)--which was only meant to build ranges--we obtain the list
+
+<BLOCKQUOTE>
+<EM>14</EM>, <EM>18</EM>, <B>12</B>, <B>16</B>, 13--16
+</BLOCKQUOTE>
+
+
+Finally the attributes are brought into the right order. In our
+example the location references of the first attribute group are
+merged and sorted lexicographically resulting in two attribute groups
+
+<BLOCKQUOTE>
+(<B>12</B>, <EM>14</EM>, <B>16</B>, <EM>18</EM>) (13--16)
+</BLOCKQUOTE>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</LI>
+</UL>
+
+</LI>
+</OL>
+<P>After all index entries have been processed the letter groups are
+formed and the index entries and location references are transformed
+into tree like structures as defined in the index style.
+<P>
+<P>
+<P>
+<A NAME="markup-phase"></A> <H2><A NAME="ss4.3">4.3 The Markup Phase</A>
+</H2>
+
+<P>After the index has completely been processed, the markup phase
+traverses the tree-like structure of the index. Each step triggers the
+appropriate markup events resulting in the emitting of markup tags.
+<P>
+<P>
+<P>
+<HR>
+<A HREF="manual-5.html">Next</A>
+<A HREF="manual-3.html">Previous</A>
+<A HREF="manual.html#toc4">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-5.html b/Build/source/utils/xindy/xindy-src/doc/manual-5.html
new file mode 100644
index 00000000000..072920545aa
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-5.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: Index</TITLE>
+ <LINK HREF="manual-6.html" REL=next>
+ <LINK HREF="manual-4.html" REL=previous>
+ <LINK HREF="manual.html#toc5" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="manual-6.html">Next</A>
+<A HREF="manual-4.html">Previous</A>
+<A HREF="manual.html#toc5">Contents</A>
+<HR>
+<H2><A NAME="INDEX"></A> <A NAME="s5">5. Index</A></H2>
+
+<P>
+<P><B>List of Commands</B>
+<P>
+<A HREF="manual-3.html#define-attributes">define-attributes</A><BR>
+<A HREF="manual-3.html#define-alphabet">define-alphabet</A><BR>
+<A HREF="manual-3.html#define-crossref-class">define-crossref-class</A><BR>
+<A HREF="manual-3.html#define-letter-group">define-letter-group</A><BR>
+<A HREF="manual-3.html#define-letter-groups">define-letter-groups</A><BR>
+<A HREF="manual-3.html#define-location-class">define-location-class</A><BR>
+<A HREF="manual-3.html#define-location-class-order">define-location-class-order</A><BR>
+<A HREF="manual-3.html#define-rule-set">define-rule-set</A><BR>
+<A HREF="manual-3.html#define-sort-rule-orientations">define-sort-rule-orientations</A><BR>
+<A HREF="manual-3.html#indexentry">indexentry</A><BR>
+<A HREF="manual-3.html#markup-attribute-group">markup-attribute-group</A><BR>
+<A HREF="manual-3.html#markup-attribute-group-list">markup-attribute-group-list</A><BR>
+<A HREF="manual-3.html#markup-crossref-layer">markup-crossref-layer</A><BR>
+<A HREF="manual-3.html#markup-crossref-layer-list">markup-crossref-layer-list</A><BR>
+<A HREF="manual-3.html#markup-crossref-layer">markup-crossref-layer</A><BR>
+<A HREF="manual-3.html#markup-index">markup-index</A><BR>
+<A HREF="manual-3.html#markup-indexentry">markup-indexentry</A><BR>
+<A HREF="manual-3.html#markup-indexentry-list">markup-indexentry-list</A><BR>
+<A HREF="manual-3.html#markup-keyword">markup-keyword</A><BR>
+<A HREF="manual-3.html#markup-keyword-list">markup-keyword-list</A><BR>
+<A HREF="manual-3.html#markup-letter-group">markup-letter-group</A><BR>
+<A HREF="manual-3.html#markup-letter-group-list">markup-letter-group-list</A><BR>
+<A HREF="manual-3.html#markup-locclass-list">markup-locclass-list</A><BR>
+<A HREF="manual-3.html#markup-locref">markup-locref</A><BR>
+<A HREF="manual-3.html#markup-locref-class">markup-locref-class</A><BR>
+<A HREF="manual-3.html#markup-locref-layer">markup-locref-layer</A><BR>
+<A HREF="manual-3.html#markup-locref-layer-list">markup-locref-layer-list</A><BR>
+<A HREF="manual-3.html#markup-locref-list">markup-locref-list</A><BR>
+<A HREF="manual-3.html#markup-range">markup-range</A><BR>
+<A HREF="manual-3.html#markup-trace">markup-trace</A><BR>
+<A HREF="manual-3.html#merge-rule">merge-rule</A><BR>
+<A HREF="manual-3.html#merge-to">merge-to</A><BR>
+<A HREF="manual-3.html#require">require</A><BR>
+<A HREF="manual-3.html#searchpath">searchpath</A><BR>
+<A HREF="manual-3.html#sort-rule">sort-rule</A><BR>
+<A HREF="manual-3.html#use-rule-set">use-rule-set</A><P>
+<P>
+<P>
+<HR>
+<A HREF="manual-6.html">Next</A>
+<A HREF="manual-4.html">Previous</A>
+<A HREF="manual.html#toc5">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-6.html b/Build/source/utils/xindy/xindy-src/doc/manual-6.html
new file mode 100644
index 00000000000..dfbf33ccc91
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-6.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: References</TITLE>
+ <LINK HREF="manual-5.html" REL=previous>
+ <LINK HREF="manual.html#toc6" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="manual-5.html">Previous</A>
+<A HREF="manual.html#toc6">Contents</A>
+<HR>
+<H2><A NAME="s6">6. References</A></H2>
+
+<P>
+<P>The following books and papers were referenced in this document.
+<P>
+<OL>
+<LI> D. E. Knuth, <EM>The TeXbook</EM>, Addison-Wesley, 1984
+</LI>
+<LI> Leslie Lamport, LaTeX <EM>A Document Preparation System</EM>,
+Addison-Wesley, 1986
+</LI>
+<LI> Joachim Schrod, <EM>An International Version of MakeIndex</EM>,
+Cahiers GUTenberg, 10, p81-90, 1991
+</LI>
+<LI> Pehong Chen and Michael A. Harrison, <EM>Automating Index
+Preparation</EM>, TR-87/347, University of California Berkeley, 1987
+<A NAME="makeindex"></A>
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF>, <EM>Ein Flexibles Indexierungssystem</EM>,
+Studienarbeit FB Informatik, TH-Darmstadt, November 1995.
+</LI>
+<LI> Joachim Schrod and Gabor Herr, <EM>MakeIndex Version 3.0</EM>,
+Technical University Darmstadt, 1991
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Technical Report No. 11/1997, Computer Science Department, Darmstadt
+University of Technology, 1997. Also accessible from the <SF>xindy</SF>
+homepage.
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Proceedings of the EuroTeX'98, St. Malo, France, March 1998
+</LI>
+</OL>
+<P>
+<HR>
+Next
+<A HREF="manual-5.html">Previous</A>
+<A HREF="manual.html#toc6">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual-7.html b/Build/source/utils/xindy/xindy-src/doc/manual-7.html
new file mode 100644
index 00000000000..c1c26ed507a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual-7.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual: References</TITLE>
+ <LINK HREF="manual-6.html" REL=previous>
+ <LINK HREF="manual.html#toc7" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="manual-6.html">Previous</A>
+<A HREF="manual.html#toc7">Contents</A>
+<HR>
+<H2><A NAME="s7">7. References</A></H2>
+
+<P>
+<P>The following books and papers were referenced in this document.
+<P>
+<OL>
+<LI> D. E. Knuth, <EM>The TeXbook</EM>, Addison-Wesley, 1984
+</LI>
+<LI> Leslie Lamport, LaTeX <EM>A Document Preparation System</EM>,
+Addison-Wesley, 1986
+</LI>
+<LI> Joachim Schrod, <EM>An International Version of MakeIndex</EM>,
+Cahiers GUTenberg, 10, p81-90, 1991
+</LI>
+<LI> Pehong Chen and Michael A. Harrison, <EM>Automating Index
+Preparation</EM>, TR-87/347, University of California Berkeley, 1987
+<A NAME="makeindex"></A>
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF>, <EM>Ein Flexibles Indexierungssystem</EM>,
+Studienarbeit FB Informatik, TH-Darmstadt, November 1995.
+</LI>
+<LI> Joachim Schrod and Gabor Herr, <EM>MakeIndex Version 3.0</EM>,
+Technical University Darmstadt, 1991
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Technical Report No. 11/1997, Computer Science Department, Darmstadt
+University of Technology, 1997. Also accessible from the <SF>xindy</SF>
+homepage.
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF> -- <EM>A Flexible Indexing System</EM>,
+Proceedings of the EuroTeX'98, St. Malo, France, March 1998
+</LI>
+</OL>
+<P>
+<HR>
+Next
+<A HREF="manual-6.html">Previous</A>
+<A HREF="manual.html#toc7">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/manual.html b/Build/source/utils/xindy/xindy-src/doc/manual.html
new file mode 100644
index 00000000000..344b0e19cab
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/manual.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>xindy Manual</TITLE>
+ <LINK HREF="manual-1.html" REL=next>
+
+
+</HEAD>
+<BODY>
+<A HREF="manual-1.html">Next</A>
+Previous
+Contents
+<HR>
+<H1><SF>xindy</SF> Manual</H1>
+
+<H2>Roger Kehr</H2>
+<H3>Computer Science Department, Technical University of Darmstadt</H3>
+ and
+<H2>Joachim Schrod</H2>
+<H3>Joachim Schrod Net &amp; Publication Consultance GmbH</H3>
+$Revision: 1.19 $, $Date: 2004/05/24 21:43:16 $,
+for xindy version 2.2
+<P><HR>
+<EM>This is the manual of the indexing system <SF>xindy</SF>. <SF>xindy</SF>
+is a powerful and flexible framework for generating indexes for many
+kinds of documents. This document describes the <SF>xindy</SF> processing
+model, terminology, and language, but not invocation and standard modules.
+The most up-to-date version can be obtained from the <SF>xindy</SF> Web Site at
+<A HREF="http://www.xindy.org/">http://www.xindy.org/</A>.</EM>
+<HR>
+<P>
+<A HREF="manual-5.html#INDEX">Index of all xindy commands</A><P>
+<P>
+<P>
+<P>
+<H2><A NAME="toc1">1.</A> <A HREF="manual-1.html">About this Manual</A></H2>
+
+<P>
+<H2><A NAME="toc2">2.</A> <A HREF="manual-2.html">How the Index Processor Works</A></H2>
+
+<UL>
+<LI><A HREF="manual-2.html#ss2.1">2.1 Data Flow</A>
+<LI><A HREF="manual-2.html#ss2.2">2.2 General Concepts and Terms</A>
+</UL>
+<P>
+<H2><A NAME="toc3">3.</A> <A HREF="manual-3.html">Command List</A></H2>
+
+<UL>
+<LI><A HREF="manual-3.html#ss3.1">3.1 Processing Commands</A>
+<LI><A HREF="manual-3.html#ss3.2">3.2 Markup Commands</A>
+<LI><A HREF="manual-3.html#ss3.3">3.3 Raw Index Interface</A>
+</UL>
+<P>
+<H2><A NAME="toc4">4.</A> <A HREF="manual-4.html">Processing Phases</A></H2>
+
+<UL>
+<LI><A HREF="manual-4.html#ss4.1">4.1 The Startup Phase</A>
+<LI><A HREF="manual-4.html#ss4.2">4.2 The Processing Phase</A>
+<LI><A HREF="manual-4.html#ss4.3">4.3 The Markup Phase</A>
+</UL>
+<P>
+<H2><A NAME="toc5">5.</A> <A HREF="manual-5.html">Index</A></H2>
+
+<P>
+<H2><A NAME="toc6">6.</A> <A HREF="manual-6.html">References</A></H2>
+
+<HR>
+<A HREF="manual-1.html">Next</A>
+Previous
+Contents
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/mappings.gif b/Build/source/utils/xindy/xindy-src/doc/mappings.gif
new file mode 100644
index 00000000000..be58722f4d9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/mappings.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/next.gif b/Build/source/utils/xindy/xindy-src/doc/next.gif
new file mode 100644
index 00000000000..7a2dbe955e0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/next.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/prev.gif b/Build/source/utils/xindy/xindy-src/doc/prev.gif
new file mode 100644
index 00000000000..aef90f1fc49
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/prev.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial-1.html b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-1.html
new file mode 100644
index 00000000000..890b1ecd8b9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-1.html
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY Style File Tutorial: About xindy</TITLE>
+ <LINK HREF="style-tutorial-2.html" REL=next>
+
+ <LINK HREF="style-tutorial.html#toc1" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="style-tutorial-2.html">Next</A>
+Previous
+<A HREF="style-tutorial.html#toc1">Contents</A>
+<HR>
+<H2><A NAME="s1">1. About <SF>xindy</SF></A></H2>
+
+<P><SF>xindy</SF> means fle<B>x</B>ible <B>ind</B>exing s<B>y</B>stem. It is an
+indexing system that can be used to generate book-like indexes for
+arbitrary document preparation systems. This term includes systems
+such as TeX [1] and LaTeX [2], the Nroff-family
+or SGML-based systems (e.g. HTML) that process some kind of text and
+generate indexing information. It is not fixed to any specific system,
+but can be configured for a wide variety of purposes.
+<P>Authors sometimes wish to include an index into their document, but
+very often their document preparation systems aren't able to produce
+indexes on their own, or the capabilities of the built-in indexers are
+insufficient and produce ugly looking results. More often they use
+separate specialized tools for this purpose, sometimes called
+<EM>index processors</EM>.
+<P>In comparison to other index processors <SF>xindy</SF> has several
+powerful features that make it an ideal framework for describing and
+generating complex indexes. Its most interesting features are
+<P>
+<DL>
+<P>
+<DT><B>Internationality</B><DD><P><SF>xindy</SF> can be configured to process indexes
+for many languages with different letter sets and different sorting
+rules. For example, many roman languages such as Italian, French,
+Portuguese or Spanish contain accentuated letters such as &Agrave;,
+&Aacute;, &ntilde;. Other languages from northern Europe have letters
+like &Auml;, &Oslash;, &aelig; or &szlig; which often can't even be
+processed by many index processors let alone sorting them correctly
+into an index. The <SF>xindy</SF> system can be configured to process
+these alphabets by defining <EM>sort</EM> and <EM>merge rules</EM> that allow
+expressing language specific rules. One example of such a rule would
+be
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule "ä" "ae")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>defining that a word containing the umlaut-a will be sorted as if it
+contained the letters <CODE>ae</CODE> instead. This is one form of how the
+umlaut-a ("ä") is sorted into german indexes. With an appropriate set
+of rules on can express the complete rules of a specific language.
+<P>
+<DT><B>User Definable Location Types</B><DD><P>Locations are the entities an
+index entry points to. Often used locations are <EM>page numbers</EM>,
+<EM>section numbers</EM>, etc. <SF>xindy</SF> allows to define new kinds of
+types to be composed of basic entities like arabic numbers, roman
+numerals, letters, etc. which can be used to describe new index types.
+Examples of these entities can be books that have a page numbering
+scheme that starts from 1 for each new chapter resulting in page
+numbers of the form <EM>1-13, 2-15, 2-20</EM>, etc. This type of locations
+can often be found in computer manuals. A more complex structure is
+represented by the locations <EM>Psalm 46, 1-8</EM> and <EM>Genesis 1,
+31</EM>. Even the structure of bible verses can be described allowing
+<SF>xindy</SF> to correctly sort and process indexes for documents with a
+completely different structure.
+<P>
+<DT><B>Highly Configurable Markup</B><DD><P>Since a index processor is only one
+component in a document preparation system it ought to fit smoothly
+into the complete environment. Many text processing systems use the
+concept of <EM>environments</EM> that can be used to describe the markup
+of the text entities. Our approach is based on this concept which has
+proved to be expressive enough for most applications. As an example
+one can view systems such as TeX, SGML and its instance HTML, GNU
+Info, RTF and the Nroff-familiy of document formatters. The markup of
+an index can be defined for all of these systems in a very comfortable
+though extremly powerful way.
+<P>
+</DL>
+<P>
+<P>
+<P>
+<HR>
+<A HREF="style-tutorial-2.html">Next</A>
+Previous
+<A HREF="style-tutorial.html#toc1">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial-2.html b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-2.html
new file mode 100644
index 00000000000..b5313e59d72
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-2.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY Style File Tutorial: A Basic Introduction</TITLE>
+ <LINK HREF="style-tutorial-3.html" REL=next>
+ <LINK HREF="style-tutorial-1.html" REL=previous>
+ <LINK HREF="style-tutorial.html#toc2" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="style-tutorial-3.html">Next</A>
+<A HREF="style-tutorial-1.html">Previous</A>
+<A HREF="style-tutorial.html#toc2">Contents</A>
+<HR>
+<H2><A NAME="s2">2. A Basic Introduction</A></H2>
+
+<P>This section incrementally introduces the most important aspects of
+the system. After reading this chapter you should be able to specify
+style files for
+about 80% of the commonly used indexes. The examples are demonstrated
+with a TeX markup so one can easily typeset the results <SF>xindy</SF>
+produces. You need LaTeX and the ISO-Latin enhancements that come
+with the <CODE>inputenc</CODE> package to run the following examples. Also the
+<SF>xindy</SF> system must already be installed.
+<P>
+But this tutorial doesn't reflect real life any more. The concepts are
+introduced below to explain them, but actual usage is probably
+different. In particular, you should not expect to specify sort rules
+by hand; usually one uses the language modules for that. Same way,
+xindy standard modules provide lots of markup functionality that you
+need for your documents, and can be used as a starting point.
+Nevertheless, let's continue with the explanation of <sf>xindy</sf>'s
+style file language.
+<P>
+<H2><A NAME="ss2.1">2.1 Running <SF>xindy</SF></A>
+</H2>
+
+<P>Create a new directory somewhere and copy some files from the
+distribution directory <CODE>doc/style-tutorial/</CODE> by typing
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+eg$ mkdir tutorial
+eg$ cd tutorial
+eg$ cp &lt;distrib-dir>/doc/style-tutorial/*.raw .
+eg$ cp &lt;distrib-dir>/doc/style-tutorial/*.tex .
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>with <CODE>distrib-dir</CODE> replaced by the actual location. Now create a
+file <CODE>style1.xdy</CODE> with the following content:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+;; This is a first example using `xindy'.
+
+(define-location-class "page-numbers" ("arabic-numbers"))
+(define-attributes (("definition" "usage")))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Now run <SF>xindy</SF> by typing
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+eg$ xindy -t ex1.xlg -M style1 -I xindy ex1.raw
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>You should see something like
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+Opening logfile "ex1.xlg" (done)
+Reading indexstyle...
+Loading module "style1.xdy"...
+Finished loading module "style1.xdy".
+Finished reading indexstyle.
+Finalizing indexstyle... (done)
+
+Reading raw-index "ex1.raw"...
+Finished reading raw-index.
+
+Processing index... [10%] [20%] [30%] [40%] [50%] [60%] [70%] [80%] [90%] [100%]
+Finished processing index.
+
+Writing markup... [10%] [20%] [30%] [40%] [50%] [60%] [70%] [80%] [90%] [100%]
+Markup written into file "ex1.ind".
+</PRE>
+</CODE></BLOCKQUOTE>
+<P><SF>xindy</SF> has now successfully compiled the index <CODE>ex1.raw</CODE> using
+your index style <CODE>style1.xdy</CODE>. The result is now stored in file
+<CODE>ex1.ind</CODE>. You can view this file but currently it only contains an
+unreadable mix of data.
+<P>But now let's come back to our index style. The syntax of the command
+is in a Lisp-like form with lots of braces, looking a little bit
+weird, but you'll soon get used to it. What is the meaning of the two
+commands we specified? The first command informed <SF>xindy</SF> that we
+like to process page numbers. We do this by defining a new
+<EM>location class</EM> named <CODE>page-numbers</CODE>. The page numbers consist
+of <CODE>arabic-numbers</CODE> as we might expect but this is not necessarily
+true---imagine your page numbers consisted of roman numerals instead.
+When reading the <EM>raw index</EM> contained in file <CODE>ex1.raw</CODE>
+<SF>xindy</SF> checks all locations if they match all known location
+classes. Since in our example the only known location class is the
+class of page numbers which are written using arabic digits, all
+locations will be checked if they are correct page numbers.
+<P>The second command tells <SF>xindy</SF> that we use two types of
+attributes for location references. Most often the locations in an
+index denote different meanings. For example, in mathematical texts
+one will distinguish the <EM>definition</EM> of a mathematical term from
+its <EM>usage</EM>. Sometimes these are typeset using different font
+shapes such as <EM>italic</EM> or font series such as <B>boldface</B>. Each
+location has an associated attribute which, if it is unspecified,
+defaults to the attribute <CODE>default</CODE>. With this command you have
+made these attributes known to the system, which makes it possible to
+assign different markup to these attributes later on.
+<P>
+<P>
+<H2><A NAME="ss2.2">2.2 Adding some Markup</A>
+</H2>
+
+<P>Until now you haven't seen something exciting, so its time to specify
+some markup. Add the following lines to our index style:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-index :open "~n\begin{theindex}~n"
+ :close "~n\end{theindex}~n"
+ :tree)
+
+(markup-locref :class "page-numbers" :attr "definition"
+ :open "{\bf " :close "}")
+
+(markup-locclass-list :open "\quad{}")
+(markup-locref-list :sep ", ")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Now run <SF>xindy</SF> again and afterwards LaTeX:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+eg$ xindy -t ex1.xlg -M style1 -I xindy ex1.raw
+eg$ latex ex1.tex
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>You can view <CODE>ex1.dvi</CODE> with your prefered viewer (maybe <CODE>xdvi</CODE>
+or something else) to get a first impression of your results. Maybe
+your are not satisfied (for sure you aren't), because it still looks
+very confusing. What did the above rules tell <SF>xindy</SF>? When you
+view the file <CODE>ex1.ind</CODE> which is the result <SF>xindy</SF> generates,
+you'll recognize some of the <EM>markup tags</EM> you specified. The
+following is an excerpt of this file:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\begin{theindex}
+ academia\quad{}{\bf 1}acafetado\quad{}{\bf 2}acalmar\quad{}{\bf 4}
+ açafrão\quad{}{\bf 3}indexflat\quad{}1hierarchical\quad{}2
+ veryhierarchical\quad{}3impressive\quad{}4saber\quad{}{\bf 7}
+ sabor\quad{}{\bf 8}sabão\quad{}{\bf 6}sábado\quad{}{\bf 5}
+\end{theindex}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>First of all you'll see that the file starts with the string
+<CODE>\begin{theindex}</CODE> and ends with <CODE>\end{theindex}</CODE>.
+Additionally some locations are correctly enclosed into a TeX macro
+that typesets them in shape boldface, whereas others aren't. The
+boldface ones are all those locations from the raw index that have the
+attribute <CODE>definition</CODE>.
+<P>The <CODE>:open</CODE> and <CODE>:close</CODE> keyword arguments each take a string as
+argument. The first one is written to the file when <EM>opening</EM> an
+enviroment, whereas the latter one <EM>closes</EM> an environment. What we
+have specified is the markup for the whole index (which is actually
+printed only once) and the markup for all locations of class
+<CODE>page-numbers</CODE> which own the attribute <CODE>definition</CODE>. Here we
+have cleanly separated the structured markup from the visual one,
+allowing an easy redefinition if we decide, for example, to markup the
+<CODE>definition</CODE>-locations in italics instead of boldface.
+<P>Some words on <EM>keyword arguments</EM> and <EM>switches</EM>. Keyword
+arguments such as <CODE>:open</CODE> or <CODE>:close</CODE> always take exactly one
+argument which must be positioned right after the keyword separated by
+a whitespace (a blank or a tab-stop). Switches don't take any
+arguments. For example, <CODE>:tree</CODE> in the command <CODE>markup-index</CODE> is
+a switch and thus it does not take an argument. We will use this
+terminology throughout the rest of this document.
+<P>The third command caused <SF>xindy</SF> to insert a horizontal space
+between the keyword and the locations (the TeX command
+<CODE>\quad{}</CODE> simply inserts a specific horizontal space). The last
+command caused <SF>xindy</SF> to separate all location references from
+each other with a comma followed by a blank, independently of any
+location class.
+<P>As you already may have observed, the tilde sign (<CODE>~</CODE>) serves
+as a <EM>quoting character</EM>.
+<P>We continue specifying markup to get a printable result by adding more
+markup:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This assigns different markup for the different hierarchy layers of
+the indexentries. Our index is hierarchically organized. It contains
+items which themselves contain more sub-items which also might contain
+sub-sub-items. Each layer is started by a different markup which is
+correctly assigned with the <CODE>:depth</CODE> keyword argument. The layers
+are numbered by their <EM>depth</EM> starting from zero.
+<P>Now run <SF>xindy</SF> and TeX again and enjoy your first index. It's
+easy, isn't it! The output <CODE>ex1.ind</CODE> looks like the following:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+\begin{theindex}
+
+ \item academia\quad{}{\bf 1}
+ \item acafetado\quad{}{\bf 2}
+ \item acalmar\quad{}{\bf 4}
+ \item açafrão\quad{}{\bf 3}
+ \item index
+ \subitem flat\quad{}1
+ \subitem hierarchical\quad{}2
+ \subitem very
+ \subsubitem hierarchical\quad{}3
+ \subsubitem impressive\quad{}4
+ \item saber\quad{}{\bf 7}
+ \item sabor\quad{}{\bf 8}
+ \item sabão\quad{}{\bf 6}
+ \item sábado\quad{}{\bf 5}
+
+\end{theindex}
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>Hmm, as you might have seen there are several problems that need
+further investigation. The index contains some Portuguese words that
+are printed correctly but should appear at other positions inside the
+index. For instance, the word <EM>sábado</EM> should appear before the
+word <EM>saber</EM> since <EM>á</EM> must be sorted as if it were simply an
+<EM>a</EM>. The reason why these words are not sorted correctly is
+simple---the accentuated letters have codes beyond position 128 in the
+ISO-Latin alphabet. Sorting based on these codes yields this incorrect
+order.
+<P>What to do? We can define for each of the words containing these
+special characters an explicit <EM>print key</EM>. The print key describes
+the printed representation of the keyword whereas the <EM>key</EM> or
+<EM>main key</EM> is used for sorting and merging. A very tedious task
+which is not a very clever solution since in a non-english language
+many many words contain these special cases. We follow the way
+<SF>xindy</SF> offers: <EM>keyword-mappings</EM>.
+<P>
+<H2><A NAME="ss2.3">2.3 Keyword Mappings</A>
+</H2>
+
+<P>What are keyword mappings for? A good question. I'll try to give some
+answers.
+<P>
+<UL>
+<LI> <EM>Merging of differently written words</EM>. Some text formatting
+systems allow different writings for the same word. For example, TeX
+can be used with ISO-Latin characters as well as with its own
+character sequences. If a document is composed from smaller ones
+possibly written by different authors using different forms of writing
+the index entries, the same terms may happen to be written differently
+and consequently we need a mechanism to identify them as equal.
+</LI>
+<LI> <EM>Specifying the sort order</EM>. As outlined in the previous
+section it is really difficult and error-prone to specify the sort key
+for each keyword explicitly. Sometimes the sort order is even
+different for the type of the document, as it happens in German, where
+two different types of sortings exist, one for everyday indexes and
+one for dictionaries. The sort order actually defines the position of
+arbitrary language-specific letters inside of an index.
+</LI>
+</UL>
+<P>A detailed elaboration of these ideas can be found in the paper <EM>An
+International Version of MakeIndex</EM> by Joachim Schrod [3].
+It describes the ideas that led to modifications on one of the
+ancestors of the <SF>xindy</SF> system: <CODE>makeindex</CODE> [4].
+<P>The keyword mappings are as follows. The <EM>merge key</EM> is generated
+from the <EM>main key</EM> with the so called <EM>merge mapping</EM>. The
+merge mapping can be specified with the command <CODE>merge-rule</CODE>. The
+<EM>sort key</EM> is derived from the merge key using the <EM>sort
+mapping</EM> specified with the <CODE>sort-rule</CODE> command. The following
+scheme shows this mapping process:
+<P>
+<FIGURE>
+<EPS FILE="mappings.eps">
+<IMG SRC="mappings.gif">
+</FIGURE>
+<P>
+<P>We will use this command now to define a suitable sort mapping that
+fits our needs:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(sort-rule "à" "a")
+(sort-rule "á" "a")
+(sort-rule "ã" "a")
+(sort-rule "è" "e")
+(sort-rule "é" "e")
+(sort-rule "ç" "c")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>These rules define mappings from a keyword to a <EM>normalized</EM>
+version. In the logfile <CODE>ex1.xlg</CODE> these transformations are logged so
+that one can see how these mappings are performed. In this example we
+do not need any <CODE>merge-rule</CODE> but we will see applications in
+further examples.
+<P>Running <SF>xindy</SF> and TeXing the result now places the indexentries
+at the right positions.
+<P>In reality, such sort rules tend to be much more complex, due to
+the idiosynchrasies of sorting natural languages. Sort rules for
+many languages are available as part of the xindy distribution, as
+so-called language modules. We specify the language with the option
+<code>-L</code>, e.g., in our example we could have used
+<BLOCKQUOTE><CODE>
+<PRE>
+eg$ xindy -t ex1.xlg -M style1 -L portuguese -I xindy ex1.raw
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>If we use one of the available language modules, sort rules in
+user-written xindy styles are ignored.
+<P>The result is now quite satisfying if the index entries weren't
+clumped together that much. We usually want the different index
+entries beginning with the same letter be optically separated from the
+ofhers. This improves readability and there must be a way to
+accomplish this---the <EM>letter groups</EM>.
+<P>
+<H2><A NAME="ss2.4">2.4 Letter Groups</A>
+</H2>
+
+<P>To group indexentries we must define what indexentries form a group.
+The clustering is done by matching the keywords' prefixes (taken from
+the <EM>sort key</EM>) with a user-defined table of prefixes and define
+appropriate markup that separates the groups from each other. Here it
+goes.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-letter-groups
+ ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+ "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+(markup-letter-group-list :sep "~n\indexspace")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This defines the given list of letter groups. When forming the letter
+groups, each letter group is checked if it matches a prefix of the
+indexentries' sort key. The longest match assigns the index entry to
+this letter group. If no match was possible the index entry is put into
+group <CODE>default</CODE>.
+<P>The result now looks much better than before. You have now learned the
+basic features that you need to specify everyday indexes. In the next
+chapter we'll continue to make you an expert in indexing.
+<P>
+<P>
+<HR>
+<A HREF="style-tutorial-3.html">Next</A>
+<A HREF="style-tutorial-1.html">Previous</A>
+<A HREF="style-tutorial.html#toc2">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial-3.html b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-3.html
new file mode 100644
index 00000000000..5c598e54938
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-3.html
@@ -0,0 +1,263 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY Style File Tutorial: Advanced Features</TITLE>
+ <LINK HREF="style-tutorial-4.html" REL=next>
+ <LINK HREF="style-tutorial-2.html" REL=previous>
+ <LINK HREF="style-tutorial.html#toc3" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="style-tutorial-4.html">Next</A>
+<A HREF="style-tutorial-2.html">Previous</A>
+<A HREF="style-tutorial.html#toc3">Contents</A>
+<HR>
+<H2><A NAME="s3">3. Advanced Features</A></H2>
+
+<P>In the following sections you'll learn more about the features of
+<SF>xindy</SF>. We'll show you how you can define your own
+location classes, specify the letter groups in more detail and bring
+you close to more specfic markup features. After reading this chapter
+you should be able to master about 95% of the commonly used indexes.
+<P>
+<P>
+<H2><A NAME="ss3.1">3.1 Location Classes</A>
+</H2>
+
+<P>We continue using a more complex index. Copy the current style to a
+new file (now <CODE>style2.xdy</CODE>) and run <SF>xindy</SF> on the raw index
+<CODE>ex2.raw</CODE> by typing:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+eg$ cp style1.xdy style2.xdy
+eg$ xindy -t ex2.xlg -M style2 -I xindy ex2.raw
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>You should see some error messages indicating that something is
+unknown to <SF>xindy</SF>. What has happend? The messages should be
+similar to the following snapshot:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ ...
+WARNING:
+location-reference "B-5" did not match any location-class! (ignored)
+WARNING:
+location-reference "C-8" did not match any location-class! (ignored)
+WARNING:
+location-reference "iv" did not match any location-class! (ignored)
+WARNING:
+location-reference "ii" did not match any location-class! (ignored)
+ ...
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The index contains new, and therefore unknown, location classes. The
+first one has an appendix-like style, whereas the second one seems to
+be lowercase roman numerals. <SF>xindy</SF> reported, that it doesn't know
+these locations and therefore knows nothing about their internal
+structure. We make them known to the system by adding the following
+commands to the style file.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class "roman-pages" ("roman-numerals-lowercase"))
+(define-location-class "appendices" ("ALPHA" :sep "-" "arabic-numbers"))
+(define-location-class-order ("roman-pages" "appendices"))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The first command tells <SF>xindy</SF> that there exist some page numbers
+that are written with roman lowercase letters. The second one defines
+the structure of the appendix locations. They consist of three
+elements, a capital letter, a separator---which is a hyphen in our
+case---and finally an arabic number. To be able to correctly
+distinguish separator strings from the names of the known
+<EM>basetypes</EM>, the argument <CODE>:sep</CODE> indicates, that the following
+is a separator. The last command simply says that the locations which
+are roman numerals shall appear before the appendix locations. So far
+we know three different basetypes. The built-in basetypes of
+<SF>xindy</SF> are:
+<P>
+<DL>
+<DT><B><CODE>arabic-numbers</CODE></B><DD><P>contains all non-negative numbers beginning
+with zero: 0, 1, 2, ....
+<P>
+<DT><B><CODE>roman-numerals-uppercase</CODE>, <CODE>roman-numerals-lowercase</CODE></B><DD><P>the
+roman numerals I, II, III, (IIII/IV), V, ... It contains the old and
+new roman numeral system. Two versions for uppercase and lowercase
+letters are supported.
+<P>
+<DT><B><CODE>ALPHA</CODE>, <CODE>alpha</CODE></B><DD><P>The US-ASCII alphabet letters (uppercase
+and lowercase letters).
+<P>
+<DT><B><CODE>digits</CODE></B><DD><P>the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9 in this
+order.
+</DL>
+<P>`Fine,', you'll say, `but what if my basetypes are completely
+different?' You're right! But <SF>xindy</SF> offers you to define your own
+alphabets. For example, you can define a new alphabet by writing
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-alphabet "my-personal-alphabet" ("Hi" "ho" "here" "I" "go"))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This is a valid alphabet that consists of 5 <EM>letters</EM>. You can now
+define a location class
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class "my-personal-class"
+ ("my-personal-alphabet" :sep "-" "arabic-numbers"))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>to match all of the following locations: <EM>Hi-12, ho-2, here-709,
+I-9, go-42</EM>. <SF>xindy</SF> will recognize them and be able to sort them
+according to your specification which says that <EM>Hi</EM> comes before
+all others and <EM>here</EM> is exactly at the third position. So they
+will be sorted lexicographically, layer by layer, until it can decide
+which one is before or after the other. We have prepared a concrete
+example. Do you remember the example we gave when we spoke about
+indexing bible verses? This exactly matches the situation of such a
+self-defined alphabet which could look like the following definitions:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-alphabet "bible-chapters"
+ ("Genesis" "Exodus" "Leviticus" "Numbers" "Deuteronomy"
+ ... ))
+(define-location-class "bible-verses"
+ ("bible-chapters" :sep " " "arabic-numbers" :sep "," "arabic-numbers"))
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This description would match locations like <EM>Genesis 1,3</EM>,
+<EM>Exodus 7,8</EM>, etc.
+<P>Now run LaTeX on <CODE>ex2.tex</CODE> and view the results. It looks a
+little bit strange since <SF>xindy</SF> has automatically built ranges of
+successive locations. The first locations of the index entry <EM>roman</EM>
+actually denote the range <EM>ii</EM> until <EM>iv</EM>. <EM>Ranges</EM> consist
+of location references. To typeset them correctly you can specify
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(markup-range :sep "--")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>This indicates that location reference forming a range shall be
+separated by a hyphen. Running <SF>xindy</SF> and LaTeX again gives a
+better idea of how it should look like. Here is a part of the
+generated output.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ ...
+ \item appendices\quad{}A-1, A-7, A-11, B-3--B-5, C-1, C-8, C-12,
+ C-13, C-22, D-2, D-3, D-5, D-10
+ ...
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>
+<H2><A NAME="ss3.2">3.2 Hierarchical Location Classes</A>
+</H2>
+
+<P>Somehow a lot of space is wasted when looking at the first index entry.
+Modify the definition of the location class for appendices as follows
+and add the other commands as well:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-location-class "appendices"
+ ("ALPHA" :sep "-" "arabic-numbers")
+ :hierdepth 2)
+(markup-locref-list :sep "; " :depth 0 :class "appendices")
+(markup-locref-list :open "~~" :sep ", " :depth 1 :class "appendices")
+</PRE>
+</CODE></BLOCKQUOTE>
+<P><EM>Note: Since the tilde character serves as our quoting character it
+must be quoted itself in the above example.</EM> Run <SF>xindy</SF> and view
+the output stored in <CODE>ex2.ind</CODE>. The output looks similar to the
+following:
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ ...
+ \item appendices\quad{}A~1, 7, 11; B~3--5; C~1, 8, 12, 13, 22;
+ D~2, 3, 5, 10
+ ...
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>You can see that the location references of this class have been
+transformed into a hierarchical structure caused by the
+<CODE>:hierdepth</CODE> argument. Additionally we have specified markup for
+the layers of this class separately for the depths 0 and 1. The
+locations at depth 0 are separated by a `;' whereas the ones at depth
+1 are separated by a `,'.
+<P>Maybe you get an impression why we named <SF>xindy</SF> a <EM>flexible</EM>
+system.
+<P>
+<H2><A NAME="ss3.3">3.3 More about Letter Groups</A>
+</H2>
+
+<P>More problems arise when using languages with different letter
+schemes. Hungarian is an example. In Hungarian indexes the words
+beginning with the letters <EM>Cs, Ly, Ny</EM> and more are printed in a
+separate block. The words beginning with <EM>Ly</EM>, for example, appear
+behind the words beginning with an <EM>L</EM>. <SF>xindy</SF> allows to define
+this kind of letter groups as well. Add the following lines to the
+style file.
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+(define-letter-group "ly" :after "l" :before "m")
+(define-letter-group "ny" :after "n" :before "o")
+
+(markup-letter-group :open-head "~n {\bf " :close-head "}"
+ :capitalize)
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The result looks like the following:
+<P>
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+ ...
+ {\bf Ly}
+ \item lyuk\quad{}1
+ \item lyukas\quad{}2
+
+ \indexspace
+
+ {\bf M}
+ \item maga\quad{}1
+ \item magyar\quad{}2
+
+ \indexspace
+
+ {\bf N}
+ \item nagy\quad{}1
+ \item nagyon\quad{}9
+ \item nègy\quad{}4
+
+ \indexspace
+
+ {\bf Ny}
+ \item nyelv\quad{}1
+ \item nyolc\quad{}8
+ ...
+</PRE>
+</CODE></BLOCKQUOTE>
+<P>The result describes what the purpose of the above commands is. It
+becomes prettier from step to step, doesn't it?
+<P>You have now learned most of the features of <SF>xindy</SF>. Go playing
+around a little bit. For a detailed description of all commands and
+all their arguments and switches you should reference the manual that
+comes with this distribution.
+<P>
+<P>
+<P>
+<HR>
+<A HREF="style-tutorial-4.html">Next</A>
+<A HREF="style-tutorial-2.html">Previous</A>
+<A HREF="style-tutorial.html#toc3">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial-4.html b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-4.html
new file mode 100644
index 00000000000..f3ef19aa4c8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial-4.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY Style File Tutorial: References</TITLE>
+ <LINK HREF="style-tutorial-3.html" REL=previous>
+ <LINK HREF="style-tutorial.html#toc4" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="style-tutorial-3.html">Previous</A>
+<A HREF="style-tutorial.html#toc4">Contents</A>
+<HR>
+<H2><A NAME="s4">4. References</A></H2>
+
+<P>
+<P>The following books and papers were referenced in this document.
+<P>
+<OL>
+<LI> D. E. Knuth, <EM>The TeXbook</EM>, Addison-Wesley, 1984
+</LI>
+<LI> Leslie Lamport, LaTeX <EM>A Document Preparation System</EM>,
+Addison-Wesley, 1986
+</LI>
+<LI> Joachim Schrod, <EM>An International Version of MakeIndex</EM>,
+Cahiers GUTenberg, 10, p81-90, 1991
+</LI>
+<LI> Pehong Chen and Michael A. Harrison, <EM>Automating Index
+Preparation</EM>, TR-87/347, University of California Berkeley, 1987
+<A NAME="makeindex"></A>
+</LI>
+<LI> Roger Kehr, <SF>xindy</SF>, <EM>Ein Flexibles Indexierungssystem</EM>,
+Studienarbeit FB Informatik, TH-Darmstadt, November 1995.</LI>
+</OL>
+<P>
+<HR>
+Next
+<A HREF="style-tutorial-3.html">Previous</A>
+<A HREF="style-tutorial.html#toc4">Contents</A>
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial.html b/Build/source/utils/xindy/xindy-src/doc/style-tutorial.html
new file mode 100644
index 00000000000..6c815ca30d6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>XINDY Style File Tutorial</TITLE>
+ <LINK HREF="style-tutorial-1.html" REL=next>
+
+
+</HEAD>
+<BODY>
+<A HREF="style-tutorial-1.html">Next</A>
+Previous
+Contents
+<HR>
+<H1>XINDY Style File Tutorial</H1>
+
+<H2><SF>A Flexible Indexing System</SF></H2>
+<H2>Roger Kehr</H2>
+<H3>Computer Science Department, Technical University of Darmstadt</H3>
+ and
+<H2>Joachim Schrod</H2>
+<H3>Joachim Schrod Net &amp; Publication Consultance GmbH</H3>
+Tutorial, Edition March 1997 for xindy version 1.1
+<P><HR>
+<EM> This is a tutorial on writing style files for
+the <SF>xindy</SF> indexing system
+[5]. <SF>xindy</SF> is a general purpose index processor that
+can be configured for a variety of document preparation systems. We
+will demonstrate step by step the incremental specification of a
+complete index style. The examples are based on indexes that are
+delivered with the system so one can get acquainted with it
+practically.
+<p>
+<B>Caution:</B> This tutorial does not describe the complete style file
+language. In particular, description of rule sets, the multi-run
+approach, and standard modules are missing.</EM>
+<HR>
+<P>
+<H2><A NAME="toc1">1.</A> <A HREF="style-tutorial-1.html">About <SF>xindy</SF></A></H2>
+
+<P>
+<H2><A NAME="toc2">2.</A> <A HREF="style-tutorial-2.html">A Basic Introduction</A></H2>
+
+<UL>
+<LI><A HREF="style-tutorial-2.html#ss2.1">2.1 Running <SF>xindy</SF></A>
+<LI><A HREF="style-tutorial-2.html#ss2.2">2.2 Adding some Markup</A>
+<LI><A HREF="style-tutorial-2.html#ss2.3">2.3 Keyword Mappings</A>
+<LI><A HREF="style-tutorial-2.html#ss2.4">2.4 Letter Groups</A>
+</UL>
+<P>
+<H2><A NAME="toc3">3.</A> <A HREF="style-tutorial-3.html">Advanced Features</A></H2>
+
+<UL>
+<LI><A HREF="style-tutorial-3.html#ss3.1">3.1 Location Classes</A>
+<LI><A HREF="style-tutorial-3.html#ss3.2">3.2 Hierarchical Location Classes</A>
+<LI><A HREF="style-tutorial-3.html#ss3.3">3.3 More about Letter Groups</A>
+</UL>
+<P>
+<H2><A NAME="toc4">4.</A> <A HREF="style-tutorial-4.html">References</A></H2>
+
+<HR>
+<A HREF="style-tutorial-1.html">Next</A>
+Previous
+Contents
+</BODY>
+</HTML>
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/Makefile.am b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/Makefile.am
new file mode 100644
index 00000000000..9e7d0e7102c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/Makefile.am
@@ -0,0 +1,30 @@
+## Makefile.am fragment for doc/style-tutorial/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+tutorialdir = $(docdir)/style-tutorial
+
+nobase_doc_DATA += \
+ style-tutorial/ex1.raw \
+ style-tutorial/ex1.tex \
+ style-tutorial/ex2.raw \
+ style-tutorial/ex2.tex \
+ style-tutorial/index.tex \
+ style-tutorial/style1.xdy \
+ style-tutorial/style2.xdy
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.raw b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.raw
new file mode 100644
index 00000000000..1f4585950a9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.raw
@@ -0,0 +1,20 @@
+;; Example raw-index file.
+
+(indexentry :key ("sábado") :locref "5" :attr "definition")
+(indexentry :key ("sabão") :locref "6" :attr "definition")
+(indexentry :key ("saber") :locref "7" :attr "definition")
+(indexentry :key ("sabor") :locref "8" :attr "definition")
+
+(indexentry :key ("academia") :locref "1" :attr "definition")
+(indexentry :key ("acafetado") :locref "2" :attr "definition")
+(indexentry :key ("açafrão") :locref "3" :attr "definition")
+(indexentry :key ("acalmar") :locref "4" :attr "definition")
+
+(indexentry :key ("index" "flat") :locref "1" :attr "usage")
+(indexentry :key ("index" "hierarchical") :locref "2" :attr "usage")
+(indexentry :key ("index" "very" "hierarchical") :locref "3" :attr "usage")
+(indexentry :key ("index" "very" "impressive") :locref "4" :attr "usage")
+
+;(indexentry :key ("arts" "classic") :locref "10" :attr "usage")
+;(indexentry :key ("arts" "contemporary") :locref "11" :attr "usage")
+;(indexentry :key ("arts" "modern") :locref "12" :attr "usage")
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.tex b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.tex
new file mode 100644
index 00000000000..839c0b9834c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex1.tex
@@ -0,0 +1,16 @@
+%%
+%% An sample file for typesetting an index.
+%%
+
+\documentclass[12pt]{article}
+
+\usepackage[latin1]{inputenc}
+\usepackage{makeidx}
+
+\makeindex
+
+\begin{document}
+
+\printindex
+
+\end{document}
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.raw b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.raw
new file mode 100644
index 00000000000..88b767aa60f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.raw
@@ -0,0 +1,35 @@
+;; Example raw-index file.
+
+(indexentry :key ("appendices") :locref "A-1" :attr "usage")
+(indexentry :key ("appendices") :locref "A-7" :attr "usage")
+(indexentry :key ("appendices") :locref "A-11" :attr "usage")
+(indexentry :key ("appendices") :locref "B-3" :attr "usage")
+(indexentry :key ("appendices") :locref "B-4" :attr "usage")
+(indexentry :key ("appendices") :locref "B-5" :attr "usage")
+(indexentry :key ("appendices") :locref "C-8" :attr "usage")
+(indexentry :key ("appendices") :locref "C-12" :attr "usage")
+(indexentry :key ("appendices") :locref "C-13" :attr "usage")
+(indexentry :key ("appendices") :locref "C-22" :attr "usage")
+(indexentry :key ("appendices") :locref "C-1" :attr "usage")
+(indexentry :key ("appendices") :locref "D-2" :attr "usage")
+(indexentry :key ("appendices") :locref "D-3" :attr "usage")
+(indexentry :key ("appendices") :locref "D-5" :attr "usage")
+(indexentry :key ("appendices") :locref "D-10" :attr "usage")
+
+(indexentry :key ("roman") :locref "iv" :attr "usage")
+(indexentry :key ("roman") :locref "ii" :attr "usage")
+(indexentry :key ("roman") :locref "iii" :attr "usage")
+(indexentry :key ("roman") :locref "ix" :attr "usage")
+(indexentry :key ("roman") :locref "x" :attr "usage")
+(indexentry :key ("roman") :locref "mcmxcvi" :attr "usage")
+
+(indexentry :key ("lyuk") :locref "1" :attr "usage")
+(indexentry :key ("lyukas") :locref "2" :attr "usage")
+(indexentry :key ("maga") :locref "1" :attr "usage")
+(indexentry :key ("magyar") :locref "2" :attr "usage")
+(indexentry :key ("nagy") :locref "1" :attr "usage")
+(indexentry :key ("nagyon") :locref "9" :attr "usage")
+(indexentry :key ("negy") :locref "4" :attr "usage")
+(indexentry :key ("nyolc") :locref "8" :attr "usage")
+(indexentry :key ("nyelv") :locref "1" :attr "usage")
+
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.tex b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.tex
new file mode 100644
index 00000000000..839c0b9834c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/ex2.tex
@@ -0,0 +1,16 @@
+%%
+%% An sample file for typesetting an index.
+%%
+
+\documentclass[12pt]{article}
+
+\usepackage[latin1]{inputenc}
+\usepackage{makeidx}
+
+\makeindex
+
+\begin{document}
+
+\printindex
+
+\end{document}
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/index.tex b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/index.tex
new file mode 100644
index 00000000000..839c0b9834c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/index.tex
@@ -0,0 +1,16 @@
+%%
+%% An sample file for typesetting an index.
+%%
+
+\documentclass[12pt]{article}
+
+\usepackage[latin1]{inputenc}
+\usepackage{makeidx}
+
+\makeindex
+
+\begin{document}
+
+\printindex
+
+\end{document}
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style1.xdy b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style1.xdy
new file mode 100644
index 00000000000..ee809f9aae8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style1.xdy
@@ -0,0 +1,55 @@
+;; This is a first example using `xindy'.
+
+(mapc #'(lambda (x)
+ (pushnew x *features*))
+ '(:STEP1 :STEP2 :STEP3 :STEP4 :STEP5))
+
+#+:STEP1
+(progn
+ (define-location-class "page-numbers" ("arabic-numbers"))
+ (define-attributes (("definition" "usage")))
+ )
+
+
+#+:STEP2
+(progn
+ (markup-index :open "~n\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+ (markup-locref :class "page-numbers" :attr "definition"
+ :open "{\bf " :close "}")
+
+ (markup-locref-list :sep ", ")
+ (markup-locclass-list :open "\quad{}")
+ )
+
+#+:STEP3
+(progn
+ (markup-indexentry :open "~n \item " :depth 0)
+ (markup-indexentry :open "~n \subitem " :depth 1)
+ (markup-indexentry :open "~n \subsubitem " :depth 2)
+
+ (markup-range :class "page-numbers" :sep "--")
+ )
+
+#+:STEP4
+(progn
+ (sort-rule "à" "a")
+ (sort-rule "á" "a")
+ (sort-rule "ã" "a")
+ (sort-rule "è" "e")
+ (sort-rule "é" "e")
+ (sort-rule "ç" "c")
+
+ (sort-rule "\\texttt{\(.*\)}" "\1" :again :bregexp)
+ )
+
+#+:STEP5
+(progn
+ (define-letter-groups
+ ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+ "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+ (markup-letter-group-list :sep "~n~n \indexspace~n")
+ )
diff --git a/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style2.xdy b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style2.xdy
new file mode 100644
index 00000000000..e45e2f24482
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/style-tutorial/style2.xdy
@@ -0,0 +1,80 @@
+;; This is another example using `xindy'.
+
+(mapc #'(lambda (x)
+ (pushnew x *features*))
+ '(:STEP1 :STEP2 :STEP3 :STEP4 :STEP5 :STEP6 :STEP7 :STEP8 :STEP9 :STEP10))
+
+#+:STEP1
+(progn
+ (define-location-class "page-numbers" ("arabic-numbers"))
+ (define-attributes (("definition" "usage")))
+ )
+
+
+#+:STEP2
+(progn
+ (markup-index :open "~n\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+ (markup-locref :class "page-numbers" :attr "definition"
+ :open "{\bf " :close "}")
+
+ (markup-locref-list :sep ", ")
+ (markup-locclass-list :open "\quad{}")
+ )
+
+#+:STEP3
+(progn
+ (markup-indexentry :open "~n \item " :depth 0)
+ (markup-indexentry :open "~n \subitem " :depth 1)
+ (markup-indexentry :open "~n \subsubitem " :depth 2)
+ )
+
+#+:STEP4
+(progn
+ (sort-rule "à" "a")
+ (sort-rule "á" "a")
+ (sort-rule "ã" "a")
+ (sort-rule "è" "e")
+ (sort-rule "é" "e")
+ (sort-rule "ç" "c")
+
+ (sort-rule "\\texttt{(.*)}" "\1" :again :bregexp)
+ )
+
+#+:STEP5
+(progn
+ (define-letter-groups
+ ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+ "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+ (markup-letter-group-list :sep "~n~n \indexspace~n")
+ )
+
+#+:STEP6
+(progn
+ (define-location-class "roman-pages" ("roman-numbers-lowercase"))
+ #-:STEP8
+ (define-location-class "appendices" ("ALPHA" :sep "-" "arabic-numbers"))
+ )
+
+#+:STEP7
+(markup-range :sep "--")
+
+#+:STEP8
+(progn
+ (define-location-class "appendices" ("ALPHA" :sep "-" "arabic-numbers")
+ :hierdepth 2)
+ (markup-locref-list :sep "; " :depth 0 :class "appendices")
+ (markup-locref-list :open "~~" :sep ", " :depth 1 :class "appendices")
+ )
+
+#+:STEP9
+(progn
+ (define-letter-group "ly" :after "l" :before "m")
+ (define-letter-group "ny" :after "n" :before "o")
+
+ (markup-letter-group :open-head "~n {\bf " :close-head "}"
+ :capitalize)
+ )
diff --git a/Build/source/utils/xindy/xindy-src/doc/tex2xindy.pdf b/Build/source/utils/xindy/xindy-src/doc/tex2xindy.pdf
new file mode 100644
index 00000000000..e295e5e27dc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/tex2xindy.pdf
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/texindy.pdf b/Build/source/utils/xindy/xindy-src/doc/texindy.pdf
new file mode 100644
index 00000000000..b1966300d81
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/texindy.pdf
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/toc.gif b/Build/source/utils/xindy/xindy-src/doc/toc.gif
new file mode 100644
index 00000000000..3d1aebf3274
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/toc.gif
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/doc/xindy.pdf b/Build/source/utils/xindy/xindy-src/doc/xindy.pdf
new file mode 100644
index 00000000000..dbf00ad76e4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/doc/xindy.pdf
Binary files differ
diff --git a/Build/source/utils/xindy/xindy-src/m4/ac_prog_latex.m4 b/Build/source/utils/xindy/xindy-src/m4/ac_prog_latex.m4
new file mode 100644
index 00000000000..cb757191b7d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/m4/ac_prog_latex.m4
@@ -0,0 +1,22 @@
+dnl @synopsis AC_PROG_LATEX
+dnl
+dnl This macro test if latex is installed. If latex is installed,
+dnl set $LATEX to the right value
+dnl
+dnl @category LaTeX
+dnl @author Mathieu Boretti <boretti@bss-network.com>
+dnl @version 2005-01-21
+dnl @license GPLWithACException
+dnl
+dnl Modified 2014-05-30 by Peter Breitenlohner <tex-live@tug.org>
+
+AC_DEFUN([AC_PROG_LATEX], [dnl
+AC_ARG_VAR([LATEX], [LaTeX command])
+AC_CHECK_PROGS([LATEX], [latex elatex lambda], [no])
+if test "x$LATEX" = xno
+then
+ AC_MSG_ERROR([Unable to find a LaTeX application])
+fi
+export LATEX
+AC_SUBST([LATEX])
+])
diff --git a/Build/source/utils/xindy/xindy-src/m4/ac_prog_pdflatex.m4 b/Build/source/utils/xindy/xindy-src/m4/ac_prog_pdflatex.m4
new file mode 100644
index 00000000000..7f47892f1b7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/m4/ac_prog_pdflatex.m4
@@ -0,0 +1,22 @@
+dnl @synopsis AC_PROG_PDFLATEX
+dnl
+dnl This macro test if pdflatex is installed. If pdflatex is installed,
+dnl set $PDFLATEX to the right value
+dnl
+dnl @category LaTeX
+dnl @author Mathieu Boretti <boretti@bss-network.com>
+dnl @version 2005-01-21
+dnl @license GPLWithACException
+dnl
+dnl Modified 2014-05-30 by Peter Breitenlohner <tex-live@tug.org>
+
+AC_DEFUN([AC_PROG_PDFLATEX], [dnl
+AC_ARG_VAR([PDFLATEX], [pdfLaTeX command])
+AC_CHECK_PROGS([PDFLATEX], [pdflatex], [no])
+if test "x$PDFLATEX" = xno
+then
+ AC_MSG_ERROR([Unable to find a PDFLaTeX application])
+fi
+export PDFLATEX
+AC_SUBST([PDFLATEX])
+])
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/Makefile.am
new file mode 100644
index 00000000000..eacf2046ce3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/Makefile.am
@@ -0,0 +1,23 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+SUBDIRS = alphabets inputenc
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/Makefile.in b/Build/source/utils/xindy/xindy-src/make-rules/Makefile.in
new file mode 100644
index 00000000000..12748d48209
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/Makefile.in
@@ -0,0 +1,603 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/make-rules
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = alphabets inputenc
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/make-rules/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/make-rules/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic cscopelist-am ctags ctags-am \
+ distclean distclean-generic distclean-tags distdir dvi dvi-am \
+ html html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/README b/Build/source/utils/xindy/xindy-src/make-rules/README
new file mode 100644
index 00000000000..5e36c4de8d4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/README
@@ -0,0 +1,40 @@
+
+MAKE-RULES
+
+This package contains the following:
+
+1. A Perl script to transform a description of a (language-specific)
+alphabet into a set of sorting rules for xindy. Alphabets for some languages
+are also provided.
+
+2. A Perl script to generate sets of rules which are needed in combination
+with the LaTeX `inputenc' package.
+
+Requirements:
+- TeX and LaTeX
+- Perl 5 or higher
+- GNU make or an equivalent `make' program
+- If your favourite character set is not yet supported: iconv
+
+The sorting rules for each language are described in files
+alphabets/*/*.pl. You can check them and change them if necessary.
+
+======================================================================
+
+This is a modified release of the xindy make-rules package.
+The modifications were done to integrate it into this overall xindy
+source distribution and adapt it to autoconf/automake.
+
+make-rules was written by Thomas Henlich <thenlich _AT_ web.de>, with
+contributions by Martin Vermeer <martin.vermeer _AT_ hut.fi>.
+The modifications were written by Gour <list _AT_ atmarama.org>.
+
+This release is based on a snapshot that was taken around January 14,
+2004. The modifications are only available in this distribution, they
+are not (yet) committed to CVS. That's partly because we need to merge
+them in, make-rules has changed a bit in CVS.
+
+======================================================================
+
+All autoconf/automake adaptions are released under
+GPL version 2, or later.
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.am
new file mode 100644
index 00000000000..abe84581faa
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.am
@@ -0,0 +1,319 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright 2020 by Karl Berry <tex-live@tug.org>
+## Copyright (C) 2004-2005 by Gour.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+langdir = $(pkglibdir)/modules/lang
+
+nobase_nodist_lang_DATA =
+EXTRA_DIST =
+DISTCLEANFILES =
+
+DOCS_CP1250 =
+DOCS_CP1252 =
+DOCS_CP850 =
+DOCS_LATIN1 =
+DOCS_LATIN2 =
+DOCS_LATIN3 =
+DOCS_LATIN4 =
+DOCS_LATIN5 =
+DOCS_LATIN9 =
+DOCS_CYR_1251 =
+DOCS_CYR_ISO88595 =
+DOCS_CYR_ISOIR111 =
+DOCS_CYR_KOI8_R =
+DOCS_CYR_KOI8_U =
+DOCS_OTHER =
+DOCS_UTF8_LAT =
+DOCS_UTF8_CYR =
+DOCS_UTF8_OTHER =
+
+## Include all Makefile.am fragments.
+##
+include albanian/Makefile.am
+include belarusian/Makefile.am
+include bulgarian/Makefile.am
+include croatian/Makefile.am
+include czech/Makefile.am
+include danish/Makefile.am
+include dutch/Makefile.am
+include english/Makefile.am
+include esperanto/Makefile.am
+include estonian/Makefile.am
+include finnish/Makefile.am
+include french/Makefile.am
+include general/Makefile.am
+include georgian/Makefile.am
+include german/Makefile.am
+include greek/Makefile.am
+include gypsy/Makefile.am
+include hausa/Makefile.am
+include hebrew/Makefile.am
+include hungarian/Makefile.am
+include icelandic/Makefile.am
+include italian/Makefile.am
+include klingon/Makefile.am
+include kurdish/Makefile.am
+include latin/Makefile.am
+include latvian/Makefile.am
+include lithuanian/Makefile.am
+include lower-sorbian/Makefile.am
+include macedonian/Makefile.am
+include mongolian/Makefile.am
+include norwegian/Makefile.am
+include persian/Makefile.am
+include polish/Makefile.am
+include portuguese/Makefile.am
+include romanian/Makefile.am
+include russian/Makefile.am
+include serbian/Makefile.am
+include slovak/Makefile.am
+include slovenian/Makefile.am
+include spanish/Makefile.am
+include swedish/Makefile.am
+include test1/Makefile.am
+include turkish/Makefile.am
+include ukrainian/Makefile.am
+include upper-sorbian/Makefile.am
+include vietnamese/Makefile.am
+
+%utf8.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@.{\([^}]*\)}/\1/g;' <$< >$@
+
+%latin1.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-1 >$@
+
+%cp850.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@.{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP850 >$@
+
+romanian/latin2.pl : romanian/utf8.pl.in
+ @$(MKDIR_P) romanian
+ sed -e 's/@u{\([^}]*\)}//g;' -f $(srcdir)/rom-comma-kludge.sed <$< | \
+ iconv -f UTF-8 -t ISO8859-2 >$@
+
+%latin2.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-2 >$@
+
+%latin3.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-3 >$@
+
+%latin4.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-4 >$@
+
+%iso88595.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-5 >$@
+
+%iso88597.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-7 >$@
+
+%iso88598.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-8 >$@
+
+%latin5.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-9 >$@
+
+%latin9.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;s/@9{\([^}]*\)}/\1/g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-15 >$@
+
+%cp1250.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP1250 >$@
+
+%cp1251.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP1251 >$@
+
+%cp1252.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;s/@9{\([^}]*\)}/\1/g;' <$< | \
+ iconv -f UTF-8 -t CP1252 >$@
+
+%isoir111.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-IR-111 >$@
+
+%koi8-r.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t KOI8-R >$@
+
+%koi8-u.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t KOI8-U >$@
+
+# %tex.pl : %utf8.pl utf8-to-tex.sed
+# sed -f $(srcdir)/utf8-to-tex.sed <$< >$@
+
+
+
+%-lang.xdy : %-test.xdy
+ sed -n '1,10 p' <$< >$@
+
+# Running "$(PERL) -I$(srcdir) $< $*" creates %-test.xdy, %-doc.tex, %.raw,
+# and %.xdy; %-test.xdy is finished first. We must not run this command
+# several times simultaneously (for details see Automake manual 27.9).
+%-test.xdy : %.pl
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ $(PERL) -I$(srcdir) $< $*
+
+%-doc.tex %.xdy : %-test.xdy
+ @if test -f $@; then :; else \
+ trap 'rm -rf $*.lock $<' 1 2 13 15; \
+ if mkdir $*.lock 2>/dev/null; then \
+ rm -f $<; \
+ $(MAKE) $(AM_MAKEFLAGS) $<; \
+ result=$$?; rm -rf $*.lock; exit $$result; \
+ else \
+ while test -d $*.lock; do sleep 1; done; \
+ test -f $<; \
+ fi; \
+ fi
+
+SCRS = \
+ alphabets-doc.tex \
+ make-rules.pl \
+ utf8-to-tex.sed
+
+DOCS_CPS = \
+ $(DOCS_CP1250) \
+ $(DOCS_CP1252) \
+ $(DOCS_CP850)
+
+DOCS_LAT = \
+ $(DOCS_LATIN1) \
+ $(DOCS_LATIN2) \
+ $(DOCS_LATIN3) \
+ $(DOCS_LATIN4) \
+ $(DOCS_LATIN5) \
+ $(DOCS_LATIN9)
+
+DOCS_CYR = \
+ $(DOCS_CYR_1251) \
+ $(DOCS_CYR_ISO88595) \
+ $(DOCS_CYR_ISOIR111) \
+ $(DOCS_CYR_KOI8_R) \
+ $(DOCS_CYR_KOI8_U)
+
+DOCS_UTF8 = \
+ $(DOCS_UTF8_LAT) \
+ $(DOCS_UTF8_CYR) \
+ $(DOCS_UTF8_OTHER)
+
+DOCS = $(DOCS_CPS) $(DOCS_LAT) $(DOCS_CYR) $(DOCS_OTHER) $(DOCS_UTF8)
+
+
+alphabets-inc.tex : $(DOCS)
+ $(RM) $@
+# zsh, dash, others make echo '\f' output a form feed. Likewise they
+# interpret \c (no further output). Sigh.
+ printf '\%s{Latin scripts}' "chapter" >>$@
+ echo '\ienc{cp1252}' >>$@
+ echo '\section{Codepage 1252}' >>$@
+ for i in $(DOCS_CP1252); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin1}' >>$@
+ echo '\section{Codepage latin1}' >>$@
+ for i in $(DOCS_LATIN1); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp850}' >>$@
+ echo '\section{Codepage 850}' >>$@
+ for i in $(DOCS_CP850); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin2}' >>$@
+ echo '\section{Codepage latin2}' >>$@
+ for i in $(DOCS_LATIN2); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp1250}' >>$@
+ echo '\section{Codepage 1250}' >>$@
+ for i in $(DOCS_CP1250); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin3}' >>$@
+ echo '\section{Codepage latin3}' >>$@
+ for i in $(DOCS_LATIN3); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin4}' >>$@
+ echo '\section{Codepage latin4}' >>$@
+ for i in $(DOCS_LATIN4); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin5}' >>$@
+ echo '\section{Codepage latin5}' >>$@
+ for i in $(DOCS_LATIN5); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin9}' >>$@
+ echo '\section{Codepage latin9}' >>$@
+ for i in $(DOCS_LATIN9); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp1251}' >>$@
+ printf '\%s{T2A}\n' "fenc" >>$@
+ printf '\%s{Cyrillic scripts}' "chapter" >>$@
+ echo '\section{Codepage 1251}' >>$@
+ for i in $(DOCS_CYR_1251); do echo "\\input{$$i}" >>$@; done
+# echo '\ienc{iso-8859-7}' >>$@
+# echo '\fenc{LGR}' >>$@
+# echo '\chapter{Other scripts}' >>$@
+# for i in $(DOCS_OTHER); do echo "\\input{$$i}" >>$@; done
+# FIXME: UTF8 encoding
+# echo '\section{UTF-8 scripts}' >>$@
+# for i in $(DOCS_UTF8); do echo "\\input{$$i}" >>$@; done
+# echo '\ienc{utf8}' >>$@
+
+# whether to build docs
+if BUILDRULES
+
+if BUILDDOCS
+alphabets-doc.pdf : alphabets-doc.tex alphabets-inc.tex
+ $(PDFLATEX) -interaction nonstopmode $(srcdir)/alphabets-doc.tex
+ $(PDFLATEX) -interaction nonstopmode $(srcdir)/alphabets-doc.tex
+
+PDFS = alphabets-doc.pdf
+
+doc_DATA = $(PDFS)
+
+endif BUILDDOCS
+
+endif BUILDRULES
+
+DOC_CLEAN = \
+ alphabets-doc.aux \
+ alphabets-doc.log \
+ alphabets-doc.out \
+ alphabets-doc.pdf \
+ alphabets-inc.tex \
+ alphabets-doc.toc
+
+EXTRA_DIST += $(SCRS) test.xdy rom-comma-kludge.sed
+
+CLEANFILES = */*.raw */*-doc.tex $(nobase_nodist_lang_DATA) $(DOC_CLEAN)
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.in
new file mode 100644
index 00000000000..f47d464430c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/Makefile.in
@@ -0,0 +1,1069 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/make-rules/alphabets
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(langdir)"
+DATA = $(doc_DATA) $(nobase_nodist_lang_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/albanian/Makefile.am \
+ $(srcdir)/belarusian/Makefile.am \
+ $(srcdir)/bulgarian/Makefile.am $(srcdir)/croatian/Makefile.am \
+ $(srcdir)/czech/Makefile.am $(srcdir)/danish/Makefile.am \
+ $(srcdir)/dutch/Makefile.am $(srcdir)/english/Makefile.am \
+ $(srcdir)/esperanto/Makefile.am $(srcdir)/estonian/Makefile.am \
+ $(srcdir)/finnish/Makefile.am $(srcdir)/french/Makefile.am \
+ $(srcdir)/general/Makefile.am $(srcdir)/georgian/Makefile.am \
+ $(srcdir)/german/Makefile.am $(srcdir)/greek/Makefile.am \
+ $(srcdir)/gypsy/Makefile.am $(srcdir)/hausa/Makefile.am \
+ $(srcdir)/hebrew/Makefile.am $(srcdir)/hungarian/Makefile.am \
+ $(srcdir)/icelandic/Makefile.am $(srcdir)/italian/Makefile.am \
+ $(srcdir)/klingon/Makefile.am $(srcdir)/kurdish/Makefile.am \
+ $(srcdir)/latin/Makefile.am $(srcdir)/latvian/Makefile.am \
+ $(srcdir)/lithuanian/Makefile.am \
+ $(srcdir)/lower-sorbian/Makefile.am \
+ $(srcdir)/macedonian/Makefile.am \
+ $(srcdir)/mongolian/Makefile.am \
+ $(srcdir)/norwegian/Makefile.am $(srcdir)/persian/Makefile.am \
+ $(srcdir)/polish/Makefile.am $(srcdir)/portuguese/Makefile.am \
+ $(srcdir)/romanian/Makefile.am $(srcdir)/russian/Makefile.am \
+ $(srcdir)/serbian/Makefile.am $(srcdir)/slovak/Makefile.am \
+ $(srcdir)/slovenian/Makefile.am $(srcdir)/spanish/Makefile.am \
+ $(srcdir)/swedish/Makefile.am $(srcdir)/test1/Makefile.am \
+ $(srcdir)/turkish/Makefile.am $(srcdir)/ukrainian/Makefile.am \
+ $(srcdir)/upper-sorbian/Makefile.am \
+ $(srcdir)/vietnamese/Makefile.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+langdir = $(pkglibdir)/modules/lang
+nobase_nodist_lang_DATA = albanian/latin1-lang.xdy \
+ albanian/latin1-test.xdy albanian/latin1.xdy \
+ albanian/utf8-lang.xdy albanian/utf8-test.xdy \
+ albanian/utf8.xdy belarusian/cp1251-lang.xdy \
+ belarusian/cp1251-test.xdy belarusian/cp1251.xdy \
+ belarusian/iso88595-lang.xdy belarusian/iso88595-test.xdy \
+ belarusian/iso88595.xdy belarusian/isoir111-lang.xdy \
+ belarusian/isoir111-test.xdy belarusian/isoir111.xdy \
+ belarusian/utf8-lang.xdy belarusian/utf8-test.xdy \
+ belarusian/utf8.xdy bulgarian/cp1251-lang.xdy \
+ bulgarian/cp1251-test.xdy bulgarian/cp1251.xdy \
+ bulgarian/iso88595-lang.xdy bulgarian/iso88595-test.xdy \
+ bulgarian/iso88595.xdy bulgarian/koi8-r-lang.xdy \
+ bulgarian/koi8-r-test.xdy bulgarian/koi8-r.xdy \
+ bulgarian/utf8-lang.xdy bulgarian/utf8-test.xdy \
+ bulgarian/utf8.xdy croatian/cp1250-lang.xdy \
+ croatian/cp1250-test.xdy croatian/cp1250.xdy \
+ croatian/latin2-lang.xdy croatian/latin2-test.xdy \
+ croatian/latin2.xdy croatian/utf8-lang.xdy \
+ croatian/utf8-test.xdy croatian/utf8.xdy czech/cp1250-lang.xdy \
+ czech/cp1250-test.xdy czech/cp1250.xdy czech/latin2-lang.xdy \
+ czech/latin2-test.xdy czech/latin2.xdy czech/utf8-lang.xdy \
+ czech/utf8-test.xdy czech/utf8.xdy danish/cp1252-lang.xdy \
+ danish/cp1252-test.xdy danish/cp1252.xdy \
+ danish/latin9-lang.xdy danish/latin9-test.xdy \
+ danish/latin9.xdy danish/utf8-lang.xdy danish/utf8-test.xdy \
+ danish/utf8.xdy dutch/ij-as-ij-latin1-lang.xdy \
+ dutch/ij-as-ij-latin1-test.xdy dutch/ij-as-ij-latin1.xdy \
+ dutch/ij-as-ij-utf8-lang.xdy dutch/ij-as-ij-utf8-test.xdy \
+ dutch/ij-as-ij-utf8.xdy dutch/ij-as-y-utf8-lang.xdy \
+ dutch/ij-as-y-utf8-test.xdy dutch/ij-as-y-utf8.xdy \
+ english/cp1252-lang.xdy english/cp1252-test.xdy \
+ english/cp1252.xdy english/latin9-lang.xdy \
+ english/latin9-test.xdy english/latin9.xdy \
+ english/utf8-lang.xdy english/utf8-test.xdy english/utf8.xdy \
+ esperanto/latin3-lang.xdy esperanto/latin3-test.xdy \
+ esperanto/latin3.xdy esperanto/utf8-lang.xdy \
+ esperanto/utf8-test.xdy esperanto/utf8.xdy \
+ estonian/cp1252-lang.xdy estonian/cp1252-test.xdy \
+ estonian/cp1252.xdy estonian/latin9-lang.xdy \
+ estonian/latin9-test.xdy estonian/latin9.xdy \
+ estonian/utf8-lang.xdy estonian/utf8-test.xdy \
+ estonian/utf8.xdy finnish/cp1252-lang.xdy \
+ finnish/cp1252-test.xdy finnish/cp1252.xdy \
+ finnish/latin9-lang.xdy finnish/latin9-test.xdy \
+ finnish/latin9.xdy finnish/utf8-lang.xdy finnish/utf8-test.xdy \
+ finnish/utf8.xdy french/cp1252-lang.xdy french/cp1252-test.xdy \
+ french/cp1252.xdy french/latin9-lang.xdy \
+ french/latin9-test.xdy french/latin9.xdy french/utf8-lang.xdy \
+ french/utf8-test.xdy french/utf8.xdy general/cp1252-lang.xdy \
+ general/cp1252-test.xdy general/cp1252.xdy \
+ general/cp850-lang.xdy general/cp850-test.xdy \
+ general/cp850.xdy general/latin9-lang.xdy \
+ general/latin9-test.xdy general/latin9.xdy \
+ general/utf8-lang.xdy general/utf8-test.xdy general/utf8.xdy \
+ georgian/utf8-lang.xdy georgian/utf8-test.xdy \
+ georgian/utf8.xdy german/braille-utf8-lang.xdy \
+ german/braille-utf8-test.xdy german/braille-utf8.xdy \
+ german/din5007-latin1-lang.xdy german/din5007-latin1-test.xdy \
+ german/din5007-latin1.xdy german/din5007-utf8-lang.xdy \
+ german/din5007-utf8-test.xdy german/din5007-utf8.xdy \
+ german/duden-latin1-lang.xdy german/duden-latin1-test.xdy \
+ german/duden-latin1.xdy german/duden-utf8-lang.xdy \
+ german/duden-utf8-test.xdy german/duden-utf8.xdy \
+ greek/iso88597-lang.xdy greek/iso88597-test.xdy \
+ greek/iso88597.xdy greek/polytonic-utf8-lang.xdy \
+ greek/polytonic-utf8-test.xdy greek/polytonic-utf8.xdy \
+ greek/translit-latin4-lang.xdy greek/translit-latin4-test.xdy \
+ greek/translit-latin4.xdy greek/translit-utf8-lang.xdy \
+ greek/translit-utf8-test.xdy greek/translit-utf8.xdy \
+ greek/utf8-lang.xdy greek/utf8-test.xdy greek/utf8.xdy \
+ gypsy/northrussian-utf8-lang.xdy \
+ gypsy/northrussian-utf8-test.xdy gypsy/northrussian-utf8.xdy \
+ hausa/utf8-lang.xdy hausa/utf8-test.xdy hausa/utf8.xdy \
+ hebrew/iso88598-lang.xdy hebrew/iso88598-test.xdy \
+ hebrew/iso88598.xdy hebrew/utf8-lang.xdy hebrew/utf8-test.xdy \
+ hebrew/utf8.xdy hungarian/cp1250-lang.xdy \
+ hungarian/cp1250-test.xdy hungarian/cp1250.xdy \
+ hungarian/latin2-lang.xdy hungarian/latin2-test.xdy \
+ hungarian/latin2.xdy hungarian/utf8-lang.xdy \
+ hungarian/utf8-test.xdy hungarian/utf8.xdy \
+ icelandic/cp1252-lang.xdy icelandic/cp1252-test.xdy \
+ icelandic/cp1252.xdy icelandic/latin9-lang.xdy \
+ icelandic/latin9-test.xdy icelandic/latin9.xdy \
+ icelandic/utf8-lang.xdy icelandic/utf8-test.xdy \
+ icelandic/utf8.xdy italian/latin1-lang.xdy \
+ italian/latin1-test.xdy italian/latin1.xdy \
+ italian/utf8-lang.xdy italian/utf8-test.xdy italian/utf8.xdy \
+ klingon/utf8-lang.xdy klingon/utf8-test.xdy klingon/utf8.xdy \
+ kurdish/bedirxan-latin5-lang.xdy \
+ kurdish/bedirxan-latin5-test.xdy kurdish/bedirxan-latin5.xdy \
+ kurdish/bedirxan-utf8-lang.xdy kurdish/bedirxan-utf8-test.xdy \
+ kurdish/bedirxan-utf8.xdy kurdish/turkish-i-latin5-lang.xdy \
+ kurdish/turkish-i-latin5-test.xdy kurdish/turkish-i-latin5.xdy \
+ kurdish/turkish-i-utf8-lang.xdy \
+ kurdish/turkish-i-utf8-test.xdy kurdish/turkish-i-utf8.xdy \
+ latin/utf8-lang.xdy latin/utf8-test.xdy latin/utf8.xdy \
+ latvian/latin4-lang.xdy latvian/latin4-test.xdy \
+ latvian/latin4.xdy latvian/utf8-lang.xdy latvian/utf8-test.xdy \
+ latvian/utf8.xdy lithuanian/latin4-lang.xdy \
+ lithuanian/latin4-test.xdy lithuanian/latin4.xdy \
+ lithuanian/utf8-lang.xdy lithuanian/utf8-test.xdy \
+ lithuanian/utf8.xdy lower-sorbian/cp1250-lang.xdy \
+ lower-sorbian/cp1250-test.xdy lower-sorbian/cp1250.xdy \
+ lower-sorbian/latin2-lang.xdy lower-sorbian/latin2-test.xdy \
+ lower-sorbian/latin2.xdy lower-sorbian/utf8-lang.xdy \
+ lower-sorbian/utf8-test.xdy lower-sorbian/utf8.xdy \
+ macedonian/cp1251-lang.xdy macedonian/cp1251-test.xdy \
+ macedonian/cp1251.xdy macedonian/iso88595-lang.xdy \
+ macedonian/iso88595-test.xdy macedonian/iso88595.xdy \
+ macedonian/isoir111-lang.xdy macedonian/isoir111-test.xdy \
+ macedonian/isoir111.xdy macedonian/utf8-lang.xdy \
+ macedonian/utf8-test.xdy macedonian/utf8.xdy \
+ mongolian/cyrillic-utf8-lang.xdy \
+ mongolian/cyrillic-utf8-test.xdy mongolian/cyrillic-utf8.xdy \
+ norwegian/latin1-lang.xdy norwegian/latin1-test.xdy \
+ norwegian/latin1.xdy norwegian/utf8-lang.xdy \
+ norwegian/utf8-test.xdy norwegian/utf8.xdy \
+ persian/variant1-utf8-lang.xdy persian/variant1-utf8-test.xdy \
+ persian/variant1-utf8.xdy persian/variant2-utf8-lang.xdy \
+ persian/variant2-utf8-test.xdy persian/variant2-utf8.xdy \
+ polish/cp1250-lang.xdy polish/cp1250-test.xdy \
+ polish/cp1250.xdy polish/latin2-lang.xdy \
+ polish/latin2-test.xdy polish/latin2.xdy polish/utf8-lang.xdy \
+ polish/utf8-test.xdy polish/utf8.xdy \
+ portuguese/latin1-lang.xdy portuguese/latin1-test.xdy \
+ portuguese/latin1.xdy portuguese/utf8-lang.xdy \
+ portuguese/utf8-test.xdy portuguese/utf8.xdy \
+ romanian/latin2-lang.xdy romanian/latin2-test.xdy \
+ romanian/latin2.xdy romanian/utf8-lang.xdy \
+ romanian/utf8-test.xdy romanian/utf8.xdy \
+ russian/cp1251-lang.xdy russian/cp1251-test.xdy \
+ russian/cp1251.xdy russian/iso88595-lang.xdy \
+ russian/iso88595-test.xdy russian/iso88595.xdy \
+ russian/koi8-r-lang.xdy russian/koi8-r-test.xdy \
+ russian/koi8-r.xdy russian/translit-iso-utf8-lang.xdy \
+ russian/translit-iso-utf8-test.xdy \
+ russian/translit-iso-utf8.xdy russian/utf8-lang.xdy \
+ russian/utf8-test.xdy russian/utf8.xdy serbian/cp1251-lang.xdy \
+ serbian/cp1251-test.xdy serbian/cp1251.xdy \
+ serbian/iso88595-lang.xdy serbian/iso88595-test.xdy \
+ serbian/iso88595.xdy serbian/isoir111-lang.xdy \
+ serbian/isoir111-test.xdy serbian/isoir111.xdy \
+ serbian/utf8-lang.xdy serbian/utf8-test.xdy serbian/utf8.xdy \
+ slovak/large-cp1250-lang.xdy slovak/large-cp1250-test.xdy \
+ slovak/large-cp1250.xdy slovak/large-latin2-lang.xdy \
+ slovak/large-latin2-test.xdy slovak/large-latin2.xdy \
+ slovak/large-utf8-lang.xdy slovak/large-utf8-test.xdy \
+ slovak/large-utf8.xdy slovak/small-cp1250-lang.xdy \
+ slovak/small-cp1250-test.xdy slovak/small-cp1250.xdy \
+ slovak/small-latin2-lang.xdy slovak/small-latin2-test.xdy \
+ slovak/small-latin2.xdy slovak/small-utf8-lang.xdy \
+ slovak/small-utf8-test.xdy slovak/small-utf8.xdy \
+ slovenian/cp1250-lang.xdy slovenian/cp1250-test.xdy \
+ slovenian/cp1250.xdy slovenian/latin2-lang.xdy \
+ slovenian/latin2-test.xdy slovenian/latin2.xdy \
+ slovenian/utf8-lang.xdy slovenian/utf8-test.xdy \
+ slovenian/utf8.xdy spanish/modern-latin1-lang.xdy \
+ spanish/modern-latin1-test.xdy spanish/modern-latin1.xdy \
+ spanish/modern-utf8-lang.xdy spanish/modern-utf8-test.xdy \
+ spanish/modern-utf8.xdy spanish/traditional-latin1-lang.xdy \
+ spanish/traditional-latin1-test.xdy \
+ spanish/traditional-latin1.xdy \
+ spanish/traditional-utf8-lang.xdy \
+ spanish/traditional-utf8-test.xdy spanish/traditional-utf8.xdy \
+ swedish/cp1252-lang.xdy swedish/cp1252-test.xdy \
+ swedish/cp1252.xdy swedish/latin9-lang.xdy \
+ swedish/latin9-test.xdy swedish/latin9.xdy \
+ swedish/utf8-lang.xdy swedish/utf8-test.xdy swedish/utf8.xdy \
+ turkish/latin3-lang.xdy turkish/latin3-test.xdy \
+ turkish/latin3.xdy turkish/latin5-lang.xdy \
+ turkish/latin5-test.xdy turkish/latin5.xdy \
+ turkish/utf8-lang.xdy turkish/utf8-test.xdy turkish/utf8.xdy \
+ ukrainian/cp1251-lang.xdy ukrainian/cp1251-test.xdy \
+ ukrainian/cp1251.xdy ukrainian/koi8-u-lang.xdy \
+ ukrainian/koi8-u-test.xdy ukrainian/koi8-u.xdy \
+ ukrainian/utf8-lang.xdy ukrainian/utf8-test.xdy \
+ ukrainian/utf8.xdy upper-sorbian/cp1250-lang.xdy \
+ upper-sorbian/cp1250-test.xdy upper-sorbian/cp1250.xdy \
+ upper-sorbian/latin2-lang.xdy upper-sorbian/latin2-test.xdy \
+ upper-sorbian/latin2.xdy upper-sorbian/utf8-lang.xdy \
+ upper-sorbian/utf8-test.xdy upper-sorbian/utf8.xdy \
+ vietnamese/utf8-lang.xdy vietnamese/utf8-test.xdy \
+ vietnamese/utf8.xdy
+EXTRA_DIST = albanian/latin1.pl albanian/utf8.pl.in \
+ belarusian/cp1251.pl belarusian/iso88595.pl \
+ belarusian/isoir111.pl belarusian/utf8.pl.in \
+ bulgarian/cp1251.pl bulgarian/iso88595.pl bulgarian/koi8-r.pl \
+ bulgarian/utf8.pl.in croatian/cp1250.pl croatian/latin2.pl \
+ croatian/utf8.pl.in czech/cp1250.pl czech/latin2.pl \
+ czech/utf8.pl.in danish/cp1252.pl danish/latin9.pl \
+ danish/utf8.pl.in dutch/ij-as-ij-latin1.pl \
+ dutch/ij-as-y-utf8.pl.in dutch/ij-as-ij-utf8.pl.in \
+ english/cp1252.pl english/latin9.pl english/utf8.pl.in \
+ esperanto/latin3.pl esperanto/utf8.pl.in estonian/cp1252.pl \
+ estonian/latin9.pl estonian/utf8.pl.in finnish/cp1252.pl \
+ finnish/latin9.pl finnish/utf8.pl.in french/cp1252.pl \
+ french/latin9.pl french/utf8.pl.in general/cp1252.pl \
+ general/cp850.pl general/latin9.pl general/template.pl \
+ general/utf8.pl.in georgian/utf8.pl.in \
+ german/braille-utf8.pl.in german/duden-latin1.pl \
+ german/din5007-latin1.pl german/duden-utf8.pl.in \
+ german/din5007-utf8.pl.in greek/iso88597.pl \
+ greek/polytonic-utf8.pl.in greek/utf8.pl.in \
+ greek/translit-latin4.pl greek/translit-utf8.pl.in \
+ gypsy/northrussian-utf8.pl.in hausa/utf8.pl.in \
+ hebrew/iso88598.pl hebrew/utf8.pl.in hungarian/cp1250.pl \
+ hungarian/latin2.pl hungarian/utf8.pl.in icelandic/cp1252.pl \
+ icelandic/latin9.pl icelandic/utf8.pl.in italian/latin1.pl \
+ italian/utf8.pl.in klingon/utf8.pl.in \
+ klingon/translit-ascii.pl kurdish/bedirxan-latin5.pl \
+ kurdish/bedirxan-utf8.pl.in kurdish/turkish-i-latin5.pl \
+ kurdish/turkish-i-utf8.pl.in latin/utf8.pl.in \
+ latvian/latin4.pl latvian/utf8.pl.in lithuanian/latin4.pl \
+ lithuanian/utf8.pl.in lower-sorbian/cp1250.pl \
+ lower-sorbian/latin2.pl lower-sorbian/utf8.pl.in \
+ macedonian/cp1251.pl macedonian/iso88595.pl \
+ macedonian/isoir111.pl macedonian/utf8.pl.in \
+ mongolian/cyrillic-utf8.pl.in norwegian/latin1.pl \
+ norwegian/utf8.pl.in persian/README \
+ persian/variant1-utf8.pl.in persian/variant2-utf8.pl.in \
+ polish/cp1250.pl polish/latin2.pl polish/utf8.pl.in \
+ portuguese/latin1.pl portuguese/utf8.pl.in romanian/latin2.pl \
+ romanian/utf8.pl.in russian/cp1251.pl russian/iso88595.pl \
+ russian/koi8-r.pl russian/translit-iso-utf8.pl.in \
+ russian/utf8.pl.in serbian/cp1251.pl serbian/iso88595.pl \
+ serbian/isoir111.pl serbian/utf8.pl.in slovak/large-cp1250.pl \
+ slovak/large-latin2.pl slovak/large-utf8.pl.in \
+ slovak/small-cp1250.pl slovak/small-latin2.pl \
+ slovak/small-utf8.pl.in slovenian/cp1250.pl \
+ slovenian/latin2.pl slovenian/utf8.pl.in \
+ spanish/modern-latin1.pl spanish/modern-utf8.pl.in \
+ spanish/traditional-latin1.pl spanish/traditional-utf8.pl.in \
+ swedish/cp1252.pl swedish/latin9.pl swedish/utf8.pl.in \
+ test1/test1.pl turkish/latin3.pl turkish/latin5.pl \
+ turkish/utf8.pl.in ukrainian/cp1251.pl ukrainian/koi8-u.pl \
+ ukrainian/utf8.pl.in upper-sorbian/cp1250.pl \
+ upper-sorbian/latin2.pl upper-sorbian/utf8.pl.in \
+ vietnamese/README vietnamese/utf8.pl.in $(SCRS) test.xdy \
+ rom-comma-kludge.sed
+DISTCLEANFILES = albanian/utf8.pl belarusian/utf8.pl bulgarian/utf8.pl \
+ croatian/utf8.pl czech/utf8.pl danish/utf8.pl \
+ dutch/ij-as-ij-utf8.pl dutch/ij-as-y-utf8.pl english/utf8.pl \
+ esperanto/utf8.pl estonian/utf8.pl finnish/utf8.pl \
+ french/utf8.pl general/utf8.pl georgian/utf8.pl \
+ german/braille-utf8.pl german/din5007-utf8.pl \
+ german/duden-utf8.pl greek/polytonic-utf8.pl \
+ greek/translit-utf8.pl greek/utf8.pl \
+ gypsy/northrussian-utf8.pl hausa/utf8.pl hebrew/utf8.pl \
+ hungarian/utf8.pl icelandic/utf8.pl italian/utf8.pl \
+ klingon/utf8.pl kurdish/bedirxan-utf8.pl \
+ kurdish/turkish-i-utf8.pl latin/utf8.pl latvian/utf8.pl \
+ lithuanian/utf8.pl lower-sorbian/utf8.pl macedonian/utf8.pl \
+ mongolian/cyrillic-utf8.pl norwegian/utf8.pl persian/utf8.pl \
+ polish/utf8.pl portuguese/utf8.pl romanian/utf8.pl \
+ russian/translit-iso-utf8.pl russian/utf8.pl serbian/utf8.pl \
+ slovak/large-utf8.pl slovak/small-utf8.pl slovenian/utf8.pl \
+ spanish/modern-utf8.pl spanish/traditional-utf8.pl \
+ swedish/utf8.pl turkish/utf8.pl ukrainian/utf8.pl \
+ upper-sorbian/utf8.pl vietnamese/utf8.pl
+DOCS_CP1250 = croatian/cp1250-doc.tex czech/cp1250-doc.tex \
+ hungarian/cp1250-doc.tex lower-sorbian/cp1250-doc.tex \
+ polish/cp1250-doc.tex slovak/large-cp1250-doc.tex \
+ slovak/small-cp1250-doc.tex slovenian/cp1250-doc.tex \
+ upper-sorbian/cp1250-doc.tex
+DOCS_CP1252 = danish/cp1252-doc.tex english/cp1252-doc.tex \
+ estonian/cp1252-doc.tex finnish/cp1252-doc.tex \
+ french/cp1252-doc.tex general/cp1252-doc.tex \
+ icelandic/cp1252-doc.tex swedish/cp1252-doc.tex
+DOCS_CP850 = general/cp850-doc.tex
+DOCS_LATIN1 = albanian/latin1-doc.tex dutch/ij-as-ij-latin1-doc.tex \
+ german/din5007-latin1-doc.tex german/duden-latin1-doc.tex \
+ italian/latin1-doc.tex norwegian/latin1-doc.tex \
+ portuguese/latin1-doc.tex spanish/modern-latin1-doc.tex \
+ spanish/traditional-latin1-doc.tex
+DOCS_LATIN2 = croatian/latin2-doc.tex czech/latin2-doc.tex \
+ hungarian/latin2-doc.tex lower-sorbian/latin2-doc.tex \
+ polish/latin2-doc.tex romanian/latin2-doc.tex \
+ slovak/small-latin2-doc.tex slovak/large-latin2-doc.tex \
+ slovenian/latin2-doc.tex upper-sorbian/latin2-doc.tex
+DOCS_LATIN3 = esperanto/latin3-doc.tex turkish/latin3-doc.tex
+DOCS_LATIN4 = greek/translit-latin4-doc.tex latvian/latin4-doc.tex \
+ lithuanian/latin4-doc.tex
+DOCS_LATIN5 = kurdish/bedirxan-latin5-doc.tex \
+ kurdish/turkish-i-latin5-doc.tex turkish/latin5-doc.tex
+DOCS_LATIN9 = danish/latin9-doc.tex english/latin9-doc.tex \
+ estonian/latin9-doc.tex finnish/latin9-doc.tex \
+ french/latin9-doc.tex general/latin9-doc.tex \
+ icelandic/latin9-doc.tex swedish/latin9-doc.tex
+DOCS_CYR_1251 = belarusian/cp1251-doc.tex bulgarian/cp1251-doc.tex \
+ macedonian/cp1251-doc.tex russian/cp1251-doc.tex \
+ serbian/cp1251-doc.tex ukrainian/cp1251-doc.tex
+DOCS_CYR_ISO88595 = belarusian/iso88595-doc.tex \
+ bulgarian/iso88595-doc.tex macedonian/iso88595-doc.tex \
+ russian/iso88595-doc.tex serbian/iso88595-doc.tex
+DOCS_CYR_ISOIR111 = belarusian/isoir111-doc.tex \
+ macedonian/isoir111-doc.tex serbian/isoir111-doc.tex
+DOCS_CYR_KOI8_R = bulgarian/koi8-r-doc.tex russian/koi8-r-doc.tex
+DOCS_CYR_KOI8_U = ukrainian/koi8-u-doc.tex
+DOCS_OTHER = greek/iso88597-doc.tex hebrew/iso88598-doc.tex
+DOCS_UTF8_LAT = albanian/utf8-doc.tex croatian/utf8-doc.tex \
+ czech/utf8-doc.tex danish/utf8-doc.tex \
+ dutch/ij-as-ij-utf8-doc.tex dutch/ij-as-y-utf8-doc.tex \
+ english/utf8-doc.tex esperanto/utf8-doc.tex \
+ estonian/utf8-doc.tex finnish/utf8-doc.tex french/utf8-doc.tex \
+ general/utf8-doc.tex german/din5007-utf8-doc.tex \
+ german/duden-utf8-doc.tex greek/translit-utf8-doc.tex \
+ greek/utf8-doc.tex gypsy/northrussian-utf8-doc.tex \
+ hausa/utf8-doc.tex hungarian/utf8-doc.tex \
+ icelandic/utf8-doc.tex italian/utf8-doc.tex \
+ kurdish/bedirxan-utf8-doc.tex kurdish/turkish-i-utf8-doc.tex \
+ latin/utf8-doc.tex latvian/utf8-doc.tex \
+ lithuanian/utf8-doc.tex lower-sorbian/utf8-doc.tex \
+ norwegian/utf8-doc.tex polish/utf8-doc.tex \
+ portuguese/utf8-doc.tex romanian/utf8-doc.tex \
+ russian/translit-iso-utf8-doc.tex slovak/small-utf8-doc.tex \
+ slovak/large-utf8-doc.tex slovenian/utf8-doc.tex \
+ spanish/modern-utf8-doc.tex spanish/traditional-utf8-doc.tex \
+ swedish/utf8-doc.tex turkish/utf8-doc.tex \
+ upper-sorbian/utf8-doc.tex vietnamese/utf8-doc.tex
+DOCS_UTF8_CYR = belarusian/utf8-doc.tex bulgarian/utf8-doc.tex \
+ macedonian/utf8-doc.tex mongolian/cyrillic-utf8-doc.tex \
+ russian/utf8-doc.tex serbian/utf8-doc.tex \
+ ukrainian/utf8-doc.tex
+DOCS_UTF8_OTHER = georgian/utf8-doc.tex german/braille-utf8-doc.tex \
+ greek/utf8-doc.tex greek/polytonic-utf8-doc.tex \
+ hebrew/utf8-doc.tex klingon/utf8-doc.tex \
+ persian/variant1-utf8-doc.tex persian/variant2-utf8-doc.tex
+SCRS = \
+ alphabets-doc.tex \
+ make-rules.pl \
+ utf8-to-tex.sed
+
+DOCS_CPS = \
+ $(DOCS_CP1250) \
+ $(DOCS_CP1252) \
+ $(DOCS_CP850)
+
+DOCS_LAT = \
+ $(DOCS_LATIN1) \
+ $(DOCS_LATIN2) \
+ $(DOCS_LATIN3) \
+ $(DOCS_LATIN4) \
+ $(DOCS_LATIN5) \
+ $(DOCS_LATIN9)
+
+DOCS_CYR = \
+ $(DOCS_CYR_1251) \
+ $(DOCS_CYR_ISO88595) \
+ $(DOCS_CYR_ISOIR111) \
+ $(DOCS_CYR_KOI8_R) \
+ $(DOCS_CYR_KOI8_U)
+
+DOCS_UTF8 = \
+ $(DOCS_UTF8_LAT) \
+ $(DOCS_UTF8_CYR) \
+ $(DOCS_UTF8_OTHER)
+
+DOCS = $(DOCS_CPS) $(DOCS_LAT) $(DOCS_CYR) $(DOCS_OTHER) $(DOCS_UTF8)
+@BUILDDOCS_TRUE@@BUILDRULES_TRUE@PDFS = alphabets-doc.pdf
+@BUILDDOCS_TRUE@@BUILDRULES_TRUE@doc_DATA = $(PDFS)
+DOC_CLEAN = \
+ alphabets-doc.aux \
+ alphabets-doc.log \
+ alphabets-doc.out \
+ alphabets-doc.pdf \
+ alphabets-inc.tex \
+ alphabets-doc.toc
+
+CLEANFILES = */*.raw */*-doc.tex $(nobase_nodist_lang_DATA) $(DOC_CLEAN)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/albanian/Makefile.am $(srcdir)/belarusian/Makefile.am $(srcdir)/bulgarian/Makefile.am $(srcdir)/croatian/Makefile.am $(srcdir)/czech/Makefile.am $(srcdir)/danish/Makefile.am $(srcdir)/dutch/Makefile.am $(srcdir)/english/Makefile.am $(srcdir)/esperanto/Makefile.am $(srcdir)/estonian/Makefile.am $(srcdir)/finnish/Makefile.am $(srcdir)/french/Makefile.am $(srcdir)/general/Makefile.am $(srcdir)/georgian/Makefile.am $(srcdir)/german/Makefile.am $(srcdir)/greek/Makefile.am $(srcdir)/gypsy/Makefile.am $(srcdir)/hausa/Makefile.am $(srcdir)/hebrew/Makefile.am $(srcdir)/hungarian/Makefile.am $(srcdir)/icelandic/Makefile.am $(srcdir)/italian/Makefile.am $(srcdir)/klingon/Makefile.am $(srcdir)/kurdish/Makefile.am $(srcdir)/latin/Makefile.am $(srcdir)/latvian/Makefile.am $(srcdir)/lithuanian/Makefile.am $(srcdir)/lower-sorbian/Makefile.am $(srcdir)/macedonian/Makefile.am $(srcdir)/mongolian/Makefile.am $(srcdir)/norwegian/Makefile.am $(srcdir)/persian/Makefile.am $(srcdir)/polish/Makefile.am $(srcdir)/portuguese/Makefile.am $(srcdir)/romanian/Makefile.am $(srcdir)/russian/Makefile.am $(srcdir)/serbian/Makefile.am $(srcdir)/slovak/Makefile.am $(srcdir)/slovenian/Makefile.am $(srcdir)/spanish/Makefile.am $(srcdir)/swedish/Makefile.am $(srcdir)/test1/Makefile.am $(srcdir)/turkish/Makefile.am $(srcdir)/ukrainian/Makefile.am $(srcdir)/upper-sorbian/Makefile.am $(srcdir)/vietnamese/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/make-rules/alphabets/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/make-rules/alphabets/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/albanian/Makefile.am $(srcdir)/belarusian/Makefile.am $(srcdir)/bulgarian/Makefile.am $(srcdir)/croatian/Makefile.am $(srcdir)/czech/Makefile.am $(srcdir)/danish/Makefile.am $(srcdir)/dutch/Makefile.am $(srcdir)/english/Makefile.am $(srcdir)/esperanto/Makefile.am $(srcdir)/estonian/Makefile.am $(srcdir)/finnish/Makefile.am $(srcdir)/french/Makefile.am $(srcdir)/general/Makefile.am $(srcdir)/georgian/Makefile.am $(srcdir)/german/Makefile.am $(srcdir)/greek/Makefile.am $(srcdir)/gypsy/Makefile.am $(srcdir)/hausa/Makefile.am $(srcdir)/hebrew/Makefile.am $(srcdir)/hungarian/Makefile.am $(srcdir)/icelandic/Makefile.am $(srcdir)/italian/Makefile.am $(srcdir)/klingon/Makefile.am $(srcdir)/kurdish/Makefile.am $(srcdir)/latin/Makefile.am $(srcdir)/latvian/Makefile.am $(srcdir)/lithuanian/Makefile.am $(srcdir)/lower-sorbian/Makefile.am $(srcdir)/macedonian/Makefile.am $(srcdir)/mongolian/Makefile.am $(srcdir)/norwegian/Makefile.am $(srcdir)/persian/Makefile.am $(srcdir)/polish/Makefile.am $(srcdir)/portuguese/Makefile.am $(srcdir)/romanian/Makefile.am $(srcdir)/russian/Makefile.am $(srcdir)/serbian/Makefile.am $(srcdir)/slovak/Makefile.am $(srcdir)/slovenian/Makefile.am $(srcdir)/spanish/Makefile.am $(srcdir)/swedish/Makefile.am $(srcdir)/test1/Makefile.am $(srcdir)/turkish/Makefile.am $(srcdir)/ukrainian/Makefile.am $(srcdir)/upper-sorbian/Makefile.am $(srcdir)/vietnamese/Makefile.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-nobase_nodist_langDATA: $(nobase_nodist_lang_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_nodist_lang_DATA)'; test -n "$(langdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(langdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(langdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(langdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(langdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(langdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(langdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_nodist_langDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_nodist_lang_DATA)'; test -n "$(langdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(langdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(langdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA install-nobase_nodist_langDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-docDATA uninstall-nobase_nodist_langDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-docDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man \
+ install-nobase_nodist_langDATA install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-docDATA uninstall-nobase_nodist_langDATA
+
+.PRECIOUS: Makefile
+
+
+%utf8.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@.{\([^}]*\)}/\1/g;' <$< >$@
+
+%latin1.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-1 >$@
+
+%cp850.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@.{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP850 >$@
+
+romanian/latin2.pl : romanian/utf8.pl.in
+ @$(MKDIR_P) romanian
+ sed -e 's/@u{\([^}]*\)}//g;' -f $(srcdir)/rom-comma-kludge.sed <$< | \
+ iconv -f UTF-8 -t ISO8859-2 >$@
+
+%latin2.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-2 >$@
+
+%latin3.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-3 >$@
+
+%latin4.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO8859-4 >$@
+
+%iso88595.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-5 >$@
+
+%iso88597.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-7 >$@
+
+%iso88598.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-8 >$@
+
+%latin5.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-9 >$@
+
+%latin9.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;s/@9{\([^}]*\)}/\1/g;' <$< | \
+ iconv -f UTF-8 -t ISO-8859-15 >$@
+
+%cp1250.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP1250 >$@
+
+%cp1251.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t CP1251 >$@
+
+%cp1252.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;s/@9{\([^}]*\)}/\1/g;' <$< | \
+ iconv -f UTF-8 -t CP1252 >$@
+
+%isoir111.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t ISO-IR-111 >$@
+
+%koi8-r.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t KOI8-R >$@
+
+%koi8-u.pl : %utf8.pl.in
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ sed -e 's/@u{\([^}]*\)}//g;' <$< | \
+ iconv -f UTF-8 -t KOI8-U >$@
+
+# %tex.pl : %utf8.pl utf8-to-tex.sed
+# sed -f $(srcdir)/utf8-to-tex.sed <$< >$@
+
+%-lang.xdy : %-test.xdy
+ sed -n '1,10 p' <$< >$@
+
+# Running "$(PERL) -I$(srcdir) $< $*" creates %-test.xdy, %-doc.tex, %.raw,
+# and %.xdy; %-test.xdy is finished first. We must not run this command
+# several times simultaneously (for details see Automake manual 27.9).
+%-test.xdy : %.pl
+ @$(MKDIR_P) `echo $@ | sed -e 's,/[^/]*$$,,'`
+ $(PERL) -I$(srcdir) $< $*
+
+%-doc.tex %.xdy : %-test.xdy
+ @if test -f $@; then :; else \
+ trap 'rm -rf $*.lock $<' 1 2 13 15; \
+ if mkdir $*.lock 2>/dev/null; then \
+ rm -f $<; \
+ $(MAKE) $(AM_MAKEFLAGS) $<; \
+ result=$$?; rm -rf $*.lock; exit $$result; \
+ else \
+ while test -d $*.lock; do sleep 1; done; \
+ test -f $<; \
+ fi; \
+ fi
+
+alphabets-inc.tex : $(DOCS)
+ $(RM) $@
+# zsh, dash, others make echo '\f' output a form feed. Likewise they
+# interpret \c (no further output). Sigh.
+ printf '\%s{Latin scripts}' "chapter" >>$@
+ echo '\ienc{cp1252}' >>$@
+ echo '\section{Codepage 1252}' >>$@
+ for i in $(DOCS_CP1252); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin1}' >>$@
+ echo '\section{Codepage latin1}' >>$@
+ for i in $(DOCS_LATIN1); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp850}' >>$@
+ echo '\section{Codepage 850}' >>$@
+ for i in $(DOCS_CP850); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin2}' >>$@
+ echo '\section{Codepage latin2}' >>$@
+ for i in $(DOCS_LATIN2); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp1250}' >>$@
+ echo '\section{Codepage 1250}' >>$@
+ for i in $(DOCS_CP1250); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin3}' >>$@
+ echo '\section{Codepage latin3}' >>$@
+ for i in $(DOCS_LATIN3); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin4}' >>$@
+ echo '\section{Codepage latin4}' >>$@
+ for i in $(DOCS_LATIN4); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin5}' >>$@
+ echo '\section{Codepage latin5}' >>$@
+ for i in $(DOCS_LATIN5); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{latin9}' >>$@
+ echo '\section{Codepage latin9}' >>$@
+ for i in $(DOCS_LATIN9); do echo "\\input{$$i}" >>$@; done
+ echo '\ienc{cp1251}' >>$@
+ printf '\%s{T2A}\n' "fenc" >>$@
+ printf '\%s{Cyrillic scripts}' "chapter" >>$@
+ echo '\section{Codepage 1251}' >>$@
+ for i in $(DOCS_CYR_1251); do echo "\\input{$$i}" >>$@; done
+# echo '\ienc{iso-8859-7}' >>$@
+# echo '\fenc{LGR}' >>$@
+# echo '\chapter{Other scripts}' >>$@
+# for i in $(DOCS_OTHER); do echo "\\input{$$i}" >>$@; done
+# FIXME: UTF8 encoding
+# echo '\section{UTF-8 scripts}' >>$@
+# for i in $(DOCS_UTF8); do echo "\\input{$$i}" >>$@; done
+# echo '\ienc{utf8}' >>$@
+
+# whether to build docs
+
+@BUILDDOCS_TRUE@@BUILDRULES_TRUE@alphabets-doc.pdf : alphabets-doc.tex alphabets-inc.tex
+@BUILDDOCS_TRUE@@BUILDRULES_TRUE@ $(PDFLATEX) -interaction nonstopmode $(srcdir)/alphabets-doc.tex
+@BUILDDOCS_TRUE@@BUILDRULES_TRUE@ $(PDFLATEX) -interaction nonstopmode $(srcdir)/alphabets-doc.tex
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/Makefile.am
new file mode 100644
index 00000000000..db04ad10d1f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/albanian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ albanian/latin1-lang.xdy \
+ albanian/latin1-test.xdy \
+ albanian/latin1.xdy \
+ albanian/utf8-lang.xdy \
+ albanian/utf8-test.xdy \
+ albanian/utf8.xdy
+
+EXTRA_DIST += \
+ albanian/latin1.pl \
+ albanian/utf8.pl.in
+
+DISTCLEANFILES += \
+ albanian/utf8.pl
+
+DOCS_LATIN1 += \
+ albanian/latin1-doc.tex
+DOCS_UTF8_LAT += \
+ albanian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/latin1.pl
new file mode 100644
index 00000000000..632fb12db52
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/latin1.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Albanian";
+$prefix = "sq";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+['Dh', ['dh','Dh','DH']],
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+['Ë', ['ë','Ë']],
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+['Gj', ['gj','Gj','GJ']],
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+['Ll', ['ll','Ll','LL']],
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+['M', ['m','M']],
+['N', ['n','N']],
+['Nj', ['nj','Nj','NJ']],
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+['Rr', ['rr','Rr','RR']],
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+['Sh', ['sh','Sh','SH']],
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+['Th', ['th','Th','TH']],
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+['Xh', ['xh','Xh','XH']],
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+['Zh', ['zh','Zh','ZH']],
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/utf8.pl.in
new file mode 100644
index 00000000000..78f5da4b373
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/albanian/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Albanian";
+$prefix = "sq";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+['Dh', ['dh','Dh','DH']],
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+['Ë', ['ë','Ë']],
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+['Gj', ['gj','Gj','GJ']],
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+['Ll', ['ll','Ll','LL']],
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+['M', ['m','M']],
+['N', ['n','N']],
+['Nj', ['nj','Nj','NJ']],
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+['Rr', ['rr','Rr','RR']],
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+['Sh', ['sh','Sh','SH']],
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+['Th', ['th','Th','TH']],
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+['Xh', ['xh','Xh','XH']],
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+['Zh', ['zh','Zh','ZH']],
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/alphabets-doc.tex b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/alphabets-doc.tex
new file mode 100644
index 00000000000..b9bacfd470a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/alphabets-doc.tex
@@ -0,0 +1,39 @@
+\documentclass{report}
+\usepackage[noheadfoot,margin=.5cm]{geometry}
+\usepackage[TS1,LGR,T2A,T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[cp1252,latin1,cp850,latin2,cp1250,latin3,latin4,latin5,latin9,cp1251]{inputenc}
+\newcommand{\idef}{\inputencoding{cp1252}}
+\newcommand{\fdef}{\fontencoding{T1}\selectfont}
+\newcommand{\icod}{\inputencoding{cp1252}}
+\newcommand{\fcod}{\fontencoding{T1}\selectfont}
+\newcommand{\ienc}[1]{\renewcommand{\icod}{\inputencoding{#1}}}
+\newcommand{\fenc}[1]{\renewcommand{\fcod}{\fontencoding{#1}\selectfont}}
+\newenvironment{alphabet}{\begin{tabular}{*{16}{l}}%
+ &
+ \small (\v{}) & \small (\'{}) & \small (\`{}) & \small (\u{}) &
+ \small (\^{}) & \small (\~{}) & \small (\r{}) & \small (\"{}) &
+ \small (,) & \small (\c{}) & \small (k{}) & \small (\.{}) &
+ \small (-) & \small (\={}) & \small (?)\\}{\end{tabular}}
+\setcounter{tocdepth}{2}
+
+\renewcommand*{\contentsname}{\begin{center}
+{Alphabets} \\
+\texttt{\Large Generated by \tt make-rules.pl \\}
+\normalsize{\textnormal{\today}}
+\end{center}}
+
+\begin{document}
+
+%\maketitle
+
+%\begin{center}
+%{\LARGE Alphabets} ---
+%\texttt{\Large Generated by \tt make-rules.pl} --
+% \large \today
+%\end{center}
+
+\tableofcontents
+\newpage
+\input{alphabets-inc.tex}
+\end{document}
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/Makefile.am
new file mode 100644
index 00000000000..99e7d734c2f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/Makefile.am
@@ -0,0 +1,52 @@
+## Makefile.am fragment for alphabets/belarusian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ belarusian/cp1251-lang.xdy \
+ belarusian/cp1251-test.xdy \
+ belarusian/cp1251.xdy \
+ belarusian/iso88595-lang.xdy \
+ belarusian/iso88595-test.xdy \
+ belarusian/iso88595.xdy \
+ belarusian/isoir111-lang.xdy \
+ belarusian/isoir111-test.xdy \
+ belarusian/isoir111.xdy \
+ belarusian/utf8-lang.xdy \
+ belarusian/utf8-test.xdy \
+ belarusian/utf8.xdy
+
+EXTRA_DIST += \
+ belarusian/cp1251.pl \
+ belarusian/iso88595.pl \
+ belarusian/isoir111.pl \
+ belarusian/utf8.pl.in
+
+DISTCLEANFILES += \
+ belarusian/utf8.pl
+
+DOCS_CYR_1251 += \
+ belarusian/cp1251-doc.tex
+DOCS_CYR_ISO88595 += \
+ belarusian/iso88595-doc.tex
+DOCS_CYR_ISOIR111 += \
+ belarusian/isoir111-doc.tex
+DOCS_UTF8_CYR += \
+ belarusian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/cp1251.pl
new file mode 100644
index 00000000000..3880a2c9a9f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Belarusian";
+$prefix = "be";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+ [], # ghe with upturn (ukrainian)
+['Ä', ['ä','Ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Å', ['å','Å'],['¸','¨']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dze (macedonian)
+['È', ['è','È']],
+['²', ['³','²']],
+ [], # yi (ukrainian)
+['É', ['é','É']],
+ [], # je (macedonian, serbian)
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+ [], # lje (macedonian, serbian)
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+ [], # nje (macedonian, serbian)
+['Î', ['î','Î']],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð']],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ó', ['ó','Ó']],
+['¡', ['¢','¡']],
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+ [], # dzhe (macedonian, serbian)
+['Ø', ['ø','Ø']],
+['Ù', ['ù','Ù']],
+['Ú', ['ú','Ú']],
+['Û', ['û','Û']],
+['Ü', ['ü','Ü']],
+ [],
+['Ý', ['ý','Ý']],
+['Þ', ['þ','Þ']],
+['ß', ['ÿ','ß']],
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/iso88595.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/iso88595.pl
new file mode 100644
index 00000000000..edbcdb109ea
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/iso88595.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Belarusian";
+$prefix = "be";
+$script = "cyrillic";
+
+$alphabet = [
+['°', ['Ð','°']],
+['±', ['Ñ','±']],
+['²', ['Ò','²']],
+['³', ['Ó','³']],
+ [], # ghe with upturn (ukrainian)
+['´', ['Ô','´']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['µ', ['Õ','µ'],['ñ','¡']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['¶', ['Ö','¶']],
+['·', ['×','·']],
+ [], # dze (macedonian)
+['¸', ['Ø','¸']],
+['¦', ['ö','¦']],
+ [], # yi (ukrainian)
+['¹', ['Ù','¹']],
+ [], # je (macedonian, serbian)
+['º', ['Ú','º']],
+['»', ['Û','»']],
+ [], # lje (macedonian, serbian)
+['¼', ['Ü','¼']],
+['½', ['Ý','½']],
+ [], # nje (macedonian, serbian)
+['¾', ['Þ','¾']],
+ [], # barred o (mongolian)
+['¿', ['ß','¿']],
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ã', ['ã','Ã']],
+['®', ['þ','®']],
+ [], # straight u (mongolian)
+['Ä', ['ä','Ä']],
+['Å', ['å','Å']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dzhe (macedonian, serbian)
+['È', ['è','È']],
+['É', ['é','É']],
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+['Ì', ['ì','Ì']],
+ [],
+['Í', ['í','Í']],
+['Î', ['î','Î']],
+['Ï', ['ï','Ï']],
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/isoir111.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/isoir111.pl
new file mode 100644
index 00000000000..55905ff7559
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/isoir111.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Belarusian";
+$prefix = "be";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á']],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+ [], # ghe with upturn (ukrainian)
+['ä', ['Ä','ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['å', ['Å','å'],['£','³']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+ [], # dze (macedonian)
+['é', ['É','é']],
+['¶', ['¦','¶']],
+ [], # yi (ukrainian)
+['ê', ['Ê','ê']],
+ [], # je (macedonian, serbian)
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+ [], # lje (macedonian, serbian)
+['í', ['Í','í']],
+['î', ['Î','î']],
+ [], # nje (macedonian, serbian)
+['ï', ['Ï','ï']],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò']],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['õ', ['Õ','õ']],
+['¾', ['®','¾']],
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+ [], # dzhe (macedonian, serbian)
+['û', ['Û','û']],
+['ý', ['Ý','ý']],
+['ÿ', ['ß','ÿ']],
+['ù', ['Ù','ù']],
+['ø', ['Ø','ø']],
+ [],
+['ü', ['Ü','ü']],
+['à', ['À','à']],
+['ñ', ['Ñ','ñ']],
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/utf8.pl.in
new file mode 100644
index 00000000000..6d2cfd55832
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/belarusian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Belarusian";
+$prefix = "be";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð']],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Е', ['е','Е'],['Ñ‘','Ð']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И']],
+['І', ['і','І']],
+ [], # yi (ukrainian)
+['Й', ['й','Й']],
+ [], # je (macedonian, serbian)
+['К', ['к','К']],
+['Л', ['л','Л']],
+ [], # lje (macedonian, serbian)
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+ [], # nje (macedonian, serbian)
+['О', ['о','О']],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['У', ['у','У']],
+['ÐŽ', ['Ñž','ÐŽ']],
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+ [], # dzhe (macedonian, serbian)
+['Ш', ['ш','Ш']],
+['Щ', ['щ','Щ']],
+['Ъ', ['ъ','Ъ']],
+['Ы', ['ы','Ы']],
+['Ь', ['ь','Ь']],
+ [],
+['Э', ['Ñ','Э']],
+['Ю', ['ю','Ю']],
+['Я', ['Ñ','Я']],
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/Makefile.am
new file mode 100644
index 00000000000..36b2b9a339a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/Makefile.am
@@ -0,0 +1,52 @@
+## Makefile.am fragment for alphabets/bulgarian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ bulgarian/cp1251-lang.xdy \
+ bulgarian/cp1251-test.xdy \
+ bulgarian/cp1251.xdy \
+ bulgarian/iso88595-lang.xdy \
+ bulgarian/iso88595-test.xdy \
+ bulgarian/iso88595.xdy \
+ bulgarian/koi8-r-lang.xdy \
+ bulgarian/koi8-r-test.xdy \
+ bulgarian/koi8-r.xdy \
+ bulgarian/utf8-lang.xdy \
+ bulgarian/utf8-test.xdy \
+ bulgarian/utf8.xdy
+
+EXTRA_DIST += \
+ bulgarian/cp1251.pl \
+ bulgarian/iso88595.pl \
+ bulgarian/koi8-r.pl \
+ bulgarian/utf8.pl.in
+
+DISTCLEANFILES += \
+ bulgarian/utf8.pl
+
+DOCS_CYR_1251 += \
+ bulgarian/cp1251-doc.tex
+DOCS_CYR_ISO88595 += \
+ bulgarian/iso88595-doc.tex
+DOCS_CYR_KOI8_R += \
+ bulgarian/koi8-r-doc.tex
+DOCS_UTF8_CYR += \
+ bulgarian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/cp1251.pl
new file mode 100644
index 00000000000..b18ba01af3f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Bulgarian";
+$prefix = "bg";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+ [], # ghe with upturn (ukrainian)
+['Ä', ['ä','Ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Å', ['å','Å']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dze (macedonian)
+['È', ['è','È']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+['É', ['é','É']],
+ [], # je (macedonian, serbian)
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+ [], # lje (macedonian, serbian)
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+ [], # nje (macedonian, serbian)
+['Î', ['î','Î']],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð']],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ó', ['ó','Ó']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+ [], # dzhe (macedonian, serbian)
+['Ø', ['ø','Ø']],
+['Ù', ['ù','Ù']],
+['Ú', ['ú','Ú']],
+ [], # yeru (belarusian, russian)
+['Ü', ['ü','Ü']],
+ [],
+ [], # e (belarusian, russian)
+['Þ', ['þ','Þ']],
+['ß', ['ÿ','ß']],
+ [],
+[],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/iso88595.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/iso88595.pl
new file mode 100644
index 00000000000..a745b534f38
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/iso88595.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Bulgarian";
+$prefix = "bg";
+$script = "cyrillic";
+
+$alphabet = [
+['°', ['Ð','°']],
+['±', ['Ñ','±']],
+['²', ['Ò','²']],
+['³', ['Ó','³']],
+ [], # ghe with upturn (ukrainian)
+['´', ['Ô','´']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['µ', ['Õ','µ']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['¶', ['Ö','¶']],
+['·', ['×','·']],
+ [], # dze (macedonian)
+['¸', ['Ø','¸']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+['¹', ['Ù','¹']],
+ [], # je (macedonian, serbian)
+['º', ['Ú','º']],
+['»', ['Û','»']],
+ [], # lje (macedonian, serbian)
+['¼', ['Ü','¼']],
+['½', ['Ý','½']],
+ [], # nje (macedonian, serbian)
+['¾', ['Þ','¾']],
+ [], # barred o (mongolian)
+['¿', ['ß','¿']],
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ã', ['ã','Ã']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ä', ['ä','Ä']],
+['Å', ['å','Å']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dzhe (macedonian, serbian)
+['È', ['è','È']],
+['É', ['é','É']],
+['Ê', ['ê','Ê']],
+ [], # yeru (belarusian, russian)
+['Ì', ['ì','Ì']],
+ [],
+ [], # e (belarusian, russian)
+['Î', ['î','Î']],
+['Ï', ['ï','Ï']],
+ [],
+[],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/koi8-r.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/koi8-r.pl
new file mode 100644
index 00000000000..79e53a25250
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/koi8-r.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Bulgarian";
+$prefix = "bg";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á']],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+ [], # ghe with upturn (ukrainian)
+['ä', ['Ä','ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['å', ['Å','å']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+ [], # dze (macedonian)
+['é', ['É','é']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+['ê', ['Ê','ê']],
+ [], # je (macedonian, serbian)
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+ [], # lje (macedonian, serbian)
+['í', ['Í','í']],
+['î', ['Î','î']],
+ [], # nje (macedonian, serbian)
+['ï', ['Ï','ï']],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò']],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['õ', ['Õ','õ']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+ [], # dzhe (macedonian, serbian)
+['û', ['Û','û']],
+['ý', ['Ý','ý']],
+['ÿ', ['ß','ÿ']],
+ [], # yeru (belarusian, russian)
+['ø', ['Ø','ø']],
+ [],
+ [], # e (belarusian, russian)
+['à', ['À','à']],
+['ñ', ['Ñ','ñ']],
+ [],
+[],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/utf8.pl.in
new file mode 100644
index 00000000000..c9393a1a0a7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/bulgarian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Bulgarian";
+$prefix = "bg";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð']],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Е', ['е','Е']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+['Й', ['й','Й']],
+ [], # je (macedonian, serbian)
+['К', ['к','К']],
+['Л', ['л','Л']],
+ [], # lje (macedonian, serbian)
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+ [], # nje (macedonian, serbian)
+['О', ['о','О']],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['У', ['у','У']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+ [], # dzhe (macedonian, serbian)
+['Ш', ['ш','Ш']],
+['Щ', ['щ','Щ']],
+['Ъ', ['ъ','Ъ']],
+ [], # yeru (belarusian, russian)
+['Ь', ['ь','Ь']],
+ [],
+ [], # e (belarusian, russian)
+['Ю', ['ю','Ю']],
+['Я', ['Ñ','Я']],
+ [],
+[@u{'Ѫ', ['ѫ','Ѫ']}],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/Makefile.am
new file mode 100644
index 00000000000..24cc130f875
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/croatian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ croatian/cp1250-lang.xdy \
+ croatian/cp1250-test.xdy \
+ croatian/cp1250.xdy \
+ croatian/latin2-lang.xdy \
+ croatian/latin2-test.xdy \
+ croatian/latin2.xdy \
+ croatian/utf8-lang.xdy \
+ croatian/utf8-test.xdy \
+ croatian/utf8.xdy
+
+EXTRA_DIST += \
+ croatian/cp1250.pl \
+ croatian/latin2.pl \
+ croatian/utf8.pl.in
+
+DISTCLEANFILES += \
+ croatian/utf8.pl
+
+DOCS_CP1250 += \
+ croatian/cp1250-doc.tex
+DOCS_LATIN2 += \
+ croatian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ croatian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/cp1250.pl
new file mode 100644
index 00000000000..ef624f39335
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/cp1250.pl
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Croatian";
+$prefix = "hr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'] ],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È']],
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+['Dž', ['dž','Dž','DŽ']],
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+['Ð', ['ð','Ð']],
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'] ],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G'] ],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'] ],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K'] ],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['Lj', ['lj','Lj','LJ']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+['Nj', ['nj','Nj','NJ']],
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'] ],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] ],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'] ],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+
+
+
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/latin2.pl
new file mode 100644
index 00000000000..5f94c9c0321
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/latin2.pl
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Croatian";
+$prefix = "hr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'] ],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È']],
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+['D¾', ['d¾','D¾','D®']],
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+['Ð', ['ð','Ð']],
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'] ],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G'] ],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'] ],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K'] ],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['Lj', ['lj','Lj','LJ']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+['Nj', ['nj','Nj','NJ']],
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'] ],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] ],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'] ],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+
+
+
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/utf8.pl.in
new file mode 100644
index 00000000000..ec71a6d608a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/croatian/utf8.pl.in
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Croatian";
+$prefix = "hr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'] @u{,['à','À'],['È','È€'],['ȃ','È‚']}],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+['Ć', ['ć','Ć']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+['Dž', ['dž','Dž','DŽ']],
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+['Ä', ['Ä‘','Ä']],
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'] @u{,['è','È'],['ȅ','Ȅ'],['ȇ','Ȇ']}],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G'] @u{,['ǵ','Ǵ']}],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'] @u{,['ì','Ì'],['ȉ','Ȉ'],['ȋ','Ȋ']}],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K'] @u{,['ḱ','Ḱ']}],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['Lj', ['lj','Lj','LJ']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+['Nj', ['nj','Nj','NJ']],
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'] @u{,['ò','Ã’'],['È','ÈŒ'],['È','ÈŽ']}],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] @u{,['È‘','È'],['È“','È’']}],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'] @u{,['ù','Ù'],['ȕ','Ȕ'],['ȗ','Ȗ']}],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+@u{[['dz','Dz','DZ'], 'after', [['d','z'],['D','z'],['D','Z']]],}
+@u{[['dž','Dž','DŽ'], 'after', [['d','ž'],['D','ž'],['D','Ž']]],}
+@u{[['lj','Lj','LJ'], 'after', [['l','j'],['L','j'],['L','J']]],}
+@u{[['nj','Nj','NJ'], 'after', [['n','j'],['N','j'],['N','J']]]}
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/Makefile.am
new file mode 100644
index 00000000000..a3cfb03ed9c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/czech/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ czech/cp1250-lang.xdy \
+ czech/cp1250-test.xdy \
+ czech/cp1250.xdy \
+ czech/latin2-lang.xdy \
+ czech/latin2-test.xdy \
+ czech/latin2.xdy \
+ czech/utf8-lang.xdy \
+ czech/utf8-test.xdy \
+ czech/utf8.xdy
+
+EXTRA_DIST += \
+ czech/cp1250.pl \
+ czech/latin2.pl \
+ czech/utf8.pl.in
+
+DISTCLEANFILES += \
+ czech/utf8.pl
+
+DOCS_CP1250 += \
+ czech/cp1250-doc.tex
+DOCS_LATIN2 += \
+ czech/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ czech/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/cp1250.pl
new file mode 100644
index 00000000000..a8dda762d5f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/cp1250.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Czech";
+$prefix = "cs";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['ï','Ï']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É'], ['ì','Ì']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ò','Ò']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['','']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/latin2.pl
new file mode 100644
index 00000000000..7af4d817e4c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/latin2.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Czech";
+$prefix = "cs";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['ï','Ï']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É'], ['ì','Ì']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ò','Ò']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['»','«']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/utf8.pl.in
new file mode 100644
index 00000000000..b4e189dd06b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/czech/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Czech";
+$prefix = "cs";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Ã'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['Ä','ÄŽ']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É'], ['ě','Ě']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ň','Ň']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ř', ['ř','Ř']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['ť','Ť']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ů','Ů'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ã']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/Makefile.am
new file mode 100644
index 00000000000..7520324bca2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/danish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ danish/cp1252-lang.xdy \
+ danish/cp1252-test.xdy \
+ danish/cp1252.xdy \
+ danish/latin9-lang.xdy \
+ danish/latin9-test.xdy \
+ danish/latin9.xdy \
+ danish/utf8-lang.xdy \
+ danish/utf8-test.xdy \
+ danish/utf8.xdy
+
+EXTRA_DIST += \
+ danish/cp1252.pl \
+ danish/latin9.pl \
+ danish/utf8.pl.in
+
+DISTCLEANFILES += \
+ danish/utf8.pl
+
+DOCS_CP1252 += \
+ danish/cp1252-doc.tex
+DOCS_LATIN9 += \
+ danish/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ danish/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/cp1252.pl
new file mode 100644
index 00000000000..dd3e3dedae2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/cp1252.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Danish";
+$prefix = "da";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+['Æ', ['æ','Æ']],
+['Ø', ['ø','Ø'],['ö','Ö'],['œ','Œ']],
+['Å', ['å','Å'],['aa','Aa','AA']],
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['þ','Þ'], 'after', [['t','h'], ['T','h']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/latin9.pl
new file mode 100644
index 00000000000..89ee37be0ae
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/latin9.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Danish";
+$prefix = "da";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+['Æ', ['æ','Æ']],
+['Ø', ['ø','Ø'],['ö','Ö'],['½','¼']],
+['Å', ['å','Å'],['aa','Aa','AA']],
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['þ','Þ'], 'after', [['t','h'], ['T','h']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/utf8.pl.in
new file mode 100644
index 00000000000..dca83190cfc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/danish/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Danish";
+$prefix = "da";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ã']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ã'],['ü','Ãœ']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+['Æ', ['æ','Æ']@u{,['ǽ','Ǽ']}],
+['Ø', ['ø','Ø'],@u{['ǿ','Ǿ'],}['ö','Ö'],['œ','Œ']],
+['Å', ['å','Å'],['aa','Aa','AA']@u{,['ǻ','Ǻ']}],
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['þ','Þ'], 'after', [['t','h'], ['T','h']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/Makefile.am
new file mode 100644
index 00000000000..a9c944bef29
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/dutch/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ dutch/ij-as-ij-latin1-lang.xdy \
+ dutch/ij-as-ij-latin1-test.xdy \
+ dutch/ij-as-ij-latin1.xdy \
+ dutch/ij-as-ij-utf8-lang.xdy \
+ dutch/ij-as-ij-utf8-test.xdy \
+ dutch/ij-as-ij-utf8.xdy \
+ dutch/ij-as-y-utf8-lang.xdy \
+ dutch/ij-as-y-utf8-test.xdy \
+ dutch/ij-as-y-utf8.xdy
+
+EXTRA_DIST += \
+ dutch/ij-as-ij-latin1.pl \
+ dutch/ij-as-y-utf8.pl.in \
+ dutch/ij-as-ij-utf8.pl.in
+
+DISTCLEANFILES += \
+ dutch/ij-as-ij-utf8.pl \
+ dutch/ij-as-y-utf8.pl
+
+DOCS_LATIN1 += \
+ dutch/ij-as-ij-latin1-doc.tex
+DOCS_UTF8_LAT += \
+ dutch/ij-as-ij-utf8-doc.tex \
+ dutch/ij-as-y-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-latin1.pl
new file mode 100644
index 00000000000..9704c976872
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-latin1.pl
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+# Not quite sure about this -- MV
+
+$language = "Dutch";
+$variant = "Ligature IJ sorted as I+J";
+$prefix = "nl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['ë','Ë'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-utf8.pl.in
new file mode 100644
index 00000000000..a457eb90dc2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-ij-utf8.pl.in
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+# Not quite sure about this -- MV
+
+$language = "Dutch";
+$variant = "Ligature IJ sorted as I+J";
+$prefix = "nl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['ë','Ë'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+@u{[['ij','IJ'], 'after', [['i','j'], ['I','j']]]}
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-y-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-y-utf8.pl.in
new file mode 100644
index 00000000000..befbec9d89e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/dutch/ij-as-y-utf8.pl.in
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+# Not quite sure about this -- MV
+
+$language = "Dutch";
+$variant = "Ligature IJ sorted as Y";
+$prefix = "nl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['ë','Ë'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']@u{,['ij','IJ']}],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/Makefile.am
new file mode 100644
index 00000000000..42a13e03de3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/english/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ english/cp1252-lang.xdy \
+ english/cp1252-test.xdy \
+ english/cp1252.xdy \
+ english/latin9-lang.xdy \
+ english/latin9-test.xdy \
+ english/latin9.xdy \
+ english/utf8-lang.xdy \
+ english/utf8-test.xdy \
+ english/utf8.xdy
+
+EXTRA_DIST += \
+ english/cp1252.pl \
+ english/latin9.pl \
+ english/utf8.pl.in
+
+DISTCLEANFILES += \
+ english/utf8.pl
+
+DOCS_CP1252 += \
+ english/cp1252-doc.tex
+DOCS_LATIN9 += \
+ english/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ english/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/cp1252.pl
new file mode 100644
index 00000000000..1cea424628d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/cp1252.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "English";
+$prefix = "en";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/latin9.pl
new file mode 100644
index 00000000000..bafb500811c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/latin9.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "English";
+$prefix = "en";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['½','¼'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/utf8.pl.in
new file mode 100644
index 00000000000..2574685bd23
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/english/utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "English";
+$prefix = "en";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ã']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[@u{'Èœ', ['È','Èœ']}],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[@u{'Æ¿', ['Æ¿','Ç·']}],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['Å“','Å’'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/Makefile.am
new file mode 100644
index 00000000000..5c8f11fbf40
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/esperanto/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ esperanto/latin3-lang.xdy \
+ esperanto/latin3-test.xdy \
+ esperanto/latin3.xdy \
+ esperanto/utf8-lang.xdy \
+ esperanto/utf8-test.xdy \
+ esperanto/utf8.xdy
+
+EXTRA_DIST += \
+ esperanto/latin3.pl \
+ esperanto/utf8.pl.in
+
+DISTCLEANFILES += \
+ esperanto/utf8.pl
+
+DOCS_LATIN3 += \
+ esperanto/latin3-doc.tex
+DOCS_UTF8_LAT += \
+ esperanto/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/latin3.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/latin3.pl
new file mode 100644
index 00000000000..9a77c47ad9c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/latin3.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Esperanto";
+$prefix = "eo";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+['Æ', ['æ','Æ']],
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+['Ø', ['ø','Ø']],
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+['¦', ['¶','¦']],
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+['¬', ['¼','¬']],
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+['Þ', ['þ','Þ']],
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+['Ý', ['ý','Ý']],
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/utf8.pl.in
new file mode 100644
index 00000000000..5bec57dee84
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/esperanto/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Esperanto";
+$prefix = "eo";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+['Ĉ', ['ĉ','Ĉ']],
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+['Äœ', ['Ä','Äœ']],
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+['Ĥ', ['ĥ','Ĥ']],
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+['Ĵ', ['ĵ','Ĵ']],
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+['Åœ', ['Å','Åœ']],
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+['Ŭ', ['ŭ','Ŭ']],
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/Makefile.am
new file mode 100644
index 00000000000..44648e0a9d5
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/estonian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ estonian/cp1252-lang.xdy \
+ estonian/cp1252-test.xdy \
+ estonian/cp1252.xdy \
+ estonian/latin9-lang.xdy \
+ estonian/latin9-test.xdy \
+ estonian/latin9.xdy \
+ estonian/utf8-lang.xdy \
+ estonian/utf8-test.xdy \
+ estonian/utf8.xdy
+
+EXTRA_DIST += \
+ estonian/cp1252.pl \
+ estonian/latin9.pl \
+ estonian/utf8.pl.in
+
+DISTCLEANFILES += \
+ estonian/utf8.pl
+
+DOCS_CP1252 += \
+ estonian/cp1252-doc.tex
+DOCS_LATIN9 += \
+ estonian/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ estonian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/cp1252.pl
new file mode 100644
index 00000000000..9a036a1c4d7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/cp1252.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Estonian";
+$prefix = "et";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+['Z', ['z','Z']],
+['Ž', ['ž','Ž']],
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'],['w','W']],
+ [], # w (many)
+['Õ', ['õ','Õ']],
+['Ä', ['ä','Ä']],
+['Ö', ['ö','Ö']],
+['Ü', ['ü','Ü']],
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+ [], # z (many)
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/latin9.pl
new file mode 100644
index 00000000000..773772d6000
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/latin9.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Estonian";
+$prefix = "et";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['¦', ['¨','¦']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+['Z', ['z','Z']],
+['´', ['¸','´']],
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'],['w','W']],
+ [], # w (many)
+['Õ', ['õ','Õ']],
+['Ä', ['ä','Ä']],
+['Ö', ['ö','Ö']],
+['Ü', ['ü','Ü']],
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+ [], # z (many)
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/utf8.pl.in
new file mode 100644
index 00000000000..fece7fb6642
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/estonian/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Estonian";
+$prefix = "et";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+['Z', ['z','Z']],
+['Ž', ['ž','Ž']],
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'],['w','W']],
+ [], # w (many)
+['Õ', ['õ','Õ']],
+['Ä', ['ä','Ä']],
+['Ö', ['ö','Ö']],
+['Ü', ['ü','Ü']],
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+ [], # z (many)
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/Makefile.am
new file mode 100644
index 00000000000..d420d91e3f4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/finnish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ finnish/cp1252-lang.xdy \
+ finnish/cp1252-test.xdy \
+ finnish/cp1252.xdy \
+ finnish/latin9-lang.xdy \
+ finnish/latin9-test.xdy \
+ finnish/latin9.xdy \
+ finnish/utf8-lang.xdy \
+ finnish/utf8-test.xdy \
+ finnish/utf8.xdy
+
+EXTRA_DIST += \
+ finnish/cp1252.pl \
+ finnish/latin9.pl \
+ finnish/utf8.pl.in
+
+DISTCLEANFILES += \
+ finnish/utf8.pl
+
+DOCS_CP1252 += \
+ finnish/cp1252-doc.tex
+DOCS_LATIN9 += \
+ finnish/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ finnish/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/cp1252.pl
new file mode 100644
index 00000000000..01624cfa4cf
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/cp1252.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Finnish";
+$prefix = "fi";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['š','Š']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Å', ['å','Å']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø'],['õ','Õ']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/latin9.pl
new file mode 100644
index 00000000000..a7b71077b45
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/latin9.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Finnish";
+$prefix = "fi";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['¨','¦']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['¸','´']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Å', ['å','Å']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø'],['õ','Õ']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/utf8.pl.in
new file mode 100644
index 00000000000..ecc5ba6e173
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/finnish/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Finnish";
+$prefix = "fi";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['Å¡','Å ']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Ã…', ['Ã¥','Ã…']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø'],['õ','Õ']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/Makefile.am
new file mode 100644
index 00000000000..8d2d6756a3c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/french/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ french/cp1252-lang.xdy \
+ french/cp1252-test.xdy \
+ french/cp1252.xdy \
+ french/latin9-lang.xdy \
+ french/latin9-test.xdy \
+ french/latin9.xdy \
+ french/utf8-lang.xdy \
+ french/utf8-test.xdy \
+ french/utf8.xdy
+
+EXTRA_DIST += \
+ french/cp1252.pl \
+ french/latin9.pl \
+ french/utf8.pl.in
+
+DISTCLEANFILES += \
+ french/utf8.pl
+
+DOCS_CP1252 += \
+ french/cp1252-doc.tex
+DOCS_LATIN9 += \
+ french/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ french/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/cp1252.pl
new file mode 100644
index 00000000000..36a261558bb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/cp1252.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "French";
+$prefix = "fr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â'],['à','À'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['ê','Ê'],['è','È'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ô','Ô'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û'],['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ÿ','Ÿ']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zs (hungarian)
+ [], # zh (albanian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/latin9.pl
new file mode 100644
index 00000000000..8fe8ea0e09e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/latin9.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "French";
+$prefix = "fr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â'],['à','À'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['ê','Ê'],['è','È'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ô','Ô'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û'],['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ÿ','¾']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zs (hungarian)
+ [], # zh (albanian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['½','¼'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/utf8.pl.in
new file mode 100644
index 00000000000..d81ebf37579
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/french/utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "French";
+$prefix = "fr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â'],['à','À'],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['ê','Ê'],['è','È'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['î','ÃŽ'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ô','Ô'],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û'],['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ÿ','Ÿ']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zs (hungarian)
+ [], # zh (albanian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['Å“','Å’'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/Makefile.am
new file mode 100644
index 00000000000..9e0f8a86de1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/Makefile.am
@@ -0,0 +1,53 @@
+## Makefile.am fragment for alphabets/general/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ general/cp1252-lang.xdy \
+ general/cp1252-test.xdy \
+ general/cp1252.xdy \
+ general/cp850-lang.xdy \
+ general/cp850-test.xdy \
+ general/cp850.xdy \
+ general/latin9-lang.xdy \
+ general/latin9-test.xdy \
+ general/latin9.xdy \
+ general/utf8-lang.xdy \
+ general/utf8-test.xdy \
+ general/utf8.xdy
+
+EXTRA_DIST += \
+ general/cp1252.pl \
+ general/cp850.pl \
+ general/latin9.pl \
+ general/template.pl \
+ general/utf8.pl.in
+
+DISTCLEANFILES += \
+ general/utf8.pl
+
+DOCS_CP1252 += \
+ general/cp1252-doc.tex
+DOCS_CP850 += \
+ general/cp850-doc.tex
+DOCS_LATIN9 += \
+ general/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ general/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp1252.pl
new file mode 100644
index 00000000000..eb1c5c60229
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp1252.pl
@@ -0,0 +1,150 @@
+#!/usr/bin/perl
+
+$language = "A general sorting order for Western European languages";
+$prefix = "xy";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â'],['ã','Ã'],['å','Å'],
+ ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì'],['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô'],['õ','Õ'],['ö','Ö'],
+ ['ø','Ø']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'],['š','Š']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['û','Û'],['ü','Ü'],
+ ],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ÿ','Ÿ']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'],['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp850.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp850.pl
new file mode 100644
index 00000000000..cbc98fee23f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/cp850.pl
@@ -0,0 +1,150 @@
+#!/usr/bin/perl
+
+$language = "A general sorting order for Western European languages";
+$prefix = "xy";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],[' ','µ'],['…','·'],['ƒ','¶'],['Æ','Ç'],['†',''],
+ ['„','Ž']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['‡','€']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['‚',''],['Š','Ô'],['ˆ','Ò'],['‰','Ó']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['¡','Ö'],['','Þ'],['Œ','×'],['‹','Ø']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['¤','¥']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['¢','à'],['•','ã'],['“','â'],['ä','å'],['”','™'],
+ ['›','']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['£','é'],['—','ë'],['–','ê'],['','š'],
+ ],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ì','í'],['˜']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['á'], 'after', [['s','s']]],
+[['‘','’'], 'after', [['a','e'], ['A','e']]],
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/latin9.pl
new file mode 100644
index 00000000000..0be6256bd6c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/latin9.pl
@@ -0,0 +1,150 @@
+#!/usr/bin/perl
+
+$language = "A general sorting order for Western European languages";
+$prefix = "xy";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â'],['ã','Ã'],['å','Å'],
+ ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì'],['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô'],['õ','Õ'],['ö','Ö'],
+ ['ø','Ø']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'],['¨','¦']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['û','Û'],['ü','Ü'],
+ ],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ÿ','¾']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'],['¸','´']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['½','¼'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/template.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/template.pl
new file mode 100644
index 00000000000..7aca3c2f984
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/template.pl
@@ -0,0 +1,150 @@
+#!/usr/bin/perl
+
+$language = "Template";
+$prefix = "??";
+$script = "latin";
+
+# preferred order of diacritics of not specified otherwise:
+# go from little to big, from non-touching to touching
+
+# caron acute grave dot-above breve circumflex tilde
+# ring-above diaeresis comma-below cedilla ogonek stroke
+
+$alphabet = [
+ [], # a (many)
+ [], # a with breve (romanian, vietnamese)
+ [], # a with circumflex (romanian, vietnamese)
+ [], # a with ogonek (polish)
+ [], # b (many)
+ [], # b with hook (hausa)
+ [], # c (many)
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+ [], # d (many)
+ [], # dh (albanian)
+ [], # dz (hungarian, gypsy/northrussian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian, vietnamese)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+ [], # e (many)
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish, vietnamese)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+ [], # f (many)
+ [], # g (many)
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+ [], # h (many)
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+ [], # i (many)
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+ [], # j (many)
+ [], # j with circumflex (esperanto)
+ [], # k (many)
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+ [], # l (many)
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # m (many)
+ [], # n (many)
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+ [], # o (many)
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+ [], # p (many)
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+ [], # r (many)
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+ [], # s (many)
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+ [], # t (many)
+ [], # th (albanian, gypsy/northrussian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+ [], # u (many)
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+ [], # v (many)
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+ [], # x (many)
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+ [], # z (many)
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, icelandic, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/utf8.pl.in
new file mode 100644
index 00000000000..cc0dbe36fa7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/general/utf8.pl.in
@@ -0,0 +1,150 @@
+#!/usr/bin/perl
+
+$language = "A general sorting order for Western European languages";
+$prefix = "xy";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã'],['à','À'],@u{['ă','Ä‚'],}['â','Â'],['ã','Ã'],['Ã¥','Ã…'],
+ ['ä','Ä']@u{,['ą','Ą']}],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']@u{,['Ä','ÄŒ'],['ć','Ć'],['ĉ','Ĉ']},['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']@u{,['Ä','ÄŽ'],['Ä‘','Ä']}],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']@u{,['ě','Ě']},['é','É'],['è','È'],['ê','Ê'],['ë','Ë']@u{,['ę','Ę']}],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']@u{,['Ä','Äœ'],['ÄŸ','Äž']}],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']@u{,['ĥ','Ĥ']}],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']@u{,['ı'],['','Ä°']},['í','Ã'],['ì','ÃŒ'],['î','ÃŽ'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']@u{,['ĵ','Ĵ']}],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']@u{,['ľ','Ľ'],['Å‚','Å']}],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],@u{['ň','Ň'],['ń','Ń'],}['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ã’'],['ô','Ô'],['õ','Õ'],['ö','Ö']@u{,['Å‘','Å']},
+ ['ø','Ø']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']@u{,['ř','Ř'],['ŕ','Ŕ']}],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']@9{,['Å¡','Å ']}@u{,['Å›','Åš'],['Å','Åœ'],['È™','Ș'],['ÅŸ','Åž']}],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']@u{,['ť','Ť'],['ț','Ț']}],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù']@u{,['ŭ','Ŭ']},['û','Û']@u{,['ů','Ů']},['ü','Ü'],
+ @u{['ű','Ű']}],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ã'],['ÿ'@9{,'Ÿ'}]],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']@9{,['ž','Ž']}@u{,['ź','Ź'],['ż','Ż']}],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+@9{[['Å“','Å’'], 'after', [['o','e'], ['O','e']]]}
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/Makefile.am
new file mode 100644
index 00000000000..3c97de66aa7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/Makefile.am
@@ -0,0 +1,34 @@
+## Makefile.am fragment for alphabets/georgian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ georgian/utf8-lang.xdy \
+ georgian/utf8-test.xdy \
+ georgian/utf8.xdy
+
+EXTRA_DIST += \
+ georgian/utf8.pl.in
+
+DISTCLEANFILES += \
+ georgian/utf8.pl
+
+DOCS_UTF8_OTHER += \
+ georgian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/utf8.pl.in
new file mode 100644
index 00000000000..94e594e87db
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/georgian/utf8.pl.in
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+$language = "Georgian";
+$prefix = "ka";
+$script = "georgian";
+
+$alphabet = [
+['áƒ', ['áƒ']],
+['ბ', ['ბ']],
+['გ', ['გ']],
+['დ', ['დ']],
+['ე', ['ე']],
+['ვ', ['ვ']],
+['ზ', ['ზ']],
+['ჱ', ['ჱ']],
+['თ', ['თ']],
+['ი', ['ი']],
+['კ', ['კ']],
+['ლ', ['ლ']],
+['მ', ['მ']],
+['ნ', ['ნ']],
+['ჲ', ['ჲ']],
+['áƒ', ['áƒ']],
+['პ', ['პ']],
+['ჟ', ['ჟ']],
+['რ', ['რ']],
+['ს', ['ს']],
+['ტ', ['ტ']],
+['ჳ', ['ჳ']],
+['უ', ['უ']],
+['ფ', ['ფ']],
+['ქ', ['ქ']],
+['ღ', ['ღ']],
+['ყ', ['ყ']],
+['შ', ['შ']],
+['ჩ', ['ჩ']],
+['ც', ['ც']],
+['ძ', ['ძ']],
+['წ', ['წ']],
+['ჭ', ['ჭ']],
+['ხ', ['ხ']],
+['ჴ', ['ჴ']],
+['ჯ', ['ჯ']],
+['ჰ', ['ჰ']],
+['ჵ', ['ჵ']]
+];
+
+@special = ('?', '!', '.', ';', '·', 'letters', '-', '\'', '\\/');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/Makefile.am
new file mode 100644
index 00000000000..3b2a8e9eafd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/Makefile.am
@@ -0,0 +1,58 @@
+## Makefile.am fragment for alphabets/german/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ german/braille-utf8-lang.xdy \
+ german/braille-utf8-test.xdy \
+ german/braille-utf8.xdy \
+ german/din5007-latin1-lang.xdy \
+ german/din5007-latin1-test.xdy \
+ german/din5007-latin1.xdy \
+ german/din5007-utf8-lang.xdy \
+ german/din5007-utf8-test.xdy \
+ german/din5007-utf8.xdy \
+ german/duden-latin1-lang.xdy \
+ german/duden-latin1-test.xdy \
+ german/duden-latin1.xdy \
+ german/duden-utf8-lang.xdy \
+ german/duden-utf8-test.xdy \
+ german/duden-utf8.xdy
+
+EXTRA_DIST += \
+ german/braille-utf8.pl.in \
+ german/duden-latin1.pl \
+ german/din5007-latin1.pl \
+ german/duden-utf8.pl.in \
+ german/din5007-utf8.pl.in
+
+DISTCLEANFILES += \
+ german/braille-utf8.pl \
+ german/din5007-utf8.pl \
+ german/duden-utf8.pl
+
+DOCS_LATIN1 += \
+ german/din5007-latin1-doc.tex \
+ german/duden-latin1-doc.tex
+DOCS_UTF8_LAT += \
+ german/din5007-utf8-doc.tex \
+ german/duden-utf8-doc.tex
+DOCS_UTF8_OTHER += \
+ german/braille-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/braille-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/braille-utf8.pl.in
new file mode 100644
index 00000000000..aad74f2756f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/braille-utf8.pl.in
@@ -0,0 +1,156 @@
+#!/usr/bin/perl
+
+$language = "German";
+$variant = "Blindenvollschrift";
+$prefix = "de";
+$script = "braille";
+
+$alphabet = [
+['â ', ['â '],['â œ']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['â ƒ', ['â ƒ']],
+ [], # b with hook (hausa)
+['â ‰', ['â ‰']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['â ™', ['â ™']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['â ‘', ['â ‘']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['â ‹', ['â ‹']],
+['â ›', ['â ›']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['â “', ['â “']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['â Š', ['â Š']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['â š', ['â š']],
+ [], # j with circumflex (esperanto)
+['â …', ['â …']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['â ‡', ['â ‡']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['â ', ['â ']],
+['â ', ['â ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['â •', ['â •'],['â ª']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['â ', ['â ']],
+ [], # ph (gypsy/northrussian)
+['â Ÿ', ['â Ÿ']],
+['â —', ['â —']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['â Ž', ['â Ž']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['â ž', ['â ž']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['â ¥', ['â ¥'],['â ³']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['â §', ['â §']],
+['â º', ['â º']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['â ­', ['â ­']],
+ [], # xh (albanian)
+['â ½', ['â ½']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['â µ', ['â µ']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['â ®'], 'after', [['â Ž','â Ž']]],
+[['â ¾'], 'after', [['â Ž','â ž']]],
+[['â ¡'], 'after', [['â ','â ¥']]],
+[['â £'], 'after', [['â ‘','â ¥']]],
+[['â ©'], 'after', [['â ‘','â Š']]],
+[['â ¹'], 'after', [['â ‰','â “']]],
+[['â ±'], 'after', [['â Ž','â ‰','â “']]],
+[['⠌'], 'after', [['⠜','⠥']]],
+[['â ¬'], 'after', [['â Š','â ‘']]]
+];
+
+@special = ('â ‚', 'â †', 'â ’', 'â ¢', 'â –', 'â ¶', 'â ¦', 'â ”', 'â ´', 'â „', 'â ¤', 'â â ‚',
+ 'letters',
+ 'â ˆ', 'â ˜', 'â ¸', 'â ¨', 'â  ', 'â ¼');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-latin1.pl
new file mode 100644
index 00000000000..ee03c89ee51
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-latin1.pl
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+
+$language = "German";
+$variant = "DIN 5007";
+$prefix = "de";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['ä','Ä'], 'after', [['a','e'], ['A','e']]],
+[['ö','Ö'], 'after', [['o','e'], ['O','e']]],
+[['ü','Ü'], 'after', [['u','e'], ['U','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-utf8.pl.in
new file mode 100644
index 00000000000..dd6fa4e000f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/din5007-utf8.pl.in
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+
+$language = "German";
+$variant = "DIN 5007";
+$prefix = "de";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['ä','Ä'], 'after', [['a','e'], ['A','e']]],
+[['ö','Ö'], 'after', [['o','e'], ['O','e']]],
+[['ü','Ü'], 'after', [['u','e'], ['U','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-latin1.pl
new file mode 100644
index 00000000000..0b8d82d2532
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-latin1.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "German";
+$variant = "Duden";
+$prefix = "de";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],[],[],[],[],[],[],[],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],[],[],[],[],[],[],[],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],[],[],[],[],[],[],[],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-utf8.pl.in
new file mode 100644
index 00000000000..79931166c2b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/german/duden-utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "German";
+$variant = "Duden";
+$prefix = "de";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],[],[],[],[],[],[],[],['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],[],[],[],[],[],[],[],['ö','Ö']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],[],[],[],[],[],[],[],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/Makefile.am
new file mode 100644
index 00000000000..0688c85b9a1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/Makefile.am
@@ -0,0 +1,60 @@
+## Makefile.am fragment for alphabets/greek/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ greek/iso88597-lang.xdy \
+ greek/iso88597-test.xdy \
+ greek/iso88597.xdy \
+ greek/polytonic-utf8-lang.xdy \
+ greek/polytonic-utf8-test.xdy \
+ greek/polytonic-utf8.xdy \
+ greek/translit-latin4-lang.xdy \
+ greek/translit-latin4-test.xdy \
+ greek/translit-latin4.xdy \
+ greek/translit-utf8-lang.xdy \
+ greek/translit-utf8-test.xdy \
+ greek/translit-utf8.xdy \
+ greek/utf8-lang.xdy \
+ greek/utf8-test.xdy \
+ greek/utf8.xdy
+
+EXTRA_DIST += \
+ greek/iso88597.pl \
+ greek/polytonic-utf8.pl.in \
+ greek/utf8.pl.in \
+ greek/translit-latin4.pl \
+ greek/translit-utf8.pl.in
+
+DISTCLEANFILES += \
+ greek/polytonic-utf8.pl \
+ greek/translit-utf8.pl \
+ greek/utf8.pl
+
+DOCS_LATIN4 += \
+ greek/translit-latin4-doc.tex
+DOCS_OTHER += \
+ greek/iso88597-doc.tex
+DOCS_UTF8_LAT += \
+ greek/translit-utf8-doc.tex \
+ greek/utf8-doc.tex
+DOCS_UTF8_OTHER += \
+ greek/utf8-doc.tex \
+ greek/polytonic-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/iso88597.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/iso88597.pl
new file mode 100644
index 00000000000..1e304dadec3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/iso88597.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+$language = "Greek";
+$prefix = "el";
+$script = "greek";
+
+$alphabet = [
+['Á', ['á', 'Á'], ['Ü','¶']],
+['Â', ['â', 'Â']],
+['Ã', ['ã', 'Ã']],
+['Ä', ['ä', 'Ä']],
+['Å', ['å', 'Å'], ['Ý','¸']],
+['Æ', ['æ', 'Æ']],
+ [],
+['Ç', ['ç', 'Ç'], ['Þ','¹']],
+['È', ['è', 'È']],
+['É', ['é', 'É'], ['ß','º'], ['ú', 'Ú'], ['À']],
+ [],
+['Ê', ['ê', 'Ê']],
+['Ë', ['ë', 'Ë']],
+['Ì', ['ì', 'Ì']],
+['Í', ['í', 'Í']],
+['Î', ['î', 'Î']],
+['Ï', ['ï', 'Ï'], ['ü','¼']],
+['Ð', ['ð', 'Ð']],
+ [],
+['Ñ', ['ñ', 'Ñ']],
+['Ó', ['ó', 'Ó'], ['ò']],
+['Ô', ['ô', 'Ô']],
+['Õ', ['õ', 'Õ'], ['ý','¾'], ['û', 'Û'], ['à']],
+['Ö', ['ö', 'Ö']],
+['×', ['÷', '×']],
+['Ø', ['ø', 'Ø']],
+['Ù', ['ù', 'Ù'], ['þ', '¿']]
+];
+
+@special = ('?', '!', '.', ';', '·', 'letters', '-', '\'', '\\/');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+#@letter_group_names = ('Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì',
+#'Í','Î','Ï','Ð','Ñ','Ó','Ô','Õ','Ö','×','Ø','Ù');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/polytonic-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/polytonic-utf8.pl.in
new file mode 100644
index 00000000000..2d012ec2c3d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/polytonic-utf8.pl.in
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+$language = "Greek";
+$variant = "polytonic";
+$prefix = "el";
+$script = "greek";
+
+$alphabet = [
+['Α', ['α','Α'],['ᾰ','Ᾰ'],['ᾱ','Ᾱ'],['ὰ','Ὰ'],['ά','Ά'],['ἀ','Ἀ'],
+ ['á¼','Ἁ'],['ἂ','Ἂ'],['ἃ','Ἃ'],['ἄ','Ἄ'],['á¼…','á¼'],['ἆ','Ἆ'],
+ ['ἇ','á¼'],['á¾³','á¾¼'],['á¾²'],['á¾´'],['ᾶ'],['á¾·'],['á¾€','ᾈ'],
+ ['á¾','ᾉ'],['ᾂ','ᾊ'],['ᾃ','ᾋ'],['ᾄ','ᾌ'],['á¾…','á¾'],
+ ['ᾆ','ᾎ'],['ᾇ','á¾'],['á¾²'],['á¾´']],
+['Î’', ['β','Î’'],['Ï']],
+['Γ', ['γ','Γ']],
+['Δ', ['δ','Δ']],
+['Ε', ['ε','Ε'],['á½²','Ὲ'],['á½³','Έ'],['á¼','Ἐ'],['ἑ','á¼™'],
+ ['έ','Έ'],['á¼’','Ἒ'],['ἓ','á¼›'],['á¼”','Ἔ'],['ἕ','á¼']],
+['Ζ', ['ζ','Ζ']],
+['Ïœ', ['Ï','Ïœ']],
+['Η', ['η','Η'],['ὴ','Ὴ'],['ή','Ή'],['ἠ','Ἠ'],['ἡ','Ἡ'],
+ ['ἢ','Ἢ'],['ἣ','Ἣ'],['ἤ','Ἤ'],['ἥ','Ἥ'],['ἦ','Ἦ'],
+ ['ἧ','Ἧ'],['á¾','ᾘ'],['ᾑ','á¾™'],['á¾’','ᾚ'],['ᾓ','á¾›'],
+ ['á¾”','ᾜ'],['ᾕ','á¾'],['á¾–','ᾞ'],['á¾—','ᾟ'],['ῃ','á¿Œ'],
+ ['ῂ'],['ῄ'],['ῆ'],['ῇ']],
+['Θ', ['θ','Θ'],['ϑ']],
+['Ι', ['ι','Ι'],['ί','Ί'],['ϊ','Ϊ'],['ἰ','Ἰ'],['ἱ','Ἱ'],
+ ['ἲ','Ἲ'],['ἳ','Ἳ'],['ἴ','Ἴ'],['ἵ','Ἵ'],['ἶ','Ἶ'],
+ ['á¼·','Ἷ'],['ὶ','á¿š'],['á¿','Ῐ'],['á¿‘','á¿™'],
+ ['á¿—'],['á¿–'],['Î'],['á¿’'],['á¿“']],
+['ϳ', ['ϳ']],
+['Κ', ['κ','Κ']],
+['Λ', ['λ','Λ']],
+['Μ', ['μ','Μ']],
+['Î', ['ν','Î']],
+['Ξ', ['ξ','Ξ']],
+['Ο', ['ο','Ο'],['ÏŒ','ÎŒ'],['ὄ','Ὄ'],['á½€','Ὀ'],['á½','Ὁ'],
+ ['ὂ','Ὂ'],['ὃ','Ὃ'],['á½…','á½'],['ὸ','Ὸ'],['á½¹','Ό']],
+['Π', ['π','Π']],
+ [],
+['Ρ', ['Ï','Ρ'],['á¿¥','Ῥ'],['ῤ']],
+['Σ', ['σ','Σ'], ['ς']],
+['Τ', ['τ','Τ']],
+['Î¥', ['Ï…','Î¥'],['Ï','ÎŽ'],['Ï‹','Ϋ'],['ὑ','á½™'],['ὓ','á½›'],
+ ['ὕ','á½'],['á½—','Ὗ'],['ὺ','Ὺ'],['á½»','á¿«'],['á¿ ','Ῠ'],
+ ['á¿¡','á¿©'],
+ ['ΰ'],['á¿¢'],['á¿£'],['á½'],['á½’'],['á½”'],['á½–']],
+['Φ', ['φ','Φ'],['ϕ']],
+['Χ', ['χ','Χ']],
+['Ψ', ['ψ','Ψ']],
+['Ω', ['ω','Ω'],['ÏŽ','Î'],['á½ ','Ὠ'],['ὡ','Ὡ'],['á½¢','Ὢ'],
+ ['ὣ','Ὣ'],['ὤ','Ὤ'],['ὥ','Ὥ'],['ὦ','Ὦ'],['ὧ','Ὧ'],
+ ['ὼ','Ὼ'],['ώ','Ώ'],['ᾠ','ᾨ'],['ᾡ','ᾩ'],['ᾢ','ᾪ'],
+ ['ᾣ','ᾫ'],['ᾤ','ᾬ'],['ᾥ','ᾭ'],['ᾦ','ᾮ'],['ᾧ','ᾯ'],
+ ['ῳ','ῼ'],['ῲ'],['ῴ'],['ῶ'],['ῷ']]
+];
+
+@special = ('?','!','.',';','·','letters','-','\'','\\/');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-latin4.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-latin4.pl
new file mode 100644
index 00000000000..94c9c905d34
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-latin4.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Greek";
+$variant = "ISO transliteration, for western languages";
+$prefix = "el";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+ [], # c (many)
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['º','ª']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+ [], # j (many)
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ò','Ò']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+ [], # v (many)
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-utf8.pl.in
new file mode 100644
index 00000000000..b1f5b8478fe
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/translit-utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Greek";
+$variant = "ISO transliteration, for western languages";
+$prefix = "el";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+ [], # c (many)
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['Ä“','Ä’']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+ [], # j (many)
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['Å','ÅŒ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+ [], # v (many)
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/utf8.pl.in
new file mode 100644
index 00000000000..c1624c5eeea
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/greek/utf8.pl.in
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+$language = "Greek";
+$prefix = "el";
+$script = "greek";
+
+$alphabet = [
+['Α', ['α', 'Α'], ['ά','Ά']],
+['Β', ['β', 'Β']],
+['Γ', ['γ', 'Γ']],
+['Δ', ['δ', 'Δ']],
+['Ε', ['ε', 'Ε'], ['έ','Έ']],
+['Ζ', ['ζ', 'Ζ']],
+ [],
+['Η', ['η', 'Η'], ['ή','Ή']],
+['Θ', ['θ', 'Θ']],
+['Ι', ['ι', 'Ι'], ['ί','Ί'], ['ÏŠ', 'Ϊ'], ['Î']],
+ [],
+['Κ', ['κ', 'Κ']],
+['Λ', ['λ', 'Λ']],
+['Μ', ['μ', 'Μ']],
+['Î', ['ν', 'Î']],
+['Ξ', ['ξ', 'Ξ']],
+['Ο', ['ο', 'Ο'], ['ό','Ό']],
+['Π', ['π', 'Π']],
+ [],
+['Ρ', ['Ï', 'Ρ']],
+['Σ', ['σ', 'Σ'], ['ς']],
+['Τ', ['τ', 'Τ']],
+['Î¥', ['Ï…', 'Î¥'], ['Ï','ÎŽ'], ['Ï‹', 'Ϋ'], ['ΰ']],
+['Φ', ['φ', 'Φ']],
+['Χ', ['χ', 'Χ']],
+['Ψ', ['ψ', 'Ψ']],
+['Ω', ['ω', 'Ω'], ['ÏŽ', 'Î']]
+];
+
+@special = ('?', '!', '.', ';', '·', 'letters', '-', '\'', '\\/');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+#@letter_group_names = ('Α','Β','Γ','Δ','Ε','Ζ','Η','Θ','Ι','Κ','Λ','Μ',
+#'Î','Ξ','Ο','Π','Ρ','Σ','Τ','Î¥','Φ','Χ','Ψ','Ω');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/Makefile.am
new file mode 100644
index 00000000000..a885bfec828
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/Makefile.am
@@ -0,0 +1,34 @@
+## Makefile.am fragment for alphabets/gypsy/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ gypsy/northrussian-utf8-lang.xdy \
+ gypsy/northrussian-utf8-test.xdy \
+ gypsy/northrussian-utf8.xdy
+
+EXTRA_DIST += \
+ gypsy/northrussian-utf8.pl.in
+
+DISTCLEANFILES += \
+ gypsy/northrussian-utf8.pl
+
+DOCS_UTF8_LAT += \
+ gypsy/northrussian-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/northrussian-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/northrussian-utf8.pl.in
new file mode 100644
index 00000000000..ce5d1d3871c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/gypsy/northrussian-utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Gypsy";
+$variant = "North-Russian dialect";
+$prefix = "g1";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+['Dz', ['dz','Dz','DZ']],
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+['Γ', ['γ','Γ']],
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã']],
+['I̯', ['i̯','I̯']],
+ [], # i with circumflex (kurdish, romanian)
+['Ã', ['ï','Ã'],['ḯ','Ḯ']],
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+['Kh', ['kh','Kh','KH']],
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+['X', ['x','X']],
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+['Ph', ['ph','Ph','PH']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+['Th', ['th','Th','TH']],
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+ [], # x (many)
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', 'ˈ', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/Makefile.am
new file mode 100644
index 00000000000..cec950a6034
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/Makefile.am
@@ -0,0 +1,34 @@
+## Makefile.am fragment for alphabets/hausa/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ hausa/utf8-lang.xdy \
+ hausa/utf8-test.xdy \
+ hausa/utf8.xdy
+
+EXTRA_DIST += \
+ hausa/utf8.pl.in
+
+DISTCLEANFILES += \
+ hausa/utf8.pl
+
+DOCS_UTF8_LAT += \
+ hausa/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/utf8.pl.in
new file mode 100644
index 00000000000..333fd9a1d04
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hausa/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Hausa";
+$prefix = "ha";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['Ä','Ä€'],['a̱','A̱'],['Ä̱','Ā̱'],['à','À'],['ÄÌ€','Ā̀']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+['Æ', ['É“','Æ']],
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+['ÆŠ', ['É—','ÆŠ']],
+ [], # eth (icelandic)
+['E', ['e','E'],['ē','Ē'],['e̱','E̱'],['ē̱','Ē̱'],['è','È'],['ḕ','Ḕ']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ī','Ī'],['i̱','I̱'],['ī̱','Ī̱'],['ì','Ì'],['ī̀','Ī̀']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+['Ƙ', ['ƙ','Ƙ']],
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['Å','ÅŒ'],['o̱','O̱'],['Å̱','Ō̱'],['ò','Ã’'],['ÅÌ€','Ṑ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ū','Ū'],['u̱','U̱'],['ū̱','Ū̱'],['ù','Ù'],['ū̀','Ū̀']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+['ʼY', ['ʼy','ʼY']],
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', 'ʼ', '-', '\'', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/Makefile.am
new file mode 100644
index 00000000000..9c4e98641a4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/hebrew/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ hebrew/iso88598-lang.xdy \
+ hebrew/iso88598-test.xdy \
+ hebrew/iso88598.xdy \
+ hebrew/utf8-lang.xdy \
+ hebrew/utf8-test.xdy \
+ hebrew/utf8.xdy
+
+EXTRA_DIST += \
+ hebrew/iso88598.pl \
+ hebrew/utf8.pl.in
+
+DISTCLEANFILES += \
+ hebrew/utf8.pl
+
+DOCS_OTHER += \
+ hebrew/iso88598-doc.tex
+DOCS_UTF8_OTHER += \
+ hebrew/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/iso88598.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/iso88598.pl
new file mode 100644
index 00000000000..a9d66cb9ef1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/iso88598.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+$language = "Hebrew";
+$prefix = "iw";
+$script = "hebrew";
+
+$alphabet = [
+['à', ['à'] ],
+['á', ['á'] ],
+['â', ['â'] ],
+['ã', ['ã'] ],
+['ä', ['ä'] ],
+['å', ['å'] ],
+['æ', ['æ'] ],
+['ç', ['ç']],
+['è', ['è'] ],
+['é', ['é'] ],
+['ë', ['ë','ê'] ],
+['ì', ['ì'] ],
+['î', ['î','í'] ],
+['ð', ['ð','ï'] ],
+['ñ', ['ñ'] ],
+['ò', ['ò']],
+['ô', ['ô','ó'] ],
+['ö', ['ö','õ'] ],
+['÷', ['÷'] ],
+['ø', ['ø'] ],
+['ù', ['ù'] ],
+['ú', ['ú'] ]
+];
+
+$ligatures = [
+
+
+
+];
+
+@special = ('?', '!', '.', ';', '·', 'letters', '-');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/utf8.pl.in
new file mode 100644
index 00000000000..cfe814b18bc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hebrew/utf8.pl.in
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+$language = "Hebrew";
+$prefix = "iw";
+$script = "hebrew";
+
+$alphabet = [
+['×', ['×'] @u{,['אַ'],['×Ö¶'],['אּ'],['אָ'],['×Ö»']}],
+['ב', ['ב'] @u{,['בַ'],['בָ'],['בּ'],['בֵּ']}],
+['ג', ['ג'] @u{,['גּ']}],
+['ד', ['ד'] @u{,['דּ']}],
+['ה', ['ה'] @u{,['הּ']}],
+['ו', ['ו'] @u{,['וּ']}],
+['ז', ['ז'] @u{,['זּ']}],
+['×—', ['×—']],
+['ט', ['ט'] @u{,['טּ']}],
+['י', ['י'] @u{,['יּ']}],
+['כ', ['כ','ך'] @u{,['כּ','ךּ']}],
+['ל', ['ל'] @u{,['לּ']}],
+['מ', ['מ','×'] @u{,['מּ']}],
+['נ', ['נ','ן'] @u{,['נּ']}],
+['ס', ['ס'] @u{,['ï­']}],
+['×¢', ['×¢']],
+['פ', ['פ','ף'] @u{,['פּ','ףּ']}],
+['צ', ['צ','ץ'] @u{,['צּ']}],
+['ק', ['ק'] @u{,['קּ']}],
+['ר', ['ר'] @u{,['רּ']}],
+['ש', ['ש'] @u{,['שׂ'],['שׁ'],['שּׁ']}],
+['ת', ['ת'] @u{,['תּ']}]
+];
+
+$ligatures = [
+@u{[['װ'], 'after', [['ו','ו']]],}
+@u{[['ױ'], 'after', [['ו','י']]],}
+@u{[['ײ'], 'after', [['י','י']]],}
+];
+
+@special = ('?', '!', '.', ';', '·', 'letters', @u{'וֹ',} '-');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/Makefile.am
new file mode 100644
index 00000000000..63232d0c222
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/hungarian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ hungarian/cp1250-lang.xdy \
+ hungarian/cp1250-test.xdy \
+ hungarian/cp1250.xdy \
+ hungarian/latin2-lang.xdy \
+ hungarian/latin2-test.xdy \
+ hungarian/latin2.xdy \
+ hungarian/utf8-lang.xdy \
+ hungarian/utf8-test.xdy \
+ hungarian/utf8.xdy
+
+EXTRA_DIST += \
+ hungarian/cp1250.pl \
+ hungarian/latin2.pl \
+ hungarian/utf8.pl.in
+
+DISTCLEANFILES += \
+ hungarian/utf8.pl
+
+DOCS_CP1250 += \
+ hungarian/cp1250-doc.tex
+DOCS_LATIN2 += \
+ hungarian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ hungarian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/cp1250.pl
new file mode 100644
index 00000000000..acf1c224984
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/cp1250.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+
+# TODO: It seems that "ssz" has to be sorted like "szs" (?)
+# I don't know why, I don't know how...
+
+$language = "Hungarian";
+$prefix = "hu";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+['Cs', ['cs','Cs','CS']],
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+['D', ['dz','Dz','DZ']],
+['D', ['dzs','Dzs','DZs','DZS']],
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+['G', ['gy','Gy','GY']],
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['L', ['ly','Ly','LY']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+['Ny', ['ny','Ny','NY']],
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö'],['õ','Õ']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+['Sz', ['sz','Sz','SZ']],
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+['T', ['ty','Ty','TY']],
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü'],['û','Û']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+['Zs', ['zs','Zs','ZS']],
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/latin2.pl
new file mode 100644
index 00000000000..acf1c224984
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/latin2.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+
+# TODO: It seems that "ssz" has to be sorted like "szs" (?)
+# I don't know why, I don't know how...
+
+$language = "Hungarian";
+$prefix = "hu";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+['Cs', ['cs','Cs','CS']],
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+['D', ['dz','Dz','DZ']],
+['D', ['dzs','Dzs','DZs','DZS']],
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+['G', ['gy','Gy','GY']],
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['L', ['ly','Ly','LY']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+['Ny', ['ny','Ny','NY']],
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö'],['õ','Õ']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+['Sz', ['sz','Sz','SZ']],
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+['T', ['ty','Ty','TY']],
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü'],['û','Û']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+['Zs', ['zs','Zs','ZS']],
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/utf8.pl.in
new file mode 100644
index 00000000000..0cc0f28681e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/hungarian/utf8.pl.in
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+
+# TODO: It seems that "ssz" has to be sorted like "szs" (?)
+# I don't know why, I don't know how...
+
+$language = "Hungarian";
+$prefix = "hu";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã']@u{,['à','À']}],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+['Cs', ['cs','Cs','CS']],
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+['D', ['dz','Dz','DZ']],
+['D', ['dzs','Dzs','DZs','DZS']],
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+['G', ['gy','Gy','GY']],
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+['L', ['ly','Ly','LY']],
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+['Ny', ['ny','Ny','NY']],
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö'],['Å‘','Å']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+['Sz', ['sz','Sz','SZ']],
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+['T', ['ty','Ty','TY']],
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü'],['ű','Ű']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+['Zs', ['zs','Zs','ZS']],
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/Makefile.am
new file mode 100644
index 00000000000..7372ecf45e1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/icelandic/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ icelandic/cp1252-lang.xdy \
+ icelandic/cp1252-test.xdy \
+ icelandic/cp1252.xdy \
+ icelandic/latin9-lang.xdy \
+ icelandic/latin9-test.xdy \
+ icelandic/latin9.xdy \
+ icelandic/utf8-lang.xdy \
+ icelandic/utf8-test.xdy \
+ icelandic/utf8.xdy
+
+EXTRA_DIST += \
+ icelandic/cp1252.pl \
+ icelandic/latin9.pl \
+ icelandic/utf8.pl.in
+
+DISTCLEANFILES += \
+ icelandic/utf8.pl
+
+DOCS_CP1252 += \
+ icelandic/cp1252-doc.tex
+DOCS_LATIN9 += \
+ icelandic/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ icelandic/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/cp1252.pl
new file mode 100644
index 00000000000..dd0bf0d4377
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/cp1252.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Icelandic";
+$prefix = "is";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+['ð', ['ð','Ð']],
+['E', ['e','E'],['ë','Ë'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+ [], # wynn (english)
+['Æ', ['æ','Æ'],['œ','Œ'],['ä','Ä']],
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+['Ö', ['ö','Ö'],['ø','Ø']],
+['Å', ['å','Å']],
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/latin9.pl
new file mode 100644
index 00000000000..f0712f260e5
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/latin9.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Icelandic";
+$prefix = "is";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+['ð', ['ð','Ð']],
+['E', ['e','E'],['ë','Ë'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+ [], # wynn (english)
+['Æ', ['æ','Æ'],['½','¼'],['ä','Ä']],
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+['Ö', ['ö','Ö'],['ø','Ø']],
+['Å', ['å','Å']],
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/utf8.pl.in
new file mode 100644
index 00000000000..e5dddcc2d79
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/icelandic/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Icelandic";
+$prefix = "is";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã']@u{,['Ç«Ì','ǪÌ']}],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+['ð', ['ð','Ã']],
+['E', ['e','E']@u{,['ę','Ę']},['ë','Ë'],['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ü','Ü'],['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ã']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+ [], # wynn (english)
+['Æ', ['æ','Æ']@u{,['ǽ','Ǽ'],['Ä™Ì','ĘÌ'],['Ç¿','Ǿ']},['Å“','Å’'],['ä','Ä']],
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+['Ö', ['ö','Ö'],['ø','Ø']@u{,['ǫ','Ǫ']}],
+['Ã…', ['Ã¥','Ã…']],
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/Makefile.am
new file mode 100644
index 00000000000..016c4c0b35e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/italian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ italian/latin1-lang.xdy \
+ italian/latin1-test.xdy \
+ italian/latin1.xdy \
+ italian/utf8-lang.xdy \
+ italian/utf8-test.xdy \
+ italian/utf8.xdy
+
+EXTRA_DIST += \
+ italian/latin1.pl \
+ italian/utf8.pl.in
+
+DISTCLEANFILES += \
+ italian/utf8.pl
+
+DOCS_LATIN1 += \
+ italian/latin1-doc.tex
+DOCS_UTF8_LAT += \
+ italian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/latin1.pl
new file mode 100644
index 00000000000..cf641534121
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/latin1.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Italian";
+$prefix = "it";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],[],[],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],[],['é','É'],['è','È']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],[],['ó','Ó'],['ò','Ò']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zs (hungarian)
+ [], # zh (albanian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/utf8.pl.in
new file mode 100644
index 00000000000..110c18e304a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/italian/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Italian";
+$prefix = "it";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],[],[],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],[],['é','É'],['è','È']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã'],['ì','ÃŒ'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],[],['ó','Ó'],['ò','Ò']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zs (hungarian)
+ [], # zh (albanian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/Makefile.am
new file mode 100644
index 00000000000..4c75e902c8c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/Makefile.am
@@ -0,0 +1,35 @@
+## Makefile.am fragment for alphabets/klingon/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ klingon/utf8-lang.xdy \
+ klingon/utf8-test.xdy \
+ klingon/utf8.xdy
+
+EXTRA_DIST += \
+ klingon/utf8.pl.in \
+ klingon/translit-ascii.pl
+
+DISTCLEANFILES += \
+ klingon/utf8.pl
+
+DOCS_UTF8_OTHER += \
+ klingon/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/translit-ascii.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/translit-ascii.pl
new file mode 100644
index 00000000000..f7537e1e8a2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/translit-ascii.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+$language = "Klingon";
+$variant = "Standard Okrand Latin transliteration";
+$prefix = "k1";
+$script = "latin";
+
+$alphabet = [
+['a', ['a']],
+['b', ['b']],
+['ch', ['ch']],
+['D', ['D']],
+['e', ['e']],
+['gh', ['gh']],
+['H', ['H']],
+['I', ['I']],
+['j', ['j']],
+['l', ['l']],
+['m', ['m']],
+['n', ['n']],
+['ng', ['ng']],
+['o', ['o']],
+['p', ['p']],
+['q', ['q']],
+['Q', ['Q']],
+['r', ['r']],
+['S', ['S']],
+['t', ['t']],
+['tlh', ['tlh']],
+['u', ['u']],
+['v', ['v']],
+['w', ['w']],
+['y', ['y']],
+['\'', ['\'']]
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/utf8.pl.in
new file mode 100644
index 00000000000..110f72cadd4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/klingon/utf8.pl.in
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+$language = "Klingon";
+$prefix = "k1";
+$script = "klingon";
+
+$alphabet = [
+['ï£', ['ï£']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['ï£', ['ï£']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']],
+['', ['']]
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '{', '}');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/Makefile.am
new file mode 100644
index 00000000000..f3e53b4e3ef
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/Makefile.am
@@ -0,0 +1,51 @@
+## Makefile.am fragment for alphabets/kurdish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ kurdish/bedirxan-latin5-lang.xdy \
+ kurdish/bedirxan-latin5-test.xdy \
+ kurdish/bedirxan-latin5.xdy \
+ kurdish/bedirxan-utf8-lang.xdy \
+ kurdish/bedirxan-utf8-test.xdy \
+ kurdish/bedirxan-utf8.xdy \
+ kurdish/turkish-i-latin5-lang.xdy \
+ kurdish/turkish-i-latin5-test.xdy \
+ kurdish/turkish-i-latin5.xdy \
+ kurdish/turkish-i-utf8-lang.xdy \
+ kurdish/turkish-i-utf8-test.xdy \
+ kurdish/turkish-i-utf8.xdy
+
+EXTRA_DIST += \
+ kurdish/bedirxan-latin5.pl \
+ kurdish/bedirxan-utf8.pl.in \
+ kurdish/turkish-i-latin5.pl \
+ kurdish/turkish-i-utf8.pl.in
+
+DISTCLEANFILES += \
+ kurdish/bedirxan-utf8.pl \
+ kurdish/turkish-i-utf8.pl
+
+DOCS_LATIN5 += \
+ kurdish/bedirxan-latin5-doc.tex \
+ kurdish/turkish-i-latin5-doc.tex
+DOCS_UTF8_LAT += \
+ kurdish/bedirxan-utf8-doc.tex \
+ kurdish/turkish-i-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-latin5.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-latin5.pl
new file mode 100644
index 00000000000..82e95dc5146
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-latin5.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Kurdish";
+$variant = "Bedirxan";
+$prefix = "ku";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+['Ê', ['ê','Ê']],
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+['Î', ['î','Î']],
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Þ', ['þ','Þ']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+['Û', ['û','Û']],
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-utf8.pl.in
new file mode 100644
index 00000000000..7b7794d74e6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/bedirxan-utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Kurdish";
+$variant = "Bedirxan";
+$prefix = "ku";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+['Ê', ['ê','Ê']],
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+['Î', ['î','Î']],
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Åž', ['ÅŸ','Åž']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+['Û', ['û','Û']],
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-latin5.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-latin5.pl
new file mode 100644
index 00000000000..612d0d6a42b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-latin5.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Kurdish";
+$variant = "Turkish i";
+$prefix = "ku";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+['Ê', ['ê','Ê']],
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+['I', ['ý','I']],
+['Ý', ['i','Ý']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Þ', ['þ','Þ']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+['Û', ['û','Û']],
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-utf8.pl.in
new file mode 100644
index 00000000000..7754e117b33
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/kurdish/turkish-i-utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Kurdish";
+$variant = "Turkish i";
+$prefix = "ku";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+['Ê', ['ê','Ê']],
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+['I', ['ı','I']],
+['Ä°', ['i','Ä°']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Åž', ['ÅŸ','Åž']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+['Û', ['û','Û']],
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/Makefile.am
new file mode 100644
index 00000000000..88299c7ca83
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/Makefile.am
@@ -0,0 +1,34 @@
+## Makefile.am fragment for alphabets/latin/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ latin/utf8-lang.xdy \
+ latin/utf8-test.xdy \
+ latin/utf8.xdy
+
+EXTRA_DIST += \
+ latin/utf8.pl.in
+
+DISTCLEANFILES += \
+ latin/utf8.pl
+
+DOCS_UTF8_LAT += \
+ latin/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/utf8.pl.in
new file mode 100644
index 00000000000..516dde99823
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latin/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Latin";
+$prefix = "la";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['Ä','Ä€'],['ă','Ä‚']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['Ä“','Ä’'],['Ä•','Ä”']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ī','Ī'],['ĭ','Ĭ']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['Å','ÅŒ'],['Å','ÅŽ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ū','Ū'],['ŭ','Ŭ']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/Makefile.am
new file mode 100644
index 00000000000..81faea40eb4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/latvian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ latvian/latin4-lang.xdy \
+ latvian/latin4-test.xdy \
+ latvian/latin4.xdy \
+ latvian/utf8-lang.xdy \
+ latvian/utf8-test.xdy \
+ latvian/utf8.xdy
+
+EXTRA_DIST += \
+ latvian/latin4.pl \
+ latvian/utf8.pl.in
+
+DISTCLEANFILES += \
+ latvian/utf8.pl
+
+DOCS_LATIN4 += \
+ latvian/latin4-doc.tex
+DOCS_UTF8_LAT += \
+ latvian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/latin4.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/latin4.pl
new file mode 100644
index 00000000000..ae2305ffd0d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/latin4.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Latvian";
+$prefix = "lv";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+['È', ['è','È']],
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['º','ª']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+['«', ['»','«']],
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['y','Y'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+['Ó', ['ó','Ó']],
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+['¦', ['¶','¦']],
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+['Ñ', ['ñ','Ñ']],
+['O', ['o','O'],['ò','Ò']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+['£', ['³','£']],
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['þ','Þ']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/utf8.pl.in
new file mode 100644
index 00000000000..d6b18eef8fd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/latvian/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Latvian";
+$prefix = "lv";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['Ä','Ä€']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['Ä“','Ä’']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+['Ä¢', ['Ä£','Ä¢']],
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['y','Y'],['ī','Ī']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+['Ķ', ['ķ','Ķ']],
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+['Ļ', ['ļ','Ļ']],
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+['Ņ', ['ņ','Ņ']],
+['O', ['o','O'],['Å','ÅŒ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+['Å–', ['Å—','Å–']],
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ū','Ū']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/Makefile.am
new file mode 100644
index 00000000000..e193de31d22
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/lithuanian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ lithuanian/latin4-lang.xdy \
+ lithuanian/latin4-test.xdy \
+ lithuanian/latin4.xdy \
+ lithuanian/utf8-lang.xdy \
+ lithuanian/utf8-test.xdy \
+ lithuanian/utf8.xdy
+
+EXTRA_DIST += \
+ lithuanian/latin4.pl \
+ lithuanian/utf8.pl.in
+
+DISTCLEANFILES += \
+ lithuanian/utf8.pl
+
+DOCS_LATIN4 += \
+ lithuanian/latin4-doc.tex
+DOCS_UTF8_LAT += \
+ lithuanian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/latin4.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/latin4.pl
new file mode 100644
index 00000000000..2fcd174ada9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/latin4.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Lithuanian";
+$prefix = "lt";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['±','¡']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ch','Ch','CH']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['ê','Ê'],['ì','Ì']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ç','Ç'],['y','Y']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ù','Ù'],['þ','Þ']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/utf8.pl.in
new file mode 100644
index 00000000000..1acab74a883
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lithuanian/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Lithuanian";
+$prefix = "lt";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['Ä…','Ä„']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ch','Ch','CH']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['ę','Ę'],['ė','Ė']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['į','Į'],['y','Y']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ų','Ų'],['ū','Ū']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+ [], # y (many)
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/Makefile.am
new file mode 100644
index 00000000000..cec2b9667e0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/lower-sorbian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ lower-sorbian/cp1250-lang.xdy \
+ lower-sorbian/cp1250-test.xdy \
+ lower-sorbian/cp1250.xdy \
+ lower-sorbian/latin2-lang.xdy \
+ lower-sorbian/latin2-test.xdy \
+ lower-sorbian/latin2.xdy \
+ lower-sorbian/utf8-lang.xdy \
+ lower-sorbian/utf8-test.xdy \
+ lower-sorbian/utf8.xdy
+
+EXTRA_DIST += \
+ lower-sorbian/cp1250.pl \
+ lower-sorbian/latin2.pl \
+ lower-sorbian/utf8.pl.in
+
+DISTCLEANFILES += \
+ lower-sorbian/utf8.pl
+
+DOCS_CP1250 += \
+ lower-sorbian/cp1250-doc.tex
+DOCS_LATIN2 += \
+ lower-sorbian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ lower-sorbian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/cp1250.pl
new file mode 100644
index 00000000000..3710d5cd0d3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/cp1250.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Lower Sorbian";
+$prefix = "s1";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Ì', ['ì','Ì']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['£', ['³','£']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+['À', ['à','À']],
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+['Œ', ['œ','Œ']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+['', ['Ÿ','']],
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/latin2.pl
new file mode 100644
index 00000000000..e4ed97dec5e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/latin2.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Lower Sorbian";
+$prefix = "s1";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Ì', ['ì','Ì']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['£', ['³','£']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+['À', ['à','À']],
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+['¦', ['¶','¦']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+['¬', ['¼','¬']],
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/utf8.pl.in
new file mode 100644
index 00000000000..da20de078b7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/lower-sorbian/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Lower Sorbian";
+$prefix = "s1";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+['Ć', ['ć','Ć']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Äš', ['Ä›','Äš']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['Å', ['Å‚','Å']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ń', ['ń','Ń']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+['Å”', ['Å•','Å”']],
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+['Åš', ['Å›','Åš']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+['Ź', ['ź','Ź']],
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/Makefile.am
new file mode 100644
index 00000000000..b41e13b0b48
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/Makefile.am
@@ -0,0 +1,52 @@
+## Makefile.am fragment for alphabets/macedonian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ macedonian/cp1251-lang.xdy \
+ macedonian/cp1251-test.xdy \
+ macedonian/cp1251.xdy \
+ macedonian/iso88595-lang.xdy \
+ macedonian/iso88595-test.xdy \
+ macedonian/iso88595.xdy \
+ macedonian/isoir111-lang.xdy \
+ macedonian/isoir111-test.xdy \
+ macedonian/isoir111.xdy \
+ macedonian/utf8-lang.xdy \
+ macedonian/utf8-test.xdy \
+ macedonian/utf8.xdy
+
+EXTRA_DIST += \
+ macedonian/cp1251.pl \
+ macedonian/iso88595.pl \
+ macedonian/isoir111.pl \
+ macedonian/utf8.pl.in
+
+DISTCLEANFILES += \
+ macedonian/utf8.pl
+
+DOCS_CYR_1251 += \
+ macedonian/cp1251-doc.tex
+DOCS_CYR_ISO88595 += \
+ macedonian/iso88595-doc.tex
+DOCS_CYR_ISOIR111 += \
+ macedonian/isoir111-doc.tex
+DOCS_UTF8_CYR += \
+ macedonian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/cp1251.pl
new file mode 100644
index 00000000000..a48acc17123
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Macedonian";
+$prefix = "mk";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+ [], # ghe with upturn (ukrainian)
+['Ä', ['ä','Ä']],
+ [], # dje (serbian)
+['', ['ƒ','']],
+['Å', ['å','Å']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+['½', ['¾','½']],
+['È', ['è','È']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['£', ['¼','£']],
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+['Š', ['š','Š']],
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+['Œ', ['œ','Œ']],
+['Î', ['î','Î']],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð']],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+ [], # tshe (serbian)
+['', ['','']],
+['Ó', ['ó','Ó']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+['', ['Ÿ','']],
+['Ø', ['ø','Ø']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/iso88595.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/iso88595.pl
new file mode 100644
index 00000000000..b2c3ebea89c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/iso88595.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Macedonian";
+$prefix = "mk";
+$script = "cyrillic";
+
+$alphabet = [
+['°', ['Ð','°']],
+['±', ['Ñ','±']],
+['²', ['Ò','²']],
+['³', ['Ó','³']],
+ [], # ghe with upturn (ukrainian)
+['´', ['Ô','´']],
+ [], # dje (serbian)
+['£', ['ó','£']],
+['µ', ['Õ','µ']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['¶', ['Ö','¶']],
+['·', ['×','·']],
+['¥', ['õ','¥']],
+['¸', ['Ø','¸']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['¨', ['ø','¨']],
+['º', ['Ú','º']],
+['»', ['Û','»']],
+['©', ['ù','©']],
+['¼', ['Ü','¼']],
+['½', ['Ý','½']],
+['ª', ['ú','ª']],
+['¾', ['Þ','¾']],
+ [], # barred o (mongolian)
+['¿', ['ß','¿']],
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+ [], # tshe (serbian)
+['¬', ['ü','¬']],
+['Ã', ['ã','Ã']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ä', ['ä','Ä']],
+['Å', ['å','Å']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+['¯', ['ÿ','¯']],
+['È', ['è','È']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/isoir111.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/isoir111.pl
new file mode 100644
index 00000000000..3740cf02c30
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/isoir111.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Macedonian";
+$prefix = "mk";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á']],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+ [], # ghe with upturn (ukrainian)
+['ä', ['Ä','ä']],
+ [], # dje (serbian)
+['²', ['¢','²']],
+['å', ['Å','å']],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+['µ', ['¥','µ']],
+['é', ['É','é']],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['¸', ['¨','¸']],
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+['¹', ['©','¹']],
+['í', ['Í','í']],
+['î', ['Î','î']],
+['º', ['ª','º']],
+['ï', ['Ï','ï']],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò']],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+ [], # tshe (serbian)
+['¼', ['¬','¼']],
+['õ', ['Õ','õ']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+['¿', ['¯','¿']],
+['û', ['Û','û']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/utf8.pl.in
new file mode 100644
index 00000000000..0c228304caa
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/macedonian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Macedonian";
+$prefix = "mk";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð']],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+ [], # dje (serbian)
+['Ѓ', ['ѓ','Ѓ']],
+['Е', ['е','Е']@u{,['Ñ','Ѐ']}],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+['Ð…', ['Ñ•','Ð…']],
+['И', ['и','И']@u{,['Ñ','Ð']}],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['Ј', ['ј','Ј']],
+['К', ['к','К']],
+['Л', ['л','Л']],
+['Љ', ['љ','Љ']],
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+['Њ', ['њ','Њ']],
+['О', ['о','О']],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+['Ќ', ['ќ','Ќ']],
+['У', ['у','У']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+['Ð', ['ÑŸ','Ð']],
+['Ш', ['ш','Ш']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/make-rules.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/make-rules.pl
new file mode 100755
index 00000000000..c0f2f9c5ed2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/make-rules.pl
@@ -0,0 +1,269 @@
+#!/usr/bin/perl
+
+open XDY,">$ARGV[0].xdy";
+open DOC,">$ARGV[0]-doc.tex";
+open TEST,">$ARGV[0].raw";
+open TESTXDY,">$ARGV[0]-test.xdy";
+
+print XDY ";; Rules for xindy; generated by make-rules.pl\n";
+print XDY ";; language: $language\n\n";
+
+if ($prefix) {
+ $prefix = $prefix . '-';
+}
+
+print TESTXDY "(require \"lang/$ARGV[0].xdy\")\n";
+print TESTXDY "(define-sort-rule-orientations (forward backward forward forward))\n";
+print TESTXDY "(use-rule-set :run 0\n";
+print TESTXDY " :rule-set (\"".$prefix."alphabetize\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 1\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-diacritics\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 2\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-case\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 3\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-special\"))\n";
+close TESTXDY;
+
+$fn = "test.xdy";
+! -f $fn && -f "$INC[0]/$fn" and $fn = "$INC[0]/$fn";
+-f $fn or die "$fn: $!";
+system("cat $fn >> $ARGV[0]-test.xdy");
+
+$begin = 128;
+# $begin = 97 if ($script eq "cyrillic");
+# $begin = 150 if ($script eq "latin");
+# $begin = 65 if ($script eq "greek");
+
+if (!$begin) {
+ $begin = 65;
+}
+
+print "Alphabet has " . @{$alphabet} . " elements.\n";
+
+for ($i = 0; $i < @{$alphabet}; $i++) {
+ if (defined($alphabet->[$i][0])) {
+ $letter = $alphabet->[$i][0];
+ $lout = $letter;
+ $lout =~ s/\~/~~/g;
+ $lout =~ s/\"/~\"/g;
+ $token = chr($i+$begin);
+ $token =~ s/\~/~~/g;
+ $token =~ s/\"/~\"/g;
+ if ($after ne $lout) {
+ print XDY "\"))\n" if ($i);
+ print XDY "(define-letter-group \"$lout\"";
+ print XDY " :after \"$after\"" if ($i);
+ print XDY " :prefixes (\"";
+ } else {
+ print XDY "\" \"";
+ }
+ print XDY "$token";
+ $after = $lout;
+ }
+}
+
+print XDY "\"))\n\n";
+
+$ref = \$i;
+$offset = $begin;
+$f = 1;
+make_tokens();
+
+# print test raw file
+# alphabet
+ $p = 1;
+ foreach $letter (keys %tokens) {
+ print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+ $p++;
+ }
+# end
+
+process_ligatures();
+
+print_tokens($prefix . "alphabetize");
+
+$ref = \$j;
+$offset = 161;
+$f = 1;
+make_tokens();
+
+for ($i = 0; $i < @{$ligatures}; $i++) {
+ if ($ligatures->[$i][1] eq "before") {
+ $token = chr(161);
+ } else {
+ $token = chr(255);
+ }
+ foreach $ligature_variant (@{$ligatures->[$i][0]}) {
+ $tokens{$ligature_variant} = $token;
+ }
+}
+
+print_tokens($prefix . "resolve-diacritics");
+
+$ref = \$k;
+$offset = 48;
+$f = 1;
+if ($sortcase eq "Aa") {
+ $offset = 57;
+ $f = -1;
+}
+
+make_tokens();
+
+process_ligatures();
+
+print_tokens($prefix . "resolve-case");
+
+foreach $character (@special) {
+ $tokens{$character} = "" unless ($character eq "letters");
+}
+
+print_tokens($prefix . "ignore-special");
+
+$offset = 161;
+$f = 1;
+
+for ($l = 0; $l < @special; $l++) {
+ if (@special[$l] eq "letters") {
+ $ref = \$l;
+ make_tokens();
+ process_ligatures();
+ } else {
+ $token = chr($l+$offset);
+ $tokens{@special[$l]} = $token;
+ }
+}
+
+print_tokens($prefix . "resolve-special");
+
+# print doc:
+# alphabet
+ for ($i = 0; $i < @{$alphabet}; $i++) {
+ for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+ push @l,join("\\,", (@{$alphabet->[$i][$j]}));
+ }
+ if ((@l)) {
+ push @m, join(" & ", (@l));
+ }
+# push @m, "`".$alphabet->[$i][0]."':\\>".join(" -- ", (@l));
+ @l = ();
+ }
+ print DOC "\\subsection{$language";
+ print DOC " ($variant)" if ($variant);
+ print DOC "}\n\n";
+ print DOC "\\subsubsection{Alphabet}\n";
+ print DOC "\\icod\\fcod\n";
+ print DOC "\\begin{alphabet}\n";
+ print DOC join("\\\\\n", (@m));
+ print DOC "\n\\end{alphabet}\n";
+ print DOC "\\idef\\fdef\n";
+
+# ligatures
+ print DOC "\n\\subsubsection{Ligatures}\n";
+ print DOC "\\begin{flushleft}\n";
+ print DOC "None.\n" unless @{$ligatures};
+ @m = ();
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ push @m, "`$ligatures->[$i][0][$j]' is sorted like `" .
+ join("\\,", (@{$ligatures->[$i][2][$j]})) .
+ "', but \\emph{$ligatures->[$i][1]} it in otherwise equal words.";
+ }
+ }
+ print DOC join("\\\\\n", (@m));
+ print DOC "\n\\end{flushleft}\n";
+
+# case
+ print DOC "\n\\subsubsection{Upper-/lowercase words}\n";
+ if ($sortcase eq "Aa") {
+ print DOC "Capitalized or uppercase words are sorted \\emph{before} ";
+ print DOC "otherwise equal lowercase words.\n";
+ } else {
+ print DOC "Capitalized or uppercase words are sorted \\emph{after} ";
+ print DOC "otherwise equal lowercase words.\n";
+ }
+
+# special
+print DOC "\n\\subsubsection{Special characters}\n";
+print DOC "The order of special characters and letters is:\n";
+print DOC "\\begin{flushleft}\n";
+print DOC join("\\hspace{4mm}", (@special));
+print DOC "\n\\end{flushleft}\n";
+print DOC "\\newpage\n";
+
+# end
+
+# print test raw file
+
+# for ($i = 0; $i < @{$alphabet}; $i++) {
+# for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+# foreach $letter (@{$alphabet->[$i][$j]}) {
+# print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+# $p++;
+# }
+# }
+# }
+
+# ligatures
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ print TEST
+ "(indexentry :key (\"$ligatures->[$i][0][$j]\") :locref \"$p\")\n";
+ $p++;
+ print TEST "(indexentry :key (\"" .
+ join("", (@{$ligatures->[$i][2][$j]})) . "\") :locref \"$p\")\n";
+ $p++;
+ }
+ }
+
+# special
+foreach $letter (@special) {
+ if ($letter ne "letters") {
+ print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+ $p++;
+ }
+}
+
+# end
+
+sub make_tokens {
+ for ($i = 0; $i < @{$alphabet}; $i++) {
+ for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+ for ($k = 0; $k < @{$alphabet->[$i][$j]}; $k++) {
+ $token = chr($f*$$ref+$offset);
+ if ($alphabet->[$i][$j][$k]) {
+ $tokens{$alphabet->[$i][$j][$k]} = $token;
+ }
+ }
+ }
+ }
+}
+
+sub process_ligatures {
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ $token = "";
+ foreach $ligature_component (@{$ligatures->[$i][2][$j]}) {
+ $token = $token.$tokens{$ligature_component};
+ }
+ $tokens{$ligatures->[$i][0][$j]} = $token;
+ }
+ }
+}
+
+sub print_tokens {
+ print XDY "(define-rule-set \"$_[0]\"\n\n :rules (";
+ foreach $letter (sort {
+ (length($b) <=> length($a)) || ($tokens{$a} cmp $tokens{$b})
+ } (keys %tokens)) {
+ $lout = $letter;
+ $lout =~ s/\~/~~/g;
+ $lout =~ s/\"/~\"/g;
+ $tout = $tokens{$letter};
+ $tout =~ s/\~/~~/g;
+ $tout =~ s/\"/~\"/g;
+ print XDY "(\"$lout\" \"$tout\" :string)\n ";
+ }
+ print XDY "))\n\n";
+ %tokens = ();
+}
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/Makefile.am
new file mode 100644
index 00000000000..4492114b56a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/Makefile.am
@@ -0,0 +1,34 @@
+## Makefile.am fragment for alphabets/mongolian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ mongolian/cyrillic-utf8-lang.xdy \
+ mongolian/cyrillic-utf8-test.xdy \
+ mongolian/cyrillic-utf8.xdy
+
+EXTRA_DIST += \
+ mongolian/cyrillic-utf8.pl.in
+
+DISTCLEANFILES += \
+ mongolian/cyrillic-utf8.pl
+
+DOCS_UTF8_CYR += \
+ mongolian/cyrillic-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/cyrillic-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/cyrillic-utf8.pl.in
new file mode 100644
index 00000000000..75c9f8dc4f3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/mongolian/cyrillic-utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Mongolian";
+$prefix = "mn";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð'] @u{,['аÌ','ÐÌ']}],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Е', ['е','Е'], @u{['еÌ','ЕÌ']}],
+['Ð', ['Ñ‘','Ð'], @u{['Ñ‘Ì','ÐÌ']}],
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И']@u{,['иÌ','ИÌ']}],
+ [],
+ [], # yi (ukrainian)
+['Й', ['й','Й']@u{,['йÌ','ЙÌ']}],
+ [], # je (macedonian, serbian)
+['К', ['к','К']],
+['Л', ['л','Л']],
+ [], # lje (macedonian, serbian)
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+ [], # nje (macedonian, serbian)
+['О', ['о','О']@u{,['оÌ','ОÌ']}],
+['Ó¨', ['Ó©','Ó¨']@u{,['Ó©Ì','Ó¨Ì']}],
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['У', ['у','У']@u{,['уÌ','УÌ']}],
+ [], # short u (belarusian)
+['Ò®', ['Ò¯','Ò®']@u{,['Ò¯Ì','Ò®Ì']}],
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+ [], # dzhe (macedonian, serbian)
+['Ш', ['ш','Ш']],
+['Щ', ['щ','Щ']],
+['Ъ', ['ъ','Ъ']],
+['Ы', ['Ñ‹','Ы']@u{,['Ñ‹Ì','ЫÌ']}],
+['Ь', ['ь','Ь']],
+ [],
+['Э', ['Ñ','Э']@u{,['ÑÌ','ЭÌ']}],
+['Ю', ['ÑŽ','Ю']@u{,['ÑŽÌ','ЮÌ']}],
+['Я', ['Ñ','Я']@u{,['ÑÌ','ЯÌ']}],
+ [],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\''@u{, 'Ì'});
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/Makefile.am
new file mode 100644
index 00000000000..a333029dcf0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/norwegian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ norwegian/latin1-lang.xdy \
+ norwegian/latin1-test.xdy \
+ norwegian/latin1.xdy \
+ norwegian/utf8-lang.xdy \
+ norwegian/utf8-test.xdy \
+ norwegian/utf8.xdy
+
+EXTRA_DIST += \
+ norwegian/latin1.pl \
+ norwegian/utf8.pl.in
+
+DISTCLEANFILES += \
+ norwegian/utf8.pl
+
+DOCS_LATIN1 += \
+ norwegian/latin1-doc.tex
+DOCS_UTF8_LAT += \
+ norwegian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/latin1.pl
new file mode 100644
index 00000000000..aec63a80ab9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/latin1.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Norwegian";
+$prefix = "no";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+['Æ', ['æ','Æ'],['ä','Ä']],
+['Ø', ['ø','Ø'],['ö','Ö']],
+['Å', ['å','Å']],
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/utf8.pl.in
new file mode 100644
index 00000000000..902b07bb388
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/norwegian/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Norwegian";
+$prefix = "no";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+['Æ', ['æ','Æ'],['ä','Ä']],
+['Ø', ['ø','Ø'],['ö','Ö']],
+['Ã…', ['Ã¥','Ã…']],
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/Makefile.am
new file mode 100644
index 00000000000..825575cbe08
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/Makefile.am
@@ -0,0 +1,40 @@
+## Makefile.am fragment for alphabets/persian/.
+
+## Copyright (C) 2014 by Joachim Schrod.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ persian/variant1-utf8-lang.xdy \
+ persian/variant1-utf8-test.xdy \
+ persian/variant1-utf8.xdy \
+ persian/variant2-utf8-lang.xdy \
+ persian/variant2-utf8-test.xdy \
+ persian/variant2-utf8.xdy
+
+EXTRA_DIST += \
+ persian/README \
+ persian/variant1-utf8.pl.in \
+ persian/variant2-utf8.pl.in
+
+DISTCLEANFILES += \
+ persian/utf8.pl
+
+DOCS_UTF8_OTHER += \
+ persian/variant1-utf8-doc.tex \
+ persian/variant2-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/README b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/README
new file mode 100644
index 00000000000..835649167fd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/README
@@ -0,0 +1,34 @@
+________________________
+The “xindy-persian†package
+v0.6
+
+The “xindy-persian†package is the Persian language
+support for xindy program.
+
+Two Variants are provided:
+ * Variant One: Sorts آ as ا
+ * Variant Two: Sorts آ as a separate letter
+
+If you want to report any bugs or typos and corrections in the documentation,
+or ask for any new features, or suggest any improvements, or ask any questions
+about the package, then please do not send any direct emails to us; we will not
+answer any direct emails. Instead please use the issue tracker:
+ <https://github.com/vafa/xindy-persian>
+In doing so, please always explain your issue well enough, always include
+a minimal working examples showing the issue, and always choose the appropriate
+label for your query (i.e. if you are reporting any bugs, choose `bug' label).
+
+Current version release date: 2013/10/14
+_________________
+Vafa Khalighi
+persian-tex@tug.org
+
+Copyright © 2011–2013 Vafa Khalighi
+Distributed under the LaTeX Project Public License
+It may be distributed and/or modified under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is “maintained†(as per LPPL maintenance status)
+by Vafa Khalighi.
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant1-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant1-utf8.pl.in
new file mode 100644
index 00000000000..9d14f9f37c3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant1-utf8.pl.in
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "One";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['ا',['آ']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['Ù¾',['Ù¾']],
+['ت',['ت']],
+['Ø«',['Ø«']],
+['ج',['ج']],
+['Ú†',['Ú†']],
+['Ø­',['Ø­']],
+['Ø®',['Ø®']],
+['د',['د']],
+['Ø°',['Ø°']],
+['ر',['ر']],
+['ز',['ز']],
+['Ú˜',['Ú˜']],
+['س',['س']],
+['Ø´',['Ø´']],
+['ص',['ص']],
+['ض',['ض']],
+['Ø·',['Ø·']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['Ù',['Ù']],
+['Ù‚',['Ù‚']],
+['Ú©',['Ú©']],
+['Ú¯',['Ú¯']],
+['Ù„',['Ù„']],
+['Ù…',['Ù…']],
+['Ù†',['Ù†']],
+['و',['ؤ','و']],
+['Ù‡',['Ù‡']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+['B', ['b','B']],
+['C', ['c','C'],['ç','Ç']],
+['D', ['d','D'],['ð','Ã']],
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+['H', ['h','H']],
+['I', ['i','I'],['ï','Ã']],
+['J', ['j','J']],
+['K', ['k','K']],
+['L', ['l','L']],
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+['S', ['s','S']],
+['T', ['t','T']],
+['U', ['u','U']],
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+['Þ', ['þ','Þ']],
+];
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['Å“','Å’'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}','Ù‘','ÙŽ','Ù','Ù','Ù‹','Ù','ÙŒ','Ù’','Ù”','Ø¡','‌','«','»','Ù€');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant2-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant2-utf8.pl.in
new file mode 100644
index 00000000000..9c7fdfaa290
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/persian/variant2-utf8.pl.in
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "Two";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['Ø¢',['Ø¢']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['Ù¾',['Ù¾']],
+['ت',['ت']],
+['Ø«',['Ø«']],
+['ج',['ج']],
+['Ú†',['Ú†']],
+['Ø­',['Ø­']],
+['Ø®',['Ø®']],
+['د',['د']],
+['Ø°',['Ø°']],
+['ر',['ر']],
+['ز',['ز']],
+['Ú˜',['Ú˜']],
+['س',['س']],
+['Ø´',['Ø´']],
+['ص',['ص']],
+['ض',['ض']],
+['Ø·',['Ø·']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['Ù',['Ù']],
+['Ù‚',['Ù‚']],
+['Ú©',['Ú©']],
+['Ú¯',['Ú¯']],
+['Ù„',['Ù„']],
+['Ù…',['Ù…']],
+['Ù†',['Ù†']],
+['و',['ؤ','و']],
+['Ù‡',['Ù‡']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+['B', ['b','B']],
+['C', ['c','C'],['ç','Ç']],
+['D', ['d','D'],['ð','Ã']],
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+['H', ['h','H']],
+['I', ['i','I'],['ï','Ã']],
+['J', ['j','J']],
+['K', ['k','K']],
+['L', ['l','L']],
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+['S', ['s','S']],
+['T', ['t','T']],
+['U', ['u','U']],
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+['Þ', ['þ','Þ']],
+];
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['Å“','Å’'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}','Ù‘','ÙŽ','Ù','Ù','Ù‹','Ù','ÙŒ','Ù’','Ù”','Ø¡','‌','«','»','Ù€');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/Makefile.am
new file mode 100644
index 00000000000..dd217115382
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/Makefile.am
@@ -0,0 +1,46 @@
+## Makefile.am fragment for alphabets/polish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ polish/cp1250-lang.xdy \
+ polish/cp1250-test.xdy \
+ polish/cp1250.xdy \
+ polish/latin2-lang.xdy \
+ polish/latin2-test.xdy \
+ polish/latin2.xdy \
+ polish/utf8-lang.xdy \
+ polish/utf8-test.xdy \
+ polish/utf8.xdy
+
+EXTRA_DIST += \
+ polish/cp1250.pl \
+ polish/latin2.pl \
+ polish/utf8.pl.in
+
+DISTCLEANFILES += \
+ polish/utf8.pl
+
+DOCS_CP1250 += \
+ polish/cp1250-doc.tex
+DOCS_LATIN2 += \
+ polish/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ polish/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/cp1250.pl
new file mode 100644
index 00000000000..3d780ef7b5e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/cp1250.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Polish";
+$prefix = "pl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+['¥', ['¹','¥']],
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+['Ê', ['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+['£', ['³','£']],
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+['Œ', ['œ','Œ']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+['', ['Ÿ','']],
+['¯', ['¿','¯']],
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/latin2.pl
new file mode 100644
index 00000000000..32cdec691bf
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/latin2.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Polish";
+$prefix = "pl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+['¡', ['±','¡']],
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+['Æ', ['æ','Æ']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+['Ê', ['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+['£', ['³','£']],
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+['¦', ['¶','¦']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+['¬', ['¼','¬']],
+['¯', ['¿','¯']],
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/utf8.pl.in
new file mode 100644
index 00000000000..3b527705410
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/polish/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Polish";
+$prefix = "pl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+['Ä„', ['Ä…','Ä„']],
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+['Ć', ['ć','Ć']],
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+['Ę', ['ę','Ę']],
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with caron (slovak/large)
+ [], # l with cedilla/comma (latvian)
+['Å', ['Å‚','Å']],
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ń', ['ń','Ń']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+['Åš', ['Å›','Åš']],
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+['Ź', ['ź','Ź']],
+['Ż', ['ż','Ż']],
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/Makefile.am
new file mode 100644
index 00000000000..8496d658114
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/Makefile.am
@@ -0,0 +1,41 @@
+## Makefile.am fragment for alphabets/portuguese/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ portuguese/latin1-lang.xdy \
+ portuguese/latin1-test.xdy \
+ portuguese/latin1.xdy \
+ portuguese/utf8-lang.xdy \
+ portuguese/utf8-test.xdy \
+ portuguese/utf8.xdy
+
+EXTRA_DIST += \
+ portuguese/latin1.pl \
+ portuguese/utf8.pl.in
+
+DISTCLEANFILES += \
+ portuguese/utf8.pl
+
+DOCS_LATIN1 += \
+ portuguese/latin1-doc.tex
+DOCS_UTF8_LAT += \
+ portuguese/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/latin1.pl
new file mode 100644
index 00000000000..89ca29650a6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/latin1.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Portuguese";
+$prefix = "pt";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â'],['ã','Ã']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô'],['õ','Õ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/utf8.pl.in
new file mode 100644
index 00000000000..467f4008511
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/portuguese/utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Portuguese";
+$prefix = "pt";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã'],['à','À'],['â','Â'],['ã','Ã']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã'],['ì','ÃŒ']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô'],['õ','Õ']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/rom-comma-kludge.sed b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/rom-comma-kludge.sed
new file mode 100644
index 00000000000..32dee324c4b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/rom-comma-kludge.sed
@@ -0,0 +1,6 @@
+# replace [SsTt] with comma below -> [SsTt] with cedilla
+# for latin2 with romanian language
+s/Ș/Ş/g;
+s/È™/ÅŸ/g;
+s/Èš/Å¢/g;
+s/È›/Å£/g;
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/Makefile.am
new file mode 100644
index 00000000000..0524bb1227e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/Makefile.am
@@ -0,0 +1,41 @@
+## Makefile.am fragment for alphabets/romanian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ romanian/latin2-lang.xdy \
+ romanian/latin2-test.xdy \
+ romanian/latin2.xdy \
+ romanian/utf8-lang.xdy \
+ romanian/utf8-test.xdy \
+ romanian/utf8.xdy
+
+EXTRA_DIST += \
+ romanian/latin2.pl \
+ romanian/utf8.pl.in
+
+DISTCLEANFILES += \
+ romanian/utf8.pl
+
+DOCS_LATIN2 += \
+ romanian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ romanian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/latin2.pl
new file mode 100644
index 00000000000..f3f23492fc6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/latin2.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Romanian";
+$prefix = "ro";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+['Ã', ['ã','Ã']],
+['Â', ['â','Â']],
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditonal)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+['Î', ['î','Î']],
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditonal)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+['ª', ['º','ª']],
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+['Þ', ['þ','Þ']],
+ [], # c with acute (upper sorbian) @@
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/utf8.pl.in
new file mode 100644
index 00000000000..12701c4591a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/romanian/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Romanian";
+$prefix = "ro";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+['Ă', ['ă','Ă']],
+['Â', ['â','Â']],
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditonal)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+['Î', ['î','Î']],
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditonal)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+['Ș', ['ș','Ș']],
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+['Èš', ['È›','Èš']],
+ [], # c with acute (upper sorbian) @@
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/Makefile.am
new file mode 100644
index 00000000000..363796178f0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/Makefile.am
@@ -0,0 +1,60 @@
+## Makefile.am fragment for alphabets/russian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ russian/cp1251-lang.xdy \
+ russian/cp1251-test.xdy \
+ russian/cp1251.xdy \
+ russian/iso88595-lang.xdy \
+ russian/iso88595-test.xdy \
+ russian/iso88595.xdy \
+ russian/koi8-r-lang.xdy \
+ russian/koi8-r-test.xdy \
+ russian/koi8-r.xdy \
+ russian/translit-iso-utf8-lang.xdy \
+ russian/translit-iso-utf8-test.xdy \
+ russian/translit-iso-utf8.xdy \
+ russian/utf8-lang.xdy \
+ russian/utf8-test.xdy \
+ russian/utf8.xdy
+
+EXTRA_DIST += \
+ russian/cp1251.pl \
+ russian/iso88595.pl \
+ russian/koi8-r.pl \
+ russian/translit-iso-utf8.pl.in \
+ russian/utf8.pl.in
+
+DISTCLEANFILES += \
+ russian/translit-iso-utf8.pl \
+ russian/utf8.pl
+
+DOCS_CYR_1251 += \
+ russian/cp1251-doc.tex
+DOCS_CYR_ISO88595 += \
+ russian/iso88595-doc.tex
+DOCS_CYR_KOI8_R += \
+ russian/koi8-r-doc.tex
+DOCS_UTF8_LAT += \
+ russian/translit-iso-utf8-doc.tex
+DOCS_UTF8_CYR += \
+ russian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/cp1251.pl
new file mode 100644
index 00000000000..635466a39b6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Russian";
+$prefix = "ru";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À'] ],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+ [], # ghe with upturn (ukrainian)
+['Ä', ['ä','Ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Å', ['å','Å'], ['¸','¨'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dze (macedonian)
+['È', ['è','È']],
+[],
+ [], # yi (ukrainian)
+['É', ['é','É']],
+ [], # je (macedonian, serbian)
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+ [], # lje (macedonian, serbian)
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+ [], # nje (macedonian, serbian)
+['Î', ['î','Î']],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð']],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ó', ['ó','Ó']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+ [], # dzhe (macedonian, serbian)
+['Ø', ['ø','Ø']],
+['Ù', ['ù','Ù']],
+['Ú', ['ú','Ú']],
+['Û', ['û','Û']],
+['Ü', ['ü','Ü']],
+[],
+['Ý', ['ý','Ý']],
+['Þ', ['þ','Þ']],
+['ß', ['ÿ','ß']],
+ [],
+ [],
+[],
+[]
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/iso88595.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/iso88595.pl
new file mode 100644
index 00000000000..d4b6327e6f0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/iso88595.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Russian";
+$prefix = "ru";
+$script = "cyrillic";
+
+$alphabet = [
+['°', ['Ð','°'] ],
+['±', ['Ñ','±']],
+['²', ['Ò','²']],
+['³', ['Ó','³']],
+ [], # ghe with upturn (ukrainian)
+['´', ['Ô','´']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['µ', ['Õ','µ'], ['ñ','¡'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['¶', ['Ö','¶']],
+['·', ['×','·']],
+ [], # dze (macedonian)
+['¸', ['Ø','¸']],
+[],
+ [], # yi (ukrainian)
+['¹', ['Ù','¹']],
+ [], # je (macedonian, serbian)
+['º', ['Ú','º']],
+['»', ['Û','»']],
+ [], # lje (macedonian, serbian)
+['¼', ['Ü','¼']],
+['½', ['Ý','½']],
+ [], # nje (macedonian, serbian)
+['¾', ['Þ','¾']],
+ [], # barred o (mongolian)
+['¿', ['ß','¿']],
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ã', ['ã','Ã']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ä', ['ä','Ä']],
+['Å', ['å','Å']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dzhe (macedonian, serbian)
+['È', ['è','È']],
+['É', ['é','É']],
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+['Ì', ['ì','Ì']],
+[],
+['Í', ['í','Í']],
+['Î', ['î','Î']],
+['Ï', ['ï','Ï']],
+ [],
+ [],
+[],
+[]
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/koi8-r.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/koi8-r.pl
new file mode 100644
index 00000000000..06a0f78eceb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/koi8-r.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Russian";
+$prefix = "ru";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á'] ],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+ [], # ghe with upturn (ukrainian)
+['ä', ['Ä','ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['å', ['Å','å'], ['£','³'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+ [], # dze (macedonian)
+['é', ['É','é']],
+[],
+ [], # yi (ukrainian)
+['ê', ['Ê','ê']],
+ [], # je (macedonian, serbian)
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+ [], # lje (macedonian, serbian)
+['í', ['Í','í']],
+['î', ['Î','î']],
+ [], # nje (macedonian, serbian)
+['ï', ['Ï','ï']],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò']],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['õ', ['Õ','õ']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+ [], # dzhe (macedonian, serbian)
+['û', ['Û','û']],
+['ý', ['Ý','ý']],
+['ÿ', ['ß','ÿ']],
+['ù', ['Ù','ù']],
+['ø', ['Ø','ø']],
+[],
+['ü', ['Ü','ü']],
+['à', ['À','à']],
+['ñ', ['Ñ','ñ']],
+ [],
+ [],
+[],
+[]
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/translit-iso-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/translit-iso-utf8.pl.in
new file mode 100644
index 00000000000..0436bd1ed7c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/translit-iso-utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Russian";
+$variant = "ISO 9 transliteration, for western languages";
+$prefix = "ru";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['Ä','ÄŒ']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['è','È'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+ [], # q (many)
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'],['Å¡','Å '],['Å','Åœ']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+ [], # x (many)
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'],['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', 'ʺ', 'ʹ', '-');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/utf8.pl.in
new file mode 100644
index 00000000000..c5882c35427
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/russian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Russian";
+$prefix = "ru";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð'] @u{,['аÌ','ÐÌ']}],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Е', ['е','Е'], @u{['еÌ','ЕÌ'],} ['Ñ‘','Ð'] @u{,['Ñ‘Ì','ÐÌ']}],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И']@u{,['иÌ','ИÌ']}],
+[@u{'І', ['Ñ–','І'],['Ñ–Ì','ІÌ']}],
+ [], # yi (ukrainian)
+['Й', ['й','Й']@u{,['йÌ','ЙÌ']}],
+ [], # je (macedonian, serbian)
+['К', ['к','К']],
+['Л', ['л','Л']],
+ [], # lje (macedonian, serbian)
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+ [], # nje (macedonian, serbian)
+['О', ['о','О']@u{,['оÌ','ОÌ']}],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['У', ['у','У']@u{,['уÌ','УÌ']}],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+ [], # dzhe (macedonian, serbian)
+['Ш', ['ш','Ш']],
+['Щ', ['щ','Щ']],
+['Ъ', ['ъ','Ъ']],
+['Ы', ['Ñ‹','Ы']@u{,['Ñ‹Ì','ЫÌ']}],
+['Ь', ['ь','Ь']],
+[@u{'Ñ¢', ['Ñ£','Ñ¢']}],
+['Э', ['Ñ','Э']@u{,['ÑÌ','ЭÌ']}],
+['Ю', ['ÑŽ','Ю']@u{,['ÑŽÌ','ЮÌ']}],
+['Я', ['Ñ','Я']@u{,['ÑÌ','ЯÌ']}],
+ [],
+ [],
+[@u{'Ѳ', ['ѳ','Ѳ']}],
+[@u{'Ѵ', ['ѵ','Ѵ']}]
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\''@u{, 'Ì'});
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/Makefile.am
new file mode 100644
index 00000000000..2d0665d3722
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/Makefile.am
@@ -0,0 +1,53 @@
+## Makefile.am fragment for alphabets/serbian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ serbian/cp1251-lang.xdy \
+ serbian/cp1251-test.xdy \
+ serbian/cp1251.xdy \
+ serbian/iso88595-lang.xdy \
+ serbian/iso88595-test.xdy \
+ serbian/iso88595.xdy \
+ serbian/isoir111-lang.xdy \
+ serbian/isoir111-test.xdy \
+ serbian/isoir111.xdy \
+ serbian/utf8-lang.xdy \
+ serbian/utf8-test.xdy \
+ serbian/utf8.xdy
+
+EXTRA_DIST += \
+ serbian/cp1251.pl \
+ serbian/iso88595.pl \
+ serbian/isoir111.pl \
+ serbian/utf8.pl.in
+
+DISTCLEANFILES += \
+ serbian/utf8.pl
+
+DOCS_CYR_1251 += \
+ serbian/cp1251-doc.tex
+DOCS_CYR_ISO88595 += \
+ serbian/iso88595-doc.tex
+DOCS_CYR_ISOIR111 += \
+ serbian/isoir111-doc.tex
+DOCS_UTF8_CYR += \
+ serbian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/cp1251.pl
new file mode 100644
index 00000000000..926388183df
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Serbian";
+$prefix = "sr";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À'] ],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+ [], # ghe with upturn (ukrainian)
+['Ä', ['ä','Ä']],
+['€', ['','€']],
+ [], # gje (macedonian)
+['Å', ['å','Å'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dze (macedonian)
+['È', ['è','È'] ],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['£', ['¼','£']],
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+['Š', ['š','Š']],
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+['Œ', ['œ','Œ']],
+['Î', ['î','Î'] ],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð'] ],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+['Ž', ['ž','Ž']],
+ [], # kje (macedonian)
+['Ó', ['ó','Ó'] ],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+['', ['Ÿ','']],
+['Ø', ['ø','Ø']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [], # soft sign (ukrainian)
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/iso88595.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/iso88595.pl
new file mode 100644
index 00000000000..e23b9832236
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/iso88595.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Serbian";
+$prefix = "sr";
+$script = "cyrillic";
+
+$alphabet = [
+['°', ['Ð','°'] ],
+['±', ['Ñ','±']],
+['²', ['Ò','²']],
+['³', ['Ó','³']],
+ [], # ghe with upturn (ukrainian)
+['´', ['Ô','´']],
+['¢', ['ò','¢']],
+ [], # gje (macedonian)
+['µ', ['Õ','µ'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['¶', ['Ö','¶']],
+['·', ['×','·']],
+ [], # dze (macedonian)
+['¸', ['Ø','¸'] ],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['¨', ['ø','¨']],
+['º', ['Ú','º']],
+['»', ['Û','»']],
+['©', ['ù','©']],
+['¼', ['Ü','¼']],
+['½', ['Ý','½']],
+['ª', ['ú','ª']],
+['¾', ['Þ','¾'] ],
+ [], # barred o (mongolian)
+['¿', ['ß','¿']],
+['À', ['à','À'] ],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['«', ['û','«']],
+ [], # kje (macedonian)
+['Ã', ['ã','Ã'] ],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ä', ['ä','Ä']],
+['Å', ['å','Å']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+['¯', ['ÿ','¯']],
+['È', ['è','È']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [], # soft sign (ukrainian)
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/isoir111.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/isoir111.pl
new file mode 100644
index 00000000000..eb8a377e264
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/isoir111.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Serbian";
+$prefix = "sr";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á'] ],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+ [], # ghe with upturn (ukrainian)
+['ä', ['Ä','ä']],
+['±', ['¡','±']],
+ [], # gje (macedonian)
+['å', ['Å','å'] ],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+ [], # dze (macedonian)
+['é', ['É','é'] ],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['¸', ['¨','¸']],
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+['¹', ['©','¹']],
+['í', ['Í','í']],
+['î', ['Î','î']],
+['º', ['ª','º']],
+['ï', ['Ï','ï'] ],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò'] ],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+['»', ['«','»']],
+ [], # kje (macedonian)
+['õ', ['Õ','õ'] ],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+['¿', ['¯','¿']],
+['û', ['Û','û']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [], # soft sign (ukrainian)
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/utf8.pl.in
new file mode 100644
index 00000000000..029e0bb0ae9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/serbian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Serbian";
+$prefix = "sr";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð'] @u{,['аÌ','ÐÌ'],['а̑','ÐÌ‘']}],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+ [], # ghe with upturn (ukrainian)
+['Д', ['д','Д']],
+['Ђ', ['ђ','Ђ']],
+ [], # gje (macedonian)
+['Е', ['е','Е'] @u{,['еÌ','ЕÌ'],['е̑','Е̑']}],
+ [], # io (mongolian)
+ [], # ukrainian ie
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И'] @u{,['иÌ','ИÌ'],['и̑','И̑']}],
+ [], # belarusian-ukrainian i
+ [], # yi (ukrainian)
+ [], # short i (many)
+['Ј', ['ј','Ј']],
+['К', ['к','К']],
+['Л', ['л','Л']],
+['Љ', ['љ','Љ']],
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+['Њ', ['њ','Њ']],
+['О', ['о','О'] @u{,['оÌ','ОÌ'],['о̑','О̑']}],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['Ñ€','Р'] @u{,['Ñ€Ì','РÌ'],['р̑','Р̑']}],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+['Ћ', ['ћ','Ћ']],
+ [], # kje (macedonian)
+['У', ['у','У'] @u{,['уÌ','УÌ'],['у̑','У̑']}],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+['Ð', ['ÑŸ','Ð']],
+['Ш', ['ш','Ш']],
+ [], # shcha (many)
+ [], # hard sign (bulgarian, russian)
+ [], # yeru (belarusian, russian)
+ [], # soft sign (many)
+ [],
+ [], # e (belarusian, russian)
+ [], # yu (many)
+ [], # ya (many)
+ [], # soft sign (ukrainian)
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\''@u{, 'Ì', 'Ì‘'});
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/Makefile.am
new file mode 100644
index 00000000000..61cf5f276e5
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/Makefile.am
@@ -0,0 +1,63 @@
+## Makefile.am fragment for alphabets/slovak/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ slovak/large-cp1250-lang.xdy \
+ slovak/large-cp1250-test.xdy \
+ slovak/large-cp1250.xdy \
+ slovak/large-latin2-lang.xdy \
+ slovak/large-latin2-test.xdy \
+ slovak/large-latin2.xdy \
+ slovak/large-utf8-lang.xdy \
+ slovak/large-utf8-test.xdy \
+ slovak/large-utf8.xdy \
+ slovak/small-cp1250-lang.xdy \
+ slovak/small-cp1250-test.xdy \
+ slovak/small-cp1250.xdy \
+ slovak/small-latin2-lang.xdy \
+ slovak/small-latin2-test.xdy \
+ slovak/small-latin2.xdy \
+ slovak/small-utf8-lang.xdy \
+ slovak/small-utf8-test.xdy \
+ slovak/small-utf8.xdy
+
+EXTRA_DIST += \
+ slovak/large-cp1250.pl \
+ slovak/large-latin2.pl \
+ slovak/large-utf8.pl.in \
+ slovak/small-cp1250.pl \
+ slovak/small-latin2.pl \
+ slovak/small-utf8.pl.in
+
+DISTCLEANFILES += \
+ slovak/large-utf8.pl \
+ slovak/small-utf8.pl
+
+DOCS_CP1250 += \
+ slovak/large-cp1250-doc.tex \
+ slovak/small-cp1250-doc.tex
+DOCS_LATIN2 += \
+ slovak/small-latin2-doc.tex \
+ slovak/large-latin2-doc.tex
+DOCS_UTF8_LAT += \
+ slovak/small-utf8-doc.tex \
+ slovak/large-utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-cp1250.pl
new file mode 100644
index 00000000000..037a8589c6b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-cp1250.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "large";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+['Ï', ['ï','Ï']],
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['å','Å']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+['¼', ['¾','¼']],
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+['Ò', ['ò','Ò']],
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['à','À']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+['', ['','']],
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-latin2.pl
new file mode 100644
index 00000000000..14f0a0e5617
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-latin2.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "large";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+['Ï', ['ï','Ï']],
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['å','Å']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+['¥', ['µ','¥']],
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+['Ò', ['ò','Ò']],
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['à','À']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+['«', ['»','«']],
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-utf8.pl.in
new file mode 100644
index 00000000000..fac86202984
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/large-utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "large";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Ã'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+['ÄŽ', ['Ä','ÄŽ']],
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['ĺ','Ĺ']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+['Ľ', ['ľ','Ľ']],
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+['Ň', ['ň','Ň']],
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['Å•','Å”']],
+ [], # rr (albanian)
+['Ř', ['ř','Ř']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+['Ť', ['ť','Ť']],
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ã']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-cp1250.pl
new file mode 100644
index 00000000000..218d6b3518a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-cp1250.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "small";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'], ['è','È']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['ï','Ï']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['å','Å'], ['¾','¼']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ò','Ò']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['à','À'], ['ø','Ø']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['š','Š']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['','']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-latin2.pl
new file mode 100644
index 00000000000..9468636b4ec
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-latin2.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "small";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'], ['è','È']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['ï','Ï']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['å','Å'], ['µ','¥']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ò','Ò']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['à','À'], ['ø','Ø']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['¹','©']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['»','«']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ý']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['¾','®']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-utf8.pl.in
new file mode 100644
index 00000000000..d4c468d26d2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovak/small-utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Slovak";
+$variant = "small";
+$prefix = "sk";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Ã'], ['ä','Ä']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'], ['Ä','ÄŒ']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'], ['Ä','ÄŽ']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L'], ['ĺ','Ĺ'], ['ľ','Ľ']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'], ['ň','Ň']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó'], ['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'], ['ŕ','Ŕ'], ['ř','Ř']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'], ['Å¡','Å ']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T'], ['ť','Ť']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'], ['ý','Ã']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z'], ['ž','Ž']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/Makefile.am
new file mode 100644
index 00000000000..25068fc02e1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/Makefile.am
@@ -0,0 +1,47 @@
+## Makefile.am fragment for alphabets/slovenian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ slovenian/cp1250-lang.xdy \
+ slovenian/cp1250-test.xdy \
+ slovenian/cp1250.xdy \
+ slovenian/latin2-lang.xdy \
+ slovenian/latin2-test.xdy \
+ slovenian/latin2.xdy \
+ slovenian/utf8-lang.xdy \
+ slovenian/utf8-test.xdy \
+ slovenian/utf8.xdy
+
+EXTRA_DIST += \
+ slovenian/cp1250.pl \
+ slovenian/latin2.pl \
+ slovenian/utf8.pl.in
+
+DISTCLEANFILES += \
+ slovenian/utf8.pl
+
+DOCS_CP1250 += \
+ slovenian/cp1250-doc.tex
+DOCS_LATIN2 += \
+ slovenian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ slovenian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/cp1250.pl
new file mode 100644
index 00000000000..8bd9bd5ac0a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/cp1250.pl
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Slovenian";
+$prefix = "sl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È'],['æ','Æ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+
+
+
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/latin2.pl
new file mode 100644
index 00000000000..2184852c12a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/latin2.pl
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Slovenian";
+$prefix = "sl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['È', ['è','È'],['æ','Æ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+
+
+
+
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/utf8.pl.in
new file mode 100644
index 00000000000..bee08dd48b8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/slovenian/utf8.pl.in
@@ -0,0 +1,148 @@
+#!/usr/bin/perl
+
+$language = "Slovenian";
+$prefix = "sl";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ'],['ć','Ć']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['Ä‘','Ä']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']@u{,['ǵ','Ǵ']}],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']@u{,['ḱ','Ḱ']}],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+@u{[['dz','Dz','DZ'], 'after', [['d','z'],['D','z'],['D','Z']]],}
+@u{[['dž','Dž','DŽ'], 'after', [['d','ž'],['D','ž'],['D','Ž']]],}
+@u{[['lj','Lj','LJ'], 'after', [['l','j'],['L','j'],['L','J']]],}
+@u{[['nj','Nj','NJ'], 'after', [['n','j'],['N','j'],['N','J']]]}
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/Makefile.am
new file mode 100644
index 00000000000..5277f8e732f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/Makefile.am
@@ -0,0 +1,53 @@
+## Makefile.am fragment for alphabets/spanish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ spanish/modern-latin1-lang.xdy \
+ spanish/modern-latin1-test.xdy \
+ spanish/modern-latin1.xdy \
+ spanish/modern-utf8-lang.xdy \
+ spanish/modern-utf8-test.xdy \
+ spanish/modern-utf8.xdy \
+ spanish/traditional-latin1-lang.xdy \
+ spanish/traditional-latin1-test.xdy \
+ spanish/traditional-latin1.xdy \
+ spanish/traditional-utf8-lang.xdy \
+ spanish/traditional-utf8-test.xdy \
+ spanish/traditional-utf8.xdy
+
+EXTRA_DIST += \
+ spanish/modern-latin1.pl \
+ spanish/modern-utf8.pl.in \
+ spanish/traditional-latin1.pl \
+ spanish/traditional-utf8.pl.in
+
+DISTCLEANFILES += \
+ spanish/modern-utf8.pl \
+ spanish/traditional-utf8.pl
+
+DOCS_LATIN1 += \
+ spanish/modern-latin1-doc.tex \
+ spanish/traditional-latin1-doc.tex
+DOCS_UTF8_LAT += \
+ spanish/modern-utf8-doc.tex \
+ spanish/traditional-utf8-doc.tex
+
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-latin1.pl
new file mode 100644
index 00000000000..17bff7f8d1d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-latin1.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Spanish";
+$variant = "modern";
+$prefix = "es";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+['Ñ', ['ñ','Ñ']],
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('letters', '.', '-', '\'', '¿', '?', '¡', '!');
+
+#$sortcase = "Aa";
+$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-utf8.pl.in
new file mode 100644
index 00000000000..12f4d32cbde
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/modern-utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Spanish";
+$variant = "modern";
+$prefix = "es";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Ã']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+['Ñ', ['ñ','Ñ']],
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('letters', '.', '-', '\'', '¿', '?', '¡', '!');
+
+#$sortcase = "Aa";
+$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-latin1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-latin1.pl
new file mode 100644
index 00000000000..69fcf5a57c6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-latin1.pl
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Spanish";
+$variant = "traditional";
+$prefix = "es";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+['Ch', ['ch','Ch','CH']],
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+['Ll', ['ll','Ll','LL']],
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+['Ñ', ['ñ','Ñ']],
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, icelandic, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('letters', '.', '-', '\'', '¿', '?', '¡', '!');
+
+#$sortcase = "Aa";
+$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-utf8.pl.in
new file mode 100644
index 00000000000..dd4e321ca6d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/spanish/traditional-utf8.pl.in
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+
+$language = "Spanish";
+$variant = "traditional";
+$prefix = "es";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'], ['á','Ã']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+['Ch', ['ch','Ch','CH']],
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+['Ll', ['ll','Ll','LL']],
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+['Ñ', ['ñ','Ñ']],
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'], ['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], ['ú','Ú'], ['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, icelandic, swedish)
+ [] # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('letters', '.', '-', '\'', '¿', '?', '¡', '!');
+
+#$sortcase = "Aa";
+$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/Makefile.am
new file mode 100644
index 00000000000..b46e58ba15f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/Makefile.am
@@ -0,0 +1,47 @@
+## Makefile.am fragment for alphabets/swedish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ swedish/cp1252-lang.xdy \
+ swedish/cp1252-test.xdy \
+ swedish/cp1252.xdy \
+ swedish/latin9-lang.xdy \
+ swedish/latin9-test.xdy \
+ swedish/latin9.xdy \
+ swedish/utf8-lang.xdy \
+ swedish/utf8-test.xdy \
+ swedish/utf8.xdy
+
+EXTRA_DIST += \
+ swedish/cp1252.pl \
+ swedish/latin9.pl \
+ swedish/utf8.pl.in
+
+DISTCLEANFILES += \
+ swedish/utf8.pl
+
+DOCS_CP1252 += \
+ swedish/cp1252-doc.tex
+DOCS_LATIN9 += \
+ swedish/latin9-doc.tex
+DOCS_UTF8_LAT += \
+ swedish/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/cp1252.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/cp1252.pl
new file mode 100644
index 00000000000..326feb22962
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/cp1252.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Swedish";
+$prefix = "sv";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì'],['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] ],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'],['š','Š']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Å', ['å','Å']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/latin9.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/latin9.pl
new file mode 100644
index 00000000000..e2cfa4e924e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/latin9.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Swedish";
+$prefix = "sv";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Á'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Í'],['ì','Ì'],['î','Î'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] ],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S'],['¨','¦']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ý'],['ü','Ü']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Å', ['å','Å']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/utf8.pl.in
new file mode 100644
index 00000000000..31047626676
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/swedish/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Swedish";
+$prefix = "sv";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['á','Ã'],['à','À'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']@u{,['ć','Ć'],['Ä','ÄŒ']}],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ã']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ê','Ê'],['ë','Ë']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['í','Ã'],['ì','ÃŒ'],['î','ÃŽ'],['ï','Ã']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']@u{,['Å‚','Å']}],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],@u{['ń','Ń'],}['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ó','Ó'],['ò','Ò'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R'] @u{,['ř','Ř']}],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']@u{,['Å›','Åš']},['Å¡','Å ']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['ú','Ú'],['ù','Ù'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V'], ['w','W']],
+ [], # w (many)
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ý','Ã'],['ü','Ãœ']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+['Ã…', ['Ã¥','Ã…']],
+['Ä', ['ä','Ä'],['æ','Æ']],
+['Ö', ['ö','Ö'],['ø','Ø']],
+ [] # a with ring above (icelandic)
+];
+
+#$sortcase = 'Aa';
+$sortcase = 'aA';
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test.xdy b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test.xdy
new file mode 100644
index 00000000000..a843dafb8dd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test.xdy
@@ -0,0 +1,82 @@
+
+;; define other stuff
+(define-attributes ("default"))
+
+;; The description of the location-classes.
+;; Add more location classes as needed.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+;; The most frequently used cross reference class "see". Add more, if
+;; necessary.
+
+(define-crossref-class "see")
+(markup-crossref-list :open "\see{" :close "}{}" :class "see")
+
+;; In makeindex: page_precedence <string> "rnaRA"
+;; List all location classes appearing in your document.
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"))
+
+
+;; preamble <string> "\\begin{theindex}\n"
+;; postamble <string> "\n\n\\end{theindex}\n"
+
+(markup-index :open "\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+;; These specifiers are not directly supported via a command-line
+;; switch as in makeindex. Add the appropriate markup-commands into
+;; the preamble.
+
+;; setpage_prefix <string> "~n \setcounter{page}{"
+;; setpage_suffix <string> "}~n"
+
+;; group_skip <string> "~n~n \indexspace~n"
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+
+;; even though we comment out (%) the letter-group heading,
+;; the following is useful if you want to check the .ind-file
+(markup-letter-group :open-head "~n % ")
+
+;; The indexentries (item_<..> specifiers)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+;; Location-references
+
+;; delim_0 <string> ", "
+;; delim_1 <string> ", "
+;; delim_2 <string> ", "
+
+(markup-locclass-list :open ", " :sep ", ")
+
+;; delim_n <string> ", "
+
+(markup-locref-list :sep ", ")
+
+;; delim_r <string> "--"
+
+(markup-range :sep "--")
+
+;; That's all ;-)
+
+
+;; End
+
+;; Local Variables:
+;; mode: lisp
+;; End:
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/Makefile.am
new file mode 100644
index 00000000000..dad544c62f8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/Makefile.am
@@ -0,0 +1,24 @@
+## Makefile.am fragment for alphabets/test1/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+EXTRA_DIST += \
+ test1/test1.pl
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/test1.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/test1.pl
new file mode 100644
index 00000000000..cf74233784b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/test1/test1.pl
@@ -0,0 +1,166 @@
+#!/usr/bin/perl
+
+# a string describing the language (to be exact, the sorting order)
+$language = "Test1";
+$prefix = "xx";
+$script = "latin";
+
+# Technically speaking, $alphabet is (a reference to) an array of arrays of
+# arrays. Sounds complicated? Don't worry! Explanation follows:
+
+# Every line describes one letter of the alphabet (in all its variants).
+# The first string is the name of the letter; this appears in the heading of
+# letter groups (when defined with the proper markup). Currently the maximum
+# number of letters is limited to 95. A future expansion up to 223 letters
+# should be no problem.
+
+# Next follows a sequence of arrays, delimited by commas. Each of these arrays
+# describes one variant of the letter with different diacritical marks
+# (accents). The order of those describes the sorting order if two words
+# appear which differ only in the diacritical variant of this letter.
+# Currently the maximum supported number of diacritical variants of one letter
+# is 93.
+
+# Each of these arrays contains first the lowercase variant of the letter,
+# followed by uppercase variant(s). You might wonder: How can there be other
+# than one uppercase variant? Consider the letter combination `ch': Uppercase
+# variants here are: `Ch' and `CH'. Also, in some character sets there might
+# not exist an uppercase variant of a letter, e.g. the letter `ÿ' in the
+# ISO-8859-1 character set. In this case we just leave it out.
+
+# The sum of the number of uppercase and lowercase variants of one diacritical
+# version of a letter should be 10 or less. (In case of `ch' it is 3:
+# `ch', `Ch' and `CH')
+
+# There can be empty arrays [] which are called slots. They are used for
+# mixing alphabets of different languages.
+
+# In order to merge several letters into on letter group, give them the same
+# letter-group name. (see 'c' and 'ch').
+
+$alphabet = [
+['A', ['a','A'], ['á','Á']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+['C', ['c','C']],
+['C', ['ch','Ch','CH']],
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # eth (icelandic)
+['E', ['e','E'], ['é','É']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'], ['í','Í']],
+ [], # i with circumflex (kurdish, romanian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+['Ll', ['ll','Ll','LL']],
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+['Ñ', ['ñ','Ñ']],
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+['O', ['o','O'], ['ó','Ó']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'], [], ['ú','Ú'], ['ü','Ü']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [] # o with diaeresis (finnish, swedish)
+];
+
+# The next should be pretty easy:
+# It means: 'ß' is a ligature which is sorted like the letter sequence `ss'
+# but in case two words differs only there, the word with 'ß' comes after the
+# one with 'ss' (e.g. Masse, Maße.)
+
+# The same with Ä/ä, only this time with uppercase/lowercase variants.
+# The order of the lines in $ligatures does not matter.
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+[['Ä','ä'], 'before', [['A','e'], ['a','e']]],
+[['Ö','ö'], 'before', [['O','e'], ['o','e']]]
+];
+
+# `special' are those characters which are normally ignored in the sorting
+# process, but e.g. to sort the words "coop" and "co-op" we must also define
+# an order here.
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '\\/');
+
+# first lower or upper case?
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+#@letter_group_names = ('A','B','C','Ch','D','E','F','G','H','I','J','K',
+#'L','Ll','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/Makefile.am
new file mode 100644
index 00000000000..6604916c28d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/Makefile.am
@@ -0,0 +1,47 @@
+## Makefile.am fragment for alphabets/turkish/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ turkish/latin3-lang.xdy \
+ turkish/latin3-test.xdy \
+ turkish/latin3.xdy \
+ turkish/latin5-lang.xdy \
+ turkish/latin5-test.xdy \
+ turkish/latin5.xdy \
+ turkish/utf8-lang.xdy \
+ turkish/utf8-test.xdy \
+ turkish/utf8.xdy
+
+EXTRA_DIST += \
+ turkish/latin3.pl \
+ turkish/latin5.pl \
+ turkish/utf8.pl.in
+
+DISTCLEANFILES += \
+ turkish/utf8.pl
+
+DOCS_LATIN3 += \
+ turkish/latin3-doc.tex
+DOCS_LATIN5 += \
+ turkish/latin5-doc.tex
+DOCS_UTF8_LAT += \
+ turkish/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin3.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin3.pl
new file mode 100644
index 00000000000..a8caa256069
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin3.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Turkish";
+$prefix = "tr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+['«', ['»','«']],
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+['I', ['¹','I']],
+['©', ['i','©']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['ª', ['º','ª']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin5.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin5.pl
new file mode 100644
index 00000000000..5a5920adca8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/latin5.pl
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Turkish";
+$prefix = "tr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+['Ð', ['ð','Ð']],
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+['I', ['ý','I']],
+['Ý', ['i','Ý']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Þ', ['þ','Þ']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/utf8.pl.in
new file mode 100644
index 00000000000..e81b9fc619f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/turkish/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Turkish";
+$prefix = "tr";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['â','Â']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+['Ç', ['ç','Ç']],
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+['Äž', ['ÄŸ','Äž']],
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+['I', ['ı','I']],
+['Ä°', ['i','Ä°']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+['Ö', ['ö','Ö']],
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+['Åž', ['ÅŸ','Åž']],
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U'],['û','Û']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+['Ü', ['ü','Ü']],
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/Makefile.am
new file mode 100644
index 00000000000..5c79ee25076
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/Makefile.am
@@ -0,0 +1,47 @@
+## Makefile.am fragment for alphabets/ukrainian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ ukrainian/cp1251-lang.xdy \
+ ukrainian/cp1251-test.xdy \
+ ukrainian/cp1251.xdy \
+ ukrainian/koi8-u-lang.xdy \
+ ukrainian/koi8-u-test.xdy \
+ ukrainian/koi8-u.xdy \
+ ukrainian/utf8-lang.xdy \
+ ukrainian/utf8-test.xdy \
+ ukrainian/utf8.xdy
+
+EXTRA_DIST += \
+ ukrainian/cp1251.pl \
+ ukrainian/koi8-u.pl \
+ ukrainian/utf8.pl.in
+
+DISTCLEANFILES += \
+ ukrainian/utf8.pl
+
+DOCS_CYR_1251 += \
+ ukrainian/cp1251-doc.tex
+DOCS_CYR_KOI8_U += \
+ ukrainian/koi8-u-doc.tex
+DOCS_UTF8_CYR += \
+ ukrainian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/cp1251.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/cp1251.pl
new file mode 100644
index 00000000000..1d86ae253a4
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/cp1251.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Ukrainian";
+$prefix = "uk";
+$script = "cyrillic";
+
+$alphabet = [
+['À', ['à','À']],
+['Á', ['á','Á']],
+['Â', ['â','Â']],
+['Ã', ['ã','Ã']],
+['¥', ['´','¥']],
+['Ä', ['ä','Ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Å', ['å','Å'],['¸','¨']],
+ [], # io (mongolian)
+['ª', ['º','ª']],
+['Æ', ['æ','Æ']],
+['Ç', ['ç','Ç']],
+ [], # dze (macedonian)
+['È', ['è','È']],
+['²', ['³','²']],
+['¯', ['¿','¯']],
+['É', ['é','É']],
+ [], # je (macedonian, serbian)
+['Ê', ['ê','Ê']],
+['Ë', ['ë','Ë']],
+ [], # lje (macedonian, serbian)
+['Ì', ['ì','Ì']],
+['Í', ['í','Í']],
+ [], # nje (macedonian, serbian)
+['Î', ['î','Î']],
+ [], # barred o (mongolian)
+['Ï', ['ï','Ï']],
+['Ð', ['ð','Ð']],
+['Ñ', ['ñ','Ñ']],
+['Ò', ['ò','Ò']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['Ó', ['ó','Ó']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ô', ['ô','Ô']],
+['Õ', ['õ','Õ']],
+['Ö', ['ö','Ö']],
+['×', ['÷','×']],
+ [], # dzhe (macedonian, serbian)
+['Ø', ['ø','Ø']],
+['Ù', ['ù','Ù']],
+['Ú', ['ú','Ú']],
+['Û', ['û','Û']],
+ [], # soft sign (many)
+ [],
+['Ý', ['ý','Ý']],
+['Þ', ['þ','Þ']],
+['ß', ['ÿ','ß']],
+['Ü', ['ü','Ü']],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/koi8-u.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/koi8-u.pl
new file mode 100644
index 00000000000..b176a3be1fb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/koi8-u.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Ukrainian";
+$prefix = "uk";
+$script = "cyrillic";
+
+$alphabet = [
+['á', ['Á','á']],
+['â', ['Â','â']],
+['÷', ['×','÷']],
+['ç', ['Ç','ç']],
+['½', ['­','½']],
+['ä', ['Ä','ä']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['å', ['Å','å'],['£','³']],
+ [], # io (mongolian)
+['´', ['¤','´']],
+['ö', ['Ö','ö']],
+['ú', ['Ú','ú']],
+ [], # dze (macedonian)
+['é', ['É','é']],
+['¶', ['¦','¶']],
+['·', ['§','·']],
+['ê', ['Ê','ê']],
+ [], # je (macedonian, serbian)
+['ë', ['Ë','ë']],
+['ì', ['Ì','ì']],
+ [], # lje (macedonian, serbian)
+['í', ['Í','í']],
+['î', ['Î','î']],
+ [], # nje (macedonian, serbian)
+['ï', ['Ï','ï']],
+ [], # barred o (mongolian)
+['ð', ['Ð','ð']],
+['ò', ['Ò','ò']],
+['ó', ['Ó','ó']],
+['ô', ['Ô','ô']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['õ', ['Õ','õ']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['æ', ['Æ','æ']],
+['è', ['È','è']],
+['ã', ['Ã','ã']],
+['þ', ['Þ','þ']],
+ [], # dzhe (macedonian, serbian)
+['û', ['Û','û']],
+['ý', ['Ý','ý']],
+['ÿ', ['ß','ÿ']],
+['ù', ['Ù','ù']],
+ [], # soft sign (many)
+ [],
+['ü', ['Ü','ü']],
+['à', ['À','à']],
+['ñ', ['Ñ','ñ']],
+['ø', ['Ø','ø']],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/utf8.pl.in
new file mode 100644
index 00000000000..2fbb2cf0c12
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/ukrainian/utf8.pl.in
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+
+$language = "Ukrainian";
+$prefix = "uk";
+$script = "cyrillic";
+
+$alphabet = [
+['Ð', ['а','Ð']],
+['Б', ['б','Б']],
+['В', ['в','В']],
+['Г', ['г','Г']],
+['Ò', ['Ò‘','Ò']],
+['Д', ['д','Д']],
+ [], # dje (serbian)
+ [], # gje (macedonian)
+['Е', ['е','Е'],['Ñ‘','Ð']],
+ [], # io (mongolian)
+['Є', ['є','Є']],
+['Ж', ['ж','Ж']],
+['З', ['з','З']],
+ [], # dze (macedonian)
+['И', ['и','И']],
+['І', ['і','І']],
+['Ї', ['ї','Ї']],
+['Й', ['й','Й']],
+ [], # je (macedonian, serbian)
+['К', ['к','К']],
+['Л', ['л','Л']],
+ [], # lje (macedonian, serbian)
+['М', ['м','М']],
+['Ð', ['н','Ð']],
+ [], # nje (macedonian, serbian)
+['О', ['о','О']],
+ [], # barred o (mongolian)
+['П', ['п','П']],
+['Р', ['р','Р']],
+['С', ['Ñ','С']],
+['Т', ['т','Т']],
+ [], # tshe (serbian)
+ [], # kje (macedonian)
+['У', ['у','У']],
+ [], # short u (belarusian)
+ [], # straight u (mongolian)
+['Ф', ['ф','Ф']],
+['Ð¥', ['Ñ…','Ð¥']],
+['Ц', ['ц','Ц']],
+['Ч', ['ч','Ч']],
+ [], # dzhe (macedonian, serbian)
+['Ш', ['ш','Ш']],
+['Щ', ['щ','Щ']],
+['Ъ', ['ъ','Ъ']],
+['Ы', ['ы','Ы']],
+ [], # soft sign (many)
+ [],
+['Э', ['Ñ','Э']],
+['Ю', ['ю','Ю']],
+['Я', ['Ñ','Я']],
+['Ь', ['ь','Ь']],
+ [],
+ [],
+ []
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/Makefile.am
new file mode 100644
index 00000000000..83f73ee5df8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/Makefile.am
@@ -0,0 +1,47 @@
+## Makefile.am fragment for alphabets/upper-sorbian/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ upper-sorbian/cp1250-lang.xdy \
+ upper-sorbian/cp1250-test.xdy \
+ upper-sorbian/cp1250.xdy \
+ upper-sorbian/latin2-lang.xdy \
+ upper-sorbian/latin2-test.xdy \
+ upper-sorbian/latin2.xdy \
+ upper-sorbian/utf8-lang.xdy \
+ upper-sorbian/utf8-test.xdy \
+ upper-sorbian/utf8.xdy
+
+EXTRA_DIST += \
+ upper-sorbian/cp1250.pl \
+ upper-sorbian/latin2.pl \
+ upper-sorbian/utf8.pl.in
+
+DISTCLEANFILES += \
+ upper-sorbian/utf8.pl
+
+DOCS_CP1250 += \
+ upper-sorbian/cp1250-doc.tex
+DOCS_LATIN2 += \
+ upper-sorbian/latin2-doc.tex
+DOCS_UTF8_LAT += \
+ upper-sorbian/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/cp1250.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/cp1250.pl
new file mode 100644
index 00000000000..2fcc96646f6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/cp1250.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Upper Sorbian";
+$prefix = "s2";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+['DŸ', ['dŸ','DŸ','D']],
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Ì', ['ì','Ì']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['£', ['³','£']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Š', ['š','Š']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+['Æ', ['æ','Æ']],
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/latin2.pl b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/latin2.pl
new file mode 100644
index 00000000000..902c3f4b3eb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/latin2.pl
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Upper Sorbian";
+$prefix = "s2";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['È', ['è','È']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+['D¼', ['d¼','D¼','D¬']],
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Ì', ['ì','Ì']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['£', ['³','£']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ñ', ['ñ','Ñ']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ø', ['ø','Ø']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['©', ['¹','©']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+['Æ', ['æ','Æ']],
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['®', ['¾','®']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/utf8.pl.in
new file mode 100644
index 00000000000..a080b27b6f8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/upper-sorbian/utf8.pl.in
@@ -0,0 +1,145 @@
+#!/usr/bin/perl
+
+$language = "Upper Sorbian";
+$prefix = "s2";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (many)
+ [], # cs (hungarian)
+['ÄŒ', ['Ä','ÄŒ']],
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+['Dź', ['dź','Dź','DŹ']],
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E']],
+['Äš', ['Ä›','Äš']],
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+['Ch', ['ch','Ch','CH']],
+ [], # dotless i (turkish)
+['I', ['i','I']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+['Å', ['Å‚','Å']],
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+['Ń', ['ń','Ń']],
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O']],
+['Ó', ['ó','Ó']],
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+['Ř', ['ř','Ř']],
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+['Å ', ['Å¡','Å ']],
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+['Ć', ['ć','Ć']],
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+['Ž', ['ž','Ž']],
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$ligatures = [
+[['ß'], 'after', [['s','s']]],
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/utf8-to-tex.sed b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/utf8-to-tex.sed
new file mode 100644
index 00000000000..a4f12463d9f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/utf8-to-tex.sed
@@ -0,0 +1,105 @@
+# $Id: utf8-to-tex.sed,v 1.8 2001/04/01 18:03:18 thenlich Exp $
+# translate UTF-8 to something that TeX understands
+# for russian transliteration:
+s/Ä/\\v c/g;
+s/Č/\\v C/g;
+s/Ä—/\\.e/g;
+s/Ä–/\\.E/g;
+s/è/\\`e/g;
+s/È/\\`E/g;
+s/ë/\\"e/g;
+s/Ë/\\"E/g;
+s/ï/\\"i/g;
+s/Ã/\\"I/g;
+s/Å¡/\\v s/g;
+s/Å /\\v S/g;
+s/ž/\\v z/g;
+s/Ž/\\v Z/g;
+s/″/$\\\'\\\'$/g;
+s/′/$\\\'$/g;
+s/Å/\\^s/g;
+s/Ŝ/\\^S/g;
+s/û/\\^u/g;
+s/Û/\\^U/g;
+s/â/\\^a/g;
+s/Â/\\^A/g;
+# greek:
+s/Ä“/\\=e/g;
+s/Ä’/\\=E/g;
+s/Å/\\=o/g;
+s/Ō/\\=O/g;
+# turkish:
+s/ç/\\c c/g;
+s/Ç/\\c C/g;
+s/ÄŸ/\\u g/g;
+s/Äž/\\u G/g;
+s/ı/\\i/g;
+s/Ä°/\\.I/g;
+s/ö/\\"o/g;
+s/Ö/\\"O/g;
+s/ÅŸ/\\c s/g;
+s/Åž/\\c S/g;
+s/ü/\\"u/g;
+s/Ü/\\"U/g;
+# esperanto:
+s/ĉ/\\^c/g;
+s/Ĉ/\\^C/g;
+s/Ä/\\^g/g;
+s/Ĝ/\\^G/g;
+s/Ä¥/\\^h/g;
+s/Ĥ/\\^H/g;
+s/ĵ/\\^\\j/g;
+s/Ä´/\\^J/g;
+s/Å­/\\u u/g;
+s/Ŭ/\\u U/g;
+# german:
+s/ä/\\"a/g;
+s/Ä/\\"A/g;
+s/ß/\\ss{}/g;
+# romanian:
+s/È™/\\ooalign{s\\crcr\\hidewidth\\raise-.3ex\\hbox{\\scriptsize,}\\hidewidth}/g;
+s/Ș/\\ooalign{S\\crcr\\hidewidth\\raise-.3ex\\hbox{\\scriptsize,}\\hidewidth}/g;
+s/È›/\\ooalign{t\\crcr\\hidewidth\\raise-.25ex\\hbox{\\scriptsize,}\\hidewidth}/g;
+s/Èš/\\ooalign{T\\crcr\\hidewidth\\raise-.25ex\\hbox{\\scriptsize,}\\hidewidth}/g;
+s/ă/\\u a/g;
+s/Ä‚/\\u A/g;
+s/î/\\^\\i/g;
+s/ÃŽ/\\^I/g;
+# dutch:
+s/é/\\\\\\\'e/g;
+s/É/\\\\\\\'E/g;
+s/ij/ij/g;
+s/IJ/IJ/g;
+# croatian:
+s/ć/\\\\\\\'c/g;
+s/Ć/\\\\\\\'C/g;
+s/Ä‘/\\dj{}/g;
+s/Ä/\\DJ{}/g;
+s/dž/d\\v z/g;
+s/Ç…/D\\v z/g;
+s/Ç„/D\\v Z/g;
+s/lj/lj/g;
+s/Lj/Lj/g;
+s/LJ/LJ/g;
+s/nj/nj/g;
+s/Ç‹/Nj/g;
+s/ÇŠ/NJ/g;
+s/dz/dz/g;
+s/Dz/Dz/g;
+s/DZ/DZ/g;
+# kurdish:
+s/ê/\\^e/g;
+s/Ê/\\^E/g;
+# lithuanian:
+s/Ä…/\\k a/g;
+s/Ä„/\\k A/g;
+s/Ä™/\\k e/g;
+s/Ę/\\k E/g;
+s/Ä—/\\.e/g;
+s/Ä–/\\.E/g;
+s/į/\\k i/g;
+s/Ä®/\\k I/g;
+s/ų/\\k u/g;
+s/Ų/\\k U/g;
+s/Å«/\\=u/g;
+s/Ū/\\=U/g;
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/Makefile.am
new file mode 100644
index 00000000000..570f8cc2a37
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/Makefile.am
@@ -0,0 +1,36 @@
+## Makefile.am fragment for alphabets/vietnamese/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_nodist_lang_DATA += \
+ vietnamese/utf8-lang.xdy \
+ vietnamese/utf8-test.xdy \
+ vietnamese/utf8.xdy
+
+EXTRA_DIST += \
+ vietnamese/README \
+ vietnamese/utf8.pl.in
+
+DISTCLEANFILES += \
+ vietnamese/utf8.pl
+
+DOCS_UTF8_LAT += \
+ vietnamese/utf8-doc.tex
+
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/README b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/README
new file mode 100644
index 00000000000..30d857181a8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/README
@@ -0,0 +1,12 @@
+http://vietunicode.sourceforge.net/charset/quytacABC_en.html
+is documentation from the Vietnam Lexicography Centre about Vietnamese
+sorting rules for dictionary entries.
+
+Thanks to Pavel Striz <pavel at striz.cz> for supplying that
+information at 2014-03-28 in the xindy mailing list and also sending a
+patch that fixes the former incorrect sorting.
+
+Comment from Joachim Schrod <jschrod@acm.org> at 2014-04-19: I have
+not checked if rule 4 and Note 1 from that documentation are really
+realized by xindy. If somebody could check and tell me, I would be
+grateful.
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/utf8.pl.in b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/utf8.pl.in
new file mode 100644
index 00000000000..31ec82282e7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/alphabets/vietnamese/utf8.pl.in
@@ -0,0 +1,144 @@
+#!/usr/bin/perl
+
+$language = "Vietnamese";
+$prefix = "vi";
+$script = "latin";
+
+$alphabet = [
+['A', ['a','A'],['à','À'],['ả','Ả'],['ã','Ã'],['á','Ã'],['ạ','Ạ']],
+['Ă', ['ă','Ă'],['ằ','Ằ'],['ẳ','Ẳ'],['ẵ','Ẵ'],['ắ','Ắ'],['ặ','Ặ']],
+['Â', ['â','Â'],['ầ','Ầ'],['ẩ','Ẩ'],['ẫ','Ẫ'],['ấ','Ấ'],['ậ','Ậ']],
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C']],
+ [], # ch (spanish/traditonal)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+['Ä', ['Ä‘','Ä']],
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['è','È'],['ẻ','Ẻ'],['ẽ','Ẽ'],['é','É'],['ẹ','Ẹ']],
+ [], # e with caron (lower/upper sorbian)
+['Ê', ['ê','Ê'],['á»','Ề'],['ể','Ể'],['á»…','Ễ'],['ế','Ế'],['ệ','Ệ']],
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ì','ÃŒ'],['ỉ','Ỉ'],['Ä©','Ĩ'],['í','Ã'],['ị','Ị']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditonal)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ò','Ã’'],['á»','Ỏ'],['õ','Õ'],['ó','Ó'],['á»','Ọ']],
+ [], # o with acute (polish, upper sorbian)
+['Ô', ['ô','Ô'],['ồ','á»’'],['ổ','á»”'],['á»—','á»–'],['ố','á»'],['á»™','Ộ']],
+['Æ ', ['Æ¡','Æ '],['á»','Ờ'],['ở','Ở'],['ỡ','á» '],['á»›','Ớ'],['ợ','Ợ']],
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian) @@
+['U', ['u','U'],['ù','Ù'],['ủ','Ủ'],['ũ','Ũ'],['ú','Ú'],['ụ','Ụ']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+['Ư', ['ư','Ư'],['ừ','Ừ'],['ử','Ử'],['ữ','Ữ'],['ứ','Ứ'],['ự','Ự']],
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y'],['ỳ','Ỳ'],['á»·','Ỷ'],['ỹ','Ỹ'],['ý','Ã'],['ỵ','á»´']],
+ [], # y preceded by apostrophe (hausa)
+ [], # yogh (english)
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+ [], # thorn (icelandic)
+ [], # wynn (english)
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$sortcase = 'Aa';
+#$sortcase = 'aA';
+
+$ligatures = [
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'');
+
+do 'make-rules.pl';
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.am b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.am
new file mode 100644
index 00000000000..d399ed8f24f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.am
@@ -0,0 +1,156 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+modulesdir = $(pkglibdir)/modules
+
+inputencdir = $(modulesdir)/tex/inputenc
+
+INPUTENCS = \
+ cp1250.xdy \
+ cp1251.xdy \
+ cp1252.xdy \
+ cp437.xdy \
+ cp850.xdy \
+ cp855.xdy \
+ cp866.xdy \
+ iso88595.xdy \
+ isoir111.xdy \
+ koi8-r.xdy \
+ koi8-u.xdy \
+ latin.xdy \
+ latin1.xdy \
+ latin2.xdy \
+ latin3.xdy \
+ utf8.xdy
+
+latin.xdy : latin1.xdy latin2.xdy latin3.xdy
+ echo ';; Generated from latin?.xdy' >latin.xdy
+ echo >>latin.xdy
+ sort -u latin?.xdy | grep -v '^;' >>latin.xdy
+
+utf8.xdy : latin1.xdy latin2.xdy latin3.xdy
+ iconv -t UTF-8 -f ISO8859-1 latin1.xdy >latin1-utf8.xdy
+ iconv -t UTF-8 -f ISO8859-2 latin2.xdy >latin2-utf8.xdy
+ iconv -t UTF-8 -f ISO8859-3 latin3.xdy >latin3-utf8.xdy
+ echo ';; Generated from recoded latin?.xdy' >utf8.xdy
+ echo >>utf8.xdy
+ sort -u latin?-utf8.xdy | grep -v '^;' >>utf8.xdy
+
+%.xdy %.idx :
+ $(PERL) $(srcdir)/make-testidx.pl TS1,T2A,T1 $* >$*.tex
+ $(LATEX) -interaction nonstopmode $*.tex
+ $(PERL) $(srcdir)/make-inp-rules.pl <$*.idx >$*.xdy
+
+PERLSCRIPTS = \
+ make-inp-rules.pl \
+ make-testidx.pl
+
+
+AUXS = \
+ cp1250.aux \
+ cp1251.aux \
+ cp1252.aux \
+ cp437.aux \
+ cp850.aux \
+ cp855.aux \
+ cp866.aux \
+ iso88595.aux \
+ isoir111.aux \
+ koi8-r.aux \
+ koi8-u.aux \
+ latin1.aux \
+ latin2.aux \
+ latin3.aux
+
+DVIS = \
+ cp1250.dvi \
+ cp1251.dvi \
+ cp1252.dvi \
+ cp437.dvi \
+ cp850.dvi \
+ cp855.dvi \
+ cp866.dvi \
+ iso88595.dvi \
+ isoir111.dvi \
+ koi8-r.dvi \
+ koi8-u.dvi \
+ latin1.dvi \
+ latin2.dvi \
+ latin3.dvi
+
+IDXS = \
+ cp1250.idx \
+ cp1251.idx \
+ cp1252.idx \
+ cp437.idx \
+ cp850.idx \
+ cp855.idx \
+ cp866.idx \
+ iso88595.idx \
+ isoir111.idx \
+ koi8-r.idx \
+ koi8-u.idx \
+ latin1.idx \
+ latin2.idx \
+ latin3.idx
+
+LOGS = \
+ cp1250.log \
+ cp1251.log \
+ cp1252.log \
+ cp437.log \
+ cp850.log \
+ cp855.log \
+ cp866.log \
+ iso88595.log \
+ isoir111.log \
+ koi8-r.log \
+ koi8-u.log \
+ latin1.log \
+ latin2.log \
+ latin3.log
+
+TEXS = \
+ cp1250.tex \
+ cp1251.tex \
+ cp1252.tex \
+ cp437.tex \
+ cp850.tex \
+ cp855.tex \
+ cp866.tex \
+ iso88595.tex \
+ isoir111.tex \
+ koi8-r.tex \
+ koi8-u.tex \
+ latin1.tex \
+ latin2.tex \
+ latin3.tex
+
+UTF8 = \
+ latin1-utf8.xdy \
+ latin2-utf8.xdy \
+ latin3-utf8.xdy
+
+EXTRA_DIST = $(PERLSCRIPTS)
+
+CLEANFILES = $(AUXS) $(DVIS) $(IDXS) $(INPUTENCS) $(LOGS) $(TEXS) $(UTF8)
+
+nodist_inputenc_DATA = $(INPUTENCS)
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.in b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.in
new file mode 100644
index 00000000000..3d866f30dc9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/Makefile.in
@@ -0,0 +1,608 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/make-rules/inputenc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(inputencdir)"
+DATA = $(nodist_inputenc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+modulesdir = $(pkglibdir)/modules
+inputencdir = $(modulesdir)/tex/inputenc
+INPUTENCS = \
+ cp1250.xdy \
+ cp1251.xdy \
+ cp1252.xdy \
+ cp437.xdy \
+ cp850.xdy \
+ cp855.xdy \
+ cp866.xdy \
+ iso88595.xdy \
+ isoir111.xdy \
+ koi8-r.xdy \
+ koi8-u.xdy \
+ latin.xdy \
+ latin1.xdy \
+ latin2.xdy \
+ latin3.xdy \
+ utf8.xdy
+
+PERLSCRIPTS = \
+ make-inp-rules.pl \
+ make-testidx.pl
+
+AUXS = \
+ cp1250.aux \
+ cp1251.aux \
+ cp1252.aux \
+ cp437.aux \
+ cp850.aux \
+ cp855.aux \
+ cp866.aux \
+ iso88595.aux \
+ isoir111.aux \
+ koi8-r.aux \
+ koi8-u.aux \
+ latin1.aux \
+ latin2.aux \
+ latin3.aux
+
+DVIS = \
+ cp1250.dvi \
+ cp1251.dvi \
+ cp1252.dvi \
+ cp437.dvi \
+ cp850.dvi \
+ cp855.dvi \
+ cp866.dvi \
+ iso88595.dvi \
+ isoir111.dvi \
+ koi8-r.dvi \
+ koi8-u.dvi \
+ latin1.dvi \
+ latin2.dvi \
+ latin3.dvi
+
+IDXS = \
+ cp1250.idx \
+ cp1251.idx \
+ cp1252.idx \
+ cp437.idx \
+ cp850.idx \
+ cp855.idx \
+ cp866.idx \
+ iso88595.idx \
+ isoir111.idx \
+ koi8-r.idx \
+ koi8-u.idx \
+ latin1.idx \
+ latin2.idx \
+ latin3.idx
+
+LOGS = \
+ cp1250.log \
+ cp1251.log \
+ cp1252.log \
+ cp437.log \
+ cp850.log \
+ cp855.log \
+ cp866.log \
+ iso88595.log \
+ isoir111.log \
+ koi8-r.log \
+ koi8-u.log \
+ latin1.log \
+ latin2.log \
+ latin3.log
+
+TEXS = \
+ cp1250.tex \
+ cp1251.tex \
+ cp1252.tex \
+ cp437.tex \
+ cp850.tex \
+ cp855.tex \
+ cp866.tex \
+ iso88595.tex \
+ isoir111.tex \
+ koi8-r.tex \
+ koi8-u.tex \
+ latin1.tex \
+ latin2.tex \
+ latin3.tex
+
+UTF8 = \
+ latin1-utf8.xdy \
+ latin2-utf8.xdy \
+ latin3-utf8.xdy
+
+EXTRA_DIST = $(PERLSCRIPTS)
+CLEANFILES = $(AUXS) $(DVIS) $(IDXS) $(INPUTENCS) $(LOGS) $(TEXS) $(UTF8)
+nodist_inputenc_DATA = $(INPUTENCS)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/make-rules/inputenc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/make-rules/inputenc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-nodist_inputencDATA: $(nodist_inputenc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nodist_inputenc_DATA)'; test -n "$(inputencdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(inputencdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(inputencdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(inputencdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(inputencdir)" || exit $$?; \
+ done
+
+uninstall-nodist_inputencDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nodist_inputenc_DATA)'; test -n "$(inputencdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(inputencdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(inputencdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nodist_inputencDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-nodist_inputencDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-nodist_inputencDATA \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-nodist_inputencDATA
+
+.PRECIOUS: Makefile
+
+
+latin.xdy : latin1.xdy latin2.xdy latin3.xdy
+ echo ';; Generated from latin?.xdy' >latin.xdy
+ echo >>latin.xdy
+ sort -u latin?.xdy | grep -v '^;' >>latin.xdy
+
+utf8.xdy : latin1.xdy latin2.xdy latin3.xdy
+ iconv -t UTF-8 -f ISO8859-1 latin1.xdy >latin1-utf8.xdy
+ iconv -t UTF-8 -f ISO8859-2 latin2.xdy >latin2-utf8.xdy
+ iconv -t UTF-8 -f ISO8859-3 latin3.xdy >latin3-utf8.xdy
+ echo ';; Generated from recoded latin?.xdy' >utf8.xdy
+ echo >>utf8.xdy
+ sort -u latin?-utf8.xdy | grep -v '^;' >>utf8.xdy
+
+%.xdy %.idx :
+ $(PERL) $(srcdir)/make-testidx.pl TS1,T2A,T1 $* >$*.tex
+ $(LATEX) -interaction nonstopmode $*.tex
+ $(PERL) $(srcdir)/make-inp-rules.pl <$*.idx >$*.xdy
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-inp-rules.pl b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-inp-rules.pl
new file mode 100755
index 00000000000..437684a1711
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-inp-rules.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+print <<"EOF";
+;; this file was generated by make-inp-rules.pl
+;; these rules map inputenc generated macros (back) to 8-bit characters
+
+EOF
+
+
+while (<STDIN>) {
+ if (/\\indexentry\{(.+)--([8-9a-f][0-9a-f])\}\{1\}/) {
+ if (!($1 =~ /inputenc Error|\@inpenc\@undefined/)) {
+ $i = hex($2);
+ $macro = $1;
+ $macro =~ s/\~/~~/g;
+ $macro =~ s/\"/~\"/g;
+ printf("(merge-rule \"%s\" \"%c\" :string)\n",
+ $macro, $i);
+ if (@ARGV[0] eq "cyracc" &&
+ $macro =~ /(cyra |cyre |cyri |cyro |cyru |cyrerev |cyryu |cyrya )/i) {
+ printf("(merge-rule \"\\'{%s}\" \"\\'%c\" :string)\n",
+ $macro, $i);
+ }
+ }
+ }
+}
+
+print <<"EOF";
+
+;; end of style file.
+EOF
diff --git a/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-testidx.pl b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-testidx.pl
new file mode 100755
index 00000000000..5faf3beed9e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/make-rules/inputenc/make-testidx.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+print <<"EOF";
+\\documentclass{article}
+% this file was generated by make-testidx.pl
+\\usepackage[@ARGV[0]]{fontenc}
+\\usepackage[@ARGV[1]]{inputenc}
+\\makeindex
+\\begin{document}
+% test of index writing with inputenc
+.
+EOF
+
+for ($i = 128; $i < 256; $i++) {
+ printf("\\index{%c--%2x}\n", $i, $i);
+}
+
+print <<"EOF";
+\\end{document}
+EOF
diff --git a/Build/source/utils/xindy/xindy-src/modules/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/Makefile.am
new file mode 100644
index 00000000000..8223e19f409
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/Makefile.am
@@ -0,0 +1,39 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 by Joachim Schrod.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+modulesdir = $(pkglibdir)/modules
+
+nobase_modules_DATA =
+
+EXTRA_DIST = $(nobase_modules_DATA)
+
+## Include all Makefile.am fragments.
+##
+include base/Makefile.am
+include class/Makefile.am
+include lang/german/Makefile.am
+include lang/korean/Makefile.am
+include lang/latin/Makefile.am
+include ord/Makefile.am
+include rules/Makefile.am
+include styles/Makefile.am
diff --git a/Build/source/utils/xindy/xindy-src/modules/Makefile.in b/Build/source/utils/xindy/xindy-src/modules/Makefile.in
new file mode 100644
index 00000000000..d6feae768d9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/Makefile.in
@@ -0,0 +1,501 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/modules
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(modulesdir)"
+DATA = $(nobase_modules_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/base/Makefile.am \
+ $(srcdir)/class/Makefile.am $(srcdir)/lang/german/Makefile.am \
+ $(srcdir)/lang/korean/Makefile.am \
+ $(srcdir)/lang/latin/Makefile.am $(srcdir)/ord/Makefile.am \
+ $(srcdir)/rules/Makefile.am $(srcdir)/styles/Makefile.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+modulesdir = $(pkglibdir)/modules
+nobase_modules_DATA = base/book-order.xdy base/ff-ranges-only.xdy \
+ base/ff-ranges.xdy base/german-sty.xdy base/ignore-hyphen.xdy \
+ base/ignore-punctuation.xdy base/keep-blanks.xdy \
+ base/latex-loc-fmts.xdy base/latex.xdy \
+ base/latin-lettergroups.xdy base/letter-order.xdy \
+ base/makeindex.xdy base/numeric-sort.xdy base/page-ranges.xdy \
+ base/texindy.xdy base/tex.xdy base/word-order.xdy \
+ class/pagenums.xdy lang/german/din5007.xdy \
+ lang/german/duden.xdy lang/german/tex.xdy lang/korean/utf8.xdy \
+ lang/korean/utf8-lang.xdy lang/latin/caseisrt.xdy \
+ lang/latin/letgroup.xdy ord/letorder.xdy \
+ rules/isolatin1-exchange.xdy rules/latin-exchange.xdy \
+ rules/isolatin1-tolower.xdy rules/latin-tolower.xdy \
+ styles/basic.xdy styles/makeidx.xdy
+EXTRA_DIST = $(nobase_modules_DATA) lang/korean/README
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/base/Makefile.am $(srcdir)/class/Makefile.am $(srcdir)/lang/german/Makefile.am $(srcdir)/lang/korean/Makefile.am $(srcdir)/lang/latin/Makefile.am $(srcdir)/ord/Makefile.am $(srcdir)/rules/Makefile.am $(srcdir)/styles/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/modules/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/modules/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/base/Makefile.am $(srcdir)/class/Makefile.am $(srcdir)/lang/german/Makefile.am $(srcdir)/lang/korean/Makefile.am $(srcdir)/lang/latin/Makefile.am $(srcdir)/ord/Makefile.am $(srcdir)/rules/Makefile.am $(srcdir)/styles/Makefile.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-nobase_modulesDATA: $(nobase_modules_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(modulesdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(modulesdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(modulesdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(modulesdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(modulesdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(modulesdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_modulesDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_modules_DATA)'; test -n "$(modulesdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(modulesdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(modulesdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nobase_modulesDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-nobase_modulesDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-nobase_modulesDATA \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-nobase_modulesDATA
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/base/Makefile.am
new file mode 100644
index 00000000000..ab13d1670a1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/Makefile.am
@@ -0,0 +1,38 @@
+## Makefile.am fragment for modules/base/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ base/book-order.xdy \
+ base/ff-ranges-only.xdy \
+ base/ff-ranges.xdy \
+ base/german-sty.xdy \
+ base/ignore-hyphen.xdy \
+ base/ignore-punctuation.xdy \
+ base/keep-blanks.xdy \
+ base/latex-loc-fmts.xdy \
+ base/latex.xdy \
+ base/latin-lettergroups.xdy \
+ base/letter-order.xdy \
+ base/makeindex.xdy \
+ base/numeric-sort.xdy \
+ base/page-ranges.xdy \
+ base/texindy.xdy \
+ base/tex.xdy \
+ base/word-order.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/book-order.xdy b/Build/source/utils/xindy/xindy-src/modules/base/book-order.xdy
new file mode 100644
index 00000000000..aa5d078987b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/book-order.xdy
@@ -0,0 +1,24 @@
+;; $Id: book-order.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; book order scheme
+;;;
+
+;; NOTE: Assumes that makeindex.xdy has been loaded.
+
+(define-location-class-order ("roman-page-numbers"
+ "Roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Alpha-page-numbers"
+ "see"
+ "seealso"))
+
+
+;;======================================================================
+;;
+;; $Log: book-order.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges-only.xdy b/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges-only.xdy
new file mode 100644
index 00000000000..451ae9ac472
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges-only.xdy
@@ -0,0 +1,25 @@
+;; $Id: ff-ranges-only.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; ff ranges only
+;;;
+;;; Use "f" for two pages, "ff" notation for ranges of three and more pages
+;;;
+
+;; FIXME: This will output a warning about a redefinition if latex.xdy
+;; is already loaded. Which it is, most of the time. I don't want that
+;; message, and we should get rid of it.
+(define-location-class "arabic-page-numbers"
+ ("arabic-numbers") :min-range-length 1)
+
+(markup-range :sep "f" :length 1 :ignore-end :class "arabic-page-numbers")
+(markup-range :sep "ff" :ignore-end :class "arabic-page-numbers")
+
+
+;;======================================================================
+;;
+;; $Log: ff-ranges-only.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges.xdy b/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges.xdy
new file mode 100644
index 00000000000..f38b55765a7
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/ff-ranges.xdy
@@ -0,0 +1,27 @@
+;; $Id: ff-ranges.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; ff ranges
+;;;
+;;; Use "f" for two pages, "ff" notation for ranges of three pages,
+;;; and explicit ranges thereafter: 2f, 2ff, 2--6.
+;;;
+
+;; FIXME: This will output a warning about a redefinition if latex.xdy
+;; is already loaded. Which it is, most of the time. I don't want that
+;; message, and we should get rid of it.
+(define-location-class "arabic-page-numbers"
+ ("arabic-numbers") :min-range-length 1)
+
+(markup-range :sep "f" :length 1 :ignore-end)
+(markup-range :sep "ff" :length 2 :ignore-end)
+(markup-range :sep "--")
+
+
+;;======================================================================
+;;
+;; $Log: ff-ranges.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/german-sty.xdy b/Build/source/utils/xindy/xindy-src/modules/base/german-sty.xdy
new file mode 100644
index 00000000000..d0f4d367f18
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/german-sty.xdy
@@ -0,0 +1,24 @@
+;; $Id: german-sty.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; german sty
+;;;
+;;; Map special German TeX letters (german.sty) to 8-bit characters.
+;;;
+
+(merge-rule "~"A" "Ä" :again :string)
+(merge-rule "~"O" "Ö" :again :string)
+(merge-rule "~"U" "Ü" :again :string)
+(merge-rule "~"a" "ä" :again :string)
+(merge-rule "~"o" "ö" :again :string)
+(merge-rule "~"u" "ü" :again :string)
+(merge-rule "~"s" "ß" :again :string)
+
+
+;;======================================================================
+;;
+;; $Log: german-sty.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/ignore-hyphen.xdy b/Build/source/utils/xindy/xindy-src/modules/base/ignore-hyphen.xdy
new file mode 100644
index 00000000000..44d3743a48f
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/ignore-hyphen.xdy
@@ -0,0 +1,18 @@
+;; $Id: ignore-hyphen.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; ignore hyphen scheme
+;;;
+;;; hyphens are ignored, "ad-hoc" is sorted as "adhoc".
+;;;
+
+(sort-rule "-" "")
+
+
+;;======================================================================
+;;
+;; $Log: ignore-hyphen.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/ignore-punctuation.xdy b/Build/source/utils/xindy/xindy-src/modules/base/ignore-punctuation.xdy
new file mode 100644
index 00000000000..051f2d63bc6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/ignore-punctuation.xdy
@@ -0,0 +1,42 @@
+;; $Id: ignore-punctuation.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; ignore punctuation scheme
+;;;
+;;; all kind of punctuations are ignored during sorting
+;;;
+
+;; accents and other special characters (plus, etc) are not considered
+;; punctuations.
+
+(sort-rule "!" "")
+(sort-rule "\"" "")
+(sort-rule "/" "")
+(sort-rule "(" "")
+(sort-rule ")" "")
+(sort-rule "{" "")
+(sort-rule "}" "")
+(sort-rule "[" "")
+(sort-rule "]" "")
+(sort-rule "<" "")
+(sort-rule ">" "")
+(sort-rule "=" "")
+(sort-rule "?" "")
+(sort-rule "\\" "")
+(sort-rule "'" "")
+(sort-rule "|" "")
+(sort-rule "," "")
+(sort-rule ";" "")
+(sort-rule "." "")
+(sort-rule ":" "")
+(sort-rule "-" "")
+(sort-rule "_" "")
+
+
+;;======================================================================
+;;
+;; $Log: ignore-punctuation.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/keep-blanks.xdy b/Build/source/utils/xindy/xindy-src/modules/base/keep-blanks.xdy
new file mode 100644
index 00000000000..892b5d70468
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/keep-blanks.xdy
@@ -0,0 +1,40 @@
+;; $Id: keep-blanks.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; keep blanks
+;;;
+;;; Don't trim white space at start or end, and don't collapse white
+;;; space in an index key.
+;;;
+
+;; This does not work currently. White space compression is
+;; implemented by merge rules in tex.xdy; and we would need to undo
+;; these rules. An implementation possibility is the postponing of
+;; these merge rules and our ability to stop their activation. But
+;; this is not implemented yet. Either we need a method to delete a
+;; merge rule, or we need a hook in the kernel.
+
+;; FIXME: I must coerce the error string to a simple-string because we
+;; use a special reader syntax in index styles. This reader syntax
+;; parses C-like strings and creates character arrays, but not simple
+;; strings. Frankly, I don't know how I may code this more easily,
+;; perhaps by a reader macro?
+
+(base:oops (coerce "
+
+Module keep-blanks does not work currently, due to a missing
+functionality in the xindy kernel. Please contact the xindy mailing
+list for more information.
+
+" 'simple-string))
+
+(base:error-exit)
+
+
+;;======================================================================
+;;
+;; $Log: keep-blanks.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/latex-loc-fmts.xdy b/Build/source/utils/xindy/xindy-src/modules/base/latex-loc-fmts.xdy
new file mode 100644
index 00000000000..3a39a5c922b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/latex-loc-fmts.xdy
@@ -0,0 +1,25 @@
+;; $Id: latex-loc-fmts.xdy,v 1.2 2006/08/31 00:10:59 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; Define default location attributes, and their markup.
+;;;
+
+;; Default attributes are all merged into one location group.
+(define-attributes (("default" "textbf" "textit" "hyperpage")))
+
+(markup-locref :open "\textbf{" :close "}" :attr "textbf")
+(markup-locref :open "\textit{" :close "}" :attr "textit")
+(markup-locref :open "\hyperpage{" :close "}" :attr "hyperpage")
+
+
+
+;;======================================================================
+;;
+;; $Log: latex-loc-fmts.xdy,v $
+;; Revision 1.2 2006/08/31 00:10:59 jschrod
+;; Ticket 1549661: Default attributes should be in the same location group.
+;;
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/latex.xdy b/Build/source/utils/xindy/xindy-src/modules/base/latex.xdy
new file mode 100644
index 00000000000..e45dc67049d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/latex.xdy
@@ -0,0 +1,83 @@
+;; $Id: latex.xdy,v 1.4 2008/01/09 15:13:29 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; LaTeX conventions
+;;;
+;;; both in raw index entries and output markup
+;;;
+
+
+;; We need to define merge rules for known macros first, as tex.xdy
+;; has a merge-rule that will discard all macros.
+
+(merge-rule "\\LaTeXe *" "LaTeX2e" :eregexp :again)
+(merge-rule "\\BibTeX *" "BibTeX" :eregexp :again)
+(merge-rule "\\AmSTeX *" "AmSTeX" :eregexp :again)
+(merge-rule "\\AmSLaTeX *" "AmSLaTeX" :eregexp :again)
+(merge-rule "\\XeT *" "XeT" :eregexp :again)
+
+
+;; LaTeX has the same conventions as TeX
+
+(require "tex.xdy")
+
+
+;; We do not define attributes, this is done in latex-loc-fmts.
+
+
+;; Standard location classes: arabic and roman numbers, and alphabets.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+
+;;;
+;;; Output Markup
+;;;
+
+(markup-index :open
+"\begin{theindex}
+ \providecommand*\lettergroupDefault[1]{}
+ \providecommand*\lettergroup[1]{%
+ \par\textbf{#1}\par
+ \nopagebreak
+ }
+"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+(markup-letter-group :open-head "~n % ")
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+(markup-locclass-list :open ", " :sep ", ")
+(markup-locref-list :sep ", ")
+
+
+
+
+;;======================================================================
+;;
+;; $Log: latex.xdy,v $
+;; Revision 1.4 2008/01/09 15:13:29 jschrod
+;; Configurable section headline for the Default letter group.
+;;
+;; Revision 1.3 2006/11/07 01:16:50 jschrod
+;; Prevent page break after letter group heading.
+;; Introduce a \lettergroup tag for that, which can be redefined
+;; by the user in an own theindex environment. (Ticket 1255990)
+;;
+;; Revision 1.2 2005/05/09 20:21:11 jschrod
+;; Support handling of some common macros for logos; ignore all other
+;; TeX commands.
+;;
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/latin-lettergroups.xdy b/Build/source/utils/xindy/xindy-src/modules/base/latin-lettergroups.xdy
new file mode 100644
index 00000000000..5a48b871600
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/latin-lettergroups.xdy
@@ -0,0 +1,26 @@
+;; $Id: latin-lettergroups.xdy,v 1.3 2008/01/09 15:13:29 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; latin lettergroups
+;;;
+
+(markup-letter-group :open-head "~n \lettergroupDefault{" :close-head "}"
+ :group "default")
+(markup-letter-group :open-head "~n \lettergroup{" :close-head "}")
+
+
+;;======================================================================
+;;
+;; $Log: latin-lettergroups.xdy,v $
+;; Revision 1.3 2008/01/09 15:13:29 jschrod
+;; Configurable section headline for the Default letter group.
+;;
+;; Revision 1.2 2006/11/07 01:16:50 jschrod
+;; Prevent page break after letter group heading.
+;; Introduce a \lettergroup tag for that, which can be redefined
+;; by the user in an own theindex environment. (Ticket 1255990)
+;;
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/letter-order.xdy b/Build/source/utils/xindy/xindy-src/modules/base/letter-order.xdy
new file mode 100644
index 00000000000..810b96d16c0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/letter-order.xdy
@@ -0,0 +1,18 @@
+;; $Id: letter-order.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; letter order scheme
+;;;
+;;; spaces are ignored, "index style" is sorted after "indexing".
+;;;
+
+(sort-rule " " "")
+
+
+;;======================================================================
+;;
+;; $Log: letter-order.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/makeindex.xdy b/Build/source/utils/xindy/xindy-src/modules/base/makeindex.xdy
new file mode 100644
index 00000000000..94db4bb052e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/makeindex.xdy
@@ -0,0 +1,51 @@
+;; $Id: makeindex.xdy,v 1.3 2006/08/30 23:35:43 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; MakeIndex behaviour
+;;;
+
+(define-crossref-class "see")
+;; \see takes two parameters, the second one is for the page number.
+;; We don't emit one in xindy, so we add an empty second argument.
+(markup-crossref-list :class "see" :open "\see{" :sep "; " :close "}{}")
+
+;; FIXME: This does not work properly. This should be for entries that
+;; have both a locref (e.g., the page number) and a cross reference.
+;; Currently, it works as if it's the same as \see, just with another
+;; macro.
+(define-crossref-class "seealso")
+(markup-crossref-list :class "seealso" :open "\seealso{" :sep "; " :close "}{}")
+
+;; \hyperindexformat is a wrapper to \see and \seealso added by hyperref.
+;; We treat it like \see and \seealso
+(define-crossref-class "hyperindexformat" :unverified)
+(markup-crossref-list :class "hyperindexformat" :open "\hyperindexformat{" :sep "; " :close "}{}")
+
+;; Subentries in cross references are seperated by comma for all
+;; crossref classes.
+(markup-crossref-layer-list :sep ", ")
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"
+ "seealso"))
+
+
+
+;;======================================================================
+;;
+;; $Log: makeindex.xdy,v $
+;; Revision 1.3 2006/08/30 23:35:43 jschrod
+;; Ticket 1255983: Markup for multiple cross references and cross
+;; references to sub entries were missing.
+;;
+;; Revision 1.2 2005/05/09 20:19:15 jschrod
+;; Typo in seealso crossref class definition.
+;;
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/numeric-sort.xdy b/Build/source/utils/xindy/xindy-src/modules/base/numeric-sort.xdy
new file mode 100644
index 00000000000..65c84206628
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/numeric-sort.xdy
@@ -0,0 +1,25 @@
+;; $Id: numeric-sort.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; numerically sorting
+;;;
+;;; "V64" appears before "V128".
+;;;
+
+;; FIXME: Works only for up to 7 digits.
+
+(merge-rule "[0-9][0-9][0-9][0-9][0-9][0-9]" "0&" :eregexp)
+(merge-rule "[0-9][0-9][0-9][0-9][0-9]" "00&" :eregexp)
+(merge-rule "[0-9][0-9][0-9][0-9]" "000&" :eregexp)
+(merge-rule "[0-9][0-9][0-9]" "0000&" :eregexp)
+(merge-rule "[0-9][0-9]" "00000&" :eregexp)
+(merge-rule "[0-9]" "000000&" :eregexp)
+
+
+;;======================================================================
+;;
+;; $Log: numeric-sort.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/page-ranges.xdy b/Build/source/utils/xindy/xindy-src/modules/base/page-ranges.xdy
new file mode 100644
index 00000000000..44ddeaa55b8
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/page-ranges.xdy
@@ -0,0 +1,18 @@
+;; $Id: page-ranges.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; page ranges
+;;;
+;;; More than two consecutive pages are listed as a range.
+;;;
+
+(markup-range :sep "--")
+
+
+;;======================================================================
+;;
+;; $Log: page-ranges.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/tex.xdy b/Build/source/utils/xindy/xindy-src/modules/base/tex.xdy
new file mode 100644
index 00000000000..197dba1b455
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/tex.xdy
@@ -0,0 +1,74 @@
+;; $Id: tex.xdy,v 1.3 2010/06/11 11:01:46 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; TeX conventions
+;;;
+
+;; Discard leading and trailing white space. Collapse multiple white
+;; space characters to blank.
+;;
+;; FIXME: How do I specify tabs in that regexp? [ \t] does *not* work,
+;; it is taken as blank and t.
+;;
+;; FIXME: Definition of these rules should be postponed until we start
+;; with the actual work. Then they should be only issued if module
+;; keep-blanks is not loaded. Module keep-blanks would set a flag, and
+;; this code would check for it. We will need a hook in the kernel, to
+;; achieve that goal.
+
+(merge-rule "^ +" "" :eregexp)
+(merge-rule " +$" "" :eregexp)
+(merge-rule " +" " " :eregexp)
+
+
+;;
+;; Handle TeX markup
+;;
+
+
+;; First, some markup that produces output and that we want to keep.
+;; If this module is required, similar merge-rules for other markup
+;; that shall be kept must be defined first. Otherwise it will be
+;; discarded, by the default rule below.
+
+(merge-rule "\\([{}$%&#])" "\1" :eregexp)
+(merge-rule "~~" " ")
+(merge-rule "---?" "-")
+(merge-rule "\\TeX *" "TeX" :eregexp :again)
+(merge-rule "\\LaTeX *" "LaTeX" :eregexp :again)
+(merge-rule "\\MF *" "METAFONT" :eregexp :again)
+(merge-rule "\\MP *" "METAPOST" :eregexp :again)
+
+;; Ignore TeX commands by default. Some macros are known to be written
+;; to index files where the arguments must be ignored as well. Our
+;; argument parsing code is optimistic -- it will be possible to break
+;; it. Let's wait for an error report and repair it then... ;-)
+
+(merge-rule "\\discretionary *\{[^}]*\}\{[^}]*\}" "" :eregexp)
+(merge-rule "\\kern *[-\.0-9a-z]* ?" "" :eregexp)
+
+(merge-rule "\\[a-zA-Z@]+ *" "" :eregexp)
+(merge-rule "\\[^a-zA-Z@]" "" :eregexp)
+(merge-rule "[{}$]" "" :eregexp)
+
+
+
+;;======================================================================
+;;
+;; $Log: tex.xdy,v $
+;; Revision 1.3 2010/06/11 11:01:46 jschrod
+;; New 2.4 ordrules supports regexps with start-anchored matches.
+;; Thus we can activate the leading blank processing rule. The
+;; parenthesis-discard rule must trigger everywhere, not just at the
+;; start of the index key.
+;; The blank suppression clause got optimized, it now triggers only
+;; if there are multiple blanks and not for each appearing blank.
+;;
+;; Revision 1.2 2005/05/09 20:21:11 jschrod
+;; Support handling of some common macros for logos; ignore all other
+;; TeX commands.
+;;
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/texindy.xdy b/Build/source/utils/xindy/xindy-src/modules/base/texindy.xdy
new file mode 100644
index 00000000000..a7e5ee8fbb2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/texindy.xdy
@@ -0,0 +1,20 @@
+;; $Id: texindy.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; all auto modules of texindy.
+;;;
+
+(require "numeric-sort.xdy")
+(require "latex.xdy")
+(require "latex-loc-fmts.xdy")
+(require "makeindex.xdy")
+(require "latin-lettergroups.xdy")
+
+
+;;======================================================================
+;;
+;; $Log: texindy.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/base/word-order.xdy b/Build/source/utils/xindy/xindy-src/modules/base/word-order.xdy
new file mode 100644
index 00000000000..9741e2bd10e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/base/word-order.xdy
@@ -0,0 +1,20 @@
+;; $Id: word-order.xdy,v 1.1 2004/05/24 21:53:27 jschrod Exp $
+;;------------------------------------------------------------
+
+;;;
+;;; word order scheme
+;;;
+;;; a space comes before any letter in the alphabet: "index style" is
+;;; listed before "indexing".
+
+; This is the default, we don't need any code for this behaviour.
+; In fact, this module just exists to satisfy the Companion
+; description... ;-)
+
+
+;;======================================================================
+;;
+;; $Log: word-order.xdy,v $
+;; Revision 1.1 2004/05/24 21:53:27 jschrod
+;; Standard modules, introduced in "LaTeX Companion Release".
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/class/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/class/Makefile.am
new file mode 100644
index 00000000000..3b86170f535
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/class/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am fragment for modules/class/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ class/pagenums.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/class/pagenums.xdy b/Build/source/utils/xindy/xindy-src/modules/class/pagenums.xdy
new file mode 100644
index 00000000000..92f6b685da5
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/class/pagenums.xdy
@@ -0,0 +1,7 @@
+;; $Id: pagenums.xdy,v 1.1 1996/07/03 18:44:40 kehr Exp $
+;;
+;; This module defines the location-class "page-numbers"
+
+(define-location-class "page-numbers" ("arabic-numbers"))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/german/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/lang/german/Makefile.am
new file mode 100644
index 00000000000..8d2aebbeed3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/german/Makefile.am
@@ -0,0 +1,24 @@
+## Makefile.am fragment for modules/lang/german/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ lang/german/din5007.xdy \
+ lang/german/duden.xdy \
+ lang/german/tex.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/german/din5007.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/german/din5007.xdy
new file mode 100644
index 00000000000..74d58ac7b5e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/german/din5007.xdy
@@ -0,0 +1,20 @@
+;; $Id: din5007.xdy,v 1.1 1996/07/03 18:44:46 kehr Exp $
+;;
+;; This file contains the basic sort-rules that are necessary to sort
+;; a german index.
+
+;; Die folgenden Regeln entsprechen der DIN 5007.
+
+(sort-rule "ä" "ae")
+(sort-rule "ö" "oe")
+(sort-rule "ü" "ue")
+
+(sort-rule "Ä" "ae")
+(sort-rule "Ö" "oe")
+(sort-rule "Ü" "ue")
+
+(sort-rule "ß" "ss")
+
+(require "lang/latin/caseisrt.xdy")
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/german/duden.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/german/duden.xdy
new file mode 100644
index 00000000000..0ec6e895080
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/german/duden.xdy
@@ -0,0 +1,37 @@
+;; $Id: duden.xdy,v 1.1 1996/07/03 18:44:46 kehr Exp $
+;;
+;; This file contains the basic sort-rules that are necessary to sort
+;; a german index.
+
+;; Dieses Modul definiert die Regeln zum Sortieren eines Wörterbuchs.
+;; Die folgenden Regeln wurden dem Duden entnommen und bilden die
+;; Sortierregeln des Dudens selbst.
+;;
+;; (1) ä wird wie a, ö wie o, ü wie u und äu wie au einsortiert.
+
+(sort-rule "ä" "a")
+(sort-rule "ö" "o")
+(sort-rule "ü" "u")
+
+;; (2) Die Schreibungen ae, oe und ue (in Namen) werden nach ad usw.
+;; eingeordnet. [Dies k"onnen wir nicht leisten, da das Programm
+;; nicht weiß, was ein Name ist.]
+;; (3) Der Buchstabe ß (es-zett) wird wie ss (i), bei gleichnamigen
+;; Wörtern vor ss (ii) eigeordnet. Punkt (ii) ist ebenfalls
+;; nicht spezifizierbar, daher hier nur Regel (3i).
+
+(sort-rule "ß" "ss")
+
+;; Da beim Index die Groß- und Kleinschreibung ohne Bedeutung ist,
+;; bilden wir beim Sort-Mapping die Großbuchstaben auf die
+;; Kleinbuchstaben ab.
+
+(require "lang/latin/caseisrt.xdy")
+
+;; Analog bilden wir noch die Großbuchtaben-Umlaute ab.
+
+(sort-rule "Ä" "a")
+(sort-rule "Ö" "o")
+(sort-rule "Ü" "u")
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/german/tex.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/german/tex.xdy
new file mode 100644
index 00000000000..59b1332b370
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/german/tex.xdy
@@ -0,0 +1,21 @@
+;; $Id: tex.xdy,v 1.2 1996/07/18 16:03:55 kehr Exp $
+;;
+;; This file contains some rules to process TeX-letters with xindy.
+;;
+;; It should be used in conjunction with the `din5007' or the `duden'
+;; modules.
+;;
+
+;; We first map them to the ISO-Latin counterpart and then use the
+;; mappings in on of the two other modules to map them to the actual
+;; postition.
+
+(sort-rule "\\\"a" "ä" :again)
+(sort-rule "\\\"o" "ö" :again)
+(sort-rule "\\\"u" "ü" :again)
+(sort-rule "\\\"A" "Ä" :again)
+(sort-rule "\\\"O" "Ö" :again)
+(sort-rule "\\\"U" "Ü" :again)
+(sort-rule "\\ss({})?" "ß" :again)
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/korean/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/lang/korean/Makefile.am
new file mode 100644
index 00000000000..995d2db632d
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/korean/Makefile.am
@@ -0,0 +1,26 @@
+## Makefile.am fragment for modules/lang/korean/.
+
+## Copyright (C) 2014 by Joachim Schrod.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ lang/korean/utf8.xdy \
+ lang/korean/utf8-lang.xdy
+
+EXTRA_DIST += \
+ lang/korean/README
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/korean/README b/Build/source/utils/xindy/xindy-src/modules/lang/korean/README
new file mode 100644
index 00000000000..a0fd083e7c3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/korean/README
@@ -0,0 +1,34 @@
+Submission email:
+
+======================================================================
+From: Kihwang Lee <kihwang.lee@gmail.com>
+Subject: Korean modules for Xindy
+Date: Wed, 06 Nov 2013 13:44:50 +0900
+To: jschrod@acm.org
+
+Dear Mr. Schrod,
+
+This is Kihwang Lee from the Korean TeX users group.
+I am maintaining a set of Korean typesetting packages and I have
+recently uploaded them to CTAN.
+(The most recent upload was done today and it was not processed at the
+time of writing)
+In one of the packages (kotex-utils), Korean modules for Xindy are
+included, and I am contacting you following the advice from Karl Berry.
+
+The module files are utf8-lang.xdy and utf8.xdy (both attached). The
+core component is utf8.xdy which provides
+a sorting order for Korean index entries. Initially we provided a
+additional perl script for preprocessing the Korean index entries. Now
+we removed the perl script and rewritten the module files that can be
+used without any preprocessing.
+Could you incorporate our files into Xindy? We admit that utf8.xdy is
+not generated by the make-rules package.
+
+Best wishes,
+
+Kihwang
+======================================================================
+
+According to declaration at the top of the contributed files, they are
+licensed under LPPL.
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8-lang.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8-lang.xdy
new file mode 100644
index 00000000000..cee41674f80
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8-lang.xdy
@@ -0,0 +1,23 @@
+;; utf8-lang.xdy
+;;
+;;
+;; Copyright (c) 2007-2013 Dohyun Kim <nomos at ktug org>
+;; Documentation corrected by Joachim Schrod <jschrod@acm.org>
+;;
+;; This work may be distributed and/or modified under the
+;; conditions of the LaTeX Project Public License, either version 1.3c
+;; of this license or (at your option) any later version.
+;; The latest version of this license is in
+;; http://www.latex-project.org/lppl.txt
+;; and version 1.3c or later is part of all distributions of LaTeX
+;; version 2006/05/20 or later.
+;;
+;; Xindy module for hangul characters
+;;
+;; Usage: xindy -M texindy -M page-ranges -L korean -C utf8 test.idx
+;;
+;; Do NOT use texindy if your raw index is not LICR-encoded or from Omega.
+
+(require "lang/general/utf8-lang.xdy")
+(require "lang/korean/utf8.xdy")
+
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8.xdy
new file mode 100644
index 00000000000..d0adef9e91b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/korean/utf8.xdy
@@ -0,0 +1,19400 @@
+;; utf8.xdy
+;;
+;; Copyright (c) 2007-2013 Dohyun Kim <nomos at ktug org>
+;;
+;; This work may be distributed and/or modified under the
+;; conditions of the LaTeX Project Public License, either version 1.3c
+;; of this license or (at your option) any later version.
+;; The latest version of this license is in
+;; http://www.latex-project.org/lppl.txt
+;; and version 1.3c or later is part of all distributions of LaTeX
+;; version 2006/05/20 or later.
+;;
+;; Xindy module for hangul characters
+
+(define-letter-groups (
+ "ㄱ" "ã„´" "ã„·" "ㄹ" "ã…" "ã…‚" "ã……" "ã…‡" "ã…ˆ" "ã…Š" "ã…‹" "ã…Œ" "ã…" "ã…Ž"
+))
+(define-letter-group "ã…" :prefixes (
+ "á…Ÿ"
+))
+
+(sort-rule "ᄀ" "ㄱ1") ;; 0x1100
+(sort-rule "á„" "ㄱ3") ;; 0x1101
+(sort-rule "ᅚ" "ㄱ4") ;; 0x115A
+(sort-rule "á„‚" "ã„´1") ;; 0x1102
+(sort-rule "á„“" "ã„´2") ;; 0x1113
+(sort-rule "á„”" "ã„´4") ;; 0x1114
+(sort-rule "á„•" "ã„´6") ;; 0x1115
+(sort-rule "á„–" "ã„´7") ;; 0x1116
+(sort-rule "á…›" "ã„´9") ;; 0x115B
+(sort-rule "ᅜ" "ㄴC") ;; 0x115C
+(sort-rule "á…" "ã„´E") ;; 0x115D
+(sort-rule "ᄃ" "ㄷ1") ;; 0x1103
+(sort-rule "á„—" "ã„·2") ;; 0x1117
+(sort-rule "á„„" "ã„·4") ;; 0x1104
+(sort-rule "á…ž" "ã„·5") ;; 0x115E
+(sort-rule "ꥠ" "ㄷ6") ;; 0xA960
+(sort-rule "ꥡ" "ㄷ7") ;; 0xA961
+(sort-rule "ꥢ" "ㄷ8") ;; 0xA962
+(sort-rule "ꥣ" "ㄷ9") ;; 0xA963
+(sort-rule "ᄅ" "ㄹ1") ;; 0x1105
+(sort-rule "ꥤ" "ㄹ3") ;; 0xA964
+(sort-rule "ꥥ" "ㄹ4") ;; 0xA965
+(sort-rule "ᄘ" "ㄹ6") ;; 0x1118
+(sort-rule "ꥦ" "ㄹ8") ;; 0xA966
+(sort-rule "ꥧ" "ㄹ9") ;; 0xA967
+(sort-rule "ᄙ" "ㄹA") ;; 0x1119
+(sort-rule "ꥨ" "ㄹC") ;; 0xA968
+(sort-rule "ꥩ" "ㄹE") ;; 0xA969
+(sort-rule "ꥪ" "ㄹF") ;; 0xA96A
+(sort-rule "ꥫ" "ㄹH") ;; 0xA96B
+(sort-rule "ꥬ" "ㄹJ") ;; 0xA96C
+(sort-rule "ꥭ" "ㄹL") ;; 0xA96D
+(sort-rule "ꥮ" "ㄹM") ;; 0xA96E
+(sort-rule "ᄚ" "ㄹQ") ;; 0x111A
+(sort-rule "ᄛ" "ㄹS") ;; 0x111B
+(sort-rule "ᄆ" "ã…1") ;; 0x1106
+(sort-rule "ꥯ" "ã…2") ;; 0xA96F
+(sort-rule "ꥰ" "ã…3") ;; 0xA970
+(sort-rule "á„œ" "ã…5") ;; 0x111C
+(sort-rule "ꥱ" "ã…7") ;; 0xA971
+(sort-rule "á„" "ã…A") ;; 0x111D
+(sort-rule "ᄇ" "ㅂ1") ;; 0x1107
+(sort-rule "á„ž" "ã…‚3") ;; 0x111E
+(sort-rule "á„Ÿ" "ã…‚4") ;; 0x111F
+(sort-rule "á„ " "ã…‚6") ;; 0x1120
+(sort-rule "ᄈ" "ㅂ8") ;; 0x1108
+(sort-rule "á„¡" "ã…‚A") ;; 0x1121
+(sort-rule "á„¢" "ã…‚C") ;; 0x1122
+(sort-rule "á„£" "ã…‚E") ;; 0x1123
+(sort-rule "ᄤ" "ㅂF") ;; 0x1124
+(sort-rule "á„¥" "ã…‚G") ;; 0x1125
+(sort-rule "ᄦ" "ㅂH") ;; 0x1126
+(sort-rule "ꥲ" "ㅂI") ;; 0xA972
+(sort-rule "ᄧ" "ㅂK") ;; 0x1127
+(sort-rule "ᄨ" "ㅂL") ;; 0x1128
+(sort-rule "ꥳ" "ㅂM") ;; 0xA973
+(sort-rule "á„©" "ã…‚O") ;; 0x1129
+(sort-rule "ᄪ" "ㅂP") ;; 0x112A
+(sort-rule "ꥴ" "ㅂQ") ;; 0xA974
+(sort-rule "á„«" "ã…‚S") ;; 0x112B
+(sort-rule "ᄬ" "ㅂU") ;; 0x112C
+(sort-rule "ᄉ" "ㅅ1") ;; 0x1109
+(sort-rule "á„­" "ã……3") ;; 0x112D
+(sort-rule "á„®" "ã……5") ;; 0x112E
+(sort-rule "ᄯ" "ㅅ7") ;; 0x112F
+(sort-rule "á„°" "ã……8") ;; 0x1130
+(sort-rule "ᄱ" "ㅅ9") ;; 0x1131
+(sort-rule "ᄲ" "ㅅB") ;; 0x1132
+(sort-rule "ᄳ" "ㅅC") ;; 0x1133
+(sort-rule "á„Š" "ã……E") ;; 0x110A
+(sort-rule "ꥵ" "ㅅF") ;; 0xA975
+(sort-rule "á„´" "ã……G") ;; 0x1134
+(sort-rule "ᄵ" "ㅅH") ;; 0x1135
+(sort-rule "ᄶ" "ㅅJ") ;; 0x1136
+(sort-rule "á„·" "ã……K") ;; 0x1137
+(sort-rule "ᄸ" "ㅅL") ;; 0x1138
+(sort-rule "ᄹ" "ㅅM") ;; 0x1139
+(sort-rule "ᄺ" "ㅅN") ;; 0x113A
+(sort-rule "á„»" "ã……O") ;; 0x113B
+(sort-rule "ᄼ" "ㅅP") ;; 0x113C
+(sort-rule "ᄽ" "ㅅQ") ;; 0x113D
+(sort-rule "ᄾ" "ㅅR") ;; 0x113E
+(sort-rule "á„¿" "ã……S") ;; 0x113F
+(sort-rule "á…€" "ã……U") ;; 0x1140
+(sort-rule "á„‹" "ã…‡1") ;; 0x110B
+(sort-rule "á…" "ã…‡2") ;; 0x1141
+(sort-rule "á…‚" "ã…‡3") ;; 0x1142
+(sort-rule "ꥶ" "ㅇ4") ;; 0xA976
+(sort-rule "á…ƒ" "ã…‡5") ;; 0x1143
+(sort-rule "á…„" "ã…‡6") ;; 0x1144
+(sort-rule "á……" "ã…‡7") ;; 0x1145
+(sort-rule "á…†" "ã…‡8") ;; 0x1146
+(sort-rule "á…‡" "ã…‡9") ;; 0x1147
+(sort-rule "á…ˆ" "ã…‡A") ;; 0x1148
+(sort-rule "á…‰" "ã…‡B") ;; 0x1149
+(sort-rule "á…Š" "ã…‡C") ;; 0x114A
+(sort-rule "á…‹" "ã…‡D") ;; 0x114B
+(sort-rule "ꥷ" "ㅇE") ;; 0xA977
+(sort-rule "ᅌ" "ㅇG") ;; 0x114C
+(sort-rule "ᄌ" "ㅈ1") ;; 0x110C
+(sort-rule "á…" "ã…ˆ2") ;; 0x114D
+(sort-rule "á„" "ã…ˆ4") ;; 0x110D
+(sort-rule "ꥸ" "ㅈ5") ;; 0xA978
+(sort-rule "á…Ž" "ã…ˆ6") ;; 0x114E
+(sort-rule "á…" "ã…ˆ7") ;; 0x114F
+(sort-rule "á…" "ã…ˆ8") ;; 0x1150
+(sort-rule "á…‘" "ã…ˆ9") ;; 0x1151
+(sort-rule "á„Ž" "ã…Š1") ;; 0x110E
+(sort-rule "á…’" "ã…Š2") ;; 0x1152
+(sort-rule "á…“" "ã…Š3") ;; 0x1153
+(sort-rule "á…”" "ã…Š4") ;; 0x1154
+(sort-rule "á…•" "ã…Š5") ;; 0x1155
+(sort-rule "á„" "ã…‹1") ;; 0x110F
+(sort-rule "á„" "ã…Œ1") ;; 0x1110
+(sort-rule "ꥹ" "ㅌ2") ;; 0xA979
+(sort-rule "á„‘" "ã…1") ;; 0x1111
+(sort-rule "á…–" "ã…2") ;; 0x1156
+(sort-rule "ꥺ" "ã…3") ;; 0xA97A
+(sort-rule "á…—" "ã…5") ;; 0x1157
+(sort-rule "á„’" "ã…Ž1") ;; 0x1112
+(sort-rule "ꥻ" "ㅎ2") ;; 0xA97B
+(sort-rule "á…˜" "ã…Ž4") ;; 0x1158
+(sort-rule "á…™" "ã…Ž6") ;; 0x1159
+(sort-rule "ꥼ" "ㅎ7") ;; 0xA97C
+
+(sort-rule "á…¡" "á…¡1") ;; 0x1161
+(sort-rule "á…¶" "á…¡2") ;; 0x1176
+(sort-rule "á…·" "á…¡3") ;; 0x1177
+(sort-rule "ᆣ" "ᅡ4") ;; 0x11A3
+(sort-rule "á…¢" "á…¡6") ;; 0x1162
+(sort-rule "á…£" "á…£1") ;; 0x1163
+(sort-rule "á…¸" "á…£2") ;; 0x1178
+(sort-rule "á…¹" "á…£3") ;; 0x1179
+(sort-rule "ᆤ" "ᅣ4") ;; 0x11A4
+(sort-rule "á…¤" "á…£6") ;; 0x1164
+(sort-rule "á…¥" "á…¥1") ;; 0x1165
+(sort-rule "á…º" "á…¥2") ;; 0x117A
+(sort-rule "á…»" "á…¥3") ;; 0x117B
+(sort-rule "á…¼" "á…¥4") ;; 0x117C
+(sort-rule "á…¦" "á…¥6") ;; 0x1166
+(sort-rule "á…§" "á…§1") ;; 0x1167
+(sort-rule "ᆥ" "ᅧ2") ;; 0x11A5
+(sort-rule "á…½" "á…§3") ;; 0x117D
+(sort-rule "á…¾" "á…§4") ;; 0x117E
+(sort-rule "á…¨" "á…§6") ;; 0x1168
+(sort-rule "á…©" "á…©1") ;; 0x1169
+(sort-rule "á…ª" "á…©3") ;; 0x116A
+(sort-rule "á…«" "á…©5") ;; 0x116B
+(sort-rule "ᆦ" "ᅩ6") ;; 0x11A6
+(sort-rule "ᆧ" "ᅩ7") ;; 0x11A7
+(sort-rule "á…¿" "á…©8") ;; 0x117F
+(sort-rule "ᆀ" "ᅩ9") ;; 0x1180
+(sort-rule "íž°" "á…©A") ;; 0xD7B0
+(sort-rule "á†" "á…©B") ;; 0x1181
+(sort-rule "ᆂ" "ᅩC") ;; 0x1182
+(sort-rule "íž±" "á…©D") ;; 0xD7B1
+(sort-rule "ᆃ" "ᅩE") ;; 0x1183
+(sort-rule "á…¬" "á…©G") ;; 0x116C
+(sort-rule "á…­" "á…­1") ;; 0x116D
+(sort-rule "íž²" "á…­2") ;; 0xD7B2
+(sort-rule "íž³" "á…­3") ;; 0xD7B3
+(sort-rule "ᆄ" "ᅭ5") ;; 0x1184
+(sort-rule "ᆅ" "ᅭ7") ;; 0x1185
+(sort-rule "íž´" "á…­8") ;; 0xD7B4
+(sort-rule "ᆆ" "ᅭ9") ;; 0x1186
+(sort-rule "ᆇ" "ᅭA") ;; 0x1187
+(sort-rule "ᆈ" "ᅭC") ;; 0x1188
+(sort-rule "á…®" "á…®1") ;; 0x116E
+(sort-rule "ᆉ" "ᅮ2") ;; 0x1189
+(sort-rule "ᆊ" "ᅮ3") ;; 0x118A
+(sort-rule "á…¯" "á…®5") ;; 0x116F
+(sort-rule "ᆋ" "ᅮ6") ;; 0x118B
+(sort-rule "á…°" "á…®8") ;; 0x1170
+(sort-rule "ížµ" "á…®9") ;; 0xD7B5
+(sort-rule "ᆌ" "ᅮA") ;; 0x118C
+(sort-rule "á†" "á…®B") ;; 0x118D
+(sort-rule "á…±" "á…®D") ;; 0x1171
+(sort-rule "ힶ" "ᅮE") ;; 0xD7B6
+(sort-rule "á…²" "á…²1") ;; 0x1172
+(sort-rule "ᆎ" "ᅲ2") ;; 0x118E
+(sort-rule "íž·" "á…²3") ;; 0xD7B7
+(sort-rule "á†" "á…²4") ;; 0x118F
+(sort-rule "á†" "á…²5") ;; 0x1190
+(sort-rule "ᆑ" "ᅲ7") ;; 0x1191
+(sort-rule "ᆒ" "ᅲ9") ;; 0x1192
+(sort-rule "ힸ" "ᅲA") ;; 0xD7B8
+(sort-rule "ᆓ" "ᅲB") ;; 0x1193
+(sort-rule "ᆔ" "ᅲD") ;; 0x1194
+(sort-rule "á…³" "á…³1") ;; 0x1173
+(sort-rule "íž¹" "á…³2") ;; 0xD7B9
+(sort-rule "ힺ" "ᅳ3") ;; 0xD7BA
+(sort-rule "íž»" "á…³4") ;; 0xD7BB
+(sort-rule "íž¼" "á…³5") ;; 0xD7BC
+(sort-rule "ᆕ" "ᅳ6") ;; 0x1195
+(sort-rule "ᆖ" "ᅳ7") ;; 0x1196
+(sort-rule "á…´" "á…³9") ;; 0x1174
+(sort-rule "ᆗ" "ᅳA") ;; 0x1197
+(sort-rule "á…µ" "á…µ1") ;; 0x1175
+(sort-rule "ᆘ" "ᅵ2") ;; 0x1198
+(sort-rule "ᆙ" "ᅵ3") ;; 0x1199
+(sort-rule "íž½" "á…µ4") ;; 0xD7BD
+(sort-rule "íž¾" "á…µ5") ;; 0xD7BE
+(sort-rule "íž¿" "á…µ6") ;; 0xD7BF
+(sort-rule "ퟀ" "ᅵ7") ;; 0xD7C0
+(sort-rule "ᆚ" "ᅵ8") ;; 0x119A
+(sort-rule "íŸ" "á…µ9") ;; 0xD7C1
+(sort-rule "ퟂ" "ᅵA") ;; 0xD7C2
+(sort-rule "ᆛ" "ᅵB") ;; 0x119B
+(sort-rule "ퟃ" "ᅵC") ;; 0xD7C3
+(sort-rule "ᆜ" "ᅵD") ;; 0x119C
+(sort-rule "ퟄ" "ᅵE") ;; 0xD7C4
+(sort-rule "á†" "á…µF") ;; 0x119D
+(sort-rule "ᆞ" "ᆞ1") ;; 0x119E
+(sort-rule "ퟅ" "ᆞ2") ;; 0xD7C5
+(sort-rule "ᆟ" "ᆞ3") ;; 0x119F
+(sort-rule "ퟆ" "ᆞ4") ;; 0xD7C6
+(sort-rule "ᆠ" "ᆞ5") ;; 0x11A0
+(sort-rule "ᆡ" "ᆞ7") ;; 0x11A1
+(sort-rule "ᆢ" "ᆞ8") ;; 0x11A2
+
+; remove jongsong-filler before jongsong
+(sort-rule "~bᆨ" "ᆨ1") ;; 0x11A8
+(sort-rule "~bᆩ" "ᆨ2") ;; 0x11A9
+(sort-rule "~bᇺ" "ᆨ3") ;; 0x11FA
+(sort-rule "~bᇃ" "ᆨ4") ;; 0x11C3
+(sort-rule "~bᇻ" "ᆨ5") ;; 0x11FB
+(sort-rule "~bᆪ" "ᆨ6") ;; 0x11AA
+(sort-rule "~bᇄ" "ᆨ7") ;; 0x11C4
+(sort-rule "~bᇼ" "ᆨ8") ;; 0x11FC
+(sort-rule "~bᇽ" "ᆨ9") ;; 0x11FD
+(sort-rule "~bᇾ" "ᆨA") ;; 0x11FE
+(sort-rule "~bᆫ" "ᆫ0") ;; 0x11AB
+(sort-rule "~bᇅ" "ᆫ1") ;; 0x11C5
+(sort-rule "~bᇿ" "ᆫ2") ;; 0x11FF
+(sort-rule "~bᇆ" "ᆫ3") ;; 0x11C6
+(sort-rule "~bퟋ" "ᆫ4") ;; 0xD7CB
+(sort-rule "~bᇇ" "ᆫ5") ;; 0x11C7
+(sort-rule "~bᇈ" "ᆫ6") ;; 0x11C8
+(sort-rule "~bᆬ" "ᆫ7") ;; 0x11AC
+(sort-rule "~bퟌ" "ᆫ8") ;; 0xD7CC
+(sort-rule "~bᇉ" "ᆫ9") ;; 0x11C9
+(sort-rule "~bᆭ" "ᆫA") ;; 0x11AD
+(sort-rule "~bᆮ" "ᆮ0") ;; 0x11AE
+(sort-rule "~bᇊ" "ᆮ1") ;; 0x11CA
+(sort-rule "~bíŸ" "ᆮ2") ;; 0xD7CD
+(sort-rule "~bퟎ" "ᆮ3") ;; 0xD7CE
+(sort-rule "~bᇋ" "ᆮ4") ;; 0x11CB
+(sort-rule "~bíŸ" "ᆮ5") ;; 0xD7CF
+(sort-rule "~bíŸ" "ᆮ6") ;; 0xD7D0
+(sort-rule "~bퟑ" "ᆮ7") ;; 0xD7D1
+(sort-rule "~bퟒ" "ᆮ8") ;; 0xD7D2
+(sort-rule "~bퟓ" "ᆮ9") ;; 0xD7D3
+(sort-rule "~bퟔ" "ᆮA") ;; 0xD7D4
+(sort-rule "~bᆯ" "ᆯ0") ;; 0x11AF
+(sort-rule "~bᆰ" "ᆯ1") ;; 0x11B0
+(sort-rule "~bퟕ" "ᆯ2") ;; 0xD7D5
+(sort-rule "~bᇌ" "ᆯ3") ;; 0x11CC
+(sort-rule "~bퟖ" "ᆯ4") ;; 0xD7D6
+(sort-rule "~bá‡" "ᆯ5") ;; 0x11CD
+(sort-rule "~bᇎ" "ᆯ6") ;; 0x11CE
+(sort-rule "~bá‡" "ᆯ7") ;; 0x11CF
+(sort-rule "~bá‡" "ᆯ8") ;; 0x11D0
+(sort-rule "~bퟗ" "ᆯ9") ;; 0xD7D7
+(sort-rule "~bᆱ" "ᆯA") ;; 0x11B1
+(sort-rule "~bᇑ" "ᆯB") ;; 0x11D1
+(sort-rule "~bᇒ" "ᆯC") ;; 0x11D2
+(sort-rule "~bퟘ" "ᆯD") ;; 0xD7D8
+(sort-rule "~bᆲ" "ᆯE") ;; 0x11B2
+(sort-rule "~bퟙ" "ᆯF") ;; 0xD7D9
+(sort-rule "~bᇓ" "ᆯG") ;; 0x11D3
+(sort-rule "~bퟚ" "ᆯH") ;; 0xD7DA
+(sort-rule "~bᇔ" "ᆯI") ;; 0x11D4
+(sort-rule "~bᇕ" "ᆯJ") ;; 0x11D5
+(sort-rule "~bᆳ" "ᆯK") ;; 0x11B3
+(sort-rule "~bᇖ" "ᆯL") ;; 0x11D6
+(sort-rule "~bᇗ" "ᆯM") ;; 0x11D7
+(sort-rule "~bퟛ" "ᆯN") ;; 0xD7DB
+(sort-rule "~bᇘ" "ᆯO") ;; 0x11D8
+(sort-rule "~bᆴ" "ᆯP") ;; 0x11B4
+(sort-rule "~bᆵ" "ᆯQ") ;; 0x11B5
+(sort-rule "~bᆶ" "ᆯR") ;; 0x11B6
+(sort-rule "~bᇙ" "ᆯS") ;; 0x11D9
+(sort-rule "~bퟜ" "ᆯT") ;; 0xD7DC
+(sort-rule "~bíŸ" "ᆯU") ;; 0xD7DD
+(sort-rule "~bᆷ" "ᆷ0") ;; 0x11B7
+(sort-rule "~bᇚ" "ᆷ1") ;; 0x11DA
+(sort-rule "~bퟞ" "ᆷ2") ;; 0xD7DE
+(sort-rule "~bퟟ" "ᆷ3") ;; 0xD7DF
+(sort-rule "~bᇛ" "ᆷ4") ;; 0x11DB
+(sort-rule "~bퟠ" "ᆷ5") ;; 0xD7E0
+(sort-rule "~bᇜ" "ᆷ6") ;; 0x11DC
+(sort-rule "~bퟡ" "ᆷ7") ;; 0xD7E1
+(sort-rule "~bá‡" "ᆷ8") ;; 0x11DD
+(sort-rule "~bᇞ" "ᆷ9") ;; 0x11DE
+(sort-rule "~bᇟ" "ᆷA") ;; 0x11DF
+(sort-rule "~bퟢ" "ᆷB") ;; 0xD7E2
+(sort-rule "~bᇠ" "ᆷC") ;; 0x11E0
+(sort-rule "~bᇡ" "ᆷD") ;; 0x11E1
+(sort-rule "~bᇢ" "ᆷE") ;; 0x11E2
+(sort-rule "~bᆸ" "ᆸ0") ;; 0x11B8
+(sort-rule "~bퟣ" "ᆸ1") ;; 0xD7E3
+(sort-rule "~bᇣ" "ᆸ2") ;; 0x11E3
+(sort-rule "~bퟤ" "ᆸ3") ;; 0xD7E4
+(sort-rule "~bퟥ" "ᆸ4") ;; 0xD7E5
+(sort-rule "~bퟦ" "ᆸ5") ;; 0xD7E6
+(sort-rule "~bᆹ" "ᆸ6") ;; 0x11B9
+(sort-rule "~bퟧ" "ᆸ7") ;; 0xD7E7
+(sort-rule "~bퟨ" "ᆸ8") ;; 0xD7E8
+(sort-rule "~bퟩ" "ᆸ9") ;; 0xD7E9
+(sort-rule "~bᇤ" "ᆸA") ;; 0x11E4
+(sort-rule "~bᇥ" "ᆸB") ;; 0x11E5
+(sort-rule "~bᇦ" "ᆸC") ;; 0x11E6
+(sort-rule "~bᆺ" "ᆺ0") ;; 0x11BA
+(sort-rule "~bᇧ" "ᆺ1") ;; 0x11E7
+(sort-rule "~bᇨ" "ᆺ2") ;; 0x11E8
+(sort-rule "~bᇩ" "ᆺ3") ;; 0x11E9
+(sort-rule "~bퟪ" "ᆺ4") ;; 0xD7EA
+(sort-rule "~bᇪ" "ᆺ5") ;; 0x11EA
+(sort-rule "~bퟫ" "ᆺ6") ;; 0xD7EB
+(sort-rule "~bᆻ" "ᆺ7") ;; 0x11BB
+(sort-rule "~bퟬ" "ᆺ8") ;; 0xD7EC
+(sort-rule "~bퟭ" "ᆺ9") ;; 0xD7ED
+(sort-rule "~bퟮ" "ᆺA") ;; 0xD7EE
+(sort-rule "~bퟯ" "ᆺB") ;; 0xD7EF
+(sort-rule "~bퟰ" "ᆺC") ;; 0xD7F0
+(sort-rule "~bퟱ" "ᆺD") ;; 0xD7F1
+(sort-rule "~bퟲ" "ᆺE") ;; 0xD7F2
+(sort-rule "~bᇫ" "ᆺF") ;; 0x11EB
+(sort-rule "~bퟳ" "ᆺG") ;; 0xD7F3
+(sort-rule "~bퟴ" "ᆺH") ;; 0xD7F4
+(sort-rule "~bᆼ" "ᆼ0") ;; 0x11BC
+(sort-rule "~bᇰ" "ᆼ1") ;; 0x11F0
+(sort-rule "~bᇬ" "ᆼ2") ;; 0x11EC
+(sort-rule "~bᇭ" "ᆼ3") ;; 0x11ED
+(sort-rule "~bퟵ" "ᆼ4") ;; 0xD7F5
+(sort-rule "~bᇱ" "ᆼ5") ;; 0x11F1
+(sort-rule "~bᇲ" "ᆼ6") ;; 0x11F2
+(sort-rule "~bᇮ" "ᆼ7") ;; 0x11EE
+(sort-rule "~bᇯ" "ᆼ8") ;; 0x11EF
+(sort-rule "~bퟶ" "ᆼ9") ;; 0xD7F6
+(sort-rule "~bᆽ" "ᆽ0") ;; 0x11BD
+(sort-rule "~bퟷ" "ᆽ1") ;; 0xD7F7
+(sort-rule "~bퟸ" "ᆽ2") ;; 0xD7F8
+(sort-rule "~bퟹ" "ᆽ3") ;; 0xD7F9
+(sort-rule "~bᆾ" "ᆾ0") ;; 0x11BE
+(sort-rule "~bᆿ" "ᆿ0") ;; 0x11BF
+(sort-rule "~bᇀ" "ᇀ0") ;; 0x11C0
+(sort-rule "~bá‡" "á‡0") ;; 0x11C1
+(sort-rule "~bᇳ" "á‡1") ;; 0x11F3
+(sort-rule "~bퟺ" "á‡2") ;; 0xD7FA
+(sort-rule "~bퟻ" "á‡3") ;; 0xD7FB
+(sort-rule "~bᇴ" "á‡4") ;; 0x11F4
+(sort-rule "~bᇂ" "ᇂ0") ;; 0x11C2
+(sort-rule "~bᇵ" "ᇂ1") ;; 0x11F5
+(sort-rule "~bᇶ" "ᇂ2") ;; 0x11F6
+(sort-rule "~bᇷ" "ᇂ3") ;; 0x11F7
+(sort-rule "~bᇸ" "ᇂ4") ;; 0x11F8
+(sort-rule "~bᇹ" "ᇂ5") ;; 0x11F9
+
+(merge-rule "ㄱ" "ᄀᅠ~b")
+(merge-rule "ㄲ" "á„á… ~b")
+(merge-rule "ㄳ" "ᅚ~e~b") ;; jongsong
+(merge-rule "ã„´" "á„‚á… ~b")
+(merge-rule "ㅥ" "ᄔᅠ~b")
+(merge-rule "ã…¦" "á„•á… ~b")
+(merge-rule "ㅧ" "ᅛᅠ~b")
+(merge-rule "ã…¨" "á…›~e~b") ;; jongsong
+(merge-rule "ㄵ" "ᅜᅠ~b")
+(merge-rule "ㄶ" "á…á… ~b")
+(merge-rule "ㄷ" "ᄃᅠ~b")
+(merge-rule "ㄸ" "ᄄᅠ~b")
+(merge-rule "ㄹ" "ᄅᅠ~b")
+(merge-rule "ㄺ" "ꥤᅠ~b")
+(merge-rule "ㅩ" "ꥥ~e~b") ;; jongsong
+(merge-rule "ㅪ" "ꥦᅠ~b")
+(merge-rule "ㄻ" "ꥨᅠ~b")
+(merge-rule "ㄼ" "ꥩᅠ~b")
+(merge-rule "ㅫ" "ꥪ~e~b") ;; jongsong
+(merge-rule "ㄽ" "ꥬᅠ~b")
+(merge-rule "ㅬ" "ꥬ~e~b") ;; jongsong
+(merge-rule "ㄾ" "ꥮ~e~b") ;; jongsong
+(merge-rule "ㄿ" "ꥮ~e~e") ;; jongsong
+(merge-rule "ã…€" "á„šá… ~b")
+(merge-rule "ã…­" "á„š~e~b") ;; jongsong
+(merge-rule "ã…" "ᄆᅠ~b")
+(merge-rule "ㅮ" "ᄜᅠ~b")
+(merge-rule "ㅯ" "ꥱᅠ~b")
+(merge-rule "ㅰ" "ꥱ~e~b") ;; jongsong
+(merge-rule "ã…±" "á„á… ~b")
+(merge-rule "ㅂ" "ᄇᅠ~b")
+(merge-rule "ㅃ" "ᄈᅠ~b")
+(merge-rule "ã…²" "á„žá… ~b")
+(merge-rule "ã…³" "á„ á… ~b")
+(merge-rule "ã…„" "á„¡á… ~b")
+(merge-rule "ㅴ" "ᄢᅠ~b")
+(merge-rule "ㅵ" "ᄣᅠ~b")
+(merge-rule "ㅶ" "ᄧᅠ~b")
+(merge-rule "ã…·" "á„©á… ~b")
+(merge-rule "ã…¸" "á„«á… ~b")
+(merge-rule "ㅹ" "ᄬᅠ~b")
+(merge-rule "ㅅ" "ᄉᅠ~b")
+(merge-rule "ã…º" "á„­á… ~b")
+(merge-rule "ㅻ" "ᄮᅠ~b")
+(merge-rule "ㅼ" "ᄯᅠ~b")
+(merge-rule "ㅽ" "ᄲᅠ~b")
+(merge-rule "ã…†" "á„Šá… ~b")
+(merge-rule "ㅾ" "ᄶᅠ~b")
+(merge-rule "ㅿ" "ᅀᅠ~b")
+(merge-rule "ã…‡" "á„‹á… ~b")
+(merge-rule "ㆀ" "ᅇᅠ~b")
+(merge-rule "ã†" "ᅌᅠ~b")
+(merge-rule "ㆂ" "ᅅᅠ~b")
+(merge-rule "ㆃ" "ᅆᅠ~b")
+(merge-rule "ㅈ" "ᄌᅠ~b")
+(merge-rule "ã…‰" "á„á… ~b")
+(merge-rule "ã…Š" "á„Žá… ~b")
+(merge-rule "ã…‹" "á„á… ~b")
+(merge-rule "ã…Œ" "á„á… ~b")
+(merge-rule "ã…" "á„‘á… ~b")
+(merge-rule "ㆄ" "ᅗᅠ~b")
+(merge-rule "ã…Ž" "á„’á… ~b")
+(merge-rule "ㆅ" "ᅘᅠ~b")
+(merge-rule "ㆆ" "ᅙᅠ~b")
+(merge-rule "ã…" "á…Ÿá…¡~b")
+(merge-rule "ã…" "á…Ÿá…¢~b")
+(merge-rule "ã…‘" "á…Ÿá…£~b")
+(merge-rule "ã…’" "á…Ÿá…¤~b")
+(merge-rule "ã…“" "á…Ÿá…¥~b")
+(merge-rule "ã…”" "á…Ÿá…¦~b")
+(merge-rule "ã…•" "á…Ÿá…§~b")
+(merge-rule "ã…–" "á…Ÿá…¨~b")
+(merge-rule "ã…—" "á…Ÿá…©~b")
+(merge-rule "ã…˜" "á…Ÿá…ª~b")
+(merge-rule "ã…™" "á…Ÿá…«~b")
+(merge-rule "ã…š" "á…Ÿá…¬~b")
+(merge-rule "ã…›" "á…Ÿá…­~b")
+(merge-rule "ㅜ" "ᅟᅮ~b")
+(merge-rule "ã…" "á…Ÿá…¯~b")
+(merge-rule "ã…ž" "á…Ÿá…°~b")
+(merge-rule "ã…Ÿ" "á…Ÿá…±~b")
+(merge-rule "ã… " "á…Ÿá…²~b")
+(merge-rule "ã…¡" "á…Ÿá…³~b")
+(merge-rule "ã…¢" "á…Ÿá…´~b")
+(merge-rule "ã…£" "á…Ÿá…µ~b")
+(merge-rule "ㆇ" "ᅟᆄ~b")
+(merge-rule "ㆈ" "ᅟᆅ~b")
+(merge-rule "ㆉ" "ᅟᆈ~b")
+(merge-rule "ㆊ" "ᅟᆑ~b")
+(merge-rule "ㆋ" "ᅟᆒ~b")
+(merge-rule "ㆌ" "ᅟᆔ~b")
+(merge-rule "ã†" "ᅟᆞ~b")
+(merge-rule "ㆎ" "ᅟᆡ~b")
+
+(merge-rule "가" "가~b")
+(merge-rule "ê°" "각")
+(merge-rule "갂" "갂")
+(merge-rule "갃" "갃")
+(merge-rule "간" "간")
+(merge-rule "갅" "갅")
+(merge-rule "갆" "갆")
+(merge-rule "갇" "갇")
+(merge-rule "갈" "갈")
+(merge-rule "갉" "갉")
+(merge-rule "갊" "갊")
+(merge-rule "갋" "갋")
+(merge-rule "갌" "갌")
+(merge-rule "ê°" "갍")
+(merge-rule "갎" "갎")
+(merge-rule "ê°" "갏")
+(merge-rule "ê°" "감")
+(merge-rule "갑" "갑")
+(merge-rule "값" "값")
+(merge-rule "갓" "갓")
+(merge-rule "갔" "갔")
+(merge-rule "강" "강")
+(merge-rule "갖" "갖")
+(merge-rule "갗" "갗")
+(merge-rule "갘" "갘")
+(merge-rule "같" "같")
+(merge-rule "ê°š" "가á‡")
+(merge-rule "갛" "갛")
+(merge-rule "개" "개~b")
+(merge-rule "ê°" "객")
+(merge-rule "갞" "갞")
+(merge-rule "갟" "갟")
+(merge-rule "갠" "갠")
+(merge-rule "갡" "갡")
+(merge-rule "갢" "갢")
+(merge-rule "갣" "갣")
+(merge-rule "갤" "갤")
+(merge-rule "갥" "갥")
+(merge-rule "갦" "갦")
+(merge-rule "갧" "갧")
+(merge-rule "갨" "갨")
+(merge-rule "갩" "갩")
+(merge-rule "갪" "갪")
+(merge-rule "갫" "갫")
+(merge-rule "갬" "갬")
+(merge-rule "갭" "갭")
+(merge-rule "갮" "갮")
+(merge-rule "갯" "갯")
+(merge-rule "갰" "갰")
+(merge-rule "갱" "갱")
+(merge-rule "갲" "갲")
+(merge-rule "갳" "갳")
+(merge-rule "갴" "갴")
+(merge-rule "갵" "갵")
+(merge-rule "ê°¶" "개á‡")
+(merge-rule "갷" "갷")
+(merge-rule "갸" "갸~b")
+(merge-rule "갹" "갹")
+(merge-rule "갺" "갺")
+(merge-rule "갻" "갻")
+(merge-rule "갼" "갼")
+(merge-rule "갽" "갽")
+(merge-rule "갾" "갾")
+(merge-rule "갿" "갿")
+(merge-rule "걀" "걀")
+(merge-rule "ê±" "걁")
+(merge-rule "걂" "걂")
+(merge-rule "걃" "걃")
+(merge-rule "걄" "걄")
+(merge-rule "걅" "걅")
+(merge-rule "걆" "걆")
+(merge-rule "걇" "걇")
+(merge-rule "걈" "걈")
+(merge-rule "걉" "걉")
+(merge-rule "걊" "걊")
+(merge-rule "걋" "걋")
+(merge-rule "걌" "걌")
+(merge-rule "ê±" "걍")
+(merge-rule "걎" "걎")
+(merge-rule "ê±" "걏")
+(merge-rule "ê±" "걐")
+(merge-rule "걑" "걑")
+(merge-rule "ê±’" "갸á‡")
+(merge-rule "걓" "걓")
+(merge-rule "걔" "걔~b")
+(merge-rule "걕" "걕")
+(merge-rule "걖" "걖")
+(merge-rule "걗" "걗")
+(merge-rule "걘" "걘")
+(merge-rule "걙" "걙")
+(merge-rule "걚" "걚")
+(merge-rule "걛" "걛")
+(merge-rule "걜" "걜")
+(merge-rule "ê±" "걝")
+(merge-rule "걞" "걞")
+(merge-rule "걟" "걟")
+(merge-rule "걠" "걠")
+(merge-rule "걡" "걡")
+(merge-rule "걢" "걢")
+(merge-rule "걣" "걣")
+(merge-rule "걤" "걤")
+(merge-rule "걥" "걥")
+(merge-rule "걦" "걦")
+(merge-rule "걧" "걧")
+(merge-rule "걨" "걨")
+(merge-rule "걩" "걩")
+(merge-rule "걪" "걪")
+(merge-rule "걫" "걫")
+(merge-rule "걬" "걬")
+(merge-rule "걭" "걭")
+(merge-rule "ê±®" "걔á‡")
+(merge-rule "걯" "걯")
+(merge-rule "거" "거~b")
+(merge-rule "걱" "걱")
+(merge-rule "걲" "걲")
+(merge-rule "걳" "걳")
+(merge-rule "건" "건")
+(merge-rule "걵" "걵")
+(merge-rule "걶" "걶")
+(merge-rule "걷" "걷")
+(merge-rule "걸" "걸")
+(merge-rule "걹" "걹")
+(merge-rule "걺" "걺")
+(merge-rule "걻" "걻")
+(merge-rule "걼" "걼")
+(merge-rule "걽" "걽")
+(merge-rule "걾" "걾")
+(merge-rule "걿" "걿")
+(merge-rule "검" "검")
+(merge-rule "ê²" "겁")
+(merge-rule "겂" "겂")
+(merge-rule "것" "것")
+(merge-rule "겄" "겄")
+(merge-rule "겅" "겅")
+(merge-rule "겆" "겆")
+(merge-rule "겇" "겇")
+(merge-rule "겈" "겈")
+(merge-rule "겉" "겉")
+(merge-rule "겊" "거á‡")
+(merge-rule "겋" "겋")
+(merge-rule "게" "게~b")
+(merge-rule "ê²" "겍")
+(merge-rule "겎" "겎")
+(merge-rule "ê²" "겏")
+(merge-rule "ê²" "겐")
+(merge-rule "겑" "겑")
+(merge-rule "겒" "겒")
+(merge-rule "겓" "겓")
+(merge-rule "겔" "겔")
+(merge-rule "겕" "겕")
+(merge-rule "겖" "겖")
+(merge-rule "겗" "겗")
+(merge-rule "겘" "겘")
+(merge-rule "겙" "겙")
+(merge-rule "겚" "겚")
+(merge-rule "겛" "겛")
+(merge-rule "겜" "겜")
+(merge-rule "ê²" "겝")
+(merge-rule "겞" "겞")
+(merge-rule "겟" "겟")
+(merge-rule "겠" "겠")
+(merge-rule "겡" "겡")
+(merge-rule "겢" "겢")
+(merge-rule "겣" "겣")
+(merge-rule "겤" "겤")
+(merge-rule "겥" "겥")
+(merge-rule "겦" "게á‡")
+(merge-rule "겧" "겧")
+(merge-rule "겨" "겨~b")
+(merge-rule "격" "격")
+(merge-rule "겪" "겪")
+(merge-rule "겫" "겫")
+(merge-rule "견" "견")
+(merge-rule "겭" "겭")
+(merge-rule "겮" "겮")
+(merge-rule "겯" "겯")
+(merge-rule "결" "결")
+(merge-rule "겱" "겱")
+(merge-rule "겲" "겲")
+(merge-rule "겳" "겳")
+(merge-rule "겴" "겴")
+(merge-rule "겵" "겵")
+(merge-rule "겶" "겶")
+(merge-rule "겷" "겷")
+(merge-rule "겸" "겸")
+(merge-rule "겹" "겹")
+(merge-rule "겺" "겺")
+(merge-rule "겻" "겻")
+(merge-rule "겼" "겼")
+(merge-rule "경" "경")
+(merge-rule "겾" "겾")
+(merge-rule "겿" "겿")
+(merge-rule "곀" "곀")
+(merge-rule "ê³" "곁")
+(merge-rule "곂" "겨á‡")
+(merge-rule "곃" "곃")
+(merge-rule "계" "계~b")
+(merge-rule "곅" "곅")
+(merge-rule "곆" "곆")
+(merge-rule "곇" "곇")
+(merge-rule "곈" "곈")
+(merge-rule "곉" "곉")
+(merge-rule "곊" "곊")
+(merge-rule "곋" "곋")
+(merge-rule "곌" "곌")
+(merge-rule "ê³" "곍")
+(merge-rule "곎" "곎")
+(merge-rule "ê³" "곏")
+(merge-rule "ê³" "곐")
+(merge-rule "곑" "곑")
+(merge-rule "곒" "곒")
+(merge-rule "곓" "곓")
+(merge-rule "곔" "곔")
+(merge-rule "곕" "곕")
+(merge-rule "곖" "곖")
+(merge-rule "곗" "곗")
+(merge-rule "곘" "곘")
+(merge-rule "곙" "곙")
+(merge-rule "곚" "곚")
+(merge-rule "곛" "곛")
+(merge-rule "곜" "곜")
+(merge-rule "ê³" "곝")
+(merge-rule "곞" "계á‡")
+(merge-rule "곟" "곟")
+(merge-rule "고" "고~b")
+(merge-rule "곡" "곡")
+(merge-rule "곢" "곢")
+(merge-rule "곣" "곣")
+(merge-rule "곤" "곤")
+(merge-rule "곥" "곥")
+(merge-rule "곦" "곦")
+(merge-rule "곧" "곧")
+(merge-rule "골" "골")
+(merge-rule "곩" "곩")
+(merge-rule "곪" "곪")
+(merge-rule "곫" "곫")
+(merge-rule "곬" "곬")
+(merge-rule "곭" "곭")
+(merge-rule "곮" "곮")
+(merge-rule "곯" "곯")
+(merge-rule "곰" "곰")
+(merge-rule "곱" "곱")
+(merge-rule "곲" "곲")
+(merge-rule "곳" "곳")
+(merge-rule "곴" "곴")
+(merge-rule "공" "공")
+(merge-rule "곶" "곶")
+(merge-rule "곷" "곷")
+(merge-rule "곸" "곸")
+(merge-rule "곹" "곹")
+(merge-rule "곺" "고á‡")
+(merge-rule "곻" "곻")
+(merge-rule "과" "과~b")
+(merge-rule "곽" "곽")
+(merge-rule "곾" "곾")
+(merge-rule "곿" "곿")
+(merge-rule "관" "관")
+(merge-rule "ê´" "괁")
+(merge-rule "괂" "괂")
+(merge-rule "괃" "괃")
+(merge-rule "괄" "괄")
+(merge-rule "괅" "괅")
+(merge-rule "괆" "괆")
+(merge-rule "괇" "괇")
+(merge-rule "괈" "괈")
+(merge-rule "괉" "괉")
+(merge-rule "괊" "괊")
+(merge-rule "괋" "괋")
+(merge-rule "괌" "괌")
+(merge-rule "ê´" "괍")
+(merge-rule "괎" "괎")
+(merge-rule "ê´" "괏")
+(merge-rule "ê´" "괐")
+(merge-rule "광" "광")
+(merge-rule "괒" "괒")
+(merge-rule "괓" "괓")
+(merge-rule "괔" "괔")
+(merge-rule "괕" "괕")
+(merge-rule "ê´–" "과á‡")
+(merge-rule "괗" "괗")
+(merge-rule "괘" "괘~b")
+(merge-rule "괙" "괙")
+(merge-rule "괚" "괚")
+(merge-rule "괛" "괛")
+(merge-rule "괜" "괜")
+(merge-rule "ê´" "괝")
+(merge-rule "괞" "괞")
+(merge-rule "괟" "괟")
+(merge-rule "괠" "괠")
+(merge-rule "괡" "괡")
+(merge-rule "괢" "괢")
+(merge-rule "괣" "괣")
+(merge-rule "괤" "괤")
+(merge-rule "괥" "괥")
+(merge-rule "괦" "괦")
+(merge-rule "괧" "괧")
+(merge-rule "괨" "괨")
+(merge-rule "괩" "괩")
+(merge-rule "괪" "괪")
+(merge-rule "괫" "괫")
+(merge-rule "괬" "괬")
+(merge-rule "괭" "괭")
+(merge-rule "괮" "괮")
+(merge-rule "괯" "괯")
+(merge-rule "괰" "괰")
+(merge-rule "괱" "괱")
+(merge-rule "ê´²" "괘á‡")
+(merge-rule "괳" "괳")
+(merge-rule "괴" "괴~b")
+(merge-rule "괵" "괵")
+(merge-rule "괶" "괶")
+(merge-rule "괷" "괷")
+(merge-rule "괸" "괸")
+(merge-rule "괹" "괹")
+(merge-rule "괺" "괺")
+(merge-rule "괻" "괻")
+(merge-rule "괼" "괼")
+(merge-rule "괽" "괽")
+(merge-rule "괾" "괾")
+(merge-rule "괿" "괿")
+(merge-rule "굀" "굀")
+(merge-rule "êµ" "굁")
+(merge-rule "굂" "굂")
+(merge-rule "굃" "굃")
+(merge-rule "굄" "굄")
+(merge-rule "굅" "굅")
+(merge-rule "굆" "굆")
+(merge-rule "굇" "굇")
+(merge-rule "굈" "굈")
+(merge-rule "굉" "굉")
+(merge-rule "굊" "굊")
+(merge-rule "굋" "굋")
+(merge-rule "굌" "굌")
+(merge-rule "êµ" "굍")
+(merge-rule "굎" "괴á‡")
+(merge-rule "êµ" "굏")
+(merge-rule "êµ" "교~b")
+(merge-rule "굑" "굑")
+(merge-rule "굒" "굒")
+(merge-rule "굓" "굓")
+(merge-rule "굔" "굔")
+(merge-rule "굕" "굕")
+(merge-rule "굖" "굖")
+(merge-rule "굗" "굗")
+(merge-rule "굘" "굘")
+(merge-rule "굙" "굙")
+(merge-rule "굚" "굚")
+(merge-rule "굛" "굛")
+(merge-rule "굜" "굜")
+(merge-rule "êµ" "굝")
+(merge-rule "굞" "굞")
+(merge-rule "굟" "굟")
+(merge-rule "굠" "굠")
+(merge-rule "굡" "굡")
+(merge-rule "굢" "굢")
+(merge-rule "굣" "굣")
+(merge-rule "굤" "굤")
+(merge-rule "굥" "굥")
+(merge-rule "굦" "굦")
+(merge-rule "굧" "굧")
+(merge-rule "굨" "굨")
+(merge-rule "굩" "굩")
+(merge-rule "굪" "교á‡")
+(merge-rule "굫" "굫")
+(merge-rule "구" "구~b")
+(merge-rule "국" "국")
+(merge-rule "굮" "굮")
+(merge-rule "굯" "굯")
+(merge-rule "군" "군")
+(merge-rule "굱" "굱")
+(merge-rule "굲" "굲")
+(merge-rule "굳" "굳")
+(merge-rule "굴" "굴")
+(merge-rule "굵" "굵")
+(merge-rule "굶" "굶")
+(merge-rule "굷" "굷")
+(merge-rule "굸" "굸")
+(merge-rule "굹" "굹")
+(merge-rule "굺" "굺")
+(merge-rule "굻" "굻")
+(merge-rule "굼" "굼")
+(merge-rule "굽" "굽")
+(merge-rule "굾" "굾")
+(merge-rule "굿" "굿")
+(merge-rule "궀" "궀")
+(merge-rule "ê¶" "궁")
+(merge-rule "궂" "궂")
+(merge-rule "궃" "궃")
+(merge-rule "궄" "궄")
+(merge-rule "궅" "궅")
+(merge-rule "궆" "구á‡")
+(merge-rule "궇" "궇")
+(merge-rule "궈" "궈~b")
+(merge-rule "궉" "궉")
+(merge-rule "궊" "궊")
+(merge-rule "궋" "궋")
+(merge-rule "권" "권")
+(merge-rule "ê¶" "궍")
+(merge-rule "궎" "궎")
+(merge-rule "ê¶" "궏")
+(merge-rule "ê¶" "궐")
+(merge-rule "궑" "궑")
+(merge-rule "궒" "궒")
+(merge-rule "궓" "궓")
+(merge-rule "궔" "궔")
+(merge-rule "궕" "궕")
+(merge-rule "궖" "궖")
+(merge-rule "궗" "궗")
+(merge-rule "궘" "궘")
+(merge-rule "궙" "궙")
+(merge-rule "궚" "궚")
+(merge-rule "궛" "궛")
+(merge-rule "궜" "궜")
+(merge-rule "ê¶" "궝")
+(merge-rule "궞" "궞")
+(merge-rule "궟" "궟")
+(merge-rule "궠" "궠")
+(merge-rule "궡" "궡")
+(merge-rule "궢" "궈á‡")
+(merge-rule "궣" "궣")
+(merge-rule "궤" "궤~b")
+(merge-rule "궥" "궥")
+(merge-rule "궦" "궦")
+(merge-rule "궧" "궧")
+(merge-rule "궨" "궨")
+(merge-rule "궩" "궩")
+(merge-rule "궪" "궪")
+(merge-rule "궫" "궫")
+(merge-rule "궬" "궬")
+(merge-rule "궭" "궭")
+(merge-rule "궮" "궮")
+(merge-rule "궯" "궯")
+(merge-rule "궰" "궰")
+(merge-rule "궱" "궱")
+(merge-rule "궲" "궲")
+(merge-rule "궳" "궳")
+(merge-rule "궴" "궴")
+(merge-rule "궵" "궵")
+(merge-rule "궶" "궶")
+(merge-rule "궷" "궷")
+(merge-rule "궸" "궸")
+(merge-rule "궹" "궹")
+(merge-rule "궺" "궺")
+(merge-rule "궻" "궻")
+(merge-rule "궼" "궼")
+(merge-rule "궽" "궽")
+(merge-rule "궾" "궤á‡")
+(merge-rule "궿" "궿")
+(merge-rule "귀" "귀~b")
+(merge-rule "ê·" "귁")
+(merge-rule "귂" "귂")
+(merge-rule "귃" "귃")
+(merge-rule "귄" "귄")
+(merge-rule "귅" "귅")
+(merge-rule "귆" "귆")
+(merge-rule "귇" "귇")
+(merge-rule "귈" "귈")
+(merge-rule "귉" "귉")
+(merge-rule "귊" "귊")
+(merge-rule "귋" "귋")
+(merge-rule "귌" "귌")
+(merge-rule "ê·" "귍")
+(merge-rule "귎" "귎")
+(merge-rule "ê·" "귏")
+(merge-rule "ê·" "귐")
+(merge-rule "귑" "귑")
+(merge-rule "귒" "귒")
+(merge-rule "귓" "귓")
+(merge-rule "귔" "귔")
+(merge-rule "귕" "귕")
+(merge-rule "귖" "귖")
+(merge-rule "귗" "귗")
+(merge-rule "귘" "귘")
+(merge-rule "귙" "귙")
+(merge-rule "ê·š" "귀á‡")
+(merge-rule "귛" "귛")
+(merge-rule "규" "규~b")
+(merge-rule "ê·" "귝")
+(merge-rule "귞" "귞")
+(merge-rule "귟" "귟")
+(merge-rule "균" "균")
+(merge-rule "귡" "귡")
+(merge-rule "귢" "귢")
+(merge-rule "귣" "귣")
+(merge-rule "귤" "귤")
+(merge-rule "귥" "귥")
+(merge-rule "귦" "귦")
+(merge-rule "귧" "귧")
+(merge-rule "귨" "귨")
+(merge-rule "귩" "귩")
+(merge-rule "귪" "귪")
+(merge-rule "귫" "귫")
+(merge-rule "귬" "귬")
+(merge-rule "귭" "귭")
+(merge-rule "귮" "귮")
+(merge-rule "귯" "귯")
+(merge-rule "귰" "귰")
+(merge-rule "귱" "귱")
+(merge-rule "귲" "귲")
+(merge-rule "귳" "귳")
+(merge-rule "귴" "귴")
+(merge-rule "귵" "귵")
+(merge-rule "ê·¶" "규á‡")
+(merge-rule "귷" "귷")
+(merge-rule "그" "그~b")
+(merge-rule "극" "극")
+(merge-rule "귺" "귺")
+(merge-rule "귻" "귻")
+(merge-rule "근" "근")
+(merge-rule "귽" "귽")
+(merge-rule "귾" "귾")
+(merge-rule "귿" "귿")
+(merge-rule "글" "글")
+(merge-rule "ê¸" "긁")
+(merge-rule "긂" "긂")
+(merge-rule "긃" "긃")
+(merge-rule "긄" "긄")
+(merge-rule "긅" "긅")
+(merge-rule "긆" "긆")
+(merge-rule "긇" "긇")
+(merge-rule "금" "금")
+(merge-rule "급" "급")
+(merge-rule "긊" "긊")
+(merge-rule "긋" "긋")
+(merge-rule "긌" "긌")
+(merge-rule "ê¸" "긍")
+(merge-rule "긎" "긎")
+(merge-rule "ê¸" "긏")
+(merge-rule "ê¸" "긐")
+(merge-rule "긑" "긑")
+(merge-rule "긒" "그á‡")
+(merge-rule "긓" "긓")
+(merge-rule "긔" "긔~b")
+(merge-rule "긕" "긕")
+(merge-rule "긖" "긖")
+(merge-rule "긗" "긗")
+(merge-rule "긘" "긘")
+(merge-rule "긙" "긙")
+(merge-rule "긚" "긚")
+(merge-rule "긛" "긛")
+(merge-rule "긜" "긜")
+(merge-rule "ê¸" "긝")
+(merge-rule "긞" "긞")
+(merge-rule "긟" "긟")
+(merge-rule "긠" "긠")
+(merge-rule "긡" "긡")
+(merge-rule "긢" "긢")
+(merge-rule "긣" "긣")
+(merge-rule "긤" "긤")
+(merge-rule "긥" "긥")
+(merge-rule "긦" "긦")
+(merge-rule "긧" "긧")
+(merge-rule "긨" "긨")
+(merge-rule "긩" "긩")
+(merge-rule "긪" "긪")
+(merge-rule "긫" "긫")
+(merge-rule "긬" "긬")
+(merge-rule "긭" "긭")
+(merge-rule "긮" "긔á‡")
+(merge-rule "긯" "긯")
+(merge-rule "기" "기~b")
+(merge-rule "긱" "긱")
+(merge-rule "긲" "긲")
+(merge-rule "긳" "긳")
+(merge-rule "긴" "긴")
+(merge-rule "긵" "긵")
+(merge-rule "긶" "긶")
+(merge-rule "긷" "긷")
+(merge-rule "길" "길")
+(merge-rule "긹" "긹")
+(merge-rule "긺" "긺")
+(merge-rule "긻" "긻")
+(merge-rule "긼" "긼")
+(merge-rule "긽" "긽")
+(merge-rule "긾" "긾")
+(merge-rule "긿" "긿")
+(merge-rule "김" "김")
+(merge-rule "ê¹" "깁")
+(merge-rule "깂" "깂")
+(merge-rule "깃" "깃")
+(merge-rule "깄" "깄")
+(merge-rule "깅" "깅")
+(merge-rule "깆" "깆")
+(merge-rule "깇" "깇")
+(merge-rule "깈" "깈")
+(merge-rule "깉" "깉")
+(merge-rule "깊" "기á‡")
+(merge-rule "깋" "깋")
+(merge-rule "까" "á„á…¡~b")
+(merge-rule "ê¹" "á„ᅡᆨ")
+(merge-rule "깎" "á„ᅡᆩ")
+(merge-rule "ê¹" "á„ᅡᆪ")
+(merge-rule "ê¹" "á„ᅡᆫ")
+(merge-rule "깑" "á„ᅡᆬ")
+(merge-rule "ê¹’" "á„ᅡᆭ")
+(merge-rule "깓" "á„ᅡᆮ")
+(merge-rule "ê¹”" "á„ᅡᆯ")
+(merge-rule "깕" "á„ᅡᆰ")
+(merge-rule "ê¹–" "á„ᅡᆱ")
+(merge-rule "ê¹—" "á„ᅡᆲ")
+(merge-rule "깘" "á„ᅡᆳ")
+(merge-rule "ê¹™" "á„ᅡᆴ")
+(merge-rule "깚" "á„ᅡᆵ")
+(merge-rule "ê¹›" "á„ᅡᆶ")
+(merge-rule "깜" "á„ᅡᆷ")
+(merge-rule "ê¹" "á„ᅡᆸ")
+(merge-rule "깞" "á„ᅡᆹ")
+(merge-rule "깟" "á„ᅡᆺ")
+(merge-rule "ê¹ " "á„ᅡᆻ")
+(merge-rule "깡" "á„ᅡᆼ")
+(merge-rule "ê¹¢" "á„ᅡᆽ")
+(merge-rule "ê¹£" "á„ᅡᆾ")
+(merge-rule "깤" "á„ᅡᆿ")
+(merge-rule "ê¹¥" "á„ᅡᇀ")
+(merge-rule "깦" "á„á…¡á‡")
+(merge-rule "깧" "á„ᅡᇂ")
+(merge-rule "깨" "á„á…¢~b")
+(merge-rule "깩" "á„ᅢᆨ")
+(merge-rule "깪" "á„ᅢᆩ")
+(merge-rule "깫" "á„ᅢᆪ")
+(merge-rule "깬" "á„ᅢᆫ")
+(merge-rule "ê¹­" "á„ᅢᆬ")
+(merge-rule "ê¹®" "á„ᅢᆭ")
+(merge-rule "깯" "á„ᅢᆮ")
+(merge-rule "ê¹°" "á„ᅢᆯ")
+(merge-rule "ê¹±" "á„ᅢᆰ")
+(merge-rule "ê¹²" "á„ᅢᆱ")
+(merge-rule "ê¹³" "á„ᅢᆲ")
+(merge-rule "ê¹´" "á„ᅢᆳ")
+(merge-rule "ê¹µ" "á„ᅢᆴ")
+(merge-rule "깶" "á„ᅢᆵ")
+(merge-rule "ê¹·" "á„ᅢᆶ")
+(merge-rule "깸" "á„ᅢᆷ")
+(merge-rule "ê¹¹" "á„ᅢᆸ")
+(merge-rule "깺" "á„ᅢᆹ")
+(merge-rule "ê¹»" "á„ᅢᆺ")
+(merge-rule "ê¹¼" "á„ᅢᆻ")
+(merge-rule "ê¹½" "á„ᅢᆼ")
+(merge-rule "ê¹¾" "á„ᅢᆽ")
+(merge-rule "깿" "á„ᅢᆾ")
+(merge-rule "꺀" "á„ᅢᆿ")
+(merge-rule "êº" "á„ᅢᇀ")
+(merge-rule "꺂" "á„á…¢á‡")
+(merge-rule "꺃" "á„ᅢᇂ")
+(merge-rule "꺄" "á„á…£~b")
+(merge-rule "꺅" "á„ᅣᆨ")
+(merge-rule "꺆" "á„ᅣᆩ")
+(merge-rule "꺇" "á„ᅣᆪ")
+(merge-rule "꺈" "á„ᅣᆫ")
+(merge-rule "꺉" "á„ᅣᆬ")
+(merge-rule "꺊" "á„ᅣᆭ")
+(merge-rule "꺋" "á„ᅣᆮ")
+(merge-rule "꺌" "á„ᅣᆯ")
+(merge-rule "êº" "á„ᅣᆰ")
+(merge-rule "꺎" "á„ᅣᆱ")
+(merge-rule "êº" "á„ᅣᆲ")
+(merge-rule "êº" "á„ᅣᆳ")
+(merge-rule "꺑" "á„ᅣᆴ")
+(merge-rule "꺒" "á„ᅣᆵ")
+(merge-rule "꺓" "á„ᅣᆶ")
+(merge-rule "꺔" "á„ᅣᆷ")
+(merge-rule "꺕" "á„ᅣᆸ")
+(merge-rule "꺖" "á„ᅣᆹ")
+(merge-rule "꺗" "á„ᅣᆺ")
+(merge-rule "꺘" "á„ᅣᆻ")
+(merge-rule "꺙" "á„ᅣᆼ")
+(merge-rule "꺚" "á„ᅣᆽ")
+(merge-rule "꺛" "á„ᅣᆾ")
+(merge-rule "꺜" "á„ᅣᆿ")
+(merge-rule "êº" "á„ᅣᇀ")
+(merge-rule "꺞" "á„á…£á‡")
+(merge-rule "꺟" "á„ᅣᇂ")
+(merge-rule "꺠" "á„á…¤~b")
+(merge-rule "꺡" "á„ᅤᆨ")
+(merge-rule "꺢" "á„ᅤᆩ")
+(merge-rule "꺣" "á„ᅤᆪ")
+(merge-rule "꺤" "á„ᅤᆫ")
+(merge-rule "꺥" "á„ᅤᆬ")
+(merge-rule "꺦" "á„ᅤᆭ")
+(merge-rule "꺧" "á„ᅤᆮ")
+(merge-rule "꺨" "á„ᅤᆯ")
+(merge-rule "꺩" "á„ᅤᆰ")
+(merge-rule "꺪" "á„ᅤᆱ")
+(merge-rule "꺫" "á„ᅤᆲ")
+(merge-rule "꺬" "á„ᅤᆳ")
+(merge-rule "꺭" "á„ᅤᆴ")
+(merge-rule "꺮" "á„ᅤᆵ")
+(merge-rule "꺯" "á„ᅤᆶ")
+(merge-rule "꺰" "á„ᅤᆷ")
+(merge-rule "꺱" "á„ᅤᆸ")
+(merge-rule "꺲" "á„ᅤᆹ")
+(merge-rule "꺳" "á„ᅤᆺ")
+(merge-rule "꺴" "á„ᅤᆻ")
+(merge-rule "꺵" "á„ᅤᆼ")
+(merge-rule "꺶" "á„ᅤᆽ")
+(merge-rule "꺷" "á„ᅤᆾ")
+(merge-rule "꺸" "á„ᅤᆿ")
+(merge-rule "꺹" "á„ᅤᇀ")
+(merge-rule "꺺" "á„á…¤á‡")
+(merge-rule "꺻" "á„ᅤᇂ")
+(merge-rule "꺼" "á„á…¥~b")
+(merge-rule "꺽" "á„ᅥᆨ")
+(merge-rule "꺾" "á„ᅥᆩ")
+(merge-rule "꺿" "á„ᅥᆪ")
+(merge-rule "껀" "á„ᅥᆫ")
+(merge-rule "ê»" "á„ᅥᆬ")
+(merge-rule "껂" "á„ᅥᆭ")
+(merge-rule "껃" "á„ᅥᆮ")
+(merge-rule "껄" "á„ᅥᆯ")
+(merge-rule "ê»…" "á„ᅥᆰ")
+(merge-rule "껆" "á„ᅥᆱ")
+(merge-rule "껇" "á„ᅥᆲ")
+(merge-rule "껈" "á„ᅥᆳ")
+(merge-rule "껉" "á„ᅥᆴ")
+(merge-rule "껊" "á„ᅥᆵ")
+(merge-rule "껋" "á„ᅥᆶ")
+(merge-rule "껌" "á„ᅥᆷ")
+(merge-rule "ê»" "á„ᅥᆸ")
+(merge-rule "껎" "á„ᅥᆹ")
+(merge-rule "ê»" "á„ᅥᆺ")
+(merge-rule "ê»" "á„ᅥᆻ")
+(merge-rule "껑" "á„ᅥᆼ")
+(merge-rule "ê»’" "á„ᅥᆽ")
+(merge-rule "껓" "á„ᅥᆾ")
+(merge-rule "ê»”" "á„ᅥᆿ")
+(merge-rule "껕" "á„ᅥᇀ")
+(merge-rule "ê»–" "á„á…¥á‡")
+(merge-rule "ê»—" "á„ᅥᇂ")
+(merge-rule "께" "á„á…¦~b")
+(merge-rule "ê»™" "á„ᅦᆨ")
+(merge-rule "껚" "á„ᅦᆩ")
+(merge-rule "ê»›" "á„ᅦᆪ")
+(merge-rule "껜" "á„ᅦᆫ")
+(merge-rule "ê»" "á„ᅦᆬ")
+(merge-rule "껞" "á„ᅦᆭ")
+(merge-rule "껟" "á„ᅦᆮ")
+(merge-rule "ê» " "á„ᅦᆯ")
+(merge-rule "껡" "á„ᅦᆰ")
+(merge-rule "껢" "á„ᅦᆱ")
+(merge-rule "껣" "á„ᅦᆲ")
+(merge-rule "껤" "á„ᅦᆳ")
+(merge-rule "껥" "á„ᅦᆴ")
+(merge-rule "껦" "á„ᅦᆵ")
+(merge-rule "껧" "á„ᅦᆶ")
+(merge-rule "껨" "á„ᅦᆷ")
+(merge-rule "껩" "á„ᅦᆸ")
+(merge-rule "껪" "á„ᅦᆹ")
+(merge-rule "껫" "á„ᅦᆺ")
+(merge-rule "껬" "á„ᅦᆻ")
+(merge-rule "ê»­" "á„ᅦᆼ")
+(merge-rule "ê»®" "á„ᅦᆽ")
+(merge-rule "껯" "á„ᅦᆾ")
+(merge-rule "ê»°" "á„ᅦᆿ")
+(merge-rule "ê»±" "á„ᅦᇀ")
+(merge-rule "껲" "á„á…¦á‡")
+(merge-rule "껳" "á„ᅦᇂ")
+(merge-rule "ê»´" "á„á…§~b")
+(merge-rule "껵" "á„ᅧᆨ")
+(merge-rule "껶" "á„ᅧᆩ")
+(merge-rule "ê»·" "á„ᅧᆪ")
+(merge-rule "껸" "á„ᅧᆫ")
+(merge-rule "껹" "á„ᅧᆬ")
+(merge-rule "껺" "á„ᅧᆭ")
+(merge-rule "ê»»" "á„ᅧᆮ")
+(merge-rule "껼" "á„ᅧᆯ")
+(merge-rule "껽" "á„ᅧᆰ")
+(merge-rule "껾" "á„ᅧᆱ")
+(merge-rule "껿" "á„ᅧᆲ")
+(merge-rule "ê¼€" "á„ᅧᆳ")
+(merge-rule "ê¼" "á„ᅧᆴ")
+(merge-rule "꼂" "á„ᅧᆵ")
+(merge-rule "꼃" "á„ᅧᆶ")
+(merge-rule "꼄" "á„ᅧᆷ")
+(merge-rule "ê¼…" "á„ᅧᆸ")
+(merge-rule "꼆" "á„ᅧᆹ")
+(merge-rule "꼇" "á„ᅧᆺ")
+(merge-rule "꼈" "á„ᅧᆻ")
+(merge-rule "꼉" "á„ᅧᆼ")
+(merge-rule "꼊" "á„ᅧᆽ")
+(merge-rule "꼋" "á„ᅧᆾ")
+(merge-rule "꼌" "á„ᅧᆿ")
+(merge-rule "ê¼" "á„ᅧᇀ")
+(merge-rule "꼎" "á„á…§á‡")
+(merge-rule "ê¼" "á„ᅧᇂ")
+(merge-rule "ê¼" "á„á…¨~b")
+(merge-rule "꼑" "á„ᅨᆨ")
+(merge-rule "ê¼’" "á„ᅨᆩ")
+(merge-rule "꼓" "á„ᅨᆪ")
+(merge-rule "ê¼”" "á„ᅨᆫ")
+(merge-rule "꼕" "á„ᅨᆬ")
+(merge-rule "ê¼–" "á„ᅨᆭ")
+(merge-rule "ê¼—" "á„ᅨᆮ")
+(merge-rule "꼘" "á„ᅨᆯ")
+(merge-rule "ê¼™" "á„ᅨᆰ")
+(merge-rule "꼚" "á„ᅨᆱ")
+(merge-rule "ê¼›" "á„ᅨᆲ")
+(merge-rule "꼜" "á„ᅨᆳ")
+(merge-rule "ê¼" "á„ᅨᆴ")
+(merge-rule "꼞" "á„ᅨᆵ")
+(merge-rule "꼟" "á„ᅨᆶ")
+(merge-rule "ê¼ " "á„ᅨᆷ")
+(merge-rule "꼡" "á„ᅨᆸ")
+(merge-rule "ê¼¢" "á„ᅨᆹ")
+(merge-rule "ê¼£" "á„ᅨᆺ")
+(merge-rule "꼤" "á„ᅨᆻ")
+(merge-rule "ê¼¥" "á„ᅨᆼ")
+(merge-rule "꼦" "á„ᅨᆽ")
+(merge-rule "꼧" "á„ᅨᆾ")
+(merge-rule "꼨" "á„ᅨᆿ")
+(merge-rule "꼩" "á„ᅨᇀ")
+(merge-rule "꼪" "á„á…¨á‡")
+(merge-rule "꼫" "á„ᅨᇂ")
+(merge-rule "꼬" "á„á…©~b")
+(merge-rule "ê¼­" "á„ᅩᆨ")
+(merge-rule "ê¼®" "á„ᅩᆩ")
+(merge-rule "꼯" "á„ᅩᆪ")
+(merge-rule "ê¼°" "á„ᅩᆫ")
+(merge-rule "ê¼±" "á„ᅩᆬ")
+(merge-rule "ê¼²" "á„ᅩᆭ")
+(merge-rule "ê¼³" "á„ᅩᆮ")
+(merge-rule "ê¼´" "á„ᅩᆯ")
+(merge-rule "ê¼µ" "á„ᅩᆰ")
+(merge-rule "꼶" "á„ᅩᆱ")
+(merge-rule "ê¼·" "á„ᅩᆲ")
+(merge-rule "꼸" "á„ᅩᆳ")
+(merge-rule "ê¼¹" "á„ᅩᆴ")
+(merge-rule "꼺" "á„ᅩᆵ")
+(merge-rule "ê¼»" "á„ᅩᆶ")
+(merge-rule "ê¼¼" "á„ᅩᆷ")
+(merge-rule "ê¼½" "á„ᅩᆸ")
+(merge-rule "ê¼¾" "á„ᅩᆹ")
+(merge-rule "꼿" "á„ᅩᆺ")
+(merge-rule "ê½€" "á„ᅩᆻ")
+(merge-rule "ê½" "á„ᅩᆼ")
+(merge-rule "꽂" "á„ᅩᆽ")
+(merge-rule "꽃" "á„ᅩᆾ")
+(merge-rule "꽄" "á„ᅩᆿ")
+(merge-rule "ê½…" "á„ᅩᇀ")
+(merge-rule "꽆" "á„á…©á‡")
+(merge-rule "꽇" "á„ᅩᇂ")
+(merge-rule "꽈" "á„á…ª~b")
+(merge-rule "꽉" "á„ᅪᆨ")
+(merge-rule "꽊" "á„ᅪᆩ")
+(merge-rule "꽋" "á„ᅪᆪ")
+(merge-rule "꽌" "á„ᅪᆫ")
+(merge-rule "ê½" "á„ᅪᆬ")
+(merge-rule "꽎" "á„ᅪᆭ")
+(merge-rule "ê½" "á„ᅪᆮ")
+(merge-rule "ê½" "á„ᅪᆯ")
+(merge-rule "꽑" "á„ᅪᆰ")
+(merge-rule "ê½’" "á„ᅪᆱ")
+(merge-rule "꽓" "á„ᅪᆲ")
+(merge-rule "ê½”" "á„ᅪᆳ")
+(merge-rule "꽕" "á„ᅪᆴ")
+(merge-rule "ê½–" "á„ᅪᆵ")
+(merge-rule "ê½—" "á„ᅪᆶ")
+(merge-rule "꽘" "á„ᅪᆷ")
+(merge-rule "ê½™" "á„ᅪᆸ")
+(merge-rule "꽚" "á„ᅪᆹ")
+(merge-rule "ê½›" "á„ᅪᆺ")
+(merge-rule "꽜" "á„ᅪᆻ")
+(merge-rule "ê½" "á„ᅪᆼ")
+(merge-rule "꽞" "á„ᅪᆽ")
+(merge-rule "꽟" "á„ᅪᆾ")
+(merge-rule "ê½ " "á„ᅪᆿ")
+(merge-rule "꽡" "á„ᅪᇀ")
+(merge-rule "ê½¢" "á„á…ªá‡")
+(merge-rule "ê½£" "á„ᅪᇂ")
+(merge-rule "꽤" "á„á…«~b")
+(merge-rule "ê½¥" "á„ᅫᆨ")
+(merge-rule "꽦" "á„ᅫᆩ")
+(merge-rule "꽧" "á„ᅫᆪ")
+(merge-rule "꽨" "á„ᅫᆫ")
+(merge-rule "꽩" "á„ᅫᆬ")
+(merge-rule "꽪" "á„ᅫᆭ")
+(merge-rule "꽫" "á„ᅫᆮ")
+(merge-rule "꽬" "á„ᅫᆯ")
+(merge-rule "ê½­" "á„ᅫᆰ")
+(merge-rule "ê½®" "á„ᅫᆱ")
+(merge-rule "꽯" "á„ᅫᆲ")
+(merge-rule "ê½°" "á„ᅫᆳ")
+(merge-rule "ê½±" "á„ᅫᆴ")
+(merge-rule "ê½²" "á„ᅫᆵ")
+(merge-rule "ê½³" "á„ᅫᆶ")
+(merge-rule "ê½´" "á„ᅫᆷ")
+(merge-rule "ê½µ" "á„ᅫᆸ")
+(merge-rule "꽶" "á„ᅫᆹ")
+(merge-rule "ê½·" "á„ᅫᆺ")
+(merge-rule "꽸" "á„ᅫᆻ")
+(merge-rule "ê½¹" "á„ᅫᆼ")
+(merge-rule "꽺" "á„ᅫᆽ")
+(merge-rule "ê½»" "á„ᅫᆾ")
+(merge-rule "ê½¼" "á„ᅫᆿ")
+(merge-rule "ê½½" "á„ᅫᇀ")
+(merge-rule "ê½¾" "á„á…«á‡")
+(merge-rule "꽿" "á„ᅫᇂ")
+(merge-rule "ê¾€" "á„á…¬~b")
+(merge-rule "ê¾" "á„ᅬᆨ")
+(merge-rule "꾂" "á„ᅬᆩ")
+(merge-rule "꾃" "á„ᅬᆪ")
+(merge-rule "꾄" "á„ᅬᆫ")
+(merge-rule "ê¾…" "á„ᅬᆬ")
+(merge-rule "꾆" "á„ᅬᆭ")
+(merge-rule "꾇" "á„ᅬᆮ")
+(merge-rule "꾈" "á„ᅬᆯ")
+(merge-rule "꾉" "á„ᅬᆰ")
+(merge-rule "꾊" "á„ᅬᆱ")
+(merge-rule "꾋" "á„ᅬᆲ")
+(merge-rule "꾌" "á„ᅬᆳ")
+(merge-rule "ê¾" "á„ᅬᆴ")
+(merge-rule "꾎" "á„ᅬᆵ")
+(merge-rule "ê¾" "á„ᅬᆶ")
+(merge-rule "ê¾" "á„ᅬᆷ")
+(merge-rule "꾑" "á„ᅬᆸ")
+(merge-rule "ê¾’" "á„ᅬᆹ")
+(merge-rule "꾓" "á„ᅬᆺ")
+(merge-rule "ê¾”" "á„ᅬᆻ")
+(merge-rule "꾕" "á„ᅬᆼ")
+(merge-rule "ê¾–" "á„ᅬᆽ")
+(merge-rule "ê¾—" "á„ᅬᆾ")
+(merge-rule "꾘" "á„ᅬᆿ")
+(merge-rule "ê¾™" "á„ᅬᇀ")
+(merge-rule "꾚" "á„á…¬á‡")
+(merge-rule "ê¾›" "á„ᅬᇂ")
+(merge-rule "꾜" "á„á…­~b")
+(merge-rule "ê¾" "á„ᅭᆨ")
+(merge-rule "꾞" "á„ᅭᆩ")
+(merge-rule "꾟" "á„ᅭᆪ")
+(merge-rule "ê¾ " "á„ᅭᆫ")
+(merge-rule "꾡" "á„ᅭᆬ")
+(merge-rule "ê¾¢" "á„ᅭᆭ")
+(merge-rule "ê¾£" "á„ᅭᆮ")
+(merge-rule "꾤" "á„ᅭᆯ")
+(merge-rule "ê¾¥" "á„ᅭᆰ")
+(merge-rule "꾦" "á„ᅭᆱ")
+(merge-rule "꾧" "á„ᅭᆲ")
+(merge-rule "꾨" "á„ᅭᆳ")
+(merge-rule "꾩" "á„ᅭᆴ")
+(merge-rule "꾪" "á„ᅭᆵ")
+(merge-rule "꾫" "á„ᅭᆶ")
+(merge-rule "꾬" "á„ᅭᆷ")
+(merge-rule "ê¾­" "á„ᅭᆸ")
+(merge-rule "ê¾®" "á„ᅭᆹ")
+(merge-rule "꾯" "á„ᅭᆺ")
+(merge-rule "ê¾°" "á„ᅭᆻ")
+(merge-rule "ê¾±" "á„ᅭᆼ")
+(merge-rule "ê¾²" "á„ᅭᆽ")
+(merge-rule "ê¾³" "á„ᅭᆾ")
+(merge-rule "ê¾´" "á„ᅭᆿ")
+(merge-rule "ê¾µ" "á„ᅭᇀ")
+(merge-rule "꾶" "á„á…­á‡")
+(merge-rule "ê¾·" "á„ᅭᇂ")
+(merge-rule "꾸" "á„á…®~b")
+(merge-rule "ê¾¹" "á„ᅮᆨ")
+(merge-rule "꾺" "á„ᅮᆩ")
+(merge-rule "ê¾»" "á„ᅮᆪ")
+(merge-rule "ê¾¼" "á„ᅮᆫ")
+(merge-rule "ê¾½" "á„ᅮᆬ")
+(merge-rule "ê¾¾" "á„ᅮᆭ")
+(merge-rule "꾿" "á„ᅮᆮ")
+(merge-rule "ê¿€" "á„ᅮᆯ")
+(merge-rule "ê¿" "á„ᅮᆰ")
+(merge-rule "ê¿‚" "á„ᅮᆱ")
+(merge-rule "꿃" "á„ᅮᆲ")
+(merge-rule "ê¿„" "á„ᅮᆳ")
+(merge-rule "ê¿…" "á„ᅮᆴ")
+(merge-rule "꿆" "á„ᅮᆵ")
+(merge-rule "꿇" "á„ᅮᆶ")
+(merge-rule "꿈" "á„ᅮᆷ")
+(merge-rule "꿉" "á„ᅮᆸ")
+(merge-rule "ê¿Š" "á„ᅮᆹ")
+(merge-rule "ê¿‹" "á„ᅮᆺ")
+(merge-rule "ê¿Œ" "á„ᅮᆻ")
+(merge-rule "ê¿" "á„ᅮᆼ")
+(merge-rule "ê¿Ž" "á„ᅮᆽ")
+(merge-rule "ê¿" "á„ᅮᆾ")
+(merge-rule "ê¿" "á„ᅮᆿ")
+(merge-rule "ê¿‘" "á„ᅮᇀ")
+(merge-rule "ê¿’" "á„á…®á‡")
+(merge-rule "ê¿“" "á„ᅮᇂ")
+(merge-rule "ê¿”" "á„á…¯~b")
+(merge-rule "ê¿•" "á„ᅯᆨ")
+(merge-rule "ê¿–" "á„ᅯᆩ")
+(merge-rule "ê¿—" "á„ᅯᆪ")
+(merge-rule "꿘" "á„ᅯᆫ")
+(merge-rule "ê¿™" "á„ᅯᆬ")
+(merge-rule "ê¿š" "á„ᅯᆭ")
+(merge-rule "ê¿›" "á„ᅯᆮ")
+(merge-rule "ê¿œ" "á„ᅯᆯ")
+(merge-rule "ê¿" "á„ᅯᆰ")
+(merge-rule "ê¿ž" "á„ᅯᆱ")
+(merge-rule "ê¿Ÿ" "á„ᅯᆲ")
+(merge-rule "ê¿ " "á„ᅯᆳ")
+(merge-rule "ê¿¡" "á„ᅯᆴ")
+(merge-rule "ê¿¢" "á„ᅯᆵ")
+(merge-rule "ê¿£" "á„ᅯᆶ")
+(merge-rule "꿤" "á„ᅯᆷ")
+(merge-rule "ê¿¥" "á„ᅯᆸ")
+(merge-rule "꿦" "á„ᅯᆹ")
+(merge-rule "꿧" "á„ᅯᆺ")
+(merge-rule "꿨" "á„ᅯᆻ")
+(merge-rule "ê¿©" "á„ᅯᆼ")
+(merge-rule "꿪" "á„ᅯᆽ")
+(merge-rule "ê¿«" "á„ᅯᆾ")
+(merge-rule "꿬" "á„ᅯᆿ")
+(merge-rule "ê¿­" "á„ᅯᇀ")
+(merge-rule "ê¿®" "á„á…¯á‡")
+(merge-rule "꿯" "á„ᅯᇂ")
+(merge-rule "ê¿°" "á„á…°~b")
+(merge-rule "꿱" "á„ᅰᆨ")
+(merge-rule "꿲" "á„ᅰᆩ")
+(merge-rule "꿳" "á„ᅰᆪ")
+(merge-rule "ê¿´" "á„ᅰᆫ")
+(merge-rule "꿵" "á„ᅰᆬ")
+(merge-rule "꿶" "á„ᅰᆭ")
+(merge-rule "ê¿·" "á„ᅰᆮ")
+(merge-rule "꿸" "á„ᅰᆯ")
+(merge-rule "꿹" "á„ᅰᆰ")
+(merge-rule "꿺" "á„ᅰᆱ")
+(merge-rule "ê¿»" "á„ᅰᆲ")
+(merge-rule "꿼" "á„ᅰᆳ")
+(merge-rule "꿽" "á„ᅰᆴ")
+(merge-rule "꿾" "á„ᅰᆵ")
+(merge-rule "ê¿¿" "á„ᅰᆶ")
+(merge-rule "뀀" "á„ᅰᆷ")
+(merge-rule "ë€" "á„ᅰᆸ")
+(merge-rule "뀂" "á„ᅰᆹ")
+(merge-rule "뀃" "á„ᅰᆺ")
+(merge-rule "뀄" "á„ᅰᆻ")
+(merge-rule "뀅" "á„ᅰᆼ")
+(merge-rule "뀆" "á„ᅰᆽ")
+(merge-rule "뀇" "á„ᅰᆾ")
+(merge-rule "뀈" "á„ᅰᆿ")
+(merge-rule "뀉" "á„ᅰᇀ")
+(merge-rule "뀊" "á„á…°á‡")
+(merge-rule "뀋" "á„ᅰᇂ")
+(merge-rule "뀌" "á„á…±~b")
+(merge-rule "ë€" "á„ᅱᆨ")
+(merge-rule "뀎" "á„ᅱᆩ")
+(merge-rule "ë€" "á„ᅱᆪ")
+(merge-rule "ë€" "á„ᅱᆫ")
+(merge-rule "뀑" "á„ᅱᆬ")
+(merge-rule "뀒" "á„ᅱᆭ")
+(merge-rule "뀓" "á„ᅱᆮ")
+(merge-rule "뀔" "á„ᅱᆯ")
+(merge-rule "뀕" "á„ᅱᆰ")
+(merge-rule "뀖" "á„ᅱᆱ")
+(merge-rule "뀗" "á„ᅱᆲ")
+(merge-rule "뀘" "á„ᅱᆳ")
+(merge-rule "뀙" "á„ᅱᆴ")
+(merge-rule "뀚" "á„ᅱᆵ")
+(merge-rule "뀛" "á„ᅱᆶ")
+(merge-rule "뀜" "á„ᅱᆷ")
+(merge-rule "ë€" "á„ᅱᆸ")
+(merge-rule "뀞" "á„ᅱᆹ")
+(merge-rule "뀟" "á„ᅱᆺ")
+(merge-rule "뀠" "á„ᅱᆻ")
+(merge-rule "뀡" "á„ᅱᆼ")
+(merge-rule "뀢" "á„ᅱᆽ")
+(merge-rule "뀣" "á„ᅱᆾ")
+(merge-rule "뀤" "á„ᅱᆿ")
+(merge-rule "뀥" "á„ᅱᇀ")
+(merge-rule "뀦" "á„á…±á‡")
+(merge-rule "뀧" "á„ᅱᇂ")
+(merge-rule "뀨" "á„á…²~b")
+(merge-rule "뀩" "á„ᅲᆨ")
+(merge-rule "뀪" "á„ᅲᆩ")
+(merge-rule "뀫" "á„ᅲᆪ")
+(merge-rule "뀬" "á„ᅲᆫ")
+(merge-rule "뀭" "á„ᅲᆬ")
+(merge-rule "뀮" "á„ᅲᆭ")
+(merge-rule "뀯" "á„ᅲᆮ")
+(merge-rule "뀰" "á„ᅲᆯ")
+(merge-rule "뀱" "á„ᅲᆰ")
+(merge-rule "뀲" "á„ᅲᆱ")
+(merge-rule "뀳" "á„ᅲᆲ")
+(merge-rule "뀴" "á„ᅲᆳ")
+(merge-rule "뀵" "á„ᅲᆴ")
+(merge-rule "뀶" "á„ᅲᆵ")
+(merge-rule "뀷" "á„ᅲᆶ")
+(merge-rule "뀸" "á„ᅲᆷ")
+(merge-rule "뀹" "á„ᅲᆸ")
+(merge-rule "뀺" "á„ᅲᆹ")
+(merge-rule "뀻" "á„ᅲᆺ")
+(merge-rule "뀼" "á„ᅲᆻ")
+(merge-rule "뀽" "á„ᅲᆼ")
+(merge-rule "뀾" "á„ᅲᆽ")
+(merge-rule "뀿" "á„ᅲᆾ")
+(merge-rule "ë€" "á„ᅲᆿ")
+(merge-rule "ë" "á„ᅲᇀ")
+(merge-rule "ë‚" "á„á…²á‡")
+(merge-rule "ëƒ" "á„ᅲᇂ")
+(merge-rule "ë„" "á„á…³~b")
+(merge-rule "ë…" "á„ᅳᆨ")
+(merge-rule "ë†" "á„ᅳᆩ")
+(merge-rule "ë‡" "á„ᅳᆪ")
+(merge-rule "ëˆ" "á„ᅳᆫ")
+(merge-rule "ë‰" "á„ᅳᆬ")
+(merge-rule "ëŠ" "á„ᅳᆭ")
+(merge-rule "ë‹" "á„ᅳᆮ")
+(merge-rule "ëŒ" "á„ᅳᆯ")
+(merge-rule "ë" "á„ᅳᆰ")
+(merge-rule "ëŽ" "á„ᅳᆱ")
+(merge-rule "ë" "á„ᅳᆲ")
+(merge-rule "ë" "á„ᅳᆳ")
+(merge-rule "ë‘" "á„ᅳᆴ")
+(merge-rule "ë’" "á„ᅳᆵ")
+(merge-rule "ë“" "á„ᅳᆶ")
+(merge-rule "ë”" "á„ᅳᆷ")
+(merge-rule "ë•" "á„ᅳᆸ")
+(merge-rule "ë–" "á„ᅳᆹ")
+(merge-rule "ë—" "á„ᅳᆺ")
+(merge-rule "ë˜" "á„ᅳᆻ")
+(merge-rule "ë™" "á„ᅳᆼ")
+(merge-rule "ëš" "á„ᅳᆽ")
+(merge-rule "ë›" "á„ᅳᆾ")
+(merge-rule "ëœ" "á„ᅳᆿ")
+(merge-rule "ë" "á„ᅳᇀ")
+(merge-rule "ëž" "á„á…³á‡")
+(merge-rule "ëŸ" "á„ᅳᇂ")
+(merge-rule "ë " "á„á…´~b")
+(merge-rule "ë¡" "á„ᅴᆨ")
+(merge-rule "ë¢" "á„ᅴᆩ")
+(merge-rule "ë£" "á„ᅴᆪ")
+(merge-rule "ë¤" "á„ᅴᆫ")
+(merge-rule "ë¥" "á„ᅴᆬ")
+(merge-rule "ë¦" "á„ᅴᆭ")
+(merge-rule "ë§" "á„ᅴᆮ")
+(merge-rule "ë¨" "á„ᅴᆯ")
+(merge-rule "ë©" "á„ᅴᆰ")
+(merge-rule "ëª" "á„ᅴᆱ")
+(merge-rule "ë«" "á„ᅴᆲ")
+(merge-rule "ë¬" "á„ᅴᆳ")
+(merge-rule "ë­" "á„ᅴᆴ")
+(merge-rule "ë®" "á„ᅴᆵ")
+(merge-rule "ë¯" "á„ᅴᆶ")
+(merge-rule "ë°" "á„ᅴᆷ")
+(merge-rule "ë±" "á„ᅴᆸ")
+(merge-rule "ë²" "á„ᅴᆹ")
+(merge-rule "ë³" "á„ᅴᆺ")
+(merge-rule "ë´" "á„ᅴᆻ")
+(merge-rule "ëµ" "á„ᅴᆼ")
+(merge-rule "ë¶" "á„ᅴᆽ")
+(merge-rule "ë·" "á„ᅴᆾ")
+(merge-rule "ë¸" "á„ᅴᆿ")
+(merge-rule "ë¹" "á„ᅴᇀ")
+(merge-rule "ëº" "á„á…´á‡")
+(merge-rule "ë»" "á„ᅴᇂ")
+(merge-rule "ë¼" "á„á…µ~b")
+(merge-rule "ë½" "á„ᅵᆨ")
+(merge-rule "ë¾" "á„ᅵᆩ")
+(merge-rule "ë¿" "á„ᅵᆪ")
+(merge-rule "ë‚€" "á„ᅵᆫ")
+(merge-rule "ë‚" "á„ᅵᆬ")
+(merge-rule "ë‚‚" "á„ᅵᆭ")
+(merge-rule "낃" "á„ᅵᆮ")
+(merge-rule "ë‚„" "á„ᅵᆯ")
+(merge-rule "ë‚…" "á„ᅵᆰ")
+(merge-rule "낆" "á„ᅵᆱ")
+(merge-rule "낇" "á„ᅵᆲ")
+(merge-rule "낈" "á„ᅵᆳ")
+(merge-rule "낉" "á„ᅵᆴ")
+(merge-rule "ë‚Š" "á„ᅵᆵ")
+(merge-rule "ë‚‹" "á„ᅵᆶ")
+(merge-rule "ë‚Œ" "á„ᅵᆷ")
+(merge-rule "ë‚" "á„ᅵᆸ")
+(merge-rule "ë‚Ž" "á„ᅵᆹ")
+(merge-rule "ë‚" "á„ᅵᆺ")
+(merge-rule "ë‚" "á„ᅵᆻ")
+(merge-rule "ë‚‘" "á„ᅵᆼ")
+(merge-rule "ë‚’" "á„ᅵᆽ")
+(merge-rule "ë‚“" "á„ᅵᆾ")
+(merge-rule "ë‚”" "á„ᅵᆿ")
+(merge-rule "ë‚•" "á„ᅵᇀ")
+(merge-rule "ë‚–" "á„á…µá‡")
+(merge-rule "ë‚—" "á„ᅵᇂ")
+(merge-rule "나" "나~b")
+(merge-rule "낙" "낙")
+(merge-rule "낚" "낚")
+(merge-rule "낛" "낛")
+(merge-rule "난" "난")
+(merge-rule "ë‚" "낝")
+(merge-rule "낞" "낞")
+(merge-rule "낟" "낟")
+(merge-rule "날" "날")
+(merge-rule "낡" "낡")
+(merge-rule "낢" "낢")
+(merge-rule "낣" "낣")
+(merge-rule "낤" "낤")
+(merge-rule "낥" "낥")
+(merge-rule "낦" "낦")
+(merge-rule "낧" "낧")
+(merge-rule "남" "남")
+(merge-rule "납" "납")
+(merge-rule "낪" "낪")
+(merge-rule "낫" "낫")
+(merge-rule "났" "났")
+(merge-rule "낭" "낭")
+(merge-rule "낮" "낮")
+(merge-rule "낯" "낯")
+(merge-rule "낰" "낰")
+(merge-rule "낱" "낱")
+(merge-rule "낲" "á„‚á…¡á‡")
+(merge-rule "낳" "낳")
+(merge-rule "ë‚´" "á„‚á…¢~b")
+(merge-rule "낵" "낵")
+(merge-rule "낶" "낶")
+(merge-rule "낷" "낷")
+(merge-rule "낸" "낸")
+(merge-rule "낹" "낹")
+(merge-rule "낺" "낺")
+(merge-rule "낻" "낻")
+(merge-rule "낼" "낼")
+(merge-rule "낽" "낽")
+(merge-rule "낾" "낾")
+(merge-rule "낿" "낿")
+(merge-rule "냀" "냀")
+(merge-rule "ëƒ" "냁")
+(merge-rule "냂" "냂")
+(merge-rule "냃" "냃")
+(merge-rule "냄" "냄")
+(merge-rule "냅" "냅")
+(merge-rule "냆" "냆")
+(merge-rule "냇" "냇")
+(merge-rule "냈" "냈")
+(merge-rule "냉" "냉")
+(merge-rule "냊" "냊")
+(merge-rule "냋" "냋")
+(merge-rule "냌" "냌")
+(merge-rule "ëƒ" "냍")
+(merge-rule "냎" "á„‚á…¢á‡")
+(merge-rule "ëƒ" "냏")
+(merge-rule "ëƒ" "á„‚á…£~b")
+(merge-rule "냑" "냑")
+(merge-rule "냒" "냒")
+(merge-rule "냓" "냓")
+(merge-rule "냔" "냔")
+(merge-rule "냕" "냕")
+(merge-rule "냖" "냖")
+(merge-rule "냗" "냗")
+(merge-rule "냘" "냘")
+(merge-rule "냙" "냙")
+(merge-rule "냚" "냚")
+(merge-rule "냛" "냛")
+(merge-rule "냜" "냜")
+(merge-rule "ëƒ" "냝")
+(merge-rule "냞" "냞")
+(merge-rule "냟" "냟")
+(merge-rule "냠" "냠")
+(merge-rule "냡" "냡")
+(merge-rule "냢" "냢")
+(merge-rule "냣" "냣")
+(merge-rule "냤" "냤")
+(merge-rule "냥" "냥")
+(merge-rule "냦" "냦")
+(merge-rule "냧" "냧")
+(merge-rule "냨" "냨")
+(merge-rule "냩" "냩")
+(merge-rule "냪" "á„‚á…£á‡")
+(merge-rule "냫" "냫")
+(merge-rule "냬" "냬~b")
+(merge-rule "냭" "냭")
+(merge-rule "냮" "냮")
+(merge-rule "냯" "냯")
+(merge-rule "냰" "냰")
+(merge-rule "냱" "냱")
+(merge-rule "냲" "냲")
+(merge-rule "냳" "냳")
+(merge-rule "냴" "냴")
+(merge-rule "냵" "냵")
+(merge-rule "냶" "냶")
+(merge-rule "냷" "냷")
+(merge-rule "냸" "냸")
+(merge-rule "냹" "냹")
+(merge-rule "냺" "냺")
+(merge-rule "냻" "냻")
+(merge-rule "냼" "냼")
+(merge-rule "냽" "냽")
+(merge-rule "냾" "냾")
+(merge-rule "냿" "냿")
+(merge-rule "넀" "넀")
+(merge-rule "ë„" "넁")
+(merge-rule "넂" "넂")
+(merge-rule "넃" "넃")
+(merge-rule "넄" "넄")
+(merge-rule "넅" "넅")
+(merge-rule "넆" "á„‚á…¤á‡")
+(merge-rule "넇" "넇")
+(merge-rule "너" "너~b")
+(merge-rule "넉" "넉")
+(merge-rule "넊" "넊")
+(merge-rule "넋" "넋")
+(merge-rule "넌" "넌")
+(merge-rule "ë„" "넍")
+(merge-rule "넎" "넎")
+(merge-rule "ë„" "넏")
+(merge-rule "ë„" "널")
+(merge-rule "넑" "넑")
+(merge-rule "넒" "넒")
+(merge-rule "넓" "넓")
+(merge-rule "넔" "넔")
+(merge-rule "넕" "넕")
+(merge-rule "넖" "넖")
+(merge-rule "넗" "넗")
+(merge-rule "넘" "넘")
+(merge-rule "넙" "넙")
+(merge-rule "넚" "넚")
+(merge-rule "넛" "넛")
+(merge-rule "넜" "넜")
+(merge-rule "ë„" "넝")
+(merge-rule "넞" "넞")
+(merge-rule "넟" "넟")
+(merge-rule "넠" "넠")
+(merge-rule "넡" "넡")
+(merge-rule "ë„¢" "á„‚á…¥á‡")
+(merge-rule "넣" "넣")
+(merge-rule "네" "네~b")
+(merge-rule "넥" "넥")
+(merge-rule "넦" "넦")
+(merge-rule "넧" "넧")
+(merge-rule "넨" "넨")
+(merge-rule "넩" "넩")
+(merge-rule "넪" "넪")
+(merge-rule "넫" "넫")
+(merge-rule "넬" "넬")
+(merge-rule "넭" "넭")
+(merge-rule "넮" "넮")
+(merge-rule "넯" "넯")
+(merge-rule "넰" "넰")
+(merge-rule "넱" "넱")
+(merge-rule "넲" "넲")
+(merge-rule "넳" "넳")
+(merge-rule "넴" "넴")
+(merge-rule "넵" "넵")
+(merge-rule "넶" "넶")
+(merge-rule "넷" "넷")
+(merge-rule "넸" "넸")
+(merge-rule "넹" "넹")
+(merge-rule "넺" "넺")
+(merge-rule "넻" "넻")
+(merge-rule "넼" "넼")
+(merge-rule "넽" "넽")
+(merge-rule "넾" "á„‚á…¦á‡")
+(merge-rule "넿" "넿")
+(merge-rule "ë…€" "á„‚á…§~b")
+(merge-rule "ë…" "녁")
+(merge-rule "녂" "녂")
+(merge-rule "녃" "녃")
+(merge-rule "년" "년")
+(merge-rule "녅" "녅")
+(merge-rule "녆" "녆")
+(merge-rule "녇" "녇")
+(merge-rule "녈" "녈")
+(merge-rule "녉" "녉")
+(merge-rule "녊" "녊")
+(merge-rule "녋" "녋")
+(merge-rule "녌" "녌")
+(merge-rule "ë…" "녍")
+(merge-rule "녎" "녎")
+(merge-rule "ë…" "녏")
+(merge-rule "ë…" "념")
+(merge-rule "녑" "녑")
+(merge-rule "녒" "녒")
+(merge-rule "녓" "녓")
+(merge-rule "녔" "녔")
+(merge-rule "녕" "녕")
+(merge-rule "녖" "녖")
+(merge-rule "녗" "녗")
+(merge-rule "녘" "녘")
+(merge-rule "녙" "녙")
+(merge-rule "ë…š" "á„‚á…§á‡")
+(merge-rule "녛" "녛")
+(merge-rule "녜" "녜~b")
+(merge-rule "ë…" "녝")
+(merge-rule "녞" "녞")
+(merge-rule "녟" "녟")
+(merge-rule "녠" "녠")
+(merge-rule "녡" "녡")
+(merge-rule "녢" "녢")
+(merge-rule "녣" "녣")
+(merge-rule "녤" "녤")
+(merge-rule "녥" "녥")
+(merge-rule "녦" "녦")
+(merge-rule "녧" "녧")
+(merge-rule "녨" "녨")
+(merge-rule "녩" "녩")
+(merge-rule "녪" "녪")
+(merge-rule "녫" "녫")
+(merge-rule "녬" "녬")
+(merge-rule "녭" "녭")
+(merge-rule "녮" "녮")
+(merge-rule "녯" "녯")
+(merge-rule "녰" "녰")
+(merge-rule "녱" "녱")
+(merge-rule "녲" "녲")
+(merge-rule "녳" "녳")
+(merge-rule "녴" "녴")
+(merge-rule "녵" "녵")
+(merge-rule "ë…¶" "á„‚á…¨á‡")
+(merge-rule "녷" "녷")
+(merge-rule "ë…¸" "á„‚á…©~b")
+(merge-rule "녹" "녹")
+(merge-rule "녺" "녺")
+(merge-rule "녻" "녻")
+(merge-rule "논" "논")
+(merge-rule "녽" "녽")
+(merge-rule "녾" "녾")
+(merge-rule "녿" "녿")
+(merge-rule "놀" "놀")
+(merge-rule "ë†" "놁")
+(merge-rule "놂" "놂")
+(merge-rule "놃" "놃")
+(merge-rule "놄" "놄")
+(merge-rule "놅" "놅")
+(merge-rule "놆" "놆")
+(merge-rule "놇" "놇")
+(merge-rule "놈" "놈")
+(merge-rule "놉" "놉")
+(merge-rule "놊" "놊")
+(merge-rule "놋" "놋")
+(merge-rule "놌" "놌")
+(merge-rule "ë†" "농")
+(merge-rule "놎" "놎")
+(merge-rule "ë†" "놏")
+(merge-rule "ë†" "놐")
+(merge-rule "놑" "놑")
+(merge-rule "높" "á„‚á…©á‡")
+(merge-rule "놓" "놓")
+(merge-rule "놔" "놔~b")
+(merge-rule "놕" "놕")
+(merge-rule "놖" "놖")
+(merge-rule "놗" "놗")
+(merge-rule "놘" "놘")
+(merge-rule "놙" "놙")
+(merge-rule "놚" "놚")
+(merge-rule "놛" "놛")
+(merge-rule "놜" "놜")
+(merge-rule "ë†" "놝")
+(merge-rule "놞" "놞")
+(merge-rule "놟" "놟")
+(merge-rule "놠" "놠")
+(merge-rule "놡" "놡")
+(merge-rule "놢" "놢")
+(merge-rule "놣" "놣")
+(merge-rule "놤" "놤")
+(merge-rule "놥" "놥")
+(merge-rule "놦" "놦")
+(merge-rule "놧" "놧")
+(merge-rule "놨" "놨")
+(merge-rule "놩" "놩")
+(merge-rule "놪" "놪")
+(merge-rule "놫" "놫")
+(merge-rule "놬" "놬")
+(merge-rule "놭" "놭")
+(merge-rule "놮" "á„‚á…ªá‡")
+(merge-rule "놯" "놯")
+(merge-rule "놰" "놰~b")
+(merge-rule "놱" "놱")
+(merge-rule "놲" "놲")
+(merge-rule "놳" "놳")
+(merge-rule "놴" "놴")
+(merge-rule "놵" "놵")
+(merge-rule "놶" "놶")
+(merge-rule "놷" "놷")
+(merge-rule "놸" "놸")
+(merge-rule "놹" "놹")
+(merge-rule "놺" "놺")
+(merge-rule "놻" "놻")
+(merge-rule "놼" "놼")
+(merge-rule "놽" "놽")
+(merge-rule "놾" "놾")
+(merge-rule "놿" "놿")
+(merge-rule "뇀" "뇀")
+(merge-rule "ë‡" "뇁")
+(merge-rule "뇂" "뇂")
+(merge-rule "뇃" "뇃")
+(merge-rule "뇄" "뇄")
+(merge-rule "뇅" "뇅")
+(merge-rule "뇆" "뇆")
+(merge-rule "뇇" "뇇")
+(merge-rule "뇈" "뇈")
+(merge-rule "뇉" "뇉")
+(merge-rule "뇊" "á„‚á…«á‡")
+(merge-rule "뇋" "뇋")
+(merge-rule "뇌" "뇌~b")
+(merge-rule "ë‡" "뇍")
+(merge-rule "뇎" "뇎")
+(merge-rule "ë‡" "뇏")
+(merge-rule "ë‡" "뇐")
+(merge-rule "뇑" "뇑")
+(merge-rule "뇒" "뇒")
+(merge-rule "뇓" "뇓")
+(merge-rule "뇔" "뇔")
+(merge-rule "뇕" "뇕")
+(merge-rule "뇖" "뇖")
+(merge-rule "뇗" "뇗")
+(merge-rule "뇘" "뇘")
+(merge-rule "뇙" "뇙")
+(merge-rule "뇚" "뇚")
+(merge-rule "뇛" "뇛")
+(merge-rule "뇜" "뇜")
+(merge-rule "ë‡" "뇝")
+(merge-rule "뇞" "뇞")
+(merge-rule "뇟" "뇟")
+(merge-rule "뇠" "뇠")
+(merge-rule "뇡" "뇡")
+(merge-rule "뇢" "뇢")
+(merge-rule "뇣" "뇣")
+(merge-rule "뇤" "뇤")
+(merge-rule "뇥" "뇥")
+(merge-rule "뇦" "á„‚á…¬á‡")
+(merge-rule "뇧" "뇧")
+(merge-rule "뇨" "뇨~b")
+(merge-rule "뇩" "뇩")
+(merge-rule "뇪" "뇪")
+(merge-rule "뇫" "뇫")
+(merge-rule "뇬" "뇬")
+(merge-rule "뇭" "뇭")
+(merge-rule "뇮" "뇮")
+(merge-rule "뇯" "뇯")
+(merge-rule "뇰" "뇰")
+(merge-rule "뇱" "뇱")
+(merge-rule "뇲" "뇲")
+(merge-rule "뇳" "뇳")
+(merge-rule "뇴" "뇴")
+(merge-rule "뇵" "뇵")
+(merge-rule "뇶" "뇶")
+(merge-rule "뇷" "뇷")
+(merge-rule "뇸" "뇸")
+(merge-rule "뇹" "뇹")
+(merge-rule "뇺" "뇺")
+(merge-rule "뇻" "뇻")
+(merge-rule "뇼" "뇼")
+(merge-rule "뇽" "뇽")
+(merge-rule "뇾" "뇾")
+(merge-rule "뇿" "뇿")
+(merge-rule "눀" "눀")
+(merge-rule "ëˆ" "눁")
+(merge-rule "눂" "á„‚á…­á‡")
+(merge-rule "눃" "눃")
+(merge-rule "누" "누~b")
+(merge-rule "눅" "눅")
+(merge-rule "눆" "눆")
+(merge-rule "눇" "눇")
+(merge-rule "눈" "눈")
+(merge-rule "눉" "눉")
+(merge-rule "눊" "눊")
+(merge-rule "눋" "눋")
+(merge-rule "눌" "눌")
+(merge-rule "ëˆ" "눍")
+(merge-rule "눎" "눎")
+(merge-rule "ëˆ" "눏")
+(merge-rule "ëˆ" "눐")
+(merge-rule "눑" "눑")
+(merge-rule "눒" "눒")
+(merge-rule "눓" "눓")
+(merge-rule "눔" "눔")
+(merge-rule "눕" "눕")
+(merge-rule "눖" "눖")
+(merge-rule "눗" "눗")
+(merge-rule "눘" "눘")
+(merge-rule "눙" "눙")
+(merge-rule "눚" "눚")
+(merge-rule "눛" "눛")
+(merge-rule "눜" "눜")
+(merge-rule "ëˆ" "눝")
+(merge-rule "눞" "á„‚á…®á‡")
+(merge-rule "눟" "눟")
+(merge-rule "눠" "눠~b")
+(merge-rule "눡" "눡")
+(merge-rule "눢" "눢")
+(merge-rule "눣" "눣")
+(merge-rule "눤" "눤")
+(merge-rule "눥" "눥")
+(merge-rule "눦" "눦")
+(merge-rule "눧" "눧")
+(merge-rule "눨" "눨")
+(merge-rule "눩" "눩")
+(merge-rule "눪" "눪")
+(merge-rule "눫" "눫")
+(merge-rule "눬" "눬")
+(merge-rule "눭" "눭")
+(merge-rule "눮" "눮")
+(merge-rule "눯" "눯")
+(merge-rule "눰" "눰")
+(merge-rule "눱" "눱")
+(merge-rule "눲" "눲")
+(merge-rule "눳" "눳")
+(merge-rule "눴" "눴")
+(merge-rule "눵" "눵")
+(merge-rule "눶" "눶")
+(merge-rule "눷" "눷")
+(merge-rule "눸" "눸")
+(merge-rule "눹" "눹")
+(merge-rule "눺" "á„‚á…¯á‡")
+(merge-rule "눻" "눻")
+(merge-rule "눼" "눼~b")
+(merge-rule "눽" "눽")
+(merge-rule "눾" "눾")
+(merge-rule "눿" "눿")
+(merge-rule "뉀" "뉀")
+(merge-rule "ë‰" "뉁")
+(merge-rule "뉂" "뉂")
+(merge-rule "뉃" "뉃")
+(merge-rule "뉄" "뉄")
+(merge-rule "뉅" "뉅")
+(merge-rule "뉆" "뉆")
+(merge-rule "뉇" "뉇")
+(merge-rule "뉈" "뉈")
+(merge-rule "뉉" "뉉")
+(merge-rule "뉊" "뉊")
+(merge-rule "뉋" "뉋")
+(merge-rule "뉌" "뉌")
+(merge-rule "ë‰" "뉍")
+(merge-rule "뉎" "뉎")
+(merge-rule "ë‰" "뉏")
+(merge-rule "ë‰" "뉐")
+(merge-rule "뉑" "뉑")
+(merge-rule "뉒" "뉒")
+(merge-rule "뉓" "뉓")
+(merge-rule "뉔" "뉔")
+(merge-rule "뉕" "뉕")
+(merge-rule "뉖" "á„‚á…°á‡")
+(merge-rule "뉗" "뉗")
+(merge-rule "뉘" "뉘~b")
+(merge-rule "뉙" "뉙")
+(merge-rule "뉚" "뉚")
+(merge-rule "뉛" "뉛")
+(merge-rule "뉜" "뉜")
+(merge-rule "ë‰" "뉝")
+(merge-rule "뉞" "뉞")
+(merge-rule "뉟" "뉟")
+(merge-rule "뉠" "뉠")
+(merge-rule "뉡" "뉡")
+(merge-rule "뉢" "뉢")
+(merge-rule "뉣" "뉣")
+(merge-rule "뉤" "뉤")
+(merge-rule "뉥" "뉥")
+(merge-rule "뉦" "뉦")
+(merge-rule "뉧" "뉧")
+(merge-rule "뉨" "뉨")
+(merge-rule "뉩" "뉩")
+(merge-rule "뉪" "뉪")
+(merge-rule "뉫" "뉫")
+(merge-rule "뉬" "뉬")
+(merge-rule "뉭" "뉭")
+(merge-rule "뉮" "뉮")
+(merge-rule "뉯" "뉯")
+(merge-rule "뉰" "뉰")
+(merge-rule "뉱" "뉱")
+(merge-rule "뉲" "á„‚á…±á‡")
+(merge-rule "뉳" "뉳")
+(merge-rule "뉴" "뉴~b")
+(merge-rule "뉵" "뉵")
+(merge-rule "뉶" "뉶")
+(merge-rule "뉷" "뉷")
+(merge-rule "뉸" "뉸")
+(merge-rule "뉹" "뉹")
+(merge-rule "뉺" "뉺")
+(merge-rule "뉻" "뉻")
+(merge-rule "뉼" "뉼")
+(merge-rule "뉽" "뉽")
+(merge-rule "뉾" "뉾")
+(merge-rule "뉿" "뉿")
+(merge-rule "늀" "늀")
+(merge-rule "ëŠ" "늁")
+(merge-rule "늂" "늂")
+(merge-rule "늃" "늃")
+(merge-rule "늄" "늄")
+(merge-rule "늅" "늅")
+(merge-rule "늆" "늆")
+(merge-rule "늇" "늇")
+(merge-rule "늈" "늈")
+(merge-rule "늉" "늉")
+(merge-rule "늊" "늊")
+(merge-rule "늋" "늋")
+(merge-rule "늌" "늌")
+(merge-rule "ëŠ" "늍")
+(merge-rule "늎" "á„‚á…²á‡")
+(merge-rule "ëŠ" "늏")
+(merge-rule "ëŠ" "á„‚á…³~b")
+(merge-rule "늑" "늑")
+(merge-rule "늒" "늒")
+(merge-rule "늓" "늓")
+(merge-rule "는" "는")
+(merge-rule "늕" "늕")
+(merge-rule "늖" "늖")
+(merge-rule "늗" "늗")
+(merge-rule "늘" "늘")
+(merge-rule "늙" "늙")
+(merge-rule "늚" "늚")
+(merge-rule "늛" "늛")
+(merge-rule "늜" "늜")
+(merge-rule "ëŠ" "늝")
+(merge-rule "늞" "늞")
+(merge-rule "늟" "늟")
+(merge-rule "늠" "늠")
+(merge-rule "늡" "늡")
+(merge-rule "늢" "늢")
+(merge-rule "늣" "늣")
+(merge-rule "늤" "늤")
+(merge-rule "능" "능")
+(merge-rule "늦" "늦")
+(merge-rule "늧" "늧")
+(merge-rule "늨" "늨")
+(merge-rule "늩" "늩")
+(merge-rule "늪" "á„‚á…³á‡")
+(merge-rule "늫" "늫")
+(merge-rule "늬" "늬~b")
+(merge-rule "늭" "늭")
+(merge-rule "늮" "늮")
+(merge-rule "늯" "늯")
+(merge-rule "늰" "늰")
+(merge-rule "늱" "늱")
+(merge-rule "늲" "늲")
+(merge-rule "늳" "늳")
+(merge-rule "늴" "늴")
+(merge-rule "늵" "늵")
+(merge-rule "늶" "늶")
+(merge-rule "늷" "늷")
+(merge-rule "늸" "늸")
+(merge-rule "늹" "늹")
+(merge-rule "늺" "늺")
+(merge-rule "늻" "늻")
+(merge-rule "늼" "늼")
+(merge-rule "늽" "늽")
+(merge-rule "늾" "늾")
+(merge-rule "늿" "늿")
+(merge-rule "닀" "닀")
+(merge-rule "ë‹" "닁")
+(merge-rule "닂" "닂")
+(merge-rule "닃" "닃")
+(merge-rule "닄" "닄")
+(merge-rule "닅" "닅")
+(merge-rule "닆" "á„‚á…´á‡")
+(merge-rule "닇" "닇")
+(merge-rule "니" "니~b")
+(merge-rule "닉" "닉")
+(merge-rule "닊" "닊")
+(merge-rule "닋" "닋")
+(merge-rule "닌" "닌")
+(merge-rule "ë‹" "닍")
+(merge-rule "닎" "닎")
+(merge-rule "ë‹" "닏")
+(merge-rule "ë‹" "닐")
+(merge-rule "닑" "닑")
+(merge-rule "닒" "닒")
+(merge-rule "닓" "닓")
+(merge-rule "닔" "닔")
+(merge-rule "닕" "닕")
+(merge-rule "닖" "닖")
+(merge-rule "닗" "닗")
+(merge-rule "님" "님")
+(merge-rule "닙" "닙")
+(merge-rule "닚" "닚")
+(merge-rule "닛" "닛")
+(merge-rule "닜" "닜")
+(merge-rule "ë‹" "닝")
+(merge-rule "닞" "닞")
+(merge-rule "닟" "닟")
+(merge-rule "닠" "닠")
+(merge-rule "닡" "닡")
+(merge-rule "ë‹¢" "á„‚á…µá‡")
+(merge-rule "닣" "닣")
+(merge-rule "다" "다~b")
+(merge-rule "닥" "닥")
+(merge-rule "닦" "닦")
+(merge-rule "닧" "닧")
+(merge-rule "단" "단")
+(merge-rule "닩" "닩")
+(merge-rule "닪" "닪")
+(merge-rule "닫" "닫")
+(merge-rule "달" "달")
+(merge-rule "닭" "닭")
+(merge-rule "닮" "닮")
+(merge-rule "닯" "닯")
+(merge-rule "닰" "닰")
+(merge-rule "닱" "닱")
+(merge-rule "닲" "닲")
+(merge-rule "닳" "닳")
+(merge-rule "담" "담")
+(merge-rule "답" "답")
+(merge-rule "닶" "닶")
+(merge-rule "닷" "닷")
+(merge-rule "닸" "닸")
+(merge-rule "당" "당")
+(merge-rule "닺" "닺")
+(merge-rule "닻" "닻")
+(merge-rule "닼" "닼")
+(merge-rule "닽" "닽")
+(merge-rule "닾" "다á‡")
+(merge-rule "닿" "닿")
+(merge-rule "대" "대~b")
+(merge-rule "ëŒ" "댁")
+(merge-rule "댂" "댂")
+(merge-rule "댃" "댃")
+(merge-rule "댄" "댄")
+(merge-rule "댅" "댅")
+(merge-rule "댆" "댆")
+(merge-rule "댇" "댇")
+(merge-rule "댈" "댈")
+(merge-rule "댉" "댉")
+(merge-rule "댊" "댊")
+(merge-rule "댋" "댋")
+(merge-rule "댌" "댌")
+(merge-rule "ëŒ" "댍")
+(merge-rule "댎" "댎")
+(merge-rule "ëŒ" "댏")
+(merge-rule "ëŒ" "댐")
+(merge-rule "댑" "댑")
+(merge-rule "댒" "댒")
+(merge-rule "댓" "댓")
+(merge-rule "댔" "댔")
+(merge-rule "댕" "댕")
+(merge-rule "댖" "댖")
+(merge-rule "댗" "댗")
+(merge-rule "댘" "댘")
+(merge-rule "댙" "댙")
+(merge-rule "댚" "대á‡")
+(merge-rule "댛" "댛")
+(merge-rule "댜" "댜~b")
+(merge-rule "ëŒ" "댝")
+(merge-rule "댞" "댞")
+(merge-rule "댟" "댟")
+(merge-rule "댠" "댠")
+(merge-rule "댡" "댡")
+(merge-rule "댢" "댢")
+(merge-rule "댣" "댣")
+(merge-rule "댤" "댤")
+(merge-rule "댥" "댥")
+(merge-rule "댦" "댦")
+(merge-rule "댧" "댧")
+(merge-rule "댨" "댨")
+(merge-rule "댩" "댩")
+(merge-rule "댪" "댪")
+(merge-rule "댫" "댫")
+(merge-rule "댬" "댬")
+(merge-rule "댭" "댭")
+(merge-rule "댮" "댮")
+(merge-rule "댯" "댯")
+(merge-rule "댰" "댰")
+(merge-rule "댱" "댱")
+(merge-rule "댲" "댲")
+(merge-rule "댳" "댳")
+(merge-rule "댴" "댴")
+(merge-rule "댵" "댵")
+(merge-rule "댶" "댜á‡")
+(merge-rule "댷" "댷")
+(merge-rule "댸" "댸~b")
+(merge-rule "댹" "댹")
+(merge-rule "댺" "댺")
+(merge-rule "댻" "댻")
+(merge-rule "댼" "댼")
+(merge-rule "댽" "댽")
+(merge-rule "댾" "댾")
+(merge-rule "댿" "댿")
+(merge-rule "ë€" "덀")
+(merge-rule "ë" "덁")
+(merge-rule "ë‚" "덂")
+(merge-rule "ëƒ" "덃")
+(merge-rule "ë„" "덄")
+(merge-rule "ë…" "덅")
+(merge-rule "ë†" "덆")
+(merge-rule "ë‡" "덇")
+(merge-rule "ëˆ" "덈")
+(merge-rule "ë‰" "덉")
+(merge-rule "ëŠ" "덊")
+(merge-rule "ë‹" "덋")
+(merge-rule "ëŒ" "덌")
+(merge-rule "ë" "덍")
+(merge-rule "ëŽ" "덎")
+(merge-rule "ë" "덏")
+(merge-rule "ë" "덐")
+(merge-rule "ë‘" "덑")
+(merge-rule "ë’" "댸á‡")
+(merge-rule "ë“" "덓")
+(merge-rule "ë”" "더~b")
+(merge-rule "ë•" "덕")
+(merge-rule "ë–" "덖")
+(merge-rule "ë—" "덗")
+(merge-rule "ë˜" "던")
+(merge-rule "ë™" "덙")
+(merge-rule "ëš" "덚")
+(merge-rule "ë›" "덛")
+(merge-rule "ëœ" "덜")
+(merge-rule "ë" "덝")
+(merge-rule "ëž" "덞")
+(merge-rule "ëŸ" "덟")
+(merge-rule "ë " "덠")
+(merge-rule "ë¡" "덡")
+(merge-rule "ë¢" "덢")
+(merge-rule "ë£" "덣")
+(merge-rule "ë¤" "덤")
+(merge-rule "ë¥" "덥")
+(merge-rule "ë¦" "덦")
+(merge-rule "ë§" "덧")
+(merge-rule "ë¨" "덨")
+(merge-rule "ë©" "덩")
+(merge-rule "ëª" "덪")
+(merge-rule "ë«" "덫")
+(merge-rule "ë¬" "덬")
+(merge-rule "ë­" "덭")
+(merge-rule "ë®" "더á‡")
+(merge-rule "ë¯" "덯")
+(merge-rule "ë°" "데~b")
+(merge-rule "ë±" "덱")
+(merge-rule "ë²" "덲")
+(merge-rule "ë³" "덳")
+(merge-rule "ë´" "덴")
+(merge-rule "ëµ" "덵")
+(merge-rule "ë¶" "덶")
+(merge-rule "ë·" "덷")
+(merge-rule "ë¸" "델")
+(merge-rule "ë¹" "덹")
+(merge-rule "ëº" "덺")
+(merge-rule "ë»" "덻")
+(merge-rule "ë¼" "덼")
+(merge-rule "ë½" "덽")
+(merge-rule "ë¾" "덾")
+(merge-rule "ë¿" "덿")
+(merge-rule "뎀" "뎀")
+(merge-rule "ëŽ" "뎁")
+(merge-rule "뎂" "뎂")
+(merge-rule "뎃" "뎃")
+(merge-rule "뎄" "뎄")
+(merge-rule "뎅" "뎅")
+(merge-rule "뎆" "뎆")
+(merge-rule "뎇" "뎇")
+(merge-rule "뎈" "뎈")
+(merge-rule "뎉" "뎉")
+(merge-rule "뎊" "데á‡")
+(merge-rule "뎋" "뎋")
+(merge-rule "뎌" "뎌~b")
+(merge-rule "ëŽ" "뎍")
+(merge-rule "뎎" "뎎")
+(merge-rule "ëŽ" "뎏")
+(merge-rule "ëŽ" "뎐")
+(merge-rule "뎑" "뎑")
+(merge-rule "뎒" "뎒")
+(merge-rule "뎓" "뎓")
+(merge-rule "뎔" "뎔")
+(merge-rule "뎕" "뎕")
+(merge-rule "뎖" "뎖")
+(merge-rule "뎗" "뎗")
+(merge-rule "뎘" "뎘")
+(merge-rule "뎙" "뎙")
+(merge-rule "뎚" "뎚")
+(merge-rule "뎛" "뎛")
+(merge-rule "뎜" "뎜")
+(merge-rule "ëŽ" "뎝")
+(merge-rule "뎞" "뎞")
+(merge-rule "뎟" "뎟")
+(merge-rule "뎠" "뎠")
+(merge-rule "뎡" "뎡")
+(merge-rule "뎢" "뎢")
+(merge-rule "뎣" "뎣")
+(merge-rule "뎤" "뎤")
+(merge-rule "뎥" "뎥")
+(merge-rule "뎦" "뎌á‡")
+(merge-rule "뎧" "뎧")
+(merge-rule "뎨" "뎨~b")
+(merge-rule "뎩" "뎩")
+(merge-rule "뎪" "뎪")
+(merge-rule "뎫" "뎫")
+(merge-rule "뎬" "뎬")
+(merge-rule "뎭" "뎭")
+(merge-rule "뎮" "뎮")
+(merge-rule "뎯" "뎯")
+(merge-rule "뎰" "뎰")
+(merge-rule "뎱" "뎱")
+(merge-rule "뎲" "뎲")
+(merge-rule "뎳" "뎳")
+(merge-rule "뎴" "뎴")
+(merge-rule "뎵" "뎵")
+(merge-rule "뎶" "뎶")
+(merge-rule "뎷" "뎷")
+(merge-rule "뎸" "뎸")
+(merge-rule "뎹" "뎹")
+(merge-rule "뎺" "뎺")
+(merge-rule "뎻" "뎻")
+(merge-rule "뎼" "뎼")
+(merge-rule "뎽" "뎽")
+(merge-rule "뎾" "뎾")
+(merge-rule "뎿" "뎿")
+(merge-rule "ë€" "돀")
+(merge-rule "ë" "돁")
+(merge-rule "ë‚" "뎨á‡")
+(merge-rule "ëƒ" "돃")
+(merge-rule "ë„" "도~b")
+(merge-rule "ë…" "독")
+(merge-rule "ë†" "돆")
+(merge-rule "ë‡" "돇")
+(merge-rule "ëˆ" "돈")
+(merge-rule "ë‰" "돉")
+(merge-rule "ëŠ" "돊")
+(merge-rule "ë‹" "돋")
+(merge-rule "ëŒ" "돌")
+(merge-rule "ë" "돍")
+(merge-rule "ëŽ" "돎")
+(merge-rule "ë" "돏")
+(merge-rule "ë" "돐")
+(merge-rule "ë‘" "돑")
+(merge-rule "ë’" "돒")
+(merge-rule "ë“" "돓")
+(merge-rule "ë”" "돔")
+(merge-rule "ë•" "돕")
+(merge-rule "ë–" "돖")
+(merge-rule "ë—" "돗")
+(merge-rule "ë˜" "돘")
+(merge-rule "ë™" "동")
+(merge-rule "ëš" "돚")
+(merge-rule "ë›" "돛")
+(merge-rule "ëœ" "돜")
+(merge-rule "ë" "돝")
+(merge-rule "ëž" "도á‡")
+(merge-rule "ëŸ" "돟")
+(merge-rule "ë " "돠~b")
+(merge-rule "ë¡" "돡")
+(merge-rule "ë¢" "돢")
+(merge-rule "ë£" "돣")
+(merge-rule "ë¤" "돤")
+(merge-rule "ë¥" "돥")
+(merge-rule "ë¦" "돦")
+(merge-rule "ë§" "돧")
+(merge-rule "ë¨" "돨")
+(merge-rule "ë©" "돩")
+(merge-rule "ëª" "돪")
+(merge-rule "ë«" "돫")
+(merge-rule "ë¬" "돬")
+(merge-rule "ë­" "돭")
+(merge-rule "ë®" "돮")
+(merge-rule "ë¯" "돯")
+(merge-rule "ë°" "돰")
+(merge-rule "ë±" "돱")
+(merge-rule "ë²" "돲")
+(merge-rule "ë³" "돳")
+(merge-rule "ë´" "돴")
+(merge-rule "ëµ" "돵")
+(merge-rule "ë¶" "돶")
+(merge-rule "ë·" "돷")
+(merge-rule "ë¸" "돸")
+(merge-rule "ë¹" "돹")
+(merge-rule "ëº" "돠á‡")
+(merge-rule "ë»" "돻")
+(merge-rule "ë¼" "돼~b")
+(merge-rule "ë½" "돽")
+(merge-rule "ë¾" "돾")
+(merge-rule "ë¿" "돿")
+(merge-rule "ë€" "됀")
+(merge-rule "ë" "됁")
+(merge-rule "ë‚" "됂")
+(merge-rule "ëƒ" "됃")
+(merge-rule "ë„" "됄")
+(merge-rule "ë…" "됅")
+(merge-rule "ë†" "됆")
+(merge-rule "ë‡" "됇")
+(merge-rule "ëˆ" "됈")
+(merge-rule "ë‰" "됉")
+(merge-rule "ëŠ" "됊")
+(merge-rule "ë‹" "됋")
+(merge-rule "ëŒ" "됌")
+(merge-rule "ë" "됍")
+(merge-rule "ëŽ" "됎")
+(merge-rule "ë" "됏")
+(merge-rule "ë" "됐")
+(merge-rule "ë‘" "됑")
+(merge-rule "ë’" "됒")
+(merge-rule "ë“" "됓")
+(merge-rule "ë”" "됔")
+(merge-rule "ë•" "됕")
+(merge-rule "ë–" "돼á‡")
+(merge-rule "ë—" "됗")
+(merge-rule "ë˜" "되~b")
+(merge-rule "ë™" "됙")
+(merge-rule "ëš" "됚")
+(merge-rule "ë›" "됛")
+(merge-rule "ëœ" "된")
+(merge-rule "ë" "됝")
+(merge-rule "ëž" "됞")
+(merge-rule "ëŸ" "됟")
+(merge-rule "ë " "될")
+(merge-rule "ë¡" "됡")
+(merge-rule "ë¢" "됢")
+(merge-rule "ë£" "됣")
+(merge-rule "ë¤" "됤")
+(merge-rule "ë¥" "됥")
+(merge-rule "ë¦" "됦")
+(merge-rule "ë§" "됧")
+(merge-rule "ë¨" "됨")
+(merge-rule "ë©" "됩")
+(merge-rule "ëª" "됪")
+(merge-rule "ë«" "됫")
+(merge-rule "ë¬" "됬")
+(merge-rule "ë­" "됭")
+(merge-rule "ë®" "됮")
+(merge-rule "ë¯" "됯")
+(merge-rule "ë°" "됰")
+(merge-rule "ë±" "됱")
+(merge-rule "ë²" "되á‡")
+(merge-rule "ë³" "됳")
+(merge-rule "ë´" "됴~b")
+(merge-rule "ëµ" "됵")
+(merge-rule "ë¶" "됶")
+(merge-rule "ë·" "됷")
+(merge-rule "ë¸" "됸")
+(merge-rule "ë¹" "됹")
+(merge-rule "ëº" "됺")
+(merge-rule "ë»" "됻")
+(merge-rule "ë¼" "됼")
+(merge-rule "ë½" "됽")
+(merge-rule "ë¾" "됾")
+(merge-rule "ë¿" "됿")
+(merge-rule "둀" "둀")
+(merge-rule "ë‘" "둁")
+(merge-rule "둂" "둂")
+(merge-rule "둃" "둃")
+(merge-rule "둄" "둄")
+(merge-rule "둅" "둅")
+(merge-rule "둆" "둆")
+(merge-rule "둇" "둇")
+(merge-rule "둈" "둈")
+(merge-rule "둉" "둉")
+(merge-rule "둊" "둊")
+(merge-rule "둋" "둋")
+(merge-rule "둌" "둌")
+(merge-rule "ë‘" "둍")
+(merge-rule "ë‘Ž" "됴á‡")
+(merge-rule "ë‘" "둏")
+(merge-rule "ë‘" "두~b")
+(merge-rule "둑" "둑")
+(merge-rule "둒" "둒")
+(merge-rule "둓" "둓")
+(merge-rule "둔" "둔")
+(merge-rule "둕" "둕")
+(merge-rule "둖" "둖")
+(merge-rule "둗" "둗")
+(merge-rule "둘" "둘")
+(merge-rule "둙" "둙")
+(merge-rule "둚" "둚")
+(merge-rule "둛" "둛")
+(merge-rule "둜" "둜")
+(merge-rule "ë‘" "둝")
+(merge-rule "둞" "둞")
+(merge-rule "둟" "둟")
+(merge-rule "둠" "둠")
+(merge-rule "둡" "둡")
+(merge-rule "둢" "둢")
+(merge-rule "둣" "둣")
+(merge-rule "둤" "둤")
+(merge-rule "둥" "둥")
+(merge-rule "둦" "둦")
+(merge-rule "둧" "둧")
+(merge-rule "둨" "둨")
+(merge-rule "둩" "둩")
+(merge-rule "둪" "두á‡")
+(merge-rule "둫" "둫")
+(merge-rule "둬" "둬~b")
+(merge-rule "둭" "둭")
+(merge-rule "둮" "둮")
+(merge-rule "둯" "둯")
+(merge-rule "둰" "둰")
+(merge-rule "둱" "둱")
+(merge-rule "둲" "둲")
+(merge-rule "둳" "둳")
+(merge-rule "둴" "둴")
+(merge-rule "둵" "둵")
+(merge-rule "둶" "둶")
+(merge-rule "둷" "둷")
+(merge-rule "둸" "둸")
+(merge-rule "둹" "둹")
+(merge-rule "둺" "둺")
+(merge-rule "둻" "둻")
+(merge-rule "둼" "둼")
+(merge-rule "둽" "둽")
+(merge-rule "둾" "둾")
+(merge-rule "둿" "둿")
+(merge-rule "뒀" "뒀")
+(merge-rule "ë’" "뒁")
+(merge-rule "뒂" "뒂")
+(merge-rule "뒃" "뒃")
+(merge-rule "뒄" "뒄")
+(merge-rule "뒅" "뒅")
+(merge-rule "ë’†" "둬á‡")
+(merge-rule "뒇" "뒇")
+(merge-rule "뒈" "뒈~b")
+(merge-rule "뒉" "뒉")
+(merge-rule "뒊" "뒊")
+(merge-rule "뒋" "뒋")
+(merge-rule "뒌" "뒌")
+(merge-rule "ë’" "뒍")
+(merge-rule "뒎" "뒎")
+(merge-rule "ë’" "뒏")
+(merge-rule "ë’" "뒐")
+(merge-rule "뒑" "뒑")
+(merge-rule "뒒" "뒒")
+(merge-rule "뒓" "뒓")
+(merge-rule "뒔" "뒔")
+(merge-rule "뒕" "뒕")
+(merge-rule "뒖" "뒖")
+(merge-rule "뒗" "뒗")
+(merge-rule "뒘" "뒘")
+(merge-rule "뒙" "뒙")
+(merge-rule "뒚" "뒚")
+(merge-rule "뒛" "뒛")
+(merge-rule "뒜" "뒜")
+(merge-rule "ë’" "뒝")
+(merge-rule "뒞" "뒞")
+(merge-rule "뒟" "뒟")
+(merge-rule "뒠" "뒠")
+(merge-rule "뒡" "뒡")
+(merge-rule "ë’¢" "뒈á‡")
+(merge-rule "뒣" "뒣")
+(merge-rule "뒤" "뒤~b")
+(merge-rule "뒥" "뒥")
+(merge-rule "뒦" "뒦")
+(merge-rule "뒧" "뒧")
+(merge-rule "뒨" "뒨")
+(merge-rule "뒩" "뒩")
+(merge-rule "뒪" "뒪")
+(merge-rule "뒫" "뒫")
+(merge-rule "뒬" "뒬")
+(merge-rule "뒭" "뒭")
+(merge-rule "뒮" "뒮")
+(merge-rule "뒯" "뒯")
+(merge-rule "뒰" "뒰")
+(merge-rule "뒱" "뒱")
+(merge-rule "뒲" "뒲")
+(merge-rule "뒳" "뒳")
+(merge-rule "뒴" "뒴")
+(merge-rule "뒵" "뒵")
+(merge-rule "뒶" "뒶")
+(merge-rule "뒷" "뒷")
+(merge-rule "뒸" "뒸")
+(merge-rule "뒹" "뒹")
+(merge-rule "뒺" "뒺")
+(merge-rule "뒻" "뒻")
+(merge-rule "뒼" "뒼")
+(merge-rule "뒽" "뒽")
+(merge-rule "ë’¾" "뒤á‡")
+(merge-rule "뒿" "뒿")
+(merge-rule "듀" "듀~b")
+(merge-rule "ë“" "듁")
+(merge-rule "듂" "듂")
+(merge-rule "듃" "듃")
+(merge-rule "듄" "듄")
+(merge-rule "듅" "듅")
+(merge-rule "듆" "듆")
+(merge-rule "듇" "듇")
+(merge-rule "듈" "듈")
+(merge-rule "듉" "듉")
+(merge-rule "듊" "듊")
+(merge-rule "듋" "듋")
+(merge-rule "듌" "듌")
+(merge-rule "ë“" "듍")
+(merge-rule "듎" "듎")
+(merge-rule "ë“" "듏")
+(merge-rule "ë“" "듐")
+(merge-rule "듑" "듑")
+(merge-rule "듒" "듒")
+(merge-rule "듓" "듓")
+(merge-rule "듔" "듔")
+(merge-rule "듕" "듕")
+(merge-rule "듖" "듖")
+(merge-rule "듗" "듗")
+(merge-rule "듘" "듘")
+(merge-rule "듙" "듙")
+(merge-rule "ë“š" "듀á‡")
+(merge-rule "듛" "듛")
+(merge-rule "드" "드~b")
+(merge-rule "ë“" "득")
+(merge-rule "듞" "듞")
+(merge-rule "듟" "듟")
+(merge-rule "든" "든")
+(merge-rule "듡" "듡")
+(merge-rule "듢" "듢")
+(merge-rule "듣" "듣")
+(merge-rule "들" "들")
+(merge-rule "듥" "듥")
+(merge-rule "듦" "듦")
+(merge-rule "듧" "듧")
+(merge-rule "듨" "듨")
+(merge-rule "듩" "듩")
+(merge-rule "듪" "듪")
+(merge-rule "듫" "듫")
+(merge-rule "듬" "듬")
+(merge-rule "듭" "듭")
+(merge-rule "듮" "듮")
+(merge-rule "듯" "듯")
+(merge-rule "듰" "듰")
+(merge-rule "등" "등")
+(merge-rule "듲" "듲")
+(merge-rule "듳" "듳")
+(merge-rule "듴" "듴")
+(merge-rule "듵" "듵")
+(merge-rule "듶" "드á‡")
+(merge-rule "듷" "듷")
+(merge-rule "듸" "듸~b")
+(merge-rule "듹" "듹")
+(merge-rule "듺" "듺")
+(merge-rule "듻" "듻")
+(merge-rule "듼" "듼")
+(merge-rule "듽" "듽")
+(merge-rule "듾" "듾")
+(merge-rule "듿" "듿")
+(merge-rule "딀" "딀")
+(merge-rule "ë”" "딁")
+(merge-rule "딂" "딂")
+(merge-rule "딃" "딃")
+(merge-rule "딄" "딄")
+(merge-rule "딅" "딅")
+(merge-rule "딆" "딆")
+(merge-rule "딇" "딇")
+(merge-rule "딈" "딈")
+(merge-rule "딉" "딉")
+(merge-rule "딊" "딊")
+(merge-rule "딋" "딋")
+(merge-rule "딌" "딌")
+(merge-rule "ë”" "딍")
+(merge-rule "딎" "딎")
+(merge-rule "ë”" "딏")
+(merge-rule "ë”" "딐")
+(merge-rule "딑" "딑")
+(merge-rule "ë”’" "듸á‡")
+(merge-rule "딓" "딓")
+(merge-rule "디" "디~b")
+(merge-rule "딕" "딕")
+(merge-rule "딖" "딖")
+(merge-rule "딗" "딗")
+(merge-rule "딘" "딘")
+(merge-rule "딙" "딙")
+(merge-rule "딚" "딚")
+(merge-rule "딛" "딛")
+(merge-rule "딜" "딜")
+(merge-rule "ë”" "딝")
+(merge-rule "딞" "딞")
+(merge-rule "딟" "딟")
+(merge-rule "딠" "딠")
+(merge-rule "딡" "딡")
+(merge-rule "딢" "딢")
+(merge-rule "딣" "딣")
+(merge-rule "딤" "딤")
+(merge-rule "딥" "딥")
+(merge-rule "딦" "딦")
+(merge-rule "딧" "딧")
+(merge-rule "딨" "딨")
+(merge-rule "딩" "딩")
+(merge-rule "딪" "딪")
+(merge-rule "딫" "딫")
+(merge-rule "딬" "딬")
+(merge-rule "딭" "딭")
+(merge-rule "ë”®" "디á‡")
+(merge-rule "딯" "딯")
+(merge-rule "ë”°" "á„„á…¡~b")
+(merge-rule "딱" "딱")
+(merge-rule "딲" "딲")
+(merge-rule "딳" "딳")
+(merge-rule "딴" "딴")
+(merge-rule "딵" "딵")
+(merge-rule "딶" "딶")
+(merge-rule "딷" "딷")
+(merge-rule "딸" "딸")
+(merge-rule "딹" "딹")
+(merge-rule "딺" "딺")
+(merge-rule "딻" "딻")
+(merge-rule "딼" "딼")
+(merge-rule "딽" "딽")
+(merge-rule "딾" "딾")
+(merge-rule "딿" "딿")
+(merge-rule "땀" "땀")
+(merge-rule "ë•" "땁")
+(merge-rule "땂" "땂")
+(merge-rule "땃" "땃")
+(merge-rule "땄" "땄")
+(merge-rule "땅" "땅")
+(merge-rule "땆" "땆")
+(merge-rule "땇" "땇")
+(merge-rule "땈" "땈")
+(merge-rule "땉" "땉")
+(merge-rule "ë•Š" "á„„á…¡á‡")
+(merge-rule "땋" "땋")
+(merge-rule "때" "때~b")
+(merge-rule "ë•" "땍")
+(merge-rule "땎" "땎")
+(merge-rule "ë•" "땏")
+(merge-rule "ë•" "땐")
+(merge-rule "땑" "땑")
+(merge-rule "땒" "땒")
+(merge-rule "땓" "땓")
+(merge-rule "땔" "땔")
+(merge-rule "땕" "땕")
+(merge-rule "땖" "땖")
+(merge-rule "땗" "땗")
+(merge-rule "땘" "땘")
+(merge-rule "땙" "땙")
+(merge-rule "땚" "땚")
+(merge-rule "땛" "땛")
+(merge-rule "땜" "땜")
+(merge-rule "ë•" "땝")
+(merge-rule "땞" "땞")
+(merge-rule "땟" "땟")
+(merge-rule "땠" "땠")
+(merge-rule "땡" "땡")
+(merge-rule "땢" "땢")
+(merge-rule "땣" "땣")
+(merge-rule "땤" "땤")
+(merge-rule "땥" "땥")
+(merge-rule "땦" "á„„á…¢á‡")
+(merge-rule "땧" "땧")
+(merge-rule "땨" "땨~b")
+(merge-rule "땩" "땩")
+(merge-rule "땪" "땪")
+(merge-rule "땫" "땫")
+(merge-rule "땬" "땬")
+(merge-rule "땭" "땭")
+(merge-rule "땮" "땮")
+(merge-rule "땯" "땯")
+(merge-rule "땰" "땰")
+(merge-rule "땱" "땱")
+(merge-rule "땲" "땲")
+(merge-rule "땳" "땳")
+(merge-rule "땴" "땴")
+(merge-rule "땵" "땵")
+(merge-rule "땶" "땶")
+(merge-rule "땷" "땷")
+(merge-rule "땸" "땸")
+(merge-rule "땹" "땹")
+(merge-rule "땺" "땺")
+(merge-rule "땻" "땻")
+(merge-rule "땼" "땼")
+(merge-rule "땽" "땽")
+(merge-rule "땾" "땾")
+(merge-rule "땿" "땿")
+(merge-rule "떀" "떀")
+(merge-rule "ë–" "떁")
+(merge-rule "ë–‚" "á„„á…£á‡")
+(merge-rule "떃" "떃")
+(merge-rule "ë–„" "á„„á…¤~b")
+(merge-rule "떅" "떅")
+(merge-rule "떆" "떆")
+(merge-rule "떇" "떇")
+(merge-rule "떈" "떈")
+(merge-rule "떉" "떉")
+(merge-rule "떊" "떊")
+(merge-rule "떋" "떋")
+(merge-rule "떌" "떌")
+(merge-rule "ë–" "떍")
+(merge-rule "떎" "떎")
+(merge-rule "ë–" "떏")
+(merge-rule "ë–" "떐")
+(merge-rule "떑" "떑")
+(merge-rule "떒" "떒")
+(merge-rule "떓" "떓")
+(merge-rule "떔" "떔")
+(merge-rule "떕" "떕")
+(merge-rule "떖" "떖")
+(merge-rule "떗" "떗")
+(merge-rule "떘" "떘")
+(merge-rule "떙" "떙")
+(merge-rule "떚" "떚")
+(merge-rule "떛" "떛")
+(merge-rule "떜" "떜")
+(merge-rule "ë–" "떝")
+(merge-rule "ë–ž" "á„„á…¤á‡")
+(merge-rule "떟" "떟")
+(merge-rule "ë– " "á„„á…¥~b")
+(merge-rule "떡" "떡")
+(merge-rule "떢" "떢")
+(merge-rule "떣" "떣")
+(merge-rule "떤" "떤")
+(merge-rule "떥" "떥")
+(merge-rule "떦" "떦")
+(merge-rule "떧" "떧")
+(merge-rule "떨" "떨")
+(merge-rule "떩" "떩")
+(merge-rule "떪" "떪")
+(merge-rule "떫" "떫")
+(merge-rule "떬" "떬")
+(merge-rule "떭" "떭")
+(merge-rule "떮" "떮")
+(merge-rule "떯" "떯")
+(merge-rule "떰" "떰")
+(merge-rule "떱" "떱")
+(merge-rule "떲" "떲")
+(merge-rule "떳" "떳")
+(merge-rule "떴" "떴")
+(merge-rule "떵" "떵")
+(merge-rule "떶" "떶")
+(merge-rule "떷" "떷")
+(merge-rule "떸" "떸")
+(merge-rule "떹" "떹")
+(merge-rule "ë–º" "á„„á…¥á‡")
+(merge-rule "떻" "떻")
+(merge-rule "ë–¼" "á„„á…¦~b")
+(merge-rule "떽" "떽")
+(merge-rule "떾" "떾")
+(merge-rule "떿" "떿")
+(merge-rule "뗀" "뗀")
+(merge-rule "ë—" "뗁")
+(merge-rule "뗂" "뗂")
+(merge-rule "뗃" "뗃")
+(merge-rule "뗄" "뗄")
+(merge-rule "뗅" "뗅")
+(merge-rule "뗆" "뗆")
+(merge-rule "뗇" "뗇")
+(merge-rule "뗈" "뗈")
+(merge-rule "뗉" "뗉")
+(merge-rule "뗊" "뗊")
+(merge-rule "뗋" "뗋")
+(merge-rule "뗌" "뗌")
+(merge-rule "ë—" "뗍")
+(merge-rule "뗎" "뗎")
+(merge-rule "ë—" "뗏")
+(merge-rule "ë—" "뗐")
+(merge-rule "뗑" "뗑")
+(merge-rule "뗒" "뗒")
+(merge-rule "뗓" "뗓")
+(merge-rule "뗔" "뗔")
+(merge-rule "뗕" "뗕")
+(merge-rule "ë—–" "á„„á…¦á‡")
+(merge-rule "뗗" "뗗")
+(merge-rule "ë—˜" "á„„á…§~b")
+(merge-rule "뗙" "뗙")
+(merge-rule "뗚" "뗚")
+(merge-rule "뗛" "뗛")
+(merge-rule "뗜" "뗜")
+(merge-rule "ë—" "뗝")
+(merge-rule "뗞" "뗞")
+(merge-rule "뗟" "뗟")
+(merge-rule "뗠" "뗠")
+(merge-rule "뗡" "뗡")
+(merge-rule "뗢" "뗢")
+(merge-rule "뗣" "뗣")
+(merge-rule "뗤" "뗤")
+(merge-rule "뗥" "뗥")
+(merge-rule "뗦" "뗦")
+(merge-rule "뗧" "뗧")
+(merge-rule "뗨" "뗨")
+(merge-rule "뗩" "뗩")
+(merge-rule "뗪" "뗪")
+(merge-rule "뗫" "뗫")
+(merge-rule "뗬" "뗬")
+(merge-rule "뗭" "뗭")
+(merge-rule "뗮" "뗮")
+(merge-rule "뗯" "뗯")
+(merge-rule "뗰" "뗰")
+(merge-rule "뗱" "뗱")
+(merge-rule "ë—²" "á„„á…§á‡")
+(merge-rule "뗳" "뗳")
+(merge-rule "ë—´" "á„„á…¨~b")
+(merge-rule "뗵" "뗵")
+(merge-rule "뗶" "뗶")
+(merge-rule "뗷" "뗷")
+(merge-rule "뗸" "뗸")
+(merge-rule "뗹" "뗹")
+(merge-rule "뗺" "뗺")
+(merge-rule "뗻" "뗻")
+(merge-rule "뗼" "뗼")
+(merge-rule "뗽" "뗽")
+(merge-rule "뗾" "뗾")
+(merge-rule "뗿" "뗿")
+(merge-rule "똀" "똀")
+(merge-rule "ë˜" "똁")
+(merge-rule "똂" "똂")
+(merge-rule "똃" "똃")
+(merge-rule "똄" "똄")
+(merge-rule "똅" "똅")
+(merge-rule "똆" "똆")
+(merge-rule "똇" "똇")
+(merge-rule "똈" "똈")
+(merge-rule "똉" "똉")
+(merge-rule "똊" "똊")
+(merge-rule "똋" "똋")
+(merge-rule "똌" "똌")
+(merge-rule "ë˜" "똍")
+(merge-rule "똎" "á„„á…¨á‡")
+(merge-rule "ë˜" "똏")
+(merge-rule "ë˜" "á„„á…©~b")
+(merge-rule "똑" "똑")
+(merge-rule "똒" "똒")
+(merge-rule "똓" "똓")
+(merge-rule "똔" "똔")
+(merge-rule "똕" "똕")
+(merge-rule "똖" "똖")
+(merge-rule "똗" "똗")
+(merge-rule "똘" "똘")
+(merge-rule "똙" "똙")
+(merge-rule "똚" "똚")
+(merge-rule "똛" "똛")
+(merge-rule "똜" "똜")
+(merge-rule "ë˜" "똝")
+(merge-rule "똞" "똞")
+(merge-rule "똟" "똟")
+(merge-rule "똠" "똠")
+(merge-rule "똡" "똡")
+(merge-rule "똢" "똢")
+(merge-rule "똣" "똣")
+(merge-rule "똤" "똤")
+(merge-rule "똥" "똥")
+(merge-rule "똦" "똦")
+(merge-rule "똧" "똧")
+(merge-rule "똨" "똨")
+(merge-rule "똩" "똩")
+(merge-rule "똪" "á„„á…©á‡")
+(merge-rule "똫" "똫")
+(merge-rule "똬" "똬~b")
+(merge-rule "똭" "똭")
+(merge-rule "똮" "똮")
+(merge-rule "똯" "똯")
+(merge-rule "똰" "똰")
+(merge-rule "똱" "똱")
+(merge-rule "똲" "똲")
+(merge-rule "똳" "똳")
+(merge-rule "똴" "똴")
+(merge-rule "똵" "똵")
+(merge-rule "똶" "똶")
+(merge-rule "똷" "똷")
+(merge-rule "똸" "똸")
+(merge-rule "똹" "똹")
+(merge-rule "똺" "똺")
+(merge-rule "똻" "똻")
+(merge-rule "똼" "똼")
+(merge-rule "똽" "똽")
+(merge-rule "똾" "똾")
+(merge-rule "똿" "똿")
+(merge-rule "뙀" "뙀")
+(merge-rule "ë™" "뙁")
+(merge-rule "뙂" "뙂")
+(merge-rule "뙃" "뙃")
+(merge-rule "뙄" "뙄")
+(merge-rule "뙅" "뙅")
+(merge-rule "뙆" "á„„á…ªá‡")
+(merge-rule "뙇" "뙇")
+(merge-rule "뙈" "뙈~b")
+(merge-rule "뙉" "뙉")
+(merge-rule "뙊" "뙊")
+(merge-rule "뙋" "뙋")
+(merge-rule "뙌" "뙌")
+(merge-rule "ë™" "뙍")
+(merge-rule "뙎" "뙎")
+(merge-rule "ë™" "뙏")
+(merge-rule "ë™" "뙐")
+(merge-rule "뙑" "뙑")
+(merge-rule "뙒" "뙒")
+(merge-rule "뙓" "뙓")
+(merge-rule "뙔" "뙔")
+(merge-rule "뙕" "뙕")
+(merge-rule "뙖" "뙖")
+(merge-rule "뙗" "뙗")
+(merge-rule "뙘" "뙘")
+(merge-rule "뙙" "뙙")
+(merge-rule "뙚" "뙚")
+(merge-rule "뙛" "뙛")
+(merge-rule "뙜" "뙜")
+(merge-rule "ë™" "뙝")
+(merge-rule "뙞" "뙞")
+(merge-rule "뙟" "뙟")
+(merge-rule "뙠" "뙠")
+(merge-rule "뙡" "뙡")
+(merge-rule "뙢" "á„„á…«á‡")
+(merge-rule "뙣" "뙣")
+(merge-rule "뙤" "뙤~b")
+(merge-rule "뙥" "뙥")
+(merge-rule "뙦" "뙦")
+(merge-rule "뙧" "뙧")
+(merge-rule "뙨" "뙨")
+(merge-rule "뙩" "뙩")
+(merge-rule "뙪" "뙪")
+(merge-rule "뙫" "뙫")
+(merge-rule "뙬" "뙬")
+(merge-rule "뙭" "뙭")
+(merge-rule "뙮" "뙮")
+(merge-rule "뙯" "뙯")
+(merge-rule "뙰" "뙰")
+(merge-rule "뙱" "뙱")
+(merge-rule "뙲" "뙲")
+(merge-rule "뙳" "뙳")
+(merge-rule "뙴" "뙴")
+(merge-rule "뙵" "뙵")
+(merge-rule "뙶" "뙶")
+(merge-rule "뙷" "뙷")
+(merge-rule "뙸" "뙸")
+(merge-rule "뙹" "뙹")
+(merge-rule "뙺" "뙺")
+(merge-rule "뙻" "뙻")
+(merge-rule "뙼" "뙼")
+(merge-rule "뙽" "뙽")
+(merge-rule "뙾" "á„„á…¬á‡")
+(merge-rule "뙿" "뙿")
+(merge-rule "뚀" "뚀~b")
+(merge-rule "ëš" "뚁")
+(merge-rule "뚂" "뚂")
+(merge-rule "뚃" "뚃")
+(merge-rule "뚄" "뚄")
+(merge-rule "뚅" "뚅")
+(merge-rule "뚆" "뚆")
+(merge-rule "뚇" "뚇")
+(merge-rule "뚈" "뚈")
+(merge-rule "뚉" "뚉")
+(merge-rule "뚊" "뚊")
+(merge-rule "뚋" "뚋")
+(merge-rule "뚌" "뚌")
+(merge-rule "ëš" "뚍")
+(merge-rule "뚎" "뚎")
+(merge-rule "ëš" "뚏")
+(merge-rule "ëš" "뚐")
+(merge-rule "뚑" "뚑")
+(merge-rule "뚒" "뚒")
+(merge-rule "뚓" "뚓")
+(merge-rule "뚔" "뚔")
+(merge-rule "뚕" "뚕")
+(merge-rule "뚖" "뚖")
+(merge-rule "뚗" "뚗")
+(merge-rule "뚘" "뚘")
+(merge-rule "뚙" "뚙")
+(merge-rule "ëšš" "á„„á…­á‡")
+(merge-rule "뚛" "뚛")
+(merge-rule "뚜" "뚜~b")
+(merge-rule "ëš" "뚝")
+(merge-rule "뚞" "뚞")
+(merge-rule "뚟" "뚟")
+(merge-rule "뚠" "뚠")
+(merge-rule "뚡" "뚡")
+(merge-rule "뚢" "뚢")
+(merge-rule "뚣" "뚣")
+(merge-rule "뚤" "뚤")
+(merge-rule "뚥" "뚥")
+(merge-rule "뚦" "뚦")
+(merge-rule "뚧" "뚧")
+(merge-rule "뚨" "뚨")
+(merge-rule "뚩" "뚩")
+(merge-rule "뚪" "뚪")
+(merge-rule "뚫" "뚫")
+(merge-rule "뚬" "뚬")
+(merge-rule "뚭" "뚭")
+(merge-rule "뚮" "뚮")
+(merge-rule "뚯" "뚯")
+(merge-rule "뚰" "뚰")
+(merge-rule "뚱" "뚱")
+(merge-rule "뚲" "뚲")
+(merge-rule "뚳" "뚳")
+(merge-rule "뚴" "뚴")
+(merge-rule "뚵" "뚵")
+(merge-rule "뚶" "á„„á…®á‡")
+(merge-rule "뚷" "뚷")
+(merge-rule "뚸" "뚸~b")
+(merge-rule "뚹" "뚹")
+(merge-rule "뚺" "뚺")
+(merge-rule "뚻" "뚻")
+(merge-rule "뚼" "뚼")
+(merge-rule "뚽" "뚽")
+(merge-rule "뚾" "뚾")
+(merge-rule "뚿" "뚿")
+(merge-rule "뛀" "뛀")
+(merge-rule "ë›" "뛁")
+(merge-rule "뛂" "뛂")
+(merge-rule "뛃" "뛃")
+(merge-rule "뛄" "뛄")
+(merge-rule "뛅" "뛅")
+(merge-rule "뛆" "뛆")
+(merge-rule "뛇" "뛇")
+(merge-rule "뛈" "뛈")
+(merge-rule "뛉" "뛉")
+(merge-rule "뛊" "뛊")
+(merge-rule "뛋" "뛋")
+(merge-rule "뛌" "뛌")
+(merge-rule "ë›" "뛍")
+(merge-rule "뛎" "뛎")
+(merge-rule "ë›" "뛏")
+(merge-rule "ë›" "뛐")
+(merge-rule "뛑" "뛑")
+(merge-rule "ë›’" "á„„á…¯á‡")
+(merge-rule "뛓" "뛓")
+(merge-rule "ë›”" "á„„á…°~b")
+(merge-rule "뛕" "뛕")
+(merge-rule "뛖" "뛖")
+(merge-rule "뛗" "뛗")
+(merge-rule "뛘" "뛘")
+(merge-rule "뛙" "뛙")
+(merge-rule "뛚" "뛚")
+(merge-rule "뛛" "뛛")
+(merge-rule "뛜" "뛜")
+(merge-rule "ë›" "뛝")
+(merge-rule "뛞" "뛞")
+(merge-rule "뛟" "뛟")
+(merge-rule "뛠" "뛠")
+(merge-rule "뛡" "뛡")
+(merge-rule "뛢" "뛢")
+(merge-rule "뛣" "뛣")
+(merge-rule "뛤" "뛤")
+(merge-rule "뛥" "뛥")
+(merge-rule "뛦" "뛦")
+(merge-rule "뛧" "뛧")
+(merge-rule "뛨" "뛨")
+(merge-rule "뛩" "뛩")
+(merge-rule "뛪" "뛪")
+(merge-rule "뛫" "뛫")
+(merge-rule "뛬" "뛬")
+(merge-rule "뛭" "뛭")
+(merge-rule "ë›®" "á„„á…°á‡")
+(merge-rule "뛯" "뛯")
+(merge-rule "ë›°" "á„„á…±~b")
+(merge-rule "뛱" "뛱")
+(merge-rule "뛲" "뛲")
+(merge-rule "뛳" "뛳")
+(merge-rule "뛴" "뛴")
+(merge-rule "뛵" "뛵")
+(merge-rule "뛶" "뛶")
+(merge-rule "뛷" "뛷")
+(merge-rule "뛸" "뛸")
+(merge-rule "뛹" "뛹")
+(merge-rule "뛺" "뛺")
+(merge-rule "뛻" "뛻")
+(merge-rule "뛼" "뛼")
+(merge-rule "뛽" "뛽")
+(merge-rule "뛾" "뛾")
+(merge-rule "뛿" "뛿")
+(merge-rule "뜀" "뜀")
+(merge-rule "ëœ" "뜁")
+(merge-rule "뜂" "뜂")
+(merge-rule "뜃" "뜃")
+(merge-rule "뜄" "뜄")
+(merge-rule "뜅" "뜅")
+(merge-rule "뜆" "뜆")
+(merge-rule "뜇" "뜇")
+(merge-rule "뜈" "뜈")
+(merge-rule "뜉" "뜉")
+(merge-rule "뜊" "á„„á…±á‡")
+(merge-rule "뜋" "뜋")
+(merge-rule "뜌" "뜌~b")
+(merge-rule "ëœ" "뜍")
+(merge-rule "뜎" "뜎")
+(merge-rule "ëœ" "뜏")
+(merge-rule "ëœ" "뜐")
+(merge-rule "뜑" "뜑")
+(merge-rule "뜒" "뜒")
+(merge-rule "뜓" "뜓")
+(merge-rule "뜔" "뜔")
+(merge-rule "뜕" "뜕")
+(merge-rule "뜖" "뜖")
+(merge-rule "뜗" "뜗")
+(merge-rule "뜘" "뜘")
+(merge-rule "뜙" "뜙")
+(merge-rule "뜚" "뜚")
+(merge-rule "뜛" "뜛")
+(merge-rule "뜜" "뜜")
+(merge-rule "ëœ" "뜝")
+(merge-rule "뜞" "뜞")
+(merge-rule "뜟" "뜟")
+(merge-rule "뜠" "뜠")
+(merge-rule "뜡" "뜡")
+(merge-rule "뜢" "뜢")
+(merge-rule "뜣" "뜣")
+(merge-rule "뜤" "뜤")
+(merge-rule "뜥" "뜥")
+(merge-rule "뜦" "á„„á…²á‡")
+(merge-rule "뜧" "뜧")
+(merge-rule "뜨" "뜨~b")
+(merge-rule "뜩" "뜩")
+(merge-rule "뜪" "뜪")
+(merge-rule "뜫" "뜫")
+(merge-rule "뜬" "뜬")
+(merge-rule "뜭" "뜭")
+(merge-rule "뜮" "뜮")
+(merge-rule "뜯" "뜯")
+(merge-rule "뜰" "뜰")
+(merge-rule "뜱" "뜱")
+(merge-rule "뜲" "뜲")
+(merge-rule "뜳" "뜳")
+(merge-rule "뜴" "뜴")
+(merge-rule "뜵" "뜵")
+(merge-rule "뜶" "뜶")
+(merge-rule "뜷" "뜷")
+(merge-rule "뜸" "뜸")
+(merge-rule "뜹" "뜹")
+(merge-rule "뜺" "뜺")
+(merge-rule "뜻" "뜻")
+(merge-rule "뜼" "뜼")
+(merge-rule "뜽" "뜽")
+(merge-rule "뜾" "뜾")
+(merge-rule "뜿" "뜿")
+(merge-rule "ë€" "띀")
+(merge-rule "ë" "띁")
+(merge-rule "ë‚" "á„„á…³á‡")
+(merge-rule "ëƒ" "띃")
+(merge-rule "ë„" "á„„á…´~b")
+(merge-rule "ë…" "띅")
+(merge-rule "ë†" "띆")
+(merge-rule "ë‡" "띇")
+(merge-rule "ëˆ" "띈")
+(merge-rule "ë‰" "띉")
+(merge-rule "ëŠ" "띊")
+(merge-rule "ë‹" "띋")
+(merge-rule "ëŒ" "띌")
+(merge-rule "ë" "띍")
+(merge-rule "ëŽ" "띎")
+(merge-rule "ë" "띏")
+(merge-rule "ë" "띐")
+(merge-rule "ë‘" "띑")
+(merge-rule "ë’" "띒")
+(merge-rule "ë“" "띓")
+(merge-rule "ë”" "띔")
+(merge-rule "ë•" "띕")
+(merge-rule "ë–" "띖")
+(merge-rule "ë—" "띗")
+(merge-rule "ë˜" "띘")
+(merge-rule "ë™" "띙")
+(merge-rule "ëš" "띚")
+(merge-rule "ë›" "띛")
+(merge-rule "ëœ" "띜")
+(merge-rule "ë" "띝")
+(merge-rule "ëž" "á„„á…´á‡")
+(merge-rule "ëŸ" "띟")
+(merge-rule "ë " "á„„á…µ~b")
+(merge-rule "ë¡" "띡")
+(merge-rule "ë¢" "띢")
+(merge-rule "ë£" "띣")
+(merge-rule "ë¤" "띤")
+(merge-rule "ë¥" "띥")
+(merge-rule "ë¦" "띦")
+(merge-rule "ë§" "띧")
+(merge-rule "ë¨" "띨")
+(merge-rule "ë©" "띩")
+(merge-rule "ëª" "띪")
+(merge-rule "ë«" "띫")
+(merge-rule "ë¬" "띬")
+(merge-rule "ë­" "띭")
+(merge-rule "ë®" "띮")
+(merge-rule "ë¯" "띯")
+(merge-rule "ë°" "띰")
+(merge-rule "ë±" "띱")
+(merge-rule "ë²" "띲")
+(merge-rule "ë³" "띳")
+(merge-rule "ë´" "띴")
+(merge-rule "ëµ" "띵")
+(merge-rule "ë¶" "띶")
+(merge-rule "ë·" "띷")
+(merge-rule "ë¸" "띸")
+(merge-rule "ë¹" "띹")
+(merge-rule "ëº" "á„„á…µá‡")
+(merge-rule "ë»" "띻")
+(merge-rule "ë¼" "á„…á…¡~b")
+(merge-rule "ë½" "락")
+(merge-rule "ë¾" "띾")
+(merge-rule "ë¿" "띿")
+(merge-rule "란" "란")
+(merge-rule "ëž" "랁")
+(merge-rule "랂" "랂")
+(merge-rule "랃" "랃")
+(merge-rule "랄" "랄")
+(merge-rule "랅" "랅")
+(merge-rule "랆" "랆")
+(merge-rule "랇" "랇")
+(merge-rule "랈" "랈")
+(merge-rule "랉" "랉")
+(merge-rule "랊" "랊")
+(merge-rule "랋" "랋")
+(merge-rule "람" "람")
+(merge-rule "ëž" "랍")
+(merge-rule "랎" "랎")
+(merge-rule "ëž" "랏")
+(merge-rule "ëž" "랐")
+(merge-rule "랑" "랑")
+(merge-rule "랒" "랒")
+(merge-rule "랓" "랓")
+(merge-rule "랔" "랔")
+(merge-rule "랕" "랕")
+(merge-rule "ëž–" "á„…á…¡á‡")
+(merge-rule "랗" "랗")
+(merge-rule "래" "래~b")
+(merge-rule "랙" "랙")
+(merge-rule "랚" "랚")
+(merge-rule "랛" "랛")
+(merge-rule "랜" "랜")
+(merge-rule "ëž" "랝")
+(merge-rule "랞" "랞")
+(merge-rule "랟" "랟")
+(merge-rule "랠" "랠")
+(merge-rule "랡" "랡")
+(merge-rule "랢" "랢")
+(merge-rule "랣" "랣")
+(merge-rule "랤" "랤")
+(merge-rule "랥" "랥")
+(merge-rule "랦" "랦")
+(merge-rule "랧" "랧")
+(merge-rule "램" "램")
+(merge-rule "랩" "랩")
+(merge-rule "랪" "랪")
+(merge-rule "랫" "랫")
+(merge-rule "랬" "랬")
+(merge-rule "랭" "랭")
+(merge-rule "랮" "랮")
+(merge-rule "랯" "랯")
+(merge-rule "랰" "랰")
+(merge-rule "랱" "랱")
+(merge-rule "ëž²" "á„…á…¢á‡")
+(merge-rule "랳" "랳")
+(merge-rule "ëž´" "á„…á…£~b")
+(merge-rule "략" "략")
+(merge-rule "랶" "랶")
+(merge-rule "랷" "랷")
+(merge-rule "랸" "랸")
+(merge-rule "랹" "랹")
+(merge-rule "랺" "랺")
+(merge-rule "랻" "랻")
+(merge-rule "랼" "랼")
+(merge-rule "랽" "랽")
+(merge-rule "랾" "랾")
+(merge-rule "랿" "랿")
+(merge-rule "럀" "럀")
+(merge-rule "ëŸ" "럁")
+(merge-rule "럂" "럂")
+(merge-rule "럃" "럃")
+(merge-rule "럄" "럄")
+(merge-rule "럅" "럅")
+(merge-rule "럆" "럆")
+(merge-rule "럇" "럇")
+(merge-rule "럈" "럈")
+(merge-rule "량" "량")
+(merge-rule "럊" "럊")
+(merge-rule "럋" "럋")
+(merge-rule "럌" "럌")
+(merge-rule "ëŸ" "럍")
+(merge-rule "럎" "á„…á…£á‡")
+(merge-rule "ëŸ" "럏")
+(merge-rule "ëŸ" "á„…á…¤~b")
+(merge-rule "럑" "럑")
+(merge-rule "럒" "럒")
+(merge-rule "럓" "럓")
+(merge-rule "럔" "럔")
+(merge-rule "럕" "럕")
+(merge-rule "럖" "럖")
+(merge-rule "럗" "럗")
+(merge-rule "럘" "럘")
+(merge-rule "럙" "럙")
+(merge-rule "럚" "럚")
+(merge-rule "럛" "럛")
+(merge-rule "럜" "럜")
+(merge-rule "ëŸ" "럝")
+(merge-rule "럞" "럞")
+(merge-rule "럟" "럟")
+(merge-rule "럠" "럠")
+(merge-rule "럡" "럡")
+(merge-rule "럢" "럢")
+(merge-rule "럣" "럣")
+(merge-rule "럤" "럤")
+(merge-rule "럥" "럥")
+(merge-rule "럦" "럦")
+(merge-rule "럧" "럧")
+(merge-rule "럨" "럨")
+(merge-rule "럩" "럩")
+(merge-rule "럪" "á„…á…¤á‡")
+(merge-rule "럫" "럫")
+(merge-rule "러" "러~b")
+(merge-rule "럭" "럭")
+(merge-rule "럮" "럮")
+(merge-rule "럯" "럯")
+(merge-rule "런" "런")
+(merge-rule "럱" "럱")
+(merge-rule "럲" "럲")
+(merge-rule "럳" "럳")
+(merge-rule "럴" "럴")
+(merge-rule "럵" "럵")
+(merge-rule "럶" "럶")
+(merge-rule "럷" "럷")
+(merge-rule "럸" "럸")
+(merge-rule "럹" "럹")
+(merge-rule "럺" "럺")
+(merge-rule "럻" "럻")
+(merge-rule "럼" "럼")
+(merge-rule "럽" "럽")
+(merge-rule "럾" "럾")
+(merge-rule "럿" "럿")
+(merge-rule "렀" "렀")
+(merge-rule "ë " "렁")
+(merge-rule "렂" "렂")
+(merge-rule "렃" "렃")
+(merge-rule "렄" "렄")
+(merge-rule "렅" "렅")
+(merge-rule "ë †" "á„…á…¥á‡")
+(merge-rule "렇" "렇")
+(merge-rule "ë ˆ" "á„…á…¦~b")
+(merge-rule "렉" "렉")
+(merge-rule "렊" "렊")
+(merge-rule "렋" "렋")
+(merge-rule "렌" "렌")
+(merge-rule "ë " "렍")
+(merge-rule "렎" "렎")
+(merge-rule "ë " "렏")
+(merge-rule "ë " "렐")
+(merge-rule "렑" "렑")
+(merge-rule "렒" "렒")
+(merge-rule "렓" "렓")
+(merge-rule "렔" "렔")
+(merge-rule "렕" "렕")
+(merge-rule "렖" "렖")
+(merge-rule "렗" "렗")
+(merge-rule "렘" "렘")
+(merge-rule "렙" "렙")
+(merge-rule "렚" "렚")
+(merge-rule "렛" "렛")
+(merge-rule "렜" "렜")
+(merge-rule "ë " "렝")
+(merge-rule "렞" "렞")
+(merge-rule "렟" "렟")
+(merge-rule "렠" "렠")
+(merge-rule "렡" "렡")
+(merge-rule "ë ¢" "á„…á…¦á‡")
+(merge-rule "렣" "렣")
+(merge-rule "ë ¤" "á„…á…§~b")
+(merge-rule "력" "력")
+(merge-rule "렦" "렦")
+(merge-rule "렧" "렧")
+(merge-rule "련" "련")
+(merge-rule "렩" "렩")
+(merge-rule "렪" "렪")
+(merge-rule "렫" "렫")
+(merge-rule "렬" "렬")
+(merge-rule "렭" "렭")
+(merge-rule "렮" "렮")
+(merge-rule "렯" "렯")
+(merge-rule "렰" "렰")
+(merge-rule "렱" "렱")
+(merge-rule "렲" "렲")
+(merge-rule "렳" "렳")
+(merge-rule "렴" "렴")
+(merge-rule "렵" "렵")
+(merge-rule "렶" "렶")
+(merge-rule "렷" "렷")
+(merge-rule "렸" "렸")
+(merge-rule "령" "령")
+(merge-rule "렺" "렺")
+(merge-rule "렻" "렻")
+(merge-rule "렼" "렼")
+(merge-rule "렽" "렽")
+(merge-rule "ë ¾" "á„…á…§á‡")
+(merge-rule "렿" "렿")
+(merge-rule "ë¡€" "á„…á…¨~b")
+(merge-rule "ë¡" "롁")
+(merge-rule "롂" "롂")
+(merge-rule "롃" "롃")
+(merge-rule "롄" "롄")
+(merge-rule "롅" "롅")
+(merge-rule "롆" "롆")
+(merge-rule "롇" "롇")
+(merge-rule "롈" "롈")
+(merge-rule "롉" "롉")
+(merge-rule "롊" "롊")
+(merge-rule "롋" "롋")
+(merge-rule "롌" "롌")
+(merge-rule "ë¡" "롍")
+(merge-rule "롎" "롎")
+(merge-rule "ë¡" "롏")
+(merge-rule "ë¡" "롐")
+(merge-rule "롑" "롑")
+(merge-rule "롒" "롒")
+(merge-rule "롓" "롓")
+(merge-rule "롔" "롔")
+(merge-rule "롕" "롕")
+(merge-rule "롖" "롖")
+(merge-rule "롗" "롗")
+(merge-rule "롘" "롘")
+(merge-rule "롙" "롙")
+(merge-rule "ë¡š" "á„…á…¨á‡")
+(merge-rule "롛" "롛")
+(merge-rule "로" "로~b")
+(merge-rule "ë¡" "록")
+(merge-rule "롞" "롞")
+(merge-rule "롟" "롟")
+(merge-rule "론" "론")
+(merge-rule "롡" "롡")
+(merge-rule "롢" "롢")
+(merge-rule "롣" "롣")
+(merge-rule "롤" "롤")
+(merge-rule "롥" "롥")
+(merge-rule "롦" "롦")
+(merge-rule "롧" "롧")
+(merge-rule "롨" "롨")
+(merge-rule "롩" "롩")
+(merge-rule "롪" "롪")
+(merge-rule "롫" "롫")
+(merge-rule "롬" "롬")
+(merge-rule "롭" "롭")
+(merge-rule "롮" "롮")
+(merge-rule "롯" "롯")
+(merge-rule "롰" "롰")
+(merge-rule "롱" "롱")
+(merge-rule "롲" "롲")
+(merge-rule "롳" "롳")
+(merge-rule "롴" "롴")
+(merge-rule "롵" "롵")
+(merge-rule "롶" "á„…á…©á‡")
+(merge-rule "롷" "롷")
+(merge-rule "롸" "롸~b")
+(merge-rule "롹" "롹")
+(merge-rule "롺" "롺")
+(merge-rule "롻" "롻")
+(merge-rule "롼" "롼")
+(merge-rule "롽" "롽")
+(merge-rule "롾" "롾")
+(merge-rule "롿" "롿")
+(merge-rule "뢀" "뢀")
+(merge-rule "ë¢" "뢁")
+(merge-rule "뢂" "뢂")
+(merge-rule "뢃" "뢃")
+(merge-rule "뢄" "뢄")
+(merge-rule "뢅" "뢅")
+(merge-rule "뢆" "뢆")
+(merge-rule "뢇" "뢇")
+(merge-rule "뢈" "뢈")
+(merge-rule "뢉" "뢉")
+(merge-rule "뢊" "뢊")
+(merge-rule "뢋" "뢋")
+(merge-rule "뢌" "뢌")
+(merge-rule "ë¢" "뢍")
+(merge-rule "뢎" "뢎")
+(merge-rule "ë¢" "뢏")
+(merge-rule "ë¢" "뢐")
+(merge-rule "뢑" "뢑")
+(merge-rule "뢒" "á„…á…ªá‡")
+(merge-rule "뢓" "뢓")
+(merge-rule "뢔" "뢔~b")
+(merge-rule "뢕" "뢕")
+(merge-rule "뢖" "뢖")
+(merge-rule "뢗" "뢗")
+(merge-rule "뢘" "뢘")
+(merge-rule "뢙" "뢙")
+(merge-rule "뢚" "뢚")
+(merge-rule "뢛" "뢛")
+(merge-rule "뢜" "뢜")
+(merge-rule "ë¢" "뢝")
+(merge-rule "뢞" "뢞")
+(merge-rule "뢟" "뢟")
+(merge-rule "뢠" "뢠")
+(merge-rule "뢡" "뢡")
+(merge-rule "뢢" "뢢")
+(merge-rule "뢣" "뢣")
+(merge-rule "뢤" "뢤")
+(merge-rule "뢥" "뢥")
+(merge-rule "뢦" "뢦")
+(merge-rule "뢧" "뢧")
+(merge-rule "뢨" "뢨")
+(merge-rule "뢩" "뢩")
+(merge-rule "뢪" "뢪")
+(merge-rule "뢫" "뢫")
+(merge-rule "뢬" "뢬")
+(merge-rule "뢭" "뢭")
+(merge-rule "뢮" "á„…á…«á‡")
+(merge-rule "뢯" "뢯")
+(merge-rule "뢰" "뢰~b")
+(merge-rule "뢱" "뢱")
+(merge-rule "뢲" "뢲")
+(merge-rule "뢳" "뢳")
+(merge-rule "뢴" "뢴")
+(merge-rule "뢵" "뢵")
+(merge-rule "뢶" "뢶")
+(merge-rule "뢷" "뢷")
+(merge-rule "뢸" "뢸")
+(merge-rule "뢹" "뢹")
+(merge-rule "뢺" "뢺")
+(merge-rule "뢻" "뢻")
+(merge-rule "뢼" "뢼")
+(merge-rule "뢽" "뢽")
+(merge-rule "뢾" "뢾")
+(merge-rule "뢿" "뢿")
+(merge-rule "룀" "룀")
+(merge-rule "ë£" "룁")
+(merge-rule "룂" "룂")
+(merge-rule "룃" "룃")
+(merge-rule "룄" "룄")
+(merge-rule "룅" "룅")
+(merge-rule "룆" "룆")
+(merge-rule "룇" "룇")
+(merge-rule "룈" "룈")
+(merge-rule "룉" "룉")
+(merge-rule "룊" "á„…á…¬á‡")
+(merge-rule "룋" "룋")
+(merge-rule "료" "료~b")
+(merge-rule "ë£" "룍")
+(merge-rule "룎" "룎")
+(merge-rule "ë£" "룏")
+(merge-rule "ë£" "룐")
+(merge-rule "룑" "룑")
+(merge-rule "룒" "룒")
+(merge-rule "룓" "룓")
+(merge-rule "룔" "룔")
+(merge-rule "룕" "룕")
+(merge-rule "룖" "룖")
+(merge-rule "룗" "룗")
+(merge-rule "룘" "룘")
+(merge-rule "룙" "룙")
+(merge-rule "룚" "룚")
+(merge-rule "룛" "룛")
+(merge-rule "룜" "룜")
+(merge-rule "ë£" "룝")
+(merge-rule "룞" "룞")
+(merge-rule "룟" "룟")
+(merge-rule "룠" "룠")
+(merge-rule "룡" "룡")
+(merge-rule "룢" "룢")
+(merge-rule "룣" "룣")
+(merge-rule "룤" "룤")
+(merge-rule "룥" "룥")
+(merge-rule "룦" "á„…á…­á‡")
+(merge-rule "룧" "룧")
+(merge-rule "루" "루~b")
+(merge-rule "룩" "룩")
+(merge-rule "룪" "룪")
+(merge-rule "룫" "룫")
+(merge-rule "룬" "룬")
+(merge-rule "룭" "룭")
+(merge-rule "룮" "룮")
+(merge-rule "룯" "룯")
+(merge-rule "룰" "룰")
+(merge-rule "룱" "룱")
+(merge-rule "룲" "룲")
+(merge-rule "룳" "룳")
+(merge-rule "룴" "룴")
+(merge-rule "룵" "룵")
+(merge-rule "룶" "룶")
+(merge-rule "룷" "룷")
+(merge-rule "룸" "룸")
+(merge-rule "룹" "룹")
+(merge-rule "룺" "룺")
+(merge-rule "룻" "룻")
+(merge-rule "룼" "룼")
+(merge-rule "룽" "룽")
+(merge-rule "룾" "룾")
+(merge-rule "룿" "룿")
+(merge-rule "뤀" "뤀")
+(merge-rule "ë¤" "뤁")
+(merge-rule "뤂" "á„…á…®á‡")
+(merge-rule "뤃" "뤃")
+(merge-rule "뤄" "뤄~b")
+(merge-rule "뤅" "뤅")
+(merge-rule "뤆" "뤆")
+(merge-rule "뤇" "뤇")
+(merge-rule "뤈" "뤈")
+(merge-rule "뤉" "뤉")
+(merge-rule "뤊" "뤊")
+(merge-rule "뤋" "뤋")
+(merge-rule "뤌" "뤌")
+(merge-rule "ë¤" "뤍")
+(merge-rule "뤎" "뤎")
+(merge-rule "ë¤" "뤏")
+(merge-rule "ë¤" "뤐")
+(merge-rule "뤑" "뤑")
+(merge-rule "뤒" "뤒")
+(merge-rule "뤓" "뤓")
+(merge-rule "뤔" "뤔")
+(merge-rule "뤕" "뤕")
+(merge-rule "뤖" "뤖")
+(merge-rule "뤗" "뤗")
+(merge-rule "뤘" "뤘")
+(merge-rule "뤙" "뤙")
+(merge-rule "뤚" "뤚")
+(merge-rule "뤛" "뤛")
+(merge-rule "뤜" "뤜")
+(merge-rule "ë¤" "뤝")
+(merge-rule "뤞" "á„…á…¯á‡")
+(merge-rule "뤟" "뤟")
+(merge-rule "뤠" "뤠~b")
+(merge-rule "뤡" "뤡")
+(merge-rule "뤢" "뤢")
+(merge-rule "뤣" "뤣")
+(merge-rule "뤤" "뤤")
+(merge-rule "뤥" "뤥")
+(merge-rule "뤦" "뤦")
+(merge-rule "뤧" "뤧")
+(merge-rule "뤨" "뤨")
+(merge-rule "뤩" "뤩")
+(merge-rule "뤪" "뤪")
+(merge-rule "뤫" "뤫")
+(merge-rule "뤬" "뤬")
+(merge-rule "뤭" "뤭")
+(merge-rule "뤮" "뤮")
+(merge-rule "뤯" "뤯")
+(merge-rule "뤰" "뤰")
+(merge-rule "뤱" "뤱")
+(merge-rule "뤲" "뤲")
+(merge-rule "뤳" "뤳")
+(merge-rule "뤴" "뤴")
+(merge-rule "뤵" "뤵")
+(merge-rule "뤶" "뤶")
+(merge-rule "뤷" "뤷")
+(merge-rule "뤸" "뤸")
+(merge-rule "뤹" "뤹")
+(merge-rule "뤺" "á„…á…°á‡")
+(merge-rule "뤻" "뤻")
+(merge-rule "뤼" "뤼~b")
+(merge-rule "뤽" "뤽")
+(merge-rule "뤾" "뤾")
+(merge-rule "뤿" "뤿")
+(merge-rule "륀" "륀")
+(merge-rule "ë¥" "륁")
+(merge-rule "륂" "륂")
+(merge-rule "륃" "륃")
+(merge-rule "륄" "륄")
+(merge-rule "륅" "륅")
+(merge-rule "륆" "륆")
+(merge-rule "륇" "륇")
+(merge-rule "륈" "륈")
+(merge-rule "륉" "륉")
+(merge-rule "륊" "륊")
+(merge-rule "륋" "륋")
+(merge-rule "륌" "륌")
+(merge-rule "ë¥" "륍")
+(merge-rule "륎" "륎")
+(merge-rule "ë¥" "륏")
+(merge-rule "ë¥" "륐")
+(merge-rule "륑" "륑")
+(merge-rule "륒" "륒")
+(merge-rule "륓" "륓")
+(merge-rule "륔" "륔")
+(merge-rule "륕" "륕")
+(merge-rule "륖" "á„…á…±á‡")
+(merge-rule "륗" "륗")
+(merge-rule "류" "류~b")
+(merge-rule "륙" "륙")
+(merge-rule "륚" "륚")
+(merge-rule "륛" "륛")
+(merge-rule "륜" "륜")
+(merge-rule "ë¥" "륝")
+(merge-rule "륞" "륞")
+(merge-rule "륟" "륟")
+(merge-rule "률" "률")
+(merge-rule "륡" "륡")
+(merge-rule "륢" "륢")
+(merge-rule "륣" "륣")
+(merge-rule "륤" "륤")
+(merge-rule "륥" "륥")
+(merge-rule "륦" "륦")
+(merge-rule "륧" "륧")
+(merge-rule "륨" "륨")
+(merge-rule "륩" "륩")
+(merge-rule "륪" "륪")
+(merge-rule "륫" "륫")
+(merge-rule "륬" "륬")
+(merge-rule "륭" "륭")
+(merge-rule "륮" "륮")
+(merge-rule "륯" "륯")
+(merge-rule "륰" "륰")
+(merge-rule "륱" "륱")
+(merge-rule "륲" "á„…á…²á‡")
+(merge-rule "륳" "륳")
+(merge-rule "르" "르~b")
+(merge-rule "륵" "륵")
+(merge-rule "륶" "륶")
+(merge-rule "륷" "륷")
+(merge-rule "른" "른")
+(merge-rule "륹" "륹")
+(merge-rule "륺" "륺")
+(merge-rule "륻" "륻")
+(merge-rule "를" "를")
+(merge-rule "륽" "륽")
+(merge-rule "륾" "륾")
+(merge-rule "륿" "륿")
+(merge-rule "릀" "릀")
+(merge-rule "ë¦" "릁")
+(merge-rule "릂" "릂")
+(merge-rule "릃" "릃")
+(merge-rule "름" "름")
+(merge-rule "릅" "릅")
+(merge-rule "릆" "릆")
+(merge-rule "릇" "릇")
+(merge-rule "릈" "릈")
+(merge-rule "릉" "릉")
+(merge-rule "릊" "릊")
+(merge-rule "릋" "릋")
+(merge-rule "릌" "릌")
+(merge-rule "ë¦" "릍")
+(merge-rule "릎" "á„…á…³á‡")
+(merge-rule "ë¦" "릏")
+(merge-rule "ë¦" "á„…á…´~b")
+(merge-rule "릑" "릑")
+(merge-rule "릒" "릒")
+(merge-rule "릓" "릓")
+(merge-rule "릔" "릔")
+(merge-rule "릕" "릕")
+(merge-rule "릖" "릖")
+(merge-rule "릗" "릗")
+(merge-rule "릘" "릘")
+(merge-rule "릙" "릙")
+(merge-rule "릚" "릚")
+(merge-rule "릛" "릛")
+(merge-rule "릜" "릜")
+(merge-rule "ë¦" "릝")
+(merge-rule "릞" "릞")
+(merge-rule "릟" "릟")
+(merge-rule "릠" "릠")
+(merge-rule "릡" "릡")
+(merge-rule "릢" "릢")
+(merge-rule "릣" "릣")
+(merge-rule "릤" "릤")
+(merge-rule "릥" "릥")
+(merge-rule "릦" "릦")
+(merge-rule "릧" "릧")
+(merge-rule "릨" "릨")
+(merge-rule "릩" "릩")
+(merge-rule "릪" "á„…á…´á‡")
+(merge-rule "릫" "릫")
+(merge-rule "리" "리~b")
+(merge-rule "릭" "릭")
+(merge-rule "릮" "릮")
+(merge-rule "릯" "릯")
+(merge-rule "린" "린")
+(merge-rule "릱" "릱")
+(merge-rule "릲" "릲")
+(merge-rule "릳" "릳")
+(merge-rule "릴" "릴")
+(merge-rule "릵" "릵")
+(merge-rule "릶" "릶")
+(merge-rule "릷" "릷")
+(merge-rule "릸" "릸")
+(merge-rule "릹" "릹")
+(merge-rule "릺" "릺")
+(merge-rule "릻" "릻")
+(merge-rule "림" "림")
+(merge-rule "립" "립")
+(merge-rule "릾" "릾")
+(merge-rule "릿" "릿")
+(merge-rule "맀" "맀")
+(merge-rule "ë§" "링")
+(merge-rule "맂" "맂")
+(merge-rule "맃" "맃")
+(merge-rule "맄" "맄")
+(merge-rule "맅" "맅")
+(merge-rule "맆" "á„…á…µá‡")
+(merge-rule "맇" "맇")
+(merge-rule "마" "마~b")
+(merge-rule "막" "막")
+(merge-rule "맊" "맊")
+(merge-rule "맋" "맋")
+(merge-rule "만" "만")
+(merge-rule "ë§" "맍")
+(merge-rule "많" "많")
+(merge-rule "ë§" "맏")
+(merge-rule "ë§" "말")
+(merge-rule "맑" "맑")
+(merge-rule "맒" "맒")
+(merge-rule "맓" "맓")
+(merge-rule "맔" "맔")
+(merge-rule "맕" "맕")
+(merge-rule "맖" "맖")
+(merge-rule "맗" "맗")
+(merge-rule "맘" "맘")
+(merge-rule "맙" "맙")
+(merge-rule "맚" "맚")
+(merge-rule "맛" "맛")
+(merge-rule "맜" "맜")
+(merge-rule "ë§" "망")
+(merge-rule "맞" "맞")
+(merge-rule "맟" "맟")
+(merge-rule "맠" "맠")
+(merge-rule "맡" "맡")
+(merge-rule "맢" "마á‡")
+(merge-rule "맣" "맣")
+(merge-rule "매" "매~b")
+(merge-rule "맥" "맥")
+(merge-rule "맦" "맦")
+(merge-rule "맧" "맧")
+(merge-rule "맨" "맨")
+(merge-rule "맩" "맩")
+(merge-rule "맪" "맪")
+(merge-rule "맫" "맫")
+(merge-rule "맬" "맬")
+(merge-rule "맭" "맭")
+(merge-rule "맮" "맮")
+(merge-rule "맯" "맯")
+(merge-rule "맰" "맰")
+(merge-rule "맱" "맱")
+(merge-rule "맲" "맲")
+(merge-rule "맳" "맳")
+(merge-rule "맴" "맴")
+(merge-rule "맵" "맵")
+(merge-rule "맶" "맶")
+(merge-rule "맷" "맷")
+(merge-rule "맸" "맸")
+(merge-rule "맹" "맹")
+(merge-rule "맺" "맺")
+(merge-rule "맻" "맻")
+(merge-rule "맼" "맼")
+(merge-rule "맽" "맽")
+(merge-rule "맾" "매á‡")
+(merge-rule "맿" "맿")
+(merge-rule "먀" "먀~b")
+(merge-rule "ë¨" "먁")
+(merge-rule "먂" "먂")
+(merge-rule "먃" "먃")
+(merge-rule "먄" "먄")
+(merge-rule "먅" "먅")
+(merge-rule "먆" "먆")
+(merge-rule "먇" "먇")
+(merge-rule "먈" "먈")
+(merge-rule "먉" "먉")
+(merge-rule "먊" "먊")
+(merge-rule "먋" "먋")
+(merge-rule "먌" "먌")
+(merge-rule "ë¨" "먍")
+(merge-rule "먎" "먎")
+(merge-rule "ë¨" "먏")
+(merge-rule "ë¨" "먐")
+(merge-rule "먑" "먑")
+(merge-rule "먒" "먒")
+(merge-rule "먓" "먓")
+(merge-rule "먔" "먔")
+(merge-rule "먕" "먕")
+(merge-rule "먖" "먖")
+(merge-rule "먗" "먗")
+(merge-rule "먘" "먘")
+(merge-rule "먙" "먙")
+(merge-rule "먚" "먀á‡")
+(merge-rule "먛" "먛")
+(merge-rule "먜" "먜~b")
+(merge-rule "ë¨" "먝")
+(merge-rule "먞" "먞")
+(merge-rule "먟" "먟")
+(merge-rule "먠" "먠")
+(merge-rule "먡" "먡")
+(merge-rule "먢" "먢")
+(merge-rule "먣" "먣")
+(merge-rule "먤" "먤")
+(merge-rule "먥" "먥")
+(merge-rule "먦" "먦")
+(merge-rule "먧" "먧")
+(merge-rule "먨" "먨")
+(merge-rule "먩" "먩")
+(merge-rule "먪" "먪")
+(merge-rule "먫" "먫")
+(merge-rule "먬" "먬")
+(merge-rule "먭" "먭")
+(merge-rule "먮" "먮")
+(merge-rule "먯" "먯")
+(merge-rule "먰" "먰")
+(merge-rule "먱" "먱")
+(merge-rule "먲" "먲")
+(merge-rule "먳" "먳")
+(merge-rule "먴" "먴")
+(merge-rule "먵" "먵")
+(merge-rule "먶" "먜á‡")
+(merge-rule "먷" "먷")
+(merge-rule "머" "머~b")
+(merge-rule "먹" "먹")
+(merge-rule "먺" "먺")
+(merge-rule "먻" "먻")
+(merge-rule "먼" "먼")
+(merge-rule "먽" "먽")
+(merge-rule "먾" "먾")
+(merge-rule "먿" "먿")
+(merge-rule "멀" "멀")
+(merge-rule "ë©" "멁")
+(merge-rule "멂" "멂")
+(merge-rule "멃" "멃")
+(merge-rule "멄" "멄")
+(merge-rule "멅" "멅")
+(merge-rule "멆" "멆")
+(merge-rule "멇" "멇")
+(merge-rule "멈" "멈")
+(merge-rule "멉" "멉")
+(merge-rule "멊" "멊")
+(merge-rule "멋" "멋")
+(merge-rule "멌" "멌")
+(merge-rule "ë©" "멍")
+(merge-rule "멎" "멎")
+(merge-rule "ë©" "멏")
+(merge-rule "ë©" "멐")
+(merge-rule "멑" "멑")
+(merge-rule "ë©’" "머á‡")
+(merge-rule "멓" "멓")
+(merge-rule "메" "메~b")
+(merge-rule "멕" "멕")
+(merge-rule "멖" "멖")
+(merge-rule "멗" "멗")
+(merge-rule "멘" "멘")
+(merge-rule "멙" "멙")
+(merge-rule "멚" "멚")
+(merge-rule "멛" "멛")
+(merge-rule "멜" "멜")
+(merge-rule "ë©" "멝")
+(merge-rule "멞" "멞")
+(merge-rule "멟" "멟")
+(merge-rule "멠" "멠")
+(merge-rule "멡" "멡")
+(merge-rule "멢" "멢")
+(merge-rule "멣" "멣")
+(merge-rule "멤" "멤")
+(merge-rule "멥" "멥")
+(merge-rule "멦" "멦")
+(merge-rule "멧" "멧")
+(merge-rule "멨" "멨")
+(merge-rule "멩" "멩")
+(merge-rule "멪" "멪")
+(merge-rule "멫" "멫")
+(merge-rule "멬" "멬")
+(merge-rule "멭" "멭")
+(merge-rule "ë©®" "메á‡")
+(merge-rule "멯" "멯")
+(merge-rule "며" "며~b")
+(merge-rule "멱" "멱")
+(merge-rule "멲" "멲")
+(merge-rule "멳" "멳")
+(merge-rule "면" "면")
+(merge-rule "멵" "멵")
+(merge-rule "멶" "멶")
+(merge-rule "멷" "멷")
+(merge-rule "멸" "멸")
+(merge-rule "멹" "멹")
+(merge-rule "멺" "멺")
+(merge-rule "멻" "멻")
+(merge-rule "멼" "멼")
+(merge-rule "멽" "멽")
+(merge-rule "멾" "멾")
+(merge-rule "멿" "멿")
+(merge-rule "몀" "몀")
+(merge-rule "ëª" "몁")
+(merge-rule "몂" "몂")
+(merge-rule "몃" "몃")
+(merge-rule "몄" "몄")
+(merge-rule "명" "명")
+(merge-rule "몆" "몆")
+(merge-rule "몇" "몇")
+(merge-rule "몈" "몈")
+(merge-rule "몉" "몉")
+(merge-rule "몊" "며á‡")
+(merge-rule "몋" "몋")
+(merge-rule "몌" "몌~b")
+(merge-rule "ëª" "몍")
+(merge-rule "몎" "몎")
+(merge-rule "ëª" "몏")
+(merge-rule "ëª" "몐")
+(merge-rule "몑" "몑")
+(merge-rule "몒" "몒")
+(merge-rule "몓" "몓")
+(merge-rule "몔" "몔")
+(merge-rule "몕" "몕")
+(merge-rule "몖" "몖")
+(merge-rule "몗" "몗")
+(merge-rule "몘" "몘")
+(merge-rule "몙" "몙")
+(merge-rule "몚" "몚")
+(merge-rule "몛" "몛")
+(merge-rule "몜" "몜")
+(merge-rule "ëª" "몝")
+(merge-rule "몞" "몞")
+(merge-rule "몟" "몟")
+(merge-rule "몠" "몠")
+(merge-rule "몡" "몡")
+(merge-rule "몢" "몢")
+(merge-rule "몣" "몣")
+(merge-rule "몤" "몤")
+(merge-rule "몥" "몥")
+(merge-rule "몦" "몌á‡")
+(merge-rule "몧" "몧")
+(merge-rule "모" "모~b")
+(merge-rule "목" "목")
+(merge-rule "몪" "몪")
+(merge-rule "몫" "몫")
+(merge-rule "몬" "몬")
+(merge-rule "몭" "몭")
+(merge-rule "몮" "몮")
+(merge-rule "몯" "몯")
+(merge-rule "몰" "몰")
+(merge-rule "몱" "몱")
+(merge-rule "몲" "몲")
+(merge-rule "몳" "몳")
+(merge-rule "몴" "몴")
+(merge-rule "몵" "몵")
+(merge-rule "몶" "몶")
+(merge-rule "몷" "몷")
+(merge-rule "몸" "몸")
+(merge-rule "몹" "몹")
+(merge-rule "몺" "몺")
+(merge-rule "못" "못")
+(merge-rule "몼" "몼")
+(merge-rule "몽" "몽")
+(merge-rule "몾" "몾")
+(merge-rule "몿" "몿")
+(merge-rule "뫀" "뫀")
+(merge-rule "ë«" "뫁")
+(merge-rule "ë«‚" "모á‡")
+(merge-rule "뫃" "뫃")
+(merge-rule "뫄" "뫄~b")
+(merge-rule "뫅" "뫅")
+(merge-rule "뫆" "뫆")
+(merge-rule "뫇" "뫇")
+(merge-rule "뫈" "뫈")
+(merge-rule "뫉" "뫉")
+(merge-rule "뫊" "뫊")
+(merge-rule "뫋" "뫋")
+(merge-rule "뫌" "뫌")
+(merge-rule "ë«" "뫍")
+(merge-rule "뫎" "뫎")
+(merge-rule "ë«" "뫏")
+(merge-rule "ë«" "뫐")
+(merge-rule "뫑" "뫑")
+(merge-rule "뫒" "뫒")
+(merge-rule "뫓" "뫓")
+(merge-rule "뫔" "뫔")
+(merge-rule "뫕" "뫕")
+(merge-rule "뫖" "뫖")
+(merge-rule "뫗" "뫗")
+(merge-rule "뫘" "뫘")
+(merge-rule "뫙" "뫙")
+(merge-rule "뫚" "뫚")
+(merge-rule "뫛" "뫛")
+(merge-rule "뫜" "뫜")
+(merge-rule "ë«" "뫝")
+(merge-rule "ë«ž" "뫄á‡")
+(merge-rule "뫟" "뫟")
+(merge-rule "뫠" "뫠~b")
+(merge-rule "뫡" "뫡")
+(merge-rule "뫢" "뫢")
+(merge-rule "뫣" "뫣")
+(merge-rule "뫤" "뫤")
+(merge-rule "뫥" "뫥")
+(merge-rule "뫦" "뫦")
+(merge-rule "뫧" "뫧")
+(merge-rule "뫨" "뫨")
+(merge-rule "뫩" "뫩")
+(merge-rule "뫪" "뫪")
+(merge-rule "뫫" "뫫")
+(merge-rule "뫬" "뫬")
+(merge-rule "뫭" "뫭")
+(merge-rule "뫮" "뫮")
+(merge-rule "뫯" "뫯")
+(merge-rule "뫰" "뫰")
+(merge-rule "뫱" "뫱")
+(merge-rule "뫲" "뫲")
+(merge-rule "뫳" "뫳")
+(merge-rule "뫴" "뫴")
+(merge-rule "뫵" "뫵")
+(merge-rule "뫶" "뫶")
+(merge-rule "뫷" "뫷")
+(merge-rule "뫸" "뫸")
+(merge-rule "뫹" "뫹")
+(merge-rule "뫺" "뫠á‡")
+(merge-rule "뫻" "뫻")
+(merge-rule "뫼" "뫼~b")
+(merge-rule "뫽" "뫽")
+(merge-rule "뫾" "뫾")
+(merge-rule "뫿" "뫿")
+(merge-rule "묀" "묀")
+(merge-rule "ë¬" "묁")
+(merge-rule "묂" "묂")
+(merge-rule "묃" "묃")
+(merge-rule "묄" "묄")
+(merge-rule "묅" "묅")
+(merge-rule "묆" "묆")
+(merge-rule "묇" "묇")
+(merge-rule "묈" "묈")
+(merge-rule "묉" "묉")
+(merge-rule "묊" "묊")
+(merge-rule "묋" "묋")
+(merge-rule "묌" "묌")
+(merge-rule "ë¬" "묍")
+(merge-rule "묎" "묎")
+(merge-rule "ë¬" "묏")
+(merge-rule "ë¬" "묐")
+(merge-rule "묑" "묑")
+(merge-rule "묒" "묒")
+(merge-rule "묓" "묓")
+(merge-rule "묔" "묔")
+(merge-rule "묕" "묕")
+(merge-rule "묖" "뫼á‡")
+(merge-rule "묗" "묗")
+(merge-rule "묘" "묘~b")
+(merge-rule "묙" "묙")
+(merge-rule "묚" "묚")
+(merge-rule "묛" "묛")
+(merge-rule "묜" "묜")
+(merge-rule "ë¬" "묝")
+(merge-rule "묞" "묞")
+(merge-rule "묟" "묟")
+(merge-rule "묠" "묠")
+(merge-rule "묡" "묡")
+(merge-rule "묢" "묢")
+(merge-rule "묣" "묣")
+(merge-rule "묤" "묤")
+(merge-rule "묥" "묥")
+(merge-rule "묦" "묦")
+(merge-rule "묧" "묧")
+(merge-rule "묨" "묨")
+(merge-rule "묩" "묩")
+(merge-rule "묪" "묪")
+(merge-rule "묫" "묫")
+(merge-rule "묬" "묬")
+(merge-rule "묭" "묭")
+(merge-rule "묮" "묮")
+(merge-rule "묯" "묯")
+(merge-rule "묰" "묰")
+(merge-rule "묱" "묱")
+(merge-rule "묲" "묘á‡")
+(merge-rule "묳" "묳")
+(merge-rule "무" "무~b")
+(merge-rule "묵" "묵")
+(merge-rule "묶" "묶")
+(merge-rule "묷" "묷")
+(merge-rule "문" "문")
+(merge-rule "묹" "묹")
+(merge-rule "묺" "묺")
+(merge-rule "묻" "묻")
+(merge-rule "물" "물")
+(merge-rule "묽" "묽")
+(merge-rule "묾" "묾")
+(merge-rule "묿" "묿")
+(merge-rule "뭀" "뭀")
+(merge-rule "ë­" "뭁")
+(merge-rule "뭂" "뭂")
+(merge-rule "뭃" "뭃")
+(merge-rule "뭄" "뭄")
+(merge-rule "뭅" "뭅")
+(merge-rule "뭆" "뭆")
+(merge-rule "뭇" "뭇")
+(merge-rule "뭈" "뭈")
+(merge-rule "뭉" "뭉")
+(merge-rule "뭊" "뭊")
+(merge-rule "뭋" "뭋")
+(merge-rule "뭌" "뭌")
+(merge-rule "ë­" "뭍")
+(merge-rule "ë­Ž" "무á‡")
+(merge-rule "ë­" "뭏")
+(merge-rule "ë­" "뭐~b")
+(merge-rule "뭑" "뭑")
+(merge-rule "뭒" "뭒")
+(merge-rule "뭓" "뭓")
+(merge-rule "뭔" "뭔")
+(merge-rule "뭕" "뭕")
+(merge-rule "뭖" "뭖")
+(merge-rule "뭗" "뭗")
+(merge-rule "뭘" "뭘")
+(merge-rule "뭙" "뭙")
+(merge-rule "뭚" "뭚")
+(merge-rule "뭛" "뭛")
+(merge-rule "뭜" "뭜")
+(merge-rule "ë­" "뭝")
+(merge-rule "뭞" "뭞")
+(merge-rule "뭟" "뭟")
+(merge-rule "뭠" "뭠")
+(merge-rule "뭡" "뭡")
+(merge-rule "뭢" "뭢")
+(merge-rule "뭣" "뭣")
+(merge-rule "뭤" "뭤")
+(merge-rule "뭥" "뭥")
+(merge-rule "뭦" "뭦")
+(merge-rule "뭧" "뭧")
+(merge-rule "뭨" "뭨")
+(merge-rule "뭩" "뭩")
+(merge-rule "ë­ª" "뭐á‡")
+(merge-rule "뭫" "뭫")
+(merge-rule "뭬" "뭬~b")
+(merge-rule "뭭" "뭭")
+(merge-rule "뭮" "뭮")
+(merge-rule "뭯" "뭯")
+(merge-rule "뭰" "뭰")
+(merge-rule "뭱" "뭱")
+(merge-rule "뭲" "뭲")
+(merge-rule "뭳" "뭳")
+(merge-rule "뭴" "뭴")
+(merge-rule "뭵" "뭵")
+(merge-rule "뭶" "뭶")
+(merge-rule "뭷" "뭷")
+(merge-rule "뭸" "뭸")
+(merge-rule "뭹" "뭹")
+(merge-rule "뭺" "뭺")
+(merge-rule "뭻" "뭻")
+(merge-rule "뭼" "뭼")
+(merge-rule "뭽" "뭽")
+(merge-rule "뭾" "뭾")
+(merge-rule "뭿" "뭿")
+(merge-rule "뮀" "뮀")
+(merge-rule "ë®" "뮁")
+(merge-rule "뮂" "뮂")
+(merge-rule "뮃" "뮃")
+(merge-rule "뮄" "뮄")
+(merge-rule "뮅" "뮅")
+(merge-rule "뮆" "뭬á‡")
+(merge-rule "뮇" "뮇")
+(merge-rule "뮈" "뮈~b")
+(merge-rule "뮉" "뮉")
+(merge-rule "뮊" "뮊")
+(merge-rule "뮋" "뮋")
+(merge-rule "뮌" "뮌")
+(merge-rule "ë®" "뮍")
+(merge-rule "뮎" "뮎")
+(merge-rule "ë®" "뮏")
+(merge-rule "ë®" "뮐")
+(merge-rule "뮑" "뮑")
+(merge-rule "뮒" "뮒")
+(merge-rule "뮓" "뮓")
+(merge-rule "뮔" "뮔")
+(merge-rule "뮕" "뮕")
+(merge-rule "뮖" "뮖")
+(merge-rule "뮗" "뮗")
+(merge-rule "뮘" "뮘")
+(merge-rule "뮙" "뮙")
+(merge-rule "뮚" "뮚")
+(merge-rule "뮛" "뮛")
+(merge-rule "뮜" "뮜")
+(merge-rule "ë®" "뮝")
+(merge-rule "뮞" "뮞")
+(merge-rule "뮟" "뮟")
+(merge-rule "뮠" "뮠")
+(merge-rule "뮡" "뮡")
+(merge-rule "뮢" "뮈á‡")
+(merge-rule "뮣" "뮣")
+(merge-rule "뮤" "뮤~b")
+(merge-rule "뮥" "뮥")
+(merge-rule "뮦" "뮦")
+(merge-rule "뮧" "뮧")
+(merge-rule "뮨" "뮨")
+(merge-rule "뮩" "뮩")
+(merge-rule "뮪" "뮪")
+(merge-rule "뮫" "뮫")
+(merge-rule "뮬" "뮬")
+(merge-rule "뮭" "뮭")
+(merge-rule "뮮" "뮮")
+(merge-rule "뮯" "뮯")
+(merge-rule "뮰" "뮰")
+(merge-rule "뮱" "뮱")
+(merge-rule "뮲" "뮲")
+(merge-rule "뮳" "뮳")
+(merge-rule "뮴" "뮴")
+(merge-rule "뮵" "뮵")
+(merge-rule "뮶" "뮶")
+(merge-rule "뮷" "뮷")
+(merge-rule "뮸" "뮸")
+(merge-rule "뮹" "뮹")
+(merge-rule "뮺" "뮺")
+(merge-rule "뮻" "뮻")
+(merge-rule "뮼" "뮼")
+(merge-rule "뮽" "뮽")
+(merge-rule "뮾" "뮤á‡")
+(merge-rule "뮿" "뮿")
+(merge-rule "므" "므~b")
+(merge-rule "ë¯" "믁")
+(merge-rule "믂" "믂")
+(merge-rule "믃" "믃")
+(merge-rule "믄" "믄")
+(merge-rule "믅" "믅")
+(merge-rule "믆" "믆")
+(merge-rule "믇" "믇")
+(merge-rule "믈" "믈")
+(merge-rule "믉" "믉")
+(merge-rule "믊" "믊")
+(merge-rule "믋" "믋")
+(merge-rule "믌" "믌")
+(merge-rule "ë¯" "믍")
+(merge-rule "믎" "믎")
+(merge-rule "ë¯" "믏")
+(merge-rule "ë¯" "믐")
+(merge-rule "믑" "믑")
+(merge-rule "믒" "믒")
+(merge-rule "믓" "믓")
+(merge-rule "믔" "믔")
+(merge-rule "믕" "믕")
+(merge-rule "믖" "믖")
+(merge-rule "믗" "믗")
+(merge-rule "믘" "믘")
+(merge-rule "믙" "믙")
+(merge-rule "믚" "므á‡")
+(merge-rule "믛" "믛")
+(merge-rule "믜" "믜~b")
+(merge-rule "ë¯" "믝")
+(merge-rule "믞" "믞")
+(merge-rule "믟" "믟")
+(merge-rule "믠" "믠")
+(merge-rule "믡" "믡")
+(merge-rule "믢" "믢")
+(merge-rule "믣" "믣")
+(merge-rule "믤" "믤")
+(merge-rule "믥" "믥")
+(merge-rule "믦" "믦")
+(merge-rule "믧" "믧")
+(merge-rule "믨" "믨")
+(merge-rule "믩" "믩")
+(merge-rule "믪" "믪")
+(merge-rule "믫" "믫")
+(merge-rule "믬" "믬")
+(merge-rule "믭" "믭")
+(merge-rule "믮" "믮")
+(merge-rule "믯" "믯")
+(merge-rule "믰" "믰")
+(merge-rule "믱" "믱")
+(merge-rule "믲" "믲")
+(merge-rule "믳" "믳")
+(merge-rule "믴" "믴")
+(merge-rule "믵" "믵")
+(merge-rule "믶" "믜á‡")
+(merge-rule "믷" "믷")
+(merge-rule "미" "미~b")
+(merge-rule "믹" "믹")
+(merge-rule "믺" "믺")
+(merge-rule "믻" "믻")
+(merge-rule "민" "민")
+(merge-rule "믽" "믽")
+(merge-rule "믾" "믾")
+(merge-rule "믿" "믿")
+(merge-rule "밀" "밀")
+(merge-rule "ë°" "밁")
+(merge-rule "밂" "밂")
+(merge-rule "밃" "밃")
+(merge-rule "밄" "밄")
+(merge-rule "밅" "밅")
+(merge-rule "밆" "밆")
+(merge-rule "밇" "밇")
+(merge-rule "밈" "밈")
+(merge-rule "밉" "밉")
+(merge-rule "밊" "밊")
+(merge-rule "밋" "밋")
+(merge-rule "밌" "밌")
+(merge-rule "ë°" "밍")
+(merge-rule "밎" "밎")
+(merge-rule "ë°" "및")
+(merge-rule "ë°" "밐")
+(merge-rule "밑" "밑")
+(merge-rule "ë°’" "미á‡")
+(merge-rule "밓" "밓")
+(merge-rule "바" "바~b")
+(merge-rule "박" "박")
+(merge-rule "밖" "밖")
+(merge-rule "밗" "밗")
+(merge-rule "반" "반")
+(merge-rule "밙" "밙")
+(merge-rule "밚" "밚")
+(merge-rule "받" "받")
+(merge-rule "발" "발")
+(merge-rule "ë°" "밝")
+(merge-rule "밞" "밞")
+(merge-rule "밟" "밟")
+(merge-rule "밠" "밠")
+(merge-rule "밡" "밡")
+(merge-rule "밢" "밢")
+(merge-rule "밣" "밣")
+(merge-rule "밤" "밤")
+(merge-rule "밥" "밥")
+(merge-rule "밦" "밦")
+(merge-rule "밧" "밧")
+(merge-rule "밨" "밨")
+(merge-rule "방" "방")
+(merge-rule "밪" "밪")
+(merge-rule "밫" "밫")
+(merge-rule "밬" "밬")
+(merge-rule "밭" "밭")
+(merge-rule "ë°®" "바á‡")
+(merge-rule "밯" "밯")
+(merge-rule "배" "배~b")
+(merge-rule "백" "백")
+(merge-rule "밲" "밲")
+(merge-rule "밳" "밳")
+(merge-rule "밴" "밴")
+(merge-rule "밵" "밵")
+(merge-rule "밶" "밶")
+(merge-rule "밷" "밷")
+(merge-rule "밸" "밸")
+(merge-rule "밹" "밹")
+(merge-rule "밺" "밺")
+(merge-rule "밻" "밻")
+(merge-rule "밼" "밼")
+(merge-rule "밽" "밽")
+(merge-rule "밾" "밾")
+(merge-rule "밿" "밿")
+(merge-rule "뱀" "뱀")
+(merge-rule "ë±" "뱁")
+(merge-rule "뱂" "뱂")
+(merge-rule "뱃" "뱃")
+(merge-rule "뱄" "뱄")
+(merge-rule "뱅" "뱅")
+(merge-rule "뱆" "뱆")
+(merge-rule "뱇" "뱇")
+(merge-rule "뱈" "뱈")
+(merge-rule "뱉" "뱉")
+(merge-rule "뱊" "배á‡")
+(merge-rule "뱋" "뱋")
+(merge-rule "뱌" "뱌~b")
+(merge-rule "ë±" "뱍")
+(merge-rule "뱎" "뱎")
+(merge-rule "ë±" "뱏")
+(merge-rule "ë±" "뱐")
+(merge-rule "뱑" "뱑")
+(merge-rule "뱒" "뱒")
+(merge-rule "뱓" "뱓")
+(merge-rule "뱔" "뱔")
+(merge-rule "뱕" "뱕")
+(merge-rule "뱖" "뱖")
+(merge-rule "뱗" "뱗")
+(merge-rule "뱘" "뱘")
+(merge-rule "뱙" "뱙")
+(merge-rule "뱚" "뱚")
+(merge-rule "뱛" "뱛")
+(merge-rule "뱜" "뱜")
+(merge-rule "ë±" "뱝")
+(merge-rule "뱞" "뱞")
+(merge-rule "뱟" "뱟")
+(merge-rule "뱠" "뱠")
+(merge-rule "뱡" "뱡")
+(merge-rule "뱢" "뱢")
+(merge-rule "뱣" "뱣")
+(merge-rule "뱤" "뱤")
+(merge-rule "뱥" "뱥")
+(merge-rule "뱦" "뱌á‡")
+(merge-rule "뱧" "뱧")
+(merge-rule "뱨" "뱨~b")
+(merge-rule "뱩" "뱩")
+(merge-rule "뱪" "뱪")
+(merge-rule "뱫" "뱫")
+(merge-rule "뱬" "뱬")
+(merge-rule "뱭" "뱭")
+(merge-rule "뱮" "뱮")
+(merge-rule "뱯" "뱯")
+(merge-rule "뱰" "뱰")
+(merge-rule "뱱" "뱱")
+(merge-rule "뱲" "뱲")
+(merge-rule "뱳" "뱳")
+(merge-rule "뱴" "뱴")
+(merge-rule "뱵" "뱵")
+(merge-rule "뱶" "뱶")
+(merge-rule "뱷" "뱷")
+(merge-rule "뱸" "뱸")
+(merge-rule "뱹" "뱹")
+(merge-rule "뱺" "뱺")
+(merge-rule "뱻" "뱻")
+(merge-rule "뱼" "뱼")
+(merge-rule "뱽" "뱽")
+(merge-rule "뱾" "뱾")
+(merge-rule "뱿" "뱿")
+(merge-rule "벀" "벀")
+(merge-rule "ë²" "벁")
+(merge-rule "벂" "뱨á‡")
+(merge-rule "벃" "벃")
+(merge-rule "버" "버~b")
+(merge-rule "벅" "벅")
+(merge-rule "벆" "벆")
+(merge-rule "벇" "벇")
+(merge-rule "번" "번")
+(merge-rule "벉" "벉")
+(merge-rule "벊" "벊")
+(merge-rule "벋" "벋")
+(merge-rule "벌" "벌")
+(merge-rule "ë²" "벍")
+(merge-rule "벎" "벎")
+(merge-rule "ë²" "벏")
+(merge-rule "ë²" "벐")
+(merge-rule "벑" "벑")
+(merge-rule "벒" "벒")
+(merge-rule "벓" "벓")
+(merge-rule "범" "범")
+(merge-rule "법" "법")
+(merge-rule "벖" "벖")
+(merge-rule "벗" "벗")
+(merge-rule "벘" "벘")
+(merge-rule "벙" "벙")
+(merge-rule "벚" "벚")
+(merge-rule "벛" "벛")
+(merge-rule "벜" "벜")
+(merge-rule "ë²" "벝")
+(merge-rule "벞" "버á‡")
+(merge-rule "벟" "벟")
+(merge-rule "베" "베~b")
+(merge-rule "벡" "벡")
+(merge-rule "벢" "벢")
+(merge-rule "벣" "벣")
+(merge-rule "벤" "벤")
+(merge-rule "벥" "벥")
+(merge-rule "벦" "벦")
+(merge-rule "벧" "벧")
+(merge-rule "벨" "벨")
+(merge-rule "벩" "벩")
+(merge-rule "벪" "벪")
+(merge-rule "벫" "벫")
+(merge-rule "벬" "벬")
+(merge-rule "벭" "벭")
+(merge-rule "벮" "벮")
+(merge-rule "벯" "벯")
+(merge-rule "벰" "벰")
+(merge-rule "벱" "벱")
+(merge-rule "벲" "벲")
+(merge-rule "벳" "벳")
+(merge-rule "벴" "벴")
+(merge-rule "벵" "벵")
+(merge-rule "벶" "벶")
+(merge-rule "벷" "벷")
+(merge-rule "벸" "벸")
+(merge-rule "벹" "벹")
+(merge-rule "벺" "베á‡")
+(merge-rule "벻" "벻")
+(merge-rule "벼" "벼~b")
+(merge-rule "벽" "벽")
+(merge-rule "벾" "벾")
+(merge-rule "벿" "벿")
+(merge-rule "변" "변")
+(merge-rule "ë³" "볁")
+(merge-rule "볂" "볂")
+(merge-rule "볃" "볃")
+(merge-rule "별" "별")
+(merge-rule "볅" "볅")
+(merge-rule "볆" "볆")
+(merge-rule "볇" "볇")
+(merge-rule "볈" "볈")
+(merge-rule "볉" "볉")
+(merge-rule "볊" "볊")
+(merge-rule "볋" "볋")
+(merge-rule "볌" "볌")
+(merge-rule "ë³" "볍")
+(merge-rule "볎" "볎")
+(merge-rule "ë³" "볏")
+(merge-rule "ë³" "볐")
+(merge-rule "병" "병")
+(merge-rule "볒" "볒")
+(merge-rule "볓" "볓")
+(merge-rule "볔" "볔")
+(merge-rule "볕" "볕")
+(merge-rule "ë³–" "벼á‡")
+(merge-rule "볗" "볗")
+(merge-rule "볘" "볘~b")
+(merge-rule "볙" "볙")
+(merge-rule "볚" "볚")
+(merge-rule "볛" "볛")
+(merge-rule "볜" "볜")
+(merge-rule "ë³" "볝")
+(merge-rule "볞" "볞")
+(merge-rule "볟" "볟")
+(merge-rule "볠" "볠")
+(merge-rule "볡" "볡")
+(merge-rule "볢" "볢")
+(merge-rule "볣" "볣")
+(merge-rule "볤" "볤")
+(merge-rule "볥" "볥")
+(merge-rule "볦" "볦")
+(merge-rule "볧" "볧")
+(merge-rule "볨" "볨")
+(merge-rule "볩" "볩")
+(merge-rule "볪" "볪")
+(merge-rule "볫" "볫")
+(merge-rule "볬" "볬")
+(merge-rule "볭" "볭")
+(merge-rule "볮" "볮")
+(merge-rule "볯" "볯")
+(merge-rule "볰" "볰")
+(merge-rule "볱" "볱")
+(merge-rule "ë³²" "볘á‡")
+(merge-rule "볳" "볳")
+(merge-rule "보" "보~b")
+(merge-rule "복" "복")
+(merge-rule "볶" "볶")
+(merge-rule "볷" "볷")
+(merge-rule "본" "본")
+(merge-rule "볹" "볹")
+(merge-rule "볺" "볺")
+(merge-rule "볻" "볻")
+(merge-rule "볼" "볼")
+(merge-rule "볽" "볽")
+(merge-rule "볾" "볾")
+(merge-rule "볿" "볿")
+(merge-rule "봀" "봀")
+(merge-rule "ë´" "봁")
+(merge-rule "봂" "봂")
+(merge-rule "봃" "봃")
+(merge-rule "봄" "봄")
+(merge-rule "봅" "봅")
+(merge-rule "봆" "봆")
+(merge-rule "봇" "봇")
+(merge-rule "봈" "봈")
+(merge-rule "봉" "봉")
+(merge-rule "봊" "봊")
+(merge-rule "봋" "봋")
+(merge-rule "봌" "봌")
+(merge-rule "ë´" "봍")
+(merge-rule "ë´Ž" "보á‡")
+(merge-rule "ë´" "봏")
+(merge-rule "ë´" "봐~b")
+(merge-rule "봑" "봑")
+(merge-rule "봒" "봒")
+(merge-rule "봓" "봓")
+(merge-rule "봔" "봔")
+(merge-rule "봕" "봕")
+(merge-rule "봖" "봖")
+(merge-rule "봗" "봗")
+(merge-rule "봘" "봘")
+(merge-rule "봙" "봙")
+(merge-rule "봚" "봚")
+(merge-rule "봛" "봛")
+(merge-rule "봜" "봜")
+(merge-rule "ë´" "봝")
+(merge-rule "봞" "봞")
+(merge-rule "봟" "봟")
+(merge-rule "봠" "봠")
+(merge-rule "봡" "봡")
+(merge-rule "봢" "봢")
+(merge-rule "봣" "봣")
+(merge-rule "봤" "봤")
+(merge-rule "봥" "봥")
+(merge-rule "봦" "봦")
+(merge-rule "봧" "봧")
+(merge-rule "봨" "봨")
+(merge-rule "봩" "봩")
+(merge-rule "ë´ª" "봐á‡")
+(merge-rule "봫" "봫")
+(merge-rule "봬" "봬~b")
+(merge-rule "봭" "봭")
+(merge-rule "봮" "봮")
+(merge-rule "봯" "봯")
+(merge-rule "봰" "봰")
+(merge-rule "봱" "봱")
+(merge-rule "봲" "봲")
+(merge-rule "봳" "봳")
+(merge-rule "봴" "봴")
+(merge-rule "봵" "봵")
+(merge-rule "봶" "봶")
+(merge-rule "봷" "봷")
+(merge-rule "봸" "봸")
+(merge-rule "봹" "봹")
+(merge-rule "봺" "봺")
+(merge-rule "봻" "봻")
+(merge-rule "봼" "봼")
+(merge-rule "봽" "봽")
+(merge-rule "봾" "봾")
+(merge-rule "봿" "봿")
+(merge-rule "뵀" "뵀")
+(merge-rule "ëµ" "뵁")
+(merge-rule "뵂" "뵂")
+(merge-rule "뵃" "뵃")
+(merge-rule "뵄" "뵄")
+(merge-rule "뵅" "뵅")
+(merge-rule "뵆" "봬á‡")
+(merge-rule "뵇" "뵇")
+(merge-rule "뵈" "뵈~b")
+(merge-rule "뵉" "뵉")
+(merge-rule "뵊" "뵊")
+(merge-rule "뵋" "뵋")
+(merge-rule "뵌" "뵌")
+(merge-rule "ëµ" "뵍")
+(merge-rule "뵎" "뵎")
+(merge-rule "ëµ" "뵏")
+(merge-rule "ëµ" "뵐")
+(merge-rule "뵑" "뵑")
+(merge-rule "뵒" "뵒")
+(merge-rule "뵓" "뵓")
+(merge-rule "뵔" "뵔")
+(merge-rule "뵕" "뵕")
+(merge-rule "뵖" "뵖")
+(merge-rule "뵗" "뵗")
+(merge-rule "뵘" "뵘")
+(merge-rule "뵙" "뵙")
+(merge-rule "뵚" "뵚")
+(merge-rule "뵛" "뵛")
+(merge-rule "뵜" "뵜")
+(merge-rule "ëµ" "뵝")
+(merge-rule "뵞" "뵞")
+(merge-rule "뵟" "뵟")
+(merge-rule "뵠" "뵠")
+(merge-rule "뵡" "뵡")
+(merge-rule "ëµ¢" "뵈á‡")
+(merge-rule "뵣" "뵣")
+(merge-rule "뵤" "뵤~b")
+(merge-rule "뵥" "뵥")
+(merge-rule "뵦" "뵦")
+(merge-rule "뵧" "뵧")
+(merge-rule "뵨" "뵨")
+(merge-rule "뵩" "뵩")
+(merge-rule "뵪" "뵪")
+(merge-rule "뵫" "뵫")
+(merge-rule "뵬" "뵬")
+(merge-rule "뵭" "뵭")
+(merge-rule "뵮" "뵮")
+(merge-rule "뵯" "뵯")
+(merge-rule "뵰" "뵰")
+(merge-rule "뵱" "뵱")
+(merge-rule "뵲" "뵲")
+(merge-rule "뵳" "뵳")
+(merge-rule "뵴" "뵴")
+(merge-rule "뵵" "뵵")
+(merge-rule "뵶" "뵶")
+(merge-rule "뵷" "뵷")
+(merge-rule "뵸" "뵸")
+(merge-rule "뵹" "뵹")
+(merge-rule "뵺" "뵺")
+(merge-rule "뵻" "뵻")
+(merge-rule "뵼" "뵼")
+(merge-rule "뵽" "뵽")
+(merge-rule "ëµ¾" "뵤á‡")
+(merge-rule "뵿" "뵿")
+(merge-rule "부" "부~b")
+(merge-rule "ë¶" "북")
+(merge-rule "붂" "붂")
+(merge-rule "붃" "붃")
+(merge-rule "분" "분")
+(merge-rule "붅" "붅")
+(merge-rule "붆" "붆")
+(merge-rule "붇" "붇")
+(merge-rule "불" "불")
+(merge-rule "붉" "붉")
+(merge-rule "붊" "붊")
+(merge-rule "붋" "붋")
+(merge-rule "붌" "붌")
+(merge-rule "ë¶" "붍")
+(merge-rule "붎" "붎")
+(merge-rule "ë¶" "붏")
+(merge-rule "ë¶" "붐")
+(merge-rule "붑" "붑")
+(merge-rule "붒" "붒")
+(merge-rule "붓" "붓")
+(merge-rule "붔" "붔")
+(merge-rule "붕" "붕")
+(merge-rule "붖" "붖")
+(merge-rule "붗" "붗")
+(merge-rule "붘" "붘")
+(merge-rule "붙" "붙")
+(merge-rule "붚" "부á‡")
+(merge-rule "붛" "붛")
+(merge-rule "붜" "붜~b")
+(merge-rule "ë¶" "붝")
+(merge-rule "붞" "붞")
+(merge-rule "붟" "붟")
+(merge-rule "붠" "붠")
+(merge-rule "붡" "붡")
+(merge-rule "붢" "붢")
+(merge-rule "붣" "붣")
+(merge-rule "붤" "붤")
+(merge-rule "붥" "붥")
+(merge-rule "붦" "붦")
+(merge-rule "붧" "붧")
+(merge-rule "붨" "붨")
+(merge-rule "붩" "붩")
+(merge-rule "붪" "붪")
+(merge-rule "붫" "붫")
+(merge-rule "붬" "붬")
+(merge-rule "붭" "붭")
+(merge-rule "붮" "붮")
+(merge-rule "붯" "붯")
+(merge-rule "붰" "붰")
+(merge-rule "붱" "붱")
+(merge-rule "붲" "붲")
+(merge-rule "붳" "붳")
+(merge-rule "붴" "붴")
+(merge-rule "붵" "붵")
+(merge-rule "붶" "붜á‡")
+(merge-rule "붷" "붷")
+(merge-rule "붸" "붸~b")
+(merge-rule "붹" "붹")
+(merge-rule "붺" "붺")
+(merge-rule "붻" "붻")
+(merge-rule "붼" "붼")
+(merge-rule "붽" "붽")
+(merge-rule "붾" "붾")
+(merge-rule "붿" "붿")
+(merge-rule "뷀" "뷀")
+(merge-rule "ë·" "뷁")
+(merge-rule "뷂" "뷂")
+(merge-rule "뷃" "뷃")
+(merge-rule "뷄" "뷄")
+(merge-rule "뷅" "뷅")
+(merge-rule "뷆" "뷆")
+(merge-rule "뷇" "뷇")
+(merge-rule "뷈" "뷈")
+(merge-rule "뷉" "뷉")
+(merge-rule "뷊" "뷊")
+(merge-rule "뷋" "뷋")
+(merge-rule "뷌" "뷌")
+(merge-rule "ë·" "뷍")
+(merge-rule "뷎" "뷎")
+(merge-rule "ë·" "뷏")
+(merge-rule "ë·" "뷐")
+(merge-rule "뷑" "뷑")
+(merge-rule "ë·’" "붸á‡")
+(merge-rule "뷓" "뷓")
+(merge-rule "뷔" "뷔~b")
+(merge-rule "뷕" "뷕")
+(merge-rule "뷖" "뷖")
+(merge-rule "뷗" "뷗")
+(merge-rule "뷘" "뷘")
+(merge-rule "뷙" "뷙")
+(merge-rule "뷚" "뷚")
+(merge-rule "뷛" "뷛")
+(merge-rule "뷜" "뷜")
+(merge-rule "ë·" "뷝")
+(merge-rule "뷞" "뷞")
+(merge-rule "뷟" "뷟")
+(merge-rule "뷠" "뷠")
+(merge-rule "뷡" "뷡")
+(merge-rule "뷢" "뷢")
+(merge-rule "뷣" "뷣")
+(merge-rule "뷤" "뷤")
+(merge-rule "뷥" "뷥")
+(merge-rule "뷦" "뷦")
+(merge-rule "뷧" "뷧")
+(merge-rule "뷨" "뷨")
+(merge-rule "뷩" "뷩")
+(merge-rule "뷪" "뷪")
+(merge-rule "뷫" "뷫")
+(merge-rule "뷬" "뷬")
+(merge-rule "뷭" "뷭")
+(merge-rule "ë·®" "뷔á‡")
+(merge-rule "뷯" "뷯")
+(merge-rule "뷰" "뷰~b")
+(merge-rule "뷱" "뷱")
+(merge-rule "뷲" "뷲")
+(merge-rule "뷳" "뷳")
+(merge-rule "뷴" "뷴")
+(merge-rule "뷵" "뷵")
+(merge-rule "뷶" "뷶")
+(merge-rule "뷷" "뷷")
+(merge-rule "뷸" "뷸")
+(merge-rule "뷹" "뷹")
+(merge-rule "뷺" "뷺")
+(merge-rule "뷻" "뷻")
+(merge-rule "뷼" "뷼")
+(merge-rule "뷽" "뷽")
+(merge-rule "뷾" "뷾")
+(merge-rule "뷿" "뷿")
+(merge-rule "븀" "븀")
+(merge-rule "ë¸" "븁")
+(merge-rule "븂" "븂")
+(merge-rule "븃" "븃")
+(merge-rule "븄" "븄")
+(merge-rule "븅" "븅")
+(merge-rule "븆" "븆")
+(merge-rule "븇" "븇")
+(merge-rule "븈" "븈")
+(merge-rule "븉" "븉")
+(merge-rule "븊" "뷰á‡")
+(merge-rule "븋" "븋")
+(merge-rule "브" "브~b")
+(merge-rule "ë¸" "븍")
+(merge-rule "븎" "븎")
+(merge-rule "ë¸" "븏")
+(merge-rule "ë¸" "븐")
+(merge-rule "븑" "븑")
+(merge-rule "븒" "븒")
+(merge-rule "븓" "븓")
+(merge-rule "블" "블")
+(merge-rule "븕" "븕")
+(merge-rule "븖" "븖")
+(merge-rule "븗" "븗")
+(merge-rule "븘" "븘")
+(merge-rule "븙" "븙")
+(merge-rule "븚" "븚")
+(merge-rule "븛" "븛")
+(merge-rule "븜" "븜")
+(merge-rule "ë¸" "븝")
+(merge-rule "븞" "븞")
+(merge-rule "븟" "븟")
+(merge-rule "븠" "븠")
+(merge-rule "븡" "븡")
+(merge-rule "븢" "븢")
+(merge-rule "븣" "븣")
+(merge-rule "븤" "븤")
+(merge-rule "븥" "븥")
+(merge-rule "븦" "브á‡")
+(merge-rule "븧" "븧")
+(merge-rule "븨" "븨~b")
+(merge-rule "븩" "븩")
+(merge-rule "븪" "븪")
+(merge-rule "븫" "븫")
+(merge-rule "븬" "븬")
+(merge-rule "븭" "븭")
+(merge-rule "븮" "븮")
+(merge-rule "븯" "븯")
+(merge-rule "븰" "븰")
+(merge-rule "븱" "븱")
+(merge-rule "븲" "븲")
+(merge-rule "븳" "븳")
+(merge-rule "븴" "븴")
+(merge-rule "븵" "븵")
+(merge-rule "븶" "븶")
+(merge-rule "븷" "븷")
+(merge-rule "븸" "븸")
+(merge-rule "븹" "븹")
+(merge-rule "븺" "븺")
+(merge-rule "븻" "븻")
+(merge-rule "븼" "븼")
+(merge-rule "븽" "븽")
+(merge-rule "븾" "븾")
+(merge-rule "븿" "븿")
+(merge-rule "빀" "빀")
+(merge-rule "ë¹" "빁")
+(merge-rule "빂" "븨á‡")
+(merge-rule "빃" "빃")
+(merge-rule "비" "비~b")
+(merge-rule "빅" "빅")
+(merge-rule "빆" "빆")
+(merge-rule "빇" "빇")
+(merge-rule "빈" "빈")
+(merge-rule "빉" "빉")
+(merge-rule "빊" "빊")
+(merge-rule "빋" "빋")
+(merge-rule "빌" "빌")
+(merge-rule "ë¹" "빍")
+(merge-rule "빎" "빎")
+(merge-rule "ë¹" "빏")
+(merge-rule "ë¹" "빐")
+(merge-rule "빑" "빑")
+(merge-rule "빒" "빒")
+(merge-rule "빓" "빓")
+(merge-rule "빔" "빔")
+(merge-rule "빕" "빕")
+(merge-rule "빖" "빖")
+(merge-rule "빗" "빗")
+(merge-rule "빘" "빘")
+(merge-rule "빙" "빙")
+(merge-rule "빚" "빚")
+(merge-rule "빛" "빛")
+(merge-rule "빜" "빜")
+(merge-rule "ë¹" "빝")
+(merge-rule "빞" "비á‡")
+(merge-rule "빟" "빟")
+(merge-rule "빠" "빠~b")
+(merge-rule "빡" "빡")
+(merge-rule "빢" "빢")
+(merge-rule "빣" "빣")
+(merge-rule "빤" "빤")
+(merge-rule "빥" "빥")
+(merge-rule "빦" "빦")
+(merge-rule "빧" "빧")
+(merge-rule "빨" "빨")
+(merge-rule "빩" "빩")
+(merge-rule "빪" "빪")
+(merge-rule "빫" "빫")
+(merge-rule "빬" "빬")
+(merge-rule "빭" "빭")
+(merge-rule "빮" "빮")
+(merge-rule "빯" "빯")
+(merge-rule "빰" "빰")
+(merge-rule "빱" "빱")
+(merge-rule "빲" "빲")
+(merge-rule "빳" "빳")
+(merge-rule "빴" "빴")
+(merge-rule "빵" "빵")
+(merge-rule "빶" "빶")
+(merge-rule "빷" "빷")
+(merge-rule "빸" "빸")
+(merge-rule "빹" "빹")
+(merge-rule "빺" "빠á‡")
+(merge-rule "빻" "빻")
+(merge-rule "빼" "빼~b")
+(merge-rule "빽" "빽")
+(merge-rule "빾" "빾")
+(merge-rule "빿" "빿")
+(merge-rule "뺀" "뺀")
+(merge-rule "ëº" "뺁")
+(merge-rule "뺂" "뺂")
+(merge-rule "뺃" "뺃")
+(merge-rule "뺄" "뺄")
+(merge-rule "뺅" "뺅")
+(merge-rule "뺆" "뺆")
+(merge-rule "뺇" "뺇")
+(merge-rule "뺈" "뺈")
+(merge-rule "뺉" "뺉")
+(merge-rule "뺊" "뺊")
+(merge-rule "뺋" "뺋")
+(merge-rule "뺌" "뺌")
+(merge-rule "ëº" "뺍")
+(merge-rule "뺎" "뺎")
+(merge-rule "ëº" "뺏")
+(merge-rule "ëº" "뺐")
+(merge-rule "뺑" "뺑")
+(merge-rule "뺒" "뺒")
+(merge-rule "뺓" "뺓")
+(merge-rule "뺔" "뺔")
+(merge-rule "뺕" "뺕")
+(merge-rule "뺖" "빼á‡")
+(merge-rule "뺗" "뺗")
+(merge-rule "뺘" "뺘~b")
+(merge-rule "뺙" "뺙")
+(merge-rule "뺚" "뺚")
+(merge-rule "뺛" "뺛")
+(merge-rule "뺜" "뺜")
+(merge-rule "ëº" "뺝")
+(merge-rule "뺞" "뺞")
+(merge-rule "뺟" "뺟")
+(merge-rule "뺠" "뺠")
+(merge-rule "뺡" "뺡")
+(merge-rule "뺢" "뺢")
+(merge-rule "뺣" "뺣")
+(merge-rule "뺤" "뺤")
+(merge-rule "뺥" "뺥")
+(merge-rule "뺦" "뺦")
+(merge-rule "뺧" "뺧")
+(merge-rule "뺨" "뺨")
+(merge-rule "뺩" "뺩")
+(merge-rule "뺪" "뺪")
+(merge-rule "뺫" "뺫")
+(merge-rule "뺬" "뺬")
+(merge-rule "뺭" "뺭")
+(merge-rule "뺮" "뺮")
+(merge-rule "뺯" "뺯")
+(merge-rule "뺰" "뺰")
+(merge-rule "뺱" "뺱")
+(merge-rule "뺲" "뺘á‡")
+(merge-rule "뺳" "뺳")
+(merge-rule "뺴" "뺴~b")
+(merge-rule "뺵" "뺵")
+(merge-rule "뺶" "뺶")
+(merge-rule "뺷" "뺷")
+(merge-rule "뺸" "뺸")
+(merge-rule "뺹" "뺹")
+(merge-rule "뺺" "뺺")
+(merge-rule "뺻" "뺻")
+(merge-rule "뺼" "뺼")
+(merge-rule "뺽" "뺽")
+(merge-rule "뺾" "뺾")
+(merge-rule "뺿" "뺿")
+(merge-rule "뻀" "뻀")
+(merge-rule "ë»" "뻁")
+(merge-rule "뻂" "뻂")
+(merge-rule "뻃" "뻃")
+(merge-rule "뻄" "뻄")
+(merge-rule "뻅" "뻅")
+(merge-rule "뻆" "뻆")
+(merge-rule "뻇" "뻇")
+(merge-rule "뻈" "뻈")
+(merge-rule "뻉" "뻉")
+(merge-rule "뻊" "뻊")
+(merge-rule "뻋" "뻋")
+(merge-rule "뻌" "뻌")
+(merge-rule "ë»" "뻍")
+(merge-rule "뻎" "뺴á‡")
+(merge-rule "ë»" "뻏")
+(merge-rule "ë»" "뻐~b")
+(merge-rule "뻑" "뻑")
+(merge-rule "뻒" "뻒")
+(merge-rule "뻓" "뻓")
+(merge-rule "뻔" "뻔")
+(merge-rule "뻕" "뻕")
+(merge-rule "뻖" "뻖")
+(merge-rule "뻗" "뻗")
+(merge-rule "뻘" "뻘")
+(merge-rule "뻙" "뻙")
+(merge-rule "뻚" "뻚")
+(merge-rule "뻛" "뻛")
+(merge-rule "뻜" "뻜")
+(merge-rule "ë»" "뻝")
+(merge-rule "뻞" "뻞")
+(merge-rule "뻟" "뻟")
+(merge-rule "뻠" "뻠")
+(merge-rule "뻡" "뻡")
+(merge-rule "뻢" "뻢")
+(merge-rule "뻣" "뻣")
+(merge-rule "뻤" "뻤")
+(merge-rule "뻥" "뻥")
+(merge-rule "뻦" "뻦")
+(merge-rule "뻧" "뻧")
+(merge-rule "뻨" "뻨")
+(merge-rule "뻩" "뻩")
+(merge-rule "뻪" "뻐á‡")
+(merge-rule "뻫" "뻫")
+(merge-rule "뻬" "뻬~b")
+(merge-rule "뻭" "뻭")
+(merge-rule "뻮" "뻮")
+(merge-rule "뻯" "뻯")
+(merge-rule "뻰" "뻰")
+(merge-rule "뻱" "뻱")
+(merge-rule "뻲" "뻲")
+(merge-rule "뻳" "뻳")
+(merge-rule "뻴" "뻴")
+(merge-rule "뻵" "뻵")
+(merge-rule "뻶" "뻶")
+(merge-rule "뻷" "뻷")
+(merge-rule "뻸" "뻸")
+(merge-rule "뻹" "뻹")
+(merge-rule "뻺" "뻺")
+(merge-rule "뻻" "뻻")
+(merge-rule "뻼" "뻼")
+(merge-rule "뻽" "뻽")
+(merge-rule "뻾" "뻾")
+(merge-rule "뻿" "뻿")
+(merge-rule "뼀" "뼀")
+(merge-rule "ë¼" "뼁")
+(merge-rule "뼂" "뼂")
+(merge-rule "뼃" "뼃")
+(merge-rule "뼄" "뼄")
+(merge-rule "뼅" "뼅")
+(merge-rule "뼆" "뻬á‡")
+(merge-rule "뼇" "뼇")
+(merge-rule "뼈" "뼈~b")
+(merge-rule "뼉" "뼉")
+(merge-rule "뼊" "뼊")
+(merge-rule "뼋" "뼋")
+(merge-rule "뼌" "뼌")
+(merge-rule "ë¼" "뼍")
+(merge-rule "뼎" "뼎")
+(merge-rule "ë¼" "뼏")
+(merge-rule "ë¼" "뼐")
+(merge-rule "뼑" "뼑")
+(merge-rule "뼒" "뼒")
+(merge-rule "뼓" "뼓")
+(merge-rule "뼔" "뼔")
+(merge-rule "뼕" "뼕")
+(merge-rule "뼖" "뼖")
+(merge-rule "뼗" "뼗")
+(merge-rule "뼘" "뼘")
+(merge-rule "뼙" "뼙")
+(merge-rule "뼚" "뼚")
+(merge-rule "뼛" "뼛")
+(merge-rule "뼜" "뼜")
+(merge-rule "ë¼" "뼝")
+(merge-rule "뼞" "뼞")
+(merge-rule "뼟" "뼟")
+(merge-rule "뼠" "뼠")
+(merge-rule "뼡" "뼡")
+(merge-rule "ë¼¢" "뼈á‡")
+(merge-rule "뼣" "뼣")
+(merge-rule "뼤" "뼤~b")
+(merge-rule "뼥" "뼥")
+(merge-rule "뼦" "뼦")
+(merge-rule "뼧" "뼧")
+(merge-rule "뼨" "뼨")
+(merge-rule "뼩" "뼩")
+(merge-rule "뼪" "뼪")
+(merge-rule "뼫" "뼫")
+(merge-rule "뼬" "뼬")
+(merge-rule "뼭" "뼭")
+(merge-rule "뼮" "뼮")
+(merge-rule "뼯" "뼯")
+(merge-rule "뼰" "뼰")
+(merge-rule "뼱" "뼱")
+(merge-rule "뼲" "뼲")
+(merge-rule "뼳" "뼳")
+(merge-rule "뼴" "뼴")
+(merge-rule "뼵" "뼵")
+(merge-rule "뼶" "뼶")
+(merge-rule "뼷" "뼷")
+(merge-rule "뼸" "뼸")
+(merge-rule "뼹" "뼹")
+(merge-rule "뼺" "뼺")
+(merge-rule "뼻" "뼻")
+(merge-rule "뼼" "뼼")
+(merge-rule "뼽" "뼽")
+(merge-rule "ë¼¾" "뼤á‡")
+(merge-rule "뼿" "뼿")
+(merge-rule "뽀" "뽀~b")
+(merge-rule "ë½" "뽁")
+(merge-rule "뽂" "뽂")
+(merge-rule "뽃" "뽃")
+(merge-rule "뽄" "뽄")
+(merge-rule "뽅" "뽅")
+(merge-rule "뽆" "뽆")
+(merge-rule "뽇" "뽇")
+(merge-rule "뽈" "뽈")
+(merge-rule "뽉" "뽉")
+(merge-rule "뽊" "뽊")
+(merge-rule "뽋" "뽋")
+(merge-rule "뽌" "뽌")
+(merge-rule "ë½" "뽍")
+(merge-rule "뽎" "뽎")
+(merge-rule "ë½" "뽏")
+(merge-rule "ë½" "뽐")
+(merge-rule "뽑" "뽑")
+(merge-rule "뽒" "뽒")
+(merge-rule "뽓" "뽓")
+(merge-rule "뽔" "뽔")
+(merge-rule "뽕" "뽕")
+(merge-rule "뽖" "뽖")
+(merge-rule "뽗" "뽗")
+(merge-rule "뽘" "뽘")
+(merge-rule "뽙" "뽙")
+(merge-rule "뽚" "뽀á‡")
+(merge-rule "뽛" "뽛")
+(merge-rule "뽜" "뽜~b")
+(merge-rule "ë½" "뽝")
+(merge-rule "뽞" "뽞")
+(merge-rule "뽟" "뽟")
+(merge-rule "뽠" "뽠")
+(merge-rule "뽡" "뽡")
+(merge-rule "뽢" "뽢")
+(merge-rule "뽣" "뽣")
+(merge-rule "뽤" "뽤")
+(merge-rule "뽥" "뽥")
+(merge-rule "뽦" "뽦")
+(merge-rule "뽧" "뽧")
+(merge-rule "뽨" "뽨")
+(merge-rule "뽩" "뽩")
+(merge-rule "뽪" "뽪")
+(merge-rule "뽫" "뽫")
+(merge-rule "뽬" "뽬")
+(merge-rule "뽭" "뽭")
+(merge-rule "뽮" "뽮")
+(merge-rule "뽯" "뽯")
+(merge-rule "뽰" "뽰")
+(merge-rule "뽱" "뽱")
+(merge-rule "뽲" "뽲")
+(merge-rule "뽳" "뽳")
+(merge-rule "뽴" "뽴")
+(merge-rule "뽵" "뽵")
+(merge-rule "뽶" "뽜á‡")
+(merge-rule "뽷" "뽷")
+(merge-rule "뽸" "뽸~b")
+(merge-rule "뽹" "뽹")
+(merge-rule "뽺" "뽺")
+(merge-rule "뽻" "뽻")
+(merge-rule "뽼" "뽼")
+(merge-rule "뽽" "뽽")
+(merge-rule "뽾" "뽾")
+(merge-rule "뽿" "뽿")
+(merge-rule "뾀" "뾀")
+(merge-rule "ë¾" "뾁")
+(merge-rule "뾂" "뾂")
+(merge-rule "뾃" "뾃")
+(merge-rule "뾄" "뾄")
+(merge-rule "뾅" "뾅")
+(merge-rule "뾆" "뾆")
+(merge-rule "뾇" "뾇")
+(merge-rule "뾈" "뾈")
+(merge-rule "뾉" "뾉")
+(merge-rule "뾊" "뾊")
+(merge-rule "뾋" "뾋")
+(merge-rule "뾌" "뾌")
+(merge-rule "ë¾" "뾍")
+(merge-rule "뾎" "뾎")
+(merge-rule "ë¾" "뾏")
+(merge-rule "ë¾" "뾐")
+(merge-rule "뾑" "뾑")
+(merge-rule "ë¾’" "뽸á‡")
+(merge-rule "뾓" "뾓")
+(merge-rule "뾔" "뾔~b")
+(merge-rule "뾕" "뾕")
+(merge-rule "뾖" "뾖")
+(merge-rule "뾗" "뾗")
+(merge-rule "뾘" "뾘")
+(merge-rule "뾙" "뾙")
+(merge-rule "뾚" "뾚")
+(merge-rule "뾛" "뾛")
+(merge-rule "뾜" "뾜")
+(merge-rule "ë¾" "뾝")
+(merge-rule "뾞" "뾞")
+(merge-rule "뾟" "뾟")
+(merge-rule "뾠" "뾠")
+(merge-rule "뾡" "뾡")
+(merge-rule "뾢" "뾢")
+(merge-rule "뾣" "뾣")
+(merge-rule "뾤" "뾤")
+(merge-rule "뾥" "뾥")
+(merge-rule "뾦" "뾦")
+(merge-rule "뾧" "뾧")
+(merge-rule "뾨" "뾨")
+(merge-rule "뾩" "뾩")
+(merge-rule "뾪" "뾪")
+(merge-rule "뾫" "뾫")
+(merge-rule "뾬" "뾬")
+(merge-rule "뾭" "뾭")
+(merge-rule "ë¾®" "뾔á‡")
+(merge-rule "뾯" "뾯")
+(merge-rule "뾰" "뾰~b")
+(merge-rule "뾱" "뾱")
+(merge-rule "뾲" "뾲")
+(merge-rule "뾳" "뾳")
+(merge-rule "뾴" "뾴")
+(merge-rule "뾵" "뾵")
+(merge-rule "뾶" "뾶")
+(merge-rule "뾷" "뾷")
+(merge-rule "뾸" "뾸")
+(merge-rule "뾹" "뾹")
+(merge-rule "뾺" "뾺")
+(merge-rule "뾻" "뾻")
+(merge-rule "뾼" "뾼")
+(merge-rule "뾽" "뾽")
+(merge-rule "뾾" "뾾")
+(merge-rule "뾿" "뾿")
+(merge-rule "뿀" "뿀")
+(merge-rule "ë¿" "뿁")
+(merge-rule "뿂" "뿂")
+(merge-rule "뿃" "뿃")
+(merge-rule "뿄" "뿄")
+(merge-rule "뿅" "뿅")
+(merge-rule "뿆" "뿆")
+(merge-rule "뿇" "뿇")
+(merge-rule "뿈" "뿈")
+(merge-rule "뿉" "뿉")
+(merge-rule "ë¿Š" "뾰á‡")
+(merge-rule "뿋" "뿋")
+(merge-rule "뿌" "뿌~b")
+(merge-rule "ë¿" "뿍")
+(merge-rule "뿎" "뿎")
+(merge-rule "ë¿" "뿏")
+(merge-rule "ë¿" "뿐")
+(merge-rule "뿑" "뿑")
+(merge-rule "뿒" "뿒")
+(merge-rule "뿓" "뿓")
+(merge-rule "뿔" "뿔")
+(merge-rule "뿕" "뿕")
+(merge-rule "뿖" "뿖")
+(merge-rule "뿗" "뿗")
+(merge-rule "뿘" "뿘")
+(merge-rule "뿙" "뿙")
+(merge-rule "뿚" "뿚")
+(merge-rule "뿛" "뿛")
+(merge-rule "뿜" "뿜")
+(merge-rule "ë¿" "뿝")
+(merge-rule "뿞" "뿞")
+(merge-rule "뿟" "뿟")
+(merge-rule "뿠" "뿠")
+(merge-rule "뿡" "뿡")
+(merge-rule "뿢" "뿢")
+(merge-rule "뿣" "뿣")
+(merge-rule "뿤" "뿤")
+(merge-rule "뿥" "뿥")
+(merge-rule "뿦" "뿌á‡")
+(merge-rule "뿧" "뿧")
+(merge-rule "뿨" "뿨~b")
+(merge-rule "뿩" "뿩")
+(merge-rule "뿪" "뿪")
+(merge-rule "뿫" "뿫")
+(merge-rule "뿬" "뿬")
+(merge-rule "뿭" "뿭")
+(merge-rule "뿮" "뿮")
+(merge-rule "뿯" "뿯")
+(merge-rule "뿰" "뿰")
+(merge-rule "뿱" "뿱")
+(merge-rule "뿲" "뿲")
+(merge-rule "뿳" "뿳")
+(merge-rule "뿴" "뿴")
+(merge-rule "뿵" "뿵")
+(merge-rule "뿶" "뿶")
+(merge-rule "뿷" "뿷")
+(merge-rule "뿸" "뿸")
+(merge-rule "뿹" "뿹")
+(merge-rule "뿺" "뿺")
+(merge-rule "뿻" "뿻")
+(merge-rule "뿼" "뿼")
+(merge-rule "뿽" "뿽")
+(merge-rule "뿾" "뿾")
+(merge-rule "뿿" "뿿")
+(merge-rule "쀀" "쀀")
+(merge-rule "ì€" "쀁")
+(merge-rule "쀂" "뿨á‡")
+(merge-rule "쀃" "쀃")
+(merge-rule "쀄" "쀄~b")
+(merge-rule "쀅" "쀅")
+(merge-rule "쀆" "쀆")
+(merge-rule "쀇" "쀇")
+(merge-rule "쀈" "쀈")
+(merge-rule "쀉" "쀉")
+(merge-rule "쀊" "쀊")
+(merge-rule "쀋" "쀋")
+(merge-rule "쀌" "쀌")
+(merge-rule "ì€" "쀍")
+(merge-rule "쀎" "쀎")
+(merge-rule "ì€" "쀏")
+(merge-rule "ì€" "쀐")
+(merge-rule "쀑" "쀑")
+(merge-rule "쀒" "쀒")
+(merge-rule "쀓" "쀓")
+(merge-rule "쀔" "쀔")
+(merge-rule "쀕" "쀕")
+(merge-rule "쀖" "쀖")
+(merge-rule "쀗" "쀗")
+(merge-rule "쀘" "쀘")
+(merge-rule "쀙" "쀙")
+(merge-rule "쀚" "쀚")
+(merge-rule "쀛" "쀛")
+(merge-rule "쀜" "쀜")
+(merge-rule "ì€" "쀝")
+(merge-rule "쀞" "쀄á‡")
+(merge-rule "쀟" "쀟")
+(merge-rule "쀠" "쀠~b")
+(merge-rule "쀡" "쀡")
+(merge-rule "쀢" "쀢")
+(merge-rule "쀣" "쀣")
+(merge-rule "쀤" "쀤")
+(merge-rule "쀥" "쀥")
+(merge-rule "쀦" "쀦")
+(merge-rule "쀧" "쀧")
+(merge-rule "쀨" "쀨")
+(merge-rule "쀩" "쀩")
+(merge-rule "쀪" "쀪")
+(merge-rule "쀫" "쀫")
+(merge-rule "쀬" "쀬")
+(merge-rule "쀭" "쀭")
+(merge-rule "쀮" "쀮")
+(merge-rule "쀯" "쀯")
+(merge-rule "쀰" "쀰")
+(merge-rule "쀱" "쀱")
+(merge-rule "쀲" "쀲")
+(merge-rule "쀳" "쀳")
+(merge-rule "쀴" "쀴")
+(merge-rule "쀵" "쀵")
+(merge-rule "쀶" "쀶")
+(merge-rule "쀷" "쀷")
+(merge-rule "쀸" "쀸")
+(merge-rule "쀹" "쀹")
+(merge-rule "쀺" "쀠á‡")
+(merge-rule "쀻" "쀻")
+(merge-rule "쀼" "쀼~b")
+(merge-rule "쀽" "쀽")
+(merge-rule "쀾" "쀾")
+(merge-rule "쀿" "쀿")
+(merge-rule "ì€" "쁀")
+(merge-rule "ì" "쁁")
+(merge-rule "ì‚" "쁂")
+(merge-rule "ìƒ" "쁃")
+(merge-rule "ì„" "쁄")
+(merge-rule "ì…" "쁅")
+(merge-rule "ì†" "쁆")
+(merge-rule "ì‡" "쁇")
+(merge-rule "ìˆ" "쁈")
+(merge-rule "ì‰" "쁉")
+(merge-rule "ìŠ" "쁊")
+(merge-rule "ì‹" "쁋")
+(merge-rule "ìŒ" "쁌")
+(merge-rule "ì" "쁍")
+(merge-rule "ìŽ" "쁎")
+(merge-rule "ì" "쁏")
+(merge-rule "ì" "쁐")
+(merge-rule "ì‘" "쁑")
+(merge-rule "ì’" "쁒")
+(merge-rule "ì“" "쁓")
+(merge-rule "ì”" "쁔")
+(merge-rule "ì•" "쁕")
+(merge-rule "ì–" "쀼á‡")
+(merge-rule "ì—" "쁗")
+(merge-rule "ì˜" "쁘~b")
+(merge-rule "ì™" "쁙")
+(merge-rule "ìš" "쁚")
+(merge-rule "ì›" "쁛")
+(merge-rule "ìœ" "쁜")
+(merge-rule "ì" "쁝")
+(merge-rule "ìž" "쁞")
+(merge-rule "ìŸ" "쁟")
+(merge-rule "ì " "쁠")
+(merge-rule "ì¡" "쁡")
+(merge-rule "ì¢" "쁢")
+(merge-rule "ì£" "쁣")
+(merge-rule "ì¤" "쁤")
+(merge-rule "ì¥" "쁥")
+(merge-rule "ì¦" "쁦")
+(merge-rule "ì§" "쁧")
+(merge-rule "ì¨" "쁨")
+(merge-rule "ì©" "쁩")
+(merge-rule "ìª" "쁪")
+(merge-rule "ì«" "쁫")
+(merge-rule "ì¬" "쁬")
+(merge-rule "ì­" "쁭")
+(merge-rule "ì®" "쁮")
+(merge-rule "ì¯" "쁯")
+(merge-rule "ì°" "쁰")
+(merge-rule "ì±" "쁱")
+(merge-rule "ì²" "쁘á‡")
+(merge-rule "ì³" "쁳")
+(merge-rule "ì´" "쁴~b")
+(merge-rule "ìµ" "쁵")
+(merge-rule "ì¶" "쁶")
+(merge-rule "ì·" "쁷")
+(merge-rule "ì¸" "쁸")
+(merge-rule "ì¹" "쁹")
+(merge-rule "ìº" "쁺")
+(merge-rule "ì»" "쁻")
+(merge-rule "ì¼" "쁼")
+(merge-rule "ì½" "쁽")
+(merge-rule "ì¾" "쁾")
+(merge-rule "ì¿" "쁿")
+(merge-rule "삀" "삀")
+(merge-rule "ì‚" "삁")
+(merge-rule "삂" "삂")
+(merge-rule "삃" "삃")
+(merge-rule "삄" "삄")
+(merge-rule "삅" "삅")
+(merge-rule "삆" "삆")
+(merge-rule "삇" "삇")
+(merge-rule "삈" "삈")
+(merge-rule "삉" "삉")
+(merge-rule "삊" "삊")
+(merge-rule "삋" "삋")
+(merge-rule "삌" "삌")
+(merge-rule "ì‚" "삍")
+(merge-rule "ì‚Ž" "쁴á‡")
+(merge-rule "ì‚" "삏")
+(merge-rule "ì‚" "삐~b")
+(merge-rule "삑" "삑")
+(merge-rule "삒" "삒")
+(merge-rule "삓" "삓")
+(merge-rule "삔" "삔")
+(merge-rule "삕" "삕")
+(merge-rule "삖" "삖")
+(merge-rule "삗" "삗")
+(merge-rule "삘" "삘")
+(merge-rule "삙" "삙")
+(merge-rule "삚" "삚")
+(merge-rule "삛" "삛")
+(merge-rule "삜" "삜")
+(merge-rule "ì‚" "삝")
+(merge-rule "삞" "삞")
+(merge-rule "삟" "삟")
+(merge-rule "삠" "삠")
+(merge-rule "삡" "삡")
+(merge-rule "삢" "삢")
+(merge-rule "삣" "삣")
+(merge-rule "삤" "삤")
+(merge-rule "삥" "삥")
+(merge-rule "삦" "삦")
+(merge-rule "삧" "삧")
+(merge-rule "삨" "삨")
+(merge-rule "삩" "삩")
+(merge-rule "삪" "삐á‡")
+(merge-rule "삫" "삫")
+(merge-rule "사" "사~b")
+(merge-rule "삭" "삭")
+(merge-rule "삮" "삮")
+(merge-rule "삯" "삯")
+(merge-rule "산" "산")
+(merge-rule "삱" "삱")
+(merge-rule "삲" "삲")
+(merge-rule "삳" "삳")
+(merge-rule "살" "살")
+(merge-rule "삵" "삵")
+(merge-rule "삶" "삶")
+(merge-rule "삷" "삷")
+(merge-rule "삸" "삸")
+(merge-rule "삹" "삹")
+(merge-rule "삺" "삺")
+(merge-rule "삻" "삻")
+(merge-rule "삼" "삼")
+(merge-rule "삽" "삽")
+(merge-rule "삾" "삾")
+(merge-rule "삿" "삿")
+(merge-rule "샀" "샀")
+(merge-rule "ìƒ" "상")
+(merge-rule "샂" "샂")
+(merge-rule "샃" "샃")
+(merge-rule "샄" "샄")
+(merge-rule "샅" "샅")
+(merge-rule "샆" "사á‡")
+(merge-rule "샇" "샇")
+(merge-rule "새" "새~b")
+(merge-rule "색" "색")
+(merge-rule "샊" "샊")
+(merge-rule "샋" "샋")
+(merge-rule "샌" "샌")
+(merge-rule "ìƒ" "샍")
+(merge-rule "샎" "샎")
+(merge-rule "ìƒ" "샏")
+(merge-rule "ìƒ" "샐")
+(merge-rule "샑" "샑")
+(merge-rule "샒" "샒")
+(merge-rule "샓" "샓")
+(merge-rule "샔" "샔")
+(merge-rule "샕" "샕")
+(merge-rule "샖" "샖")
+(merge-rule "샗" "샗")
+(merge-rule "샘" "샘")
+(merge-rule "샙" "샙")
+(merge-rule "샚" "샚")
+(merge-rule "샛" "샛")
+(merge-rule "샜" "샜")
+(merge-rule "ìƒ" "생")
+(merge-rule "샞" "샞")
+(merge-rule "샟" "샟")
+(merge-rule "샠" "샠")
+(merge-rule "샡" "샡")
+(merge-rule "샢" "새á‡")
+(merge-rule "샣" "샣")
+(merge-rule "샤" "샤~b")
+(merge-rule "샥" "샥")
+(merge-rule "샦" "샦")
+(merge-rule "샧" "샧")
+(merge-rule "샨" "샨")
+(merge-rule "샩" "샩")
+(merge-rule "샪" "샪")
+(merge-rule "샫" "샫")
+(merge-rule "샬" "샬")
+(merge-rule "샭" "샭")
+(merge-rule "샮" "샮")
+(merge-rule "샯" "샯")
+(merge-rule "샰" "샰")
+(merge-rule "샱" "샱")
+(merge-rule "샲" "샲")
+(merge-rule "샳" "샳")
+(merge-rule "샴" "샴")
+(merge-rule "샵" "샵")
+(merge-rule "샶" "샶")
+(merge-rule "샷" "샷")
+(merge-rule "샸" "샸")
+(merge-rule "샹" "샹")
+(merge-rule "샺" "샺")
+(merge-rule "샻" "샻")
+(merge-rule "샼" "샼")
+(merge-rule "샽" "샽")
+(merge-rule "샾" "샤á‡")
+(merge-rule "샿" "샿")
+(merge-rule "섀" "섀~b")
+(merge-rule "ì„" "섁")
+(merge-rule "섂" "섂")
+(merge-rule "섃" "섃")
+(merge-rule "섄" "섄")
+(merge-rule "섅" "섅")
+(merge-rule "섆" "섆")
+(merge-rule "섇" "섇")
+(merge-rule "섈" "섈")
+(merge-rule "섉" "섉")
+(merge-rule "섊" "섊")
+(merge-rule "섋" "섋")
+(merge-rule "섌" "섌")
+(merge-rule "ì„" "섍")
+(merge-rule "섎" "섎")
+(merge-rule "ì„" "섏")
+(merge-rule "ì„" "섐")
+(merge-rule "섑" "섑")
+(merge-rule "섒" "섒")
+(merge-rule "섓" "섓")
+(merge-rule "섔" "섔")
+(merge-rule "섕" "섕")
+(merge-rule "섖" "섖")
+(merge-rule "섗" "섗")
+(merge-rule "섘" "섘")
+(merge-rule "섙" "섙")
+(merge-rule "ì„š" "섀á‡")
+(merge-rule "섛" "섛")
+(merge-rule "서" "서~b")
+(merge-rule "ì„" "석")
+(merge-rule "섞" "섞")
+(merge-rule "섟" "섟")
+(merge-rule "선" "선")
+(merge-rule "섡" "섡")
+(merge-rule "섢" "섢")
+(merge-rule "섣" "섣")
+(merge-rule "설" "설")
+(merge-rule "섥" "섥")
+(merge-rule "섦" "섦")
+(merge-rule "섧" "섧")
+(merge-rule "섨" "섨")
+(merge-rule "섩" "섩")
+(merge-rule "섪" "섪")
+(merge-rule "섫" "섫")
+(merge-rule "섬" "섬")
+(merge-rule "섭" "섭")
+(merge-rule "섮" "섮")
+(merge-rule "섯" "섯")
+(merge-rule "섰" "섰")
+(merge-rule "성" "성")
+(merge-rule "섲" "섲")
+(merge-rule "섳" "섳")
+(merge-rule "섴" "섴")
+(merge-rule "섵" "섵")
+(merge-rule "섶" "서á‡")
+(merge-rule "섷" "섷")
+(merge-rule "세" "세~b")
+(merge-rule "섹" "섹")
+(merge-rule "섺" "섺")
+(merge-rule "섻" "섻")
+(merge-rule "센" "센")
+(merge-rule "섽" "섽")
+(merge-rule "섾" "섾")
+(merge-rule "섿" "섿")
+(merge-rule "셀" "셀")
+(merge-rule "ì…" "셁")
+(merge-rule "셂" "셂")
+(merge-rule "셃" "셃")
+(merge-rule "셄" "셄")
+(merge-rule "셅" "셅")
+(merge-rule "셆" "셆")
+(merge-rule "셇" "셇")
+(merge-rule "셈" "셈")
+(merge-rule "셉" "셉")
+(merge-rule "셊" "셊")
+(merge-rule "셋" "셋")
+(merge-rule "셌" "셌")
+(merge-rule "ì…" "셍")
+(merge-rule "셎" "셎")
+(merge-rule "ì…" "셏")
+(merge-rule "ì…" "셐")
+(merge-rule "셑" "셑")
+(merge-rule "ì…’" "세á‡")
+(merge-rule "셓" "셓")
+(merge-rule "셔" "셔~b")
+(merge-rule "셕" "셕")
+(merge-rule "셖" "셖")
+(merge-rule "셗" "셗")
+(merge-rule "션" "션")
+(merge-rule "셙" "셙")
+(merge-rule "셚" "셚")
+(merge-rule "셛" "셛")
+(merge-rule "셜" "셜")
+(merge-rule "ì…" "셝")
+(merge-rule "셞" "셞")
+(merge-rule "셟" "셟")
+(merge-rule "셠" "셠")
+(merge-rule "셡" "셡")
+(merge-rule "셢" "셢")
+(merge-rule "셣" "셣")
+(merge-rule "셤" "셤")
+(merge-rule "셥" "셥")
+(merge-rule "셦" "셦")
+(merge-rule "셧" "셧")
+(merge-rule "셨" "셨")
+(merge-rule "셩" "셩")
+(merge-rule "셪" "셪")
+(merge-rule "셫" "셫")
+(merge-rule "셬" "셬")
+(merge-rule "셭" "셭")
+(merge-rule "ì…®" "셔á‡")
+(merge-rule "셯" "셯")
+(merge-rule "셰" "셰~b")
+(merge-rule "셱" "셱")
+(merge-rule "셲" "셲")
+(merge-rule "셳" "셳")
+(merge-rule "셴" "셴")
+(merge-rule "셵" "셵")
+(merge-rule "셶" "셶")
+(merge-rule "셷" "셷")
+(merge-rule "셸" "셸")
+(merge-rule "셹" "셹")
+(merge-rule "셺" "셺")
+(merge-rule "셻" "셻")
+(merge-rule "셼" "셼")
+(merge-rule "셽" "셽")
+(merge-rule "셾" "셾")
+(merge-rule "셿" "셿")
+(merge-rule "솀" "솀")
+(merge-rule "ì†" "솁")
+(merge-rule "솂" "솂")
+(merge-rule "솃" "솃")
+(merge-rule "솄" "솄")
+(merge-rule "솅" "솅")
+(merge-rule "솆" "솆")
+(merge-rule "솇" "솇")
+(merge-rule "솈" "솈")
+(merge-rule "솉" "솉")
+(merge-rule "솊" "셰á‡")
+(merge-rule "솋" "솋")
+(merge-rule "소" "소~b")
+(merge-rule "ì†" "속")
+(merge-rule "솎" "솎")
+(merge-rule "ì†" "솏")
+(merge-rule "ì†" "손")
+(merge-rule "솑" "솑")
+(merge-rule "솒" "솒")
+(merge-rule "솓" "솓")
+(merge-rule "솔" "솔")
+(merge-rule "솕" "솕")
+(merge-rule "솖" "솖")
+(merge-rule "솗" "솗")
+(merge-rule "솘" "솘")
+(merge-rule "솙" "솙")
+(merge-rule "솚" "솚")
+(merge-rule "솛" "솛")
+(merge-rule "솜" "솜")
+(merge-rule "ì†" "솝")
+(merge-rule "솞" "솞")
+(merge-rule "솟" "솟")
+(merge-rule "솠" "솠")
+(merge-rule "송" "송")
+(merge-rule "솢" "솢")
+(merge-rule "솣" "솣")
+(merge-rule "솤" "솤")
+(merge-rule "솥" "솥")
+(merge-rule "솦" "소á‡")
+(merge-rule "솧" "솧")
+(merge-rule "솨" "솨~b")
+(merge-rule "솩" "솩")
+(merge-rule "솪" "솪")
+(merge-rule "솫" "솫")
+(merge-rule "솬" "솬")
+(merge-rule "솭" "솭")
+(merge-rule "솮" "솮")
+(merge-rule "솯" "솯")
+(merge-rule "솰" "솰")
+(merge-rule "솱" "솱")
+(merge-rule "솲" "솲")
+(merge-rule "솳" "솳")
+(merge-rule "솴" "솴")
+(merge-rule "솵" "솵")
+(merge-rule "솶" "솶")
+(merge-rule "솷" "솷")
+(merge-rule "솸" "솸")
+(merge-rule "솹" "솹")
+(merge-rule "솺" "솺")
+(merge-rule "솻" "솻")
+(merge-rule "솼" "솼")
+(merge-rule "솽" "솽")
+(merge-rule "솾" "솾")
+(merge-rule "솿" "솿")
+(merge-rule "쇀" "쇀")
+(merge-rule "ì‡" "쇁")
+(merge-rule "쇂" "솨á‡")
+(merge-rule "쇃" "쇃")
+(merge-rule "쇄" "쇄~b")
+(merge-rule "쇅" "쇅")
+(merge-rule "쇆" "쇆")
+(merge-rule "쇇" "쇇")
+(merge-rule "쇈" "쇈")
+(merge-rule "쇉" "쇉")
+(merge-rule "쇊" "쇊")
+(merge-rule "쇋" "쇋")
+(merge-rule "쇌" "쇌")
+(merge-rule "ì‡" "쇍")
+(merge-rule "쇎" "쇎")
+(merge-rule "ì‡" "쇏")
+(merge-rule "ì‡" "쇐")
+(merge-rule "쇑" "쇑")
+(merge-rule "쇒" "쇒")
+(merge-rule "쇓" "쇓")
+(merge-rule "쇔" "쇔")
+(merge-rule "쇕" "쇕")
+(merge-rule "쇖" "쇖")
+(merge-rule "쇗" "쇗")
+(merge-rule "쇘" "쇘")
+(merge-rule "쇙" "쇙")
+(merge-rule "쇚" "쇚")
+(merge-rule "쇛" "쇛")
+(merge-rule "쇜" "쇜")
+(merge-rule "ì‡" "쇝")
+(merge-rule "쇞" "쇄á‡")
+(merge-rule "쇟" "쇟")
+(merge-rule "쇠" "쇠~b")
+(merge-rule "쇡" "쇡")
+(merge-rule "쇢" "쇢")
+(merge-rule "쇣" "쇣")
+(merge-rule "쇤" "쇤")
+(merge-rule "쇥" "쇥")
+(merge-rule "쇦" "쇦")
+(merge-rule "쇧" "쇧")
+(merge-rule "쇨" "쇨")
+(merge-rule "쇩" "쇩")
+(merge-rule "쇪" "쇪")
+(merge-rule "쇫" "쇫")
+(merge-rule "쇬" "쇬")
+(merge-rule "쇭" "쇭")
+(merge-rule "쇮" "쇮")
+(merge-rule "쇯" "쇯")
+(merge-rule "쇰" "쇰")
+(merge-rule "쇱" "쇱")
+(merge-rule "쇲" "쇲")
+(merge-rule "쇳" "쇳")
+(merge-rule "쇴" "쇴")
+(merge-rule "쇵" "쇵")
+(merge-rule "쇶" "쇶")
+(merge-rule "쇷" "쇷")
+(merge-rule "쇸" "쇸")
+(merge-rule "쇹" "쇹")
+(merge-rule "쇺" "쇠á‡")
+(merge-rule "쇻" "쇻")
+(merge-rule "쇼" "쇼~b")
+(merge-rule "쇽" "쇽")
+(merge-rule "쇾" "쇾")
+(merge-rule "쇿" "쇿")
+(merge-rule "숀" "숀")
+(merge-rule "ìˆ" "숁")
+(merge-rule "숂" "숂")
+(merge-rule "숃" "숃")
+(merge-rule "숄" "숄")
+(merge-rule "숅" "숅")
+(merge-rule "숆" "숆")
+(merge-rule "숇" "숇")
+(merge-rule "숈" "숈")
+(merge-rule "숉" "숉")
+(merge-rule "숊" "숊")
+(merge-rule "숋" "숋")
+(merge-rule "숌" "숌")
+(merge-rule "ìˆ" "숍")
+(merge-rule "숎" "숎")
+(merge-rule "ìˆ" "숏")
+(merge-rule "ìˆ" "숐")
+(merge-rule "숑" "숑")
+(merge-rule "숒" "숒")
+(merge-rule "숓" "숓")
+(merge-rule "숔" "숔")
+(merge-rule "숕" "숕")
+(merge-rule "숖" "쇼á‡")
+(merge-rule "숗" "숗")
+(merge-rule "수" "수~b")
+(merge-rule "숙" "숙")
+(merge-rule "숚" "숚")
+(merge-rule "숛" "숛")
+(merge-rule "순" "순")
+(merge-rule "ìˆ" "숝")
+(merge-rule "숞" "숞")
+(merge-rule "숟" "숟")
+(merge-rule "술" "술")
+(merge-rule "숡" "숡")
+(merge-rule "숢" "숢")
+(merge-rule "숣" "숣")
+(merge-rule "숤" "숤")
+(merge-rule "숥" "숥")
+(merge-rule "숦" "숦")
+(merge-rule "숧" "숧")
+(merge-rule "숨" "숨")
+(merge-rule "숩" "숩")
+(merge-rule "숪" "숪")
+(merge-rule "숫" "숫")
+(merge-rule "숬" "숬")
+(merge-rule "숭" "숭")
+(merge-rule "숮" "숮")
+(merge-rule "숯" "숯")
+(merge-rule "숰" "숰")
+(merge-rule "숱" "숱")
+(merge-rule "숲" "수á‡")
+(merge-rule "숳" "숳")
+(merge-rule "숴" "숴~b")
+(merge-rule "숵" "숵")
+(merge-rule "숶" "숶")
+(merge-rule "숷" "숷")
+(merge-rule "숸" "숸")
+(merge-rule "숹" "숹")
+(merge-rule "숺" "숺")
+(merge-rule "숻" "숻")
+(merge-rule "숼" "숼")
+(merge-rule "숽" "숽")
+(merge-rule "숾" "숾")
+(merge-rule "숿" "숿")
+(merge-rule "쉀" "쉀")
+(merge-rule "ì‰" "쉁")
+(merge-rule "쉂" "쉂")
+(merge-rule "쉃" "쉃")
+(merge-rule "쉄" "쉄")
+(merge-rule "쉅" "쉅")
+(merge-rule "쉆" "쉆")
+(merge-rule "쉇" "쉇")
+(merge-rule "쉈" "쉈")
+(merge-rule "쉉" "쉉")
+(merge-rule "쉊" "쉊")
+(merge-rule "쉋" "쉋")
+(merge-rule "쉌" "쉌")
+(merge-rule "ì‰" "쉍")
+(merge-rule "쉎" "숴á‡")
+(merge-rule "ì‰" "쉏")
+(merge-rule "ì‰" "쉐~b")
+(merge-rule "쉑" "쉑")
+(merge-rule "쉒" "쉒")
+(merge-rule "쉓" "쉓")
+(merge-rule "쉔" "쉔")
+(merge-rule "쉕" "쉕")
+(merge-rule "쉖" "쉖")
+(merge-rule "쉗" "쉗")
+(merge-rule "쉘" "쉘")
+(merge-rule "쉙" "쉙")
+(merge-rule "쉚" "쉚")
+(merge-rule "쉛" "쉛")
+(merge-rule "쉜" "쉜")
+(merge-rule "ì‰" "쉝")
+(merge-rule "쉞" "쉞")
+(merge-rule "쉟" "쉟")
+(merge-rule "쉠" "쉠")
+(merge-rule "쉡" "쉡")
+(merge-rule "쉢" "쉢")
+(merge-rule "쉣" "쉣")
+(merge-rule "쉤" "쉤")
+(merge-rule "쉥" "쉥")
+(merge-rule "쉦" "쉦")
+(merge-rule "쉧" "쉧")
+(merge-rule "쉨" "쉨")
+(merge-rule "쉩" "쉩")
+(merge-rule "쉪" "쉐á‡")
+(merge-rule "쉫" "쉫")
+(merge-rule "쉬" "쉬~b")
+(merge-rule "쉭" "쉭")
+(merge-rule "쉮" "쉮")
+(merge-rule "쉯" "쉯")
+(merge-rule "쉰" "쉰")
+(merge-rule "쉱" "쉱")
+(merge-rule "쉲" "쉲")
+(merge-rule "쉳" "쉳")
+(merge-rule "쉴" "쉴")
+(merge-rule "쉵" "쉵")
+(merge-rule "쉶" "쉶")
+(merge-rule "쉷" "쉷")
+(merge-rule "쉸" "쉸")
+(merge-rule "쉹" "쉹")
+(merge-rule "쉺" "쉺")
+(merge-rule "쉻" "쉻")
+(merge-rule "쉼" "쉼")
+(merge-rule "쉽" "쉽")
+(merge-rule "쉾" "쉾")
+(merge-rule "쉿" "쉿")
+(merge-rule "슀" "슀")
+(merge-rule "ìŠ" "슁")
+(merge-rule "슂" "슂")
+(merge-rule "슃" "슃")
+(merge-rule "슄" "슄")
+(merge-rule "슅" "슅")
+(merge-rule "슆" "쉬á‡")
+(merge-rule "슇" "슇")
+(merge-rule "슈" "슈~b")
+(merge-rule "슉" "슉")
+(merge-rule "슊" "슊")
+(merge-rule "슋" "슋")
+(merge-rule "슌" "슌")
+(merge-rule "ìŠ" "슍")
+(merge-rule "슎" "슎")
+(merge-rule "ìŠ" "슏")
+(merge-rule "ìŠ" "슐")
+(merge-rule "슑" "슑")
+(merge-rule "슒" "슒")
+(merge-rule "슓" "슓")
+(merge-rule "슔" "슔")
+(merge-rule "슕" "슕")
+(merge-rule "슖" "슖")
+(merge-rule "슗" "슗")
+(merge-rule "슘" "슘")
+(merge-rule "슙" "슙")
+(merge-rule "슚" "슚")
+(merge-rule "슛" "슛")
+(merge-rule "슜" "슜")
+(merge-rule "ìŠ" "슝")
+(merge-rule "슞" "슞")
+(merge-rule "슟" "슟")
+(merge-rule "슠" "슠")
+(merge-rule "슡" "슡")
+(merge-rule "슢" "슈á‡")
+(merge-rule "슣" "슣")
+(merge-rule "스" "스~b")
+(merge-rule "슥" "슥")
+(merge-rule "슦" "슦")
+(merge-rule "슧" "슧")
+(merge-rule "슨" "슨")
+(merge-rule "슩" "슩")
+(merge-rule "슪" "슪")
+(merge-rule "슫" "슫")
+(merge-rule "슬" "슬")
+(merge-rule "슭" "슭")
+(merge-rule "슮" "슮")
+(merge-rule "슯" "슯")
+(merge-rule "슰" "슰")
+(merge-rule "슱" "슱")
+(merge-rule "슲" "슲")
+(merge-rule "슳" "슳")
+(merge-rule "슴" "슴")
+(merge-rule "습" "습")
+(merge-rule "슶" "슶")
+(merge-rule "슷" "슷")
+(merge-rule "슸" "슸")
+(merge-rule "승" "승")
+(merge-rule "슺" "슺")
+(merge-rule "슻" "슻")
+(merge-rule "슼" "슼")
+(merge-rule "슽" "슽")
+(merge-rule "슾" "스á‡")
+(merge-rule "슿" "슿")
+(merge-rule "싀" "싀~b")
+(merge-rule "ì‹" "싁")
+(merge-rule "싂" "싂")
+(merge-rule "싃" "싃")
+(merge-rule "싄" "싄")
+(merge-rule "싅" "싅")
+(merge-rule "싆" "싆")
+(merge-rule "싇" "싇")
+(merge-rule "싈" "싈")
+(merge-rule "싉" "싉")
+(merge-rule "싊" "싊")
+(merge-rule "싋" "싋")
+(merge-rule "싌" "싌")
+(merge-rule "ì‹" "싍")
+(merge-rule "싎" "싎")
+(merge-rule "ì‹" "싏")
+(merge-rule "ì‹" "싐")
+(merge-rule "싑" "싑")
+(merge-rule "싒" "싒")
+(merge-rule "싓" "싓")
+(merge-rule "싔" "싔")
+(merge-rule "싕" "싕")
+(merge-rule "싖" "싖")
+(merge-rule "싗" "싗")
+(merge-rule "싘" "싘")
+(merge-rule "싙" "싙")
+(merge-rule "ì‹š" "싀á‡")
+(merge-rule "싛" "싛")
+(merge-rule "시" "시~b")
+(merge-rule "ì‹" "식")
+(merge-rule "싞" "싞")
+(merge-rule "싟" "싟")
+(merge-rule "신" "신")
+(merge-rule "싡" "싡")
+(merge-rule "싢" "싢")
+(merge-rule "싣" "싣")
+(merge-rule "실" "실")
+(merge-rule "싥" "싥")
+(merge-rule "싦" "싦")
+(merge-rule "싧" "싧")
+(merge-rule "싨" "싨")
+(merge-rule "싩" "싩")
+(merge-rule "싪" "싪")
+(merge-rule "싫" "싫")
+(merge-rule "심" "심")
+(merge-rule "십" "십")
+(merge-rule "싮" "싮")
+(merge-rule "싯" "싯")
+(merge-rule "싰" "싰")
+(merge-rule "싱" "싱")
+(merge-rule "싲" "싲")
+(merge-rule "싳" "싳")
+(merge-rule "싴" "싴")
+(merge-rule "싵" "싵")
+(merge-rule "싶" "시á‡")
+(merge-rule "싷" "싷")
+(merge-rule "싸" "싸~b")
+(merge-rule "싹" "싹")
+(merge-rule "싺" "싺")
+(merge-rule "싻" "싻")
+(merge-rule "싼" "싼")
+(merge-rule "싽" "싽")
+(merge-rule "싾" "싾")
+(merge-rule "싿" "싿")
+(merge-rule "쌀" "쌀")
+(merge-rule "ìŒ" "쌁")
+(merge-rule "쌂" "쌂")
+(merge-rule "쌃" "쌃")
+(merge-rule "쌄" "쌄")
+(merge-rule "쌅" "쌅")
+(merge-rule "쌆" "쌆")
+(merge-rule "쌇" "쌇")
+(merge-rule "쌈" "쌈")
+(merge-rule "쌉" "쌉")
+(merge-rule "쌊" "쌊")
+(merge-rule "쌋" "쌋")
+(merge-rule "쌌" "쌌")
+(merge-rule "ìŒ" "쌍")
+(merge-rule "쌎" "쌎")
+(merge-rule "ìŒ" "쌏")
+(merge-rule "ìŒ" "쌐")
+(merge-rule "쌑" "쌑")
+(merge-rule "쌒" "á„Šá…¡á‡")
+(merge-rule "쌓" "쌓")
+(merge-rule "쌔" "쌔~b")
+(merge-rule "쌕" "쌕")
+(merge-rule "쌖" "쌖")
+(merge-rule "쌗" "쌗")
+(merge-rule "쌘" "쌘")
+(merge-rule "쌙" "쌙")
+(merge-rule "쌚" "쌚")
+(merge-rule "쌛" "쌛")
+(merge-rule "쌜" "쌜")
+(merge-rule "ìŒ" "쌝")
+(merge-rule "쌞" "쌞")
+(merge-rule "쌟" "쌟")
+(merge-rule "쌠" "쌠")
+(merge-rule "쌡" "쌡")
+(merge-rule "쌢" "쌢")
+(merge-rule "쌣" "쌣")
+(merge-rule "쌤" "쌤")
+(merge-rule "쌥" "쌥")
+(merge-rule "쌦" "쌦")
+(merge-rule "쌧" "쌧")
+(merge-rule "쌨" "쌨")
+(merge-rule "쌩" "쌩")
+(merge-rule "쌪" "쌪")
+(merge-rule "쌫" "쌫")
+(merge-rule "쌬" "쌬")
+(merge-rule "쌭" "쌭")
+(merge-rule "쌮" "á„Šá…¢á‡")
+(merge-rule "쌯" "쌯")
+(merge-rule "쌰" "쌰~b")
+(merge-rule "쌱" "쌱")
+(merge-rule "쌲" "쌲")
+(merge-rule "쌳" "쌳")
+(merge-rule "쌴" "쌴")
+(merge-rule "쌵" "쌵")
+(merge-rule "쌶" "쌶")
+(merge-rule "쌷" "쌷")
+(merge-rule "쌸" "쌸")
+(merge-rule "쌹" "쌹")
+(merge-rule "쌺" "쌺")
+(merge-rule "쌻" "쌻")
+(merge-rule "쌼" "쌼")
+(merge-rule "쌽" "쌽")
+(merge-rule "쌾" "쌾")
+(merge-rule "쌿" "쌿")
+(merge-rule "ì€" "썀")
+(merge-rule "ì" "썁")
+(merge-rule "ì‚" "썂")
+(merge-rule "ìƒ" "썃")
+(merge-rule "ì„" "썄")
+(merge-rule "ì…" "썅")
+(merge-rule "ì†" "썆")
+(merge-rule "ì‡" "썇")
+(merge-rule "ìˆ" "썈")
+(merge-rule "ì‰" "썉")
+(merge-rule "ìŠ" "á„Šá…£á‡")
+(merge-rule "ì‹" "썋")
+(merge-rule "ìŒ" "á„Šá…¤~b")
+(merge-rule "ì" "썍")
+(merge-rule "ìŽ" "썎")
+(merge-rule "ì" "썏")
+(merge-rule "ì" "썐")
+(merge-rule "ì‘" "썑")
+(merge-rule "ì’" "썒")
+(merge-rule "ì“" "썓")
+(merge-rule "ì”" "썔")
+(merge-rule "ì•" "썕")
+(merge-rule "ì–" "썖")
+(merge-rule "ì—" "썗")
+(merge-rule "ì˜" "썘")
+(merge-rule "ì™" "썙")
+(merge-rule "ìš" "썚")
+(merge-rule "ì›" "썛")
+(merge-rule "ìœ" "썜")
+(merge-rule "ì" "썝")
+(merge-rule "ìž" "썞")
+(merge-rule "ìŸ" "썟")
+(merge-rule "ì " "썠")
+(merge-rule "ì¡" "썡")
+(merge-rule "ì¢" "썢")
+(merge-rule "ì£" "썣")
+(merge-rule "ì¤" "썤")
+(merge-rule "ì¥" "썥")
+(merge-rule "ì¦" "á„Šá…¤á‡")
+(merge-rule "ì§" "썧")
+(merge-rule "ì¨" "á„Šá…¥~b")
+(merge-rule "ì©" "썩")
+(merge-rule "ìª" "썪")
+(merge-rule "ì«" "썫")
+(merge-rule "ì¬" "썬")
+(merge-rule "ì­" "썭")
+(merge-rule "ì®" "썮")
+(merge-rule "ì¯" "썯")
+(merge-rule "ì°" "썰")
+(merge-rule "ì±" "썱")
+(merge-rule "ì²" "썲")
+(merge-rule "ì³" "썳")
+(merge-rule "ì´" "썴")
+(merge-rule "ìµ" "썵")
+(merge-rule "ì¶" "썶")
+(merge-rule "ì·" "썷")
+(merge-rule "ì¸" "썸")
+(merge-rule "ì¹" "썹")
+(merge-rule "ìº" "썺")
+(merge-rule "ì»" "썻")
+(merge-rule "ì¼" "썼")
+(merge-rule "ì½" "썽")
+(merge-rule "ì¾" "썾")
+(merge-rule "ì¿" "썿")
+(merge-rule "쎀" "쎀")
+(merge-rule "ìŽ" "쎁")
+(merge-rule "쎂" "á„Šá…¥á‡")
+(merge-rule "쎃" "쎃")
+(merge-rule "쎄" "쎄~b")
+(merge-rule "쎅" "쎅")
+(merge-rule "쎆" "쎆")
+(merge-rule "쎇" "쎇")
+(merge-rule "쎈" "쎈")
+(merge-rule "쎉" "쎉")
+(merge-rule "쎊" "쎊")
+(merge-rule "쎋" "쎋")
+(merge-rule "쎌" "쎌")
+(merge-rule "ìŽ" "쎍")
+(merge-rule "쎎" "쎎")
+(merge-rule "ìŽ" "쎏")
+(merge-rule "ìŽ" "쎐")
+(merge-rule "쎑" "쎑")
+(merge-rule "쎒" "쎒")
+(merge-rule "쎓" "쎓")
+(merge-rule "쎔" "쎔")
+(merge-rule "쎕" "쎕")
+(merge-rule "쎖" "쎖")
+(merge-rule "쎗" "쎗")
+(merge-rule "쎘" "쎘")
+(merge-rule "쎙" "쎙")
+(merge-rule "쎚" "쎚")
+(merge-rule "쎛" "쎛")
+(merge-rule "쎜" "쎜")
+(merge-rule "ìŽ" "쎝")
+(merge-rule "쎞" "á„Šá…¦á‡")
+(merge-rule "쎟" "쎟")
+(merge-rule "쎠" "쎠~b")
+(merge-rule "쎡" "쎡")
+(merge-rule "쎢" "쎢")
+(merge-rule "쎣" "쎣")
+(merge-rule "쎤" "쎤")
+(merge-rule "쎥" "쎥")
+(merge-rule "쎦" "쎦")
+(merge-rule "쎧" "쎧")
+(merge-rule "쎨" "쎨")
+(merge-rule "쎩" "쎩")
+(merge-rule "쎪" "쎪")
+(merge-rule "쎫" "쎫")
+(merge-rule "쎬" "쎬")
+(merge-rule "쎭" "쎭")
+(merge-rule "쎮" "쎮")
+(merge-rule "쎯" "쎯")
+(merge-rule "쎰" "쎰")
+(merge-rule "쎱" "쎱")
+(merge-rule "쎲" "쎲")
+(merge-rule "쎳" "쎳")
+(merge-rule "쎴" "쎴")
+(merge-rule "쎵" "쎵")
+(merge-rule "쎶" "쎶")
+(merge-rule "쎷" "쎷")
+(merge-rule "쎸" "쎸")
+(merge-rule "쎹" "쎹")
+(merge-rule "쎺" "á„Šá…§á‡")
+(merge-rule "쎻" "쎻")
+(merge-rule "쎼" "쎼~b")
+(merge-rule "쎽" "쎽")
+(merge-rule "쎾" "쎾")
+(merge-rule "쎿" "쎿")
+(merge-rule "ì€" "쏀")
+(merge-rule "ì" "쏁")
+(merge-rule "ì‚" "쏂")
+(merge-rule "ìƒ" "쏃")
+(merge-rule "ì„" "쏄")
+(merge-rule "ì…" "쏅")
+(merge-rule "ì†" "쏆")
+(merge-rule "ì‡" "쏇")
+(merge-rule "ìˆ" "쏈")
+(merge-rule "ì‰" "쏉")
+(merge-rule "ìŠ" "쏊")
+(merge-rule "ì‹" "쏋")
+(merge-rule "ìŒ" "쏌")
+(merge-rule "ì" "쏍")
+(merge-rule "ìŽ" "쏎")
+(merge-rule "ì" "쏏")
+(merge-rule "ì" "쏐")
+(merge-rule "ì‘" "쏑")
+(merge-rule "ì’" "쏒")
+(merge-rule "ì“" "쏓")
+(merge-rule "ì”" "쏔")
+(merge-rule "ì•" "쏕")
+(merge-rule "ì–" "á„Šá…¨á‡")
+(merge-rule "ì—" "쏗")
+(merge-rule "ì˜" "á„Šá…©~b")
+(merge-rule "ì™" "쏙")
+(merge-rule "ìš" "쏚")
+(merge-rule "ì›" "쏛")
+(merge-rule "ìœ" "쏜")
+(merge-rule "ì" "쏝")
+(merge-rule "ìž" "쏞")
+(merge-rule "ìŸ" "쏟")
+(merge-rule "ì " "쏠")
+(merge-rule "ì¡" "쏡")
+(merge-rule "ì¢" "쏢")
+(merge-rule "ì£" "쏣")
+(merge-rule "ì¤" "쏤")
+(merge-rule "ì¥" "쏥")
+(merge-rule "ì¦" "쏦")
+(merge-rule "ì§" "쏧")
+(merge-rule "ì¨" "쏨")
+(merge-rule "ì©" "쏩")
+(merge-rule "ìª" "쏪")
+(merge-rule "ì«" "쏫")
+(merge-rule "ì¬" "쏬")
+(merge-rule "ì­" "쏭")
+(merge-rule "ì®" "쏮")
+(merge-rule "ì¯" "쏯")
+(merge-rule "ì°" "쏰")
+(merge-rule "ì±" "쏱")
+(merge-rule "ì²" "á„Šá…©á‡")
+(merge-rule "ì³" "쏳")
+(merge-rule "ì´" "á„Šá…ª~b")
+(merge-rule "ìµ" "쏵")
+(merge-rule "ì¶" "쏶")
+(merge-rule "ì·" "쏷")
+(merge-rule "ì¸" "쏸")
+(merge-rule "ì¹" "쏹")
+(merge-rule "ìº" "쏺")
+(merge-rule "ì»" "쏻")
+(merge-rule "ì¼" "쏼")
+(merge-rule "ì½" "쏽")
+(merge-rule "ì¾" "쏾")
+(merge-rule "ì¿" "쏿")
+(merge-rule "ì€" "쐀")
+(merge-rule "ì" "쐁")
+(merge-rule "ì‚" "쐂")
+(merge-rule "ìƒ" "쐃")
+(merge-rule "ì„" "쐄")
+(merge-rule "ì…" "쐅")
+(merge-rule "ì†" "쐆")
+(merge-rule "ì‡" "쐇")
+(merge-rule "ìˆ" "쐈")
+(merge-rule "ì‰" "쐉")
+(merge-rule "ìŠ" "쐊")
+(merge-rule "ì‹" "쐋")
+(merge-rule "ìŒ" "쐌")
+(merge-rule "ì" "쐍")
+(merge-rule "ìŽ" "á„Šá…ªá‡")
+(merge-rule "ì" "쐏")
+(merge-rule "ì" "á„Šá…«~b")
+(merge-rule "ì‘" "쐑")
+(merge-rule "ì’" "쐒")
+(merge-rule "ì“" "쐓")
+(merge-rule "ì”" "쐔")
+(merge-rule "ì•" "쐕")
+(merge-rule "ì–" "쐖")
+(merge-rule "ì—" "쐗")
+(merge-rule "ì˜" "쐘")
+(merge-rule "ì™" "쐙")
+(merge-rule "ìš" "쐚")
+(merge-rule "ì›" "쐛")
+(merge-rule "ìœ" "쐜")
+(merge-rule "ì" "쐝")
+(merge-rule "ìž" "쐞")
+(merge-rule "ìŸ" "쐟")
+(merge-rule "ì " "쐠")
+(merge-rule "ì¡" "쐡")
+(merge-rule "ì¢" "쐢")
+(merge-rule "ì£" "쐣")
+(merge-rule "ì¤" "쐤")
+(merge-rule "ì¥" "쐥")
+(merge-rule "ì¦" "쐦")
+(merge-rule "ì§" "쐧")
+(merge-rule "ì¨" "쐨")
+(merge-rule "ì©" "쐩")
+(merge-rule "ìª" "á„Šá…«á‡")
+(merge-rule "ì«" "쐫")
+(merge-rule "ì¬" "á„Šá…¬~b")
+(merge-rule "ì­" "쐭")
+(merge-rule "ì®" "쐮")
+(merge-rule "ì¯" "쐯")
+(merge-rule "ì°" "쐰")
+(merge-rule "ì±" "쐱")
+(merge-rule "ì²" "쐲")
+(merge-rule "ì³" "쐳")
+(merge-rule "ì´" "쐴")
+(merge-rule "ìµ" "쐵")
+(merge-rule "ì¶" "쐶")
+(merge-rule "ì·" "쐷")
+(merge-rule "ì¸" "쐸")
+(merge-rule "ì¹" "쐹")
+(merge-rule "ìº" "쐺")
+(merge-rule "ì»" "쐻")
+(merge-rule "ì¼" "쐼")
+(merge-rule "ì½" "쐽")
+(merge-rule "ì¾" "쐾")
+(merge-rule "ì¿" "쐿")
+(merge-rule "쑀" "쑀")
+(merge-rule "ì‘" "쑁")
+(merge-rule "쑂" "쑂")
+(merge-rule "쑃" "쑃")
+(merge-rule "쑄" "쑄")
+(merge-rule "쑅" "쑅")
+(merge-rule "쑆" "á„Šá…¬á‡")
+(merge-rule "쑇" "쑇")
+(merge-rule "쑈" "쑈~b")
+(merge-rule "쑉" "쑉")
+(merge-rule "쑊" "쑊")
+(merge-rule "쑋" "쑋")
+(merge-rule "쑌" "쑌")
+(merge-rule "ì‘" "쑍")
+(merge-rule "쑎" "쑎")
+(merge-rule "ì‘" "쑏")
+(merge-rule "ì‘" "쑐")
+(merge-rule "쑑" "쑑")
+(merge-rule "쑒" "쑒")
+(merge-rule "쑓" "쑓")
+(merge-rule "쑔" "쑔")
+(merge-rule "쑕" "쑕")
+(merge-rule "쑖" "쑖")
+(merge-rule "쑗" "쑗")
+(merge-rule "쑘" "쑘")
+(merge-rule "쑙" "쑙")
+(merge-rule "쑚" "쑚")
+(merge-rule "쑛" "쑛")
+(merge-rule "쑜" "쑜")
+(merge-rule "ì‘" "쑝")
+(merge-rule "쑞" "쑞")
+(merge-rule "쑟" "쑟")
+(merge-rule "쑠" "쑠")
+(merge-rule "쑡" "쑡")
+(merge-rule "ì‘¢" "á„Šá…­á‡")
+(merge-rule "쑣" "쑣")
+(merge-rule "쑤" "쑤~b")
+(merge-rule "쑥" "쑥")
+(merge-rule "쑦" "쑦")
+(merge-rule "쑧" "쑧")
+(merge-rule "쑨" "쑨")
+(merge-rule "쑩" "쑩")
+(merge-rule "쑪" "쑪")
+(merge-rule "쑫" "쑫")
+(merge-rule "쑬" "쑬")
+(merge-rule "쑭" "쑭")
+(merge-rule "쑮" "쑮")
+(merge-rule "쑯" "쑯")
+(merge-rule "쑰" "쑰")
+(merge-rule "쑱" "쑱")
+(merge-rule "쑲" "쑲")
+(merge-rule "쑳" "쑳")
+(merge-rule "쑴" "쑴")
+(merge-rule "쑵" "쑵")
+(merge-rule "쑶" "쑶")
+(merge-rule "쑷" "쑷")
+(merge-rule "쑸" "쑸")
+(merge-rule "쑹" "쑹")
+(merge-rule "쑺" "쑺")
+(merge-rule "쑻" "쑻")
+(merge-rule "쑼" "쑼")
+(merge-rule "쑽" "쑽")
+(merge-rule "쑾" "á„Šá…®á‡")
+(merge-rule "쑿" "쑿")
+(merge-rule "ì’€" "á„Šá…¯~b")
+(merge-rule "ì’" "쒁")
+(merge-rule "쒂" "쒂")
+(merge-rule "쒃" "쒃")
+(merge-rule "쒄" "쒄")
+(merge-rule "쒅" "쒅")
+(merge-rule "쒆" "쒆")
+(merge-rule "쒇" "쒇")
+(merge-rule "쒈" "쒈")
+(merge-rule "쒉" "쒉")
+(merge-rule "쒊" "쒊")
+(merge-rule "쒋" "쒋")
+(merge-rule "쒌" "쒌")
+(merge-rule "ì’" "쒍")
+(merge-rule "쒎" "쒎")
+(merge-rule "ì’" "쒏")
+(merge-rule "ì’" "쒐")
+(merge-rule "쒑" "쒑")
+(merge-rule "쒒" "쒒")
+(merge-rule "쒓" "쒓")
+(merge-rule "쒔" "쒔")
+(merge-rule "쒕" "쒕")
+(merge-rule "쒖" "쒖")
+(merge-rule "쒗" "쒗")
+(merge-rule "쒘" "쒘")
+(merge-rule "쒙" "쒙")
+(merge-rule "ì’š" "á„Šá…¯á‡")
+(merge-rule "쒛" "쒛")
+(merge-rule "쒜" "쒜~b")
+(merge-rule "ì’" "쒝")
+(merge-rule "쒞" "쒞")
+(merge-rule "쒟" "쒟")
+(merge-rule "쒠" "쒠")
+(merge-rule "쒡" "쒡")
+(merge-rule "쒢" "쒢")
+(merge-rule "쒣" "쒣")
+(merge-rule "쒤" "쒤")
+(merge-rule "쒥" "쒥")
+(merge-rule "쒦" "쒦")
+(merge-rule "쒧" "쒧")
+(merge-rule "쒨" "쒨")
+(merge-rule "쒩" "쒩")
+(merge-rule "쒪" "쒪")
+(merge-rule "쒫" "쒫")
+(merge-rule "쒬" "쒬")
+(merge-rule "쒭" "쒭")
+(merge-rule "쒮" "쒮")
+(merge-rule "쒯" "쒯")
+(merge-rule "쒰" "쒰")
+(merge-rule "쒱" "쒱")
+(merge-rule "쒲" "쒲")
+(merge-rule "쒳" "쒳")
+(merge-rule "쒴" "쒴")
+(merge-rule "쒵" "쒵")
+(merge-rule "ì’¶" "á„Šá…°á‡")
+(merge-rule "쒷" "쒷")
+(merge-rule "ì’¸" "á„Šá…±~b")
+(merge-rule "쒹" "쒹")
+(merge-rule "쒺" "쒺")
+(merge-rule "쒻" "쒻")
+(merge-rule "쒼" "쒼")
+(merge-rule "쒽" "쒽")
+(merge-rule "쒾" "쒾")
+(merge-rule "쒿" "쒿")
+(merge-rule "쓀" "쓀")
+(merge-rule "ì“" "쓁")
+(merge-rule "쓂" "쓂")
+(merge-rule "쓃" "쓃")
+(merge-rule "쓄" "쓄")
+(merge-rule "쓅" "쓅")
+(merge-rule "쓆" "쓆")
+(merge-rule "쓇" "쓇")
+(merge-rule "쓈" "쓈")
+(merge-rule "쓉" "쓉")
+(merge-rule "쓊" "쓊")
+(merge-rule "쓋" "쓋")
+(merge-rule "쓌" "쓌")
+(merge-rule "ì“" "쓍")
+(merge-rule "쓎" "쓎")
+(merge-rule "ì“" "쓏")
+(merge-rule "ì“" "쓐")
+(merge-rule "쓑" "쓑")
+(merge-rule "ì“’" "á„Šá…±á‡")
+(merge-rule "쓓" "쓓")
+(merge-rule "ì“”" "á„Šá…²~b")
+(merge-rule "쓕" "쓕")
+(merge-rule "쓖" "쓖")
+(merge-rule "쓗" "쓗")
+(merge-rule "쓘" "쓘")
+(merge-rule "쓙" "쓙")
+(merge-rule "쓚" "쓚")
+(merge-rule "쓛" "쓛")
+(merge-rule "쓜" "쓜")
+(merge-rule "ì“" "쓝")
+(merge-rule "쓞" "쓞")
+(merge-rule "쓟" "쓟")
+(merge-rule "쓠" "쓠")
+(merge-rule "쓡" "쓡")
+(merge-rule "쓢" "쓢")
+(merge-rule "쓣" "쓣")
+(merge-rule "쓤" "쓤")
+(merge-rule "쓥" "쓥")
+(merge-rule "쓦" "쓦")
+(merge-rule "쓧" "쓧")
+(merge-rule "쓨" "쓨")
+(merge-rule "쓩" "쓩")
+(merge-rule "쓪" "쓪")
+(merge-rule "쓫" "쓫")
+(merge-rule "쓬" "쓬")
+(merge-rule "쓭" "쓭")
+(merge-rule "ì“®" "á„Šá…²á‡")
+(merge-rule "쓯" "쓯")
+(merge-rule "ì“°" "á„Šá…³~b")
+(merge-rule "쓱" "쓱")
+(merge-rule "쓲" "쓲")
+(merge-rule "쓳" "쓳")
+(merge-rule "쓴" "쓴")
+(merge-rule "쓵" "쓵")
+(merge-rule "쓶" "쓶")
+(merge-rule "쓷" "쓷")
+(merge-rule "쓸" "쓸")
+(merge-rule "쓹" "쓹")
+(merge-rule "쓺" "쓺")
+(merge-rule "쓻" "쓻")
+(merge-rule "쓼" "쓼")
+(merge-rule "쓽" "쓽")
+(merge-rule "쓾" "쓾")
+(merge-rule "쓿" "쓿")
+(merge-rule "씀" "씀")
+(merge-rule "ì”" "씁")
+(merge-rule "씂" "씂")
+(merge-rule "씃" "씃")
+(merge-rule "씄" "씄")
+(merge-rule "씅" "씅")
+(merge-rule "씆" "씆")
+(merge-rule "씇" "씇")
+(merge-rule "씈" "씈")
+(merge-rule "씉" "씉")
+(merge-rule "씊" "á„Šá…³á‡")
+(merge-rule "씋" "씋")
+(merge-rule "씌" "씌~b")
+(merge-rule "ì”" "씍")
+(merge-rule "씎" "씎")
+(merge-rule "ì”" "씏")
+(merge-rule "ì”" "씐")
+(merge-rule "씑" "씑")
+(merge-rule "씒" "씒")
+(merge-rule "씓" "씓")
+(merge-rule "씔" "씔")
+(merge-rule "씕" "씕")
+(merge-rule "씖" "씖")
+(merge-rule "씗" "씗")
+(merge-rule "씘" "씘")
+(merge-rule "씙" "씙")
+(merge-rule "씚" "씚")
+(merge-rule "씛" "씛")
+(merge-rule "씜" "씜")
+(merge-rule "ì”" "씝")
+(merge-rule "씞" "씞")
+(merge-rule "씟" "씟")
+(merge-rule "씠" "씠")
+(merge-rule "씡" "씡")
+(merge-rule "씢" "씢")
+(merge-rule "씣" "씣")
+(merge-rule "씤" "씤")
+(merge-rule "씥" "씥")
+(merge-rule "씦" "á„Šá…´á‡")
+(merge-rule "씧" "씧")
+(merge-rule "씨" "씨~b")
+(merge-rule "씩" "씩")
+(merge-rule "씪" "씪")
+(merge-rule "씫" "씫")
+(merge-rule "씬" "씬")
+(merge-rule "씭" "씭")
+(merge-rule "씮" "씮")
+(merge-rule "씯" "씯")
+(merge-rule "씰" "씰")
+(merge-rule "씱" "씱")
+(merge-rule "씲" "씲")
+(merge-rule "씳" "씳")
+(merge-rule "씴" "씴")
+(merge-rule "씵" "씵")
+(merge-rule "씶" "씶")
+(merge-rule "씷" "씷")
+(merge-rule "씸" "씸")
+(merge-rule "씹" "씹")
+(merge-rule "씺" "씺")
+(merge-rule "씻" "씻")
+(merge-rule "씼" "씼")
+(merge-rule "씽" "씽")
+(merge-rule "씾" "씾")
+(merge-rule "씿" "씿")
+(merge-rule "앀" "앀")
+(merge-rule "ì•" "앁")
+(merge-rule "ì•‚" "á„Šá…µá‡")
+(merge-rule "앃" "앃")
+(merge-rule "ì•„" "á„‹á…¡~b")
+(merge-rule "악" "악")
+(merge-rule "앆" "앆")
+(merge-rule "앇" "앇")
+(merge-rule "안" "안")
+(merge-rule "앉" "앉")
+(merge-rule "않" "않")
+(merge-rule "앋" "앋")
+(merge-rule "알" "알")
+(merge-rule "ì•" "앍")
+(merge-rule "앎" "앎")
+(merge-rule "ì•" "앏")
+(merge-rule "ì•" "앐")
+(merge-rule "앑" "앑")
+(merge-rule "앒" "앒")
+(merge-rule "앓" "앓")
+(merge-rule "암" "암")
+(merge-rule "압" "압")
+(merge-rule "앖" "앖")
+(merge-rule "앗" "앗")
+(merge-rule "았" "았")
+(merge-rule "앙" "앙")
+(merge-rule "앚" "앚")
+(merge-rule "앛" "앛")
+(merge-rule "앜" "앜")
+(merge-rule "ì•" "앝")
+(merge-rule "ì•ž" "á„‹á…¡á‡")
+(merge-rule "앟" "앟")
+(merge-rule "ì• " "á„‹á…¢~b")
+(merge-rule "액" "액")
+(merge-rule "앢" "앢")
+(merge-rule "앣" "앣")
+(merge-rule "앤" "앤")
+(merge-rule "앥" "앥")
+(merge-rule "앦" "앦")
+(merge-rule "앧" "앧")
+(merge-rule "앨" "앨")
+(merge-rule "앩" "앩")
+(merge-rule "앪" "앪")
+(merge-rule "앫" "앫")
+(merge-rule "앬" "앬")
+(merge-rule "앭" "앭")
+(merge-rule "앮" "앮")
+(merge-rule "앯" "앯")
+(merge-rule "앰" "앰")
+(merge-rule "앱" "앱")
+(merge-rule "앲" "앲")
+(merge-rule "앳" "앳")
+(merge-rule "앴" "앴")
+(merge-rule "앵" "앵")
+(merge-rule "앶" "앶")
+(merge-rule "앷" "앷")
+(merge-rule "앸" "앸")
+(merge-rule "앹" "앹")
+(merge-rule "앺" "á„‹á…¢á‡")
+(merge-rule "앻" "앻")
+(merge-rule "야" "야~b")
+(merge-rule "약" "약")
+(merge-rule "앾" "앾")
+(merge-rule "앿" "앿")
+(merge-rule "얀" "얀")
+(merge-rule "ì–" "얁")
+(merge-rule "얂" "얂")
+(merge-rule "얃" "얃")
+(merge-rule "얄" "얄")
+(merge-rule "얅" "얅")
+(merge-rule "얆" "얆")
+(merge-rule "얇" "얇")
+(merge-rule "얈" "얈")
+(merge-rule "얉" "얉")
+(merge-rule "얊" "얊")
+(merge-rule "얋" "얋")
+(merge-rule "얌" "얌")
+(merge-rule "ì–" "얍")
+(merge-rule "얎" "얎")
+(merge-rule "ì–" "얏")
+(merge-rule "ì–" "얐")
+(merge-rule "양" "양")
+(merge-rule "얒" "얒")
+(merge-rule "얓" "얓")
+(merge-rule "얔" "얔")
+(merge-rule "얕" "얕")
+(merge-rule "ì––" "á„‹á…£á‡")
+(merge-rule "얗" "얗")
+(merge-rule "ì–˜" "á„‹á…¤~b")
+(merge-rule "얙" "얙")
+(merge-rule "얚" "얚")
+(merge-rule "얛" "얛")
+(merge-rule "얜" "얜")
+(merge-rule "ì–" "얝")
+(merge-rule "얞" "얞")
+(merge-rule "얟" "얟")
+(merge-rule "얠" "얠")
+(merge-rule "얡" "얡")
+(merge-rule "얢" "얢")
+(merge-rule "얣" "얣")
+(merge-rule "얤" "얤")
+(merge-rule "얥" "얥")
+(merge-rule "얦" "얦")
+(merge-rule "얧" "얧")
+(merge-rule "얨" "얨")
+(merge-rule "얩" "얩")
+(merge-rule "얪" "얪")
+(merge-rule "얫" "얫")
+(merge-rule "얬" "얬")
+(merge-rule "얭" "얭")
+(merge-rule "얮" "얮")
+(merge-rule "얯" "얯")
+(merge-rule "얰" "얰")
+(merge-rule "얱" "얱")
+(merge-rule "ì–²" "á„‹á…¤á‡")
+(merge-rule "얳" "얳")
+(merge-rule "ì–´" "á„‹á…¥~b")
+(merge-rule "억" "억")
+(merge-rule "얶" "얶")
+(merge-rule "얷" "얷")
+(merge-rule "언" "언")
+(merge-rule "얹" "얹")
+(merge-rule "얺" "얺")
+(merge-rule "얻" "얻")
+(merge-rule "얼" "얼")
+(merge-rule "얽" "얽")
+(merge-rule "얾" "얾")
+(merge-rule "얿" "얿")
+(merge-rule "엀" "엀")
+(merge-rule "ì—" "엁")
+(merge-rule "엂" "엂")
+(merge-rule "엃" "엃")
+(merge-rule "엄" "엄")
+(merge-rule "업" "업")
+(merge-rule "없" "없")
+(merge-rule "엇" "엇")
+(merge-rule "었" "었")
+(merge-rule "엉" "엉")
+(merge-rule "엊" "엊")
+(merge-rule "엋" "엋")
+(merge-rule "엌" "엌")
+(merge-rule "ì—" "엍")
+(merge-rule "ì—Ž" "á„‹á…¥á‡")
+(merge-rule "ì—" "엏")
+(merge-rule "ì—" "á„‹á…¦~b")
+(merge-rule "엑" "엑")
+(merge-rule "엒" "엒")
+(merge-rule "엓" "엓")
+(merge-rule "엔" "엔")
+(merge-rule "엕" "엕")
+(merge-rule "엖" "엖")
+(merge-rule "엗" "엗")
+(merge-rule "엘" "엘")
+(merge-rule "엙" "엙")
+(merge-rule "엚" "엚")
+(merge-rule "엛" "엛")
+(merge-rule "엜" "엜")
+(merge-rule "ì—" "엝")
+(merge-rule "엞" "엞")
+(merge-rule "엟" "엟")
+(merge-rule "엠" "엠")
+(merge-rule "엡" "엡")
+(merge-rule "엢" "엢")
+(merge-rule "엣" "엣")
+(merge-rule "엤" "엤")
+(merge-rule "엥" "엥")
+(merge-rule "엦" "엦")
+(merge-rule "엧" "엧")
+(merge-rule "엨" "엨")
+(merge-rule "엩" "엩")
+(merge-rule "ì—ª" "á„‹á…¦á‡")
+(merge-rule "엫" "엫")
+(merge-rule "ì—¬" "á„‹á…§~b")
+(merge-rule "역" "역")
+(merge-rule "엮" "엮")
+(merge-rule "엯" "엯")
+(merge-rule "연" "연")
+(merge-rule "엱" "엱")
+(merge-rule "엲" "엲")
+(merge-rule "엳" "엳")
+(merge-rule "열" "열")
+(merge-rule "엵" "엵")
+(merge-rule "엶" "엶")
+(merge-rule "엷" "엷")
+(merge-rule "엸" "엸")
+(merge-rule "엹" "엹")
+(merge-rule "엺" "엺")
+(merge-rule "엻" "엻")
+(merge-rule "염" "염")
+(merge-rule "엽" "엽")
+(merge-rule "엾" "엾")
+(merge-rule "엿" "엿")
+(merge-rule "였" "였")
+(merge-rule "ì˜" "영")
+(merge-rule "옂" "옂")
+(merge-rule "옃" "옃")
+(merge-rule "옄" "옄")
+(merge-rule "옅" "옅")
+(merge-rule "옆" "á„‹á…§á‡")
+(merge-rule "옇" "옇")
+(merge-rule "예" "예~b")
+(merge-rule "옉" "옉")
+(merge-rule "옊" "옊")
+(merge-rule "옋" "옋")
+(merge-rule "옌" "옌")
+(merge-rule "ì˜" "옍")
+(merge-rule "옎" "옎")
+(merge-rule "ì˜" "옏")
+(merge-rule "ì˜" "옐")
+(merge-rule "옑" "옑")
+(merge-rule "옒" "옒")
+(merge-rule "옓" "옓")
+(merge-rule "옔" "옔")
+(merge-rule "옕" "옕")
+(merge-rule "옖" "옖")
+(merge-rule "옗" "옗")
+(merge-rule "옘" "옘")
+(merge-rule "옙" "옙")
+(merge-rule "옚" "옚")
+(merge-rule "옛" "옛")
+(merge-rule "옜" "옜")
+(merge-rule "ì˜" "옝")
+(merge-rule "옞" "옞")
+(merge-rule "옟" "옟")
+(merge-rule "옠" "옠")
+(merge-rule "옡" "옡")
+(merge-rule "옢" "á„‹á…¨á‡")
+(merge-rule "옣" "옣")
+(merge-rule "오" "오~b")
+(merge-rule "옥" "옥")
+(merge-rule "옦" "옦")
+(merge-rule "옧" "옧")
+(merge-rule "온" "온")
+(merge-rule "옩" "옩")
+(merge-rule "옪" "옪")
+(merge-rule "옫" "옫")
+(merge-rule "올" "올")
+(merge-rule "옭" "옭")
+(merge-rule "옮" "옮")
+(merge-rule "옯" "옯")
+(merge-rule "옰" "옰")
+(merge-rule "옱" "옱")
+(merge-rule "옲" "옲")
+(merge-rule "옳" "옳")
+(merge-rule "옴" "옴")
+(merge-rule "옵" "옵")
+(merge-rule "옶" "옶")
+(merge-rule "옷" "옷")
+(merge-rule "옸" "옸")
+(merge-rule "옹" "옹")
+(merge-rule "옺" "옺")
+(merge-rule "옻" "옻")
+(merge-rule "옼" "옼")
+(merge-rule "옽" "옽")
+(merge-rule "옾" "á„‹á…©á‡")
+(merge-rule "옿" "옿")
+(merge-rule "와" "와~b")
+(merge-rule "ì™" "왁")
+(merge-rule "왂" "왂")
+(merge-rule "왃" "왃")
+(merge-rule "완" "완")
+(merge-rule "왅" "왅")
+(merge-rule "왆" "왆")
+(merge-rule "왇" "왇")
+(merge-rule "왈" "왈")
+(merge-rule "왉" "왉")
+(merge-rule "왊" "왊")
+(merge-rule "왋" "왋")
+(merge-rule "왌" "왌")
+(merge-rule "ì™" "왍")
+(merge-rule "왎" "왎")
+(merge-rule "ì™" "왏")
+(merge-rule "ì™" "왐")
+(merge-rule "왑" "왑")
+(merge-rule "왒" "왒")
+(merge-rule "왓" "왓")
+(merge-rule "왔" "왔")
+(merge-rule "왕" "왕")
+(merge-rule "왖" "왖")
+(merge-rule "왗" "왗")
+(merge-rule "왘" "왘")
+(merge-rule "왙" "왙")
+(merge-rule "왚" "á„‹á…ªá‡")
+(merge-rule "왛" "왛")
+(merge-rule "왜" "왜~b")
+(merge-rule "ì™" "왝")
+(merge-rule "왞" "왞")
+(merge-rule "왟" "왟")
+(merge-rule "왠" "왠")
+(merge-rule "왡" "왡")
+(merge-rule "왢" "왢")
+(merge-rule "왣" "왣")
+(merge-rule "왤" "왤")
+(merge-rule "왥" "왥")
+(merge-rule "왦" "왦")
+(merge-rule "왧" "왧")
+(merge-rule "왨" "왨")
+(merge-rule "왩" "왩")
+(merge-rule "왪" "왪")
+(merge-rule "왫" "왫")
+(merge-rule "왬" "왬")
+(merge-rule "왭" "왭")
+(merge-rule "왮" "왮")
+(merge-rule "왯" "왯")
+(merge-rule "왰" "왰")
+(merge-rule "왱" "왱")
+(merge-rule "왲" "왲")
+(merge-rule "왳" "왳")
+(merge-rule "왴" "왴")
+(merge-rule "왵" "왵")
+(merge-rule "왶" "á„‹á…«á‡")
+(merge-rule "왷" "왷")
+(merge-rule "외" "외~b")
+(merge-rule "왹" "왹")
+(merge-rule "왺" "왺")
+(merge-rule "왻" "왻")
+(merge-rule "왼" "왼")
+(merge-rule "왽" "왽")
+(merge-rule "왾" "왾")
+(merge-rule "왿" "왿")
+(merge-rule "욀" "욀")
+(merge-rule "ìš" "욁")
+(merge-rule "욂" "욂")
+(merge-rule "욃" "욃")
+(merge-rule "욄" "욄")
+(merge-rule "욅" "욅")
+(merge-rule "욆" "욆")
+(merge-rule "욇" "욇")
+(merge-rule "욈" "욈")
+(merge-rule "욉" "욉")
+(merge-rule "욊" "욊")
+(merge-rule "욋" "욋")
+(merge-rule "욌" "욌")
+(merge-rule "ìš" "욍")
+(merge-rule "욎" "욎")
+(merge-rule "ìš" "욏")
+(merge-rule "ìš" "욐")
+(merge-rule "욑" "욑")
+(merge-rule "ìš’" "á„‹á…¬á‡")
+(merge-rule "욓" "욓")
+(merge-rule "ìš”" "á„‹á…­~b")
+(merge-rule "욕" "욕")
+(merge-rule "욖" "욖")
+(merge-rule "욗" "욗")
+(merge-rule "욘" "욘")
+(merge-rule "욙" "욙")
+(merge-rule "욚" "욚")
+(merge-rule "욛" "욛")
+(merge-rule "욜" "욜")
+(merge-rule "ìš" "욝")
+(merge-rule "욞" "욞")
+(merge-rule "욟" "욟")
+(merge-rule "욠" "욠")
+(merge-rule "욡" "욡")
+(merge-rule "욢" "욢")
+(merge-rule "욣" "욣")
+(merge-rule "욤" "욤")
+(merge-rule "욥" "욥")
+(merge-rule "욦" "욦")
+(merge-rule "욧" "욧")
+(merge-rule "욨" "욨")
+(merge-rule "용" "용")
+(merge-rule "욪" "욪")
+(merge-rule "욫" "욫")
+(merge-rule "욬" "욬")
+(merge-rule "욭" "욭")
+(merge-rule "ìš®" "á„‹á…­á‡")
+(merge-rule "욯" "욯")
+(merge-rule "ìš°" "á„‹á…®~b")
+(merge-rule "욱" "욱")
+(merge-rule "욲" "욲")
+(merge-rule "욳" "욳")
+(merge-rule "운" "운")
+(merge-rule "욵" "욵")
+(merge-rule "욶" "욶")
+(merge-rule "욷" "욷")
+(merge-rule "울" "울")
+(merge-rule "욹" "욹")
+(merge-rule "욺" "욺")
+(merge-rule "욻" "욻")
+(merge-rule "욼" "욼")
+(merge-rule "욽" "욽")
+(merge-rule "욾" "욾")
+(merge-rule "욿" "욿")
+(merge-rule "움" "움")
+(merge-rule "ì›" "웁")
+(merge-rule "웂" "웂")
+(merge-rule "웃" "웃")
+(merge-rule "웄" "웄")
+(merge-rule "웅" "웅")
+(merge-rule "웆" "웆")
+(merge-rule "웇" "웇")
+(merge-rule "웈" "웈")
+(merge-rule "웉" "웉")
+(merge-rule "웊" "á„‹á…®á‡")
+(merge-rule "웋" "웋")
+(merge-rule "워" "워~b")
+(merge-rule "ì›" "웍")
+(merge-rule "웎" "웎")
+(merge-rule "ì›" "웏")
+(merge-rule "ì›" "원")
+(merge-rule "웑" "웑")
+(merge-rule "웒" "웒")
+(merge-rule "웓" "웓")
+(merge-rule "월" "월")
+(merge-rule "웕" "웕")
+(merge-rule "웖" "웖")
+(merge-rule "웗" "웗")
+(merge-rule "웘" "웘")
+(merge-rule "웙" "웙")
+(merge-rule "웚" "웚")
+(merge-rule "웛" "웛")
+(merge-rule "웜" "웜")
+(merge-rule "ì›" "웝")
+(merge-rule "웞" "웞")
+(merge-rule "웟" "웟")
+(merge-rule "웠" "웠")
+(merge-rule "웡" "웡")
+(merge-rule "웢" "웢")
+(merge-rule "웣" "웣")
+(merge-rule "웤" "웤")
+(merge-rule "웥" "웥")
+(merge-rule "웦" "á„‹á…¯á‡")
+(merge-rule "웧" "웧")
+(merge-rule "웨" "웨~b")
+(merge-rule "웩" "웩")
+(merge-rule "웪" "웪")
+(merge-rule "웫" "웫")
+(merge-rule "웬" "웬")
+(merge-rule "웭" "웭")
+(merge-rule "웮" "웮")
+(merge-rule "웯" "웯")
+(merge-rule "웰" "웰")
+(merge-rule "웱" "웱")
+(merge-rule "웲" "웲")
+(merge-rule "웳" "웳")
+(merge-rule "웴" "웴")
+(merge-rule "웵" "웵")
+(merge-rule "웶" "웶")
+(merge-rule "웷" "웷")
+(merge-rule "웸" "웸")
+(merge-rule "웹" "웹")
+(merge-rule "웺" "웺")
+(merge-rule "웻" "웻")
+(merge-rule "웼" "웼")
+(merge-rule "웽" "웽")
+(merge-rule "웾" "웾")
+(merge-rule "웿" "웿")
+(merge-rule "윀" "윀")
+(merge-rule "ìœ" "윁")
+(merge-rule "윂" "á„‹á…°á‡")
+(merge-rule "윃" "윃")
+(merge-rule "위" "위~b")
+(merge-rule "윅" "윅")
+(merge-rule "윆" "윆")
+(merge-rule "윇" "윇")
+(merge-rule "윈" "윈")
+(merge-rule "윉" "윉")
+(merge-rule "윊" "윊")
+(merge-rule "윋" "윋")
+(merge-rule "윌" "윌")
+(merge-rule "ìœ" "윍")
+(merge-rule "윎" "윎")
+(merge-rule "ìœ" "윏")
+(merge-rule "ìœ" "윐")
+(merge-rule "윑" "윑")
+(merge-rule "윒" "윒")
+(merge-rule "윓" "윓")
+(merge-rule "윔" "윔")
+(merge-rule "윕" "윕")
+(merge-rule "윖" "윖")
+(merge-rule "윗" "윗")
+(merge-rule "윘" "윘")
+(merge-rule "윙" "윙")
+(merge-rule "윚" "윚")
+(merge-rule "윛" "윛")
+(merge-rule "윜" "윜")
+(merge-rule "ìœ" "윝")
+(merge-rule "윞" "á„‹á…±á‡")
+(merge-rule "윟" "윟")
+(merge-rule "유" "유~b")
+(merge-rule "육" "육")
+(merge-rule "윢" "윢")
+(merge-rule "윣" "윣")
+(merge-rule "윤" "윤")
+(merge-rule "윥" "윥")
+(merge-rule "윦" "윦")
+(merge-rule "윧" "윧")
+(merge-rule "율" "율")
+(merge-rule "윩" "윩")
+(merge-rule "윪" "윪")
+(merge-rule "윫" "윫")
+(merge-rule "윬" "윬")
+(merge-rule "윭" "윭")
+(merge-rule "윮" "윮")
+(merge-rule "윯" "윯")
+(merge-rule "윰" "윰")
+(merge-rule "윱" "윱")
+(merge-rule "윲" "윲")
+(merge-rule "윳" "윳")
+(merge-rule "윴" "윴")
+(merge-rule "융" "융")
+(merge-rule "윶" "윶")
+(merge-rule "윷" "윷")
+(merge-rule "윸" "윸")
+(merge-rule "윹" "윹")
+(merge-rule "윺" "á„‹á…²á‡")
+(merge-rule "윻" "윻")
+(merge-rule "으" "으~b")
+(merge-rule "윽" "윽")
+(merge-rule "윾" "윾")
+(merge-rule "윿" "윿")
+(merge-rule "ì€" "은")
+(merge-rule "ì" "읁")
+(merge-rule "ì‚" "읂")
+(merge-rule "ìƒ" "읃")
+(merge-rule "ì„" "을")
+(merge-rule "ì…" "읅")
+(merge-rule "ì†" "읆")
+(merge-rule "ì‡" "읇")
+(merge-rule "ìˆ" "읈")
+(merge-rule "ì‰" "읉")
+(merge-rule "ìŠ" "읊")
+(merge-rule "ì‹" "읋")
+(merge-rule "ìŒ" "음")
+(merge-rule "ì" "읍")
+(merge-rule "ìŽ" "읎")
+(merge-rule "ì" "읏")
+(merge-rule "ì" "읐")
+(merge-rule "ì‘" "응")
+(merge-rule "ì’" "읒")
+(merge-rule "ì“" "읓")
+(merge-rule "ì”" "읔")
+(merge-rule "ì•" "읕")
+(merge-rule "ì–" "á„‹á…³á‡")
+(merge-rule "ì—" "읗")
+(merge-rule "ì˜" "á„‹á…´~b")
+(merge-rule "ì™" "읙")
+(merge-rule "ìš" "읚")
+(merge-rule "ì›" "읛")
+(merge-rule "ìœ" "읜")
+(merge-rule "ì" "읝")
+(merge-rule "ìž" "읞")
+(merge-rule "ìŸ" "읟")
+(merge-rule "ì " "읠")
+(merge-rule "ì¡" "읡")
+(merge-rule "ì¢" "읢")
+(merge-rule "ì£" "읣")
+(merge-rule "ì¤" "읤")
+(merge-rule "ì¥" "읥")
+(merge-rule "ì¦" "읦")
+(merge-rule "ì§" "읧")
+(merge-rule "ì¨" "읨")
+(merge-rule "ì©" "읩")
+(merge-rule "ìª" "읪")
+(merge-rule "ì«" "읫")
+(merge-rule "ì¬" "읬")
+(merge-rule "ì­" "읭")
+(merge-rule "ì®" "읮")
+(merge-rule "ì¯" "읯")
+(merge-rule "ì°" "읰")
+(merge-rule "ì±" "읱")
+(merge-rule "ì²" "á„‹á…´á‡")
+(merge-rule "ì³" "읳")
+(merge-rule "ì´" "á„‹á…µ~b")
+(merge-rule "ìµ" "익")
+(merge-rule "ì¶" "읶")
+(merge-rule "ì·" "읷")
+(merge-rule "ì¸" "인")
+(merge-rule "ì¹" "읹")
+(merge-rule "ìº" "읺")
+(merge-rule "ì»" "읻")
+(merge-rule "ì¼" "일")
+(merge-rule "ì½" "읽")
+(merge-rule "ì¾" "읾")
+(merge-rule "ì¿" "읿")
+(merge-rule "잀" "잀")
+(merge-rule "ìž" "잁")
+(merge-rule "잂" "잂")
+(merge-rule "잃" "잃")
+(merge-rule "임" "임")
+(merge-rule "입" "입")
+(merge-rule "잆" "잆")
+(merge-rule "잇" "잇")
+(merge-rule "있" "있")
+(merge-rule "잉" "잉")
+(merge-rule "잊" "잊")
+(merge-rule "잋" "잋")
+(merge-rule "잌" "잌")
+(merge-rule "ìž" "잍")
+(merge-rule "잎" "á„‹á…µá‡")
+(merge-rule "ìž" "잏")
+(merge-rule "ìž" "자~b")
+(merge-rule "작" "작")
+(merge-rule "잒" "잒")
+(merge-rule "잓" "잓")
+(merge-rule "잔" "잔")
+(merge-rule "잕" "잕")
+(merge-rule "잖" "잖")
+(merge-rule "잗" "잗")
+(merge-rule "잘" "잘")
+(merge-rule "잙" "잙")
+(merge-rule "잚" "잚")
+(merge-rule "잛" "잛")
+(merge-rule "잜" "잜")
+(merge-rule "ìž" "잝")
+(merge-rule "잞" "잞")
+(merge-rule "잟" "잟")
+(merge-rule "잠" "잠")
+(merge-rule "잡" "잡")
+(merge-rule "잢" "잢")
+(merge-rule "잣" "잣")
+(merge-rule "잤" "잤")
+(merge-rule "장" "장")
+(merge-rule "잦" "잦")
+(merge-rule "잧" "잧")
+(merge-rule "잨" "잨")
+(merge-rule "잩" "잩")
+(merge-rule "잪" "자á‡")
+(merge-rule "잫" "잫")
+(merge-rule "재" "재~b")
+(merge-rule "잭" "잭")
+(merge-rule "잮" "잮")
+(merge-rule "잯" "잯")
+(merge-rule "잰" "잰")
+(merge-rule "잱" "잱")
+(merge-rule "잲" "잲")
+(merge-rule "잳" "잳")
+(merge-rule "잴" "잴")
+(merge-rule "잵" "잵")
+(merge-rule "잶" "잶")
+(merge-rule "잷" "잷")
+(merge-rule "잸" "잸")
+(merge-rule "잹" "잹")
+(merge-rule "잺" "잺")
+(merge-rule "잻" "잻")
+(merge-rule "잼" "잼")
+(merge-rule "잽" "잽")
+(merge-rule "잾" "잾")
+(merge-rule "잿" "잿")
+(merge-rule "쟀" "쟀")
+(merge-rule "ìŸ" "쟁")
+(merge-rule "쟂" "쟂")
+(merge-rule "쟃" "쟃")
+(merge-rule "쟄" "쟄")
+(merge-rule "쟅" "쟅")
+(merge-rule "쟆" "재á‡")
+(merge-rule "쟇" "쟇")
+(merge-rule "쟈" "쟈~b")
+(merge-rule "쟉" "쟉")
+(merge-rule "쟊" "쟊")
+(merge-rule "쟋" "쟋")
+(merge-rule "쟌" "쟌")
+(merge-rule "ìŸ" "쟍")
+(merge-rule "쟎" "쟎")
+(merge-rule "ìŸ" "쟏")
+(merge-rule "ìŸ" "쟐")
+(merge-rule "쟑" "쟑")
+(merge-rule "쟒" "쟒")
+(merge-rule "쟓" "쟓")
+(merge-rule "쟔" "쟔")
+(merge-rule "쟕" "쟕")
+(merge-rule "쟖" "쟖")
+(merge-rule "쟗" "쟗")
+(merge-rule "쟘" "쟘")
+(merge-rule "쟙" "쟙")
+(merge-rule "쟚" "쟚")
+(merge-rule "쟛" "쟛")
+(merge-rule "쟜" "쟜")
+(merge-rule "ìŸ" "쟝")
+(merge-rule "쟞" "쟞")
+(merge-rule "쟟" "쟟")
+(merge-rule "쟠" "쟠")
+(merge-rule "쟡" "쟡")
+(merge-rule "쟢" "쟈á‡")
+(merge-rule "쟣" "쟣")
+(merge-rule "쟤" "쟤~b")
+(merge-rule "쟥" "쟥")
+(merge-rule "쟦" "쟦")
+(merge-rule "쟧" "쟧")
+(merge-rule "쟨" "쟨")
+(merge-rule "쟩" "쟩")
+(merge-rule "쟪" "쟪")
+(merge-rule "쟫" "쟫")
+(merge-rule "쟬" "쟬")
+(merge-rule "쟭" "쟭")
+(merge-rule "쟮" "쟮")
+(merge-rule "쟯" "쟯")
+(merge-rule "쟰" "쟰")
+(merge-rule "쟱" "쟱")
+(merge-rule "쟲" "쟲")
+(merge-rule "쟳" "쟳")
+(merge-rule "쟴" "쟴")
+(merge-rule "쟵" "쟵")
+(merge-rule "쟶" "쟶")
+(merge-rule "쟷" "쟷")
+(merge-rule "쟸" "쟸")
+(merge-rule "쟹" "쟹")
+(merge-rule "쟺" "쟺")
+(merge-rule "쟻" "쟻")
+(merge-rule "쟼" "쟼")
+(merge-rule "쟽" "쟽")
+(merge-rule "쟾" "쟤á‡")
+(merge-rule "쟿" "쟿")
+(merge-rule "저" "저~b")
+(merge-rule "ì " "적")
+(merge-rule "젂" "젂")
+(merge-rule "젃" "젃")
+(merge-rule "전" "전")
+(merge-rule "젅" "젅")
+(merge-rule "젆" "젆")
+(merge-rule "젇" "젇")
+(merge-rule "절" "절")
+(merge-rule "젉" "젉")
+(merge-rule "젊" "젊")
+(merge-rule "젋" "젋")
+(merge-rule "젌" "젌")
+(merge-rule "ì " "젍")
+(merge-rule "젎" "젎")
+(merge-rule "ì " "젏")
+(merge-rule "ì " "점")
+(merge-rule "접" "접")
+(merge-rule "젒" "젒")
+(merge-rule "젓" "젓")
+(merge-rule "젔" "젔")
+(merge-rule "정" "정")
+(merge-rule "젖" "젖")
+(merge-rule "젗" "젗")
+(merge-rule "젘" "젘")
+(merge-rule "젙" "젙")
+(merge-rule "ì š" "저á‡")
+(merge-rule "젛" "젛")
+(merge-rule "제" "제~b")
+(merge-rule "ì " "젝")
+(merge-rule "젞" "젞")
+(merge-rule "젟" "젟")
+(merge-rule "젠" "젠")
+(merge-rule "젡" "젡")
+(merge-rule "젢" "젢")
+(merge-rule "젣" "젣")
+(merge-rule "젤" "젤")
+(merge-rule "젥" "젥")
+(merge-rule "젦" "젦")
+(merge-rule "젧" "젧")
+(merge-rule "젨" "젨")
+(merge-rule "젩" "젩")
+(merge-rule "젪" "젪")
+(merge-rule "젫" "젫")
+(merge-rule "젬" "젬")
+(merge-rule "젭" "젭")
+(merge-rule "젮" "젮")
+(merge-rule "젯" "젯")
+(merge-rule "젰" "젰")
+(merge-rule "젱" "젱")
+(merge-rule "젲" "젲")
+(merge-rule "젳" "젳")
+(merge-rule "젴" "젴")
+(merge-rule "젵" "젵")
+(merge-rule "ì ¶" "제á‡")
+(merge-rule "젷" "젷")
+(merge-rule "져" "져~b")
+(merge-rule "젹" "젹")
+(merge-rule "젺" "젺")
+(merge-rule "젻" "젻")
+(merge-rule "젼" "젼")
+(merge-rule "젽" "젽")
+(merge-rule "젾" "젾")
+(merge-rule "젿" "젿")
+(merge-rule "졀" "졀")
+(merge-rule "ì¡" "졁")
+(merge-rule "졂" "졂")
+(merge-rule "졃" "졃")
+(merge-rule "졄" "졄")
+(merge-rule "졅" "졅")
+(merge-rule "졆" "졆")
+(merge-rule "졇" "졇")
+(merge-rule "졈" "졈")
+(merge-rule "졉" "졉")
+(merge-rule "졊" "졊")
+(merge-rule "졋" "졋")
+(merge-rule "졌" "졌")
+(merge-rule "ì¡" "졍")
+(merge-rule "졎" "졎")
+(merge-rule "ì¡" "졏")
+(merge-rule "ì¡" "졐")
+(merge-rule "졑" "졑")
+(merge-rule "ì¡’" "져á‡")
+(merge-rule "졓" "졓")
+(merge-rule "졔" "졔~b")
+(merge-rule "졕" "졕")
+(merge-rule "졖" "졖")
+(merge-rule "졗" "졗")
+(merge-rule "졘" "졘")
+(merge-rule "졙" "졙")
+(merge-rule "졚" "졚")
+(merge-rule "졛" "졛")
+(merge-rule "졜" "졜")
+(merge-rule "ì¡" "졝")
+(merge-rule "졞" "졞")
+(merge-rule "졟" "졟")
+(merge-rule "졠" "졠")
+(merge-rule "졡" "졡")
+(merge-rule "졢" "졢")
+(merge-rule "졣" "졣")
+(merge-rule "졤" "졤")
+(merge-rule "졥" "졥")
+(merge-rule "졦" "졦")
+(merge-rule "졧" "졧")
+(merge-rule "졨" "졨")
+(merge-rule "졩" "졩")
+(merge-rule "졪" "졪")
+(merge-rule "졫" "졫")
+(merge-rule "졬" "졬")
+(merge-rule "졭" "졭")
+(merge-rule "ì¡®" "졔á‡")
+(merge-rule "졯" "졯")
+(merge-rule "조" "조~b")
+(merge-rule "족" "족")
+(merge-rule "졲" "졲")
+(merge-rule "졳" "졳")
+(merge-rule "존" "존")
+(merge-rule "졵" "졵")
+(merge-rule "졶" "졶")
+(merge-rule "졷" "졷")
+(merge-rule "졸" "졸")
+(merge-rule "졹" "졹")
+(merge-rule "졺" "졺")
+(merge-rule "졻" "졻")
+(merge-rule "졼" "졼")
+(merge-rule "졽" "졽")
+(merge-rule "졾" "졾")
+(merge-rule "졿" "졿")
+(merge-rule "좀" "좀")
+(merge-rule "ì¢" "좁")
+(merge-rule "좂" "좂")
+(merge-rule "좃" "좃")
+(merge-rule "좄" "좄")
+(merge-rule "종" "종")
+(merge-rule "좆" "좆")
+(merge-rule "좇" "좇")
+(merge-rule "좈" "좈")
+(merge-rule "좉" "좉")
+(merge-rule "좊" "조á‡")
+(merge-rule "좋" "좋")
+(merge-rule "좌" "좌~b")
+(merge-rule "ì¢" "좍")
+(merge-rule "좎" "좎")
+(merge-rule "ì¢" "좏")
+(merge-rule "ì¢" "좐")
+(merge-rule "좑" "좑")
+(merge-rule "좒" "좒")
+(merge-rule "좓" "좓")
+(merge-rule "좔" "좔")
+(merge-rule "좕" "좕")
+(merge-rule "좖" "좖")
+(merge-rule "좗" "좗")
+(merge-rule "좘" "좘")
+(merge-rule "좙" "좙")
+(merge-rule "좚" "좚")
+(merge-rule "좛" "좛")
+(merge-rule "좜" "좜")
+(merge-rule "ì¢" "좝")
+(merge-rule "좞" "좞")
+(merge-rule "좟" "좟")
+(merge-rule "좠" "좠")
+(merge-rule "좡" "좡")
+(merge-rule "좢" "좢")
+(merge-rule "좣" "좣")
+(merge-rule "좤" "좤")
+(merge-rule "좥" "좥")
+(merge-rule "좦" "좌á‡")
+(merge-rule "좧" "좧")
+(merge-rule "좨" "좨~b")
+(merge-rule "좩" "좩")
+(merge-rule "좪" "좪")
+(merge-rule "좫" "좫")
+(merge-rule "좬" "좬")
+(merge-rule "좭" "좭")
+(merge-rule "좮" "좮")
+(merge-rule "좯" "좯")
+(merge-rule "좰" "좰")
+(merge-rule "좱" "좱")
+(merge-rule "좲" "좲")
+(merge-rule "좳" "좳")
+(merge-rule "좴" "좴")
+(merge-rule "좵" "좵")
+(merge-rule "좶" "좶")
+(merge-rule "좷" "좷")
+(merge-rule "좸" "좸")
+(merge-rule "좹" "좹")
+(merge-rule "좺" "좺")
+(merge-rule "좻" "좻")
+(merge-rule "좼" "좼")
+(merge-rule "좽" "좽")
+(merge-rule "좾" "좾")
+(merge-rule "좿" "좿")
+(merge-rule "죀" "죀")
+(merge-rule "ì£" "죁")
+(merge-rule "죂" "좨á‡")
+(merge-rule "죃" "죃")
+(merge-rule "죄" "죄~b")
+(merge-rule "죅" "죅")
+(merge-rule "죆" "죆")
+(merge-rule "죇" "죇")
+(merge-rule "죈" "죈")
+(merge-rule "죉" "죉")
+(merge-rule "죊" "죊")
+(merge-rule "죋" "죋")
+(merge-rule "죌" "죌")
+(merge-rule "ì£" "죍")
+(merge-rule "죎" "죎")
+(merge-rule "ì£" "죏")
+(merge-rule "ì£" "죐")
+(merge-rule "죑" "죑")
+(merge-rule "죒" "죒")
+(merge-rule "죓" "죓")
+(merge-rule "죔" "죔")
+(merge-rule "죕" "죕")
+(merge-rule "죖" "죖")
+(merge-rule "죗" "죗")
+(merge-rule "죘" "죘")
+(merge-rule "죙" "죙")
+(merge-rule "죚" "죚")
+(merge-rule "죛" "죛")
+(merge-rule "죜" "죜")
+(merge-rule "ì£" "죝")
+(merge-rule "죞" "죄á‡")
+(merge-rule "죟" "죟")
+(merge-rule "죠" "죠~b")
+(merge-rule "죡" "죡")
+(merge-rule "죢" "죢")
+(merge-rule "죣" "죣")
+(merge-rule "죤" "죤")
+(merge-rule "죥" "죥")
+(merge-rule "죦" "죦")
+(merge-rule "죧" "죧")
+(merge-rule "죨" "죨")
+(merge-rule "죩" "죩")
+(merge-rule "죪" "죪")
+(merge-rule "죫" "죫")
+(merge-rule "죬" "죬")
+(merge-rule "죭" "죭")
+(merge-rule "죮" "죮")
+(merge-rule "죯" "죯")
+(merge-rule "죰" "죰")
+(merge-rule "죱" "죱")
+(merge-rule "죲" "죲")
+(merge-rule "죳" "죳")
+(merge-rule "죴" "죴")
+(merge-rule "죵" "죵")
+(merge-rule "죶" "죶")
+(merge-rule "죷" "죷")
+(merge-rule "죸" "죸")
+(merge-rule "죹" "죹")
+(merge-rule "죺" "죠á‡")
+(merge-rule "죻" "죻")
+(merge-rule "주" "주~b")
+(merge-rule "죽" "죽")
+(merge-rule "죾" "죾")
+(merge-rule "죿" "죿")
+(merge-rule "준" "준")
+(merge-rule "ì¤" "줁")
+(merge-rule "줂" "줂")
+(merge-rule "줃" "줃")
+(merge-rule "줄" "줄")
+(merge-rule "줅" "줅")
+(merge-rule "줆" "줆")
+(merge-rule "줇" "줇")
+(merge-rule "줈" "줈")
+(merge-rule "줉" "줉")
+(merge-rule "줊" "줊")
+(merge-rule "줋" "줋")
+(merge-rule "줌" "줌")
+(merge-rule "ì¤" "줍")
+(merge-rule "줎" "줎")
+(merge-rule "ì¤" "줏")
+(merge-rule "ì¤" "줐")
+(merge-rule "중" "중")
+(merge-rule "줒" "줒")
+(merge-rule "줓" "줓")
+(merge-rule "줔" "줔")
+(merge-rule "줕" "줕")
+(merge-rule "줖" "주á‡")
+(merge-rule "줗" "줗")
+(merge-rule "줘" "줘~b")
+(merge-rule "줙" "줙")
+(merge-rule "줚" "줚")
+(merge-rule "줛" "줛")
+(merge-rule "줜" "줜")
+(merge-rule "ì¤" "줝")
+(merge-rule "줞" "줞")
+(merge-rule "줟" "줟")
+(merge-rule "줠" "줠")
+(merge-rule "줡" "줡")
+(merge-rule "줢" "줢")
+(merge-rule "줣" "줣")
+(merge-rule "줤" "줤")
+(merge-rule "줥" "줥")
+(merge-rule "줦" "줦")
+(merge-rule "줧" "줧")
+(merge-rule "줨" "줨")
+(merge-rule "줩" "줩")
+(merge-rule "줪" "줪")
+(merge-rule "줫" "줫")
+(merge-rule "줬" "줬")
+(merge-rule "줭" "줭")
+(merge-rule "줮" "줮")
+(merge-rule "줯" "줯")
+(merge-rule "줰" "줰")
+(merge-rule "줱" "줱")
+(merge-rule "줲" "줘á‡")
+(merge-rule "줳" "줳")
+(merge-rule "줴" "줴~b")
+(merge-rule "줵" "줵")
+(merge-rule "줶" "줶")
+(merge-rule "줷" "줷")
+(merge-rule "줸" "줸")
+(merge-rule "줹" "줹")
+(merge-rule "줺" "줺")
+(merge-rule "줻" "줻")
+(merge-rule "줼" "줼")
+(merge-rule "줽" "줽")
+(merge-rule "줾" "줾")
+(merge-rule "줿" "줿")
+(merge-rule "쥀" "쥀")
+(merge-rule "ì¥" "쥁")
+(merge-rule "쥂" "쥂")
+(merge-rule "쥃" "쥃")
+(merge-rule "쥄" "쥄")
+(merge-rule "쥅" "쥅")
+(merge-rule "쥆" "쥆")
+(merge-rule "쥇" "쥇")
+(merge-rule "쥈" "쥈")
+(merge-rule "쥉" "쥉")
+(merge-rule "쥊" "쥊")
+(merge-rule "쥋" "쥋")
+(merge-rule "쥌" "쥌")
+(merge-rule "ì¥" "쥍")
+(merge-rule "쥎" "줴á‡")
+(merge-rule "ì¥" "쥏")
+(merge-rule "ì¥" "쥐~b")
+(merge-rule "쥑" "쥑")
+(merge-rule "쥒" "쥒")
+(merge-rule "쥓" "쥓")
+(merge-rule "쥔" "쥔")
+(merge-rule "쥕" "쥕")
+(merge-rule "쥖" "쥖")
+(merge-rule "쥗" "쥗")
+(merge-rule "쥘" "쥘")
+(merge-rule "쥙" "쥙")
+(merge-rule "쥚" "쥚")
+(merge-rule "쥛" "쥛")
+(merge-rule "쥜" "쥜")
+(merge-rule "ì¥" "쥝")
+(merge-rule "쥞" "쥞")
+(merge-rule "쥟" "쥟")
+(merge-rule "쥠" "쥠")
+(merge-rule "쥡" "쥡")
+(merge-rule "쥢" "쥢")
+(merge-rule "쥣" "쥣")
+(merge-rule "쥤" "쥤")
+(merge-rule "쥥" "쥥")
+(merge-rule "쥦" "쥦")
+(merge-rule "쥧" "쥧")
+(merge-rule "쥨" "쥨")
+(merge-rule "쥩" "쥩")
+(merge-rule "쥪" "쥐á‡")
+(merge-rule "쥫" "쥫")
+(merge-rule "쥬" "쥬~b")
+(merge-rule "쥭" "쥭")
+(merge-rule "쥮" "쥮")
+(merge-rule "쥯" "쥯")
+(merge-rule "쥰" "쥰")
+(merge-rule "쥱" "쥱")
+(merge-rule "쥲" "쥲")
+(merge-rule "쥳" "쥳")
+(merge-rule "쥴" "쥴")
+(merge-rule "쥵" "쥵")
+(merge-rule "쥶" "쥶")
+(merge-rule "쥷" "쥷")
+(merge-rule "쥸" "쥸")
+(merge-rule "쥹" "쥹")
+(merge-rule "쥺" "쥺")
+(merge-rule "쥻" "쥻")
+(merge-rule "쥼" "쥼")
+(merge-rule "쥽" "쥽")
+(merge-rule "쥾" "쥾")
+(merge-rule "쥿" "쥿")
+(merge-rule "즀" "즀")
+(merge-rule "ì¦" "즁")
+(merge-rule "즂" "즂")
+(merge-rule "즃" "즃")
+(merge-rule "즄" "즄")
+(merge-rule "즅" "즅")
+(merge-rule "즆" "쥬á‡")
+(merge-rule "즇" "즇")
+(merge-rule "즈" "즈~b")
+(merge-rule "즉" "즉")
+(merge-rule "즊" "즊")
+(merge-rule "즋" "즋")
+(merge-rule "즌" "즌")
+(merge-rule "ì¦" "즍")
+(merge-rule "즎" "즎")
+(merge-rule "ì¦" "즏")
+(merge-rule "ì¦" "즐")
+(merge-rule "즑" "즑")
+(merge-rule "즒" "즒")
+(merge-rule "즓" "즓")
+(merge-rule "즔" "즔")
+(merge-rule "즕" "즕")
+(merge-rule "즖" "즖")
+(merge-rule "즗" "즗")
+(merge-rule "즘" "즘")
+(merge-rule "즙" "즙")
+(merge-rule "즚" "즚")
+(merge-rule "즛" "즛")
+(merge-rule "즜" "즜")
+(merge-rule "ì¦" "증")
+(merge-rule "즞" "즞")
+(merge-rule "즟" "즟")
+(merge-rule "즠" "즠")
+(merge-rule "즡" "즡")
+(merge-rule "즢" "즈á‡")
+(merge-rule "즣" "즣")
+(merge-rule "즤" "즤~b")
+(merge-rule "즥" "즥")
+(merge-rule "즦" "즦")
+(merge-rule "즧" "즧")
+(merge-rule "즨" "즨")
+(merge-rule "즩" "즩")
+(merge-rule "즪" "즪")
+(merge-rule "즫" "즫")
+(merge-rule "즬" "즬")
+(merge-rule "즭" "즭")
+(merge-rule "즮" "즮")
+(merge-rule "즯" "즯")
+(merge-rule "즰" "즰")
+(merge-rule "즱" "즱")
+(merge-rule "즲" "즲")
+(merge-rule "즳" "즳")
+(merge-rule "즴" "즴")
+(merge-rule "즵" "즵")
+(merge-rule "즶" "즶")
+(merge-rule "즷" "즷")
+(merge-rule "즸" "즸")
+(merge-rule "즹" "즹")
+(merge-rule "즺" "즺")
+(merge-rule "즻" "즻")
+(merge-rule "즼" "즼")
+(merge-rule "즽" "즽")
+(merge-rule "즾" "즤á‡")
+(merge-rule "즿" "즿")
+(merge-rule "지" "지~b")
+(merge-rule "ì§" "직")
+(merge-rule "짂" "짂")
+(merge-rule "짃" "짃")
+(merge-rule "진" "진")
+(merge-rule "짅" "짅")
+(merge-rule "짆" "짆")
+(merge-rule "짇" "짇")
+(merge-rule "질" "질")
+(merge-rule "짉" "짉")
+(merge-rule "짊" "짊")
+(merge-rule "짋" "짋")
+(merge-rule "짌" "짌")
+(merge-rule "ì§" "짍")
+(merge-rule "짎" "짎")
+(merge-rule "ì§" "짏")
+(merge-rule "ì§" "짐")
+(merge-rule "집" "집")
+(merge-rule "짒" "짒")
+(merge-rule "짓" "짓")
+(merge-rule "짔" "짔")
+(merge-rule "징" "징")
+(merge-rule "짖" "짖")
+(merge-rule "짗" "짗")
+(merge-rule "짘" "짘")
+(merge-rule "짙" "짙")
+(merge-rule "짚" "지á‡")
+(merge-rule "짛" "짛")
+(merge-rule "짜" "á„á…¡~b")
+(merge-rule "ì§" "á„ᅡᆨ")
+(merge-rule "짞" "á„ᅡᆩ")
+(merge-rule "짟" "á„ᅡᆪ")
+(merge-rule "짠" "á„ᅡᆫ")
+(merge-rule "짡" "á„ᅡᆬ")
+(merge-rule "짢" "á„ᅡᆭ")
+(merge-rule "짣" "á„ᅡᆮ")
+(merge-rule "짤" "á„ᅡᆯ")
+(merge-rule "짥" "á„ᅡᆰ")
+(merge-rule "짦" "á„ᅡᆱ")
+(merge-rule "짧" "á„ᅡᆲ")
+(merge-rule "짨" "á„ᅡᆳ")
+(merge-rule "짩" "á„ᅡᆴ")
+(merge-rule "짪" "á„ᅡᆵ")
+(merge-rule "짫" "á„ᅡᆶ")
+(merge-rule "짬" "á„ᅡᆷ")
+(merge-rule "짭" "á„ᅡᆸ")
+(merge-rule "짮" "á„ᅡᆹ")
+(merge-rule "짯" "á„ᅡᆺ")
+(merge-rule "짰" "á„ᅡᆻ")
+(merge-rule "짱" "á„ᅡᆼ")
+(merge-rule "짲" "á„ᅡᆽ")
+(merge-rule "짳" "á„ᅡᆾ")
+(merge-rule "짴" "á„ᅡᆿ")
+(merge-rule "짵" "á„ᅡᇀ")
+(merge-rule "짶" "á„á…¡á‡")
+(merge-rule "짷" "á„ᅡᇂ")
+(merge-rule "째" "á„á…¢~b")
+(merge-rule "짹" "á„ᅢᆨ")
+(merge-rule "짺" "á„ᅢᆩ")
+(merge-rule "짻" "á„ᅢᆪ")
+(merge-rule "짼" "á„ᅢᆫ")
+(merge-rule "짽" "á„ᅢᆬ")
+(merge-rule "짾" "á„ᅢᆭ")
+(merge-rule "짿" "á„ᅢᆮ")
+(merge-rule "쨀" "á„ᅢᆯ")
+(merge-rule "ì¨" "á„ᅢᆰ")
+(merge-rule "쨂" "á„ᅢᆱ")
+(merge-rule "쨃" "á„ᅢᆲ")
+(merge-rule "쨄" "á„ᅢᆳ")
+(merge-rule "쨅" "á„ᅢᆴ")
+(merge-rule "쨆" "á„ᅢᆵ")
+(merge-rule "쨇" "á„ᅢᆶ")
+(merge-rule "쨈" "á„ᅢᆷ")
+(merge-rule "쨉" "á„ᅢᆸ")
+(merge-rule "쨊" "á„ᅢᆹ")
+(merge-rule "쨋" "á„ᅢᆺ")
+(merge-rule "쨌" "á„ᅢᆻ")
+(merge-rule "ì¨" "á„ᅢᆼ")
+(merge-rule "쨎" "á„ᅢᆽ")
+(merge-rule "ì¨" "á„ᅢᆾ")
+(merge-rule "ì¨" "á„ᅢᆿ")
+(merge-rule "쨑" "á„ᅢᇀ")
+(merge-rule "쨒" "á„á…¢á‡")
+(merge-rule "쨓" "á„ᅢᇂ")
+(merge-rule "쨔" "á„á…£~b")
+(merge-rule "쨕" "á„ᅣᆨ")
+(merge-rule "쨖" "á„ᅣᆩ")
+(merge-rule "쨗" "á„ᅣᆪ")
+(merge-rule "쨘" "á„ᅣᆫ")
+(merge-rule "쨙" "á„ᅣᆬ")
+(merge-rule "쨚" "á„ᅣᆭ")
+(merge-rule "쨛" "á„ᅣᆮ")
+(merge-rule "쨜" "á„ᅣᆯ")
+(merge-rule "ì¨" "á„ᅣᆰ")
+(merge-rule "쨞" "á„ᅣᆱ")
+(merge-rule "쨟" "á„ᅣᆲ")
+(merge-rule "쨠" "á„ᅣᆳ")
+(merge-rule "쨡" "á„ᅣᆴ")
+(merge-rule "쨢" "á„ᅣᆵ")
+(merge-rule "쨣" "á„ᅣᆶ")
+(merge-rule "쨤" "á„ᅣᆷ")
+(merge-rule "쨥" "á„ᅣᆸ")
+(merge-rule "쨦" "á„ᅣᆹ")
+(merge-rule "쨧" "á„ᅣᆺ")
+(merge-rule "쨨" "á„ᅣᆻ")
+(merge-rule "쨩" "á„ᅣᆼ")
+(merge-rule "쨪" "á„ᅣᆽ")
+(merge-rule "쨫" "á„ᅣᆾ")
+(merge-rule "쨬" "á„ᅣᆿ")
+(merge-rule "쨭" "á„ᅣᇀ")
+(merge-rule "쨮" "á„á…£á‡")
+(merge-rule "쨯" "á„ᅣᇂ")
+(merge-rule "쨰" "á„á…¤~b")
+(merge-rule "쨱" "á„ᅤᆨ")
+(merge-rule "쨲" "á„ᅤᆩ")
+(merge-rule "쨳" "á„ᅤᆪ")
+(merge-rule "쨴" "á„ᅤᆫ")
+(merge-rule "쨵" "á„ᅤᆬ")
+(merge-rule "쨶" "á„ᅤᆭ")
+(merge-rule "쨷" "á„ᅤᆮ")
+(merge-rule "쨸" "á„ᅤᆯ")
+(merge-rule "쨹" "á„ᅤᆰ")
+(merge-rule "쨺" "á„ᅤᆱ")
+(merge-rule "쨻" "á„ᅤᆲ")
+(merge-rule "쨼" "á„ᅤᆳ")
+(merge-rule "쨽" "á„ᅤᆴ")
+(merge-rule "쨾" "á„ᅤᆵ")
+(merge-rule "쨿" "á„ᅤᆶ")
+(merge-rule "ì©€" "á„ᅤᆷ")
+(merge-rule "ì©" "á„ᅤᆸ")
+(merge-rule "ì©‚" "á„ᅤᆹ")
+(merge-rule "쩃" "á„ᅤᆺ")
+(merge-rule "ì©„" "á„ᅤᆻ")
+(merge-rule "ì©…" "á„ᅤᆼ")
+(merge-rule "쩆" "á„ᅤᆽ")
+(merge-rule "쩇" "á„ᅤᆾ")
+(merge-rule "쩈" "á„ᅤᆿ")
+(merge-rule "쩉" "á„ᅤᇀ")
+(merge-rule "ì©Š" "á„á…¤á‡")
+(merge-rule "ì©‹" "á„ᅤᇂ")
+(merge-rule "ì©Œ" "á„á…¥~b")
+(merge-rule "ì©" "á„ᅥᆨ")
+(merge-rule "ì©Ž" "á„ᅥᆩ")
+(merge-rule "ì©" "á„ᅥᆪ")
+(merge-rule "ì©" "á„ᅥᆫ")
+(merge-rule "ì©‘" "á„ᅥᆬ")
+(merge-rule "ì©’" "á„ᅥᆭ")
+(merge-rule "ì©“" "á„ᅥᆮ")
+(merge-rule "ì©”" "á„ᅥᆯ")
+(merge-rule "ì©•" "á„ᅥᆰ")
+(merge-rule "ì©–" "á„ᅥᆱ")
+(merge-rule "ì©—" "á„ᅥᆲ")
+(merge-rule "쩘" "á„ᅥᆳ")
+(merge-rule "ì©™" "á„ᅥᆴ")
+(merge-rule "ì©š" "á„ᅥᆵ")
+(merge-rule "ì©›" "á„ᅥᆶ")
+(merge-rule "ì©œ" "á„ᅥᆷ")
+(merge-rule "ì©" "á„ᅥᆸ")
+(merge-rule "ì©ž" "á„ᅥᆹ")
+(merge-rule "ì©Ÿ" "á„ᅥᆺ")
+(merge-rule "ì© " "á„ᅥᆻ")
+(merge-rule "ì©¡" "á„ᅥᆼ")
+(merge-rule "ì©¢" "á„ᅥᆽ")
+(merge-rule "ì©£" "á„ᅥᆾ")
+(merge-rule "쩤" "á„ᅥᆿ")
+(merge-rule "ì©¥" "á„ᅥᇀ")
+(merge-rule "쩦" "á„á…¥á‡")
+(merge-rule "쩧" "á„ᅥᇂ")
+(merge-rule "쩨" "á„á…¦~b")
+(merge-rule "ì©©" "á„ᅦᆨ")
+(merge-rule "쩪" "á„ᅦᆩ")
+(merge-rule "ì©«" "á„ᅦᆪ")
+(merge-rule "쩬" "á„ᅦᆫ")
+(merge-rule "ì©­" "á„ᅦᆬ")
+(merge-rule "ì©®" "á„ᅦᆭ")
+(merge-rule "쩯" "á„ᅦᆮ")
+(merge-rule "ì©°" "á„ᅦᆯ")
+(merge-rule "쩱" "á„ᅦᆰ")
+(merge-rule "쩲" "á„ᅦᆱ")
+(merge-rule "쩳" "á„ᅦᆲ")
+(merge-rule "ì©´" "á„ᅦᆳ")
+(merge-rule "쩵" "á„ᅦᆴ")
+(merge-rule "쩶" "á„ᅦᆵ")
+(merge-rule "ì©·" "á„ᅦᆶ")
+(merge-rule "쩸" "á„ᅦᆷ")
+(merge-rule "쩹" "á„ᅦᆸ")
+(merge-rule "쩺" "á„ᅦᆹ")
+(merge-rule "ì©»" "á„ᅦᆺ")
+(merge-rule "쩼" "á„ᅦᆻ")
+(merge-rule "쩽" "á„ᅦᆼ")
+(merge-rule "쩾" "á„ᅦᆽ")
+(merge-rule "ì©¿" "á„ᅦᆾ")
+(merge-rule "쪀" "á„ᅦᆿ")
+(merge-rule "ìª" "á„ᅦᇀ")
+(merge-rule "쪂" "á„á…¦á‡")
+(merge-rule "쪃" "á„ᅦᇂ")
+(merge-rule "쪄" "á„á…§~b")
+(merge-rule "쪅" "á„ᅧᆨ")
+(merge-rule "쪆" "á„ᅧᆩ")
+(merge-rule "쪇" "á„ᅧᆪ")
+(merge-rule "쪈" "á„ᅧᆫ")
+(merge-rule "쪉" "á„ᅧᆬ")
+(merge-rule "쪊" "á„ᅧᆭ")
+(merge-rule "쪋" "á„ᅧᆮ")
+(merge-rule "쪌" "á„ᅧᆯ")
+(merge-rule "ìª" "á„ᅧᆰ")
+(merge-rule "쪎" "á„ᅧᆱ")
+(merge-rule "ìª" "á„ᅧᆲ")
+(merge-rule "ìª" "á„ᅧᆳ")
+(merge-rule "쪑" "á„ᅧᆴ")
+(merge-rule "쪒" "á„ᅧᆵ")
+(merge-rule "쪓" "á„ᅧᆶ")
+(merge-rule "쪔" "á„ᅧᆷ")
+(merge-rule "쪕" "á„ᅧᆸ")
+(merge-rule "쪖" "á„ᅧᆹ")
+(merge-rule "쪗" "á„ᅧᆺ")
+(merge-rule "쪘" "á„ᅧᆻ")
+(merge-rule "쪙" "á„ᅧᆼ")
+(merge-rule "쪚" "á„ᅧᆽ")
+(merge-rule "쪛" "á„ᅧᆾ")
+(merge-rule "쪜" "á„ᅧᆿ")
+(merge-rule "ìª" "á„ᅧᇀ")
+(merge-rule "쪞" "á„á…§á‡")
+(merge-rule "쪟" "á„ᅧᇂ")
+(merge-rule "쪠" "á„á…¨~b")
+(merge-rule "쪡" "á„ᅨᆨ")
+(merge-rule "쪢" "á„ᅨᆩ")
+(merge-rule "쪣" "á„ᅨᆪ")
+(merge-rule "쪤" "á„ᅨᆫ")
+(merge-rule "쪥" "á„ᅨᆬ")
+(merge-rule "쪦" "á„ᅨᆭ")
+(merge-rule "쪧" "á„ᅨᆮ")
+(merge-rule "쪨" "á„ᅨᆯ")
+(merge-rule "쪩" "á„ᅨᆰ")
+(merge-rule "쪪" "á„ᅨᆱ")
+(merge-rule "쪫" "á„ᅨᆲ")
+(merge-rule "쪬" "á„ᅨᆳ")
+(merge-rule "쪭" "á„ᅨᆴ")
+(merge-rule "쪮" "á„ᅨᆵ")
+(merge-rule "쪯" "á„ᅨᆶ")
+(merge-rule "쪰" "á„ᅨᆷ")
+(merge-rule "쪱" "á„ᅨᆸ")
+(merge-rule "쪲" "á„ᅨᆹ")
+(merge-rule "쪳" "á„ᅨᆺ")
+(merge-rule "쪴" "á„ᅨᆻ")
+(merge-rule "쪵" "á„ᅨᆼ")
+(merge-rule "쪶" "á„ᅨᆽ")
+(merge-rule "쪷" "á„ᅨᆾ")
+(merge-rule "쪸" "á„ᅨᆿ")
+(merge-rule "쪹" "á„ᅨᇀ")
+(merge-rule "쪺" "á„á…¨á‡")
+(merge-rule "쪻" "á„ᅨᇂ")
+(merge-rule "쪼" "á„á…©~b")
+(merge-rule "쪽" "á„ᅩᆨ")
+(merge-rule "쪾" "á„ᅩᆩ")
+(merge-rule "쪿" "á„ᅩᆪ")
+(merge-rule "ì«€" "á„ᅩᆫ")
+(merge-rule "ì«" "á„ᅩᆬ")
+(merge-rule "ì«‚" "á„ᅩᆭ")
+(merge-rule "쫃" "á„ᅩᆮ")
+(merge-rule "ì«„" "á„ᅩᆯ")
+(merge-rule "ì«…" "á„ᅩᆰ")
+(merge-rule "쫆" "á„ᅩᆱ")
+(merge-rule "쫇" "á„ᅩᆲ")
+(merge-rule "쫈" "á„ᅩᆳ")
+(merge-rule "쫉" "á„ᅩᆴ")
+(merge-rule "ì«Š" "á„ᅩᆵ")
+(merge-rule "ì«‹" "á„ᅩᆶ")
+(merge-rule "ì«Œ" "á„ᅩᆷ")
+(merge-rule "ì«" "á„ᅩᆸ")
+(merge-rule "ì«Ž" "á„ᅩᆹ")
+(merge-rule "ì«" "á„ᅩᆺ")
+(merge-rule "ì«" "á„ᅩᆻ")
+(merge-rule "ì«‘" "á„ᅩᆼ")
+(merge-rule "ì«’" "á„ᅩᆽ")
+(merge-rule "ì«“" "á„ᅩᆾ")
+(merge-rule "ì«”" "á„ᅩᆿ")
+(merge-rule "ì«•" "á„ᅩᇀ")
+(merge-rule "ì«–" "á„á…©á‡")
+(merge-rule "ì«—" "á„ᅩᇂ")
+(merge-rule "쫘" "á„á…ª~b")
+(merge-rule "ì«™" "á„ᅪᆨ")
+(merge-rule "ì«š" "á„ᅪᆩ")
+(merge-rule "ì«›" "á„ᅪᆪ")
+(merge-rule "ì«œ" "á„ᅪᆫ")
+(merge-rule "ì«" "á„ᅪᆬ")
+(merge-rule "ì«ž" "á„ᅪᆭ")
+(merge-rule "ì«Ÿ" "á„ᅪᆮ")
+(merge-rule "ì« " "á„ᅪᆯ")
+(merge-rule "ì«¡" "á„ᅪᆰ")
+(merge-rule "ì«¢" "á„ᅪᆱ")
+(merge-rule "ì«£" "á„ᅪᆲ")
+(merge-rule "쫤" "á„ᅪᆳ")
+(merge-rule "ì«¥" "á„ᅪᆴ")
+(merge-rule "쫦" "á„ᅪᆵ")
+(merge-rule "쫧" "á„ᅪᆶ")
+(merge-rule "쫨" "á„ᅪᆷ")
+(merge-rule "ì«©" "á„ᅪᆸ")
+(merge-rule "쫪" "á„ᅪᆹ")
+(merge-rule "ì««" "á„ᅪᆺ")
+(merge-rule "쫬" "á„ᅪᆻ")
+(merge-rule "ì«­" "á„ᅪᆼ")
+(merge-rule "ì«®" "á„ᅪᆽ")
+(merge-rule "쫯" "á„ᅪᆾ")
+(merge-rule "ì«°" "á„ᅪᆿ")
+(merge-rule "쫱" "á„ᅪᇀ")
+(merge-rule "쫲" "á„á…ªá‡")
+(merge-rule "쫳" "á„ᅪᇂ")
+(merge-rule "ì«´" "á„á…«~b")
+(merge-rule "쫵" "á„ᅫᆨ")
+(merge-rule "쫶" "á„ᅫᆩ")
+(merge-rule "ì«·" "á„ᅫᆪ")
+(merge-rule "쫸" "á„ᅫᆫ")
+(merge-rule "쫹" "á„ᅫᆬ")
+(merge-rule "쫺" "á„ᅫᆭ")
+(merge-rule "ì«»" "á„ᅫᆮ")
+(merge-rule "쫼" "á„ᅫᆯ")
+(merge-rule "쫽" "á„ᅫᆰ")
+(merge-rule "쫾" "á„ᅫᆱ")
+(merge-rule "ì«¿" "á„ᅫᆲ")
+(merge-rule "쬀" "á„ᅫᆳ")
+(merge-rule "ì¬" "á„ᅫᆴ")
+(merge-rule "쬂" "á„ᅫᆵ")
+(merge-rule "쬃" "á„ᅫᆶ")
+(merge-rule "쬄" "á„ᅫᆷ")
+(merge-rule "쬅" "á„ᅫᆸ")
+(merge-rule "쬆" "á„ᅫᆹ")
+(merge-rule "쬇" "á„ᅫᆺ")
+(merge-rule "쬈" "á„ᅫᆻ")
+(merge-rule "쬉" "á„ᅫᆼ")
+(merge-rule "쬊" "á„ᅫᆽ")
+(merge-rule "쬋" "á„ᅫᆾ")
+(merge-rule "쬌" "á„ᅫᆿ")
+(merge-rule "ì¬" "á„ᅫᇀ")
+(merge-rule "쬎" "á„á…«á‡")
+(merge-rule "ì¬" "á„ᅫᇂ")
+(merge-rule "ì¬" "á„á…¬~b")
+(merge-rule "쬑" "á„ᅬᆨ")
+(merge-rule "쬒" "á„ᅬᆩ")
+(merge-rule "쬓" "á„ᅬᆪ")
+(merge-rule "쬔" "á„ᅬᆫ")
+(merge-rule "쬕" "á„ᅬᆬ")
+(merge-rule "쬖" "á„ᅬᆭ")
+(merge-rule "쬗" "á„ᅬᆮ")
+(merge-rule "쬘" "á„ᅬᆯ")
+(merge-rule "쬙" "á„ᅬᆰ")
+(merge-rule "쬚" "á„ᅬᆱ")
+(merge-rule "쬛" "á„ᅬᆲ")
+(merge-rule "쬜" "á„ᅬᆳ")
+(merge-rule "ì¬" "á„ᅬᆴ")
+(merge-rule "쬞" "á„ᅬᆵ")
+(merge-rule "쬟" "á„ᅬᆶ")
+(merge-rule "쬠" "á„ᅬᆷ")
+(merge-rule "쬡" "á„ᅬᆸ")
+(merge-rule "쬢" "á„ᅬᆹ")
+(merge-rule "쬣" "á„ᅬᆺ")
+(merge-rule "쬤" "á„ᅬᆻ")
+(merge-rule "쬥" "á„ᅬᆼ")
+(merge-rule "쬦" "á„ᅬᆽ")
+(merge-rule "쬧" "á„ᅬᆾ")
+(merge-rule "쬨" "á„ᅬᆿ")
+(merge-rule "쬩" "á„ᅬᇀ")
+(merge-rule "쬪" "á„á…¬á‡")
+(merge-rule "쬫" "á„ᅬᇂ")
+(merge-rule "쬬" "á„á…­~b")
+(merge-rule "쬭" "á„ᅭᆨ")
+(merge-rule "쬮" "á„ᅭᆩ")
+(merge-rule "쬯" "á„ᅭᆪ")
+(merge-rule "쬰" "á„ᅭᆫ")
+(merge-rule "쬱" "á„ᅭᆬ")
+(merge-rule "쬲" "á„ᅭᆭ")
+(merge-rule "쬳" "á„ᅭᆮ")
+(merge-rule "쬴" "á„ᅭᆯ")
+(merge-rule "쬵" "á„ᅭᆰ")
+(merge-rule "쬶" "á„ᅭᆱ")
+(merge-rule "쬷" "á„ᅭᆲ")
+(merge-rule "쬸" "á„ᅭᆳ")
+(merge-rule "쬹" "á„ᅭᆴ")
+(merge-rule "쬺" "á„ᅭᆵ")
+(merge-rule "쬻" "á„ᅭᆶ")
+(merge-rule "쬼" "á„ᅭᆷ")
+(merge-rule "쬽" "á„ᅭᆸ")
+(merge-rule "쬾" "á„ᅭᆹ")
+(merge-rule "쬿" "á„ᅭᆺ")
+(merge-rule "ì­€" "á„ᅭᆻ")
+(merge-rule "ì­" "á„ᅭᆼ")
+(merge-rule "ì­‚" "á„ᅭᆽ")
+(merge-rule "ì­ƒ" "á„ᅭᆾ")
+(merge-rule "ì­„" "á„ᅭᆿ")
+(merge-rule "ì­…" "á„ᅭᇀ")
+(merge-rule "ì­†" "á„á…­á‡")
+(merge-rule "ì­‡" "á„ᅭᇂ")
+(merge-rule "ì­ˆ" "á„á…®~b")
+(merge-rule "ì­‰" "á„ᅮᆨ")
+(merge-rule "ì­Š" "á„ᅮᆩ")
+(merge-rule "ì­‹" "á„ᅮᆪ")
+(merge-rule "ì­Œ" "á„ᅮᆫ")
+(merge-rule "ì­" "á„ᅮᆬ")
+(merge-rule "ì­Ž" "á„ᅮᆭ")
+(merge-rule "ì­" "á„ᅮᆮ")
+(merge-rule "ì­" "á„ᅮᆯ")
+(merge-rule "ì­‘" "á„ᅮᆰ")
+(merge-rule "ì­’" "á„ᅮᆱ")
+(merge-rule "ì­“" "á„ᅮᆲ")
+(merge-rule "ì­”" "á„ᅮᆳ")
+(merge-rule "ì­•" "á„ᅮᆴ")
+(merge-rule "ì­–" "á„ᅮᆵ")
+(merge-rule "ì­—" "á„ᅮᆶ")
+(merge-rule "ì­˜" "á„ᅮᆷ")
+(merge-rule "ì­™" "á„ᅮᆸ")
+(merge-rule "ì­š" "á„ᅮᆹ")
+(merge-rule "ì­›" "á„ᅮᆺ")
+(merge-rule "ì­œ" "á„ᅮᆻ")
+(merge-rule "ì­" "á„ᅮᆼ")
+(merge-rule "ì­ž" "á„ᅮᆽ")
+(merge-rule "ì­Ÿ" "á„ᅮᆾ")
+(merge-rule "ì­ " "á„ᅮᆿ")
+(merge-rule "ì­¡" "á„ᅮᇀ")
+(merge-rule "ì­¢" "á„á…®á‡")
+(merge-rule "ì­£" "á„ᅮᇂ")
+(merge-rule "ì­¤" "á„á…¯~b")
+(merge-rule "ì­¥" "á„ᅯᆨ")
+(merge-rule "ì­¦" "á„ᅯᆩ")
+(merge-rule "ì­§" "á„ᅯᆪ")
+(merge-rule "ì­¨" "á„ᅯᆫ")
+(merge-rule "ì­©" "á„ᅯᆬ")
+(merge-rule "ì­ª" "á„ᅯᆭ")
+(merge-rule "ì­«" "á„ᅯᆮ")
+(merge-rule "ì­¬" "á„ᅯᆯ")
+(merge-rule "ì­­" "á„ᅯᆰ")
+(merge-rule "ì­®" "á„ᅯᆱ")
+(merge-rule "ì­¯" "á„ᅯᆲ")
+(merge-rule "ì­°" "á„ᅯᆳ")
+(merge-rule "ì­±" "á„ᅯᆴ")
+(merge-rule "ì­²" "á„ᅯᆵ")
+(merge-rule "ì­³" "á„ᅯᆶ")
+(merge-rule "ì­´" "á„ᅯᆷ")
+(merge-rule "ì­µ" "á„ᅯᆸ")
+(merge-rule "ì­¶" "á„ᅯᆹ")
+(merge-rule "ì­·" "á„ᅯᆺ")
+(merge-rule "ì­¸" "á„ᅯᆻ")
+(merge-rule "ì­¹" "á„ᅯᆼ")
+(merge-rule "ì­º" "á„ᅯᆽ")
+(merge-rule "ì­»" "á„ᅯᆾ")
+(merge-rule "ì­¼" "á„ᅯᆿ")
+(merge-rule "ì­½" "á„ᅯᇀ")
+(merge-rule "ì­¾" "á„á…¯á‡")
+(merge-rule "ì­¿" "á„ᅯᇂ")
+(merge-rule "쮀" "á„á…°~b")
+(merge-rule "ì®" "á„ᅰᆨ")
+(merge-rule "쮂" "á„ᅰᆩ")
+(merge-rule "쮃" "á„ᅰᆪ")
+(merge-rule "쮄" "á„ᅰᆫ")
+(merge-rule "ì®…" "á„ᅰᆬ")
+(merge-rule "쮆" "á„ᅰᆭ")
+(merge-rule "쮇" "á„ᅰᆮ")
+(merge-rule "쮈" "á„ᅰᆯ")
+(merge-rule "쮉" "á„ᅰᆰ")
+(merge-rule "쮊" "á„ᅰᆱ")
+(merge-rule "쮋" "á„ᅰᆲ")
+(merge-rule "쮌" "á„ᅰᆳ")
+(merge-rule "ì®" "á„ᅰᆴ")
+(merge-rule "쮎" "á„ᅰᆵ")
+(merge-rule "ì®" "á„ᅰᆶ")
+(merge-rule "ì®" "á„ᅰᆷ")
+(merge-rule "쮑" "á„ᅰᆸ")
+(merge-rule "ì®’" "á„ᅰᆹ")
+(merge-rule "쮓" "á„ᅰᆺ")
+(merge-rule "ì®”" "á„ᅰᆻ")
+(merge-rule "쮕" "á„ᅰᆼ")
+(merge-rule "ì®–" "á„ᅰᆽ")
+(merge-rule "ì®—" "á„ᅰᆾ")
+(merge-rule "쮘" "á„ᅰᆿ")
+(merge-rule "ì®™" "á„ᅰᇀ")
+(merge-rule "쮚" "á„á…°á‡")
+(merge-rule "ì®›" "á„ᅰᇂ")
+(merge-rule "쮜" "á„á…±~b")
+(merge-rule "ì®" "á„ᅱᆨ")
+(merge-rule "쮞" "á„ᅱᆩ")
+(merge-rule "쮟" "á„ᅱᆪ")
+(merge-rule "ì® " "á„ᅱᆫ")
+(merge-rule "쮡" "á„ᅱᆬ")
+(merge-rule "쮢" "á„ᅱᆭ")
+(merge-rule "쮣" "á„ᅱᆮ")
+(merge-rule "쮤" "á„ᅱᆯ")
+(merge-rule "쮥" "á„ᅱᆰ")
+(merge-rule "쮦" "á„ᅱᆱ")
+(merge-rule "쮧" "á„ᅱᆲ")
+(merge-rule "쮨" "á„ᅱᆳ")
+(merge-rule "쮩" "á„ᅱᆴ")
+(merge-rule "쮪" "á„ᅱᆵ")
+(merge-rule "쮫" "á„ᅱᆶ")
+(merge-rule "쮬" "á„ᅱᆷ")
+(merge-rule "ì®­" "á„ᅱᆸ")
+(merge-rule "ì®®" "á„ᅱᆹ")
+(merge-rule "쮯" "á„ᅱᆺ")
+(merge-rule "ì®°" "á„ᅱᆻ")
+(merge-rule "ì®±" "á„ᅱᆼ")
+(merge-rule "쮲" "á„ᅱᆽ")
+(merge-rule "쮳" "á„ᅱᆾ")
+(merge-rule "ì®´" "á„ᅱᆿ")
+(merge-rule "쮵" "á„ᅱᇀ")
+(merge-rule "쮶" "á„á…±á‡")
+(merge-rule "ì®·" "á„ᅱᇂ")
+(merge-rule "쮸" "á„á…²~b")
+(merge-rule "쮹" "á„ᅲᆨ")
+(merge-rule "쮺" "á„ᅲᆩ")
+(merge-rule "ì®»" "á„ᅲᆪ")
+(merge-rule "쮼" "á„ᅲᆫ")
+(merge-rule "쮽" "á„ᅲᆬ")
+(merge-rule "쮾" "á„ᅲᆭ")
+(merge-rule "쮿" "á„ᅲᆮ")
+(merge-rule "쯀" "á„ᅲᆯ")
+(merge-rule "ì¯" "á„ᅲᆰ")
+(merge-rule "쯂" "á„ᅲᆱ")
+(merge-rule "쯃" "á„ᅲᆲ")
+(merge-rule "쯄" "á„ᅲᆳ")
+(merge-rule "쯅" "á„ᅲᆴ")
+(merge-rule "쯆" "á„ᅲᆵ")
+(merge-rule "쯇" "á„ᅲᆶ")
+(merge-rule "쯈" "á„ᅲᆷ")
+(merge-rule "쯉" "á„ᅲᆸ")
+(merge-rule "쯊" "á„ᅲᆹ")
+(merge-rule "쯋" "á„ᅲᆺ")
+(merge-rule "쯌" "á„ᅲᆻ")
+(merge-rule "ì¯" "á„ᅲᆼ")
+(merge-rule "쯎" "á„ᅲᆽ")
+(merge-rule "ì¯" "á„ᅲᆾ")
+(merge-rule "ì¯" "á„ᅲᆿ")
+(merge-rule "쯑" "á„ᅲᇀ")
+(merge-rule "쯒" "á„á…²á‡")
+(merge-rule "쯓" "á„ᅲᇂ")
+(merge-rule "쯔" "á„á…³~b")
+(merge-rule "쯕" "á„ᅳᆨ")
+(merge-rule "쯖" "á„ᅳᆩ")
+(merge-rule "쯗" "á„ᅳᆪ")
+(merge-rule "쯘" "á„ᅳᆫ")
+(merge-rule "쯙" "á„ᅳᆬ")
+(merge-rule "쯚" "á„ᅳᆭ")
+(merge-rule "쯛" "á„ᅳᆮ")
+(merge-rule "쯜" "á„ᅳᆯ")
+(merge-rule "ì¯" "á„ᅳᆰ")
+(merge-rule "쯞" "á„ᅳᆱ")
+(merge-rule "쯟" "á„ᅳᆲ")
+(merge-rule "쯠" "á„ᅳᆳ")
+(merge-rule "쯡" "á„ᅳᆴ")
+(merge-rule "쯢" "á„ᅳᆵ")
+(merge-rule "쯣" "á„ᅳᆶ")
+(merge-rule "쯤" "á„ᅳᆷ")
+(merge-rule "쯥" "á„ᅳᆸ")
+(merge-rule "쯦" "á„ᅳᆹ")
+(merge-rule "쯧" "á„ᅳᆺ")
+(merge-rule "쯨" "á„ᅳᆻ")
+(merge-rule "쯩" "á„ᅳᆼ")
+(merge-rule "쯪" "á„ᅳᆽ")
+(merge-rule "쯫" "á„ᅳᆾ")
+(merge-rule "쯬" "á„ᅳᆿ")
+(merge-rule "쯭" "á„ᅳᇀ")
+(merge-rule "쯮" "á„á…³á‡")
+(merge-rule "쯯" "á„ᅳᇂ")
+(merge-rule "쯰" "á„á…´~b")
+(merge-rule "쯱" "á„ᅴᆨ")
+(merge-rule "쯲" "á„ᅴᆩ")
+(merge-rule "쯳" "á„ᅴᆪ")
+(merge-rule "쯴" "á„ᅴᆫ")
+(merge-rule "쯵" "á„ᅴᆬ")
+(merge-rule "쯶" "á„ᅴᆭ")
+(merge-rule "쯷" "á„ᅴᆮ")
+(merge-rule "쯸" "á„ᅴᆯ")
+(merge-rule "쯹" "á„ᅴᆰ")
+(merge-rule "쯺" "á„ᅴᆱ")
+(merge-rule "쯻" "á„ᅴᆲ")
+(merge-rule "쯼" "á„ᅴᆳ")
+(merge-rule "쯽" "á„ᅴᆴ")
+(merge-rule "쯾" "á„ᅴᆵ")
+(merge-rule "쯿" "á„ᅴᆶ")
+(merge-rule "ì°€" "á„ᅴᆷ")
+(merge-rule "ì°" "á„ᅴᆸ")
+(merge-rule "ì°‚" "á„ᅴᆹ")
+(merge-rule "ì°ƒ" "á„ᅴᆺ")
+(merge-rule "ì°„" "á„ᅴᆻ")
+(merge-rule "ì°…" "á„ᅴᆼ")
+(merge-rule "ì°†" "á„ᅴᆽ")
+(merge-rule "ì°‡" "á„ᅴᆾ")
+(merge-rule "ì°ˆ" "á„ᅴᆿ")
+(merge-rule "ì°‰" "á„ᅴᇀ")
+(merge-rule "ì°Š" "á„á…´á‡")
+(merge-rule "ì°‹" "á„ᅴᇂ")
+(merge-rule "ì°Œ" "á„á…µ~b")
+(merge-rule "ì°" "á„ᅵᆨ")
+(merge-rule "ì°Ž" "á„ᅵᆩ")
+(merge-rule "ì°" "á„ᅵᆪ")
+(merge-rule "ì°" "á„ᅵᆫ")
+(merge-rule "ì°‘" "á„ᅵᆬ")
+(merge-rule "ì°’" "á„ᅵᆭ")
+(merge-rule "ì°“" "á„ᅵᆮ")
+(merge-rule "ì°”" "á„ᅵᆯ")
+(merge-rule "ì°•" "á„ᅵᆰ")
+(merge-rule "ì°–" "á„ᅵᆱ")
+(merge-rule "ì°—" "á„ᅵᆲ")
+(merge-rule "ì°˜" "á„ᅵᆳ")
+(merge-rule "ì°™" "á„ᅵᆴ")
+(merge-rule "ì°š" "á„ᅵᆵ")
+(merge-rule "ì°›" "á„ᅵᆶ")
+(merge-rule "ì°œ" "á„ᅵᆷ")
+(merge-rule "ì°" "á„ᅵᆸ")
+(merge-rule "ì°ž" "á„ᅵᆹ")
+(merge-rule "ì°Ÿ" "á„ᅵᆺ")
+(merge-rule "ì° " "á„ᅵᆻ")
+(merge-rule "ì°¡" "á„ᅵᆼ")
+(merge-rule "ì°¢" "á„ᅵᆽ")
+(merge-rule "ì°£" "á„ᅵᆾ")
+(merge-rule "ì°¤" "á„ᅵᆿ")
+(merge-rule "ì°¥" "á„ᅵᇀ")
+(merge-rule "ì°¦" "á„á…µá‡")
+(merge-rule "ì°§" "á„ᅵᇂ")
+(merge-rule "ì°¨" "á„Žá…¡~b")
+(merge-rule "착" "착")
+(merge-rule "찪" "찪")
+(merge-rule "찫" "찫")
+(merge-rule "찬" "찬")
+(merge-rule "찭" "찭")
+(merge-rule "찮" "찮")
+(merge-rule "찯" "찯")
+(merge-rule "찰" "찰")
+(merge-rule "찱" "찱")
+(merge-rule "찲" "찲")
+(merge-rule "찳" "찳")
+(merge-rule "찴" "찴")
+(merge-rule "찵" "찵")
+(merge-rule "찶" "찶")
+(merge-rule "찷" "찷")
+(merge-rule "참" "참")
+(merge-rule "찹" "찹")
+(merge-rule "찺" "찺")
+(merge-rule "찻" "찻")
+(merge-rule "찼" "찼")
+(merge-rule "창" "창")
+(merge-rule "찾" "찾")
+(merge-rule "찿" "찿")
+(merge-rule "챀" "챀")
+(merge-rule "ì±" "챁")
+(merge-rule "챂" "á„Žá…¡á‡")
+(merge-rule "챃" "챃")
+(merge-rule "채" "채~b")
+(merge-rule "책" "책")
+(merge-rule "챆" "챆")
+(merge-rule "챇" "챇")
+(merge-rule "챈" "챈")
+(merge-rule "챉" "챉")
+(merge-rule "챊" "챊")
+(merge-rule "챋" "챋")
+(merge-rule "챌" "챌")
+(merge-rule "ì±" "챍")
+(merge-rule "챎" "챎")
+(merge-rule "ì±" "챏")
+(merge-rule "ì±" "챐")
+(merge-rule "챑" "챑")
+(merge-rule "챒" "챒")
+(merge-rule "챓" "챓")
+(merge-rule "챔" "챔")
+(merge-rule "챕" "챕")
+(merge-rule "챖" "챖")
+(merge-rule "챗" "챗")
+(merge-rule "챘" "챘")
+(merge-rule "챙" "챙")
+(merge-rule "챚" "챚")
+(merge-rule "챛" "챛")
+(merge-rule "챜" "챜")
+(merge-rule "ì±" "챝")
+(merge-rule "챞" "á„Žá…¢á‡")
+(merge-rule "챟" "챟")
+(merge-rule "ì± " "á„Žá…£~b")
+(merge-rule "챡" "챡")
+(merge-rule "챢" "챢")
+(merge-rule "챣" "챣")
+(merge-rule "챤" "챤")
+(merge-rule "챥" "챥")
+(merge-rule "챦" "챦")
+(merge-rule "챧" "챧")
+(merge-rule "챨" "챨")
+(merge-rule "챩" "챩")
+(merge-rule "챪" "챪")
+(merge-rule "챫" "챫")
+(merge-rule "챬" "챬")
+(merge-rule "챭" "챭")
+(merge-rule "챮" "챮")
+(merge-rule "챯" "챯")
+(merge-rule "챰" "챰")
+(merge-rule "챱" "챱")
+(merge-rule "챲" "챲")
+(merge-rule "챳" "챳")
+(merge-rule "챴" "챴")
+(merge-rule "챵" "챵")
+(merge-rule "챶" "챶")
+(merge-rule "챷" "챷")
+(merge-rule "챸" "챸")
+(merge-rule "챹" "챹")
+(merge-rule "챺" "á„Žá…£á‡")
+(merge-rule "챻" "챻")
+(merge-rule "ì±¼" "á„Žá…¤~b")
+(merge-rule "챽" "챽")
+(merge-rule "챾" "챾")
+(merge-rule "챿" "챿")
+(merge-rule "첀" "첀")
+(merge-rule "ì²" "첁")
+(merge-rule "첂" "첂")
+(merge-rule "첃" "첃")
+(merge-rule "첄" "첄")
+(merge-rule "첅" "첅")
+(merge-rule "첆" "첆")
+(merge-rule "첇" "첇")
+(merge-rule "첈" "첈")
+(merge-rule "첉" "첉")
+(merge-rule "첊" "첊")
+(merge-rule "첋" "첋")
+(merge-rule "첌" "첌")
+(merge-rule "ì²" "첍")
+(merge-rule "첎" "첎")
+(merge-rule "ì²" "첏")
+(merge-rule "ì²" "첐")
+(merge-rule "첑" "첑")
+(merge-rule "첒" "첒")
+(merge-rule "첓" "첓")
+(merge-rule "첔" "첔")
+(merge-rule "첕" "첕")
+(merge-rule "ì²–" "á„Žá…¤á‡")
+(merge-rule "첗" "첗")
+(merge-rule "처" "처~b")
+(merge-rule "척" "척")
+(merge-rule "첚" "첚")
+(merge-rule "첛" "첛")
+(merge-rule "천" "천")
+(merge-rule "ì²" "첝")
+(merge-rule "첞" "첞")
+(merge-rule "첟" "첟")
+(merge-rule "철" "철")
+(merge-rule "첡" "첡")
+(merge-rule "첢" "첢")
+(merge-rule "첣" "첣")
+(merge-rule "첤" "첤")
+(merge-rule "첥" "첥")
+(merge-rule "첦" "첦")
+(merge-rule "첧" "첧")
+(merge-rule "첨" "첨")
+(merge-rule "첩" "첩")
+(merge-rule "첪" "첪")
+(merge-rule "첫" "첫")
+(merge-rule "첬" "첬")
+(merge-rule "청" "청")
+(merge-rule "첮" "첮")
+(merge-rule "첯" "첯")
+(merge-rule "첰" "첰")
+(merge-rule "첱" "첱")
+(merge-rule "ì²²" "á„Žá…¥á‡")
+(merge-rule "첳" "첳")
+(merge-rule "ì²´" "á„Žá…¦~b")
+(merge-rule "첵" "첵")
+(merge-rule "첶" "첶")
+(merge-rule "첷" "첷")
+(merge-rule "첸" "첸")
+(merge-rule "첹" "첹")
+(merge-rule "첺" "첺")
+(merge-rule "첻" "첻")
+(merge-rule "첼" "첼")
+(merge-rule "첽" "첽")
+(merge-rule "첾" "첾")
+(merge-rule "첿" "첿")
+(merge-rule "쳀" "쳀")
+(merge-rule "ì³" "쳁")
+(merge-rule "쳂" "쳂")
+(merge-rule "쳃" "쳃")
+(merge-rule "쳄" "쳄")
+(merge-rule "쳅" "쳅")
+(merge-rule "쳆" "쳆")
+(merge-rule "쳇" "쳇")
+(merge-rule "쳈" "쳈")
+(merge-rule "쳉" "쳉")
+(merge-rule "쳊" "쳊")
+(merge-rule "쳋" "쳋")
+(merge-rule "쳌" "쳌")
+(merge-rule "ì³" "쳍")
+(merge-rule "쳎" "á„Žá…¦á‡")
+(merge-rule "ì³" "쳏")
+(merge-rule "ì³" "á„Žá…§~b")
+(merge-rule "쳑" "쳑")
+(merge-rule "쳒" "쳒")
+(merge-rule "쳓" "쳓")
+(merge-rule "쳔" "쳔")
+(merge-rule "쳕" "쳕")
+(merge-rule "쳖" "쳖")
+(merge-rule "쳗" "쳗")
+(merge-rule "쳘" "쳘")
+(merge-rule "쳙" "쳙")
+(merge-rule "쳚" "쳚")
+(merge-rule "쳛" "쳛")
+(merge-rule "쳜" "쳜")
+(merge-rule "ì³" "쳝")
+(merge-rule "쳞" "쳞")
+(merge-rule "쳟" "쳟")
+(merge-rule "쳠" "쳠")
+(merge-rule "쳡" "쳡")
+(merge-rule "쳢" "쳢")
+(merge-rule "쳣" "쳣")
+(merge-rule "쳤" "쳤")
+(merge-rule "쳥" "쳥")
+(merge-rule "쳦" "쳦")
+(merge-rule "쳧" "쳧")
+(merge-rule "쳨" "쳨")
+(merge-rule "쳩" "쳩")
+(merge-rule "쳪" "á„Žá…§á‡")
+(merge-rule "쳫" "쳫")
+(merge-rule "쳬" "쳬~b")
+(merge-rule "쳭" "쳭")
+(merge-rule "쳮" "쳮")
+(merge-rule "쳯" "쳯")
+(merge-rule "쳰" "쳰")
+(merge-rule "쳱" "쳱")
+(merge-rule "쳲" "쳲")
+(merge-rule "쳳" "쳳")
+(merge-rule "쳴" "쳴")
+(merge-rule "쳵" "쳵")
+(merge-rule "쳶" "쳶")
+(merge-rule "쳷" "쳷")
+(merge-rule "쳸" "쳸")
+(merge-rule "쳹" "쳹")
+(merge-rule "쳺" "쳺")
+(merge-rule "쳻" "쳻")
+(merge-rule "쳼" "쳼")
+(merge-rule "쳽" "쳽")
+(merge-rule "쳾" "쳾")
+(merge-rule "쳿" "쳿")
+(merge-rule "촀" "촀")
+(merge-rule "ì´" "촁")
+(merge-rule "촂" "촂")
+(merge-rule "촃" "촃")
+(merge-rule "촄" "촄")
+(merge-rule "촅" "촅")
+(merge-rule "ì´†" "á„Žá…¨á‡")
+(merge-rule "촇" "촇")
+(merge-rule "ì´ˆ" "á„Žá…©~b")
+(merge-rule "촉" "촉")
+(merge-rule "촊" "촊")
+(merge-rule "촋" "촋")
+(merge-rule "촌" "촌")
+(merge-rule "ì´" "촍")
+(merge-rule "촎" "촎")
+(merge-rule "ì´" "촏")
+(merge-rule "ì´" "촐")
+(merge-rule "촑" "촑")
+(merge-rule "촒" "촒")
+(merge-rule "촓" "촓")
+(merge-rule "촔" "촔")
+(merge-rule "촕" "촕")
+(merge-rule "촖" "촖")
+(merge-rule "촗" "촗")
+(merge-rule "촘" "촘")
+(merge-rule "촙" "촙")
+(merge-rule "촚" "촚")
+(merge-rule "촛" "촛")
+(merge-rule "촜" "촜")
+(merge-rule "ì´" "총")
+(merge-rule "촞" "촞")
+(merge-rule "촟" "촟")
+(merge-rule "촠" "촠")
+(merge-rule "촡" "촡")
+(merge-rule "ì´¢" "á„Žá…©á‡")
+(merge-rule "촣" "촣")
+(merge-rule "ì´¤" "á„Žá…ª~b")
+(merge-rule "촥" "촥")
+(merge-rule "촦" "촦")
+(merge-rule "촧" "촧")
+(merge-rule "촨" "촨")
+(merge-rule "촩" "촩")
+(merge-rule "촪" "촪")
+(merge-rule "촫" "촫")
+(merge-rule "촬" "촬")
+(merge-rule "촭" "촭")
+(merge-rule "촮" "촮")
+(merge-rule "촯" "촯")
+(merge-rule "촰" "촰")
+(merge-rule "촱" "촱")
+(merge-rule "촲" "촲")
+(merge-rule "촳" "촳")
+(merge-rule "촴" "촴")
+(merge-rule "촵" "촵")
+(merge-rule "촶" "촶")
+(merge-rule "촷" "촷")
+(merge-rule "촸" "촸")
+(merge-rule "촹" "촹")
+(merge-rule "촺" "촺")
+(merge-rule "촻" "촻")
+(merge-rule "촼" "촼")
+(merge-rule "촽" "촽")
+(merge-rule "ì´¾" "á„Žá…ªá‡")
+(merge-rule "촿" "촿")
+(merge-rule "ìµ€" "á„Žá…«~b")
+(merge-rule "ìµ" "쵁")
+(merge-rule "쵂" "쵂")
+(merge-rule "쵃" "쵃")
+(merge-rule "쵄" "쵄")
+(merge-rule "쵅" "쵅")
+(merge-rule "쵆" "쵆")
+(merge-rule "쵇" "쵇")
+(merge-rule "쵈" "쵈")
+(merge-rule "쵉" "쵉")
+(merge-rule "쵊" "쵊")
+(merge-rule "쵋" "쵋")
+(merge-rule "쵌" "쵌")
+(merge-rule "ìµ" "쵍")
+(merge-rule "쵎" "쵎")
+(merge-rule "ìµ" "쵏")
+(merge-rule "ìµ" "쵐")
+(merge-rule "쵑" "쵑")
+(merge-rule "쵒" "쵒")
+(merge-rule "쵓" "쵓")
+(merge-rule "쵔" "쵔")
+(merge-rule "쵕" "쵕")
+(merge-rule "쵖" "쵖")
+(merge-rule "쵗" "쵗")
+(merge-rule "쵘" "쵘")
+(merge-rule "쵙" "쵙")
+(merge-rule "쵚" "á„Žá…«á‡")
+(merge-rule "쵛" "쵛")
+(merge-rule "최" "최~b")
+(merge-rule "ìµ" "쵝")
+(merge-rule "쵞" "쵞")
+(merge-rule "쵟" "쵟")
+(merge-rule "쵠" "쵠")
+(merge-rule "쵡" "쵡")
+(merge-rule "쵢" "쵢")
+(merge-rule "쵣" "쵣")
+(merge-rule "쵤" "쵤")
+(merge-rule "쵥" "쵥")
+(merge-rule "쵦" "쵦")
+(merge-rule "쵧" "쵧")
+(merge-rule "쵨" "쵨")
+(merge-rule "쵩" "쵩")
+(merge-rule "쵪" "쵪")
+(merge-rule "쵫" "쵫")
+(merge-rule "쵬" "쵬")
+(merge-rule "쵭" "쵭")
+(merge-rule "쵮" "쵮")
+(merge-rule "쵯" "쵯")
+(merge-rule "쵰" "쵰")
+(merge-rule "쵱" "쵱")
+(merge-rule "쵲" "쵲")
+(merge-rule "쵳" "쵳")
+(merge-rule "쵴" "쵴")
+(merge-rule "쵵" "쵵")
+(merge-rule "쵶" "á„Žá…¬á‡")
+(merge-rule "쵷" "쵷")
+(merge-rule "쵸" "쵸~b")
+(merge-rule "쵹" "쵹")
+(merge-rule "쵺" "쵺")
+(merge-rule "쵻" "쵻")
+(merge-rule "쵼" "쵼")
+(merge-rule "쵽" "쵽")
+(merge-rule "쵾" "쵾")
+(merge-rule "쵿" "쵿")
+(merge-rule "춀" "춀")
+(merge-rule "ì¶" "춁")
+(merge-rule "춂" "춂")
+(merge-rule "춃" "춃")
+(merge-rule "춄" "춄")
+(merge-rule "춅" "춅")
+(merge-rule "춆" "춆")
+(merge-rule "춇" "춇")
+(merge-rule "춈" "춈")
+(merge-rule "춉" "춉")
+(merge-rule "춊" "춊")
+(merge-rule "춋" "춋")
+(merge-rule "춌" "춌")
+(merge-rule "ì¶" "춍")
+(merge-rule "춎" "춎")
+(merge-rule "ì¶" "춏")
+(merge-rule "ì¶" "춐")
+(merge-rule "춑" "춑")
+(merge-rule "춒" "á„Žá…­á‡")
+(merge-rule "춓" "춓")
+(merge-rule "추" "추~b")
+(merge-rule "축" "축")
+(merge-rule "춖" "춖")
+(merge-rule "춗" "춗")
+(merge-rule "춘" "춘")
+(merge-rule "춙" "춙")
+(merge-rule "춚" "춚")
+(merge-rule "춛" "춛")
+(merge-rule "출" "출")
+(merge-rule "ì¶" "춝")
+(merge-rule "춞" "춞")
+(merge-rule "춟" "춟")
+(merge-rule "춠" "춠")
+(merge-rule "춡" "춡")
+(merge-rule "춢" "춢")
+(merge-rule "춣" "춣")
+(merge-rule "춤" "춤")
+(merge-rule "춥" "춥")
+(merge-rule "춦" "춦")
+(merge-rule "춧" "춧")
+(merge-rule "춨" "춨")
+(merge-rule "충" "충")
+(merge-rule "춪" "춪")
+(merge-rule "춫" "춫")
+(merge-rule "춬" "춬")
+(merge-rule "춭" "춭")
+(merge-rule "춮" "á„Žá…®á‡")
+(merge-rule "춯" "춯")
+(merge-rule "춰" "춰~b")
+(merge-rule "춱" "춱")
+(merge-rule "춲" "춲")
+(merge-rule "춳" "춳")
+(merge-rule "춴" "춴")
+(merge-rule "춵" "춵")
+(merge-rule "춶" "춶")
+(merge-rule "춷" "춷")
+(merge-rule "춸" "춸")
+(merge-rule "춹" "춹")
+(merge-rule "춺" "춺")
+(merge-rule "춻" "춻")
+(merge-rule "춼" "춼")
+(merge-rule "춽" "춽")
+(merge-rule "춾" "춾")
+(merge-rule "춿" "춿")
+(merge-rule "췀" "췀")
+(merge-rule "ì·" "췁")
+(merge-rule "췂" "췂")
+(merge-rule "췃" "췃")
+(merge-rule "췄" "췄")
+(merge-rule "췅" "췅")
+(merge-rule "췆" "췆")
+(merge-rule "췇" "췇")
+(merge-rule "췈" "췈")
+(merge-rule "췉" "췉")
+(merge-rule "ì·Š" "á„Žá…¯á‡")
+(merge-rule "췋" "췋")
+(merge-rule "췌" "췌~b")
+(merge-rule "ì·" "췍")
+(merge-rule "췎" "췎")
+(merge-rule "ì·" "췏")
+(merge-rule "ì·" "췐")
+(merge-rule "췑" "췑")
+(merge-rule "췒" "췒")
+(merge-rule "췓" "췓")
+(merge-rule "췔" "췔")
+(merge-rule "췕" "췕")
+(merge-rule "췖" "췖")
+(merge-rule "췗" "췗")
+(merge-rule "췘" "췘")
+(merge-rule "췙" "췙")
+(merge-rule "췚" "췚")
+(merge-rule "췛" "췛")
+(merge-rule "췜" "췜")
+(merge-rule "ì·" "췝")
+(merge-rule "췞" "췞")
+(merge-rule "췟" "췟")
+(merge-rule "췠" "췠")
+(merge-rule "췡" "췡")
+(merge-rule "췢" "췢")
+(merge-rule "췣" "췣")
+(merge-rule "췤" "췤")
+(merge-rule "췥" "췥")
+(merge-rule "ì·¦" "á„Žá…°á‡")
+(merge-rule "췧" "췧")
+(merge-rule "ì·¨" "á„Žá…±~b")
+(merge-rule "췩" "췩")
+(merge-rule "췪" "췪")
+(merge-rule "췫" "췫")
+(merge-rule "췬" "췬")
+(merge-rule "췭" "췭")
+(merge-rule "췮" "췮")
+(merge-rule "췯" "췯")
+(merge-rule "췰" "췰")
+(merge-rule "췱" "췱")
+(merge-rule "췲" "췲")
+(merge-rule "췳" "췳")
+(merge-rule "췴" "췴")
+(merge-rule "췵" "췵")
+(merge-rule "췶" "췶")
+(merge-rule "췷" "췷")
+(merge-rule "췸" "췸")
+(merge-rule "췹" "췹")
+(merge-rule "췺" "췺")
+(merge-rule "췻" "췻")
+(merge-rule "췼" "췼")
+(merge-rule "췽" "췽")
+(merge-rule "췾" "췾")
+(merge-rule "췿" "췿")
+(merge-rule "츀" "츀")
+(merge-rule "ì¸" "츁")
+(merge-rule "츂" "á„Žá…±á‡")
+(merge-rule "츃" "츃")
+(merge-rule "츄" "츄~b")
+(merge-rule "츅" "츅")
+(merge-rule "츆" "츆")
+(merge-rule "츇" "츇")
+(merge-rule "츈" "츈")
+(merge-rule "츉" "츉")
+(merge-rule "츊" "츊")
+(merge-rule "츋" "츋")
+(merge-rule "츌" "츌")
+(merge-rule "ì¸" "츍")
+(merge-rule "츎" "츎")
+(merge-rule "ì¸" "츏")
+(merge-rule "ì¸" "츐")
+(merge-rule "츑" "츑")
+(merge-rule "츒" "츒")
+(merge-rule "츓" "츓")
+(merge-rule "츔" "츔")
+(merge-rule "츕" "츕")
+(merge-rule "츖" "츖")
+(merge-rule "츗" "츗")
+(merge-rule "츘" "츘")
+(merge-rule "츙" "츙")
+(merge-rule "츚" "츚")
+(merge-rule "츛" "츛")
+(merge-rule "츜" "츜")
+(merge-rule "ì¸" "츝")
+(merge-rule "츞" "á„Žá…²á‡")
+(merge-rule "츟" "츟")
+(merge-rule "츠" "츠~b")
+(merge-rule "측" "측")
+(merge-rule "츢" "츢")
+(merge-rule "츣" "츣")
+(merge-rule "츤" "츤")
+(merge-rule "츥" "츥")
+(merge-rule "츦" "츦")
+(merge-rule "츧" "츧")
+(merge-rule "츨" "츨")
+(merge-rule "츩" "츩")
+(merge-rule "츪" "츪")
+(merge-rule "츫" "츫")
+(merge-rule "츬" "츬")
+(merge-rule "츭" "츭")
+(merge-rule "츮" "츮")
+(merge-rule "츯" "츯")
+(merge-rule "츰" "츰")
+(merge-rule "츱" "츱")
+(merge-rule "츲" "츲")
+(merge-rule "츳" "츳")
+(merge-rule "츴" "츴")
+(merge-rule "층" "층")
+(merge-rule "츶" "츶")
+(merge-rule "츷" "츷")
+(merge-rule "츸" "츸")
+(merge-rule "츹" "츹")
+(merge-rule "츺" "á„Žá…³á‡")
+(merge-rule "츻" "츻")
+(merge-rule "츼" "츼~b")
+(merge-rule "츽" "츽")
+(merge-rule "츾" "츾")
+(merge-rule "츿" "츿")
+(merge-rule "칀" "칀")
+(merge-rule "ì¹" "칁")
+(merge-rule "칂" "칂")
+(merge-rule "칃" "칃")
+(merge-rule "칄" "칄")
+(merge-rule "칅" "칅")
+(merge-rule "칆" "칆")
+(merge-rule "칇" "칇")
+(merge-rule "칈" "칈")
+(merge-rule "칉" "칉")
+(merge-rule "칊" "칊")
+(merge-rule "칋" "칋")
+(merge-rule "칌" "칌")
+(merge-rule "ì¹" "칍")
+(merge-rule "칎" "칎")
+(merge-rule "ì¹" "칏")
+(merge-rule "ì¹" "칐")
+(merge-rule "칑" "칑")
+(merge-rule "칒" "칒")
+(merge-rule "칓" "칓")
+(merge-rule "칔" "칔")
+(merge-rule "칕" "칕")
+(merge-rule "ì¹–" "á„Žá…´á‡")
+(merge-rule "칗" "칗")
+(merge-rule "치" "치~b")
+(merge-rule "칙" "칙")
+(merge-rule "칚" "칚")
+(merge-rule "칛" "칛")
+(merge-rule "친" "친")
+(merge-rule "ì¹" "칝")
+(merge-rule "칞" "칞")
+(merge-rule "칟" "칟")
+(merge-rule "칠" "칠")
+(merge-rule "칡" "칡")
+(merge-rule "칢" "칢")
+(merge-rule "칣" "칣")
+(merge-rule "칤" "칤")
+(merge-rule "칥" "칥")
+(merge-rule "칦" "칦")
+(merge-rule "칧" "칧")
+(merge-rule "침" "침")
+(merge-rule "칩" "칩")
+(merge-rule "칪" "칪")
+(merge-rule "칫" "칫")
+(merge-rule "칬" "칬")
+(merge-rule "칭" "칭")
+(merge-rule "칮" "칮")
+(merge-rule "칯" "칯")
+(merge-rule "칰" "칰")
+(merge-rule "칱" "칱")
+(merge-rule "ì¹²" "á„Žá…µá‡")
+(merge-rule "칳" "칳")
+(merge-rule "ì¹´" "á„á…¡~b")
+(merge-rule "ì¹µ" "á„ᅡᆨ")
+(merge-rule "칶" "á„ᅡᆩ")
+(merge-rule "ì¹·" "á„ᅡᆪ")
+(merge-rule "칸" "á„ᅡᆫ")
+(merge-rule "ì¹¹" "á„ᅡᆬ")
+(merge-rule "칺" "á„ᅡᆭ")
+(merge-rule "ì¹»" "á„ᅡᆮ")
+(merge-rule "ì¹¼" "á„ᅡᆯ")
+(merge-rule "ì¹½" "á„ᅡᆰ")
+(merge-rule "ì¹¾" "á„ᅡᆱ")
+(merge-rule "칿" "á„ᅡᆲ")
+(merge-rule "캀" "á„ᅡᆳ")
+(merge-rule "ìº" "á„ᅡᆴ")
+(merge-rule "캂" "á„ᅡᆵ")
+(merge-rule "캃" "á„ᅡᆶ")
+(merge-rule "캄" "á„ᅡᆷ")
+(merge-rule "캅" "á„ᅡᆸ")
+(merge-rule "캆" "á„ᅡᆹ")
+(merge-rule "캇" "á„ᅡᆺ")
+(merge-rule "캈" "á„ᅡᆻ")
+(merge-rule "캉" "á„ᅡᆼ")
+(merge-rule "캊" "á„ᅡᆽ")
+(merge-rule "캋" "á„ᅡᆾ")
+(merge-rule "캌" "á„ᅡᆿ")
+(merge-rule "ìº" "á„ᅡᇀ")
+(merge-rule "캎" "á„á…¡á‡")
+(merge-rule "ìº" "á„ᅡᇂ")
+(merge-rule "ìº" "á„á…¢~b")
+(merge-rule "캑" "á„ᅢᆨ")
+(merge-rule "캒" "á„ᅢᆩ")
+(merge-rule "캓" "á„ᅢᆪ")
+(merge-rule "캔" "á„ᅢᆫ")
+(merge-rule "캕" "á„ᅢᆬ")
+(merge-rule "캖" "á„ᅢᆭ")
+(merge-rule "캗" "á„ᅢᆮ")
+(merge-rule "캘" "á„ᅢᆯ")
+(merge-rule "캙" "á„ᅢᆰ")
+(merge-rule "캚" "á„ᅢᆱ")
+(merge-rule "캛" "á„ᅢᆲ")
+(merge-rule "캜" "á„ᅢᆳ")
+(merge-rule "ìº" "á„ᅢᆴ")
+(merge-rule "캞" "á„ᅢᆵ")
+(merge-rule "캟" "á„ᅢᆶ")
+(merge-rule "캠" "á„ᅢᆷ")
+(merge-rule "캡" "á„ᅢᆸ")
+(merge-rule "캢" "á„ᅢᆹ")
+(merge-rule "캣" "á„ᅢᆺ")
+(merge-rule "캤" "á„ᅢᆻ")
+(merge-rule "캥" "á„ᅢᆼ")
+(merge-rule "캦" "á„ᅢᆽ")
+(merge-rule "캧" "á„ᅢᆾ")
+(merge-rule "캨" "á„ᅢᆿ")
+(merge-rule "캩" "á„ᅢᇀ")
+(merge-rule "캪" "á„á…¢á‡")
+(merge-rule "캫" "á„ᅢᇂ")
+(merge-rule "캬" "á„á…£~b")
+(merge-rule "캭" "á„ᅣᆨ")
+(merge-rule "캮" "á„ᅣᆩ")
+(merge-rule "캯" "á„ᅣᆪ")
+(merge-rule "캰" "á„ᅣᆫ")
+(merge-rule "캱" "á„ᅣᆬ")
+(merge-rule "캲" "á„ᅣᆭ")
+(merge-rule "캳" "á„ᅣᆮ")
+(merge-rule "캴" "á„ᅣᆯ")
+(merge-rule "캵" "á„ᅣᆰ")
+(merge-rule "캶" "á„ᅣᆱ")
+(merge-rule "캷" "á„ᅣᆲ")
+(merge-rule "캸" "á„ᅣᆳ")
+(merge-rule "캹" "á„ᅣᆴ")
+(merge-rule "캺" "á„ᅣᆵ")
+(merge-rule "캻" "á„ᅣᆶ")
+(merge-rule "캼" "á„ᅣᆷ")
+(merge-rule "캽" "á„ᅣᆸ")
+(merge-rule "캾" "á„ᅣᆹ")
+(merge-rule "캿" "á„ᅣᆺ")
+(merge-rule "컀" "á„ᅣᆻ")
+(merge-rule "ì»" "á„ᅣᆼ")
+(merge-rule "컂" "á„ᅣᆽ")
+(merge-rule "컃" "á„ᅣᆾ")
+(merge-rule "컄" "á„ᅣᆿ")
+(merge-rule "ì»…" "á„ᅣᇀ")
+(merge-rule "컆" "á„á…£á‡")
+(merge-rule "컇" "á„ᅣᇂ")
+(merge-rule "컈" "á„á…¤~b")
+(merge-rule "컉" "á„ᅤᆨ")
+(merge-rule "컊" "á„ᅤᆩ")
+(merge-rule "컋" "á„ᅤᆪ")
+(merge-rule "컌" "á„ᅤᆫ")
+(merge-rule "ì»" "á„ᅤᆬ")
+(merge-rule "컎" "á„ᅤᆭ")
+(merge-rule "ì»" "á„ᅤᆮ")
+(merge-rule "ì»" "á„ᅤᆯ")
+(merge-rule "컑" "á„ᅤᆰ")
+(merge-rule "ì»’" "á„ᅤᆱ")
+(merge-rule "컓" "á„ᅤᆲ")
+(merge-rule "ì»”" "á„ᅤᆳ")
+(merge-rule "컕" "á„ᅤᆴ")
+(merge-rule "ì»–" "á„ᅤᆵ")
+(merge-rule "ì»—" "á„ᅤᆶ")
+(merge-rule "컘" "á„ᅤᆷ")
+(merge-rule "ì»™" "á„ᅤᆸ")
+(merge-rule "컚" "á„ᅤᆹ")
+(merge-rule "ì»›" "á„ᅤᆺ")
+(merge-rule "컜" "á„ᅤᆻ")
+(merge-rule "ì»" "á„ᅤᆼ")
+(merge-rule "컞" "á„ᅤᆽ")
+(merge-rule "컟" "á„ᅤᆾ")
+(merge-rule "ì» " "á„ᅤᆿ")
+(merge-rule "컡" "á„ᅤᇀ")
+(merge-rule "컢" "á„á…¤á‡")
+(merge-rule "컣" "á„ᅤᇂ")
+(merge-rule "커" "á„á…¥~b")
+(merge-rule "컥" "á„ᅥᆨ")
+(merge-rule "컦" "á„ᅥᆩ")
+(merge-rule "컧" "á„ᅥᆪ")
+(merge-rule "컨" "á„ᅥᆫ")
+(merge-rule "컩" "á„ᅥᆬ")
+(merge-rule "컪" "á„ᅥᆭ")
+(merge-rule "컫" "á„ᅥᆮ")
+(merge-rule "컬" "á„ᅥᆯ")
+(merge-rule "ì»­" "á„ᅥᆰ")
+(merge-rule "ì»®" "á„ᅥᆱ")
+(merge-rule "컯" "á„ᅥᆲ")
+(merge-rule "ì»°" "á„ᅥᆳ")
+(merge-rule "ì»±" "á„ᅥᆴ")
+(merge-rule "컲" "á„ᅥᆵ")
+(merge-rule "컳" "á„ᅥᆶ")
+(merge-rule "ì»´" "á„ᅥᆷ")
+(merge-rule "컵" "á„ᅥᆸ")
+(merge-rule "컶" "á„ᅥᆹ")
+(merge-rule "ì»·" "á„ᅥᆺ")
+(merge-rule "컸" "á„ᅥᆻ")
+(merge-rule "컹" "á„ᅥᆼ")
+(merge-rule "컺" "á„ᅥᆽ")
+(merge-rule "ì»»" "á„ᅥᆾ")
+(merge-rule "컼" "á„ᅥᆿ")
+(merge-rule "컽" "á„ᅥᇀ")
+(merge-rule "컾" "á„á…¥á‡")
+(merge-rule "컿" "á„ᅥᇂ")
+(merge-rule "ì¼€" "á„á…¦~b")
+(merge-rule "ì¼" "á„ᅦᆨ")
+(merge-rule "켂" "á„ᅦᆩ")
+(merge-rule "켃" "á„ᅦᆪ")
+(merge-rule "켄" "á„ᅦᆫ")
+(merge-rule "ì¼…" "á„ᅦᆬ")
+(merge-rule "켆" "á„ᅦᆭ")
+(merge-rule "켇" "á„ᅦᆮ")
+(merge-rule "켈" "á„ᅦᆯ")
+(merge-rule "켉" "á„ᅦᆰ")
+(merge-rule "켊" "á„ᅦᆱ")
+(merge-rule "켋" "á„ᅦᆲ")
+(merge-rule "켌" "á„ᅦᆳ")
+(merge-rule "ì¼" "á„ᅦᆴ")
+(merge-rule "켎" "á„ᅦᆵ")
+(merge-rule "ì¼" "á„ᅦᆶ")
+(merge-rule "ì¼" "á„ᅦᆷ")
+(merge-rule "켑" "á„ᅦᆸ")
+(merge-rule "ì¼’" "á„ᅦᆹ")
+(merge-rule "켓" "á„ᅦᆺ")
+(merge-rule "ì¼”" "á„ᅦᆻ")
+(merge-rule "켕" "á„ᅦᆼ")
+(merge-rule "ì¼–" "á„ᅦᆽ")
+(merge-rule "ì¼—" "á„ᅦᆾ")
+(merge-rule "켘" "á„ᅦᆿ")
+(merge-rule "ì¼™" "á„ᅦᇀ")
+(merge-rule "켚" "á„á…¦á‡")
+(merge-rule "ì¼›" "á„ᅦᇂ")
+(merge-rule "켜" "á„á…§~b")
+(merge-rule "ì¼" "á„ᅧᆨ")
+(merge-rule "켞" "á„ᅧᆩ")
+(merge-rule "켟" "á„ᅧᆪ")
+(merge-rule "ì¼ " "á„ᅧᆫ")
+(merge-rule "켡" "á„ᅧᆬ")
+(merge-rule "ì¼¢" "á„ᅧᆭ")
+(merge-rule "ì¼£" "á„ᅧᆮ")
+(merge-rule "켤" "á„ᅧᆯ")
+(merge-rule "ì¼¥" "á„ᅧᆰ")
+(merge-rule "켦" "á„ᅧᆱ")
+(merge-rule "켧" "á„ᅧᆲ")
+(merge-rule "켨" "á„ᅧᆳ")
+(merge-rule "켩" "á„ᅧᆴ")
+(merge-rule "켪" "á„ᅧᆵ")
+(merge-rule "켫" "á„ᅧᆶ")
+(merge-rule "켬" "á„ᅧᆷ")
+(merge-rule "ì¼­" "á„ᅧᆸ")
+(merge-rule "ì¼®" "á„ᅧᆹ")
+(merge-rule "켯" "á„ᅧᆺ")
+(merge-rule "ì¼°" "á„ᅧᆻ")
+(merge-rule "ì¼±" "á„ᅧᆼ")
+(merge-rule "ì¼²" "á„ᅧᆽ")
+(merge-rule "ì¼³" "á„ᅧᆾ")
+(merge-rule "ì¼´" "á„ᅧᆿ")
+(merge-rule "ì¼µ" "á„ᅧᇀ")
+(merge-rule "켶" "á„á…§á‡")
+(merge-rule "ì¼·" "á„ᅧᇂ")
+(merge-rule "켸" "á„á…¨~b")
+(merge-rule "ì¼¹" "á„ᅨᆨ")
+(merge-rule "켺" "á„ᅨᆩ")
+(merge-rule "ì¼»" "á„ᅨᆪ")
+(merge-rule "ì¼¼" "á„ᅨᆫ")
+(merge-rule "ì¼½" "á„ᅨᆬ")
+(merge-rule "ì¼¾" "á„ᅨᆭ")
+(merge-rule "켿" "á„ᅨᆮ")
+(merge-rule "ì½€" "á„ᅨᆯ")
+(merge-rule "ì½" "á„ᅨᆰ")
+(merge-rule "콂" "á„ᅨᆱ")
+(merge-rule "콃" "á„ᅨᆲ")
+(merge-rule "콄" "á„ᅨᆳ")
+(merge-rule "ì½…" "á„ᅨᆴ")
+(merge-rule "콆" "á„ᅨᆵ")
+(merge-rule "콇" "á„ᅨᆶ")
+(merge-rule "콈" "á„ᅨᆷ")
+(merge-rule "콉" "á„ᅨᆸ")
+(merge-rule "콊" "á„ᅨᆹ")
+(merge-rule "콋" "á„ᅨᆺ")
+(merge-rule "콌" "á„ᅨᆻ")
+(merge-rule "ì½" "á„ᅨᆼ")
+(merge-rule "콎" "á„ᅨᆽ")
+(merge-rule "ì½" "á„ᅨᆾ")
+(merge-rule "ì½" "á„ᅨᆿ")
+(merge-rule "콑" "á„ᅨᇀ")
+(merge-rule "ì½’" "á„á…¨á‡")
+(merge-rule "콓" "á„ᅨᇂ")
+(merge-rule "ì½”" "á„á…©~b")
+(merge-rule "콕" "á„ᅩᆨ")
+(merge-rule "ì½–" "á„ᅩᆩ")
+(merge-rule "ì½—" "á„ᅩᆪ")
+(merge-rule "콘" "á„ᅩᆫ")
+(merge-rule "ì½™" "á„ᅩᆬ")
+(merge-rule "콚" "á„ᅩᆭ")
+(merge-rule "ì½›" "á„ᅩᆮ")
+(merge-rule "콜" "á„ᅩᆯ")
+(merge-rule "ì½" "á„ᅩᆰ")
+(merge-rule "콞" "á„ᅩᆱ")
+(merge-rule "콟" "á„ᅩᆲ")
+(merge-rule "ì½ " "á„ᅩᆳ")
+(merge-rule "콡" "á„ᅩᆴ")
+(merge-rule "ì½¢" "á„ᅩᆵ")
+(merge-rule "ì½£" "á„ᅩᆶ")
+(merge-rule "콤" "á„ᅩᆷ")
+(merge-rule "ì½¥" "á„ᅩᆸ")
+(merge-rule "콦" "á„ᅩᆹ")
+(merge-rule "콧" "á„ᅩᆺ")
+(merge-rule "콨" "á„ᅩᆻ")
+(merge-rule "콩" "á„ᅩᆼ")
+(merge-rule "콪" "á„ᅩᆽ")
+(merge-rule "콫" "á„ᅩᆾ")
+(merge-rule "콬" "á„ᅩᆿ")
+(merge-rule "ì½­" "á„ᅩᇀ")
+(merge-rule "ì½®" "á„á…©á‡")
+(merge-rule "콯" "á„ᅩᇂ")
+(merge-rule "ì½°" "á„á…ª~b")
+(merge-rule "ì½±" "á„ᅪᆨ")
+(merge-rule "ì½²" "á„ᅪᆩ")
+(merge-rule "ì½³" "á„ᅪᆪ")
+(merge-rule "ì½´" "á„ᅪᆫ")
+(merge-rule "ì½µ" "á„ᅪᆬ")
+(merge-rule "콶" "á„ᅪᆭ")
+(merge-rule "ì½·" "á„ᅪᆮ")
+(merge-rule "콸" "á„ᅪᆯ")
+(merge-rule "ì½¹" "á„ᅪᆰ")
+(merge-rule "콺" "á„ᅪᆱ")
+(merge-rule "ì½»" "á„ᅪᆲ")
+(merge-rule "ì½¼" "á„ᅪᆳ")
+(merge-rule "ì½½" "á„ᅪᆴ")
+(merge-rule "ì½¾" "á„ᅪᆵ")
+(merge-rule "콿" "á„ᅪᆶ")
+(merge-rule "ì¾€" "á„ᅪᆷ")
+(merge-rule "ì¾" "á„ᅪᆸ")
+(merge-rule "쾂" "á„ᅪᆹ")
+(merge-rule "쾃" "á„ᅪᆺ")
+(merge-rule "쾄" "á„ᅪᆻ")
+(merge-rule "ì¾…" "á„ᅪᆼ")
+(merge-rule "쾆" "á„ᅪᆽ")
+(merge-rule "쾇" "á„ᅪᆾ")
+(merge-rule "쾈" "á„ᅪᆿ")
+(merge-rule "쾉" "á„ᅪᇀ")
+(merge-rule "쾊" "á„á…ªá‡")
+(merge-rule "쾋" "á„ᅪᇂ")
+(merge-rule "쾌" "á„á…«~b")
+(merge-rule "ì¾" "á„ᅫᆨ")
+(merge-rule "쾎" "á„ᅫᆩ")
+(merge-rule "ì¾" "á„ᅫᆪ")
+(merge-rule "ì¾" "á„ᅫᆫ")
+(merge-rule "쾑" "á„ᅫᆬ")
+(merge-rule "ì¾’" "á„ᅫᆭ")
+(merge-rule "쾓" "á„ᅫᆮ")
+(merge-rule "ì¾”" "á„ᅫᆯ")
+(merge-rule "쾕" "á„ᅫᆰ")
+(merge-rule "ì¾–" "á„ᅫᆱ")
+(merge-rule "ì¾—" "á„ᅫᆲ")
+(merge-rule "쾘" "á„ᅫᆳ")
+(merge-rule "ì¾™" "á„ᅫᆴ")
+(merge-rule "쾚" "á„ᅫᆵ")
+(merge-rule "ì¾›" "á„ᅫᆶ")
+(merge-rule "쾜" "á„ᅫᆷ")
+(merge-rule "ì¾" "á„ᅫᆸ")
+(merge-rule "쾞" "á„ᅫᆹ")
+(merge-rule "쾟" "á„ᅫᆺ")
+(merge-rule "ì¾ " "á„ᅫᆻ")
+(merge-rule "쾡" "á„ᅫᆼ")
+(merge-rule "ì¾¢" "á„ᅫᆽ")
+(merge-rule "ì¾£" "á„ᅫᆾ")
+(merge-rule "쾤" "á„ᅫᆿ")
+(merge-rule "ì¾¥" "á„ᅫᇀ")
+(merge-rule "쾦" "á„á…«á‡")
+(merge-rule "쾧" "á„ᅫᇂ")
+(merge-rule "쾨" "á„á…¬~b")
+(merge-rule "쾩" "á„ᅬᆨ")
+(merge-rule "쾪" "á„ᅬᆩ")
+(merge-rule "쾫" "á„ᅬᆪ")
+(merge-rule "쾬" "á„ᅬᆫ")
+(merge-rule "ì¾­" "á„ᅬᆬ")
+(merge-rule "ì¾®" "á„ᅬᆭ")
+(merge-rule "쾯" "á„ᅬᆮ")
+(merge-rule "ì¾°" "á„ᅬᆯ")
+(merge-rule "ì¾±" "á„ᅬᆰ")
+(merge-rule "ì¾²" "á„ᅬᆱ")
+(merge-rule "ì¾³" "á„ᅬᆲ")
+(merge-rule "ì¾´" "á„ᅬᆳ")
+(merge-rule "ì¾µ" "á„ᅬᆴ")
+(merge-rule "쾶" "á„ᅬᆵ")
+(merge-rule "ì¾·" "á„ᅬᆶ")
+(merge-rule "쾸" "á„ᅬᆷ")
+(merge-rule "ì¾¹" "á„ᅬᆸ")
+(merge-rule "쾺" "á„ᅬᆹ")
+(merge-rule "ì¾»" "á„ᅬᆺ")
+(merge-rule "ì¾¼" "á„ᅬᆻ")
+(merge-rule "ì¾½" "á„ᅬᆼ")
+(merge-rule "ì¾¾" "á„ᅬᆽ")
+(merge-rule "쾿" "á„ᅬᆾ")
+(merge-rule "ì¿€" "á„ᅬᆿ")
+(merge-rule "ì¿" "á„ᅬᇀ")
+(merge-rule "ì¿‚" "á„á…¬á‡")
+(merge-rule "쿃" "á„ᅬᇂ")
+(merge-rule "ì¿„" "á„á…­~b")
+(merge-rule "ì¿…" "á„ᅭᆨ")
+(merge-rule "쿆" "á„ᅭᆩ")
+(merge-rule "쿇" "á„ᅭᆪ")
+(merge-rule "쿈" "á„ᅭᆫ")
+(merge-rule "쿉" "á„ᅭᆬ")
+(merge-rule "ì¿Š" "á„ᅭᆭ")
+(merge-rule "ì¿‹" "á„ᅭᆮ")
+(merge-rule "ì¿Œ" "á„ᅭᆯ")
+(merge-rule "ì¿" "á„ᅭᆰ")
+(merge-rule "ì¿Ž" "á„ᅭᆱ")
+(merge-rule "ì¿" "á„ᅭᆲ")
+(merge-rule "ì¿" "á„ᅭᆳ")
+(merge-rule "ì¿‘" "á„ᅭᆴ")
+(merge-rule "ì¿’" "á„ᅭᆵ")
+(merge-rule "ì¿“" "á„ᅭᆶ")
+(merge-rule "ì¿”" "á„ᅭᆷ")
+(merge-rule "ì¿•" "á„ᅭᆸ")
+(merge-rule "ì¿–" "á„ᅭᆹ")
+(merge-rule "ì¿—" "á„ᅭᆺ")
+(merge-rule "쿘" "á„ᅭᆻ")
+(merge-rule "ì¿™" "á„ᅭᆼ")
+(merge-rule "ì¿š" "á„ᅭᆽ")
+(merge-rule "ì¿›" "á„ᅭᆾ")
+(merge-rule "ì¿œ" "á„ᅭᆿ")
+(merge-rule "ì¿" "á„ᅭᇀ")
+(merge-rule "ì¿ž" "á„á…­á‡")
+(merge-rule "ì¿Ÿ" "á„ᅭᇂ")
+(merge-rule "ì¿ " "á„á…®~b")
+(merge-rule "ì¿¡" "á„ᅮᆨ")
+(merge-rule "ì¿¢" "á„ᅮᆩ")
+(merge-rule "ì¿£" "á„ᅮᆪ")
+(merge-rule "쿤" "á„ᅮᆫ")
+(merge-rule "ì¿¥" "á„ᅮᆬ")
+(merge-rule "쿦" "á„ᅮᆭ")
+(merge-rule "쿧" "á„ᅮᆮ")
+(merge-rule "쿨" "á„ᅮᆯ")
+(merge-rule "ì¿©" "á„ᅮᆰ")
+(merge-rule "쿪" "á„ᅮᆱ")
+(merge-rule "ì¿«" "á„ᅮᆲ")
+(merge-rule "쿬" "á„ᅮᆳ")
+(merge-rule "ì¿­" "á„ᅮᆴ")
+(merge-rule "ì¿®" "á„ᅮᆵ")
+(merge-rule "쿯" "á„ᅮᆶ")
+(merge-rule "ì¿°" "á„ᅮᆷ")
+(merge-rule "쿱" "á„ᅮᆸ")
+(merge-rule "쿲" "á„ᅮᆹ")
+(merge-rule "쿳" "á„ᅮᆺ")
+(merge-rule "ì¿´" "á„ᅮᆻ")
+(merge-rule "쿵" "á„ᅮᆼ")
+(merge-rule "쿶" "á„ᅮᆽ")
+(merge-rule "ì¿·" "á„ᅮᆾ")
+(merge-rule "쿸" "á„ᅮᆿ")
+(merge-rule "쿹" "á„ᅮᇀ")
+(merge-rule "쿺" "á„á…®á‡")
+(merge-rule "ì¿»" "á„ᅮᇂ")
+(merge-rule "쿼" "á„á…¯~b")
+(merge-rule "쿽" "á„ᅯᆨ")
+(merge-rule "쿾" "á„ᅯᆩ")
+(merge-rule "ì¿¿" "á„ᅯᆪ")
+(merge-rule "퀀" "á„ᅯᆫ")
+(merge-rule "í€" "á„ᅯᆬ")
+(merge-rule "퀂" "á„ᅯᆭ")
+(merge-rule "퀃" "á„ᅯᆮ")
+(merge-rule "퀄" "á„ᅯᆯ")
+(merge-rule "퀅" "á„ᅯᆰ")
+(merge-rule "퀆" "á„ᅯᆱ")
+(merge-rule "퀇" "á„ᅯᆲ")
+(merge-rule "퀈" "á„ᅯᆳ")
+(merge-rule "퀉" "á„ᅯᆴ")
+(merge-rule "퀊" "á„ᅯᆵ")
+(merge-rule "퀋" "á„ᅯᆶ")
+(merge-rule "퀌" "á„ᅯᆷ")
+(merge-rule "í€" "á„ᅯᆸ")
+(merge-rule "퀎" "á„ᅯᆹ")
+(merge-rule "í€" "á„ᅯᆺ")
+(merge-rule "í€" "á„ᅯᆻ")
+(merge-rule "퀑" "á„ᅯᆼ")
+(merge-rule "퀒" "á„ᅯᆽ")
+(merge-rule "퀓" "á„ᅯᆾ")
+(merge-rule "퀔" "á„ᅯᆿ")
+(merge-rule "퀕" "á„ᅯᇀ")
+(merge-rule "퀖" "á„á…¯á‡")
+(merge-rule "퀗" "á„ᅯᇂ")
+(merge-rule "퀘" "á„á…°~b")
+(merge-rule "퀙" "á„ᅰᆨ")
+(merge-rule "퀚" "á„ᅰᆩ")
+(merge-rule "퀛" "á„ᅰᆪ")
+(merge-rule "퀜" "á„ᅰᆫ")
+(merge-rule "í€" "á„ᅰᆬ")
+(merge-rule "퀞" "á„ᅰᆭ")
+(merge-rule "퀟" "á„ᅰᆮ")
+(merge-rule "퀠" "á„ᅰᆯ")
+(merge-rule "퀡" "á„ᅰᆰ")
+(merge-rule "퀢" "á„ᅰᆱ")
+(merge-rule "퀣" "á„ᅰᆲ")
+(merge-rule "퀤" "á„ᅰᆳ")
+(merge-rule "퀥" "á„ᅰᆴ")
+(merge-rule "퀦" "á„ᅰᆵ")
+(merge-rule "퀧" "á„ᅰᆶ")
+(merge-rule "퀨" "á„ᅰᆷ")
+(merge-rule "퀩" "á„ᅰᆸ")
+(merge-rule "퀪" "á„ᅰᆹ")
+(merge-rule "퀫" "á„ᅰᆺ")
+(merge-rule "퀬" "á„ᅰᆻ")
+(merge-rule "퀭" "á„ᅰᆼ")
+(merge-rule "퀮" "á„ᅰᆽ")
+(merge-rule "퀯" "á„ᅰᆾ")
+(merge-rule "퀰" "á„ᅰᆿ")
+(merge-rule "퀱" "á„ᅰᇀ")
+(merge-rule "퀲" "á„á…°á‡")
+(merge-rule "퀳" "á„ᅰᇂ")
+(merge-rule "퀴" "á„á…±~b")
+(merge-rule "퀵" "á„ᅱᆨ")
+(merge-rule "퀶" "á„ᅱᆩ")
+(merge-rule "퀷" "á„ᅱᆪ")
+(merge-rule "퀸" "á„ᅱᆫ")
+(merge-rule "퀹" "á„ᅱᆬ")
+(merge-rule "퀺" "á„ᅱᆭ")
+(merge-rule "퀻" "á„ᅱᆮ")
+(merge-rule "퀼" "á„ᅱᆯ")
+(merge-rule "퀽" "á„ᅱᆰ")
+(merge-rule "퀾" "á„ᅱᆱ")
+(merge-rule "퀿" "á„ᅱᆲ")
+(merge-rule "í€" "á„ᅱᆳ")
+(merge-rule "í" "á„ᅱᆴ")
+(merge-rule "í‚" "á„ᅱᆵ")
+(merge-rule "íƒ" "á„ᅱᆶ")
+(merge-rule "í„" "á„ᅱᆷ")
+(merge-rule "í…" "á„ᅱᆸ")
+(merge-rule "í†" "á„ᅱᆹ")
+(merge-rule "í‡" "á„ᅱᆺ")
+(merge-rule "íˆ" "á„ᅱᆻ")
+(merge-rule "í‰" "á„ᅱᆼ")
+(merge-rule "íŠ" "á„ᅱᆽ")
+(merge-rule "í‹" "á„ᅱᆾ")
+(merge-rule "íŒ" "á„ᅱᆿ")
+(merge-rule "í" "á„ᅱᇀ")
+(merge-rule "íŽ" "á„á…±á‡")
+(merge-rule "í" "á„ᅱᇂ")
+(merge-rule "í" "á„á…²~b")
+(merge-rule "í‘" "á„ᅲᆨ")
+(merge-rule "í’" "á„ᅲᆩ")
+(merge-rule "í“" "á„ᅲᆪ")
+(merge-rule "í”" "á„ᅲᆫ")
+(merge-rule "í•" "á„ᅲᆬ")
+(merge-rule "í–" "á„ᅲᆭ")
+(merge-rule "í—" "á„ᅲᆮ")
+(merge-rule "í˜" "á„ᅲᆯ")
+(merge-rule "í™" "á„ᅲᆰ")
+(merge-rule "íš" "á„ᅲᆱ")
+(merge-rule "í›" "á„ᅲᆲ")
+(merge-rule "íœ" "á„ᅲᆳ")
+(merge-rule "í" "á„ᅲᆴ")
+(merge-rule "íž" "á„ᅲᆵ")
+(merge-rule "íŸ" "á„ᅲᆶ")
+(merge-rule "í " "á„ᅲᆷ")
+(merge-rule "í¡" "á„ᅲᆸ")
+(merge-rule "í¢" "á„ᅲᆹ")
+(merge-rule "í£" "á„ᅲᆺ")
+(merge-rule "í¤" "á„ᅲᆻ")
+(merge-rule "í¥" "á„ᅲᆼ")
+(merge-rule "í¦" "á„ᅲᆽ")
+(merge-rule "í§" "á„ᅲᆾ")
+(merge-rule "í¨" "á„ᅲᆿ")
+(merge-rule "í©" "á„ᅲᇀ")
+(merge-rule "íª" "á„á…²á‡")
+(merge-rule "í«" "á„ᅲᇂ")
+(merge-rule "í¬" "á„á…³~b")
+(merge-rule "í­" "á„ᅳᆨ")
+(merge-rule "í®" "á„ᅳᆩ")
+(merge-rule "í¯" "á„ᅳᆪ")
+(merge-rule "í°" "á„ᅳᆫ")
+(merge-rule "í±" "á„ᅳᆬ")
+(merge-rule "í²" "á„ᅳᆭ")
+(merge-rule "í³" "á„ᅳᆮ")
+(merge-rule "í´" "á„ᅳᆯ")
+(merge-rule "íµ" "á„ᅳᆰ")
+(merge-rule "í¶" "á„ᅳᆱ")
+(merge-rule "í·" "á„ᅳᆲ")
+(merge-rule "í¸" "á„ᅳᆳ")
+(merge-rule "í¹" "á„ᅳᆴ")
+(merge-rule "íº" "á„ᅳᆵ")
+(merge-rule "í»" "á„ᅳᆶ")
+(merge-rule "í¼" "á„ᅳᆷ")
+(merge-rule "í½" "á„ᅳᆸ")
+(merge-rule "í¾" "á„ᅳᆹ")
+(merge-rule "í¿" "á„ᅳᆺ")
+(merge-rule "í‚€" "á„ᅳᆻ")
+(merge-rule "í‚" "á„ᅳᆼ")
+(merge-rule "í‚‚" "á„ᅳᆽ")
+(merge-rule "킃" "á„ᅳᆾ")
+(merge-rule "í‚„" "á„ᅳᆿ")
+(merge-rule "í‚…" "á„ᅳᇀ")
+(merge-rule "킆" "á„á…³á‡")
+(merge-rule "킇" "á„ᅳᇂ")
+(merge-rule "킈" "á„á…´~b")
+(merge-rule "킉" "á„ᅴᆨ")
+(merge-rule "í‚Š" "á„ᅴᆩ")
+(merge-rule "í‚‹" "á„ᅴᆪ")
+(merge-rule "í‚Œ" "á„ᅴᆫ")
+(merge-rule "í‚" "á„ᅴᆬ")
+(merge-rule "í‚Ž" "á„ᅴᆭ")
+(merge-rule "í‚" "á„ᅴᆮ")
+(merge-rule "í‚" "á„ᅴᆯ")
+(merge-rule "í‚‘" "á„ᅴᆰ")
+(merge-rule "í‚’" "á„ᅴᆱ")
+(merge-rule "í‚“" "á„ᅴᆲ")
+(merge-rule "í‚”" "á„ᅴᆳ")
+(merge-rule "í‚•" "á„ᅴᆴ")
+(merge-rule "í‚–" "á„ᅴᆵ")
+(merge-rule "í‚—" "á„ᅴᆶ")
+(merge-rule "킘" "á„ᅴᆷ")
+(merge-rule "í‚™" "á„ᅴᆸ")
+(merge-rule "í‚š" "á„ᅴᆹ")
+(merge-rule "í‚›" "á„ᅴᆺ")
+(merge-rule "í‚œ" "á„ᅴᆻ")
+(merge-rule "í‚" "á„ᅴᆼ")
+(merge-rule "í‚ž" "á„ᅴᆽ")
+(merge-rule "í‚Ÿ" "á„ᅴᆾ")
+(merge-rule "í‚ " "á„ᅴᆿ")
+(merge-rule "í‚¡" "á„ᅴᇀ")
+(merge-rule "í‚¢" "á„á…´á‡")
+(merge-rule "í‚£" "á„ᅴᇂ")
+(merge-rule "키" "á„á…µ~b")
+(merge-rule "í‚¥" "á„ᅵᆨ")
+(merge-rule "킦" "á„ᅵᆩ")
+(merge-rule "킧" "á„ᅵᆪ")
+(merge-rule "킨" "á„ᅵᆫ")
+(merge-rule "í‚©" "á„ᅵᆬ")
+(merge-rule "킪" "á„ᅵᆭ")
+(merge-rule "í‚«" "á„ᅵᆮ")
+(merge-rule "킬" "á„ᅵᆯ")
+(merge-rule "í‚­" "á„ᅵᆰ")
+(merge-rule "í‚®" "á„ᅵᆱ")
+(merge-rule "킯" "á„ᅵᆲ")
+(merge-rule "í‚°" "á„ᅵᆳ")
+(merge-rule "킱" "á„ᅵᆴ")
+(merge-rule "킲" "á„ᅵᆵ")
+(merge-rule "킳" "á„ᅵᆶ")
+(merge-rule "í‚´" "á„ᅵᆷ")
+(merge-rule "킵" "á„ᅵᆸ")
+(merge-rule "킶" "á„ᅵᆹ")
+(merge-rule "í‚·" "á„ᅵᆺ")
+(merge-rule "킸" "á„ᅵᆻ")
+(merge-rule "킹" "á„ᅵᆼ")
+(merge-rule "킺" "á„ᅵᆽ")
+(merge-rule "í‚»" "á„ᅵᆾ")
+(merge-rule "킼" "á„ᅵᆿ")
+(merge-rule "킽" "á„ᅵᇀ")
+(merge-rule "킾" "á„á…µá‡")
+(merge-rule "í‚¿" "á„ᅵᇂ")
+(merge-rule "타" "á„á…¡~b")
+(merge-rule "íƒ" "á„ᅡᆨ")
+(merge-rule "탂" "á„ᅡᆩ")
+(merge-rule "탃" "á„ᅡᆪ")
+(merge-rule "탄" "á„ᅡᆫ")
+(merge-rule "탅" "á„ᅡᆬ")
+(merge-rule "탆" "á„ᅡᆭ")
+(merge-rule "탇" "á„ᅡᆮ")
+(merge-rule "탈" "á„ᅡᆯ")
+(merge-rule "탉" "á„ᅡᆰ")
+(merge-rule "탊" "á„ᅡᆱ")
+(merge-rule "탋" "á„ᅡᆲ")
+(merge-rule "탌" "á„ᅡᆳ")
+(merge-rule "íƒ" "á„ᅡᆴ")
+(merge-rule "탎" "á„ᅡᆵ")
+(merge-rule "íƒ" "á„ᅡᆶ")
+(merge-rule "íƒ" "á„ᅡᆷ")
+(merge-rule "탑" "á„ᅡᆸ")
+(merge-rule "탒" "á„ᅡᆹ")
+(merge-rule "탓" "á„ᅡᆺ")
+(merge-rule "탔" "á„ᅡᆻ")
+(merge-rule "탕" "á„ᅡᆼ")
+(merge-rule "탖" "á„ᅡᆽ")
+(merge-rule "탗" "á„ᅡᆾ")
+(merge-rule "탘" "á„ᅡᆿ")
+(merge-rule "탙" "á„ᅡᇀ")
+(merge-rule "탚" "á„á…¡á‡")
+(merge-rule "탛" "á„ᅡᇂ")
+(merge-rule "태" "á„á…¢~b")
+(merge-rule "íƒ" "á„ᅢᆨ")
+(merge-rule "탞" "á„ᅢᆩ")
+(merge-rule "탟" "á„ᅢᆪ")
+(merge-rule "탠" "á„ᅢᆫ")
+(merge-rule "탡" "á„ᅢᆬ")
+(merge-rule "탢" "á„ᅢᆭ")
+(merge-rule "탣" "á„ᅢᆮ")
+(merge-rule "탤" "á„ᅢᆯ")
+(merge-rule "탥" "á„ᅢᆰ")
+(merge-rule "탦" "á„ᅢᆱ")
+(merge-rule "탧" "á„ᅢᆲ")
+(merge-rule "탨" "á„ᅢᆳ")
+(merge-rule "탩" "á„ᅢᆴ")
+(merge-rule "탪" "á„ᅢᆵ")
+(merge-rule "탫" "á„ᅢᆶ")
+(merge-rule "탬" "á„ᅢᆷ")
+(merge-rule "탭" "á„ᅢᆸ")
+(merge-rule "탮" "á„ᅢᆹ")
+(merge-rule "탯" "á„ᅢᆺ")
+(merge-rule "탰" "á„ᅢᆻ")
+(merge-rule "탱" "á„ᅢᆼ")
+(merge-rule "탲" "á„ᅢᆽ")
+(merge-rule "탳" "á„ᅢᆾ")
+(merge-rule "탴" "á„ᅢᆿ")
+(merge-rule "탵" "á„ᅢᇀ")
+(merge-rule "탶" "á„á…¢á‡")
+(merge-rule "탷" "á„ᅢᇂ")
+(merge-rule "탸" "á„á…£~b")
+(merge-rule "탹" "á„ᅣᆨ")
+(merge-rule "탺" "á„ᅣᆩ")
+(merge-rule "탻" "á„ᅣᆪ")
+(merge-rule "탼" "á„ᅣᆫ")
+(merge-rule "탽" "á„ᅣᆬ")
+(merge-rule "탾" "á„ᅣᆭ")
+(merge-rule "탿" "á„ᅣᆮ")
+(merge-rule "í„€" "á„ᅣᆯ")
+(merge-rule "í„" "á„ᅣᆰ")
+(merge-rule "í„‚" "á„ᅣᆱ")
+(merge-rule "턃" "á„ᅣᆲ")
+(merge-rule "í„„" "á„ᅣᆳ")
+(merge-rule "í„…" "á„ᅣᆴ")
+(merge-rule "턆" "á„ᅣᆵ")
+(merge-rule "턇" "á„ᅣᆶ")
+(merge-rule "턈" "á„ᅣᆷ")
+(merge-rule "턉" "á„ᅣᆸ")
+(merge-rule "í„Š" "á„ᅣᆹ")
+(merge-rule "í„‹" "á„ᅣᆺ")
+(merge-rule "í„Œ" "á„ᅣᆻ")
+(merge-rule "í„" "á„ᅣᆼ")
+(merge-rule "í„Ž" "á„ᅣᆽ")
+(merge-rule "í„" "á„ᅣᆾ")
+(merge-rule "í„" "á„ᅣᆿ")
+(merge-rule "í„‘" "á„ᅣᇀ")
+(merge-rule "í„’" "á„á…£á‡")
+(merge-rule "í„“" "á„ᅣᇂ")
+(merge-rule "í„”" "á„á…¤~b")
+(merge-rule "í„•" "á„ᅤᆨ")
+(merge-rule "í„–" "á„ᅤᆩ")
+(merge-rule "í„—" "á„ᅤᆪ")
+(merge-rule "턘" "á„ᅤᆫ")
+(merge-rule "í„™" "á„ᅤᆬ")
+(merge-rule "í„š" "á„ᅤᆭ")
+(merge-rule "í„›" "á„ᅤᆮ")
+(merge-rule "í„œ" "á„ᅤᆯ")
+(merge-rule "í„" "á„ᅤᆰ")
+(merge-rule "í„ž" "á„ᅤᆱ")
+(merge-rule "í„Ÿ" "á„ᅤᆲ")
+(merge-rule "í„ " "á„ᅤᆳ")
+(merge-rule "í„¡" "á„ᅤᆴ")
+(merge-rule "í„¢" "á„ᅤᆵ")
+(merge-rule "í„£" "á„ᅤᆶ")
+(merge-rule "턤" "á„ᅤᆷ")
+(merge-rule "í„¥" "á„ᅤᆸ")
+(merge-rule "턦" "á„ᅤᆹ")
+(merge-rule "턧" "á„ᅤᆺ")
+(merge-rule "턨" "á„ᅤᆻ")
+(merge-rule "í„©" "á„ᅤᆼ")
+(merge-rule "턪" "á„ᅤᆽ")
+(merge-rule "í„«" "á„ᅤᆾ")
+(merge-rule "턬" "á„ᅤᆿ")
+(merge-rule "í„­" "á„ᅤᇀ")
+(merge-rule "í„®" "á„á…¤á‡")
+(merge-rule "턯" "á„ᅤᇂ")
+(merge-rule "í„°" "á„á…¥~b")
+(merge-rule "턱" "á„ᅥᆨ")
+(merge-rule "턲" "á„ᅥᆩ")
+(merge-rule "턳" "á„ᅥᆪ")
+(merge-rule "í„´" "á„ᅥᆫ")
+(merge-rule "턵" "á„ᅥᆬ")
+(merge-rule "턶" "á„ᅥᆭ")
+(merge-rule "í„·" "á„ᅥᆮ")
+(merge-rule "털" "á„ᅥᆯ")
+(merge-rule "턹" "á„ᅥᆰ")
+(merge-rule "턺" "á„ᅥᆱ")
+(merge-rule "í„»" "á„ᅥᆲ")
+(merge-rule "턼" "á„ᅥᆳ")
+(merge-rule "턽" "á„ᅥᆴ")
+(merge-rule "턾" "á„ᅥᆵ")
+(merge-rule "í„¿" "á„ᅥᆶ")
+(merge-rule "í…€" "á„ᅥᆷ")
+(merge-rule "í…" "á„ᅥᆸ")
+(merge-rule "í…‚" "á„ᅥᆹ")
+(merge-rule "í…ƒ" "á„ᅥᆺ")
+(merge-rule "í…„" "á„ᅥᆻ")
+(merge-rule "í……" "á„ᅥᆼ")
+(merge-rule "í…†" "á„ᅥᆽ")
+(merge-rule "í…‡" "á„ᅥᆾ")
+(merge-rule "í…ˆ" "á„ᅥᆿ")
+(merge-rule "í…‰" "á„ᅥᇀ")
+(merge-rule "í…Š" "á„á…¥á‡")
+(merge-rule "í…‹" "á„ᅥᇂ")
+(merge-rule "í…Œ" "á„á…¦~b")
+(merge-rule "í…" "á„ᅦᆨ")
+(merge-rule "í…Ž" "á„ᅦᆩ")
+(merge-rule "í…" "á„ᅦᆪ")
+(merge-rule "í…" "á„ᅦᆫ")
+(merge-rule "í…‘" "á„ᅦᆬ")
+(merge-rule "í…’" "á„ᅦᆭ")
+(merge-rule "í…“" "á„ᅦᆮ")
+(merge-rule "í…”" "á„ᅦᆯ")
+(merge-rule "í…•" "á„ᅦᆰ")
+(merge-rule "í…–" "á„ᅦᆱ")
+(merge-rule "í…—" "á„ᅦᆲ")
+(merge-rule "í…˜" "á„ᅦᆳ")
+(merge-rule "í…™" "á„ᅦᆴ")
+(merge-rule "í…š" "á„ᅦᆵ")
+(merge-rule "í…›" "á„ᅦᆶ")
+(merge-rule "í…œ" "á„ᅦᆷ")
+(merge-rule "í…" "á„ᅦᆸ")
+(merge-rule "í…ž" "á„ᅦᆹ")
+(merge-rule "í…Ÿ" "á„ᅦᆺ")
+(merge-rule "í… " "á„ᅦᆻ")
+(merge-rule "í…¡" "á„ᅦᆼ")
+(merge-rule "í…¢" "á„ᅦᆽ")
+(merge-rule "í…£" "á„ᅦᆾ")
+(merge-rule "í…¤" "á„ᅦᆿ")
+(merge-rule "í…¥" "á„ᅦᇀ")
+(merge-rule "í…¦" "á„á…¦á‡")
+(merge-rule "í…§" "á„ᅦᇂ")
+(merge-rule "í…¨" "á„á…§~b")
+(merge-rule "í…©" "á„ᅧᆨ")
+(merge-rule "í…ª" "á„ᅧᆩ")
+(merge-rule "í…«" "á„ᅧᆪ")
+(merge-rule "í…¬" "á„ᅧᆫ")
+(merge-rule "í…­" "á„ᅧᆬ")
+(merge-rule "í…®" "á„ᅧᆭ")
+(merge-rule "í…¯" "á„ᅧᆮ")
+(merge-rule "í…°" "á„ᅧᆯ")
+(merge-rule "í…±" "á„ᅧᆰ")
+(merge-rule "í…²" "á„ᅧᆱ")
+(merge-rule "í…³" "á„ᅧᆲ")
+(merge-rule "í…´" "á„ᅧᆳ")
+(merge-rule "í…µ" "á„ᅧᆴ")
+(merge-rule "í…¶" "á„ᅧᆵ")
+(merge-rule "í…·" "á„ᅧᆶ")
+(merge-rule "í…¸" "á„ᅧᆷ")
+(merge-rule "í…¹" "á„ᅧᆸ")
+(merge-rule "í…º" "á„ᅧᆹ")
+(merge-rule "í…»" "á„ᅧᆺ")
+(merge-rule "í…¼" "á„ᅧᆻ")
+(merge-rule "í…½" "á„ᅧᆼ")
+(merge-rule "í…¾" "á„ᅧᆽ")
+(merge-rule "í…¿" "á„ᅧᆾ")
+(merge-rule "톀" "á„ᅧᆿ")
+(merge-rule "í†" "á„ᅧᇀ")
+(merge-rule "톂" "á„á…§á‡")
+(merge-rule "톃" "á„ᅧᇂ")
+(merge-rule "톄" "á„á…¨~b")
+(merge-rule "톅" "á„ᅨᆨ")
+(merge-rule "톆" "á„ᅨᆩ")
+(merge-rule "톇" "á„ᅨᆪ")
+(merge-rule "톈" "á„ᅨᆫ")
+(merge-rule "톉" "á„ᅨᆬ")
+(merge-rule "톊" "á„ᅨᆭ")
+(merge-rule "톋" "á„ᅨᆮ")
+(merge-rule "톌" "á„ᅨᆯ")
+(merge-rule "í†" "á„ᅨᆰ")
+(merge-rule "톎" "á„ᅨᆱ")
+(merge-rule "í†" "á„ᅨᆲ")
+(merge-rule "í†" "á„ᅨᆳ")
+(merge-rule "톑" "á„ᅨᆴ")
+(merge-rule "톒" "á„ᅨᆵ")
+(merge-rule "톓" "á„ᅨᆶ")
+(merge-rule "톔" "á„ᅨᆷ")
+(merge-rule "톕" "á„ᅨᆸ")
+(merge-rule "톖" "á„ᅨᆹ")
+(merge-rule "톗" "á„ᅨᆺ")
+(merge-rule "톘" "á„ᅨᆻ")
+(merge-rule "톙" "á„ᅨᆼ")
+(merge-rule "톚" "á„ᅨᆽ")
+(merge-rule "톛" "á„ᅨᆾ")
+(merge-rule "톜" "á„ᅨᆿ")
+(merge-rule "í†" "á„ᅨᇀ")
+(merge-rule "톞" "á„á…¨á‡")
+(merge-rule "톟" "á„ᅨᇂ")
+(merge-rule "토" "á„á…©~b")
+(merge-rule "톡" "á„ᅩᆨ")
+(merge-rule "톢" "á„ᅩᆩ")
+(merge-rule "톣" "á„ᅩᆪ")
+(merge-rule "톤" "á„ᅩᆫ")
+(merge-rule "톥" "á„ᅩᆬ")
+(merge-rule "톦" "á„ᅩᆭ")
+(merge-rule "톧" "á„ᅩᆮ")
+(merge-rule "톨" "á„ᅩᆯ")
+(merge-rule "톩" "á„ᅩᆰ")
+(merge-rule "톪" "á„ᅩᆱ")
+(merge-rule "톫" "á„ᅩᆲ")
+(merge-rule "톬" "á„ᅩᆳ")
+(merge-rule "톭" "á„ᅩᆴ")
+(merge-rule "톮" "á„ᅩᆵ")
+(merge-rule "톯" "á„ᅩᆶ")
+(merge-rule "톰" "á„ᅩᆷ")
+(merge-rule "톱" "á„ᅩᆸ")
+(merge-rule "톲" "á„ᅩᆹ")
+(merge-rule "톳" "á„ᅩᆺ")
+(merge-rule "톴" "á„ᅩᆻ")
+(merge-rule "통" "á„ᅩᆼ")
+(merge-rule "톶" "á„ᅩᆽ")
+(merge-rule "톷" "á„ᅩᆾ")
+(merge-rule "톸" "á„ᅩᆿ")
+(merge-rule "톹" "á„ᅩᇀ")
+(merge-rule "톺" "á„á…©á‡")
+(merge-rule "톻" "á„ᅩᇂ")
+(merge-rule "톼" "á„á…ª~b")
+(merge-rule "톽" "á„ᅪᆨ")
+(merge-rule "톾" "á„ᅪᆩ")
+(merge-rule "톿" "á„ᅪᆪ")
+(merge-rule "퇀" "á„ᅪᆫ")
+(merge-rule "í‡" "á„ᅪᆬ")
+(merge-rule "퇂" "á„ᅪᆭ")
+(merge-rule "퇃" "á„ᅪᆮ")
+(merge-rule "퇄" "á„ᅪᆯ")
+(merge-rule "퇅" "á„ᅪᆰ")
+(merge-rule "퇆" "á„ᅪᆱ")
+(merge-rule "퇇" "á„ᅪᆲ")
+(merge-rule "퇈" "á„ᅪᆳ")
+(merge-rule "퇉" "á„ᅪᆴ")
+(merge-rule "퇊" "á„ᅪᆵ")
+(merge-rule "퇋" "á„ᅪᆶ")
+(merge-rule "퇌" "á„ᅪᆷ")
+(merge-rule "í‡" "á„ᅪᆸ")
+(merge-rule "퇎" "á„ᅪᆹ")
+(merge-rule "í‡" "á„ᅪᆺ")
+(merge-rule "í‡" "á„ᅪᆻ")
+(merge-rule "퇑" "á„ᅪᆼ")
+(merge-rule "퇒" "á„ᅪᆽ")
+(merge-rule "퇓" "á„ᅪᆾ")
+(merge-rule "퇔" "á„ᅪᆿ")
+(merge-rule "퇕" "á„ᅪᇀ")
+(merge-rule "퇖" "á„á…ªá‡")
+(merge-rule "퇗" "á„ᅪᇂ")
+(merge-rule "퇘" "á„á…«~b")
+(merge-rule "퇙" "á„ᅫᆨ")
+(merge-rule "퇚" "á„ᅫᆩ")
+(merge-rule "퇛" "á„ᅫᆪ")
+(merge-rule "퇜" "á„ᅫᆫ")
+(merge-rule "í‡" "á„ᅫᆬ")
+(merge-rule "퇞" "á„ᅫᆭ")
+(merge-rule "퇟" "á„ᅫᆮ")
+(merge-rule "퇠" "á„ᅫᆯ")
+(merge-rule "퇡" "á„ᅫᆰ")
+(merge-rule "퇢" "á„ᅫᆱ")
+(merge-rule "퇣" "á„ᅫᆲ")
+(merge-rule "퇤" "á„ᅫᆳ")
+(merge-rule "퇥" "á„ᅫᆴ")
+(merge-rule "퇦" "á„ᅫᆵ")
+(merge-rule "퇧" "á„ᅫᆶ")
+(merge-rule "퇨" "á„ᅫᆷ")
+(merge-rule "퇩" "á„ᅫᆸ")
+(merge-rule "퇪" "á„ᅫᆹ")
+(merge-rule "퇫" "á„ᅫᆺ")
+(merge-rule "퇬" "á„ᅫᆻ")
+(merge-rule "퇭" "á„ᅫᆼ")
+(merge-rule "퇮" "á„ᅫᆽ")
+(merge-rule "퇯" "á„ᅫᆾ")
+(merge-rule "퇰" "á„ᅫᆿ")
+(merge-rule "퇱" "á„ᅫᇀ")
+(merge-rule "퇲" "á„á…«á‡")
+(merge-rule "퇳" "á„ᅫᇂ")
+(merge-rule "퇴" "á„á…¬~b")
+(merge-rule "퇵" "á„ᅬᆨ")
+(merge-rule "퇶" "á„ᅬᆩ")
+(merge-rule "퇷" "á„ᅬᆪ")
+(merge-rule "퇸" "á„ᅬᆫ")
+(merge-rule "퇹" "á„ᅬᆬ")
+(merge-rule "퇺" "á„ᅬᆭ")
+(merge-rule "퇻" "á„ᅬᆮ")
+(merge-rule "퇼" "á„ᅬᆯ")
+(merge-rule "퇽" "á„ᅬᆰ")
+(merge-rule "퇾" "á„ᅬᆱ")
+(merge-rule "퇿" "á„ᅬᆲ")
+(merge-rule "툀" "á„ᅬᆳ")
+(merge-rule "íˆ" "á„ᅬᆴ")
+(merge-rule "툂" "á„ᅬᆵ")
+(merge-rule "툃" "á„ᅬᆶ")
+(merge-rule "툄" "á„ᅬᆷ")
+(merge-rule "툅" "á„ᅬᆸ")
+(merge-rule "툆" "á„ᅬᆹ")
+(merge-rule "툇" "á„ᅬᆺ")
+(merge-rule "툈" "á„ᅬᆻ")
+(merge-rule "툉" "á„ᅬᆼ")
+(merge-rule "툊" "á„ᅬᆽ")
+(merge-rule "툋" "á„ᅬᆾ")
+(merge-rule "툌" "á„ᅬᆿ")
+(merge-rule "íˆ" "á„ᅬᇀ")
+(merge-rule "툎" "á„á…¬á‡")
+(merge-rule "íˆ" "á„ᅬᇂ")
+(merge-rule "íˆ" "á„á…­~b")
+(merge-rule "툑" "á„ᅭᆨ")
+(merge-rule "툒" "á„ᅭᆩ")
+(merge-rule "툓" "á„ᅭᆪ")
+(merge-rule "툔" "á„ᅭᆫ")
+(merge-rule "툕" "á„ᅭᆬ")
+(merge-rule "툖" "á„ᅭᆭ")
+(merge-rule "툗" "á„ᅭᆮ")
+(merge-rule "툘" "á„ᅭᆯ")
+(merge-rule "툙" "á„ᅭᆰ")
+(merge-rule "툚" "á„ᅭᆱ")
+(merge-rule "툛" "á„ᅭᆲ")
+(merge-rule "툜" "á„ᅭᆳ")
+(merge-rule "íˆ" "á„ᅭᆴ")
+(merge-rule "툞" "á„ᅭᆵ")
+(merge-rule "툟" "á„ᅭᆶ")
+(merge-rule "툠" "á„ᅭᆷ")
+(merge-rule "툡" "á„ᅭᆸ")
+(merge-rule "툢" "á„ᅭᆹ")
+(merge-rule "툣" "á„ᅭᆺ")
+(merge-rule "툤" "á„ᅭᆻ")
+(merge-rule "툥" "á„ᅭᆼ")
+(merge-rule "툦" "á„ᅭᆽ")
+(merge-rule "툧" "á„ᅭᆾ")
+(merge-rule "툨" "á„ᅭᆿ")
+(merge-rule "툩" "á„ᅭᇀ")
+(merge-rule "툪" "á„á…­á‡")
+(merge-rule "툫" "á„ᅭᇂ")
+(merge-rule "투" "á„á…®~b")
+(merge-rule "툭" "á„ᅮᆨ")
+(merge-rule "툮" "á„ᅮᆩ")
+(merge-rule "툯" "á„ᅮᆪ")
+(merge-rule "툰" "á„ᅮᆫ")
+(merge-rule "툱" "á„ᅮᆬ")
+(merge-rule "툲" "á„ᅮᆭ")
+(merge-rule "툳" "á„ᅮᆮ")
+(merge-rule "툴" "á„ᅮᆯ")
+(merge-rule "툵" "á„ᅮᆰ")
+(merge-rule "툶" "á„ᅮᆱ")
+(merge-rule "툷" "á„ᅮᆲ")
+(merge-rule "툸" "á„ᅮᆳ")
+(merge-rule "툹" "á„ᅮᆴ")
+(merge-rule "툺" "á„ᅮᆵ")
+(merge-rule "툻" "á„ᅮᆶ")
+(merge-rule "툼" "á„ᅮᆷ")
+(merge-rule "툽" "á„ᅮᆸ")
+(merge-rule "툾" "á„ᅮᆹ")
+(merge-rule "툿" "á„ᅮᆺ")
+(merge-rule "퉀" "á„ᅮᆻ")
+(merge-rule "í‰" "á„ᅮᆼ")
+(merge-rule "퉂" "á„ᅮᆽ")
+(merge-rule "퉃" "á„ᅮᆾ")
+(merge-rule "퉄" "á„ᅮᆿ")
+(merge-rule "퉅" "á„ᅮᇀ")
+(merge-rule "퉆" "á„á…®á‡")
+(merge-rule "퉇" "á„ᅮᇂ")
+(merge-rule "퉈" "á„á…¯~b")
+(merge-rule "퉉" "á„ᅯᆨ")
+(merge-rule "퉊" "á„ᅯᆩ")
+(merge-rule "퉋" "á„ᅯᆪ")
+(merge-rule "퉌" "á„ᅯᆫ")
+(merge-rule "í‰" "á„ᅯᆬ")
+(merge-rule "퉎" "á„ᅯᆭ")
+(merge-rule "í‰" "á„ᅯᆮ")
+(merge-rule "í‰" "á„ᅯᆯ")
+(merge-rule "퉑" "á„ᅯᆰ")
+(merge-rule "퉒" "á„ᅯᆱ")
+(merge-rule "퉓" "á„ᅯᆲ")
+(merge-rule "퉔" "á„ᅯᆳ")
+(merge-rule "퉕" "á„ᅯᆴ")
+(merge-rule "퉖" "á„ᅯᆵ")
+(merge-rule "퉗" "á„ᅯᆶ")
+(merge-rule "퉘" "á„ᅯᆷ")
+(merge-rule "퉙" "á„ᅯᆸ")
+(merge-rule "퉚" "á„ᅯᆹ")
+(merge-rule "퉛" "á„ᅯᆺ")
+(merge-rule "퉜" "á„ᅯᆻ")
+(merge-rule "í‰" "á„ᅯᆼ")
+(merge-rule "퉞" "á„ᅯᆽ")
+(merge-rule "퉟" "á„ᅯᆾ")
+(merge-rule "퉠" "á„ᅯᆿ")
+(merge-rule "퉡" "á„ᅯᇀ")
+(merge-rule "퉢" "á„á…¯á‡")
+(merge-rule "퉣" "á„ᅯᇂ")
+(merge-rule "퉤" "á„á…°~b")
+(merge-rule "퉥" "á„ᅰᆨ")
+(merge-rule "퉦" "á„ᅰᆩ")
+(merge-rule "퉧" "á„ᅰᆪ")
+(merge-rule "퉨" "á„ᅰᆫ")
+(merge-rule "퉩" "á„ᅰᆬ")
+(merge-rule "퉪" "á„ᅰᆭ")
+(merge-rule "퉫" "á„ᅰᆮ")
+(merge-rule "퉬" "á„ᅰᆯ")
+(merge-rule "퉭" "á„ᅰᆰ")
+(merge-rule "퉮" "á„ᅰᆱ")
+(merge-rule "퉯" "á„ᅰᆲ")
+(merge-rule "퉰" "á„ᅰᆳ")
+(merge-rule "퉱" "á„ᅰᆴ")
+(merge-rule "퉲" "á„ᅰᆵ")
+(merge-rule "퉳" "á„ᅰᆶ")
+(merge-rule "퉴" "á„ᅰᆷ")
+(merge-rule "퉵" "á„ᅰᆸ")
+(merge-rule "퉶" "á„ᅰᆹ")
+(merge-rule "퉷" "á„ᅰᆺ")
+(merge-rule "퉸" "á„ᅰᆻ")
+(merge-rule "퉹" "á„ᅰᆼ")
+(merge-rule "퉺" "á„ᅰᆽ")
+(merge-rule "퉻" "á„ᅰᆾ")
+(merge-rule "퉼" "á„ᅰᆿ")
+(merge-rule "퉽" "á„ᅰᇀ")
+(merge-rule "퉾" "á„á…°á‡")
+(merge-rule "퉿" "á„ᅰᇂ")
+(merge-rule "튀" "á„á…±~b")
+(merge-rule "íŠ" "á„ᅱᆨ")
+(merge-rule "튂" "á„ᅱᆩ")
+(merge-rule "튃" "á„ᅱᆪ")
+(merge-rule "튄" "á„ᅱᆫ")
+(merge-rule "튅" "á„ᅱᆬ")
+(merge-rule "튆" "á„ᅱᆭ")
+(merge-rule "튇" "á„ᅱᆮ")
+(merge-rule "튈" "á„ᅱᆯ")
+(merge-rule "튉" "á„ᅱᆰ")
+(merge-rule "튊" "á„ᅱᆱ")
+(merge-rule "튋" "á„ᅱᆲ")
+(merge-rule "튌" "á„ᅱᆳ")
+(merge-rule "íŠ" "á„ᅱᆴ")
+(merge-rule "튎" "á„ᅱᆵ")
+(merge-rule "íŠ" "á„ᅱᆶ")
+(merge-rule "íŠ" "á„ᅱᆷ")
+(merge-rule "튑" "á„ᅱᆸ")
+(merge-rule "튒" "á„ᅱᆹ")
+(merge-rule "튓" "á„ᅱᆺ")
+(merge-rule "튔" "á„ᅱᆻ")
+(merge-rule "튕" "á„ᅱᆼ")
+(merge-rule "튖" "á„ᅱᆽ")
+(merge-rule "튗" "á„ᅱᆾ")
+(merge-rule "튘" "á„ᅱᆿ")
+(merge-rule "튙" "á„ᅱᇀ")
+(merge-rule "튚" "á„á…±á‡")
+(merge-rule "튛" "á„ᅱᇂ")
+(merge-rule "튜" "á„á…²~b")
+(merge-rule "íŠ" "á„ᅲᆨ")
+(merge-rule "튞" "á„ᅲᆩ")
+(merge-rule "튟" "á„ᅲᆪ")
+(merge-rule "튠" "á„ᅲᆫ")
+(merge-rule "튡" "á„ᅲᆬ")
+(merge-rule "튢" "á„ᅲᆭ")
+(merge-rule "튣" "á„ᅲᆮ")
+(merge-rule "튤" "á„ᅲᆯ")
+(merge-rule "튥" "á„ᅲᆰ")
+(merge-rule "튦" "á„ᅲᆱ")
+(merge-rule "튧" "á„ᅲᆲ")
+(merge-rule "튨" "á„ᅲᆳ")
+(merge-rule "튩" "á„ᅲᆴ")
+(merge-rule "튪" "á„ᅲᆵ")
+(merge-rule "튫" "á„ᅲᆶ")
+(merge-rule "튬" "á„ᅲᆷ")
+(merge-rule "튭" "á„ᅲᆸ")
+(merge-rule "튮" "á„ᅲᆹ")
+(merge-rule "튯" "á„ᅲᆺ")
+(merge-rule "튰" "á„ᅲᆻ")
+(merge-rule "튱" "á„ᅲᆼ")
+(merge-rule "튲" "á„ᅲᆽ")
+(merge-rule "튳" "á„ᅲᆾ")
+(merge-rule "튴" "á„ᅲᆿ")
+(merge-rule "튵" "á„ᅲᇀ")
+(merge-rule "튶" "á„á…²á‡")
+(merge-rule "튷" "á„ᅲᇂ")
+(merge-rule "트" "á„á…³~b")
+(merge-rule "특" "á„ᅳᆨ")
+(merge-rule "튺" "á„ᅳᆩ")
+(merge-rule "튻" "á„ᅳᆪ")
+(merge-rule "튼" "á„ᅳᆫ")
+(merge-rule "튽" "á„ᅳᆬ")
+(merge-rule "튾" "á„ᅳᆭ")
+(merge-rule "튿" "á„ᅳᆮ")
+(merge-rule "í‹€" "á„ᅳᆯ")
+(merge-rule "í‹" "á„ᅳᆰ")
+(merge-rule "í‹‚" "á„ᅳᆱ")
+(merge-rule "틃" "á„ᅳᆲ")
+(merge-rule "í‹„" "á„ᅳᆳ")
+(merge-rule "í‹…" "á„ᅳᆴ")
+(merge-rule "틆" "á„ᅳᆵ")
+(merge-rule "틇" "á„ᅳᆶ")
+(merge-rule "틈" "á„ᅳᆷ")
+(merge-rule "틉" "á„ᅳᆸ")
+(merge-rule "í‹Š" "á„ᅳᆹ")
+(merge-rule "í‹‹" "á„ᅳᆺ")
+(merge-rule "í‹Œ" "á„ᅳᆻ")
+(merge-rule "í‹" "á„ᅳᆼ")
+(merge-rule "í‹Ž" "á„ᅳᆽ")
+(merge-rule "í‹" "á„ᅳᆾ")
+(merge-rule "í‹" "á„ᅳᆿ")
+(merge-rule "í‹‘" "á„ᅳᇀ")
+(merge-rule "í‹’" "á„á…³á‡")
+(merge-rule "í‹“" "á„ᅳᇂ")
+(merge-rule "í‹”" "á„á…´~b")
+(merge-rule "í‹•" "á„ᅴᆨ")
+(merge-rule "í‹–" "á„ᅴᆩ")
+(merge-rule "í‹—" "á„ᅴᆪ")
+(merge-rule "틘" "á„ᅴᆫ")
+(merge-rule "í‹™" "á„ᅴᆬ")
+(merge-rule "í‹š" "á„ᅴᆭ")
+(merge-rule "í‹›" "á„ᅴᆮ")
+(merge-rule "í‹œ" "á„ᅴᆯ")
+(merge-rule "í‹" "á„ᅴᆰ")
+(merge-rule "í‹ž" "á„ᅴᆱ")
+(merge-rule "í‹Ÿ" "á„ᅴᆲ")
+(merge-rule "í‹ " "á„ᅴᆳ")
+(merge-rule "í‹¡" "á„ᅴᆴ")
+(merge-rule "í‹¢" "á„ᅴᆵ")
+(merge-rule "í‹£" "á„ᅴᆶ")
+(merge-rule "틤" "á„ᅴᆷ")
+(merge-rule "í‹¥" "á„ᅴᆸ")
+(merge-rule "틦" "á„ᅴᆹ")
+(merge-rule "틧" "á„ᅴᆺ")
+(merge-rule "틨" "á„ᅴᆻ")
+(merge-rule "í‹©" "á„ᅴᆼ")
+(merge-rule "틪" "á„ᅴᆽ")
+(merge-rule "í‹«" "á„ᅴᆾ")
+(merge-rule "틬" "á„ᅴᆿ")
+(merge-rule "í‹­" "á„ᅴᇀ")
+(merge-rule "í‹®" "á„á…´á‡")
+(merge-rule "틯" "á„ᅴᇂ")
+(merge-rule "í‹°" "á„á…µ~b")
+(merge-rule "틱" "á„ᅵᆨ")
+(merge-rule "틲" "á„ᅵᆩ")
+(merge-rule "틳" "á„ᅵᆪ")
+(merge-rule "í‹´" "á„ᅵᆫ")
+(merge-rule "틵" "á„ᅵᆬ")
+(merge-rule "틶" "á„ᅵᆭ")
+(merge-rule "í‹·" "á„ᅵᆮ")
+(merge-rule "틸" "á„ᅵᆯ")
+(merge-rule "틹" "á„ᅵᆰ")
+(merge-rule "틺" "á„ᅵᆱ")
+(merge-rule "í‹»" "á„ᅵᆲ")
+(merge-rule "틼" "á„ᅵᆳ")
+(merge-rule "틽" "á„ᅵᆴ")
+(merge-rule "틾" "á„ᅵᆵ")
+(merge-rule "í‹¿" "á„ᅵᆶ")
+(merge-rule "팀" "á„ᅵᆷ")
+(merge-rule "íŒ" "á„ᅵᆸ")
+(merge-rule "팂" "á„ᅵᆹ")
+(merge-rule "팃" "á„ᅵᆺ")
+(merge-rule "팄" "á„ᅵᆻ")
+(merge-rule "팅" "á„ᅵᆼ")
+(merge-rule "팆" "á„ᅵᆽ")
+(merge-rule "팇" "á„ᅵᆾ")
+(merge-rule "팈" "á„ᅵᆿ")
+(merge-rule "팉" "á„ᅵᇀ")
+(merge-rule "팊" "á„á…µá‡")
+(merge-rule "팋" "á„ᅵᇂ")
+(merge-rule "파" "파~b")
+(merge-rule "íŒ" "팍")
+(merge-rule "팎" "팎")
+(merge-rule "íŒ" "팏")
+(merge-rule "íŒ" "판")
+(merge-rule "팑" "팑")
+(merge-rule "팒" "팒")
+(merge-rule "팓" "팓")
+(merge-rule "팔" "팔")
+(merge-rule "팕" "팕")
+(merge-rule "팖" "팖")
+(merge-rule "팗" "팗")
+(merge-rule "팘" "팘")
+(merge-rule "팙" "팙")
+(merge-rule "팚" "팚")
+(merge-rule "팛" "팛")
+(merge-rule "팜" "팜")
+(merge-rule "íŒ" "팝")
+(merge-rule "팞" "팞")
+(merge-rule "팟" "팟")
+(merge-rule "팠" "팠")
+(merge-rule "팡" "팡")
+(merge-rule "팢" "팢")
+(merge-rule "팣" "팣")
+(merge-rule "팤" "팤")
+(merge-rule "팥" "팥")
+(merge-rule "팦" "á„‘á…¡á‡")
+(merge-rule "팧" "팧")
+(merge-rule "패" "패~b")
+(merge-rule "팩" "팩")
+(merge-rule "팪" "팪")
+(merge-rule "팫" "팫")
+(merge-rule "팬" "팬")
+(merge-rule "팭" "팭")
+(merge-rule "팮" "팮")
+(merge-rule "팯" "팯")
+(merge-rule "팰" "팰")
+(merge-rule "팱" "팱")
+(merge-rule "팲" "팲")
+(merge-rule "팳" "팳")
+(merge-rule "팴" "팴")
+(merge-rule "팵" "팵")
+(merge-rule "팶" "팶")
+(merge-rule "팷" "팷")
+(merge-rule "팸" "팸")
+(merge-rule "팹" "팹")
+(merge-rule "팺" "팺")
+(merge-rule "팻" "팻")
+(merge-rule "팼" "팼")
+(merge-rule "팽" "팽")
+(merge-rule "팾" "팾")
+(merge-rule "팿" "팿")
+(merge-rule "í€" "퍀")
+(merge-rule "í" "퍁")
+(merge-rule "í‚" "á„‘á…¢á‡")
+(merge-rule "íƒ" "퍃")
+(merge-rule "í„" "á„‘á…£~b")
+(merge-rule "í…" "퍅")
+(merge-rule "í†" "퍆")
+(merge-rule "í‡" "퍇")
+(merge-rule "íˆ" "퍈")
+(merge-rule "í‰" "퍉")
+(merge-rule "íŠ" "퍊")
+(merge-rule "í‹" "퍋")
+(merge-rule "íŒ" "퍌")
+(merge-rule "í" "퍍")
+(merge-rule "íŽ" "퍎")
+(merge-rule "í" "퍏")
+(merge-rule "í" "퍐")
+(merge-rule "í‘" "퍑")
+(merge-rule "í’" "퍒")
+(merge-rule "í“" "퍓")
+(merge-rule "í”" "퍔")
+(merge-rule "í•" "퍕")
+(merge-rule "í–" "퍖")
+(merge-rule "í—" "퍗")
+(merge-rule "í˜" "퍘")
+(merge-rule "í™" "퍙")
+(merge-rule "íš" "퍚")
+(merge-rule "í›" "퍛")
+(merge-rule "íœ" "퍜")
+(merge-rule "í" "퍝")
+(merge-rule "íž" "á„‘á…£á‡")
+(merge-rule "íŸ" "퍟")
+(merge-rule "í " "á„‘á…¤~b")
+(merge-rule "í¡" "퍡")
+(merge-rule "í¢" "퍢")
+(merge-rule "í£" "퍣")
+(merge-rule "í¤" "퍤")
+(merge-rule "í¥" "퍥")
+(merge-rule "í¦" "퍦")
+(merge-rule "í§" "퍧")
+(merge-rule "í¨" "퍨")
+(merge-rule "í©" "퍩")
+(merge-rule "íª" "퍪")
+(merge-rule "í«" "퍫")
+(merge-rule "í¬" "퍬")
+(merge-rule "í­" "퍭")
+(merge-rule "í®" "퍮")
+(merge-rule "í¯" "퍯")
+(merge-rule "í°" "퍰")
+(merge-rule "í±" "퍱")
+(merge-rule "í²" "퍲")
+(merge-rule "í³" "퍳")
+(merge-rule "í´" "퍴")
+(merge-rule "íµ" "퍵")
+(merge-rule "í¶" "퍶")
+(merge-rule "í·" "퍷")
+(merge-rule "í¸" "퍸")
+(merge-rule "í¹" "퍹")
+(merge-rule "íº" "á„‘á…¤á‡")
+(merge-rule "í»" "퍻")
+(merge-rule "í¼" "á„‘á…¥~b")
+(merge-rule "í½" "퍽")
+(merge-rule "í¾" "퍾")
+(merge-rule "í¿" "퍿")
+(merge-rule "펀" "펀")
+(merge-rule "íŽ" "펁")
+(merge-rule "펂" "펂")
+(merge-rule "펃" "펃")
+(merge-rule "펄" "펄")
+(merge-rule "펅" "펅")
+(merge-rule "펆" "펆")
+(merge-rule "펇" "펇")
+(merge-rule "펈" "펈")
+(merge-rule "펉" "펉")
+(merge-rule "펊" "펊")
+(merge-rule "펋" "펋")
+(merge-rule "펌" "펌")
+(merge-rule "íŽ" "펍")
+(merge-rule "펎" "펎")
+(merge-rule "íŽ" "펏")
+(merge-rule "íŽ" "펐")
+(merge-rule "펑" "펑")
+(merge-rule "펒" "펒")
+(merge-rule "펓" "펓")
+(merge-rule "펔" "펔")
+(merge-rule "펕" "펕")
+(merge-rule "펖" "á„‘á…¥á‡")
+(merge-rule "펗" "펗")
+(merge-rule "페" "페~b")
+(merge-rule "펙" "펙")
+(merge-rule "펚" "펚")
+(merge-rule "펛" "펛")
+(merge-rule "펜" "펜")
+(merge-rule "íŽ" "펝")
+(merge-rule "펞" "펞")
+(merge-rule "펟" "펟")
+(merge-rule "펠" "펠")
+(merge-rule "펡" "펡")
+(merge-rule "펢" "펢")
+(merge-rule "펣" "펣")
+(merge-rule "펤" "펤")
+(merge-rule "펥" "펥")
+(merge-rule "펦" "펦")
+(merge-rule "펧" "펧")
+(merge-rule "펨" "펨")
+(merge-rule "펩" "펩")
+(merge-rule "펪" "펪")
+(merge-rule "펫" "펫")
+(merge-rule "펬" "펬")
+(merge-rule "펭" "펭")
+(merge-rule "펮" "펮")
+(merge-rule "펯" "펯")
+(merge-rule "펰" "펰")
+(merge-rule "펱" "펱")
+(merge-rule "펲" "á„‘á…¦á‡")
+(merge-rule "펳" "펳")
+(merge-rule "펴" "펴~b")
+(merge-rule "펵" "펵")
+(merge-rule "펶" "펶")
+(merge-rule "펷" "펷")
+(merge-rule "편" "편")
+(merge-rule "펹" "펹")
+(merge-rule "펺" "펺")
+(merge-rule "펻" "펻")
+(merge-rule "펼" "펼")
+(merge-rule "펽" "펽")
+(merge-rule "펾" "펾")
+(merge-rule "펿" "펿")
+(merge-rule "í€" "폀")
+(merge-rule "í" "폁")
+(merge-rule "í‚" "폂")
+(merge-rule "íƒ" "폃")
+(merge-rule "í„" "폄")
+(merge-rule "í…" "폅")
+(merge-rule "í†" "폆")
+(merge-rule "í‡" "폇")
+(merge-rule "íˆ" "폈")
+(merge-rule "í‰" "평")
+(merge-rule "íŠ" "폊")
+(merge-rule "í‹" "폋")
+(merge-rule "íŒ" "폌")
+(merge-rule "í" "폍")
+(merge-rule "íŽ" "á„‘á…§á‡")
+(merge-rule "í" "폏")
+(merge-rule "í" "á„‘á…¨~b")
+(merge-rule "í‘" "폑")
+(merge-rule "í’" "폒")
+(merge-rule "í“" "폓")
+(merge-rule "í”" "폔")
+(merge-rule "í•" "폕")
+(merge-rule "í–" "폖")
+(merge-rule "í—" "폗")
+(merge-rule "í˜" "폘")
+(merge-rule "í™" "폙")
+(merge-rule "íš" "폚")
+(merge-rule "í›" "폛")
+(merge-rule "íœ" "폜")
+(merge-rule "í" "폝")
+(merge-rule "íž" "폞")
+(merge-rule "íŸ" "폟")
+(merge-rule "í " "폠")
+(merge-rule "í¡" "폡")
+(merge-rule "í¢" "폢")
+(merge-rule "í£" "폣")
+(merge-rule "í¤" "폤")
+(merge-rule "í¥" "폥")
+(merge-rule "í¦" "폦")
+(merge-rule "í§" "폧")
+(merge-rule "í¨" "폨")
+(merge-rule "í©" "폩")
+(merge-rule "íª" "á„‘á…¨á‡")
+(merge-rule "í«" "폫")
+(merge-rule "í¬" "á„‘á…©~b")
+(merge-rule "í­" "폭")
+(merge-rule "í®" "폮")
+(merge-rule "í¯" "폯")
+(merge-rule "í°" "폰")
+(merge-rule "í±" "폱")
+(merge-rule "í²" "폲")
+(merge-rule "í³" "폳")
+(merge-rule "í´" "폴")
+(merge-rule "íµ" "폵")
+(merge-rule "í¶" "폶")
+(merge-rule "í·" "폷")
+(merge-rule "í¸" "폸")
+(merge-rule "í¹" "폹")
+(merge-rule "íº" "폺")
+(merge-rule "í»" "폻")
+(merge-rule "í¼" "폼")
+(merge-rule "í½" "폽")
+(merge-rule "í¾" "폾")
+(merge-rule "í¿" "폿")
+(merge-rule "í€" "퐀")
+(merge-rule "í" "퐁")
+(merge-rule "í‚" "퐂")
+(merge-rule "íƒ" "퐃")
+(merge-rule "í„" "퐄")
+(merge-rule "í…" "퐅")
+(merge-rule "í†" "á„‘á…©á‡")
+(merge-rule "í‡" "퐇")
+(merge-rule "íˆ" "á„‘á…ª~b")
+(merge-rule "í‰" "퐉")
+(merge-rule "íŠ" "퐊")
+(merge-rule "í‹" "퐋")
+(merge-rule "íŒ" "퐌")
+(merge-rule "í" "퐍")
+(merge-rule "íŽ" "퐎")
+(merge-rule "í" "퐏")
+(merge-rule "í" "퐐")
+(merge-rule "í‘" "퐑")
+(merge-rule "í’" "퐒")
+(merge-rule "í“" "퐓")
+(merge-rule "í”" "퐔")
+(merge-rule "í•" "퐕")
+(merge-rule "í–" "퐖")
+(merge-rule "í—" "퐗")
+(merge-rule "í˜" "퐘")
+(merge-rule "í™" "퐙")
+(merge-rule "íš" "퐚")
+(merge-rule "í›" "퐛")
+(merge-rule "íœ" "퐜")
+(merge-rule "í" "퐝")
+(merge-rule "íž" "퐞")
+(merge-rule "íŸ" "퐟")
+(merge-rule "í " "퐠")
+(merge-rule "í¡" "퐡")
+(merge-rule "í¢" "á„‘á…ªá‡")
+(merge-rule "í£" "퐣")
+(merge-rule "í¤" "á„‘á…«~b")
+(merge-rule "í¥" "퐥")
+(merge-rule "í¦" "퐦")
+(merge-rule "í§" "퐧")
+(merge-rule "í¨" "퐨")
+(merge-rule "í©" "퐩")
+(merge-rule "íª" "퐪")
+(merge-rule "í«" "퐫")
+(merge-rule "í¬" "퐬")
+(merge-rule "í­" "퐭")
+(merge-rule "í®" "퐮")
+(merge-rule "í¯" "퐯")
+(merge-rule "í°" "퐰")
+(merge-rule "í±" "퐱")
+(merge-rule "í²" "퐲")
+(merge-rule "í³" "퐳")
+(merge-rule "í´" "퐴")
+(merge-rule "íµ" "퐵")
+(merge-rule "í¶" "퐶")
+(merge-rule "í·" "퐷")
+(merge-rule "í¸" "퐸")
+(merge-rule "í¹" "퐹")
+(merge-rule "íº" "퐺")
+(merge-rule "í»" "퐻")
+(merge-rule "í¼" "퐼")
+(merge-rule "í½" "퐽")
+(merge-rule "í¾" "á„‘á…«á‡")
+(merge-rule "í¿" "퐿")
+(merge-rule "í‘€" "á„‘á…¬~b")
+(merge-rule "í‘" "푁")
+(merge-rule "푂" "푂")
+(merge-rule "푃" "푃")
+(merge-rule "푄" "푄")
+(merge-rule "푅" "푅")
+(merge-rule "푆" "푆")
+(merge-rule "푇" "푇")
+(merge-rule "푈" "푈")
+(merge-rule "푉" "푉")
+(merge-rule "푊" "푊")
+(merge-rule "푋" "푋")
+(merge-rule "푌" "푌")
+(merge-rule "í‘" "푍")
+(merge-rule "푎" "푎")
+(merge-rule "í‘" "푏")
+(merge-rule "í‘" "푐")
+(merge-rule "푑" "푑")
+(merge-rule "푒" "푒")
+(merge-rule "푓" "푓")
+(merge-rule "푔" "푔")
+(merge-rule "푕" "푕")
+(merge-rule "푖" "푖")
+(merge-rule "푗" "푗")
+(merge-rule "푘" "푘")
+(merge-rule "푙" "푙")
+(merge-rule "í‘š" "á„‘á…¬á‡")
+(merge-rule "푛" "푛")
+(merge-rule "표" "표~b")
+(merge-rule "í‘" "푝")
+(merge-rule "푞" "푞")
+(merge-rule "푟" "푟")
+(merge-rule "푠" "푠")
+(merge-rule "푡" "푡")
+(merge-rule "푢" "푢")
+(merge-rule "푣" "푣")
+(merge-rule "푤" "푤")
+(merge-rule "푥" "푥")
+(merge-rule "푦" "푦")
+(merge-rule "푧" "푧")
+(merge-rule "푨" "푨")
+(merge-rule "푩" "푩")
+(merge-rule "푪" "푪")
+(merge-rule "푫" "푫")
+(merge-rule "푬" "푬")
+(merge-rule "푭" "푭")
+(merge-rule "푮" "푮")
+(merge-rule "푯" "푯")
+(merge-rule "푰" "푰")
+(merge-rule "푱" "푱")
+(merge-rule "푲" "푲")
+(merge-rule "푳" "푳")
+(merge-rule "푴" "푴")
+(merge-rule "푵" "푵")
+(merge-rule "푶" "á„‘á…­á‡")
+(merge-rule "푷" "푷")
+(merge-rule "푸" "푸~b")
+(merge-rule "푹" "푹")
+(merge-rule "푺" "푺")
+(merge-rule "푻" "푻")
+(merge-rule "푼" "푼")
+(merge-rule "푽" "푽")
+(merge-rule "푾" "푾")
+(merge-rule "푿" "푿")
+(merge-rule "풀" "풀")
+(merge-rule "í’" "풁")
+(merge-rule "풂" "풂")
+(merge-rule "풃" "풃")
+(merge-rule "풄" "풄")
+(merge-rule "풅" "풅")
+(merge-rule "풆" "풆")
+(merge-rule "풇" "풇")
+(merge-rule "품" "품")
+(merge-rule "풉" "풉")
+(merge-rule "풊" "풊")
+(merge-rule "풋" "풋")
+(merge-rule "풌" "풌")
+(merge-rule "í’" "풍")
+(merge-rule "풎" "풎")
+(merge-rule "í’" "풏")
+(merge-rule "í’" "풐")
+(merge-rule "풑" "풑")
+(merge-rule "í’’" "á„‘á…®á‡")
+(merge-rule "풓" "풓")
+(merge-rule "í’”" "á„‘á…¯~b")
+(merge-rule "풕" "풕")
+(merge-rule "풖" "풖")
+(merge-rule "풗" "풗")
+(merge-rule "풘" "풘")
+(merge-rule "풙" "풙")
+(merge-rule "풚" "풚")
+(merge-rule "풛" "풛")
+(merge-rule "풜" "풜")
+(merge-rule "í’" "풝")
+(merge-rule "풞" "풞")
+(merge-rule "풟" "풟")
+(merge-rule "풠" "풠")
+(merge-rule "풡" "풡")
+(merge-rule "풢" "풢")
+(merge-rule "풣" "풣")
+(merge-rule "풤" "풤")
+(merge-rule "풥" "풥")
+(merge-rule "풦" "풦")
+(merge-rule "풧" "풧")
+(merge-rule "풨" "풨")
+(merge-rule "풩" "풩")
+(merge-rule "풪" "풪")
+(merge-rule "풫" "풫")
+(merge-rule "풬" "풬")
+(merge-rule "풭" "풭")
+(merge-rule "í’®" "á„‘á…¯á‡")
+(merge-rule "풯" "풯")
+(merge-rule "í’°" "á„‘á…°~b")
+(merge-rule "풱" "풱")
+(merge-rule "풲" "풲")
+(merge-rule "풳" "풳")
+(merge-rule "풴" "풴")
+(merge-rule "풵" "풵")
+(merge-rule "풶" "풶")
+(merge-rule "풷" "풷")
+(merge-rule "풸" "풸")
+(merge-rule "풹" "풹")
+(merge-rule "풺" "풺")
+(merge-rule "풻" "풻")
+(merge-rule "풼" "풼")
+(merge-rule "풽" "풽")
+(merge-rule "풾" "풾")
+(merge-rule "풿" "풿")
+(merge-rule "퓀" "퓀")
+(merge-rule "í“" "퓁")
+(merge-rule "퓂" "퓂")
+(merge-rule "퓃" "퓃")
+(merge-rule "퓄" "퓄")
+(merge-rule "퓅" "퓅")
+(merge-rule "퓆" "퓆")
+(merge-rule "퓇" "퓇")
+(merge-rule "퓈" "퓈")
+(merge-rule "퓉" "퓉")
+(merge-rule "í“Š" "á„‘á…°á‡")
+(merge-rule "퓋" "퓋")
+(merge-rule "퓌" "퓌~b")
+(merge-rule "í“" "퓍")
+(merge-rule "퓎" "퓎")
+(merge-rule "í“" "퓏")
+(merge-rule "í“" "퓐")
+(merge-rule "퓑" "퓑")
+(merge-rule "퓒" "퓒")
+(merge-rule "퓓" "퓓")
+(merge-rule "퓔" "퓔")
+(merge-rule "퓕" "퓕")
+(merge-rule "퓖" "퓖")
+(merge-rule "퓗" "퓗")
+(merge-rule "퓘" "퓘")
+(merge-rule "퓙" "퓙")
+(merge-rule "퓚" "퓚")
+(merge-rule "퓛" "퓛")
+(merge-rule "퓜" "퓜")
+(merge-rule "í“" "퓝")
+(merge-rule "퓞" "퓞")
+(merge-rule "퓟" "퓟")
+(merge-rule "퓠" "퓠")
+(merge-rule "퓡" "퓡")
+(merge-rule "퓢" "퓢")
+(merge-rule "퓣" "퓣")
+(merge-rule "퓤" "퓤")
+(merge-rule "퓥" "퓥")
+(merge-rule "퓦" "á„‘á…±á‡")
+(merge-rule "퓧" "퓧")
+(merge-rule "퓨" "퓨~b")
+(merge-rule "퓩" "퓩")
+(merge-rule "퓪" "퓪")
+(merge-rule "퓫" "퓫")
+(merge-rule "퓬" "퓬")
+(merge-rule "퓭" "퓭")
+(merge-rule "퓮" "퓮")
+(merge-rule "퓯" "퓯")
+(merge-rule "퓰" "퓰")
+(merge-rule "퓱" "퓱")
+(merge-rule "퓲" "퓲")
+(merge-rule "퓳" "퓳")
+(merge-rule "퓴" "퓴")
+(merge-rule "퓵" "퓵")
+(merge-rule "퓶" "퓶")
+(merge-rule "퓷" "퓷")
+(merge-rule "퓸" "퓸")
+(merge-rule "퓹" "퓹")
+(merge-rule "퓺" "퓺")
+(merge-rule "퓻" "퓻")
+(merge-rule "퓼" "퓼")
+(merge-rule "퓽" "퓽")
+(merge-rule "퓾" "퓾")
+(merge-rule "퓿" "퓿")
+(merge-rule "픀" "픀")
+(merge-rule "í”" "픁")
+(merge-rule "픂" "á„‘á…²á‡")
+(merge-rule "픃" "픃")
+(merge-rule "프" "프~b")
+(merge-rule "픅" "픅")
+(merge-rule "픆" "픆")
+(merge-rule "픇" "픇")
+(merge-rule "픈" "픈")
+(merge-rule "픉" "픉")
+(merge-rule "픊" "픊")
+(merge-rule "픋" "픋")
+(merge-rule "플" "플")
+(merge-rule "í”" "픍")
+(merge-rule "픎" "픎")
+(merge-rule "í”" "픏")
+(merge-rule "í”" "픐")
+(merge-rule "픑" "픑")
+(merge-rule "픒" "픒")
+(merge-rule "픓" "픓")
+(merge-rule "픔" "픔")
+(merge-rule "픕" "픕")
+(merge-rule "픖" "픖")
+(merge-rule "픗" "픗")
+(merge-rule "픘" "픘")
+(merge-rule "픙" "픙")
+(merge-rule "픚" "픚")
+(merge-rule "픛" "픛")
+(merge-rule "픜" "픜")
+(merge-rule "í”" "픝")
+(merge-rule "픞" "á„‘á…³á‡")
+(merge-rule "픟" "픟")
+(merge-rule "í” " "á„‘á…´~b")
+(merge-rule "픡" "픡")
+(merge-rule "픢" "픢")
+(merge-rule "픣" "픣")
+(merge-rule "픤" "픤")
+(merge-rule "픥" "픥")
+(merge-rule "픦" "픦")
+(merge-rule "픧" "픧")
+(merge-rule "픨" "픨")
+(merge-rule "픩" "픩")
+(merge-rule "픪" "픪")
+(merge-rule "픫" "픫")
+(merge-rule "픬" "픬")
+(merge-rule "픭" "픭")
+(merge-rule "픮" "픮")
+(merge-rule "픯" "픯")
+(merge-rule "픰" "픰")
+(merge-rule "픱" "픱")
+(merge-rule "픲" "픲")
+(merge-rule "픳" "픳")
+(merge-rule "픴" "픴")
+(merge-rule "픵" "픵")
+(merge-rule "픶" "픶")
+(merge-rule "픷" "픷")
+(merge-rule "픸" "픸")
+(merge-rule "픹" "픹")
+(merge-rule "픺" "á„‘á…´á‡")
+(merge-rule "픻" "픻")
+(merge-rule "피" "피~b")
+(merge-rule "픽" "픽")
+(merge-rule "픾" "픾")
+(merge-rule "픿" "픿")
+(merge-rule "핀" "핀")
+(merge-rule "í•" "핁")
+(merge-rule "핂" "핂")
+(merge-rule "핃" "핃")
+(merge-rule "필" "필")
+(merge-rule "핅" "핅")
+(merge-rule "핆" "핆")
+(merge-rule "핇" "핇")
+(merge-rule "핈" "핈")
+(merge-rule "핉" "핉")
+(merge-rule "핊" "핊")
+(merge-rule "핋" "핋")
+(merge-rule "핌" "핌")
+(merge-rule "í•" "핍")
+(merge-rule "핎" "핎")
+(merge-rule "í•" "핏")
+(merge-rule "í•" "핐")
+(merge-rule "핑" "핑")
+(merge-rule "핒" "핒")
+(merge-rule "핓" "핓")
+(merge-rule "핔" "핔")
+(merge-rule "핕" "핕")
+(merge-rule "í•–" "á„‘á…µá‡")
+(merge-rule "핗" "핗")
+(merge-rule "하" "하~b")
+(merge-rule "학" "학")
+(merge-rule "핚" "핚")
+(merge-rule "핛" "핛")
+(merge-rule "한" "한")
+(merge-rule "í•" "핝")
+(merge-rule "핞" "핞")
+(merge-rule "핟" "핟")
+(merge-rule "할" "할")
+(merge-rule "핡" "핡")
+(merge-rule "핢" "핢")
+(merge-rule "핣" "핣")
+(merge-rule "핤" "핤")
+(merge-rule "핥" "핥")
+(merge-rule "핦" "핦")
+(merge-rule "핧" "핧")
+(merge-rule "함" "함")
+(merge-rule "합" "합")
+(merge-rule "핪" "핪")
+(merge-rule "핫" "핫")
+(merge-rule "핬" "핬")
+(merge-rule "항" "항")
+(merge-rule "핮" "핮")
+(merge-rule "핯" "핯")
+(merge-rule "핰" "핰")
+(merge-rule "핱" "핱")
+(merge-rule "핲" "á„’á…¡á‡")
+(merge-rule "핳" "핳")
+(merge-rule "í•´" "á„’á…¢~b")
+(merge-rule "핵" "핵")
+(merge-rule "핶" "핶")
+(merge-rule "핷" "핷")
+(merge-rule "핸" "핸")
+(merge-rule "핹" "핹")
+(merge-rule "핺" "핺")
+(merge-rule "핻" "핻")
+(merge-rule "핼" "핼")
+(merge-rule "핽" "핽")
+(merge-rule "핾" "핾")
+(merge-rule "핿" "핿")
+(merge-rule "햀" "햀")
+(merge-rule "í–" "햁")
+(merge-rule "햂" "햂")
+(merge-rule "햃" "햃")
+(merge-rule "햄" "햄")
+(merge-rule "햅" "햅")
+(merge-rule "햆" "햆")
+(merge-rule "햇" "햇")
+(merge-rule "했" "했")
+(merge-rule "행" "행")
+(merge-rule "햊" "햊")
+(merge-rule "햋" "햋")
+(merge-rule "햌" "햌")
+(merge-rule "í–" "햍")
+(merge-rule "í–Ž" "á„’á…¢á‡")
+(merge-rule "í–" "햏")
+(merge-rule "í–" "á„’á…£~b")
+(merge-rule "햑" "햑")
+(merge-rule "햒" "햒")
+(merge-rule "햓" "햓")
+(merge-rule "햔" "햔")
+(merge-rule "햕" "햕")
+(merge-rule "햖" "햖")
+(merge-rule "햗" "햗")
+(merge-rule "햘" "햘")
+(merge-rule "햙" "햙")
+(merge-rule "햚" "햚")
+(merge-rule "햛" "햛")
+(merge-rule "햜" "햜")
+(merge-rule "í–" "햝")
+(merge-rule "햞" "햞")
+(merge-rule "햟" "햟")
+(merge-rule "햠" "햠")
+(merge-rule "햡" "햡")
+(merge-rule "햢" "햢")
+(merge-rule "햣" "햣")
+(merge-rule "햤" "햤")
+(merge-rule "향" "향")
+(merge-rule "햦" "햦")
+(merge-rule "햧" "햧")
+(merge-rule "햨" "햨")
+(merge-rule "햩" "햩")
+(merge-rule "í–ª" "á„’á…£á‡")
+(merge-rule "햫" "햫")
+(merge-rule "í–¬" "á„’á…¤~b")
+(merge-rule "햭" "햭")
+(merge-rule "햮" "햮")
+(merge-rule "햯" "햯")
+(merge-rule "햰" "햰")
+(merge-rule "햱" "햱")
+(merge-rule "햲" "햲")
+(merge-rule "햳" "햳")
+(merge-rule "햴" "햴")
+(merge-rule "햵" "햵")
+(merge-rule "햶" "햶")
+(merge-rule "햷" "햷")
+(merge-rule "햸" "햸")
+(merge-rule "햹" "햹")
+(merge-rule "햺" "햺")
+(merge-rule "햻" "햻")
+(merge-rule "햼" "햼")
+(merge-rule "햽" "햽")
+(merge-rule "햾" "햾")
+(merge-rule "햿" "햿")
+(merge-rule "헀" "헀")
+(merge-rule "í—" "헁")
+(merge-rule "헂" "헂")
+(merge-rule "헃" "헃")
+(merge-rule "헄" "헄")
+(merge-rule "헅" "헅")
+(merge-rule "í—†" "á„’á…¤á‡")
+(merge-rule "헇" "헇")
+(merge-rule "í—ˆ" "á„’á…¥~b")
+(merge-rule "헉" "헉")
+(merge-rule "헊" "헊")
+(merge-rule "헋" "헋")
+(merge-rule "헌" "헌")
+(merge-rule "í—" "헍")
+(merge-rule "헎" "헎")
+(merge-rule "í—" "헏")
+(merge-rule "í—" "헐")
+(merge-rule "헑" "헑")
+(merge-rule "헒" "헒")
+(merge-rule "헓" "헓")
+(merge-rule "헔" "헔")
+(merge-rule "헕" "헕")
+(merge-rule "헖" "헖")
+(merge-rule "헗" "헗")
+(merge-rule "험" "험")
+(merge-rule "헙" "헙")
+(merge-rule "헚" "헚")
+(merge-rule "헛" "헛")
+(merge-rule "헜" "헜")
+(merge-rule "í—" "헝")
+(merge-rule "헞" "헞")
+(merge-rule "헟" "헟")
+(merge-rule "헠" "헠")
+(merge-rule "헡" "헡")
+(merge-rule "í—¢" "á„’á…¥á‡")
+(merge-rule "헣" "헣")
+(merge-rule "í—¤" "á„’á…¦~b")
+(merge-rule "헥" "헥")
+(merge-rule "헦" "헦")
+(merge-rule "헧" "헧")
+(merge-rule "헨" "헨")
+(merge-rule "헩" "헩")
+(merge-rule "헪" "헪")
+(merge-rule "헫" "헫")
+(merge-rule "헬" "헬")
+(merge-rule "헭" "헭")
+(merge-rule "헮" "헮")
+(merge-rule "헯" "헯")
+(merge-rule "헰" "헰")
+(merge-rule "헱" "헱")
+(merge-rule "헲" "헲")
+(merge-rule "헳" "헳")
+(merge-rule "헴" "헴")
+(merge-rule "헵" "헵")
+(merge-rule "헶" "헶")
+(merge-rule "헷" "헷")
+(merge-rule "헸" "헸")
+(merge-rule "헹" "헹")
+(merge-rule "헺" "헺")
+(merge-rule "헻" "헻")
+(merge-rule "헼" "헼")
+(merge-rule "헽" "헽")
+(merge-rule "í—¾" "á„’á…¦á‡")
+(merge-rule "헿" "헿")
+(merge-rule "혀" "혀~b")
+(merge-rule "í˜" "혁")
+(merge-rule "혂" "혂")
+(merge-rule "혃" "혃")
+(merge-rule "현" "현")
+(merge-rule "혅" "혅")
+(merge-rule "혆" "혆")
+(merge-rule "혇" "혇")
+(merge-rule "혈" "혈")
+(merge-rule "혉" "혉")
+(merge-rule "혊" "혊")
+(merge-rule "혋" "혋")
+(merge-rule "혌" "혌")
+(merge-rule "í˜" "혍")
+(merge-rule "혎" "혎")
+(merge-rule "í˜" "혏")
+(merge-rule "í˜" "혐")
+(merge-rule "협" "협")
+(merge-rule "혒" "혒")
+(merge-rule "혓" "혓")
+(merge-rule "혔" "혔")
+(merge-rule "형" "형")
+(merge-rule "혖" "혖")
+(merge-rule "혗" "혗")
+(merge-rule "혘" "혘")
+(merge-rule "혙" "혙")
+(merge-rule "혚" "á„’á…§á‡")
+(merge-rule "혛" "혛")
+(merge-rule "혜" "혜~b")
+(merge-rule "í˜" "혝")
+(merge-rule "혞" "혞")
+(merge-rule "혟" "혟")
+(merge-rule "혠" "혠")
+(merge-rule "혡" "혡")
+(merge-rule "혢" "혢")
+(merge-rule "혣" "혣")
+(merge-rule "혤" "혤")
+(merge-rule "혥" "혥")
+(merge-rule "혦" "혦")
+(merge-rule "혧" "혧")
+(merge-rule "혨" "혨")
+(merge-rule "혩" "혩")
+(merge-rule "혪" "혪")
+(merge-rule "혫" "혫")
+(merge-rule "혬" "혬")
+(merge-rule "혭" "혭")
+(merge-rule "혮" "혮")
+(merge-rule "혯" "혯")
+(merge-rule "혰" "혰")
+(merge-rule "혱" "혱")
+(merge-rule "혲" "혲")
+(merge-rule "혳" "혳")
+(merge-rule "혴" "혴")
+(merge-rule "혵" "혵")
+(merge-rule "혶" "á„’á…¨á‡")
+(merge-rule "혷" "혷")
+(merge-rule "호" "호~b")
+(merge-rule "혹" "혹")
+(merge-rule "혺" "혺")
+(merge-rule "혻" "혻")
+(merge-rule "혼" "혼")
+(merge-rule "혽" "혽")
+(merge-rule "혾" "혾")
+(merge-rule "혿" "혿")
+(merge-rule "홀" "홀")
+(merge-rule "í™" "홁")
+(merge-rule "홂" "홂")
+(merge-rule "홃" "홃")
+(merge-rule "홄" "홄")
+(merge-rule "홅" "홅")
+(merge-rule "홆" "홆")
+(merge-rule "홇" "홇")
+(merge-rule "홈" "홈")
+(merge-rule "홉" "홉")
+(merge-rule "홊" "홊")
+(merge-rule "홋" "홋")
+(merge-rule "홌" "홌")
+(merge-rule "í™" "홍")
+(merge-rule "홎" "홎")
+(merge-rule "í™" "홏")
+(merge-rule "í™" "홐")
+(merge-rule "홑" "홑")
+(merge-rule "í™’" "á„’á…©á‡")
+(merge-rule "홓" "홓")
+(merge-rule "í™”" "á„’á…ª~b")
+(merge-rule "확" "확")
+(merge-rule "홖" "홖")
+(merge-rule "홗" "홗")
+(merge-rule "환" "환")
+(merge-rule "홙" "홙")
+(merge-rule "홚" "홚")
+(merge-rule "홛" "홛")
+(merge-rule "활" "활")
+(merge-rule "í™" "홝")
+(merge-rule "홞" "홞")
+(merge-rule "홟" "홟")
+(merge-rule "홠" "홠")
+(merge-rule "홡" "홡")
+(merge-rule "홢" "홢")
+(merge-rule "홣" "홣")
+(merge-rule "홤" "홤")
+(merge-rule "홥" "홥")
+(merge-rule "홦" "홦")
+(merge-rule "홧" "홧")
+(merge-rule "홨" "홨")
+(merge-rule "황" "황")
+(merge-rule "홪" "홪")
+(merge-rule "홫" "홫")
+(merge-rule "홬" "홬")
+(merge-rule "홭" "홭")
+(merge-rule "í™®" "á„’á…ªá‡")
+(merge-rule "홯" "홯")
+(merge-rule "í™°" "á„’á…«~b")
+(merge-rule "홱" "홱")
+(merge-rule "홲" "홲")
+(merge-rule "홳" "홳")
+(merge-rule "홴" "홴")
+(merge-rule "홵" "홵")
+(merge-rule "홶" "홶")
+(merge-rule "홷" "홷")
+(merge-rule "홸" "홸")
+(merge-rule "홹" "홹")
+(merge-rule "홺" "홺")
+(merge-rule "홻" "홻")
+(merge-rule "홼" "홼")
+(merge-rule "홽" "홽")
+(merge-rule "홾" "홾")
+(merge-rule "홿" "홿")
+(merge-rule "횀" "횀")
+(merge-rule "íš" "횁")
+(merge-rule "횂" "횂")
+(merge-rule "횃" "횃")
+(merge-rule "횄" "횄")
+(merge-rule "횅" "횅")
+(merge-rule "횆" "횆")
+(merge-rule "횇" "횇")
+(merge-rule "횈" "횈")
+(merge-rule "횉" "횉")
+(merge-rule "횊" "á„’á…«á‡")
+(merge-rule "횋" "횋")
+(merge-rule "회" "회~b")
+(merge-rule "íš" "획")
+(merge-rule "횎" "횎")
+(merge-rule "íš" "횏")
+(merge-rule "íš" "횐")
+(merge-rule "횑" "횑")
+(merge-rule "횒" "횒")
+(merge-rule "횓" "횓")
+(merge-rule "횔" "횔")
+(merge-rule "횕" "횕")
+(merge-rule "횖" "횖")
+(merge-rule "횗" "횗")
+(merge-rule "횘" "횘")
+(merge-rule "횙" "횙")
+(merge-rule "횚" "횚")
+(merge-rule "횛" "횛")
+(merge-rule "횜" "횜")
+(merge-rule "íš" "횝")
+(merge-rule "횞" "횞")
+(merge-rule "횟" "횟")
+(merge-rule "횠" "횠")
+(merge-rule "횡" "횡")
+(merge-rule "횢" "횢")
+(merge-rule "횣" "횣")
+(merge-rule "횤" "횤")
+(merge-rule "횥" "횥")
+(merge-rule "횦" "á„’á…¬á‡")
+(merge-rule "횧" "횧")
+(merge-rule "효" "효~b")
+(merge-rule "횩" "횩")
+(merge-rule "횪" "횪")
+(merge-rule "횫" "횫")
+(merge-rule "횬" "횬")
+(merge-rule "횭" "횭")
+(merge-rule "횮" "횮")
+(merge-rule "횯" "횯")
+(merge-rule "횰" "횰")
+(merge-rule "횱" "횱")
+(merge-rule "횲" "횲")
+(merge-rule "횳" "횳")
+(merge-rule "횴" "횴")
+(merge-rule "횵" "횵")
+(merge-rule "횶" "횶")
+(merge-rule "횷" "횷")
+(merge-rule "횸" "횸")
+(merge-rule "횹" "횹")
+(merge-rule "횺" "횺")
+(merge-rule "횻" "횻")
+(merge-rule "횼" "횼")
+(merge-rule "횽" "횽")
+(merge-rule "횾" "횾")
+(merge-rule "횿" "횿")
+(merge-rule "훀" "훀")
+(merge-rule "í›" "훁")
+(merge-rule "훂" "á„’á…­á‡")
+(merge-rule "훃" "훃")
+(merge-rule "후" "후~b")
+(merge-rule "훅" "훅")
+(merge-rule "훆" "훆")
+(merge-rule "훇" "훇")
+(merge-rule "훈" "훈")
+(merge-rule "훉" "훉")
+(merge-rule "훊" "훊")
+(merge-rule "훋" "훋")
+(merge-rule "훌" "훌")
+(merge-rule "í›" "훍")
+(merge-rule "훎" "훎")
+(merge-rule "í›" "훏")
+(merge-rule "í›" "훐")
+(merge-rule "훑" "훑")
+(merge-rule "훒" "훒")
+(merge-rule "훓" "훓")
+(merge-rule "훔" "훔")
+(merge-rule "훕" "훕")
+(merge-rule "훖" "훖")
+(merge-rule "훗" "훗")
+(merge-rule "훘" "훘")
+(merge-rule "훙" "훙")
+(merge-rule "훚" "훚")
+(merge-rule "훛" "훛")
+(merge-rule "훜" "훜")
+(merge-rule "í›" "훝")
+(merge-rule "훞" "á„’á…®á‡")
+(merge-rule "훟" "훟")
+(merge-rule "í› " "á„’á…¯~b")
+(merge-rule "훡" "훡")
+(merge-rule "훢" "훢")
+(merge-rule "훣" "훣")
+(merge-rule "훤" "훤")
+(merge-rule "훥" "훥")
+(merge-rule "훦" "훦")
+(merge-rule "훧" "훧")
+(merge-rule "훨" "훨")
+(merge-rule "훩" "훩")
+(merge-rule "훪" "훪")
+(merge-rule "훫" "훫")
+(merge-rule "훬" "훬")
+(merge-rule "훭" "훭")
+(merge-rule "훮" "훮")
+(merge-rule "훯" "훯")
+(merge-rule "훰" "훰")
+(merge-rule "훱" "훱")
+(merge-rule "훲" "훲")
+(merge-rule "훳" "훳")
+(merge-rule "훴" "훴")
+(merge-rule "훵" "훵")
+(merge-rule "훶" "훶")
+(merge-rule "훷" "훷")
+(merge-rule "훸" "훸")
+(merge-rule "훹" "훹")
+(merge-rule "훺" "á„’á…¯á‡")
+(merge-rule "훻" "훻")
+(merge-rule "훼" "훼~b")
+(merge-rule "훽" "훽")
+(merge-rule "훾" "훾")
+(merge-rule "훿" "훿")
+(merge-rule "휀" "휀")
+(merge-rule "íœ" "휁")
+(merge-rule "휂" "휂")
+(merge-rule "휃" "휃")
+(merge-rule "휄" "휄")
+(merge-rule "휅" "휅")
+(merge-rule "휆" "휆")
+(merge-rule "휇" "휇")
+(merge-rule "휈" "휈")
+(merge-rule "휉" "휉")
+(merge-rule "휊" "휊")
+(merge-rule "휋" "휋")
+(merge-rule "휌" "휌")
+(merge-rule "íœ" "휍")
+(merge-rule "휎" "휎")
+(merge-rule "íœ" "휏")
+(merge-rule "íœ" "휐")
+(merge-rule "휑" "휑")
+(merge-rule "휒" "휒")
+(merge-rule "휓" "휓")
+(merge-rule "휔" "휔")
+(merge-rule "휕" "휕")
+(merge-rule "휖" "á„’á…°á‡")
+(merge-rule "휗" "휗")
+(merge-rule "휘" "휘~b")
+(merge-rule "휙" "휙")
+(merge-rule "휚" "휚")
+(merge-rule "휛" "휛")
+(merge-rule "휜" "휜")
+(merge-rule "íœ" "휝")
+(merge-rule "휞" "휞")
+(merge-rule "휟" "휟")
+(merge-rule "휠" "휠")
+(merge-rule "휡" "휡")
+(merge-rule "휢" "휢")
+(merge-rule "휣" "휣")
+(merge-rule "휤" "휤")
+(merge-rule "휥" "휥")
+(merge-rule "휦" "휦")
+(merge-rule "휧" "휧")
+(merge-rule "휨" "휨")
+(merge-rule "휩" "휩")
+(merge-rule "휪" "휪")
+(merge-rule "휫" "휫")
+(merge-rule "휬" "휬")
+(merge-rule "휭" "휭")
+(merge-rule "휮" "휮")
+(merge-rule "휯" "휯")
+(merge-rule "휰" "휰")
+(merge-rule "휱" "휱")
+(merge-rule "휲" "á„’á…±á‡")
+(merge-rule "휳" "휳")
+(merge-rule "휴" "휴~b")
+(merge-rule "휵" "휵")
+(merge-rule "휶" "휶")
+(merge-rule "휷" "휷")
+(merge-rule "휸" "휸")
+(merge-rule "휹" "휹")
+(merge-rule "휺" "휺")
+(merge-rule "휻" "휻")
+(merge-rule "휼" "휼")
+(merge-rule "휽" "휽")
+(merge-rule "휾" "휾")
+(merge-rule "휿" "휿")
+(merge-rule "í€" "흀")
+(merge-rule "í" "흁")
+(merge-rule "í‚" "흂")
+(merge-rule "íƒ" "흃")
+(merge-rule "í„" "흄")
+(merge-rule "í…" "흅")
+(merge-rule "í†" "흆")
+(merge-rule "í‡" "흇")
+(merge-rule "íˆ" "흈")
+(merge-rule "í‰" "흉")
+(merge-rule "íŠ" "흊")
+(merge-rule "í‹" "흋")
+(merge-rule "íŒ" "흌")
+(merge-rule "í" "흍")
+(merge-rule "íŽ" "á„’á…²á‡")
+(merge-rule "í" "흏")
+(merge-rule "í" "á„’á…³~b")
+(merge-rule "í‘" "흑")
+(merge-rule "í’" "흒")
+(merge-rule "í“" "흓")
+(merge-rule "í”" "흔")
+(merge-rule "í•" "흕")
+(merge-rule "í–" "흖")
+(merge-rule "í—" "흗")
+(merge-rule "í˜" "흘")
+(merge-rule "í™" "흙")
+(merge-rule "íš" "흚")
+(merge-rule "í›" "흛")
+(merge-rule "íœ" "흜")
+(merge-rule "í" "흝")
+(merge-rule "íž" "흞")
+(merge-rule "íŸ" "흟")
+(merge-rule "í " "흠")
+(merge-rule "í¡" "흡")
+(merge-rule "í¢" "흢")
+(merge-rule "í£" "흣")
+(merge-rule "í¤" "흤")
+(merge-rule "í¥" "흥")
+(merge-rule "í¦" "흦")
+(merge-rule "í§" "흧")
+(merge-rule "í¨" "흨")
+(merge-rule "í©" "흩")
+(merge-rule "íª" "á„’á…³á‡")
+(merge-rule "í«" "흫")
+(merge-rule "í¬" "á„’á…´~b")
+(merge-rule "í­" "흭")
+(merge-rule "í®" "흮")
+(merge-rule "í¯" "흯")
+(merge-rule "í°" "흰")
+(merge-rule "í±" "흱")
+(merge-rule "í²" "흲")
+(merge-rule "í³" "흳")
+(merge-rule "í´" "흴")
+(merge-rule "íµ" "흵")
+(merge-rule "í¶" "흶")
+(merge-rule "í·" "흷")
+(merge-rule "í¸" "흸")
+(merge-rule "í¹" "흹")
+(merge-rule "íº" "흺")
+(merge-rule "í»" "흻")
+(merge-rule "í¼" "흼")
+(merge-rule "í½" "흽")
+(merge-rule "í¾" "흾")
+(merge-rule "í¿" "흿")
+(merge-rule "힀" "힀")
+(merge-rule "íž" "힁")
+(merge-rule "힂" "힂")
+(merge-rule "힃" "힃")
+(merge-rule "힄" "힄")
+(merge-rule "힅" "힅")
+(merge-rule "힆" "á„’á…´á‡")
+(merge-rule "힇" "힇")
+(merge-rule "히" "히~b")
+(merge-rule "힉" "힉")
+(merge-rule "힊" "힊")
+(merge-rule "힋" "힋")
+(merge-rule "힌" "힌")
+(merge-rule "íž" "힍")
+(merge-rule "힎" "힎")
+(merge-rule "íž" "힏")
+(merge-rule "íž" "힐")
+(merge-rule "힑" "힑")
+(merge-rule "힒" "힒")
+(merge-rule "힓" "힓")
+(merge-rule "힔" "힔")
+(merge-rule "힕" "힕")
+(merge-rule "힖" "힖")
+(merge-rule "힗" "힗")
+(merge-rule "힘" "힘")
+(merge-rule "힙" "힙")
+(merge-rule "힚" "힚")
+(merge-rule "힛" "힛")
+(merge-rule "힜" "힜")
+(merge-rule "íž" "힝")
+(merge-rule "힞" "힞")
+(merge-rule "힟" "힟")
+(merge-rule "힠" "힠")
+(merge-rule "힡" "힡")
+(merge-rule "힢" "á„’á…µá‡")
+(merge-rule "힣" "힣")
+
+(merge-rule "一" "일")
+(merge-rule "ä¸" "정")
+(merge-rule "七" "칠")
+(merge-rule "万" "만")
+(merge-rule "丈" "장")
+(merge-rule "三" "삼")
+(merge-rule "上" "상")
+(merge-rule "下" "하~b")
+(merge-rule "ä¸" "부~b")
+(merge-rule "丑" "축")
+(merge-rule "且" "차~b")
+(merge-rule "丕" "비~b")
+(merge-rule "世" "세~b")
+(merge-rule "丘" "구~b")
+(merge-rule "丙" "병")
+(merge-rule "丞" "승")
+(merge-rule "丟" "주~b")
+(merge-rule "並" "병")
+(merge-rule "丫" "아~b")
+(merge-rule "中" "중")
+(merge-rule "丰" "봉")
+(merge-rule "丱" "관")
+(merge-rule "串" "곶")
+(merge-rule "丸" "환")
+(merge-rule "丹" "단")
+(merge-rule "主" "주~b")
+(merge-rule "乂" "예~b")
+(merge-rule "乃" "내~b")
+(merge-rule "久" "구~b")
+(merge-rule "之" "지~b")
+(merge-rule "ä¹" "사~b")
+(merge-rule "乎" "호~b")
+(merge-rule "ä¹" "핍")
+(merge-rule "乖" "괴~b")
+(merge-rule "乘" "승")
+(merge-rule "乙" "을")
+(merge-rule "ä¹" "구~b")
+(merge-rule "乞" "걸")
+(merge-rule "也" "야~b")
+(merge-rule "乧" "둘")
+(merge-rule "乫" "갈")
+(merge-rule "乬" "걸")
+(merge-rule "乭" "돌")
+(merge-rule "ä¹³" "á„‹á…²~b")
+(merge-rule "乶" "볼")
+(merge-rule "乷" "살")
+(merge-rule "乼" "줄")
+(merge-rule "乾" "건")
+(merge-rule "亂" "난")
+(merge-rule "了" "료~b")
+(merge-rule "予" "여~b")
+(merge-rule "事" "사~b")
+(merge-rule "二" "이~b")
+(merge-rule "于" "우~b")
+(merge-rule "äº" "á„‹á…®~b")
+(merge-rule "äº" "울")
+(merge-rule "云" "운")
+(merge-rule "互" "호~b")
+(merge-rule "五" "오~b")
+(merge-rule "井" "정")
+(merge-rule "亘" "긍")
+(merge-rule "亙" "긍")
+(merge-rule "些" "사~b")
+(merge-rule "亞" "아~b")
+(merge-rule "亟" "극")
+(merge-rule "亡" "망")
+(merge-rule "亢" "항")
+(merge-rule "交" "교~b")
+(merge-rule "亥" "해~b")
+(merge-rule "亦" "역")
+(merge-rule "亨" "형")
+(merge-rule "享" "향")
+(merge-rule "京" "경")
+(merge-rule "亭" "정")
+(merge-rule "亮" "량")
+(merge-rule "亳" "박")
+(merge-rule "亴" "우~b")
+(merge-rule "亶" "단")
+(merge-rule "亹" "미~b")
+(merge-rule "人" "인")
+(merge-rule "什" "십")
+(merge-rule "ä»" "인")
+(merge-rule "仄" "측")
+(merge-rule "仆" "부~b")
+(merge-rule "仇" "구~b")
+(merge-rule "今" "금")
+(merge-rule "介" "개~b")
+(merge-rule "ä»" "잉")
+(merge-rule "仔" "자~b")
+(merge-rule "仕" "사~b")
+(merge-rule "ä»–" "á„á…¡~b")
+(merge-rule "仗" "장")
+(merge-rule "付" "부~b")
+(merge-rule "仙" "선")
+(merge-rule "ä»" "동")
+(merge-rule "仞" "인")
+(merge-rule "仟" "천")
+(merge-rule "仡" "흘")
+(merge-rule "代" "대~b")
+(merge-rule "令" "령")
+(merge-rule "以" "이~b")
+(merge-rule "仮" "가~b")
+(merge-rule "仰" "앙")
+(merge-rule "仲" "중")
+(merge-rule "仳" "비~b")
+(merge-rule "仵" "오~b")
+(merge-rule "件" "건")
+(merge-rule "价" "개~b")
+(merge-rule "任" "임")
+(merge-rule "仿" "방")
+(merge-rule "伀" "종")
+(merge-rule "ä¼" "기~b")
+(merge-rule "伉" "항")
+(merge-rule "伊" "이~b")
+(merge-rule "伋" "급")
+(merge-rule "ä¼" "á„‹á…©~b")
+(merge-rule "伎" "기~b")
+(merge-rule "ä¼" "복")
+(merge-rule "ä¼" "벌")
+(merge-rule "休" "휴~b")
+(merge-rule "伯" "백")
+(merge-rule "估" "고~b")
+(merge-rule "伴" "반")
+(merge-rule "伶" "령")
+(merge-rule "伸" "신")
+(merge-rule "伺" "사~b")
+(merge-rule "似" "사~b")
+(merge-rule "伽" "가~b")
+(merge-rule "佂" "정")
+(merge-rule "佃" "전")
+(merge-rule "但" "단")
+(merge-rule "佇" "저~b")
+(merge-rule "佈" "포~b")
+(merge-rule "佉" "구~b")
+(merge-rule "佋" "소~b")
+(merge-rule "ä½" "á„‹á…±~b")
+(merge-rule "低" "저~b")
+(merge-rule "ä½" "주~b")
+(merge-rule "ä½" "좌~b")
+(merge-rule "佑" "우~b")
+(merge-rule "体" "분")
+(merge-rule "佔" "점")
+(merge-rule "何" "하~b")
+(merge-rule "佖" "필")
+(merge-rule "ä½—" "á„á…¡~b")
+(merge-rule "ä½™" "á„‹á…§~b")
+(merge-rule "佚" "일")
+(merge-rule "佛" "불")
+(merge-rule "作" "작")
+(merge-rule "ä½" "구~b")
+(merge-rule "佞" "녕")
+(merge-rule "佟" "á„ᅮᆼ")
+(merge-rule "佩" "패~b")
+(merge-rule "佪" "회~b")
+(merge-rule "佯" "양")
+(merge-rule "佰" "백")
+(merge-rule "佳" "가~b")
+(merge-rule "佶" "길")
+(merge-rule "佸" "괄")
+(merge-rule "佹" "궤~b")
+(merge-rule "佺" "전")
+(merge-rule "佻" "조~b")
+(merge-rule "佼" "교~b")
+(merge-rule "ä½½" "á„Žá…¡~b")
+(merge-rule "佾" "일")
+(merge-rule "使" "사~b")
+(merge-rule "ä¾" "신")
+(merge-rule "侃" "간")
+(merge-rule "侄" "질")
+(merge-rule "來" "내~b")
+(merge-rule "侈" "치~b")
+(merge-rule "侉" "과~b")
+(merge-rule "侊" "광")
+(merge-rule "例" "례~b")
+(merge-rule "ä¾" "시~b")
+(merge-rule "ä¾" "주~b")
+(merge-rule "侑" "유~b")
+(merge-rule "侔" "모~b")
+(merge-rule "侖" "륜")
+(merge-rule "侗" "동")
+(merge-rule "侘" "차~b")
+(merge-rule "侚" "순")
+(merge-rule "供" "공")
+(merge-rule "侜" "주~b")
+(merge-rule "ä¾" "á„‹á…´~b")
+(merge-rule "侮" "모~b")
+(merge-rule "侯" "후~b")
+(merge-rule "侲" "진")
+(merge-rule "侵" "침")
+(merge-rule "侶" "려~b")
+(merge-rule "ä¾»" "á„ᅡᆯ")
+(merge-rule "便" "변")
+(merge-rule "ä¿" "á„‹á…®~b")
+(merge-rule "係" "계~b")
+(merge-rule "促" "촉")
+(merge-rule "ä¿„" "á„‹á…¡~b")
+(merge-rule "俅" "구~b")
+(merge-rule "俉" "오~b")
+(merge-rule "俊" "준")
+(merge-rule "俌" "보~b")
+(merge-rule "俎" "조~b")
+(merge-rule "ä¿" "소~b")
+(merge-rule "ä¿" "á„…á…µ~b")
+(merge-rule "俑" "용")
+(merge-rule "俓" "경")
+(merge-rule "俔" "현")
+(merge-rule "俗" "속")
+(merge-rule "俘" "부~b")
+(merge-rule "ä¿š" "á„…á…µ~b")
+(merge-rule "俛" "면")
+(merge-rule "ä¿" "보~b")
+(merge-rule "俟" "사~b")
+(merge-rule "俠" "협")
+(merge-rule "信" "신")
+(merge-rule "ä¿£" "á„‹á…©~b")
+(merge-rule "修" "수~b")
+(merge-rule "俯" "부~b")
+(merge-rule "ä¿°" "á„’á…ª~b")
+(merge-rule "俱" "구~b")
+(merge-rule "俳" "배~b")
+(merge-rule "俴" "천")
+(merge-rule "俵" "표~b")
+(merge-rule "俶" "숙")
+(merge-rule "俸" "봉")
+(merge-rule "俺" "엄")
+(merge-rule "俾" "비~b")
+(merge-rule "倀" "창")
+(merge-rule "倂" "병")
+(merge-rule "倅" "쉬~b")
+(merge-rule "倆" "량")
+(merge-rule "倉" "창")
+(merge-rule "個" "개~b")
+(merge-rule "å€" "배~b")
+(merge-rule "å€" "숙")
+(merge-rule "們" "문")
+(merge-rule "倒" "도~b")
+(merge-rule "倔" "굴")
+(merge-rule "倖" "행")
+(merge-rule "倘" "당")
+(merge-rule "候" "후~b")
+(merge-rule "倚" "의~b")
+(merge-rule "倜" "척")
+(merge-rule "倞" "경")
+(merge-rule "借" "차~b")
+(merge-rule "倡" "창")
+(merge-rule "倢" "첩")
+(merge-rule "倣" "방")
+(merge-rule "値" "치~b")
+(merge-rule "倥" "공")
+(merge-rule "倦" "권")
+(merge-rule "倧" "종")
+(merge-rule "倨" "거~b")
+(merge-rule "倩" "천")
+(merge-rule "倪" "예~b")
+(merge-rule "倫" "륜")
+(merge-rule "倬" "á„ᅡᆨ")
+(merge-rule "倭" "왜~b")
+(merge-rule "倮" "라~b")
+(merge-rule "倰" "릉")
+(merge-rule "倻" "야~b")
+(merge-rule "åƒ" "언")
+(merge-rule "å„" "난")
+(merge-rule "å‡" "가~b")
+(merge-rule "åˆ" "게~b")
+(merge-rule "å‰" "á„‹á…±~b")
+(merge-rule "åŠ" "á„‹á…®~b")
+(merge-rule "åŽ" "á„‹á…¬~b")
+(merge-rule "å" "편")
+(merge-rule "å“" "악")
+(merge-rule "å•" "á„’á…¢~b")
+(merge-rule "å–" "á„Žá…¡~b")
+(merge-rule "å˜" "간")
+(merge-rule "åš" "주~b")
+(merge-rule "åœ" "정")
+(merge-rule "å " "á„‹á…­~b")
+(merge-rule "å¢" "á„Žá…©~b")
+(merge-rule "å¥" "건")
+(merge-rule "åª" "핍")
+(merge-rule "å°" "설")
+(merge-rule "å²" "시~b")
+(merge-rule "å´" "측")
+(merge-rule "åµ" "정")
+(merge-rule "å¶" "á„‹á…®~b")
+(merge-rule "å¸" "á„á…®~b")
+(merge-rule "傀" "괴~b")
+(merge-rule "傅" "부~b")
+(merge-rule "傋" "강")
+(merge-rule "å‚" "방")
+(merge-rule "傑" "걸")
+(merge-rule "å‚’" "á„’á…¨~b")
+(merge-rule "傔" "겸")
+(merge-rule "傖" "창")
+(merge-rule "傘" "산")
+(merge-rule "備" "비~b")
+(merge-rule "å‚š" "á„’á…­~b")
+(merge-rule "傛" "용")
+(merge-rule "å‚" "á„ᅡᆸ")
+(merge-rule "傞" "사~b")
+(merge-rule "傢" "가~b")
+(merge-rule "催" "최~b")
+(merge-rule "傭" "용")
+(merge-rule "傮" "조~b")
+(merge-rule "傲" "오~b")
+(merge-rule "傳" "전")
+(merge-rule "傴" "구~b")
+(merge-rule "債" "채~b")
+(merge-rule "傷" "상")
+(merge-rule "傽" "장")
+(merge-rule "傾" "경")
+(merge-rule "傿" "언")
+(merge-rule "僂" "루~b")
+(merge-rule "僄" "표~b")
+(merge-rule "僅" "근")
+(merge-rule "僉" "첨")
+(merge-rule "僊" "선")
+(merge-rule "åƒ" "상")
+(merge-rule "僑" "교~b")
+(merge-rule "僕" "복")
+(merge-rule "僖" "희~b")
+(merge-rule "僚" "료~b")
+(merge-rule "僛" "기~b")
+(merge-rule "僞" "위~b")
+(merge-rule "僢" "천")
+(merge-rule "僥" "요~b")
+(merge-rule "僦" "추~b")
+(merge-rule "僧" "승")
+(merge-rule "僩" "한")
+(merge-rule "僬" "초~b")
+(merge-rule "僭" "참")
+(merge-rule "僮" "동")
+(merge-rule "僵" "강")
+(merge-rule "價" "가~b")
+(merge-rule "僻" "벽")
+(merge-rule "僾" "애~b")
+(merge-rule "僿" "사~b")
+(merge-rule "å„€" "á„‹á…´~b")
+(merge-rule "å„" "준")
+(merge-rule "儂" "농")
+(merge-rule "儃" "천")
+(merge-rule "億" "억")
+(merge-rule "儆" "경")
+(merge-rule "儇" "현")
+(merge-rule "儉" "검")
+(merge-rule "儋" "담")
+(merge-rule "å„" "빈")
+(merge-rule "å„’" "á„‹á…²~b")
+(merge-rule "儓" "대~b")
+(merge-rule "儔" "주~b")
+(merge-rule "儕" "제~b")
+(merge-rule "å„—" "á„‹á…´~b")
+(merge-rule "儘" "진")
+(merge-rule "儚" "맹")
+(merge-rule "儛" "무~b")
+(merge-rule "儜" "녕")
+(merge-rule "償" "상")
+(merge-rule "å„¡" "á„…á…¬~b")
+(merge-rule "å„¢" "á„…á…§~b")
+(merge-rule "儤" "포~b")
+(merge-rule "儥" "육")
+(merge-rule "儧" "찬")
+(merge-rule "優" "우~b")
+(merge-rule "å„«" "á„’á…©~b")
+(merge-rule "儱" "롱")
+(merge-rule "儲" "저~b")
+(merge-rule "儳" "참")
+(merge-rule "儵" "숙")
+(merge-rule "å„·" "á„…á…§~b")
+(merge-rule "儹" "찬")
+(merge-rule "儺" "나~b")
+(merge-rule "儻" "당")
+(merge-rule "儼" "엄")
+(merge-rule "兀" "올")
+(merge-rule "å…" "윤")
+(merge-rule "元" "원")
+(merge-rule "兄" "형")
+(merge-rule "充" "충")
+(merge-rule "兆" "조~b")
+(merge-rule "兇" "흉")
+(merge-rule "先" "선")
+(merge-rule "光" "광")
+(merge-rule "克" "극")
+(merge-rule "å…Œ" "á„á…¢~b")
+(merge-rule "å…" "면")
+(merge-rule "å…Ž" "á„á…©~b")
+(merge-rule "å…’" "á„‹á…¡~b")
+(merge-rule "兕" "시~b")
+(merge-rule "兗" "연")
+(merge-rule "党" "당")
+(merge-rule "兜" "두~b")
+(merge-rule "兢" "긍")
+(merge-rule "入" "입")
+(merge-rule "å…§" "á„‚á…¢~b")
+(merge-rule "全" "전")
+(merge-rule "兩" "량")
+(merge-rule "å…ª" "á„‹á…²~b")
+(merge-rule "八" "팔")
+(merge-rule "公" "공")
+(merge-rule "六" "륙")
+(merge-rule "å…®" "á„’á…¨~b")
+(merge-rule "共" "공")
+(merge-rule "兵" "병")
+(merge-rule "其" "기~b")
+(merge-rule "具" "구~b")
+(merge-rule "典" "전")
+(merge-rule "兼" "겸")
+(merge-rule "冀" "기~b")
+(merge-rule "円" "엔")
+(merge-rule "冉" "염")
+(merge-rule "冊" "책")
+(merge-rule "å†" "재~b")
+(merge-rule "å†" "경")
+(merge-rule "冒" "모~b")
+(merge-rule "冓" "구~b")
+(merge-rule "冕" "면")
+(merge-rule "冗" "용")
+(merge-rule "冘" "유~b")
+(merge-rule "冠" "관")
+(merge-rule "冣" "취~b")
+(merge-rule "冤" "원")
+(merge-rule "冥" "명")
+(merge-rule "冪" "멱")
+(merge-rule "冬" "동")
+(merge-rule "冰" "빙")
+(merge-rule "冱" "호~b")
+(merge-rule "冲" "충")
+(merge-rule "冶" "야~b")
+(merge-rule "冷" "냉")
+(merge-rule "冽" "렬")
+(merge-rule "凄" "처~b")
+(merge-rule "凅" "고~b")
+(merge-rule "准" "준")
+(merge-rule "凉" "량")
+(merge-rule "凊" "청")
+(merge-rule "凋" "조~b")
+(merge-rule "凌" "능")
+(merge-rule "å‡" "동")
+(merge-rule "凒" "의~b")
+(merge-rule "凔" "창")
+(merge-rule "凛" "름")
+(merge-rule "凜" "늠")
+(merge-rule "å‡" "응")
+(merge-rule "凞" "희~b")
+(merge-rule "几" "궤~b")
+(merge-rule "凡" "범")
+(merge-rule "凩" "목")
+(merge-rule "凭" "빙")
+(merge-rule "凰" "황")
+(merge-rule "凱" "개~b")
+(merge-rule "凳" "등")
+(merge-rule "凴" "빙")
+(merge-rule "凶" "흉")
+(merge-rule "凸" "철")
+(merge-rule "凹" "요~b")
+(merge-rule "出" "출")
+(merge-rule "函" "함")
+(merge-rule "刀" "도~b")
+(merge-rule "åˆ" "조~b")
+(merge-rule "刃" "인")
+(merge-rule "分" "분")
+(merge-rule "切" "절")
+(merge-rule "刈" "예~b")
+(merge-rule "刊" "간")
+(merge-rule "刎" "문")
+(merge-rule "刑" "형")
+(merge-rule "刓" "완")
+(merge-rule "刖" "월")
+(merge-rule "列" "렬")
+(merge-rule "åˆ" "á„Žá…©~b")
+(merge-rule "判" "판")
+(merge-rule "別" "별")
+(merge-rule "刦" "겁")
+(merge-rule "刧" "겁")
+(merge-rule "利" "리~b")
+(merge-rule "刪" "산")
+(merge-rule "刮" "괄")
+(merge-rule "到" "도~b")
+(merge-rule "刱" "창")
+(merge-rule "刲" "규~b")
+(merge-rule "刳" "고~b")
+(merge-rule "制" "제~b")
+(merge-rule "刷" "쇄~b")
+(merge-rule "券" "권")
+(merge-rule "刹" "찰")
+(merge-rule "刺" "자~b")
+(merge-rule "刻" "각")
+(merge-rule "剃" "체~b")
+(merge-rule "剄" "경")
+(merge-rule "則" "칙")
+(merge-rule "剉" "좌~b")
+(merge-rule "削" "삭")
+(merge-rule "剋" "극")
+(merge-rule "剌" "랄")
+(merge-rule "å‰" "전")
+(merge-rule "剔" "척")
+(merge-rule "剕" "비~b")
+(merge-rule "剖" "부~b")
+(merge-rule "剗" "잔")
+(merge-rule "剚" "사~b")
+(merge-rule "剛" "강")
+(merge-rule "å‰" "박")
+(merge-rule "剞" "기~b")
+(merge-rule "剟" "철")
+(merge-rule "剡" "섬")
+(merge-rule "剩" "잉")
+(merge-rule "剪" "전")
+(merge-rule "副" "부~b")
+(merge-rule "割" "할")
+(merge-rule "剴" "개~b")
+(merge-rule "創" "창")
+(merge-rule "剷" "산")
+(merge-rule "剺" "리~b")
+(merge-rule "剽" "표~b")
+(merge-rule "剿" "초~b")
+(merge-rule "劂" "궤~b")
+(merge-rule "劃" "획")
+(merge-rule "劇" "극")
+(merge-rule "劈" "벽")
+(merge-rule "劉" "류~b")
+(merge-rule "åŠ" "검")
+(merge-rule "劑" "제~b")
+(merge-rule "劒" "검")
+(merge-rule "劓" "의~b")
+(merge-rule "劗" "찬")
+(merge-rule "劘" "마~b")
+(merge-rule "力" "력")
+(merge-rule "功" "공")
+(merge-rule "加" "가~b")
+(merge-rule "劣" "렬")
+(merge-rule "劤" "근")
+(merge-rule "助" "조~b")
+(merge-rule "努" "노~b")
+(merge-rule "劫" "겁")
+(merge-rule "劬" "구~b")
+(merge-rule "劭" "초~b")
+(merge-rule "劾" "핵")
+(merge-rule "å‹" "경")
+(merge-rule "勃" "발")
+(merge-rule "勅" "칙")
+(merge-rule "勇" "용")
+(merge-rule "勉" "면")
+(merge-rule "勌" "권")
+(merge-rule "å‹" "경")
+(merge-rule "勒" "늑")
+(merge-rule "動" "동")
+(merge-rule "勖" "욱")
+(merge-rule "勘" "감")
+(merge-rule "務" "무~b")
+(merge-rule "勛" "훈")
+(merge-rule "å‹" "승")
+(merge-rule "å‹ž" "á„‚á…©~b")
+(merge-rule "募" "모~b")
+(merge-rule "勠" "륙")
+(merge-rule "å‹¡" "á„‘á…­~b")
+(merge-rule "勢" "세~b")
+(merge-rule "勣" "적")
+(merge-rule "勤" "근")
+(merge-rule "勦" "초~b")
+(merge-rule "勳" "훈")
+(merge-rule "勵" "려~b")
+(merge-rule "勸" "권")
+(merge-rule "勺" "작")
+(merge-rule "勻" "균")
+(merge-rule "勾" "구~b")
+(merge-rule "勿" "물")
+(merge-rule "åŒ" "문")
+(merge-rule "匂" "내~b")
+(merge-rule "匃" "개~b")
+(merge-rule "包" "포~b")
+(merge-rule "匈" "흉")
+(merge-rule "匊" "국")
+(merge-rule "匌" "합")
+(merge-rule "åŒ" "á„‘á…©~b")
+(merge-rule "åŒ" "á„‘á…©~b")
+(merge-rule "åŒ" "복")
+(merge-rule "匕" "비~b")
+(merge-rule "化" "화~b")
+(merge-rule "北" "배~b")
+(merge-rule "匙" "시~b")
+(merge-rule "匠" "장")
+(merge-rule "匡" "광")
+(merge-rule "匣" "갑")
+(merge-rule "匧" "협")
+(merge-rule "匪" "비~b")
+(merge-rule "匯" "회~b")
+(merge-rule "匱" "궤~b")
+(merge-rule "匶" "구~b")
+(merge-rule "匹" "필")
+(merge-rule "匽" "언")
+(merge-rule "匾" "편")
+(merge-rule "匿" "닉")
+(merge-rule "å€" "구~b")
+(merge-rule "å" "십")
+(merge-rule "åƒ" "천")
+(merge-rule "å„" "입")
+(merge-rule "å…" "삽")
+(merge-rule "å‡" "승")
+(merge-rule "åˆ" "á„‹á…©~b")
+(merge-rule "å‰" "á„’á…°~b")
+(merge-rule "åŠ" "반")
+(merge-rule "å" "만")
+(merge-rule "å‘" "비~b")
+(merge-rule "å’" "졸")
+(merge-rule "å“" "á„ᅡᆨ")
+(merge-rule "å”" "협")
+(merge-rule "å—" "남")
+(merge-rule "åš" "박")
+(merge-rule "åœ" "복")
+(merge-rule "åž" "변")
+(merge-rule "å " "점")
+(merge-rule "å¡" "잡")
+(merge-rule "å¦" "괘~b")
+(merge-rule "å¨" "설")
+(merge-rule "å¬" "앙")
+(merge-rule "å®" "á„Žá…µ~b")
+(merge-rule "å¯" "묘~b")
+(merge-rule "å°" "인")
+(merge-rule "å±" "á„‹á…±~b")
+(merge-rule "å²" "소~b")
+(merge-rule "å³" "즉")
+(merge-rule "å´" "각")
+(merge-rule "åµ" "난")
+(merge-rule "å·" "권")
+(merge-rule "å¸" "사~b")
+(merge-rule "å¹" "휼")
+(merge-rule "åº" "근")
+(merge-rule "å»" "각")
+(merge-rule "å½" "즉")
+(merge-rule "å¾" "악")
+(merge-rule "å¿" "경")
+(merge-rule "厄" "액")
+(merge-rule "厓" "애~b")
+(merge-rule "厖" "방")
+(merge-rule "厘" "리~b")
+(merge-rule "厚" "후~b")
+(merge-rule "åŽ" "조~b")
+(merge-rule "原" "원")
+(merge-rule "厠" "측")
+(merge-rule "厥" "궐")
+(merge-rule "厦" "하~b")
+(merge-rule "厪" "근")
+(merge-rule "厭" "염")
+(merge-rule "厮" "시~b")
+(merge-rule "厲" "려~b")
+(merge-rule "厹" "구~b")
+(merge-rule "去" "거~b")
+(merge-rule "åƒ" "삼")
+(merge-rule "å…" "참")
+(merge-rule "åˆ" "á„‹á…®~b")
+(merge-rule "å‰" "á„Žá…¡~b")
+(merge-rule "åŠ" "급")
+(merge-rule "å‹" "á„‹á…®~b")
+(merge-rule "å" "반")
+(merge-rule "å”" "숙")
+(merge-rule "å–" "á„Žá…±~b")
+(merge-rule "å—" "수~b")
+(merge-rule "å›" "반")
+(merge-rule "åŸ" "수~b")
+(merge-rule "å¡" "á„‹á…¨~b")
+(merge-rule "å¢" "총")
+(merge-rule "å£" "구~b")
+(merge-rule "å¤" "고~b")
+(merge-rule "å¥" "구~b")
+(merge-rule "å¦" "령")
+(merge-rule "å¨" "도~b")
+(merge-rule "å©" "고~b")
+(merge-rule "åª" "지~b")
+(merge-rule "å«" "규~b")
+(merge-rule "å¬" "소~b")
+(merge-rule "å­" "팔")
+(merge-rule "å®" "정")
+(merge-rule "å¯" "가~b")
+(merge-rule "å°" "á„á…¢~b")
+(merge-rule "å±" "질")
+(merge-rule "å²" "사~b")
+(merge-rule "å³" "á„‹á…®~b")
+(merge-rule "å´" "구~b")
+(merge-rule "åµ" "á„‘á…¡~b")
+(merge-rule "å¶" "협")
+(merge-rule "å¸" "사~b")
+(merge-rule "å" "á„‹á…®~b")
+(merge-rule "åƒ" "흘")
+(merge-rule "å„" "각")
+(merge-rule "åˆ" "합")
+(merge-rule "å‰" "길")
+(merge-rule "åŠ" "적")
+(merge-rule "å‹" "촌")
+(merge-rule "åŒ" "동")
+(merge-rule "å" "명")
+(merge-rule "åŽ" "á„’á…®~b")
+(merge-rule "å" "á„…á…µ~b")
+(merge-rule "å" "á„á…©~b")
+(merge-rule "å‘" "향")
+(merge-rule "å›" "군")
+(merge-rule "å" "린")
+(merge-rule "åŸ" "음")
+(merge-rule "å " "á„‘á…¨~b")
+(merge-rule "å¦" "부~b")
+(merge-rule "å©" "분")
+(merge-rule "å«" "함")
+(merge-rule "å¬" "은")
+(merge-rule "å®" "전")
+(merge-rule "å³" "á„‹á…©~b")
+(merge-rule "å¶" "눌")
+(merge-rule "å¸" "흡")
+(merge-rule "å¹" "á„Žá…±~b")
+(merge-rule "å»" "문")
+(merge-rule "å¼" "á„’á…®~b")
+(merge-rule "å½" "á„’á…®~b")
+(merge-rule "å¾" "á„‹á…©~b")
+(merge-rule "å‘€" "á„’á…¡~b")
+(merge-rule "å‘‚" "á„…á…§~b")
+(merge-rule "呆" "매~b")
+(merge-rule "呈" "정")
+(merge-rule "告" "고~b")
+(merge-rule "呎" "척")
+(merge-rule "å‘‘" "á„ᅡᆫ")
+(merge-rule "å‘" "액")
+(merge-rule "å‘¢" "á„‚á…µ~b")
+(merge-rule "呤" "령")
+(merge-rule "呦" "유~b")
+(merge-rule "周" "주~b")
+(merge-rule "呪" "주~b")
+(merge-rule "呫" "첩")
+(merge-rule "呰" "자~b")
+(merge-rule "呱" "고~b")
+(merge-rule "味" "미~b")
+(merge-rule "呵" "가~b")
+(merge-rule "呶" "노~b")
+(merge-rule "呻" "신")
+(merge-rule "呼" "호~b")
+(merge-rule "命" "명")
+(merge-rule "呿" "거~b")
+(merge-rule "咀" "저~b")
+(merge-rule "咄" "돌")
+(merge-rule "å’†" "á„‘á…©~b")
+(merge-rule "咇" "필")
+(merge-rule "咋" "사~b")
+(merge-rule "和" "화~b")
+(merge-rule "å’" "á„’á…¢~b")
+(merge-rule "咎" "구~b")
+(merge-rule "å’" "영")
+(merge-rule "å’" "부~b")
+(merge-rule "咖" "가~b")
+(merge-rule "咠" "집")
+(merge-rule "咢" "악")
+(merge-rule "å’¤" "á„á…¡~b")
+(merge-rule "å’¥" "á„’á…´~b")
+(merge-rule "咨" "자~b")
+(merge-rule "咫" "지~b")
+(merge-rule "咬" "교~b")
+(merge-rule "咯" "각")
+(merge-rule "å’³" "á„’á…¢~b")
+(merge-rule "咸" "함")
+(merge-rule "å’»" "á„’á…²~b")
+(merge-rule "咼" "괘~b")
+(merge-rule "咽" "열")
+(merge-rule "å’¿" "á„‹á…µ~b")
+(merge-rule "å“€" "á„‹á…¢~b")
+(merge-rule "å“" "품")
+(merge-rule "哂" "신")
+(merge-rule "哃" "동")
+(merge-rule "哄" "홍")
+(merge-rule "哆" "치~b")
+(merge-rule "哇" "와~b")
+(merge-rule "哈" "합")
+(merge-rule "哉" "재~b")
+(merge-rule "員" "원")
+(merge-rule "哥" "가~b")
+(merge-rule "哦" "아~b")
+(merge-rule "哨" "초~b")
+(merge-rule "å“©" "á„…á…µ~b")
+(merge-rule "哭" "곡")
+(merge-rule "å“®" "á„’á…­~b")
+(merge-rule "哱" "발")
+(merge-rule "哲" "철")
+(merge-rule "哺" "포~b")
+(merge-rule "哽" "경")
+(merge-rule "哿" "가~b")
+(merge-rule "唄" "패~b")
+(merge-rule "唆" "사~b")
+(merge-rule "唇" "진")
+(merge-rule "唉" "애~b")
+(merge-rule "唎" "리~b")
+(merge-rule "å”" "á„’á…´~b")
+(merge-rule "å”" "당")
+(merge-rule "å””" "á„‹á…©~b")
+(merge-rule "唜" "말")
+(merge-rule "唫" "금")
+(merge-rule "售" "수~b")
+(merge-rule "唯" "유~b")
+(merge-rule "唱" "창")
+(merge-rule "唳" "려~b")
+(merge-rule "唵" "암")
+(merge-rule "唼" "삽")
+(merge-rule "唾" "á„á…¡~b")
+(merge-rule "å•€" "á„‹á…¢~b")
+(merge-rule "å•‚" "á„‚á…®~b")
+(merge-rule "å•„" "á„ᅡᆨ")
+(merge-rule "商" "상")
+(merge-rule "å•" "문")
+(merge-rule "啓" "계~b")
+(merge-rule "啖" "담")
+(merge-rule "啗" "담")
+(merge-rule "啜" "철")
+(merge-rule "å•ž" "á„‹á…¡~b")
+(merge-rule "啣" "함")
+(merge-rule "啻" "시~b")
+(merge-rule "啼" "제~b")
+(merge-rule "啽" "암")
+(merge-rule "啾" "추~b")
+(merge-rule "喀" "객")
+(merge-rule "å–" "옹")
+(merge-rule "喃" "남")
+(merge-rule "善" "선")
+(merge-rule "喆" "철")
+(merge-rule "å–‡" "á„‚á…¡~b")
+(merge-rule "å–‰" "á„’á…®~b")
+(merge-rule "喊" "함")
+(merge-rule "喋" "첩")
+(merge-rule "喑" "음")
+(merge-rule "å–“" "á„‹á…­~b")
+(merge-rule "喔" "악")
+(merge-rule "喘" "천")
+(merge-rule "å–™" "á„’á…°~b")
+(merge-rule "喚" "환")
+(merge-rule "喜" "희~b")
+(merge-rule "å–" "갈")
+(merge-rule "喞" "즉")
+(merge-rule "å–Ÿ" "á„‹á…±~b")
+(merge-rule "å–£" "á„’á…®~b")
+(merge-rule "喤" "황")
+(merge-rule "喧" "훤")
+(merge-rule "喨" "량")
+(merge-rule "å–©" "á„‹á…²~b")
+(merge-rule "喪" "상")
+(merge-rule "å–«" "á„ᅵᆨ")
+(merge-rule "喬" "교~b")
+(merge-rule "單" "단")
+(merge-rule "喰" "식")
+(merge-rule "å—…" "á„’á…®~b")
+(merge-rule "嗇" "색")
+(merge-rule "嗉" "소~b")
+(merge-rule "嗑" "합")
+(merge-rule "嗔" "진")
+(merge-rule "å—š" "á„‹á…©~b")
+(merge-rule "嗛" "겸")
+(merge-rule "嗜" "기~b")
+(merge-rule "å—Ÿ" "á„Žá…¡~b")
+(merge-rule "嗠" "락")
+(merge-rule "嗢" "올")
+(merge-rule "嗣" "사~b")
+(merge-rule "å—¤" "á„Žá…µ~b")
+(merge-rule "å—·" "á„‹á…©~b")
+(merge-rule "嗽" "수~b")
+(merge-rule "嗾" "주~b")
+(merge-rule "å—¿" "á„ᅡᆷ")
+(merge-rule "嘄" "교~b")
+(merge-rule "嘆" "á„ᅡᆫ")
+(merge-rule "嘈" "조~b")
+(merge-rule "嘉" "가~b")
+(merge-rule "嘌" "표~b")
+(merge-rule "å˜" "á„…á…®~b")
+(merge-rule "嘎" "알")
+(merge-rule "å˜" "교~b")
+(merge-rule "嘒" "혜~b")
+(merge-rule "嘔" "구~b")
+(merge-rule "嘖" "책")
+(merge-rule "嘗" "상")
+(merge-rule "嘩" "화~b")
+(merge-rule "嘬" "최~b")
+(merge-rule "嘯" "소~b")
+(merge-rule "嘲" "조~b")
+(merge-rule "嘴" "취~b")
+(merge-rule "嘶" "시~b")
+(merge-rule "嘷" "호~b")
+(merge-rule "嘸" "무~b")
+(merge-rule "嘹" "료~b")
+(merge-rule "嘻" "희~b")
+(merge-rule "嘿" "묵")
+(merge-rule "å™" "á„‹á…©~b")
+(merge-rule "噂" "준")
+(merge-rule "噉" "담")
+(merge-rule "噋" "á„ᅩᆫ")
+(merge-rule "å™" "á„Žá…©~b")
+(merge-rule "噎" "열")
+(merge-rule "å™" "흡")
+(merge-rule "噓" "허~b")
+(merge-rule "噤" "금")
+(merge-rule "噥" "농")
+(merge-rule "器" "기~b")
+(merge-rule "噩" "악")
+(merge-rule "噪" "조~b")
+(merge-rule "噫" "희~b")
+(merge-rule "噬" "서~b")
+(merge-rule "噭" "교~b")
+(merge-rule "噯" "애~b")
+(merge-rule "噲" "á„á…«~b")
+(merge-rule "噴" "분")
+(merge-rule "噶" "갈")
+(merge-rule "噸" "á„ᅩᆫ")
+(merge-rule "噺" "신")
+(merge-rule "嚀" "녕")
+(merge-rule "嚄" "획")
+(merge-rule "嚆" "효~b")
+(merge-rule "嚇" "하~b")
+(merge-rule "åš" "á„Žá…¦~b")
+(merge-rule "嚙" "교~b")
+(merge-rule "嚚" "은")
+(merge-rule "嚥" "연")
+(merge-rule "嚬" "빈")
+(merge-rule "嚮" "향")
+(merge-rule "嚳" "곡")
+(merge-rule "嚴" "엄")
+(merge-rule "嚶" "앵")
+(merge-rule "嚼" "작")
+(merge-rule "囀" "전")
+(merge-rule "å›" "섭")
+(merge-rule "囂" "효~b")
+(merge-rule "囃" "잡")
+(merge-rule "囈" "예~b")
+(merge-rule "囉" "라~b")
+(merge-rule "囊" "낭")
+(merge-rule "å›" "á„’á…´~b")
+(merge-rule "囑" "촉")
+(merge-rule "囚" "수~b")
+(merge-rule "四" "사~b")
+(merge-rule "回" "회~b")
+(merge-rule "囟" "신")
+(merge-rule "因" "인")
+(merge-rule "囦" "연")
+(merge-rule "囫" "홀")
+(merge-rule "å›®" "á„‹á…ª~b")
+(merge-rule "困" "곤")
+(merge-rule "囷" "균")
+(merge-rule "囹" "령")
+(merge-rule "固" "고~b")
+(merge-rule "囿" "유~b")
+(merge-rule "åœ" "은")
+(merge-rule "圂" "혼")
+(merge-rule "圃" "포~b")
+(merge-rule "圄" "어~b")
+(merge-rule "圈" "권")
+(merge-rule "圉" "어~b")
+(merge-rule "圊" "청")
+(merge-rule "國" "국")
+(merge-rule "åœ" "á„‹á…±~b")
+(merge-rule "園" "원")
+(merge-rule "圓" "원")
+(merge-rule "圖" "도~b")
+(merge-rule "團" "단")
+(merge-rule "圜" "원")
+(merge-rule "土" "á„á…©~b")
+(merge-rule "圥" "록")
+(merge-rule "在" "재~b")
+(merge-rule "圬" "오~b")
+(merge-rule "圭" "규~b")
+(merge-rule "圮" "비~b")
+(merge-rule "地" "지~b")
+(merge-rule "圻" "기~b")
+(merge-rule "圾" "급")
+(merge-rule "å€" "지~b")
+(merge-rule "å‚" "판")
+(merge-rule "å‡" "균")
+(merge-rule "åŠ" "방")
+(merge-rule "åŒ" "분")
+(merge-rule "å" "담")
+(merge-rule "åŽ" "감")
+(merge-rule "å" "배~b")
+(merge-rule "å" "좌~b")
+(merge-rule "å‘" "갱")
+(merge-rule "å¡" "á„‘á…¡~b")
+(merge-rule "å¤" "곤")
+(merge-rule "å¦" "á„ᅡᆫ")
+(merge-rule "å§" "척")
+(merge-rule "å¨" "á„‹á…µ~b")
+(merge-rule "å©" "감")
+(merge-rule "åª" "평")
+(merge-rule "å®" "대~b")
+(merge-rule "å¯" "배~b")
+(merge-rule "å°" "경")
+(merge-rule "å±" "앙")
+(merge-rule "å³" "á„‹á…­~b")
+(merge-rule "åµ" "구~b")
+(merge-rule "å·" "가~b")
+(merge-rule "å¸" "구~b")
+(merge-rule "å»" "지~b")
+(merge-rule "å¼" "á„ᅡᆨ")
+(merge-rule "垂" "수~b")
+(merge-rule "垈" "대~b")
+(merge-rule "型" "형")
+(merge-rule "垌" "동")
+(merge-rule "åž“" "á„’á…¢~b")
+(merge-rule "åž•" "á„’á…®~b")
+(merge-rule "åžž" "á„á…¡~b")
+(merge-rule "垠" "은")
+(merge-rule "垢" "구~b")
+(merge-rule "垣" "원")
+(merge-rule "垤" "질")
+(merge-rule "垸" "완")
+(merge-rule "垽" "은")
+(merge-rule "埃" "애~b")
+(merge-rule "埆" "각")
+(merge-rule "埇" "용")
+(merge-rule "埈" "준")
+(merge-rule "埉" "협")
+(merge-rule "埋" "매~b")
+(merge-rule "城" "성")
+(merge-rule "åŸ" "연")
+(merge-rule "埑" "철")
+(merge-rule "埒" "랄")
+(merge-rule "埜" "야~b")
+(merge-rule "域" "역")
+(merge-rule "埠" "부~b")
+(merge-rule "埤" "비~b")
+(merge-rule "埭" "á„á…¢~b")
+(merge-rule "埰" "채~b")
+(merge-rule "埳" "감")
+(merge-rule "埴" "식")
+(merge-rule "執" "집")
+(merge-rule "培" "배~b")
+(merge-rule "基" "기~b")
+(merge-rule "埻" "준")
+(merge-rule "埼" "기~b")
+(merge-rule "埽" "소~b")
+(merge-rule "堀" "굴")
+(merge-rule "堂" "당")
+(merge-rule "堃" "곤")
+(merge-rule "堅" "견")
+(merge-rule "å †" "á„á…¬~b")
+(merge-rule "堈" "강")
+(merge-rule "堉" "육")
+(merge-rule "堊" "악")
+(merge-rule "堋" "붕")
+(merge-rule "堗" "돌")
+(merge-rule "堙" "인")
+(merge-rule "å " "과~b")
+(merge-rule "堞" "첩")
+(merge-rule "å  " "á„’á…®~b")
+(merge-rule "堡" "보~b")
+(merge-rule "å £" "á„‹á…®~b")
+(merge-rule "堤" "제~b")
+(merge-rule "堦" "계~b")
+(merge-rule "堧" "연")
+(merge-rule "堪" "감")
+(merge-rule "å ¯" "á„‹á…­~b")
+(merge-rule "堰" "언")
+(merge-rule "報" "보~b")
+(merge-rule "場" "장")
+(merge-rule "堵" "도~b")
+(merge-rule "堺" "계~b")
+(merge-rule "塀" "병")
+(merge-rule "塉" "척")
+(merge-rule "塊" "괴~b")
+(merge-rule "塋" "영")
+(merge-rule "å¡Œ" "á„ᅡᆸ")
+(merge-rule "å¡" "승")
+(merge-rule "å¡" "개~b")
+(merge-rule "å¡" "소~b")
+(merge-rule "塑" "소~b")
+(merge-rule "塒" "시~b")
+(merge-rule "å¡”" "á„ᅡᆸ")
+(merge-rule "塗" "도~b")
+(merge-rule "塘" "당")
+(merge-rule "塙" "고~b")
+(merge-rule "塚" "총")
+(merge-rule "塞" "새~b")
+(merge-rule "塡" "전")
+(merge-rule "å¡¢" "á„‹á…©~b")
+(merge-rule "塤" "훈")
+(merge-rule "塩" "염")
+(merge-rule "塵" "진")
+(merge-rule "塹" "참")
+(merge-rule "塼" "전")
+(merge-rule "塽" "상")
+(merge-rule "塾" "숙")
+(merge-rule "墀" "지~b")
+(merge-rule "å¢" "만")
+(merge-rule "境" "경")
+(merge-rule "墅" "서~b")
+(merge-rule "墉" "용")
+(merge-rule "墊" "점")
+(merge-rule "å¢" "기~b")
+(merge-rule "å¢" "근")
+(merge-rule "墓" "묘~b")
+(merge-rule "墜" "추~b")
+(merge-rule "å¢" "á„‹á…­~b")
+(merge-rule "增" "증")
+(merge-rule "墟" "허~b")
+(merge-rule "墡" "선")
+(merge-rule "墣" "복")
+(merge-rule "墨" "묵")
+(merge-rule "墩" "돈")
+(merge-rule "墫" "준")
+(merge-rule "墮" "á„á…¡~b")
+(merge-rule "墰" "담")
+(merge-rule "墱" "등")
+(merge-rule "墳" "분")
+(merge-rule "墺" "오~b")
+(merge-rule "墻" "장")
+(merge-rule "墾" "간")
+(merge-rule "å£" "벽")
+(merge-rule "壃" "강")
+(merge-rule "壅" "옹")
+(merge-rule "壇" "단")
+(merge-rule "壎" "훈")
+(merge-rule "壑" "학")
+(merge-rule "壓" "압")
+(merge-rule "壔" "도~b")
+(merge-rule "壕" "호~b")
+(merge-rule "壘" "누~b")
+(merge-rule "壙" "광")
+(merge-rule "壚" "로~b")
+(merge-rule "壜" "담")
+(merge-rule "å£" "á„‹á…²~b")
+(merge-rule "壞" "괴~b")
+(merge-rule "壟" "농")
+(merge-rule "壤" "양")
+(merge-rule "士" "사~b")
+(merge-rule "壬" "임")
+(merge-rule "壯" "장")
+(merge-rule "壹" "일")
+(merge-rule "壺" "호~b")
+(merge-rule "壻" "서~b")
+(merge-rule "壽" "수~b")
+(merge-rule "夆" "봉")
+(merge-rule "夈" "재~b")
+(merge-rule "å¤" "á„’á…¡~b")
+(merge-rule "å¤" "형")
+(merge-rule "夔" "기~b")
+(merge-rule "夕" "석")
+(merge-rule "外" "외~b")
+(merge-rule "夙" "숙")
+(merge-rule "多" "다~b")
+(merge-rule "夜" "야~b")
+(merge-rule "夢" "몽")
+(merge-rule "夤" "인")
+(merge-rule "夥" "과~b")
+(merge-rule "大" "대~b")
+(merge-rule "天" "천")
+(merge-rule "太" "á„á…¢~b")
+(merge-rule "夫" "부~b")
+(merge-rule "夬" "á„á…«~b")
+(merge-rule "夭" "요~b")
+(merge-rule "央" "앙")
+(merge-rule "夯" "항")
+(merge-rule "失" "실")
+(merge-rule "夷" "이~b")
+(merge-rule "夸" "과~b")
+(merge-rule "夾" "협")
+(merge-rule "奄" "엄")
+(merge-rule "奇" "기~b")
+(merge-rule "奈" "나~b")
+(merge-rule "奉" "봉")
+(merge-rule "奎" "규~b")
+(merge-rule "å¥" "주~b")
+(merge-rule "å¥" "환")
+(merge-rule "契" "계~b")
+(merge-rule "奓" "차~b")
+(merge-rule "奔" "분")
+(merge-rule "奕" "혁")
+(merge-rule "套" "á„á…®~b")
+(merge-rule "奘" "장")
+(merge-rule "奚" "해~b")
+(merge-rule "奠" "전")
+(merge-rule "奢" "사~b")
+(merge-rule "奧" "오~b")
+(merge-rule "奩" "렴")
+(merge-rule "奪" "á„ᅡᆯ")
+(merge-rule "奫" "윤")
+(merge-rule "奬" "장")
+(merge-rule "奭" "석")
+(merge-rule "奮" "분")
+(merge-rule "女" "녀~b")
+(merge-rule "奴" "노~b")
+(merge-rule "奶" "내~b")
+(merge-rule "奸" "간")
+(merge-rule "好" "호~b")
+(merge-rule "如" "여~b")
+(merge-rule "妃" "비~b")
+(merge-rule "妄" "망")
+(merge-rule "妊" "임")
+(merge-rule "妑" "파~b")
+(merge-rule "妒" "á„á…®~b")
+(merge-rule "妓" "기~b")
+(merge-rule "妖" "요~b")
+(merge-rule "妗" "금")
+(merge-rule "妙" "묘~b")
+(merge-rule "å¦" "장")
+(merge-rule "妣" "비~b")
+(merge-rule "妥" "á„á…¡~b")
+(merge-rule "妧" "완")
+(merge-rule "妨" "방")
+(merge-rule "妬" "á„á…®~b")
+(merge-rule "妯" "축")
+(merge-rule "妲" "달")
+(merge-rule "妹" "매~b")
+(merge-rule "妻" "처~b")
+(merge-rule "妾" "첩")
+(merge-rule "姃" "정")
+(merge-rule "姆" "모~b")
+(merge-rule "姈" "령")
+(merge-rule "姉" "자~b")
+(merge-rule "始" "시~b")
+(merge-rule "å§" "산")
+(merge-rule "å§" "저~b")
+(merge-rule "姑" "고~b")
+(merge-rule "姒" "사~b")
+(merge-rule "姓" "성")
+(merge-rule "委" "위~b")
+(merge-rule "姙" "임")
+(merge-rule "姚" "요~b")
+(merge-rule "姜" "강")
+(merge-rule "å§" "주~b")
+(merge-rule "姞" "길")
+(merge-rule "姣" "교~b")
+(merge-rule "姤" "구~b")
+(merge-rule "姥" "모~b")
+(merge-rule "姦" "간")
+(merge-rule "姨" "이~b")
+(merge-rule "姪" "질")
+(merge-rule "姬" "희~b")
+(merge-rule "姮" "항")
+(merge-rule "姸" "연")
+(merge-rule "姺" "신")
+(merge-rule "姻" "인")
+(merge-rule "姿" "자~b")
+(merge-rule "å¨" "á„‹á…±~b")
+(merge-rule "娃" "왜~b")
+(merge-rule "娉" "빙")
+(merge-rule "娑" "사~b")
+(merge-rule "娓" "미~b")
+(merge-rule "娘" "낭")
+(merge-rule "娙" "형")
+(merge-rule "娛" "오~b")
+(merge-rule "娜" "나~b")
+(merge-rule "娟" "연")
+(merge-rule "娠" "신")
+(merge-rule "娣" "제~b")
+(merge-rule "娥" "아~b")
+(merge-rule "娧" "á„á…¢~b")
+(merge-rule "娩" "만")
+(merge-rule "娭" "애~b")
+(merge-rule "娵" "추~b")
+(merge-rule "娶" "취~b")
+(merge-rule "娼" "창")
+(merge-rule "娿" "아~b")
+(merge-rule "å©€" "á„‹á…¡~b")
+(merge-rule "å©" "á„…á…®~b")
+(merge-rule "婆" "파~b")
+(merge-rule "婉" "완")
+(merge-rule "婌" "숙")
+(merge-rule "å©" "á„‹á…ª~b")
+(merge-rule "婚" "혼")
+(merge-rule "婢" "비~b")
+(merge-rule "婣" "인")
+(merge-rule "婦" "부~b")
+(merge-rule "婧" "정")
+(merge-rule "婪" "람")
+(merge-rule "婲" "화~b")
+(merge-rule "婷" "정")
+(merge-rule "婿" "서~b")
+(merge-rule "媄" "미~b")
+(merge-rule "åª" "부~b")
+(merge-rule "媒" "매~b")
+(merge-rule "媓" "황")
+(merge-rule "媕" "암")
+(merge-rule "媚" "미~b")
+(merge-rule "媛" "원")
+(merge-rule "媟" "설")
+(merge-rule "媢" "모~b")
+(merge-rule "媤" "시~b")
+(merge-rule "媧" "왜~b")
+(merge-rule "媪" "오~b")
+(merge-rule "媳" "식")
+(merge-rule "媵" "잉")
+(merge-rule "媺" "미~b")
+(merge-rule "媻" "반")
+(merge-rule "媼" "온")
+(merge-rule "媽" "마~b")
+(merge-rule "媾" "구~b")
+(merge-rule "媿" "괴~b")
+(merge-rule "å«" "가~b")
+(merge-rule "嫂" "수~b")
+(merge-rule "嫄" "원")
+(merge-rule "嫈" "앵")
+(merge-rule "嫉" "질")
+(merge-rule "å«‹" "á„‚á…­~b")
+(merge-rule "嫌" "혐")
+(merge-rule "å«–" "á„‘á…­~b")
+(merge-rule "嫗" "구~b")
+(merge-rule "嫙" "선")
+(merge-rule "嫚" "만")
+(merge-rule "å«›" "á„‹á…¨~b")
+(merge-rule "å« " "á„…á…µ~b")
+(merge-rule "嫡" "적")
+(merge-rule "嫢" "규~b")
+(merge-rule "嫣" "언")
+(merge-rule "嫥" "전")
+(merge-rule "嫦" "항")
+(merge-rule "嫩" "눈")
+(merge-rule "嫫" "모~b")
+(merge-rule "å«­" "á„’á…©~b")
+(merge-rule "å«®" "á„’á…©~b")
+(merge-rule "嫯" "오~b")
+(merge-rule "嫶" "초~b")
+(merge-rule "嫺" "한")
+(merge-rule "嫻" "한")
+(merge-rule "嫽" "료~b")
+(merge-rule "嬀" "규~b")
+(merge-rule "嬅" "화~b")
+(merge-rule "嬈" "요~b")
+(merge-rule "嬉" "희~b")
+(merge-rule "嬋" "선")
+(merge-rule "嬌" "교~b")
+(merge-rule "嬖" "폐~b")
+(merge-rule "嬙" "장")
+(merge-rule "嬛" "현")
+(merge-rule "嬥" "조~b")
+(merge-rule "嬨" "자~b")
+(merge-rule "嬪" "빈")
+(merge-rule "嬭" "내~b")
+(merge-rule "嬰" "영")
+(merge-rule "嬲" "뇨~b")
+(merge-rule "嬴" "영")
+(merge-rule "嬾" "란")
+(merge-rule "嬿" "연")
+(merge-rule "孀" "상")
+(merge-rule "孃" "양")
+(merge-rule "孅" "섬")
+(merge-rule "孌" "련")
+(merge-rule "å­" "자~b")
+(merge-rule "孑" "혈")
+(merge-rule "孔" "공")
+(merge-rule "孕" "잉")
+(merge-rule "孖" "자~b")
+(merge-rule "字" "자~b")
+(merge-rule "存" "존")
+(merge-rule "孚" "부~b")
+(merge-rule "å­›" "á„‘á…¢~b")
+(merge-rule "孜" "자~b")
+(merge-rule "å­" "á„’á…­~b")
+(merge-rule "孟" "맹")
+(merge-rule "å­¡" "á„á…¢~b")
+(merge-rule "季" "계~b")
+(merge-rule "孤" "고~b")
+(merge-rule "å­¥" "á„‚á…©~b")
+(merge-rule "å­©" "á„’á…¢~b")
+(merge-rule "孫" "손")
+(merge-rule "孰" "숙")
+(merge-rule "孱" "잔")
+(merge-rule "孵" "부~b")
+(merge-rule "孶" "자~b")
+(merge-rule "學" "학")
+(merge-rule "å­º" "á„‹á…²~b")
+(merge-rule "孼" "얼")
+(merge-rule "孿" "산")
+(merge-rule "å®" "저~b")
+(merge-rule "宂" "용")
+(merge-rule "宅" "댁")
+(merge-rule "宇" "우~b")
+(merge-rule "守" "수~b")
+(merge-rule "安" "안")
+(merge-rule "宊" "가~b")
+(merge-rule "宋" "송")
+(merge-rule "完" "완")
+(merge-rule "å®" "굉")
+(merge-rule "宓" "복")
+(merge-rule "宕" "á„ᅡᆼ")
+(merge-rule "宖" "횡")
+(merge-rule "宗" "종")
+(merge-rule "官" "관")
+(merge-rule "宙" "주~b")
+(merge-rule "定" "정")
+(merge-rule "宛" "완")
+(merge-rule "宜" "의~b")
+(merge-rule "客" "객")
+(merge-rule "宣" "선")
+(merge-rule "室" "실")
+(merge-rule "宥" "유~b")
+(merge-rule "宦" "환")
+(merge-rule "宬" "성")
+(merge-rule "宮" "궁")
+(merge-rule "宰" "재~b")
+(merge-rule "害" "해~b")
+(merge-rule "宴" "연")
+(merge-rule "宵" "소~b")
+(merge-rule "家" "가~b")
+(merge-rule "宸" "신")
+(merge-rule "容" "용")
+(merge-rule "宿" "숙")
+(merge-rule "寀" "채~b")
+(merge-rule "寂" "적")
+(merge-rule "寃" "원")
+(merge-rule "寄" "기~b")
+(merge-rule "寅" "인")
+(merge-rule "密" "밀")
+(merge-rule "寇" "구~b")
+(merge-rule "富" "부~b")
+(merge-rule "å¯" "매~b")
+(merge-rule "寒" "한")
+(merge-rule "寓" "우~b")
+(merge-rule "寔" "식")
+(merge-rule "寖" "침")
+(merge-rule "寗" "녕")
+(merge-rule "寘" "치~b")
+(merge-rule "寞" "막")
+(merge-rule "察" "찰")
+(merge-rule "寡" "과~b")
+(merge-rule "寢" "침")
+(merge-rule "寤" "오~b")
+(merge-rule "寥" "요~b")
+(merge-rule "實" "실")
+(merge-rule "寧" "녕")
+(merge-rule "寨" "채~b")
+(merge-rule "審" "심")
+(merge-rule "寫" "사~b")
+(merge-rule "寬" "관")
+(merge-rule "寭" "혜~b")
+(merge-rule "寮" "료~b")
+(merge-rule "寯" "준")
+(merge-rule "寰" "환")
+(merge-rule "寵" "총")
+(merge-rule "寶" "보~b")
+(merge-rule "寸" "촌")
+(merge-rule "寺" "사~b")
+(merge-rule "å°" "봉")
+(merge-rule "射" "사~b")
+(merge-rule "尅" "극")
+(merge-rule "將" "장")
+(merge-rule "專" "전")
+(merge-rule "å°‰" "á„‹á…±~b")
+(merge-rule "尊" "존")
+(merge-rule "尋" "심")
+(merge-rule "尌" "주~b")
+(merge-rule "å°" "대~b")
+(merge-rule "導" "도~b")
+(merge-rule "å°" "소~b")
+(merge-rule "少" "소~b")
+(merge-rule "å°”" "á„‹á…µ~b")
+(merge-rule "尖" "첨")
+(merge-rule "尙" "상")
+(merge-rule "尟" "선")
+(merge-rule "尠" "선")
+(merge-rule "å°¤" "á„‹á…®~b")
+(merge-rule "尨" "방")
+(merge-rule "尫" "왕")
+(merge-rule "å°±" "á„Žá…±~b")
+(merge-rule "尸" "시~b")
+(merge-rule "尹" "윤")
+(merge-rule "尺" "척")
+(merge-rule "尻" "고~b")
+(merge-rule "å°¼" "á„‚á…µ~b")
+(merge-rule "尾" "미~b")
+(merge-rule "å°¿" "á„‚á…­~b")
+(merge-rule "局" "국")
+(merge-rule "å±" "비~b")
+(merge-rule "居" "거~b")
+(merge-rule "屆" "계~b")
+(merge-rule "屇" "전")
+(merge-rule "屈" "굴")
+(merge-rule "屋" "옥")
+(merge-rule "å±" "시~b")
+(merge-rule "屎" "시~b")
+(merge-rule "å±" "극")
+(merge-rule "屑" "설")
+(merge-rule "展" "전")
+(merge-rule "屛" "병")
+(merge-rule "屠" "도~b")
+(merge-rule "å±¢" "á„‚á…®~b")
+(merge-rule "層" "층")
+(merge-rule "å±¥" "á„…á…µ~b")
+(merge-rule "屨" "구~b")
+(merge-rule "屬" "속")
+(merge-rule "屯" "둔")
+(merge-rule "山" "산")
+(merge-rule "屳" "선")
+(merge-rule "屹" "흘")
+(merge-rule "屺" "기~b")
+(merge-rule "岈" "하~b")
+(merge-rule "岊" "절")
+(merge-rule "岌" "급")
+(merge-rule "å²" "완")
+(merge-rule "å²" "기~b")
+(merge-rule "岑" "잠")
+(merge-rule "岒" "겸")
+(merge-rule "å²”" "á„Žá…¡~b")
+(merge-rule "å²" "작")
+(merge-rule "岡" "강")
+(merge-rule "岣" "구~b")
+(merge-rule "å²¥" "á„‘á…¡~b")
+(merge-rule "岦" "립")
+(merge-rule "岧" "초~b")
+(merge-rule "岨" "저~b")
+(merge-rule "岩" "암")
+(merge-rule "岪" "불")
+(merge-rule "岫" "수~b")
+(merge-rule "岬" "갑")
+(merge-rule "岭" "령")
+(merge-rule "岱" "대~b")
+(merge-rule "岳" "악")
+(merge-rule "å²µ" "á„’á…©~b")
+(merge-rule "岷" "민")
+(merge-rule "岸" "안")
+(merge-rule "岺" "령")
+(merge-rule "岾" "점")
+(merge-rule "峀" "수~b")
+(merge-rule "峒" "동")
+(merge-rule "å³™" "á„Žá…µ~b")
+(merge-rule "峠" "상")
+(merge-rule "峨" "아~b")
+(merge-rule "峩" "아~b")
+(merge-rule "å³­" "á„Žá…©~b")
+(merge-rule "峯" "봉")
+(merge-rule "峰" "봉")
+(merge-rule "å³±" "á„‚á…©~b")
+(merge-rule "峴" "현")
+(merge-rule "島" "도~b")
+(merge-rule "峻" "준")
+(merge-rule "峽" "협")
+(merge-rule "崆" "공")
+(merge-rule "崇" "숭")
+(merge-rule "å´" "á„…á…¢~b")
+(merge-rule "崎" "기~b")
+(merge-rule "å´" "곤")
+(merge-rule "崑" "곤")
+(merge-rule "å´”" "á„Žá…¬~b")
+(merge-rule "å´•" "á„‹á…¢~b")
+(merge-rule "å´–" "á„‹á…¢~b")
+(merge-rule "崗" "강")
+(merge-rule "崙" "륜")
+(merge-rule "崛" "굴")
+(merge-rule "崟" "음")
+(merge-rule "崢" "쟁")
+(merge-rule "å´¤" "á„’á…­~b")
+(merge-rule "崦" "엄")
+(merge-rule "崧" "숭")
+(merge-rule "崩" "붕")
+(merge-rule "å´´" "á„‹á…¬~b")
+(merge-rule "崽" "재~b")
+(merge-rule "åµ" "감")
+(merge-rule "嵂" "률")
+(merge-rule "嵋" "미~b")
+(merge-rule "嵌" "감")
+(merge-rule "嵎" "우~b")
+(merge-rule "åµ" "남")
+(merge-rule "嵓" "암")
+(merge-rule "åµ”" "á„‹á…¬~b")
+(merge-rule "嵩" "숭")
+(merge-rule "嵬" "외~b")
+(merge-rule "嵯" "차~b")
+(merge-rule "嵱" "용")
+(merge-rule "å¶" "á„…á…®~b")
+(merge-rule "嶂" "장")
+(merge-rule "嶄" "참")
+(merge-rule "嶇" "구~b")
+(merge-rule "嶋" "도~b")
+(merge-rule "嶒" "증")
+(merge-rule "嶔" "금")
+(merge-rule "嶕" "초~b")
+(merge-rule "嶙" "린")
+(merge-rule "å¶" "등")
+(merge-rule "嶠" "교~b")
+(merge-rule "嶢" "요~b")
+(merge-rule "嶧" "역")
+(merge-rule "嶪" "업")
+(merge-rule "嶫" "업")
+(merge-rule "嶮" "험")
+(merge-rule "嶰" "해~b")
+(merge-rule "嶷" "의~b")
+(merge-rule "嶸" "영")
+(merge-rule "嶺" "령")
+(merge-rule "嶼" "서~b")
+(merge-rule "嶽" "악")
+(merge-rule "巉" "참")
+(merge-rule "巋" "규~b")
+(merge-rule "å·" "á„‹á…¬~b")
+(merge-rule "巑" "찬")
+(merge-rule "巒" "만")
+(merge-rule "巓" "전")
+(merge-rule "巖" "암")
+(merge-rule "巚" "헌")
+(merge-rule "å·" "천")
+(merge-rule "州" "주~b")
+(merge-rule "巡" "순")
+(merge-rule "巢" "소~b")
+(merge-rule "工" "공")
+(merge-rule "左" "좌~b")
+(merge-rule "巧" "교~b")
+(merge-rule "巨" "거~b")
+(merge-rule "巫" "무~b")
+(merge-rule "å·®" "á„Žá…¡~b")
+(merge-rule "己" "기~b")
+(merge-rule "å·²" "á„‹á…µ~b")
+(merge-rule "巳" "사~b")
+(merge-rule "å·´" "á„‘á…¡~b")
+(merge-rule "å·µ" "á„Žá…µ~b")
+(merge-rule "巷" "항")
+(merge-rule "巹" "근")
+(merge-rule "巽" "손")
+(merge-rule "巾" "건")
+(merge-rule "市" "시~b")
+(merge-rule "布" "포~b")
+(merge-rule "帆" "범")
+(merge-rule "帉" "분")
+(merge-rule "希" "희~b")
+(merge-rule "帑" "á„ᅡᆼ")
+(merge-rule "帕" "말")
+(merge-rule "帖" "첩")
+(merge-rule "帙" "질")
+(merge-rule "帚" "추~b")
+(merge-rule "帛" "백")
+(merge-rule "å¸" "제~b")
+(merge-rule "帥" "수~b")
+(merge-rule "帨" "세~b")
+(merge-rule "師" "사~b")
+(merge-rule "席" "석")
+(merge-rule "帳" "장")
+(merge-rule "帶" "대~b")
+(merge-rule "帷" "유~b")
+(merge-rule "常" "상")
+(merge-rule "帽" "모~b")
+(merge-rule "帿" "후~b")
+(merge-rule "幀" "정")
+(merge-rule "幃" "위~b")
+(merge-rule "幄" "악")
+(merge-rule "幅" "폭")
+(merge-rule "幇" "방")
+(merge-rule "幌" "황")
+(merge-rule "幎" "멱")
+(merge-rule "幔" "만")
+(merge-rule "幕" "막")
+(merge-rule "幘" "책")
+(merge-rule "幞" "복")
+(merge-rule "幟" "치~b")
+(merge-rule "幡" "번")
+(merge-rule "幢" "당")
+(merge-rule "å¹£" "á„‘á…¨~b")
+(merge-rule "幨" "첨")
+(merge-rule "幪" "몽")
+(merge-rule "幫" "방")
+(merge-rule "幬" "주~b")
+(merge-rule "幰" "헌")
+(merge-rule "幱" "란")
+(merge-rule "干" "간")
+(merge-rule "平" "평")
+(merge-rule "年" "년")
+(merge-rule "幷" "병")
+(merge-rule "幸" "행")
+(merge-rule "幹" "간")
+(merge-rule "幺" "요~b")
+(merge-rule "幻" "환")
+(merge-rule "å¹¼" "á„‹á…²~b")
+(merge-rule "å¹½" "á„‹á…²~b")
+(merge-rule "幾" "기~b")
+(merge-rule "广" "엄")
+(merge-rule "庄" "장")
+(merge-rule "庇" "비~b")
+(merge-rule "床" "상")
+(merge-rule "庋" "기~b")
+(merge-rule "åº" "서~b")
+(merge-rule "底" "저~b")
+(merge-rule "庖" "포~b")
+(merge-rule "店" "점")
+(merge-rule "庚" "경")
+(merge-rule "府" "부~b")
+(merge-rule "庠" "상")
+(merge-rule "度" "도~b")
+(merge-rule "座" "좌~b")
+(merge-rule "庫" "고~b")
+(merge-rule "庭" "정")
+(merge-rule "庳" "비~b")
+(merge-rule "庵" "암")
+(merge-rule "庶" "서~b")
+(merge-rule "康" "강")
+(merge-rule "庸" "용")
+(merge-rule "庽" "우~b")
+(merge-rule "庾" "유~b")
+(merge-rule "å»" "측")
+(merge-rule "廂" "상")
+(merge-rule "廈" "하~b")
+(merge-rule "廉" "렴")
+(merge-rule "廊" "낭")
+(merge-rule "廋" "수~b")
+(merge-rule "å»" "구~b")
+(merge-rule "廑" "근")
+(merge-rule "廓" "곽")
+(merge-rule "廕" "음")
+(merge-rule "å»–" "á„…á…­~b")
+(merge-rule "廚" "주~b")
+(merge-rule "廛" "전")
+(merge-rule "å»" "시~b")
+(merge-rule "廞" "흠")
+(merge-rule "廟" "묘~b")
+(merge-rule "廠" "창")
+(merge-rule "廡" "무~b")
+(merge-rule "廢" "폐~b")
+(merge-rule "廣" "광")
+(merge-rule "廥" "괴~b")
+(merge-rule "廧" "장")
+(merge-rule "廨" "해~b")
+(merge-rule "廩" "름")
+(merge-rule "廬" "려~b")
+(merge-rule "廱" "옹")
+(merge-rule "廳" "청")
+(merge-rule "延" "연")
+(merge-rule "廷" "정")
+(merge-rule "建" "건")
+(merge-rule "å»»" "á„’á…¬~b")
+(merge-rule "廿" "입")
+(merge-rule "å¼" "변")
+(merge-rule "弃" "기~b")
+(merge-rule "弄" "농")
+(merge-rule "弇" "감")
+(merge-rule "弈" "혁")
+(merge-rule "弊" "폐~b")
+(merge-rule "弋" "익")
+(merge-rule "å¼" "식")
+(merge-rule "弑" "시~b")
+(merge-rule "弓" "궁")
+(merge-rule "弔" "조~b")
+(merge-rule "引" "인")
+(merge-rule "弗" "불")
+(merge-rule "弘" "홍")
+(merge-rule "å¼›" "á„‹á…µ~b")
+(merge-rule "弟" "제~b")
+(merge-rule "弢" "도~b")
+(merge-rule "弥" "미~b")
+(merge-rule "弦" "현")
+(merge-rule "弧" "호~b")
+(merge-rule "弩" "노~b")
+(merge-rule "弭" "미~b")
+(merge-rule "弱" "약")
+(merge-rule "弴" "돈")
+(merge-rule "張" "장")
+(merge-rule "强" "강")
+(merge-rule "弼" "필")
+(merge-rule "彀" "구~b")
+(merge-rule "彆" "별")
+(merge-rule "彈" "á„ᅡᆫ")
+(merge-rule "彊" "강")
+(merge-rule "彌" "미~b")
+(merge-rule "彎" "만")
+(merge-rule "彔" "록")
+(merge-rule "彖" "단")
+(merge-rule "å½—" "á„’á…¨~b")
+(merge-rule "彘" "체~b")
+(merge-rule "å½™" "á„’á…±~b")
+(merge-rule "å½›" "á„‹á…µ~b")
+(merge-rule "å½" "á„‹á…µ~b")
+(merge-rule "形" "형")
+(merge-rule "彤" "동")
+(merge-rule "彦" "언")
+(merge-rule "彧" "욱")
+(merge-rule "彩" "채~b")
+(merge-rule "彪" "표~b")
+(merge-rule "彫" "조~b")
+(merge-rule "彬" "빈")
+(merge-rule "彭" "팽")
+(merge-rule "彰" "창")
+(merge-rule "影" "영")
+(merge-rule "彷" "방")
+(merge-rule "役" "역")
+(merge-rule "å½¼" "á„‘á…µ~b")
+(merge-rule "彿" "불")
+(merge-rule "往" "왕")
+(merge-rule "å¾" "정")
+(merge-rule "徂" "조~b")
+(merge-rule "待" "대~b")
+(merge-rule "徇" "순")
+(merge-rule "很" "흔")
+(merge-rule "徉" "양")
+(merge-rule "徊" "회~b")
+(merge-rule "律" "률")
+(merge-rule "後" "후~b")
+(merge-rule "å¾" "서~b")
+(merge-rule "徑" "경")
+(merge-rule "徒" "도~b")
+(merge-rule "得" "득")
+(merge-rule "徘" "배~b")
+(merge-rule "徙" "사~b")
+(merge-rule "徜" "상")
+(merge-rule "從" "종")
+(merge-rule "å¾ " "á„…á…¢~b")
+(merge-rule "御" "어~b")
+(merge-rule "å¾£" "á„Žá…¡~b")
+(merge-rule "徧" "편")
+(merge-rule "徨" "황")
+(merge-rule "復" "복")
+(merge-rule "循" "순")
+(merge-rule "徬" "방")
+(merge-rule "å¾­" "á„‹á…­~b")
+(merge-rule "微" "미~b")
+(merge-rule "徯" "혜~b")
+(merge-rule "徵" "징")
+(merge-rule "德" "덕")
+(merge-rule "徹" "철")
+(merge-rule "å¾¼" "á„‹á…­~b")
+(merge-rule "å¾½" "á„’á…±~b")
+(merge-rule "心" "심")
+(merge-rule "必" "필")
+(merge-rule "忉" "도~b")
+(merge-rule "忌" "기~b")
+(merge-rule "å¿" "인")
+(merge-rule "å¿" "á„ᅡᆷ")
+(merge-rule "å¿’" "á„ᅳᆨ")
+(merge-rule "忖" "촌")
+(merge-rule "志" "지~b")
+(merge-rule "忘" "망")
+(merge-rule "忙" "망")
+(merge-rule "å¿" "첨")
+(merge-rule "忞" "민")
+(merge-rule "忟" "민")
+(merge-rule "忠" "충")
+(merge-rule "忡" "충")
+(merge-rule "忤" "오~b")
+(merge-rule "忨" "완")
+(merge-rule "å¿«" "á„á…«~b")
+(merge-rule "忭" "변")
+(merge-rule "忮" "기~b")
+(merge-rule "忱" "침")
+(merge-rule "念" "념")
+(merge-rule "忸" "뉴~b")
+(merge-rule "忻" "흔")
+(merge-rule "忼" "강")
+(merge-rule "忽" "홀")
+(merge-rule "忿" "분")
+(merge-rule "怊" "초~b")
+(merge-rule "æ€" "작")
+(merge-rule "æ€" "앙")
+(merge-rule "怒" "노~b")
+(merge-rule "怔" "정")
+(merge-rule "怕" "파~b")
+(merge-rule "怖" "포~b")
+(merge-rule "怗" "첩")
+(merge-rule "怙" "호~b")
+(merge-rule "怛" "달")
+(merge-rule "怜" "령")
+(merge-rule "æ€" "사~b")
+(merge-rule "怠" "á„á…¢~b")
+(merge-rule "怡" "이~b")
+(merge-rule "急" "급")
+(merge-rule "怦" "평")
+(merge-rule "性" "성")
+(merge-rule "怨" "원")
+(merge-rule "怩" "니~b")
+(merge-rule "怪" "괴~b")
+(merge-rule "怯" "겁")
+(merge-rule "怳" "황")
+(merge-rule "æ" "임")
+(merge-rule "æ‚" "순")
+(merge-rule "æƒ" "시~b")
+(merge-rule "æ†" "항")
+(merge-rule "æ‡" "광")
+(merge-rule "æˆ" "모~b")
+(merge-rule "æŠ" "협")
+(merge-rule "æ" "황")
+(merge-rule "æ" "공")
+(merge-rule "æ’" "항")
+(merge-rule "æ•" "서~b")
+(merge-rule "æ™" "양")
+(merge-rule "æš" "á„‹á…¦~b")
+(merge-rule "æ" "괄")
+(merge-rule "æŸ" "흉")
+(merge-rule "æ " "괴~b")
+(merge-rule "æ¢" "á„’á…¬~b")
+(merge-rule "æ£" "자~b")
+(merge-rule "æ¤" "휼")
+(merge-rule "æ¥" "á„Žá…µ~b")
+(merge-rule "æ¨" "한")
+(merge-rule "æ©" "은")
+(merge-rule "æª" "각")
+(merge-rule "æ«" "á„ᅩᆼ")
+(merge-rule "æ¬" "념")
+(merge-rule "æ­" "공")
+(merge-rule "æ¯" "식")
+(merge-rule "æ°" "흡")
+(merge-rule "æ‚" "연")
+(merge-rule "悃" "곤")
+(merge-rule "æ‚„" "á„Žá…©~b")
+(merge-rule "悅" "열")
+(merge-rule "悉" "실")
+(merge-rule "悋" "린")
+(merge-rule "悌" "제~b")
+(merge-rule "æ‚" "한")
+(merge-rule "æ‚" "협")
+(merge-rule "悒" "읍")
+(merge-rule "æ‚”" "á„’á…¬~b")
+(merge-rule "æ‚•" "á„’á…´~b")
+(merge-rule "æ‚–" "á„‘á…¢~b")
+(merge-rule "悗" "문")
+(merge-rule "悚" "송")
+(merge-rule "悛" "전")
+(merge-rule "æ‚Ÿ" "á„‹á…©~b")
+(merge-rule "æ‚ " "á„‹á…²~b")
+(merge-rule "悢" "량")
+(merge-rule "患" "환")
+(merge-rule "悤" "총")
+(merge-rule "悧" "리~b")
+(merge-rule "悰" "종")
+(merge-rule "悱" "비~b")
+(merge-rule "悲" "비~b")
+(merge-rule "悳" "덕")
+(merge-rule "æ‚´" "á„Žá…°~b")
+(merge-rule "悵" "창")
+(merge-rule "悶" "민")
+(merge-rule "悸" "계~b")
+(merge-rule "悻" "행")
+(merge-rule "悼" "도~b")
+(merge-rule "悽" "처~b")
+(merge-rule "悾" "공")
+(merge-rule "惄" "녁")
+(merge-rule "情" "정")
+(merge-rule "惆" "추~b")
+(merge-rule "惇" "돈")
+(merge-rule "惉" "첨")
+(merge-rule "惋" "완")
+(merge-rule "æƒ" "람")
+(merge-rule "惑" "혹")
+(merge-rule "惓" "권")
+(merge-rule "惕" "척")
+(merge-rule "惘" "망")
+(merge-rule "惙" "철")
+(merge-rule "惚" "홀")
+(merge-rule "惛" "혼")
+(merge-rule "惜" "석")
+(merge-rule "æƒ" "창")
+(merge-rule "惟" "유~b")
+(merge-rule "惠" "혜~b")
+(merge-rule "惡" "악")
+(merge-rule "惢" "쇄~b")
+(merge-rule "惰" "á„á…¡~b")
+(merge-rule "惱" "뇌~b")
+(merge-rule "惲" "운")
+(merge-rule "想" "상")
+(merge-rule "惴" "췌~b")
+(merge-rule "惶" "황")
+(merge-rule "惷" "준")
+(merge-rule "惸" "경")
+(merge-rule "惹" "야~b")
+(merge-rule "惺" "성")
+(merge-rule "惻" "측")
+(merge-rule "惼" "편")
+(merge-rule "æ„€" "á„Žá…©~b")
+(merge-rule "æ„" "수~b")
+(merge-rule "愃" "선")
+(merge-rule "愆" "건")
+(merge-rule "愈" "유~b")
+(merge-rule "愉" "유~b")
+(merge-rule "æ„" "민")
+(merge-rule "愎" "퍅")
+(merge-rule "æ„" "á„‹á…´~b")
+(merge-rule "愔" "음")
+(merge-rule "愕" "악")
+(merge-rule "æ„š" "á„‹á…®~b")
+(merge-rule "æ„›" "á„‹á…¢~b")
+(merge-rule "愜" "협")
+(merge-rule "感" "감")
+(merge-rule "愧" "괴~b")
+(merge-rule "愬" "소~b")
+(merge-rule "愭" "기~b")
+(merge-rule "愰" "황")
+(merge-rule "愴" "창")
+(merge-rule "愷" "개~b")
+(merge-rule "愼" "신")
+(merge-rule "愾" "개~b")
+(merge-rule "愿" "원")
+(merge-rule "慂" "용")
+(merge-rule "慄" "률")
+(merge-rule "慆" "도~b")
+(merge-rule "慇" "은")
+(merge-rule "慈" "자~b")
+(merge-rule "慊" "겸")
+(merge-rule "æ…‹" "á„á…¢~b")
+(merge-rule "慌" "황")
+(merge-rule "æ…" "온")
+(merge-rule "慒" "종")
+(merge-rule "æ…“" "á„‘á…­~b")
+(merge-rule "慕" "모~b")
+(merge-rule "慘" "참")
+(merge-rule "慙" "참")
+(merge-rule "慚" "참")
+(merge-rule "æ…" "á„ᅳᆨ")
+(merge-rule "æ…Ÿ" "á„ᅩᆼ")
+(merge-rule "æ… " "á„‹á…©~b")
+(merge-rule "慢" "만")
+(merge-rule "慣" "관")
+(merge-rule "慤" "각")
+(merge-rule "æ…§" "á„’á…¨~b")
+(merge-rule "慨" "개~b")
+(merge-rule "慫" "종")
+(merge-rule "æ…®" "á„…á…§~b")
+(merge-rule "æ…°" "á„‹á…±~b")
+(merge-rule "慱" "단")
+(merge-rule "慳" "간")
+(merge-rule "慴" "습")
+(merge-rule "慵" "용")
+(merge-rule "慶" "경")
+(merge-rule "慷" "강")
+(merge-rule "æ…º" "á„…á…®~b")
+(merge-rule "慽" "척")
+(merge-rule "慾" "욕")
+(merge-rule "æ†" "총")
+(merge-rule "憂" "우~b")
+(merge-rule "憃" "용")
+(merge-rule "憊" "비~b")
+(merge-rule "æ†" "교~b")
+(merge-rule "憎" "증")
+(merge-rule "æ†" "련")
+(merge-rule "憑" "빙")
+(merge-rule "憒" "궤~b")
+(merge-rule "憔" "초~b")
+(merge-rule "憖" "은")
+(merge-rule "憘" "희~b")
+(merge-rule "憙" "희~b")
+(merge-rule "憚" "á„ᅡᆫ")
+(merge-rule "憤" "분")
+(merge-rule "憧" "동")
+(merge-rule "憨" "감")
+(merge-rule "憩" "게~b")
+(merge-rule "憫" "민")
+(merge-rule "憬" "경")
+(merge-rule "憮" "무~b")
+(merge-rule "憯" "참")
+(merge-rule "憲" "헌")
+(merge-rule "憶" "억")
+(merge-rule "憸" "섬")
+(merge-rule "憺" "담")
+(merge-rule "憻" "á„ᅡᆫ")
+(merge-rule "憼" "경")
+(merge-rule "憾" "감")
+(merge-rule "懃" "근")
+(merge-rule "懆" "조~b")
+(merge-rule "懇" "간")
+(merge-rule "懈" "해~b")
+(merge-rule "應" "응")
+(merge-rule "懊" "오~b")
+(merge-rule "懋" "무~b")
+(merge-rule "懌" "역")
+(merge-rule "懕" "염")
+(merge-rule "懗" "하~b")
+(merge-rule "懞" "몽")
+(merge-rule "懟" "대~b")
+(merge-rule "懣" "문")
+(merge-rule "懦" "나~b")
+(merge-rule "懲" "징")
+(merge-rule "懶" "나~b")
+(merge-rule "懷" "회~b")
+(merge-rule "懸" "현")
+(merge-rule "懺" "참")
+(merge-rule "懼" "구~b")
+(merge-rule "懽" "환")
+(merge-rule "懾" "섭")
+(merge-rule "懿" "의~b")
+(merge-rule "戀" "련")
+(merge-rule "戇" "당")
+(merge-rule "戈" "과~b")
+(merge-rule "戊" "무~b")
+(merge-rule "戌" "술")
+(merge-rule "æˆ" "수~b")
+(merge-rule "戎" "융")
+(merge-rule "æˆ" "성")
+(merge-rule "我" "아~b")
+(merge-rule "戒" "계~b")
+(merge-rule "戔" "잔")
+(merge-rule "戕" "장")
+(merge-rule "或" "혹")
+(merge-rule "戚" "척")
+(merge-rule "戞" "알")
+(merge-rule "戟" "극")
+(merge-rule "戡" "감")
+(merge-rule "戢" "집")
+(merge-rule "戧" "창")
+(merge-rule "戩" "전")
+(merge-rule "截" "절")
+(merge-rule "戮" "륙")
+(merge-rule "戰" "전")
+(merge-rule "戱" "희~b")
+(merge-rule "戲" "희~b")
+(merge-rule "戳" "착")
+(merge-rule "戴" "대~b")
+(merge-rule "戵" "구~b")
+(merge-rule "戶" "호~b")
+(merge-rule "戹" "액")
+(merge-rule "戾" "려~b")
+(merge-rule "房" "방")
+(merge-rule "所" "소~b")
+(merge-rule "æ‰" "편")
+(merge-rule "扃" "경")
+(merge-rule "扇" "선")
+(merge-rule "扈" "호~b")
+(merge-rule "扉" "비~b")
+(merge-rule "扊" "염")
+(merge-rule "手" "수~b")
+(merge-rule "æ‰" "재~b")
+(merge-rule "扎" "찰")
+(merge-rule "扑" "복")
+(merge-rule "扒" "배~b")
+(merge-rule "打" "á„á…¡~b")
+(merge-rule "扗" "재~b")
+(merge-rule "托" "á„ᅡᆨ")
+(merge-rule "扛" "강")
+(merge-rule "扣" "구~b")
+(merge-rule "扨" "인")
+(merge-rule "扮" "분")
+(merge-rule "扱" "급")
+(merge-rule "扳" "반")
+(merge-rule "扶" "부~b")
+(merge-rule "批" "비~b")
+(merge-rule "扺" "지~b")
+(merge-rule "扼" "액")
+(merge-rule "找" "조~b")
+(merge-rule "承" "승")
+(merge-rule "技" "기~b")
+(merge-rule "抃" "변")
+(merge-rule "抄" "초~b")
+(merge-rule "抆" "문")
+(merge-rule "抉" "결")
+(merge-rule "把" "파~b")
+(merge-rule "抑" "억")
+(merge-rule "抒" "서~b")
+(merge-rule "抔" "부~b")
+(merge-rule "投" "á„á…®~b")
+(merge-rule "抖" "두~b")
+(merge-rule "抗" "항")
+(merge-rule "折" "절")
+(merge-rule "抛" "포~b")
+(merge-rule "抨" "평")
+(merge-rule "披" "피~b")
+(merge-rule "抬" "á„á…¢~b")
+(merge-rule "抱" "포~b")
+(merge-rule "抵" "저~b")
+(merge-rule "抹" "말")
+(merge-rule "押" "압")
+(merge-rule "抽" "추~b")
+(merge-rule "拂" "불")
+(merge-rule "拄" "주~b")
+(merge-rule "担" "단")
+(merge-rule "拆" "á„ᅡᆨ")
+(merge-rule "拇" "무~b")
+(merge-rule "拈" "념")
+(merge-rule "拉" "납")
+(merge-rule "拊" "부~b")
+(merge-rule "拌" "반")
+(merge-rule "æ‹" "박")
+(merge-rule "æ‹" "á„‚á…¡~b")
+(merge-rule "æ‹" "괴~b")
+(merge-rule "拑" "겸")
+(merge-rule "拒" "거~b")
+(merge-rule "拓" "척")
+(merge-rule "拔" "발")
+(merge-rule "æ‹•" "á„á…¡~b")
+(merge-rule "æ‹–" "á„á…¡~b")
+(merge-rule "æ‹—" "á„‹á…­~b")
+(merge-rule "拘" "구~b")
+(merge-rule "拙" "졸")
+(merge-rule "æ‹›" "á„Žá…©~b")
+(merge-rule "拜" "배~b")
+(merge-rule "括" "괄")
+(merge-rule "拭" "식")
+(merge-rule "拮" "길")
+(merge-rule "拯" "증")
+(merge-rule "拱" "공")
+(merge-rule "拳" "권")
+(merge-rule "拵" "존")
+(merge-rule "拶" "찰")
+(merge-rule "拷" "고~b")
+(merge-rule "拽" "예~b")
+(merge-rule "拾" "습")
+(merge-rule "æ‹¿" "á„‚á…¡~b")
+(merge-rule "æŒ" "지~b")
+(merge-rule "挂" "괘~b")
+(merge-rule "指" "지~b")
+(merge-rule "按" "안")
+(merge-rule "挌" "격")
+(merge-rule "æŒ" "á„‚á…¡~b")
+(merge-rule "挑" "도~b")
+(merge-rule "挒" "렬")
+(merge-rule "挨" "애~b")
+(merge-rule "挪" "나~b")
+(merge-rule "挫" "좌~b")
+(merge-rule "振" "진")
+(merge-rule "挹" "읍")
+(merge-rule "挺" "정")
+(merge-rule "挻" "연")
+(merge-rule "挽" "만")
+(merge-rule "挾" "협")
+(merge-rule "æ‚" "á„‹á…©~b")
+(merge-rule "æƒ" "군")
+(merge-rule "æ„" "구~b")
+(merge-rule "æ†" "곤")
+(merge-rule "æ‰" "착")
+(merge-rule "æŒ" "팔")
+(merge-rule "æ" "한")
+(merge-rule "æŽ" "소~b")
+(merge-rule "æ" "날")
+(merge-rule "æ" "연")
+(merge-rule "æ•" "á„‘á…©~b")
+(merge-rule "æ—" "척")
+(merge-rule "æ§" "봉")
+(merge-rule "æ¨" "사~b")
+(merge-rule "æ©" "렬")
+(merge-rule "æ«" "문")
+(merge-rule "æ®" "거~b")
+(merge-rule "æ±" "á„‹á…¢~b")
+(merge-rule "æ²" "권")
+(merge-rule "æ¶" "á„Žá…®~b")
+(merge-rule "æ·" "첩")
+(merge-rule "æº" "날")
+(merge-rule "æ»" "념")
+(merge-rule "æ¿" "서~b")
+(merge-rule "掀" "흔")
+(merge-rule "掃" "소~b")
+(merge-rule "掄" "륜")
+(merge-rule "掇" "철")
+(merge-rule "授" "수~b")
+(merge-rule "掉" "도~b")
+(merge-rule "掊" "부~b")
+(merge-rule "掌" "장")
+(merge-rule "掎" "기~b")
+(merge-rule "æŽ" "도~b")
+(merge-rule "排" "배~b")
+(merge-rule "掖" "액")
+(merge-rule "掘" "굴")
+(merge-rule "掛" "괘~b")
+(merge-rule "掜" "예~b")
+(merge-rule "掟" "정")
+(merge-rule "掠" "략")
+(merge-rule "採" "채~b")
+(merge-rule "探" "á„ᅡᆷ")
+(merge-rule "接" "접")
+(merge-rule "控" "공")
+(merge-rule "推" "추~b")
+(merge-rule "掩" "엄")
+(merge-rule "措" "조~b")
+(merge-rule "掬" "국")
+(merge-rule "掾" "연")
+(merge-rule "æ€" "간")
+(merge-rule "æƒ" "전")
+(merge-rule "æ„" "á„‹á…²~b")
+(merge-rule "æ†" "규~b")
+(merge-rule "æ‰" "á„‹á…²~b")
+(merge-rule "æ" "묘~b")
+(merge-rule "æ" "제~b")
+(merge-rule "æ–" "읍")
+(merge-rule "æš" "양")
+(merge-rule "æ›" "환")
+(merge-rule "æŸ" "서~b")
+(merge-rule "æ " "알")
+(merge-rule "æ¡" "악")
+(merge-rule "æ£" "á„Žá…°~b")
+(merge-rule "æ©" "개~b")
+(merge-rule "æ«" "á„Žá…®~b")
+(merge-rule "æ­" "게~b")
+(merge-rule "æ®" "á„’á…±~b")
+(merge-rule "æ²" "설")
+(merge-rule "æ´" "원")
+(merge-rule "æµ" "건")
+(merge-rule "æ¶" "á„‹á…£~b")
+(merge-rule "æ·" "삽")
+(merge-rule "æ†" "구~b")
+(merge-rule "æ‰" "각")
+(merge-rule "æ" "손")
+(merge-rule "æ" "박")
+(merge-rule "æ’" "방")
+(merge-rule "æ”" "소~b")
+(merge-rule "æ–" "á„‹á…­~b")
+(merge-rule "æ—" "도~b")
+(merge-rule "æœ" "수~b")
+(merge-rule "æ¢" "진")
+(merge-rule "æ¤" "액")
+(merge-rule "æ¥" "á„Žá…®~b")
+(merge-rule "æ¨" "á„ᅡᆸ")
+(merge-rule "æª" "당")
+(merge-rule "æ«" "반")
+(merge-rule "æ¬" "반")
+(merge-rule "æ­" "á„ᅡᆸ")
+(merge-rule "æ¯" "도~b")
+(merge-rule "æ°" "골")
+(merge-rule "æ¶" "창")
+(merge-rule "æº" "á„’á…²~b")
+(merge-rule "æ¾" "착")
+(merge-rule "摘" "적")
+(merge-rule "摠" "총")
+(merge-rule "摧" "최~b")
+(merge-rule "摩" "마~b")
+(merge-rule "摭" "척")
+(merge-rule "摯" "지~b")
+(merge-rule "摳" "구~b")
+(merge-rule "摸" "모~b")
+(merge-rule "摹" "모~b")
+(merge-rule "摺" "접")
+(merge-rule "摻" "섬")
+(merge-rule "摽" "표~b")
+(merge-rule "撅" "궤~b")
+(merge-rule "æ’ˆ" "á„…á…©~b")
+(merge-rule "æ’" "á„ᅢᆼ")
+(merge-rule "æ’‘" "á„ᅢᆼ")
+(merge-rule "撒" "살")
+(merge-rule "æ’“" "á„‹á…­~b")
+(merge-rule "撕" "서~b")
+(merge-rule "撙" "준")
+(merge-rule "撚" "년")
+(merge-rule "æ’" "á„’á…±~b")
+(merge-rule "撞" "당")
+(merge-rule "撟" "교~b")
+(merge-rule "撤" "철")
+(merge-rule "撥" "발")
+(merge-rule "æ’©" "á„…á…­~b")
+(merge-rule "撫" "무~b")
+(merge-rule "æ’­" "á„‘á…¡~b")
+(merge-rule "撮" "촬")
+(merge-rule "撰" "찬")
+(merge-rule "撲" "박")
+(merge-rule "撻" "달")
+(merge-rule "撼" "감")
+(merge-rule "撾" "과~b")
+(merge-rule "撿" "검")
+(merge-rule "æ“" "옹")
+(merge-rule "æ“„" "á„‚á…©~b")
+(merge-rule "擅" "천")
+(merge-rule "擇" "á„ᅢᆨ")
+(merge-rule "擉" "착")
+(merge-rule "擊" "격")
+(merge-rule "æ“" "조~b")
+(merge-rule "擎" "경")
+(merge-rule "æ“" "환")
+(merge-rule "擒" "금")
+(merge-rule "擔" "담")
+(merge-rule "æ“•" "á„’á…²~b")
+(merge-rule "擗" "벽")
+(merge-rule "擘" "벽")
+(merge-rule "據" "거~b")
+(merge-rule "擠" "제~b")
+(merge-rule "擡" "대~b")
+(merge-rule "æ“¢" "á„ᅡᆨ")
+(merge-rule "擣" "도~b")
+(merge-rule "擥" "람")
+(merge-rule "擦" "찰")
+(merge-rule "擧" "거~b")
+(merge-rule "擬" "의~b")
+(merge-rule "æ“­" "á„’á…ª~b")
+(merge-rule "擯" "빈")
+(merge-rule "擱" "각")
+(merge-rule "擲" "척")
+(merge-rule "擴" "확")
+(merge-rule "擺" "파~b")
+(merge-rule "擾" "요~b")
+(merge-rule "攀" "반")
+(merge-rule "攂" "뢰~b")
+(merge-rule "攄" "á„á…¥~b")
+(merge-rule "攇" "헌")
+(merge-rule "攊" "력")
+(merge-rule "æ”" "롱")
+(merge-rule "攔" "란")
+(merge-rule "攘" "양")
+(merge-rule "攙" "참")
+(merge-rule "æ”" "섭")
+(merge-rule "攢" "찬")
+(merge-rule "攣" "련")
+(merge-rule "攤" "á„ᅡᆫ")
+(merge-rule "攪" "교~b")
+(merge-rule "攫" "확")
+(merge-rule "攬" "람")
+(merge-rule "支" "지~b")
+(merge-rule "攲" "기~b")
+(merge-rule "收" "수~b")
+(merge-rule "攷" "고~b")
+(merge-rule "攸" "유~b")
+(merge-rule "改" "개~b")
+(merge-rule "攻" "공")
+(merge-rule "攽" "반")
+(merge-rule "放" "방")
+(merge-rule "政" "정")
+(merge-rule "故" "고~b")
+(merge-rule "效" "효~b")
+(merge-rule "敉" "미~b")
+(merge-rule "æ•" "서~b")
+(merge-rule "敎" "교~b")
+(merge-rule "æ•" "민")
+(merge-rule "救" "구~b")
+(merge-rule "æ•”" "á„‹á…¥~b")
+(merge-rule "敕" "칙")
+(merge-rule "æ•–" "á„‹á…©~b")
+(merge-rule "æ•—" "á„‘á…¢~b")
+(merge-rule "æ•" "á„‘á…¨~b")
+(merge-rule "敞" "창")
+(merge-rule "敢" "감")
+(merge-rule "散" "산")
+(merge-rule "敦" "돈")
+(merge-rule "敬" "경")
+(merge-rule "敭" "양")
+(merge-rule "敲" "고~b")
+(merge-rule "整" "정")
+(merge-rule "敵" "적")
+(merge-rule "敷" "부~b")
+(merge-rule "數" "삭")
+(merge-rule "敾" "선")
+(merge-rule "æ–" "두~b")
+(merge-rule "斂" "렴")
+(merge-rule "æ–ƒ" "á„‘á…¨~b")
+(merge-rule "æ–…" "á„’á…­~b")
+(merge-rule "文" "문")
+(merge-rule "斌" "빈")
+(merge-rule "æ–" "비~b")
+(merge-rule "斑" "반")
+(merge-rule "斗" "두~b")
+(merge-rule "æ–™" "á„…á…­~b")
+(merge-rule "斛" "곡")
+(merge-rule "斜" "사~b")
+(merge-rule "æ–" "가~b")
+(merge-rule "斟" "짐")
+(merge-rule "斡" "알")
+(merge-rule "斤" "근")
+(merge-rule "斥" "척")
+(merge-rule "斧" "부~b")
+(merge-rule "斫" "작")
+(merge-rule "斬" "참")
+(merge-rule "斯" "사~b")
+(merge-rule "新" "신")
+(merge-rule "斱" "작")
+(merge-rule "斲" "착")
+(merge-rule "斷" "단")
+(merge-rule "方" "방")
+(merge-rule "æ–¼" "á„‹á…¥~b")
+(merge-rule "施" "시~b")
+(merge-rule "æ–¿" "á„‹á…²~b")
+(merge-rule "æ—" "방")
+(merge-rule "旂" "기~b")
+(merge-rule "旃" "전")
+(merge-rule "旄" "모~b")
+(merge-rule "æ—…" "á„…á…§~b")
+(merge-rule "æ—†" "á„‘á…¢~b")
+(merge-rule "旊" "방")
+(merge-rule "旋" "선")
+(merge-rule "旌" "정")
+(merge-rule "æ—" "족")
+(merge-rule "æ—’" "á„…á…²~b")
+(merge-rule "旗" "기~b")
+(merge-rule "无" "무~b")
+(merge-rule "旣" "기~b")
+(merge-rule "日" "일")
+(merge-rule "旦" "단")
+(merge-rule "旨" "지~b")
+(merge-rule "早" "조~b")
+(merge-rule "旬" "순")
+(merge-rule "旭" "욱")
+(merge-rule "旱" "한")
+(merge-rule "旲" "대~b")
+(merge-rule "æ—´" "á„‹á…®~b")
+(merge-rule "旺" "왕")
+(merge-rule "旻" "민")
+(merge-rule "旼" "민")
+(merge-rule "旽" "돈")
+(merge-rule "æ—¿" "á„‹á…©~b")
+(merge-rule "昀" "윤")
+(merge-rule "昃" "측")
+(merge-rule "昆" "곤")
+(merge-rule "昇" "승")
+(merge-rule "昉" "방")
+(merge-rule "昊" "호~b")
+(merge-rule "昌" "창")
+(merge-rule "明" "명")
+(merge-rule "æ˜" "혼")
+(merge-rule "æ˜" "분")
+(merge-rule "昑" "금")
+(merge-rule "易" "역")
+(merge-rule "昔" "석")
+(merge-rule "昕" "흔")
+(merge-rule "昛" "거~b")
+(merge-rule "昞" "병")
+(merge-rule "星" "성")
+(merge-rule "映" "영")
+(merge-rule "昡" "현")
+(merge-rule "昤" "령")
+(merge-rule "春" "춘")
+(merge-rule "昧" "매~b")
+(merge-rule "昨" "작")
+(merge-rule "昫" "구~b")
+(merge-rule "昭" "소~b")
+(merge-rule "是" "시~b")
+(merge-rule "昰" "하~b")
+(merge-rule "昱" "욱")
+(merge-rule "昴" "묘~b")
+(merge-rule "昵" "닉")
+(merge-rule "昶" "창")
+(merge-rule "昷" "온")
+(merge-rule "昺" "병")
+(merge-rule "昻" "앙")
+(merge-rule "æ™" "조~b")
+(merge-rule "時" "시~b")
+(merge-rule "晃" "황")
+(merge-rule "晄" "황")
+(merge-rule "晈" "교~b")
+(merge-rule "晉" "진")
+(merge-rule "晋" "진")
+(merge-rule "晌" "상")
+(merge-rule "晎" "홍")
+(merge-rule "æ™" "안")
+(merge-rule "晙" "준")
+(merge-rule "晛" "현")
+(merge-rule "æ™" "주~b")
+(merge-rule "晞" "희~b")
+(merge-rule "晟" "성")
+(merge-rule "晡" "포~b")
+(merge-rule "晢" "절")
+(merge-rule "晤" "오~b")
+(merge-rule "晥" "환")
+(merge-rule "晦" "회~b")
+(merge-rule "晧" "호~b")
+(merge-rule "晨" "신")
+(merge-rule "晩" "만")
+(merge-rule "晫" "á„ᅡᆨ")
+(merge-rule "晬" "수~b")
+(merge-rule "普" "보~b")
+(merge-rule "景" "경")
+(merge-rule "晰" "석")
+(merge-rule "晳" "석")
+(merge-rule "晴" "청")
+(merge-rule "晶" "정")
+(merge-rule "晷" "귀~b")
+(merge-rule "晸" "정")
+(merge-rule "智" "지~b")
+(merge-rule "晻" "암")
+(merge-rule "暄" "훤")
+(merge-rule "暇" "가~b")
+(merge-rule "暈" "운")
+(merge-rule "暉" "휘~b")
+(merge-rule "暋" "민")
+(merge-rule "暌" "규~b")
+(merge-rule "暎" "영")
+(merge-rule "æš" "á„‹á…±~b")
+(merge-rule "暑" "서~b")
+(merge-rule "暖" "난")
+(merge-rule "暗" "암")
+(merge-rule "暘" "양")
+(merge-rule "æš" "명")
+(merge-rule "暞" "교~b")
+(merge-rule "暠" "고~b")
+(merge-rule "暢" "창")
+(merge-rule "暣" "기~b")
+(merge-rule "暫" "잠")
+(merge-rule "暬" "설")
+(merge-rule "暮" "모~b")
+(merge-rule "暱" "닉")
+(merge-rule "暲" "장")
+(merge-rule "æš³" "á„’á…¨~b")
+(merge-rule "æš´" "á„‘á…©~b")
+(merge-rule "暵" "한")
+(merge-rule "暸" "료~b")
+(merge-rule "暹" "섬")
+(merge-rule "暻" "경")
+(merge-rule "暾" "돈")
+(merge-rule "æš¿" "á„’á…´~b")
+(merge-rule "曀" "에~b")
+(merge-rule "æ›" "기~b")
+(merge-rule "曄" "엽")
+(merge-rule "曅" "엽")
+(merge-rule "曆" "력")
+(merge-rule "曇" "담")
+(merge-rule "曉" "효~b")
+(merge-rule "曓" "포~b")
+(merge-rule "æ›–" "á„‹á…¢~b")
+(merge-rule "曙" "서~b")
+(merge-rule "曚" "몽")
+(merge-rule "曛" "훈")
+(merge-rule "曜" "요~b")
+(merge-rule "æ›" "폭")
+(merge-rule "曠" "광")
+(merge-rule "曣" "연")
+(merge-rule "曦" "희~b")
+(merge-rule "曨" "롱")
+(merge-rule "曩" "낭")
+(merge-rule "曪" "라~b")
+(merge-rule "曬" "쇄~b")
+(merge-rule "曮" "엄")
+(merge-rule "曯" "촉")
+(merge-rule "曰" "왈")
+(merge-rule "曲" "곡")
+(merge-rule "曳" "예~b")
+(merge-rule "更" "갱")
+(merge-rule "曷" "갈")
+(merge-rule "書" "서~b")
+(merge-rule "曹" "조~b")
+(merge-rule "曺" "조~b")
+(merge-rule "曼" "만")
+(merge-rule "曾" "증")
+(merge-rule "替" "체~b")
+(merge-rule "最" "최~b")
+(merge-rule "會" "회~b")
+(merge-rule "朅" "걸")
+(merge-rule "月" "월")
+(merge-rule "有" "유~b")
+(merge-rule "朋" "붕")
+(merge-rule "朌" "반")
+(merge-rule "æœ" "복")
+(merge-rule "朔" "삭")
+(merge-rule "朕" "짐")
+(merge-rule "朗" "낭")
+(merge-rule "望" "망")
+(merge-rule "æœ" "조~b")
+(merge-rule "朞" "기~b")
+(merge-rule "期" "기~b")
+(merge-rule "朣" "동")
+(merge-rule "朦" "몽")
+(merge-rule "朧" "롱")
+(merge-rule "木" "목")
+(merge-rule "未" "미~b")
+(merge-rule "末" "말")
+(merge-rule "本" "본")
+(merge-rule "札" "찰")
+(merge-rule "朮" "출")
+(merge-rule "朱" "주~b")
+(merge-rule "朳" "팔")
+(merge-rule "朴" "박")
+(merge-rule "朶" "á„á…¡~b")
+(merge-rule "机" "궤~b")
+(merge-rule "朽" "후~b")
+(merge-rule "æ…" "á„‹á…®~b")
+(merge-rule "æ†" "간")
+(merge-rule "æ‰" "삼")
+(merge-rule "æŽ" "á„…á…µ~b")
+(merge-rule "æ" "행")
+(merge-rule "æ" "재~b")
+(merge-rule "æ‘" "촌")
+(merge-rule "æ“" "á„‘á…­~b")
+(merge-rule "æ–" "장")
+(merge-rule "æœ" "두~b")
+(merge-rule "æž" "기~b")
+(merge-rule "æŸ" "속")
+(merge-rule "æ " "강")
+(merge-rule "æª" "á„Žá…©~b")
+(merge-rule "æ¬" "원")
+(merge-rule "æ­" "항")
+(merge-rule "æ¯" "배~b")
+(merge-rule "æ°" "걸")
+(merge-rule "æ±" "동")
+(merge-rule "æ²" "고~b")
+(merge-rule "æ³" "묘~b")
+(merge-rule "æµ" "저~b")
+(merge-rule "æ·" "á„‘á…¡~b")
+(merge-rule "æ»" "á„‚á…²~b")
+(merge-rule "æ¼" "저~b")
+(merge-rule "æ¾" "송")
+(merge-rule "æ¿" "판")
+(merge-rule "枇" "비~b")
+(merge-rule "枉" "왕")
+(merge-rule "枋" "방")
+(merge-rule "枌" "분")
+(merge-rule "æž" "남")
+(merge-rule "æž" "석")
+(merge-rule "枓" "두~b")
+(merge-rule "枕" "침")
+(merge-rule "林" "림")
+(merge-rule "枘" "예~b")
+(merge-rule "æž™" "á„‹á…ª~b")
+(merge-rule "枚" "매~b")
+(merge-rule "果" "과~b")
+(merge-rule "æž" "지~b")
+(merge-rule "枯" "고~b")
+(merge-rule "枰" "평")
+(merge-rule "枲" "시~b")
+(merge-rule "枳" "지~b")
+(merge-rule "架" "가~b")
+(merge-rule "枷" "가~b")
+(merge-rule "枸" "구~b")
+(merge-rule "枾" "시~b")
+(merge-rule "æŸ" "á„á…¡~b")
+(merge-rule "柄" "병")
+(merge-rule "柅" "니~b")
+(merge-rule "柊" "종")
+(merge-rule "æŸ" "백")
+(merge-rule "æŸ" "모~b")
+(merge-rule "柑" "감")
+(merge-rule "柒" "칠")
+(merge-rule "染" "염")
+(merge-rule "柔" "유~b")
+(merge-rule "柗" "송")
+(merge-rule "柘" "자~b")
+(merge-rule "柙" "합")
+(merge-rule "柚" "유~b")
+(merge-rule "æŸ" "á„ᅡᆨ")
+(merge-rule "柞" "작")
+(merge-rule "柟" "남")
+(merge-rule "柢" "저~b")
+(merge-rule "柩" "구~b")
+(merge-rule "柬" "간")
+(merge-rule "柯" "가~b")
+(merge-rule "柰" "내~b")
+(merge-rule "柱" "주~b")
+(merge-rule "柳" "류~b")
+(merge-rule "柴" "시~b")
+(merge-rule "柵" "책")
+(merge-rule "柶" "사~b")
+(merge-rule "柹" "시~b")
+(merge-rule "査" "사~b")
+(merge-rule "柾" "정")
+(merge-rule "æ ƒ" "á„’á…¬~b")
+(merge-rule "栒" "순")
+(merge-rule "栓" "전")
+(merge-rule "栖" "서~b")
+(merge-rule "栗" "률")
+(merge-rule "æ " "괄")
+(merge-rule "栞" "간")
+(merge-rule "校" "교~b")
+(merge-rule "栢" "백")
+(merge-rule "株" "주~b")
+(merge-rule "æ ®" "á„‹á…µ~b")
+(merge-rule "栯" "욱")
+(merge-rule "栱" "공")
+(merge-rule "栲" "고~b")
+(merge-rule "栴" "전")
+(merge-rule "核" "핵")
+(merge-rule "根" "근")
+(merge-rule "栻" "식")
+(merge-rule "格" "격")
+(merge-rule "栽" "재~b")
+(merge-rule "桀" "걸")
+(merge-rule "æ¡" "항")
+(merge-rule "桂" "계~b")
+(merge-rule "桃" "도~b")
+(merge-rule "桄" "광")
+(merge-rule "框" "광")
+(merge-rule "案" "안")
+(merge-rule "桉" "안")
+(merge-rule "桎" "질")
+(merge-rule "æ¡" "동")
+(merge-rule "桑" "상")
+(merge-rule "桓" "환")
+(merge-rule "桔" "길")
+(merge-rule "桭" "진")
+(merge-rule "桯" "정")
+(merge-rule "桴" "부~b")
+(merge-rule "桶" "á„ᅩᆼ")
+(merge-rule "桷" "각")
+(merge-rule "桾" "군")
+(merge-rule "桿" "간")
+(merge-rule "æ¢" "량")
+(merge-rule "梃" "정")
+(merge-rule "梅" "매~b")
+(merge-rule "梆" "방")
+(merge-rule "æ¢" "곡")
+(merge-rule "梓" "재~b")
+(merge-rule "梔" "치~b")
+(merge-rule "梗" "경")
+(merge-rule "梛" "나~b")
+(merge-rule "æ¢" "조~b")
+(merge-rule "梟" "효~b")
+(merge-rule "梠" "려~b")
+(merge-rule "梡" "완")
+(merge-rule "梢" "초~b")
+(merge-rule "梣" "심")
+(merge-rule "梧" "오~b")
+(merge-rule "梨" "리~b")
+(merge-rule "梭" "사~b")
+(merge-rule "梯" "제~b")
+(merge-rule "械" "계~b")
+(merge-rule "梱" "곤")
+(merge-rule "梳" "소~b")
+(merge-rule "梵" "범")
+(merge-rule "梶" "미~b")
+(merge-rule "棄" "기~b")
+(merge-rule "棅" "병")
+(merge-rule "棉" "면")
+(merge-rule "棊" "기~b")
+(merge-rule "棋" "기~b")
+(merge-rule "棌" "채~b")
+(merge-rule "æ£" "곤")
+(merge-rule "æ£" "비~b")
+(merge-rule "棒" "봉")
+(merge-rule "棕" "종")
+(merge-rule "棖" "정")
+(merge-rule "棗" "조~b")
+(merge-rule "棘" "극")
+(merge-rule "棚" "붕")
+(merge-rule "棟" "동")
+(merge-rule "棠" "당")
+(merge-rule "棣" "체~b")
+(merge-rule "棧" "잔")
+(merge-rule "棨" "계~b")
+(merge-rule "棬" "권")
+(merge-rule "森" "삼")
+(merge-rule "棲" "서~b")
+(merge-rule "棹" "도~b")
+(merge-rule "棺" "관")
+(merge-rule "棻" "분")
+(merge-rule "棼" "분")
+(merge-rule "椀" "완")
+(merge-rule "æ¤" "곽")
+(merge-rule "椄" "접")
+(merge-rule "椅" "의~b")
+(merge-rule "椋" "량")
+(merge-rule "æ¤" "식")
+(merge-rule "椎" "추~b")
+(merge-rule "椑" "비~b")
+(merge-rule "椒" "초~b")
+(merge-rule "椙" "창")
+(merge-rule "椧" "명")
+(merge-rule "椰" "야~b")
+(merge-rule "椴" "단")
+(merge-rule "椶" "종")
+(merge-rule "椹" "침")
+(merge-rule "椽" "연")
+(merge-rule "椿" "춘")
+(merge-rule "楂" "사~b")
+(merge-rule "楊" "양")
+(merge-rule "æ¥" "규~b")
+(merge-rule "楓" "풍")
+(merge-rule "楔" "설")
+(merge-rule "楕" "á„á…¡~b")
+(merge-rule "楗" "건")
+(merge-rule "楙" "무~b")
+(merge-rule "楚" "초~b")
+(merge-rule "æ¥" "련")
+(merge-rule "楞" "릉")
+(merge-rule "楠" "남")
+(merge-rule "楡" "유~b")
+(merge-rule "楢" "유~b")
+(merge-rule "楣" "미~b")
+(merge-rule "楥" "원")
+(merge-rule "楨" "정")
+(merge-rule "楪" "접")
+(merge-rule "楫" "즙")
+(merge-rule "楬" "갈")
+(merge-rule "業" "업")
+(merge-rule "楮" "저~b")
+(merge-rule "楯" "순")
+(merge-rule "楳" "매~b")
+(merge-rule "極" "극")
+(merge-rule "楷" "해~b")
+(merge-rule "楸" "추~b")
+(merge-rule "楹" "영")
+(merge-rule "榎" "가~b")
+(merge-rule "榑" "부~b")
+(merge-rule "榔" "랑")
+(merge-rule "榕" "용")
+(merge-rule "榘" "구~b")
+(merge-rule "榛" "진")
+(merge-rule "榜" "방")
+(merge-rule "榟" "재~b")
+(merge-rule "榤" "걸")
+(merge-rule "榥" "황")
+(merge-rule "榦" "간")
+(merge-rule "榧" "비~b")
+(merge-rule "榭" "사~b")
+(merge-rule "榮" "영")
+(merge-rule "榰" "지~b")
+(merge-rule "榱" "최~b")
+(merge-rule "榴" "류~b")
+(merge-rule "榷" "교~b")
+(merge-rule "榻" "á„ᅡᆸ")
+(merge-rule "榼" "합")
+(merge-rule "榾" "골")
+(merge-rule "槀" "고~b")
+(merge-rule "æ§" "고~b")
+(merge-rule "槃" "반")
+(merge-rule "槇" "전")
+(merge-rule "槊" "삭")
+(merge-rule "構" "구~b")
+(merge-rule "槌" "á„á…¬~b")
+(merge-rule "æ§" "창")
+(merge-rule "槎" "차~b")
+(merge-rule "æ§" "괴~b")
+(merge-rule "槓" "공")
+(merge-rule "槥" "혜~b")
+(merge-rule "槦" "용")
+(merge-rule "槧" "참")
+(merge-rule "槨" "곽")
+(merge-rule "槩" "개~b")
+(merge-rule "槪" "개~b")
+(merge-rule "槭" "색")
+(merge-rule "槲" "곡")
+(merge-rule "槹" "고~b")
+(merge-rule "槻" "규~b")
+(merge-rule "槽" "조~b")
+(merge-rule "槿" "근")
+(merge-rule "樀" "적")
+(merge-rule "樂" "낙")
+(merge-rule "樅" "종")
+(merge-rule "樊" "번")
+(merge-rule "樋" "á„ᅩᆼ")
+(merge-rule "樑" "량")
+(merge-rule "樒" "밀")
+(merge-rule "樓" "누~b")
+(merge-rule "樔" "소~b")
+(merge-rule "樗" "저~b")
+(merge-rule "標" "표~b")
+(merge-rule "樛" "규~b")
+(merge-rule "樞" "추~b")
+(merge-rule "樟" "장")
+(merge-rule "模" "모~b")
+(merge-rule "樣" "양")
+(merge-rule "樫" "견")
+(merge-rule "樵" "초~b")
+(merge-rule "樸" "박")
+(merge-rule "樹" "수~b")
+(merge-rule "樺" "화~b")
+(merge-rule "樻" "궤~b")
+(merge-rule "樽" "준")
+(merge-rule "橃" "벌")
+(merge-rule "橄" "감")
+(merge-rule "橇" "취~b")
+(merge-rule "橈" "요~b")
+(merge-rule "æ©Š" "á„…á…²~b")
+(merge-rule "橋" "교~b")
+(merge-rule "æ©" "á„ᅡᆨ")
+(merge-rule "橒" "운")
+(merge-rule "橓" "순")
+(merge-rule "橘" "귤")
+(merge-rule "橙" "등")
+(merge-rule "橚" "숙")
+(merge-rule "機" "기~b")
+(merge-rule "橡" "상")
+(merge-rule "æ©¢" "á„á…¡~b")
+(merge-rule "橦" "동")
+(merge-rule "橫" "횡")
+(merge-rule "橵" "산")
+(merge-rule "橿" "강")
+(merge-rule "檀" "단")
+(merge-rule "檄" "격")
+(merge-rule "檉" "정")
+(merge-rule "æª" "억")
+(merge-rule "檎" "금")
+(merge-rule "æª" "첨")
+(merge-rule "檔" "당")
+(merge-rule "檗" "벽")
+(merge-rule "檜" "회~b")
+(merge-rule "æª" "즙")
+(merge-rule "檟" "가~b")
+(merge-rule "檠" "경")
+(merge-rule "檢" "검")
+(merge-rule "檣" "장")
+(merge-rule "檮" "도~b")
+(merge-rule "檳" "빈")
+(merge-rule "檶" "염")
+(merge-rule "檻" "함")
+(merge-rule "檼" "은")
+(merge-rule "檿" "염")
+(merge-rule "櫂" "도~b")
+(merge-rule "櫃" "궤~b")
+(merge-rule "æ«“" "á„‚á…©~b")
+(merge-rule "æ«š" "á„…á…§~b")
+(merge-rule "櫛" "즐")
+(merge-rule "櫜" "고~b")
+(merge-rule "æ«" "독")
+(merge-rule "櫞" "연")
+(merge-rule "櫟" "력")
+(merge-rule "櫪" "력")
+(merge-rule "櫬" "친")
+(merge-rule "櫶" "헌")
+(merge-rule "櫻" "앵")
+(merge-rule "櫼" "첨")
+(merge-rule "欂" "박")
+(merge-rule "欃" "참")
+(merge-rule "欄" "난")
+(merge-rule "權" "권")
+(merge-rule "欌" "장")
+(merge-rule "欑" "찬")
+(merge-rule "欒" "란")
+(merge-rule "欖" "람")
+(merge-rule "欞" "령")
+(merge-rule "欠" "흠")
+(merge-rule "次" "차~b")
+(merge-rule "欣" "흔")
+(merge-rule "欬" "해~b")
+(merge-rule "欲" "욕")
+(merge-rule "欷" "희~b")
+(merge-rule "欸" "애~b")
+(merge-rule "欹" "의~b")
+(merge-rule "欺" "기~b")
+(merge-rule "欻" "훌")
+(merge-rule "欽" "흠")
+(merge-rule "款" "관")
+(merge-rule "欿" "감")
+(merge-rule "歃" "삽")
+(merge-rule "歆" "흠")
+(merge-rule "歇" "헐")
+(merge-rule "歉" "겸")
+(merge-rule "歌" "가~b")
+(merge-rule "æ­Ž" "á„ᅡᆫ")
+(merge-rule "æ­" "구~b")
+(merge-rule "æ­”" "á„’á…¥~b")
+(merge-rule "歙" "흡")
+(merge-rule "歚" "선")
+(merge-rule "歛" "감")
+(merge-rule "æ­Ÿ" "á„‹á…§~b")
+(merge-rule "歠" "철")
+(merge-rule "歡" "환")
+(merge-rule "止" "지~b")
+(merge-rule "正" "정")
+(merge-rule "æ­¤" "á„Žá…¡~b")
+(merge-rule "步" "보~b")
+(merge-rule "武" "무~b")
+(merge-rule "歧" "기~b")
+(merge-rule "æ­ª" "á„‹á…«~b")
+(merge-rule "歲" "세~b")
+(merge-rule "歷" "력")
+(merge-rule "歸" "귀~b")
+(merge-rule "死" "사~b")
+(merge-rule "歿" "몰")
+(merge-rule "殀" "요~b")
+(merge-rule "殂" "조~b")
+(merge-rule "殃" "앙")
+(merge-rule "殄" "진")
+(merge-rule "殆" "á„á…¢~b")
+(merge-rule "殉" "순")
+(merge-rule "殊" "수~b")
+(merge-rule "æ®" "á„‘á…­~b")
+(merge-rule "殑" "긍")
+(merge-rule "殖" "식")
+(merge-rule "殘" "잔")
+(merge-rule "殞" "운")
+(merge-rule "殢" "체~b")
+(merge-rule "殤" "상")
+(merge-rule "殫" "á„ᅡᆫ")
+(merge-rule "殭" "강")
+(merge-rule "殮" "렴")
+(merge-rule "殯" "빈")
+(merge-rule "殲" "섬")
+(merge-rule "殳" "수~b")
+(merge-rule "段" "단")
+(merge-rule "殷" "은")
+(merge-rule "殺" "살")
+(merge-rule "殼" "각")
+(merge-rule "殽" "효~b")
+(merge-rule "殿" "전")
+(merge-rule "æ¯" "á„’á…°~b")
+(merge-rule "毄" "격")
+(merge-rule "毅" "의~b")
+(merge-rule "毆" "구~b")
+(merge-rule "毋" "무~b")
+(merge-rule "æ¯" "모~b")
+(merge-rule "æ¯" "매~b")
+(merge-rule "毒" "독")
+(merge-rule "毓" "육")
+(merge-rule "比" "비~b")
+(merge-rule "毖" "비~b")
+(merge-rule "毗" "비~b")
+(merge-rule "毘" "비~b")
+(merge-rule "毚" "참")
+(merge-rule "毛" "모~b")
+(merge-rule "毫" "호~b")
+(merge-rule "毬" "구~b")
+(merge-rule "毯" "담")
+(merge-rule "毳" "취~b")
+(merge-rule "毿" "산")
+(merge-rule "氅" "창")
+(merge-rule "氈" "전")
+(merge-rule "æ°" "á„Šá…µ~b")
+(merge-rule "æ°" "저~b")
+(merge-rule "民" "민")
+(merge-rule "氓" "맹")
+(merge-rule "氛" "분")
+(merge-rule "氣" "기~b")
+(merge-rule "氤" "인")
+(merge-rule "氳" "온")
+(merge-rule "水" "수~b")
+(merge-rule "氷" "빙")
+(merge-rule "永" "영")
+(merge-rule "氾" "범")
+(merge-rule "氿" "궤~b")
+(merge-rule "汀" "정")
+(merge-rule "æ±" "즙")
+(merge-rule "求" "구~b")
+(merge-rule "汃" "팔")
+(merge-rule "汋" "작")
+(merge-rule "汎" "범")
+(merge-rule "æ±" "대~b")
+(merge-rule "æ±" "석")
+(merge-rule "汒" "망")
+(merge-rule "汔" "흘")
+(merge-rule "汕" "산")
+(merge-rule "汗" "한")
+(merge-rule "æ±™" "á„‹á…©~b")
+(merge-rule "汚" "오~b")
+(merge-rule "汛" "신")
+(merge-rule "汜" "사~b")
+(merge-rule "æ±" "á„‹á…§~b")
+(merge-rule "汞" "홍")
+(merge-rule "江" "강")
+(merge-rule "池" "지~b")
+(merge-rule "汨" "골")
+(merge-rule "汪" "왕")
+(merge-rule "æ±­" "á„‹á…¨~b")
+(merge-rule "æ±°" "á„á…¢~b")
+(merge-rule "汲" "급")
+(merge-rule "汴" "판")
+(merge-rule "汶" "문")
+(merge-rule "決" "결")
+(merge-rule "汽" "기~b")
+(merge-rule "汾" "분")
+(merge-rule "æ²" "심")
+(merge-rule "沂" "기~b")
+(merge-rule "沃" "옥")
+(merge-rule "沄" "운")
+(merge-rule "沅" "원")
+(merge-rule "沆" "항")
+(merge-rule "沇" "연")
+(merge-rule "沈" "심")
+(merge-rule "沉" "침")
+(merge-rule "沌" "돈")
+(merge-rule "æ²" "á„’á…©~b")
+(merge-rule "æ²" "목")
+(merge-rule "沒" "몰")
+(merge-rule "沓" "답")
+(merge-rule "沔" "면")
+(merge-rule "沕" "물")
+(merge-rule "沖" "충")
+(merge-rule "沘" "비~b")
+(merge-rule "沙" "사~b")
+(merge-rule "沚" "지~b")
+(merge-rule "æ²›" "á„‘á…¢~b")
+(merge-rule "沫" "말")
+(merge-rule "沬" "매~b")
+(merge-rule "沮" "저~b")
+(merge-rule "æ²°" "á„ᅡᆨ")
+(merge-rule "æ²±" "á„á…¡~b")
+(merge-rule "æ²³" "á„’á…¡~b")
+(merge-rule "沸" "비~b")
+(merge-rule "æ²¹" "á„‹á…²~b")
+(merge-rule "æ²»" "á„Žá…µ~b")
+(merge-rule "沼" "소~b")
+(merge-rule "沽" "고~b")
+(merge-rule "沾" "첨")
+(merge-rule "沿" "연")
+(merge-rule "æ³" "황")
+(merge-rule "泂" "형")
+(merge-rule "泄" "설")
+(merge-rule "泅" "수~b")
+(merge-rule "泆" "일")
+(merge-rule "泉" "천")
+(merge-rule "泊" "박")
+(merge-rule "泌" "비~b")
+(merge-rule "æ³" "륵")
+(merge-rule "泑" "유~b")
+(merge-rule "泓" "홍")
+(merge-rule "泔" "감")
+(merge-rule "法" "법")
+(merge-rule "泗" "사~b")
+(merge-rule "泙" "평")
+(merge-rule "泚" "자~b")
+(merge-rule "泛" "범")
+(merge-rule "泜" "지~b")
+(merge-rule "æ³" "소~b")
+(merge-rule "泠" "령")
+(merge-rule "泡" "포~b")
+(merge-rule "æ³¢" "á„‘á…¡~b")
+(merge-rule "泣" "읍")
+(merge-rule "æ³¥" "á„‚á…µ~b")
+(merge-rule "注" "주~b")
+(merge-rule "泫" "현")
+(merge-rule "泮" "반")
+(merge-rule "泯" "민")
+(merge-rule "æ³°" "á„á…¢~b")
+(merge-rule "泱" "앙")
+(merge-rule "泳" "영")
+(merge-rule "æ´„" "á„’á…¬~b")
+(merge-rule "洇" "인")
+(merge-rule "洊" "천")
+(merge-rule "洋" "양")
+(merge-rule "洌" "렬")
+(merge-rule "洑" "보~b")
+(merge-rule "洒" "세~b")
+(merge-rule "洗" "세~b")
+(merge-rule "洙" "수~b")
+(merge-rule "洛" "낙")
+(merge-rule "洞" "동")
+(merge-rule "æ´Ÿ" "á„‹á…µ~b")
+(merge-rule "津" "진")
+(merge-rule "æ´§" "á„‹á…²~b")
+(merge-rule "洩" "설")
+(merge-rule "洪" "홍")
+(merge-rule "洫" "혁")
+(merge-rule "洬" "속")
+(merge-rule "洮" "도~b")
+(merge-rule "洲" "주~b")
+(merge-rule "洵" "순")
+(merge-rule "洶" "흉")
+(merge-rule "洸" "광")
+(merge-rule "洹" "원")
+(merge-rule "洺" "명")
+(merge-rule "活" "활")
+(merge-rule "æ´¼" "á„‹á…ª~b")
+(merge-rule "洽" "흡")
+(merge-rule "æ´¾" "á„‘á…¡~b")
+(merge-rule "æµ" "á„…á…²~b")
+(merge-rule "浙" "절")
+(merge-rule "浚" "준")
+(merge-rule "浜" "빈")
+(merge-rule "浡" "발")
+(merge-rule "浣" "완")
+(merge-rule "浤" "굉")
+(merge-rule "浥" "읍")
+(merge-rule "浦" "포~b")
+(merge-rule "浧" "영")
+(merge-rule "浩" "호~b")
+(merge-rule "浪" "낭")
+(merge-rule "浬" "리~b")
+(merge-rule "浮" "부~b")
+(merge-rule "浴" "욕")
+(merge-rule "æµ·" "á„’á…¢~b")
+(merge-rule "浸" "침")
+(merge-rule "浹" "협")
+(merge-rule "浿" "패~b")
+(merge-rule "涂" "도~b")
+(merge-rule "涅" "열")
+(merge-rule "涇" "경")
+(merge-rule "消" "소~b")
+(merge-rule "涉" "섭")
+(merge-rule "涌" "용")
+(merge-rule "æ¶" "á„’á…­~b")
+(merge-rule "涎" "연")
+(merge-rule "涑" "속")
+(merge-rule "涓" "연")
+(merge-rule "涔" "잠")
+(merge-rule "涕" "체~b")
+(merge-rule "涖" "리~b")
+(merge-rule "涪" "부~b")
+(merge-rule "涫" "관")
+(merge-rule "涯" "애~b")
+(merge-rule "液" "액")
+(merge-rule "涴" "완")
+(merge-rule "涵" "함")
+(merge-rule "涷" "동")
+(merge-rule "涸" "후~b")
+(merge-rule "涼" "량")
+(merge-rule "涿" "á„ᅡᆨ")
+(merge-rule "淀" "정")
+(merge-rule "淃" "권")
+(merge-rule "æ·„" "á„Žá…µ~b")
+(merge-rule "淅" "석")
+(merge-rule "æ·†" "á„’á…­~b")
+(merge-rule "淇" "기~b")
+(merge-rule "淈" "굴")
+(merge-rule "淋" "림")
+(merge-rule "æ·" "á„’á…©~b")
+(merge-rule "淑" "숙")
+(merge-rule "æ·’" "á„Žá…¥~b")
+(merge-rule "æ·–" "á„‚á…­~b")
+(merge-rule "淘" "도~b")
+(merge-rule "淙" "종")
+(merge-rule "æ·š" "á„‚á…®~b")
+(merge-rule "æ·" "비~b")
+(merge-rule "淞" "송")
+(merge-rule "淠" "비~b")
+(merge-rule "淡" "담")
+(merge-rule "淢" "역")
+(merge-rule "æ·¤" "á„‹á…¥~b")
+(merge-rule "淥" "록")
+(merge-rule "淦" "감")
+(merge-rule "淨" "정")
+(merge-rule "淪" "륜")
+(merge-rule "淫" "음")
+(merge-rule "淬" "쉬~b")
+(merge-rule "æ·®" "á„’á…¬~b")
+(merge-rule "深" "심")
+(merge-rule "淳" "순")
+(merge-rule "淵" "연")
+(merge-rule "æ·¶" "á„…á…¢~b")
+(merge-rule "混" "혼")
+(merge-rule "淸" "청")
+(merge-rule "淹" "엄")
+(merge-rule "淺" "천")
+(merge-rule "添" "첨")
+(merge-rule "淼" "묘~b")
+(merge-rule "渗" "삼")
+(merge-rule "渙" "환")
+(merge-rule "渚" "저~b")
+(merge-rule "減" "감")
+(merge-rule "æ¸" "á„á…®~b")
+(merge-rule "渟" "정")
+(merge-rule "渠" "거~b")
+(merge-rule "渡" "도~b")
+(merge-rule "渣" "사~b")
+(merge-rule "渤" "발")
+(merge-rule "渥" "악")
+(merge-rule "渦" "와~b")
+(merge-rule "渨" "외~b")
+(merge-rule "渫" "설")
+(merge-rule "測" "측")
+(merge-rule "渭" "위~b")
+(merge-rule "港" "항")
+(merge-rule "渲" "선")
+(merge-rule "渴" "갈")
+(merge-rule "渶" "영")
+(merge-rule "渷" "연")
+(merge-rule "游" "유~b")
+(merge-rule "渺" "묘~b")
+(merge-rule "渼" "미~b")
+(merge-rule "渽" "재~b")
+(merge-rule "渾" "혼")
+(merge-rule "湃" "배~b")
+(merge-rule "湄" "미~b")
+(merge-rule "湅" "련")
+(merge-rule "湊" "주~b")
+(merge-rule "æ¹" "단")
+(merge-rule "湎" "면")
+(merge-rule "湑" "서~b")
+(merge-rule "湓" "분")
+(merge-rule "湔" "전")
+(merge-rule "æ¹–" "á„’á…©~b")
+(merge-rule "湘" "상")
+(merge-rule "湛" "담")
+(merge-rule "湜" "식")
+(merge-rule "湞" "정")
+(merge-rule "湟" "황")
+(merge-rule "湣" "민")
+(merge-rule "湧" "용")
+(merge-rule "湫" "추~b")
+(merge-rule "湮" "인")
+(merge-rule "湯" "á„ᅡᆼ")
+(merge-rule "湲" "원")
+(merge-rule "湳" "남")
+(merge-rule "湺" "보~b")
+(merge-rule "æº" "당")
+(merge-rule "æº" "원")
+(merge-rule "溕" "몽")
+(merge-rule "準" "준")
+(merge-rule "溘" "합")
+(merge-rule "溜" "류~b")
+(merge-rule "æº" "구~b")
+(merge-rule "溟" "명")
+(merge-rule "溢" "일")
+(merge-rule "溥" "부~b")
+(merge-rule "溧" "률")
+(merge-rule "溪" "계~b")
+(merge-rule "溫" "온")
+(merge-rule "溯" "소~b")
+(merge-rule "溱" "진")
+(merge-rule "溲" "수~b")
+(merge-rule "溵" "은")
+(merge-rule "溶" "용")
+(merge-rule "溷" "혼")
+(merge-rule "溺" "닉")
+(merge-rule "溽" "욕")
+(merge-rule "滂" "방")
+(merge-rule "滃" "옹")
+(merge-rule "滄" "창")
+(merge-rule "滅" "멸")
+(merge-rule "滈" "호~b")
+(merge-rule "滉" "황")
+(merge-rule "滋" "자~b")
+(merge-rule "滌" "척")
+(merge-rule "滎" "형")
+(merge-rule "滑" "골")
+(merge-rule "滓" "재~b")
+(merge-rule "滔" "도~b")
+(merge-rule "滕" "등")
+(merge-rule "æ»™" "á„’á…¬~b")
+(merge-rule "滬" "호~b")
+(merge-rule "滭" "필")
+(merge-rule "滯" "체~b")
+(merge-rule "滴" "적")
+(merge-rule "滵" "밀")
+(merge-rule "æ»·" "á„…á…©~b")
+(merge-rule "滸" "호~b")
+(merge-rule "滾" "곤")
+(merge-rule "滿" "만")
+(merge-rule "æ¼" "á„‹á…¥~b")
+(merge-rule "漂" "표~b")
+(merge-rule "漄" "애~b")
+(merge-rule "漆" "칠")
+(merge-rule "漉" "록")
+(merge-rule "漌" "근")
+(merge-rule "æ¼" "á„‚á…®~b")
+(merge-rule "漑" "개~b")
+(merge-rule "漓" "리~b")
+(merge-rule "演" "연")
+(merge-rule "漕" "조~b")
+(merge-rule "漙" "단")
+(merge-rule "漚" "구~b")
+(merge-rule "漠" "막")
+(merge-rule "漢" "한")
+(merge-rule "漣" "련")
+(merge-rule "漪" "의~b")
+(merge-rule "漫" "만")
+(merge-rule "漬" "지~b")
+(merge-rule "漭" "망")
+(merge-rule "漰" "붕")
+(merge-rule "漱" "수~b")
+(merge-rule "漲" "창")
+(merge-rule "漳" "장")
+(merge-rule "漸" "점")
+(merge-rule "æ¼¼" "á„Žá…¬~b")
+(merge-rule "漾" "양")
+(merge-rule "漿" "장")
+(merge-rule "æ½" "영")
+(merge-rule "æ½" "율")
+(merge-rule "潑" "발")
+(merge-rule "潔" "결")
+(merge-rule "潗" "집")
+(merge-rule "潘" "반")
+(merge-rule "潙" "규~b")
+(merge-rule "潚" "숙")
+(merge-rule "潛" "잠")
+(merge-rule "潜" "잠")
+(merge-rule "æ½" "흡")
+(merge-rule "潞" "로~b")
+(merge-rule "潟" "석")
+(merge-rule "潡" "돈")
+(merge-rule "潢" "황")
+(merge-rule "潤" "윤")
+(merge-rule "潦" "료~b")
+(merge-rule "潭" "담")
+(merge-rule "潮" "조~b")
+(merge-rule "潯" "심")
+(merge-rule "潰" "궤~b")
+(merge-rule "潴" "저~b")
+(merge-rule "潸" "산")
+(merge-rule "潺" "잔")
+(merge-rule "潼" "동")
+(merge-rule "潽" "보~b")
+(merge-rule "潾" "린")
+(merge-rule "æ¾" "삽")
+(merge-rule "澂" "징")
+(merge-rule "澄" "징")
+(merge-rule "澆" "요~b")
+(merge-rule "澈" "철")
+(merge-rule "澉" "감")
+(merge-rule "澋" "횡")
+(merge-rule "澌" "시~b")
+(merge-rule "æ¾" "주~b")
+(merge-rule "澎" "팽")
+(merge-rule "æ¾" "운")
+(merge-rule "澒" "홍")
+(merge-rule "æ¾”" "á„’á…©~b")
+(merge-rule "澗" "간")
+(merge-rule "澘" "산")
+(merge-rule "澟" "름")
+(merge-rule "澡" "조~b")
+(merge-rule "澣" "한")
+(merge-rule "澤" "á„ᅢᆨ")
+(merge-rule "澧" "례~b")
+(merge-rule "澨" "서~b")
+(merge-rule "æ¾®" "á„’á…¬~b")
+(merge-rule "澯" "찬")
+(merge-rule "澱" "전")
+(merge-rule "æ¾³" "á„‹á…©~b")
+(merge-rule "澶" "전")
+(merge-rule "澹" "담")
+(merge-rule "澾" "달")
+(merge-rule "激" "격")
+(merge-rule "æ¿" "á„ᅡᆨ")
+(merge-rule "濂" "렴")
+(merge-rule "濃" "농")
+(merge-rule "濆" "분")
+(merge-rule "濇" "색")
+(merge-rule "濉" "수~b")
+(merge-rule "æ¿Š" "á„‹á…¨~b")
+(merge-rule "濕" "습")
+(merge-rule "濘" "녕")
+(merge-rule "濚" "영")
+(merge-rule "濛" "몽")
+(merge-rule "濞" "비~b")
+(merge-rule "濟" "제~b")
+(merge-rule "æ¿ " "á„’á…©~b")
+(merge-rule "æ¿¡" "á„‹á…²~b")
+(merge-rule "濤" "도~b")
+(merge-rule "æ¿©" "á„’á…©~b")
+(merge-rule "濫" "남")
+(merge-rule "濬" "준")
+(merge-rule "濮" "복")
+(merge-rule "濯" "á„ᅡᆨ")
+(merge-rule "濱" "빈")
+(merge-rule "濳" "잠")
+(merge-rule "濴" "영")
+(merge-rule "濺" "천")
+(merge-rule "濾" "려~b")
+(merge-rule "ç€" "양")
+(merge-rule "瀅" "형")
+(merge-rule "瀆" "독")
+(merge-rule "瀇" "왕")
+(merge-rule "瀉" "사~b")
+(merge-rule "瀋" "심")
+(merge-rule "ç€" "á„…á…²~b")
+(merge-rule "瀑" "폭")
+(merge-rule "瀒" "색")
+(merge-rule "瀓" "징")
+(merge-rule "瀕" "빈")
+(merge-rule "瀘" "로~b")
+(merge-rule "瀚" "한")
+(merge-rule "瀛" "영")
+(merge-rule "瀜" "융")
+(merge-rule "ç€" "력")
+(merge-rule "瀞" "정")
+(merge-rule "瀟" "소~b")
+(merge-rule "瀣" "해~b")
+(merge-rule "瀦" "저~b")
+(merge-rule "瀧" "롱")
+(merge-rule "瀨" "뢰~b")
+(merge-rule "瀯" "영")
+(merge-rule "瀰" "미~b")
+(merge-rule "瀲" "렴")
+(merge-rule "瀷" "익")
+(merge-rule "瀸" "첨")
+(merge-rule "瀼" "양")
+(merge-rule "瀾" "란")
+(merge-rule "ç„" "섭")
+(merge-rule "çŒ" "관")
+(merge-rule "çŽ" "염")
+(merge-rule "ç" "형")
+(merge-rule "ç‘" "쇄~b")
+(merge-rule "ç“" "란")
+(merge-rule "ç˜" "á„ᅡᆫ")
+(merge-rule "ç" "á„’á…©~b")
+(merge-rule "çž" "á„‘á…¡~b")
+(merge-rule "ç£" "만")
+(merge-rule "ç©" "염")
+(merge-rule "ç«" "á„’á…ª~b")
+(merge-rule "ç¯" "정")
+(merge-rule "ç°" "á„’á…¬~b")
+(merge-rule "ç¸" "구~b")
+(merge-rule "ç¼" "작")
+(merge-rule "ç½" "재~b")
+(merge-rule "ç¾" "재~b")
+(merge-rule "ç‚" "기~b")
+(merge-rule "炅" "경")
+(merge-rule "炆" "문")
+(merge-rule "ç‚Š" "á„Žá…±~b")
+(merge-rule "炎" "염")
+(merge-rule "ç‚’" "á„Žá…©~b")
+(merge-rule "炕" "항")
+(merge-rule "炘" "흔")
+(merge-rule "炙" "자~b")
+(merge-rule "炚" "광")
+(merge-rule "炡" "정")
+(merge-rule "炤" "소~b")
+(merge-rule "炫" "현")
+(merge-rule "炬" "거~b")
+(merge-rule "ç‚­" "á„ᅡᆫ")
+(merge-rule "ç‚®" "á„‘á…©~b")
+(merge-rule "炯" "형")
+(merge-rule "ç‚°" "á„‘á…©~b")
+(merge-rule "炳" "병")
+(merge-rule "炷" "주~b")
+(merge-rule "炸" "작")
+(merge-rule "点" "점")
+(merge-rule "烈" "렬")
+(merge-rule "烊" "양")
+(merge-rule "烋" "휴~b")
+(merge-rule "çƒ" "á„‹á…©~b")
+(merge-rule "烓" "계~b")
+(merge-rule "烘" "홍")
+(merge-rule "烙" "낙")
+(merge-rule "烜" "훤")
+(merge-rule "çƒ" "증")
+(merge-rule "烟" "연")
+(merge-rule "烱" "경")
+(merge-rule "烹" "팽")
+(merge-rule "烽" "봉")
+(merge-rule "焄" "훈")
+(merge-rule "焉" "언")
+(merge-rule "焌" "준")
+(merge-rule "焙" "배~b")
+(merge-rule "焚" "분")
+(merge-rule "焜" "혼")
+(merge-rule "焞" "돈")
+(merge-rule "焠" "쉬~b")
+(merge-rule "無" "무~b")
+(merge-rule "焦" "초~b")
+(merge-rule "焭" "경")
+(merge-rule "焮" "흔")
+(merge-rule "焯" "작")
+(merge-rule "焰" "염")
+(merge-rule "焱" "혁")
+(merge-rule "然" "연")
+(merge-rule "ç…†" "á„’á…¡~b")
+(merge-rule "ç…‡" "á„’á…±~b")
+(merge-rule "煉" "련")
+(merge-rule "煊" "훤")
+(merge-rule "煌" "황")
+(merge-rule "煎" "전")
+(merge-rule "ç…" "영")
+(merge-rule "ç…’" "á„‹á…±~b")
+(merge-rule "煖" "난")
+(merge-rule "煗" "난")
+(merge-rule "煙" "연")
+(merge-rule "煜" "욱")
+(merge-rule "煞" "살")
+(merge-rule "煢" "경")
+(merge-rule "煤" "매~b")
+(merge-rule "煥" "환")
+(merge-rule "ç…¦" "á„’á…®~b")
+(merge-rule "照" "조~b")
+(merge-rule "ç…¨" "á„‹á…¬~b")
+(merge-rule "煩" "번")
+(merge-rule "煬" "양")
+(merge-rule "煮" "자~b")
+(merge-rule "煽" "선")
+(merge-rule "熀" "엽")
+(merge-rule "熄" "식")
+(merge-rule "熅" "온")
+(merge-rule "熇" "효~b")
+(merge-rule "熉" "운")
+(merge-rule "熊" "웅")
+(merge-rule "ç†" "훈")
+(merge-rule "熒" "형")
+(merge-rule "熔" "용")
+(merge-rule "熙" "희~b")
+(merge-rule "熛" "표~b")
+(merge-rule "熟" "숙")
+(merge-rule "熠" "습")
+(merge-rule "熢" "봉")
+(merge-rule "熤" "익")
+(merge-rule "熨" "위~b")
+(merge-rule "熬" "오~b")
+(merge-rule "熯" "선")
+(merge-rule "熱" "열")
+(merge-rule "熲" "경")
+(merge-rule "熹" "희~b")
+(merge-rule "熺" "희~b")
+(merge-rule "熾" "치~b")
+(merge-rule "ç‡" "엽")
+(merge-rule "燃" "연")
+(merge-rule "燈" "등")
+(merge-rule "燉" "돈")
+(merge-rule "燋" "초~b")
+(merge-rule "燎" "료~b")
+(merge-rule "ç‡" "린")
+(merge-rule "燒" "소~b")
+(merge-rule "燔" "번")
+(merge-rule "燕" "연")
+(merge-rule "燖" "심")
+(merge-rule "燙" "á„ᅡᆼ")
+(merge-rule "營" "영")
+(merge-rule "燠" "욱")
+(merge-rule "燥" "조~b")
+(merge-rule "燦" "찬")
+(merge-rule "燧" "수~b")
+(merge-rule "燬" "훼~b")
+(merge-rule "燭" "촉")
+(merge-rule "燮" "섭")
+(merge-rule "燹" "희~b")
+(merge-rule "燻" "훈")
+(merge-rule "燼" "신")
+(merge-rule "燾" "도~b")
+(merge-rule "燿" "요~b")
+(merge-rule "爀" "혁")
+(merge-rule "爆" "폭")
+(merge-rule "爇" "설")
+(merge-rule "爋" "훈")
+(merge-rule "爌" "광")
+(merge-rule "çˆ" "삭")
+(merge-rule "çˆ" "á„‚á…©~b")
+(merge-rule "爔" "희~b")
+(merge-rule "爗" "엽")
+(merge-rule "爚" "약")
+(merge-rule "爛" "난")
+(merge-rule "爟" "관")
+(merge-rule "爥" "촉")
+(merge-rule "爨" "찬")
+(merge-rule "爪" "조~b")
+(merge-rule "爬" "파~b")
+(merge-rule "爭" "쟁")
+(merge-rule "爰" "원")
+(merge-rule "爲" "위~b")
+(merge-rule "爵" "작")
+(merge-rule "父" "부~b")
+(merge-rule "爸" "파~b")
+(merge-rule "爹" "다~b")
+(merge-rule "爺" "야~b")
+(merge-rule "爻" "효~b")
+(merge-rule "爽" "상")
+(merge-rule "爾" "이~b")
+(merge-rule "牀" "상")
+(merge-rule "牂" "장")
+(merge-rule "牆" "장")
+(merge-rule "片" "편")
+(merge-rule "版" "판")
+(merge-rule "牋" "전")
+(merge-rule "牌" "패~b")
+(merge-rule "牒" "첩")
+(merge-rule "牓" "방")
+(merge-rule "牔" "박")
+(merge-rule "牖" "유~b")
+(merge-rule "牘" "독")
+(merge-rule "牙" "아~b")
+(merge-rule "牚" "á„ᅢᆼ")
+(merge-rule "牛" "우~b")
+(merge-rule "ç‰" "빈")
+(merge-rule "牟" "모~b")
+(merge-rule "牡" "모~b")
+(merge-rule "牢" "뇌~b")
+(merge-rule "牧" "목")
+(merge-rule "物" "물")
+(merge-rule "牯" "고~b")
+(merge-rule "牲" "생")
+(merge-rule "牴" "저~b")
+(merge-rule "牸" "자~b")
+(merge-rule "特" "á„ᅳᆨ")
+(merge-rule "牽" "견")
+(merge-rule "犀" "서~b")
+(merge-rule "çŠ" "á„…á…µ~b")
+(merge-rule "犇" "분")
+(merge-rule "çŠ" "건")
+(merge-rule "犒" "호~b")
+(merge-rule "犖" "락")
+(merge-rule "犢" "독")
+(merge-rule "犧" "희~b")
+(merge-rule "犬" "견")
+(merge-rule "犯" "범")
+(merge-rule "犳" "작")
+(merge-rule "犴" "안")
+(merge-rule "犵" "힐")
+(merge-rule "狀" "상")
+(merge-rule "狂" "광")
+(merge-rule "狄" "적")
+(merge-rule "狉" "비~b")
+(merge-rule "狎" "압")
+(merge-rule "ç‹" "á„’á…©~b")
+(merge-rule "狒" "비~b")
+(merge-rule "狗" "구~b")
+(merge-rule "狙" "저~b")
+(merge-rule "狡" "교~b")
+(merge-rule "狢" "학")
+(merge-rule "狥" "순")
+(merge-rule "狨" "융")
+(merge-rule "狩" "수~b")
+(merge-rule "ç‹´" "á„‘á…¨~b")
+(merge-rule "狷" "견")
+(merge-rule "狸" "리~b")
+(merge-rule "狹" "협")
+(merge-rule "狺" "은")
+(merge-rule "狻" "산")
+(merge-rule "狼" "낭")
+(merge-rule "狽" "패~b")
+(merge-rule "猉" "기~b")
+(merge-rule "猊" "예~b")
+(merge-rule "猓" "과~b")
+(merge-rule "猖" "창")
+(merge-rule "猗" "의~b")
+(merge-rule "猘" "제~b")
+(merge-rule "猙" "쟁")
+(merge-rule "猛" "맹")
+(merge-rule "猜" "시~b")
+(merge-rule "çŒ" "졸")
+(merge-rule "猢" "호~b")
+(merge-rule "猥" "외~b")
+(merge-rule "猧" "와~b")
+(merge-rule "猨" "원")
+(merge-rule "猩" "성")
+(merge-rule "猪" "저~b")
+(merge-rule "猫" "묘~b")
+(merge-rule "猱" "노~b")
+(merge-rule "猴" "후~b")
+(merge-rule "猶" "유~b")
+(merge-rule "猷" "유~b")
+(merge-rule "猾" "활")
+(merge-rule "猿" "원")
+(merge-rule "çƒ" "á„‹á…¢~b")
+(merge-rule "ç„" "옥")
+(merge-rule "ç…" "사~b")
+(merge-rule "ç" "장")
+(merge-rule "ç’" "á„‹á…©~b")
+(merge-rule "ç—" "궐")
+(merge-rule "ç˜" "á„‘á…¨~b")
+(merge-rule "çœ" "린")
+(merge-rule "ç " "á„…á…­~b")
+(merge-rule "ç¨" "독")
+(merge-rule "ç©" "á„‹á…¨~b")
+(merge-rule "çª" "á„’á…¬~b")
+(merge-rule "ç«" "험")
+(merge-rule "ç¬" "á„’á…¢~b")
+(merge-rule "ç¯" "훈")
+(merge-rule "ç°" "영")
+(merge-rule "ç²" "획")
+(merge-rule "çµ" "렵")
+(merge-rule "ç·" "광")
+(merge-rule "ç¸" "수~b")
+(merge-rule "çº" "달")
+(merge-rule "ç»" "헌")
+(merge-rule "ç¼" "미~b")
+(merge-rule "çŽ" "험")
+(merge-rule "玄" "현")
+(merge-rule "玆" "자~b")
+(merge-rule "率" "률")
+(merge-rule "玈" "로~b")
+(merge-rule "玉" "옥")
+(merge-rule "王" "왕")
+(merge-rule "玎" "정")
+(merge-rule "玔" "천")
+(merge-rule "玕" "간")
+(merge-rule "玖" "구~b")
+(merge-rule "玗" "우~b")
+(merge-rule "玘" "기~b")
+(merge-rule "玞" "부~b")
+(merge-rule "玟" "민")
+(merge-rule "玠" "개~b")
+(merge-rule "玦" "결")
+(merge-rule "玧" "윤")
+(merge-rule "玩" "완")
+(merge-rule "玫" "매~b")
+(merge-rule "玭" "빈")
+(merge-rule "玲" "령")
+(merge-rule "玳" "대~b")
+(merge-rule "玷" "점")
+(merge-rule "玹" "현")
+(merge-rule "玻" "파~b")
+(merge-rule "ç€" "박")
+(merge-rule "ç‚" "가~b")
+(merge-rule "ç†" "á„‹á…µ~b")
+(merge-rule "çˆ" "가~b")
+(merge-rule "ç‰" "민")
+(merge-rule "çŠ" "산")
+(merge-rule "çŒ" "필")
+(merge-rule "ç" "진")
+(merge-rule "ç" "각")
+(merge-rule "ç’" "진")
+(merge-rule "ç–" "광")
+(merge-rule "ç™" "공")
+(merge-rule "ç" "á„’á…®~b")
+(merge-rule "çž" "낙")
+(merge-rule "ç " "주~b")
+(merge-rule "ç¢" "은")
+(merge-rule "ç£" "순")
+(merge-rule "ç¤" "보~b")
+(merge-rule "ç¥" "á„‹á…µ~b")
+(merge-rule "ç¦" "향")
+(merge-rule "ç©" "형")
+(merge-rule "çª" "규~b")
+(merge-rule "ç«" "충")
+(merge-rule "ç­" "반")
+(merge-rule "ç®" "á„‘á…¢~b")
+(merge-rule "çµ" "정")
+(merge-rule "ç·" "무~b")
+(merge-rule "ç¹" "성")
+(merge-rule "ç½" "정")
+(merge-rule "ç¾" "현")
+(merge-rule "ç" "선")
+(merge-rule "çƒ" "구~b")
+(merge-rule "ç„" "현")
+(merge-rule "ç…" "랑")
+(merge-rule "ç†" "á„…á…µ~b")
+(merge-rule "ç‡" "수~b")
+(merge-rule "ç‰" "á„…á…²~b")
+(merge-rule "ç“" "완")
+(merge-rule "ç›" "침")
+(merge-rule "ç " "전")
+(merge-rule "ç¡" "숙")
+(merge-rule "ç¢" "á„ᅡᆨ")
+(merge-rule "ç¤" "쟁")
+(merge-rule "ç¥" "á„’á…©~b")
+(merge-rule "ç¦" "기~b")
+(merge-rule "ç¨" "곤")
+(merge-rule "çª" "기~b")
+(merge-rule "ç«" "봉")
+(merge-rule "ç¬" "완")
+(merge-rule "ç®" "종")
+(merge-rule "ç¯" "관")
+(merge-rule "ç°" "염")
+(merge-rule "ç±" "조~b")
+(merge-rule "ç²" "배~b")
+(merge-rule "ç³" "림")
+(merge-rule "ç´" "금")
+(merge-rule "çµ" "비~b")
+(merge-rule "ç¶" "á„‘á…¡~b")
+(merge-rule "ç¸" "á„ᅡᆨ")
+(merge-rule "çº" "법")
+(merge-rule "ç¿" "혼")
+(merge-rule "ç‘€" "á„‹á…®~b")
+(merge-rule "ç‘" "모~b")
+(merge-rule "瑃" "춘")
+(merge-rule "瑄" "선")
+(merge-rule "瑅" "제~b")
+(merge-rule "瑆" "성")
+(merge-rule "ç‘‹" "á„‹á…±~b")
+(merge-rule "ç‘Ž" "á„’á…¢~b")
+(merge-rule "ç‘•" "á„’á…¡~b")
+(merge-rule "瑗" "원")
+(merge-rule "ç‘™" "á„‚á…©~b")
+(merge-rule "ç‘š" "á„’á…©~b")
+(merge-rule "瑛" "영")
+(merge-rule "瑜" "유~b")
+(merge-rule "ç‘" "황")
+(merge-rule "瑞" "서~b")
+(merge-rule "瑟" "슬")
+(merge-rule "ç‘ " "á„…á…²~b")
+(merge-rule "瑢" "용")
+(merge-rule "瑣" "쇄~b")
+(merge-rule "瑤" "요~b")
+(merge-rule "瑥" "온")
+(merge-rule "瑨" "진")
+(merge-rule "瑩" "영")
+(merge-rule "瑪" "마~b")
+(merge-rule "瑭" "당")
+(merge-rule "瑯" "랑")
+(merge-rule "瑰" "괴~b")
+(merge-rule "瑱" "전")
+(merge-rule "瑲" "창")
+(merge-rule "瑳" "차~b")
+(merge-rule "瑽" "종")
+(merge-rule "瑾" "근")
+(merge-rule "ç’€" "á„Žá…¬~b")
+(merge-rule "璂" "기~b")
+(merge-rule "ç’ƒ" "á„…á…µ~b")
+(merge-rule "璆" "구~b")
+(merge-rule "璇" "선")
+(merge-rule "璉" "련")
+(merge-rule "璊" "문")
+(merge-rule "璋" "장")
+(merge-rule "璘" "린")
+(merge-rule "璜" "황")
+(merge-rule "ç’" "괴~b")
+(merge-rule "璞" "박")
+(merge-rule "璟" "경")
+(merge-rule "璡" "진")
+(merge-rule "璣" "기~b")
+(merge-rule "璥" "경")
+(merge-rule "璧" "벽")
+(merge-rule "璨" "찬")
+(merge-rule "璪" "조~b")
+(merge-rule "璫" "당")
+(merge-rule "環" "환")
+(merge-rule "璲" "수~b")
+(merge-rule "ç’µ" "á„‹á…§~b")
+(merge-rule "璹" "숙")
+(merge-rule "璽" "새~b")
+(merge-rule "璿" "선")
+(merge-rule "瓆" "질")
+(merge-rule "瓊" "경")
+(merge-rule "ç“" "롱")
+(merge-rule "瓔" "영")
+(merge-rule "瓘" "관")
+(merge-rule "瓚" "찬")
+(merge-rule "瓛" "환")
+(merge-rule "瓜" "과~b")
+(merge-rule "ç“ " "á„’á…©~b")
+(merge-rule "ç“¢" "á„‘á…­~b")
+(merge-rule "瓣" "판")
+(merge-rule "瓦" "와~b")
+(merge-rule "瓩" "천")
+(merge-rule "瓮" "옹")
+(merge-rule "瓲" "á„ᅩᆫ")
+(merge-rule "瓷" "자~b")
+(merge-rule "ç”" "병")
+(merge-rule "甃" "추~b")
+(merge-rule "甄" "견")
+(merge-rule "甌" "구~b")
+(merge-rule "ç”" "맹")
+(merge-rule "甎" "전")
+(merge-rule "甑" "증")
+(merge-rule "甓" "벽")
+(merge-rule "甕" "옹")
+(merge-rule "甘" "감")
+(merge-rule "甚" "심")
+(merge-rule "甛" "첨")
+(merge-rule "甞" "상")
+(merge-rule "生" "생")
+(merge-rule "産" "산")
+(merge-rule "甥" "생")
+(merge-rule "甦" "소~b")
+(merge-rule "用" "용")
+(merge-rule "甫" "보~b")
+(merge-rule "甬" "용")
+(merge-rule "田" "전")
+(merge-rule "ç”±" "á„‹á…²~b")
+(merge-rule "甲" "갑")
+(merge-rule "申" "신")
+(merge-rule "男" "남")
+(merge-rule "甸" "전")
+(merge-rule "町" "정")
+(merge-rule "甿" "맹")
+(merge-rule "畇" "균")
+(merge-rule "畊" "경")
+(merge-rule "畋" "전")
+(merge-rule "界" "계~b")
+(merge-rule "畎" "견")
+(merge-rule "ç•" "á„‹á…¬~b")
+(merge-rule "畑" "전")
+(merge-rule "畓" "답")
+(merge-rule "畔" "반")
+(merge-rule "ç•™" "á„…á…²~b")
+(merge-rule "畚" "분")
+(merge-rule "畛" "진")
+(merge-rule "畜" "축")
+(merge-rule "ç•" "무~b")
+(merge-rule "畠" "전")
+(merge-rule "畢" "필")
+(merge-rule "畤" "치~b")
+(merge-rule "略" "략")
+(merge-rule "畦" "휴~b")
+(merge-rule "畧" "략")
+(merge-rule "番" "번")
+(merge-rule "ç•«" "á„’á…ª~b")
+(merge-rule "畯" "준")
+(merge-rule "ç•°" "á„…á…µ~b")
+(merge-rule "畵" "화~b")
+(merge-rule "當" "당")
+(merge-rule "畸" "기~b")
+(merge-rule "畺" "강")
+(merge-rule "畿" "기~b")
+(merge-rule "疆" "강")
+(merge-rule "疇" "주~b")
+(merge-rule "疈" "벽")
+(merge-rule "疊" "첩")
+(merge-rule "疋" "필")
+(merge-rule "疎" "소~b")
+(merge-rule "ç–" "소~b")
+(merge-rule "ç–‘" "á„‹á…´~b")
+(merge-rule "疔" "정")
+(merge-rule "疙" "흘")
+(merge-rule "疚" "구~b")
+(merge-rule "ç–" "산")
+(merge-rule "ç–£" "á„‹á…®~b")
+(merge-rule "疥" "개~b")
+(merge-rule "ç–©" "á„Žá…°~b")
+(merge-rule "疫" "역")
+(merge-rule "ç–±" "á„‘á…©~b")
+(merge-rule "ç–²" "á„‘á…µ~b")
+(merge-rule "疳" "감")
+(merge-rule "ç–´" "á„‹á…¡~b")
+(merge-rule "疵" "자~b")
+(merge-rule "疸" "달")
+(merge-rule "疹" "진")
+(merge-rule "疼" "동")
+(merge-rule "疽" "저~b")
+(merge-rule "疾" "질")
+(merge-rule "痀" "구~b")
+(merge-rule "痂" "가~b")
+(merge-rule "痃" "현")
+(merge-rule "病" "병")
+(merge-rule "症" "증")
+(merge-rule "痊" "전")
+(merge-rule "ç—" "á„‹á…µ~b")
+(merge-rule "ç—Ž" "á„’á…¢~b")
+(merge-rule "痒" "양")
+(merge-rule "ç—“" "á„Žá…µ~b")
+(merge-rule "ç—”" "á„Žá…µ~b")
+(merge-rule "痕" "흔")
+(merge-rule "痘" "두~b")
+(merge-rule "痙" "경")
+(merge-rule "ç—›" "á„ᅩᆼ")
+(merge-rule "痞" "비~b")
+(merge-rule "ç—¢" "á„…á…µ~b")
+(merge-rule "痣" "지~b")
+(merge-rule "痤" "좌~b")
+(merge-rule "痧" "사~b")
+(merge-rule "痰" "담")
+(merge-rule "痲" "마~b")
+(merge-rule "痳" "림")
+(merge-rule "ç—´" "á„Žá…µ~b")
+(merge-rule "痹" "비~b")
+(merge-rule "痺" "비~b")
+(merge-rule "痼" "고~b")
+(merge-rule "ç—¿" "á„‹á…±~b")
+(merge-rule "瘀" "어~b")
+(merge-rule "ç˜" "á„Žá…°~b")
+(merge-rule "瘇" "종")
+(merge-rule "瘈" "계~b")
+(merge-rule "瘉" "유~b")
+(merge-rule "瘋" "풍")
+(merge-rule "ç˜" "양")
+(merge-rule "ç˜" "á„‹á…²~b")
+(merge-rule "瘕" "하~b")
+(merge-rule "瘙" "소~b")
+(merge-rule "瘟" "온")
+(merge-rule "瘠" "척")
+(merge-rule "瘡" "창")
+(merge-rule "瘢" "반")
+(merge-rule "瘤" "류~b")
+(merge-rule "瘦" "수~b")
+(merge-rule "瘧" "학")
+(merge-rule "瘯" "족")
+(merge-rule "瘰" "라~b")
+(merge-rule "瘳" "추~b")
+(merge-rule "瘴" "장")
+(merge-rule "瘻" "루~b")
+(merge-rule "療" "료~b")
+(merge-rule "癃" "륭")
+(merge-rule "癆" "로~b")
+(merge-rule "癈" "폐~b")
+(merge-rule "癉" "단")
+(merge-rule "癌" "암")
+(merge-rule "癎" "간")
+(merge-rule "ç™’" "á„‹á…²~b")
+(merge-rule "癕" "옹")
+(merge-rule "癖" "벽")
+(merge-rule "癘" "려~b")
+(merge-rule "癜" "전")
+(merge-rule "癡" "치~b")
+(merge-rule "癢" "양")
+(merge-rule "癤" "절")
+(merge-rule "癥" "징")
+(merge-rule "癧" "력")
+(merge-rule "癨" "곽")
+(merge-rule "癩" "나~b")
+(merge-rule "癬" "선")
+(merge-rule "癭" "영")
+(merge-rule "癮" "은")
+(merge-rule "癯" "구~b")
+(merge-rule "癰" "옹")
+(merge-rule "ç™±" "á„ᅡᆫ")
+(merge-rule "癲" "전")
+(merge-rule "癸" "계~b")
+(merge-rule "登" "등")
+(merge-rule "發" "발")
+(merge-rule "白" "백")
+(merge-rule "百" "백")
+(merge-rule "皀" "급")
+(merge-rule "çš" "조~b")
+(merge-rule "皃" "모~b")
+(merge-rule "的" "적")
+(merge-rule "皆" "개~b")
+(merge-rule "皇" "황")
+(merge-rule "皋" "고~b")
+(merge-rule "皎" "교~b")
+(merge-rule "çš" "고~b")
+(merge-rule "çš“" "á„’á…©~b")
+(merge-rule "皖" "환")
+(merge-rule "çšš" "á„‹á…¢~b")
+(merge-rule "çš›" "á„’á…­~b")
+(merge-rule "皜" "호~b")
+(merge-rule "çšž" "á„’á…©~b")
+(merge-rule "皤" "파~b")
+(merge-rule "皬" "학")
+(merge-rule "çš®" "á„‘á…µ~b")
+(merge-rule "皴" "준")
+(merge-rule "皶" "사~b")
+(merge-rule "皸" "군")
+(merge-rule "皺" "추~b")
+(merge-rule "皿" "명")
+(merge-rule "盂" "우~b")
+(merge-rule "盃" "배~b")
+(merge-rule "盆" "분")
+(merge-rule "盈" "영")
+(merge-rule "益" "익")
+(merge-rule "盌" "완")
+(merge-rule "ç›" "합")
+(merge-rule "盎" "앙")
+(merge-rule "盒" "합")
+(merge-rule "ç›”" "á„’á…¬~b")
+(merge-rule "盖" "개~b")
+(merge-rule "盙" "보~b")
+(merge-rule "盛" "성")
+(merge-rule "盜" "도~b")
+(merge-rule "盞" "잔")
+(merge-rule "盟" "맹")
+(merge-rule "盡" "진")
+(merge-rule "監" "감")
+(merge-rule "盤" "반")
+(merge-rule "盥" "관")
+(merge-rule "盧" "노~b")
+(merge-rule "盪" "á„ᅡᆼ")
+(merge-rule "盬" "고~b")
+(merge-rule "目" "목")
+(merge-rule "ç›±" "á„‹á…®~b")
+(merge-rule "盲" "맹")
+(merge-rule "直" "직")
+(merge-rule "相" "상")
+(merge-rule "盹" "순")
+(merge-rule "ç›»" "á„’á…¨~b")
+(merge-rule "盼" "반")
+(merge-rule "盾" "순")
+(merge-rule "çœ" "생")
+(merge-rule "眄" "면")
+(merge-rule "眇" "묘~b")
+(merge-rule "眈" "á„ᅡᆷ")
+(merge-rule "眉" "미~b")
+(merge-rule "眊" "모~b")
+(merge-rule "看" "간")
+(merge-rule "県" "현")
+(merge-rule "眚" "생")
+(merge-rule "眛" "매~b")
+(merge-rule "眞" "진")
+(merge-rule "眠" "면")
+(merge-rule "眥" "자~b")
+(merge-rule "眦" "자~b")
+(merge-rule "眨" "잡")
+(merge-rule "眩" "현")
+(merge-rule "眴" "순")
+(merge-rule "眷" "권")
+(merge-rule "眸" "모~b")
+(merge-rule "眺" "조~b")
+(merge-rule "眻" "양")
+(merge-rule "眼" "안")
+(merge-rule "眾" "중")
+(merge-rule "ç€" "착")
+(merge-rule "ç†" "환")
+(merge-rule "ç‡" "제~b")
+(merge-rule "ç" "현")
+(merge-rule "ç’" "섬")
+(merge-rule "çš" "á„‹á…¢~b")
+(merge-rule "ç›" "정")
+(merge-rule "çŸ" "수~b")
+(merge-rule "ç " "권")
+(merge-rule "ç¡" "수~b")
+(merge-rule "ç¢" "수~b")
+(merge-rule "ç£" "독")
+(merge-rule "ç¥" "비~b")
+(merge-rule "ç¦" "목")
+(merge-rule "ç¨" "á„‹á…¨~b")
+(merge-rule "ç«" "첩")
+(merge-rule "ç·" "건")
+(merge-rule "ç¹" "도~b")
+(merge-rule "ç½" "규~b")
+(merge-rule "ç¾" "고~b")
+(merge-rule "ç¿" "á„‹á…¨~b")
+(merge-rule "瞋" "진")
+(merge-rule "çž" "수~b")
+(merge-rule "瞎" "할")
+(merge-rule "瞑" "명")
+(merge-rule "çž–" "á„‹á…¨~b")
+(merge-rule "瞙" "막")
+(merge-rule "瞞" "만")
+(merge-rule "瞠" "당")
+(merge-rule "瞢" "몽")
+(merge-rule "瞥" "별")
+(merge-rule "瞪" "징")
+(merge-rule "瞬" "순")
+(merge-rule "çž­" "á„…á…­~b")
+(merge-rule "瞰" "감")
+(merge-rule "瞳" "동")
+(merge-rule "çž¹" "á„‹á…¢~b")
+(merge-rule "瞻" "첨")
+(merge-rule "瞼" "검")
+(merge-rule "瞽" "고~b")
+(merge-rule "瞿" "구~b")
+(merge-rule "矇" "몽")
+(merge-rule "矉" "빈")
+(merge-rule "çŸ" "확")
+(merge-rule "矗" "촉")
+(merge-rule "矙" "감")
+(merge-rule "矚" "촉")
+(merge-rule "矛" "모~b")
+(merge-rule "矜" "긍")
+(merge-rule "矞" "율")
+(merge-rule "矡" "확")
+(merge-rule "矢" "시~b")
+(merge-rule "矣" "의~b")
+(merge-rule "知" "지~b")
+(merge-rule "矧" "신")
+(merge-rule "矩" "구~b")
+(merge-rule "短" "단")
+(merge-rule "矮" "왜~b")
+(merge-rule "矯" "교~b")
+(merge-rule "矰" "증")
+(merge-rule "石" "석")
+(merge-rule "矺" "á„ᅡᆨ")
+(merge-rule "矻" "골")
+(merge-rule "矼" "강")
+(merge-rule "矽" "석")
+(merge-rule "砂" "사~b")
+(merge-rule "砌" "체~b")
+(merge-rule "ç " "분")
+(merge-rule "ç ‘" "á„‹á…¡~b")
+(merge-rule "砒" "비~b")
+(merge-rule "ç ¢" "á„…á…¡~b")
+(merge-rule "砥" "지~b")
+(merge-rule "ç ¦" "á„Žá…¢~b")
+(merge-rule "砧" "침")
+(merge-rule "砬" "립")
+(merge-rule "砭" "폄")
+(merge-rule "砰" "팽")
+(merge-rule "ç ²" "á„‘á…©~b")
+(merge-rule "ç ´" "á„‘á…¡~b")
+(merge-rule "硃" "주~b")
+(merge-rule "硅" "규~b")
+(merge-rule "ç¡" "연")
+(merge-rule "硜" "갱")
+(merge-rule "ç¡" "á„Žá…©~b")
+(merge-rule "硠" "랑")
+(merge-rule "硧" "용")
+(merge-rule "硨" "차~b")
+(merge-rule "ç¡«" "á„…á…²~b")
+(merge-rule "硬" "경")
+(merge-rule "确" "학")
+(merge-rule "硯" "연")
+(merge-rule "硼" "붕")
+(merge-rule "ç¢" "기~b")
+(merge-rule "碇" "정")
+(merge-rule "碌" "녹")
+(merge-rule "ç¢" "á„‹á…¢~b")
+(merge-rule "碎" "쇄~b")
+(merge-rule "ç¢" "작")
+(merge-rule "碑" "비~b")
+(merge-rule "碓" "대~b")
+(merge-rule "碗" "완")
+(merge-rule "碟" "설")
+(merge-rule "碣" "갈")
+(merge-rule "碤" "영")
+(merge-rule "碧" "벽")
+(merge-rule "碨" "외~b")
+(merge-rule "碩" "석")
+(merge-rule "碭" "á„ᅡᆼ")
+(merge-rule "確" "확")
+(merge-rule "碻" "확")
+(merge-rule "碼" "마~b")
+(merge-rule "碾" "년")
+(merge-rule "ç£" "자~b")
+(merge-rule "磅" "방")
+(merge-rule "磈" "외~b")
+(merge-rule "磊" "뇌~b")
+(merge-rule "磋" "차~b")
+(merge-rule "磎" "계~b")
+(merge-rule "ç£" "렴")
+(merge-rule "ç£" "반")
+(merge-rule "磑" "애~b")
+(merge-rule "磔" "책")
+(merge-rule "磕" "개~b")
+(merge-rule "磚" "전")
+(merge-rule "磠" "뇨~b")
+(merge-rule "磧" "적")
+(merge-rule "磨" "마~b")
+(merge-rule "磪" "최~b")
+(merge-rule "磬" "경")
+(merge-rule "磯" "기~b")
+(merge-rule "磴" "등")
+(merge-rule "磵" "간")
+(merge-rule "磷" "린")
+(merge-rule "磺" "광")
+(merge-rule "磻" "반")
+(merge-rule "磼" "잡")
+(merge-rule "磽" "교~b")
+(merge-rule "ç¤" "á„Žá…©~b")
+(merge-rule "礌" "뢰~b")
+(merge-rule "礎" "초~b")
+(merge-rule "ç¤" "급")
+(merge-rule "礑" "당")
+(merge-rule "礒" "의~b")
+(merge-rule "礖" "여~b")
+(merge-rule "礙" "애~b")
+(merge-rule "礧" "뢰~b")
+(merge-rule "礪" "려~b")
+(merge-rule "礫" "력")
+(merge-rule "礬" "반")
+(merge-rule "礭" "확")
+(merge-rule "礱" "롱")
+(merge-rule "示" "시~b")
+(merge-rule "社" "사~b")
+(merge-rule "祀" "사~b")
+(merge-rule "ç¥" "기~b")
+(merge-rule "祅" "요~b")
+(merge-rule "祆" "천")
+(merge-rule "祇" "기~b")
+(merge-rule "祈" "기~b")
+(merge-rule "祉" "지~b")
+(merge-rule "祊" "팽")
+(merge-rule "ç¥" "á„‹á…®~b")
+(merge-rule "祓" "불")
+(merge-rule "祔" "부~b")
+(merge-rule "祕" "비~b")
+(merge-rule "祖" "조~b")
+(merge-rule "祗" "지~b")
+(merge-rule "祚" "조~b")
+(merge-rule "祛" "거~b")
+(merge-rule "祜" "호~b")
+(merge-rule "ç¥" "축")
+(merge-rule "神" "신")
+(merge-rule "祟" "수~b")
+(merge-rule "祠" "사~b")
+(merge-rule "祢" "니~b")
+(merge-rule "祥" "상")
+(merge-rule "祧" "조~b")
+(merge-rule "票" "표~b")
+(merge-rule "祭" "제~b")
+(merge-rule "祺" "기~b")
+(merge-rule "祼" "관")
+(merge-rule "祿" "녹")
+(merge-rule "禀" "품")
+(merge-rule "ç¦" "금")
+(merge-rule "禊" "계~b")
+(merge-rule "禋" "인")
+(merge-rule "ç¦" "á„’á…ª~b")
+(merge-rule "禎" "정")
+(merge-rule "ç¦" "복")
+(merge-rule "禑" "우~b")
+(merge-rule "禔" "제~b")
+(merge-rule "ç¦" "직")
+(merge-rule "禦" "어~b")
+(merge-rule "禧" "희~b")
+(merge-rule "禨" "기~b")
+(merge-rule "禪" "선")
+(merge-rule "禫" "담")
+(merge-rule "禮" "례~b")
+(merge-rule "禰" "니~b")
+(merge-rule "禱" "도~b")
+(merge-rule "禳" "양")
+(merge-rule "禴" "약")
+(merge-rule "禹" "우~b")
+(merge-rule "禺" "옹")
+(merge-rule "离" "리~b")
+(merge-rule "禽" "금")
+(merge-rule "禾" "화~b")
+(merge-rule "禿" "독")
+(merge-rule "秀" "수~b")
+(merge-rule "ç§" "사~b")
+(merge-rule "秆" "간")
+(merge-rule "秉" "병")
+(merge-rule "秊" "년")
+(merge-rule "秋" "추~b")
+(merge-rule "科" "과~b")
+(merge-rule "秒" "초~b")
+(merge-rule "秕" "비~b")
+(merge-rule "秘" "비~b")
+(merge-rule "租" "조~b")
+(merge-rule "秢" "령")
+(merge-rule "秣" "말")
+(merge-rule "秤" "칭")
+(merge-rule "秦" "진")
+(merge-rule "秧" "앙")
+(merge-rule "秩" "질")
+(merge-rule "秪" "지~b")
+(merge-rule "秫" "출")
+(merge-rule "秬" "거~b")
+(merge-rule "秸" "갈")
+(merge-rule "移" "이~b")
+(merge-rule "稀" "희~b")
+(merge-rule "ç¨" "고~b")
+(merge-rule "稂" "랑")
+(merge-rule "稅" "세~b")
+(merge-rule "稈" "간")
+(merge-rule "稊" "제~b")
+(merge-rule "程" "정")
+(merge-rule "稌" "도~b")
+(merge-rule "ç¨" "á„Žá…©~b")
+(merge-rule "稔" "임")
+(merge-rule "稗" "패~b")
+(merge-rule "稙" "직")
+(merge-rule "稚" "치~b")
+(merge-rule "稜" "능")
+(merge-rule "稞" "과~b")
+(merge-rule "稟" "품")
+(merge-rule "稠" "조~b")
+(merge-rule "稧" "설")
+(merge-rule "種" "종")
+(merge-rule "稱" "칭")
+(merge-rule "稶" "욱")
+(merge-rule "稷" "직")
+(merge-rule "稹" "진")
+(merge-rule "稻" "도~b")
+(merge-rule "稼" "가~b")
+(merge-rule "稽" "계~b")
+(merge-rule "稿" "고~b")
+(merge-rule "穀" "곡")
+(merge-rule "穅" "강")
+(merge-rule "穆" "목")
+(merge-rule "穉" "치~b")
+(merge-rule "ç©" "적")
+(merge-rule "穎" "영")
+(merge-rule "穗" "수~b")
+(merge-rule "穠" "농")
+(merge-rule "穡" "색")
+(merge-rule "ç©¢" "á„‹á…¨~b")
+(merge-rule "穩" "온")
+(merge-rule "穫" "확")
+(merge-rule "穰" "양")
+(merge-rule "穴" "혈")
+(merge-rule "穵" "알")
+(merge-rule "究" "구~b")
+(merge-rule "穹" "궁")
+(merge-rule "空" "공")
+(merge-rule "穽" "정")
+(merge-rule "穾" "요~b")
+(merge-rule "穿" "천")
+(merge-rule "窀" "둔")
+(merge-rule "çª" "돌")
+(merge-rule "窂" "로~b")
+(merge-rule "窃" "절")
+(merge-rule "窄" "착")
+(merge-rule "窅" "요~b")
+(merge-rule "窆" "폄")
+(merge-rule "窈" "요~b")
+(merge-rule "窊" "와~b")
+(merge-rule "窒" "질")
+(merge-rule "窓" "창")
+(merge-rule "窕" "조~b")
+(merge-rule "窖" "교~b")
+(merge-rule "窗" "창")
+(merge-rule "窘" "군")
+(merge-rule "窛" "구~b")
+(merge-rule "窟" "굴")
+(merge-rule "窠" "과~b")
+(merge-rule "窣" "솔")
+(merge-rule "窩" "와~b")
+(merge-rule "窪" "와~b")
+(merge-rule "窬" "유~b")
+(merge-rule "窮" "궁")
+(merge-rule "窯" "요~b")
+(merge-rule "窳" "유~b")
+(merge-rule "窶" "구~b")
+(merge-rule "窹" "오~b")
+(merge-rule "窺" "규~b")
+(merge-rule "窻" "창")
+(merge-rule "窾" "관")
+(merge-rule "窿" "륭")
+(merge-rule "竄" "찬")
+(merge-rule "竅" "규~b")
+(merge-rule "竇" "두~b")
+(merge-rule "竈" "조~b")
+(merge-rule "竊" "절")
+(merge-rule "立" "립")
+(merge-rule "竗" "묘~b")
+(merge-rule "站" "참")
+(merge-rule "ç«" "병")
+(merge-rule "竟" "경")
+(merge-rule "章" "장")
+(merge-rule "竢" "사~b")
+(merge-rule "竣" "준")
+(merge-rule "童" "동")
+(merge-rule "竦" "송")
+(merge-rule "竪" "수~b")
+(merge-rule "竭" "갈")
+(merge-rule "端" "단")
+(merge-rule "競" "경")
+(merge-rule "竸" "경")
+(merge-rule "竹" "죽")
+(merge-rule "竺" "축")
+(merge-rule "竽" "우~b")
+(merge-rule "竿" "간")
+(merge-rule "笆" "파~b")
+(merge-rule "笈" "급")
+(merge-rule "笊" "조~b")
+(merge-rule "笌" "아~b")
+(merge-rule "ç¬" "홀")
+(merge-rule "笑" "소~b")
+(merge-rule "笒" "금")
+(merge-rule "笘" "점")
+(merge-rule "笙" "생")
+(merge-rule "笛" "적")
+(merge-rule "笞" "á„á…¢~b")
+(merge-rule "笠" "립")
+(merge-rule "笥" "사~b")
+(merge-rule "符" "부~b")
+(merge-rule "笧" "책")
+(merge-rule "笨" "분")
+(merge-rule "第" "제~b")
+(merge-rule "笭" "령")
+(merge-rule "笯" "노~b")
+(merge-rule "笳" "가~b")
+(merge-rule "笵" "범")
+(merge-rule "笹" "세~b")
+(merge-rule "筅" "선")
+(merge-rule "筆" "필")
+(merge-rule "筈" "괄")
+(merge-rule "等" "등")
+(merge-rule "筋" "근")
+(merge-rule "筌" "전")
+(merge-rule "ç­" "순")
+(merge-rule "ç­" "벌")
+(merge-rule "ç­" "광")
+(merge-rule "筑" "축")
+(merge-rule "ç­’" "á„ᅩᆼ")
+(merge-rule "筓" "계~b")
+(merge-rule "答" "답")
+(merge-rule "策" "책")
+(merge-rule "筟" "부~b")
+(merge-rule "筠" "균")
+(merge-rule "筥" "거~b")
+(merge-rule "筦" "관")
+(merge-rule "筧" "견")
+(merge-rule "ç­©" "á„ᅩᆼ")
+(merge-rule "筬" "성")
+(merge-rule "筮" "서~b")
+(merge-rule "筱" "소~b")
+(merge-rule "筳" "정")
+(merge-rule "筵" "연")
+(merge-rule "ç­½" "á„‹á…©~b")
+(merge-rule "箇" "개~b")
+(merge-rule "箋" "전")
+(merge-rule "ç®" "고~b")
+(merge-rule "箎" "호~b")
+(merge-rule "ç®" "쟁")
+(merge-rule "ç®’" "á„Žá…®~b")
+(merge-rule "箔" "박")
+(merge-rule "箕" "기~b")
+(merge-rule "算" "산")
+(merge-rule "箙" "복")
+(merge-rule "箚" "차~b")
+(merge-rule "箜" "공")
+(merge-rule "ç®" "겸")
+(merge-rule "ç® " "á„Žá…®~b")
+(merge-rule "管" "관")
+(merge-rule "箭" "전")
+(merge-rule "箱" "상")
+(merge-rule "箴" "잠")
+(merge-rule "箸" "저~b")
+(merge-rule "箾" "소~b")
+(merge-rule "節" "절")
+(merge-rule "ç¯" "황")
+(merge-rule "範" "범")
+(merge-rule "篆" "전")
+(merge-rule "篇" "편")
+(merge-rule "築" "축")
+(merge-rule "篊" "홍")
+(merge-rule "篋" "협")
+(merge-rule "篌" "후~b")
+(merge-rule "篒" "식")
+(merge-rule "篔" "운")
+(merge-rule "篙" "고~b")
+(merge-rule "篛" "약")
+(merge-rule "ç¯" "구~b")
+(merge-rule "篠" "소~b")
+(merge-rule "篤" "독")
+(merge-rule "篦" "비~b")
+(merge-rule "篩" "사~b")
+(merge-rule "篪" "지~b")
+(merge-rule "篳" "필")
+(merge-rule "篷" "봉")
+(merge-rule "篾" "멸")
+(merge-rule "簀" "책")
+(merge-rule "簇" "족")
+(merge-rule "ç°‰" "á„Žá…®~b")
+(merge-rule "簋" "궤~b")
+(merge-rule "ç°" "록")
+(merge-rule "簒" "찬")
+(merge-rule "簞" "단")
+(merge-rule "簟" "점")
+(merge-rule "簠" "보~b")
+(merge-rule "簡" "간")
+(merge-rule "簧" "황")
+(merge-rule "簪" "잠")
+(merge-rule "簫" "소~b")
+(merge-rule "簷" "첨")
+(merge-rule "ç°¸" "á„‘á…¡~b")
+(merge-rule "簽" "첨")
+(merge-rule "簾" "렴")
+(merge-rule "簿" "부~b")
+(merge-rule "籃" "람")
+(merge-rule "籌" "주~b")
+(merge-rule "ç±" "적")
+(merge-rule "ç±" "등")
+(merge-rule "籒" "주~b")
+(merge-rule "籔" "수~b")
+(merge-rule "籛" "전")
+(merge-rule "籜" "á„ᅡᆨ")
+(merge-rule "籟" "뢰~b")
+(merge-rule "籠" "농")
+(merge-rule "籤" "첨")
+(merge-rule "籥" "약")
+(merge-rule "籧" "거~b")
+(merge-rule "籩" "변")
+(merge-rule "籬" "리~b")
+(merge-rule "ç±²" "á„‹á…²~b")
+(merge-rule "米" "미~b")
+(merge-rule "籾" "인")
+(merge-rule "ç²" "천")
+(merge-rule "粃" "비~b")
+(merge-rule "粉" "분")
+(merge-rule "ç²" "모~b")
+(merge-rule "粒" "립")
+(merge-rule "粕" "박")
+(merge-rule "粗" "조~b")
+(merge-rule "粘" "점")
+(merge-rule "粟" "속")
+(merge-rule "粢" "자~b")
+(merge-rule "粤" "월")
+(merge-rule "粥" "죽")
+(merge-rule "粦" "린")
+(merge-rule "粧" "장")
+(merge-rule "粨" "백")
+(merge-rule "粮" "량")
+(merge-rule "粱" "량")
+(merge-rule "粲" "찬")
+(merge-rule "粳" "갱")
+(merge-rule "粹" "수~b")
+(merge-rule "粼" "린")
+(merge-rule "粽" "종")
+(merge-rule "精" "정")
+(merge-rule "ç³…" "á„‹á…²~b")
+(merge-rule "糆" "면")
+(merge-rule "糊" "호~b")
+(merge-rule "糕" "고~b")
+(merge-rule "糖" "당")
+(merge-rule "糗" "구~b")
+(merge-rule "糙" "조~b")
+(merge-rule "糚" "장")
+(merge-rule "糜" "미~b")
+(merge-rule "ç³" "삼")
+(merge-rule "糞" "분")
+(merge-rule "糟" "조~b")
+(merge-rule "糠" "강")
+(merge-rule "糢" "모~b")
+(merge-rule "ç³¥" "á„‚á…¡~b")
+(merge-rule "糧" "량")
+(merge-rule "糯" "나~b")
+(merge-rule "ç³²" "á„…á…§~b")
+(merge-rule "糴" "적")
+(merge-rule "糶" "조~b")
+(merge-rule "糸" "멱")
+(merge-rule "糺" "규~b")
+(merge-rule "系" "계~b")
+(merge-rule "糾" "규~b")
+(merge-rule "紀" "기~b")
+(merge-rule "紂" "주~b")
+(merge-rule "紃" "순")
+(merge-rule "約" "약")
+(merge-rule "紅" "홍")
+(merge-rule "ç´†" "á„‹á…®~b")
+(merge-rule "紇" "흘")
+(merge-rule "紈" "환")
+(merge-rule "紊" "문")
+(merge-rule "紋" "문")
+(merge-rule "ç´" "납")
+(merge-rule "ç´" "á„‚á…²~b")
+(merge-rule "紓" "서~b")
+(merge-rule "純" "순")
+(merge-rule "紕" "비~b")
+(merge-rule "紗" "사~b")
+(merge-rule "紘" "굉")
+(merge-rule "紙" "지~b")
+(merge-rule "級" "급")
+(merge-rule "紛" "분")
+(merge-rule "紜" "운")
+(merge-rule "素" "소~b")
+(merge-rule "紡" "방")
+(merge-rule "索" "삭")
+(merge-rule "紫" "자~b")
+(merge-rule "紬" "주~b")
+(merge-rule "紮" "찰")
+(merge-rule "ç´¯" "á„‚á…®~b")
+(merge-rule "細" "세~b")
+(merge-rule "紱" "불")
+(merge-rule "紲" "설")
+(merge-rule "紳" "신")
+(merge-rule "紵" "저~b")
+(merge-rule "紹" "소~b")
+(merge-rule "紺" "감")
+(merge-rule "終" "종")
+(merge-rule "絃" "현")
+(merge-rule "組" "조~b")
+(merge-rule "絅" "경")
+(merge-rule "絆" "반")
+(merge-rule "絉" "술")
+(merge-rule "çµ" "임")
+(merge-rule "çµ" "결")
+(merge-rule "絖" "광")
+(merge-rule "絙" "환")
+(merge-rule "絛" "조~b")
+(merge-rule "絜" "혈")
+(merge-rule "絞" "교~b")
+(merge-rule "絡" "락")
+(merge-rule "絢" "현")
+(merge-rule "絣" "병")
+(merge-rule "給" "급")
+(merge-rule "絨" "융")
+(merge-rule "絩" "조~b")
+(merge-rule "絪" "인")
+(merge-rule "絮" "서~b")
+(merge-rule "絰" "질")
+(merge-rule "çµ±" "á„ᅩᆼ")
+(merge-rule "絲" "사~b")
+(merge-rule "絳" "강")
+(merge-rule "絶" "절")
+(merge-rule "絹" "견")
+(merge-rule "絺" "치~b")
+(merge-rule "絿" "구~b")
+(merge-rule "綃" "초~b")
+(merge-rule "綆" "경")
+(merge-rule "綎" "정")
+(merge-rule "ç¶" "수~b")
+(merge-rule "經" "경")
+(merge-rule "綘" "봉")
+(merge-rule "綜" "종")
+(merge-rule "綠" "녹")
+(merge-rule "綢" "주~b")
+(merge-rule "綣" "권")
+(merge-rule "綥" "기~b")
+(merge-rule "綦" "기~b")
+(merge-rule "綧" "준")
+(merge-rule "綩" "원")
+(merge-rule "綫" "선")
+(merge-rule "綬" "수~b")
+(merge-rule "維" "유~b")
+(merge-rule "綮" "계~b")
+(merge-rule "綰" "관")
+(merge-rule "綱" "강")
+(merge-rule "網" "망")
+(merge-rule "綴" "철")
+(merge-rule "綵" "채~b")
+(merge-rule "綸" "륜")
+(merge-rule "綺" "기~b")
+(merge-rule "綻" "á„ᅡᆫ")
+(merge-rule "綽" "작")
+(merge-rule "綾" "능")
+(merge-rule "綿" "면")
+(merge-rule "緄" "곤")
+(merge-rule "ç·‡" "á„Žá…µ~b")
+(merge-rule "緊" "긴")
+(merge-rule "緋" "비~b")
+(merge-rule "緌" "유~b")
+(merge-rule "ç·" "민")
+(merge-rule "緖" "서~b")
+(merge-rule "緗" "상")
+(merge-rule "緘" "함")
+(merge-rule "線" "선")
+(merge-rule "緜" "면")
+(merge-rule "ç·" "집")
+(merge-rule "緞" "단")
+(merge-rule "ç· " "á„Žá…¦~b")
+(merge-rule "緡" "민")
+(merge-rule "緣" "연")
+(merge-rule "緦" "시~b")
+(merge-rule "編" "편")
+(merge-rule "緩" "완")
+(merge-rule "緬" "면")
+(merge-rule "ç·¯" "á„‹á…±~b")
+(merge-rule "練" "련")
+(merge-rule "緶" "편")
+(merge-rule "緹" "제~b")
+(merge-rule "ç·»" "á„Žá…µ~b")
+(merge-rule "縈" "영")
+(merge-rule "縉" "진")
+(merge-rule "縊" "액")
+(merge-rule "縋" "추~b")
+(merge-rule "ç¸" "á„Žá…®~b")
+(merge-rule "縑" "겸")
+(merge-rule "縕" "온")
+(merge-rule "縗" "최~b")
+(merge-rule "縘" "계~b")
+(merge-rule "縛" "박")
+(merge-rule "ç¸" "진")
+(merge-rule "縞" "호~b")
+(merge-rule "縟" "욕")
+(merge-rule "縠" "곡")
+(merge-rule "縡" "재~b")
+(merge-rule "縢" "등")
+(merge-rule "縣" "현")
+(merge-rule "縫" "봉")
+(merge-rule "縮" "축")
+(merge-rule "縯" "연")
+(merge-rule "縱" "종")
+(merge-rule "縲" "류~b")
+(merge-rule "縳" "견")
+(merge-rule "縵" "만")
+(merge-rule "縷" "누~b")
+(merge-rule "縹" "표~b")
+(merge-rule "縻" "미~b")
+(merge-rule "總" "총")
+(merge-rule "績" "적")
+(merge-rule "ç¹" "번")
+(merge-rule "繃" "붕")
+(merge-rule "繄" "예~b")
+(merge-rule "繅" "소~b")
+(merge-rule "繆" "무~b")
+(merge-rule "繇" "요~b")
+(merge-rule "繈" "강")
+(merge-rule "ç¹" "세~b")
+(merge-rule "繒" "증")
+(merge-rule "織" "직")
+(merge-rule "繕" "선")
+(merge-rule "繖" "산")
+(merge-rule "繗" "린")
+(merge-rule "繙" "번")
+(merge-rule "繚" "료~b")
+(merge-rule "繞" "요~b")
+(merge-rule "繡" "수~b")
+(merge-rule "繢" "궤~b")
+(merge-rule "繩" "승")
+(merge-rule "繪" "회~b")
+(merge-rule "繫" "계~b")
+(merge-rule "繭" "견")
+(merge-rule "繯" "현")
+(merge-rule "繰" "조~b")
+(merge-rule "繶" "억")
+(merge-rule "繹" "역")
+(merge-rule "繼" "계~b")
+(merge-rule "繽" "빈")
+(merge-rule "繾" "견")
+(merge-rule "çº" "훈")
+(merge-rule "纂" "찬")
+(merge-rule "纇" "뢰~b")
+(merge-rule "纈" "힐")
+(merge-rule "纊" "광")
+(merge-rule "續" "속")
+(merge-rule "çº" "á„…á…²~b")
+(merge-rule "çº" "전")
+(merge-rule "纓" "영")
+(merge-rule "纔" "재~b")
+(merge-rule "纖" "섬")
+(merge-rule "纘" "찬")
+(merge-rule "纛" "독")
+(merge-rule "纜" "람")
+(merge-rule "缶" "부~b")
+(merge-rule "缷" "사~b")
+(merge-rule "缸" "항")
+(merge-rule "缺" "결")
+(merge-rule "缾" "병")
+(merge-rule "缿" "항")
+(merge-rule "罃" "앵")
+(merge-rule "罄" "경")
+(merge-rule "ç½…" "á„’á…¡~b")
+(merge-rule "罇" "준")
+(merge-rule "罋" "옹")
+(merge-rule "罌" "앵")
+(merge-rule "ç½" "á„…á…¬~b")
+(merge-rule "罎" "담")
+(merge-rule "ç½" "관")
+(merge-rule "罔" "망")
+(merge-rule "罕" "한")
+(merge-rule "罘" "부~b")
+(merge-rule "ç½" "저~b")
+(merge-rule "罟" "고~b")
+(merge-rule "罠" "민")
+(merge-rule "罡" "강")
+(merge-rule "罣" "괘~b")
+(merge-rule "罦" "부~b")
+(merge-rule "罨" "엄")
+(merge-rule "罪" "죄~b")
+(merge-rule "罫" "괘~b")
+(merge-rule "ç½®" "á„Žá…µ~b")
+(merge-rule "罰" "벌")
+(merge-rule "署" "서~b")
+(merge-rule "罵" "매~b")
+(merge-rule "ç½·" "á„‘á…¡~b")
+(merge-rule "罸" "벌")
+(merge-rule "ç½¹" "á„…á…µ~b")
+(merge-rule "罼" "필")
+(merge-rule "罽" "계~b")
+(merge-rule "罾" "증")
+(merge-rule "羂" "견")
+(merge-rule "ç¾…" "á„‚á…¡~b")
+(merge-rule "羆" "비~b")
+(merge-rule "羇" "기~b")
+(merge-rule "羈" "기~b")
+(merge-rule "羊" "양")
+(merge-rule "羌" "강")
+(merge-rule "美" "미~b")
+(merge-rule "羔" "고~b")
+(merge-rule "羖" "고~b")
+(merge-rule "羗" "강")
+(merge-rule "羘" "장")
+(merge-rule "羚" "령")
+(merge-rule "ç¾" "저~b")
+(merge-rule "羞" "수~b")
+(merge-rule "群" "군")
+(merge-rule "羨" "선")
+(merge-rule "義" "의~b")
+(merge-rule "羫" "강")
+(merge-rule "羯" "갈")
+(merge-rule "ç¾²" "á„’á…´~b")
+(merge-rule "羶" "전")
+(merge-rule "羸" "리~b")
+(merge-rule "羹" "갱")
+(merge-rule "ç¾½" "á„‹á…®~b")
+(merge-rule "ç¿" "옹")
+(merge-rule "翅" "시~b")
+(merge-rule "翊" "익")
+(merge-rule "翌" "익")
+(merge-rule "翎" "령")
+(merge-rule "習" "습")
+(merge-rule "翔" "상")
+(merge-rule "翕" "흡")
+(merge-rule "翖" "흡")
+(merge-rule "翛" "소~b")
+(merge-rule "翟" "적")
+(merge-rule "ç¿ " "á„Žá…±~b")
+(merge-rule "翡" "비~b")
+(merge-rule "翣" "삽")
+(merge-rule "翤" "시~b")
+(merge-rule "翦" "전")
+(merge-rule "翩" "편")
+(merge-rule "翫" "완")
+(merge-rule "翬" "휘~b")
+(merge-rule "翮" "핵")
+(merge-rule "翰" "한")
+(merge-rule "翳" "예~b")
+(merge-rule "翹" "교~b")
+(merge-rule "翺" "고~b")
+(merge-rule "翻" "번")
+(merge-rule "翼" "익")
+(merge-rule "翾" "현")
+(merge-rule "耀" "요~b")
+(merge-rule "è€" "á„‚á…©~b")
+(merge-rule "考" "고~b")
+(merge-rule "耄" "모~b")
+(merge-rule "者" "자~b")
+(merge-rule "耆" "기~b")
+(merge-rule "耉" "구~b")
+(merge-rule "而" "이~b")
+(merge-rule "è€" "á„‚á…¢~b")
+(merge-rule "耑" "단")
+(merge-rule "耒" "뢰~b")
+(merge-rule "耔" "자~b")
+(merge-rule "耕" "경")
+(merge-rule "耖" "초~b")
+(merge-rule "耗" "모~b")
+(merge-rule "耘" "운")
+(merge-rule "耙" "파~b")
+(merge-rule "耞" "가~b")
+(merge-rule "耡" "서~b")
+(merge-rule "耦" "우~b")
+(merge-rule "耨" "누~b")
+(merge-rule "耬" "루~b")
+(merge-rule "耭" "기~b")
+(merge-rule "耰" "우~b")
+(merge-rule "耳" "이~b")
+(merge-rule "耶" "야~b")
+(merge-rule "耽" "á„ᅡᆷ")
+(merge-rule "耿" "경")
+(merge-rule "èƒ" "담")
+(merge-rule "è†" "령")
+(merge-rule "èŠ" "á„…á…­~b")
+(merge-rule "è’" "괄")
+(merge-rule "è•" "á„’á…©~b")
+(merge-rule "è–" "성")
+(merge-rule "è˜" "빙")
+(merge-rule "èš" "á„Žá…±~b")
+(merge-rule "èž" "문")
+(merge-rule "è¯" "련")
+(merge-rule "è°" "총")
+(merge-rule "è±" "á„‹á…©~b")
+(merge-rule "è²" "성")
+(merge-rule "è³" "용")
+(merge-rule "èµ" "á„‹á…¬~b")
+(merge-rule "è¶" "섭")
+(merge-rule "è·" "직")
+(merge-rule "è½" "청")
+(merge-rule "è¾" "농")
+(merge-rule "è¿" "율")
+(merge-rule "è‚„" "á„‹á…µ~b")
+(merge-rule "肅" "숙")
+(merge-rule "肆" "사~b")
+(merge-rule "肇" "조~b")
+(merge-rule "肉" "육")
+(merge-rule "肋" "늑")
+(merge-rule "肌" "기~b")
+(merge-rule "肓" "황")
+(merge-rule "è‚–" "á„Žá…©~b")
+(merge-rule "肘" "주~b")
+(merge-rule "肚" "두~b")
+(merge-rule "肛" "항")
+(merge-rule "è‚" "간")
+(merge-rule "股" "고~b")
+(merge-rule "肢" "지~b")
+(merge-rule "肥" "비~b")
+(merge-rule "肦" "분")
+(merge-rule "肩" "견")
+(merge-rule "肪" "방")
+(merge-rule "肫" "순")
+(merge-rule "肭" "눌")
+(merge-rule "肯" "긍")
+(merge-rule "肱" "굉")
+(merge-rule "育" "육")
+(merge-rule "è‚´" "á„’á…­~b")
+(merge-rule "肵" "기~b")
+(merge-rule "肺" "폐~b")
+(merge-rule "胃" "위~b")
+(merge-rule "胄" "주~b")
+(merge-rule "胆" "단")
+(merge-rule "胊" "구~b")
+(merge-rule "背" "배~b")
+(merge-rule "胎" "á„á…¢~b")
+(merge-rule "胕" "부~b")
+(merge-rule "胖" "반")
+(merge-rule "胙" "조~b")
+(merge-rule "胚" "배~b")
+(merge-rule "胛" "갑")
+(merge-rule "胞" "포~b")
+(merge-rule "胠" "거~b")
+(merge-rule "胡" "호~b")
+(merge-rule "胤" "윤")
+(merge-rule "胥" "서~b")
+(merge-rule "胯" "고~b")
+(merge-rule "胱" "광")
+(merge-rule "胴" "동")
+(merge-rule "胷" "흉")
+(merge-rule "胸" "흉")
+(merge-rule "能" "능")
+(merge-rule "胾" "자~b")
+(merge-rule "脂" "지~b")
+(merge-rule "脅" "협")
+(merge-rule "脆" "취~b")
+(merge-rule "脇" "협")
+(merge-rule "脈" "맥")
+(merge-rule "脉" "맥")
+(merge-rule "脊" "척")
+(merge-rule "脖" "발")
+(merge-rule "脘" "완")
+(merge-rule "脚" "각")
+(merge-rule "脛" "경")
+(merge-rule "脣" "순")
+(merge-rule "脤" "신")
+(merge-rule "脧" "최~b")
+(merge-rule "脩" "수~b")
+(merge-rule "è„«" "á„ᅡᆯ")
+(merge-rule "脯" "포~b")
+(merge-rule "脰" "두~b")
+(merge-rule "脹" "창")
+(merge-rule "脺" "수~b")
+(merge-rule "脾" "비~b")
+(merge-rule "è…" "변")
+(merge-rule "腆" "전")
+(merge-rule "腊" "석")
+(merge-rule "腋" "액")
+(merge-rule "腎" "신")
+(merge-rule "è…" "부~b")
+(merge-rule "腑" "부~b")
+(merge-rule "腒" "거~b")
+(merge-rule "腓" "비~b")
+(merge-rule "腔" "강")
+(merge-rule "腕" "완")
+(merge-rule "腠" "주~b")
+(merge-rule "腤" "암")
+(merge-rule "腥" "성")
+(merge-rule "è…¦" "á„‚á…¬~b")
+(merge-rule "腫" "종")
+(merge-rule "腭" "악")
+(merge-rule "è…°" "á„‹á…­~b")
+(merge-rule "腱" "건")
+(merge-rule "è…´" "á„‹á…²~b")
+(merge-rule "腶" "단")
+(merge-rule "腷" "픽")
+(merge-rule "腸" "장")
+(merge-rule "腹" "복")
+(merge-rule "腺" "선")
+(merge-rule "è…¿" "á„á…¬~b")
+(merge-rule "膀" "방")
+(merge-rule "膂" "려~b")
+(merge-rule "膃" "올")
+(merge-rule "膄" "수~b")
+(merge-rule "膆" "소~b")
+(merge-rule "膈" "격")
+(merge-rule "膊" "박")
+(merge-rule "膋" "료~b")
+(merge-rule "è†" "고~b")
+(merge-rule "膚" "부~b")
+(merge-rule "膜" "막")
+(merge-rule "è†" "슬")
+(merge-rule "膞" "전")
+(merge-rule "膠" "교~b")
+(merge-rule "膣" "질")
+(merge-rule "膨" "팽")
+(merge-rule "膩" "니~b")
+(merge-rule "膰" "번")
+(merge-rule "膳" "선")
+(merge-rule "膴" "무~b")
+(merge-rule "膵" "췌~b")
+(merge-rule "膸" "수~b")
+(merge-rule "膹" "분")
+(merge-rule "膺" "응")
+(merge-rule "膽" "담")
+(merge-rule "膾" "회~b")
+(merge-rule "膿" "농")
+(merge-rule "臀" "둔")
+(merge-rule "臂" "비~b")
+(merge-rule "臆" "억")
+(merge-rule "臊" "조~b")
+(merge-rule "è‡" "제~b")
+(merge-rule "è‡" "빈")
+(merge-rule "臑" "노~b")
+(merge-rule "臘" "납")
+(merge-rule "臙" "연")
+(merge-rule "臚" "려~b")
+(merge-rule "è‡" "á„…á…¡~b")
+(merge-rule "臟" "장")
+(merge-rule "臠" "련")
+(merge-rule "臣" "신")
+(merge-rule "臥" "와~b")
+(merge-rule "臧" "장")
+(merge-rule "臨" "림")
+(merge-rule "自" "자~b")
+(merge-rule "臬" "얼")
+(merge-rule "臭" "취~b")
+(merge-rule "至" "지~b")
+(merge-rule "致" "치~b")
+(merge-rule "臶" "천")
+(merge-rule "臺" "대~b")
+(merge-rule "臻" "진")
+(merge-rule "臼" "구~b")
+(merge-rule "臾" "유~b")
+(merge-rule "èˆ" "á„‹á…§~b")
+(merge-rule "舂" "용")
+(merge-rule "舃" "석")
+(merge-rule "舅" "구~b")
+(merge-rule "與" "여~b")
+(merge-rule "興" "흥")
+(merge-rule "舊" "구~b")
+(merge-rule "舌" "설")
+(merge-rule "èˆ" "사~b")
+(merge-rule "èˆ" "지~b")
+(merge-rule "舒" "서~b")
+(merge-rule "舖" "포~b")
+(merge-rule "舛" "천")
+(merge-rule "舜" "순")
+(merge-rule "舞" "무~b")
+(merge-rule "舟" "주~b")
+(merge-rule "舡" "강")
+(merge-rule "航" "항")
+(merge-rule "舫" "방")
+(merge-rule "般" "반")
+(merge-rule "舳" "축")
+(merge-rule "舵" "á„á…¡~b")
+(merge-rule "舶" "박")
+(merge-rule "舷" "현")
+(merge-rule "舸" "가~b")
+(merge-rule "船" "선")
+(merge-rule "舽" "방")
+(merge-rule "艀" "부~b")
+(merge-rule "艅" "여~b")
+(merge-rule "艇" "정")
+(merge-rule "艑" "편")
+(merge-rule "艘" "소~b")
+(merge-rule "艙" "창")
+(merge-rule "艚" "조~b")
+(merge-rule "艟" "동")
+(merge-rule "艤" "의~b")
+(merge-rule "艦" "함")
+(merge-rule "艨" "몽")
+(merge-rule "艪" "로~b")
+(merge-rule "艫" "로~b")
+(merge-rule "艮" "간")
+(merge-rule "良" "량")
+(merge-rule "艱" "간")
+(merge-rule "色" "색")
+(merge-rule "艴" "불")
+(merge-rule "艶" "염")
+(merge-rule "艸" "초~b")
+(merge-rule "艾" "애~b")
+(merge-rule "芊" "천")
+(merge-rule "芋" "우~b")
+(merge-rule "èŠ" "작")
+(merge-rule "芎" "궁")
+(merge-rule "芒" "망")
+(merge-rule "芔" "훼~b")
+(merge-rule "芘" "비~b")
+(merge-rule "芙" "부~b")
+(merge-rule "芚" "둔")
+(merge-rule "èŠ" "지~b")
+(merge-rule "芟" "삼")
+(merge-rule "芡" "검")
+(merge-rule "芢" "인")
+(merge-rule "芣" "부~b")
+(merge-rule "芥" "개~b")
+(merge-rule "芦" "호~b")
+(merge-rule "芧" "서~b")
+(merge-rule "芨" "급")
+(merge-rule "芩" "금")
+(merge-rule "芪" "기~b")
+(merge-rule "芫" "원")
+(merge-rule "芬" "분")
+(merge-rule "芭" "파~b")
+(merge-rule "芮" "예~b")
+(merge-rule "芯" "심")
+(merge-rule "芰" "기~b")
+(merge-rule "花" "화~b")
+(merge-rule "芳" "방")
+(merge-rule "芷" "지~b")
+(merge-rule "芸" "운")
+(merge-rule "芹" "근")
+(merge-rule "芻" "추~b")
+(merge-rule "芼" "모~b")
+(merge-rule "芽" "아~b")
+(merge-rule "芾" "비~b")
+(merge-rule "芿" "잉")
+(merge-rule "è‹…" "á„‹á…¨~b")
+(merge-rule "苑" "원")
+(merge-rule "苒" "염")
+(merge-rule "苓" "령")
+(merge-rule "è‹”" "á„á…¢~b")
+(merge-rule "è‹•" "á„Žá…©~b")
+(merge-rule "苗" "묘~b")
+(merge-rule "苛" "가~b")
+(merge-rule "苜" "목")
+(merge-rule "è‹ž" "á„‘á…©~b")
+(merge-rule "苟" "구~b")
+(merge-rule "苠" "민")
+(merge-rule "è‹¡" "á„‹á…µ~b")
+(merge-rule "苣" "거~b")
+(merge-rule "è‹¥" "á„‹á…£~b")
+(merge-rule "苦" "고~b")
+(merge-rule "苧" "저~b")
+(merge-rule "苫" "점")
+(merge-rule "英" "영")
+(merge-rule "苳" "동")
+(merge-rule "苴" "저~b")
+(merge-rule "苹" "평")
+(merge-rule "苺" "매~b")
+(merge-rule "苻" "부~b")
+(merge-rule "苽" "고~b")
+(merge-rule "苾" "필")
+(merge-rule "苿" "미~b")
+(merge-rule "茀" "불")
+(merge-rule "èŒ" "줄")
+(merge-rule "茂" "무~b")
+(merge-rule "范" "범")
+(merge-rule "茄" "가~b")
+(merge-rule "茅" "모~b")
+(merge-rule "茈" "자~b")
+(merge-rule "茉" "말")
+(merge-rule "茗" "명")
+(merge-rule "茛" "간")
+(merge-rule "茜" "천")
+(merge-rule "èŒ" "á„Žá…¢~b")
+(merge-rule "茣" "오~b")
+(merge-rule "茨" "자~b")
+(merge-rule "茪" "광")
+(merge-rule "茫" "망")
+(merge-rule "茯" "복")
+(merge-rule "茱" "수~b")
+(merge-rule "茲" "자~b")
+(merge-rule "茳" "강")
+(merge-rule "茴" "회~b")
+(merge-rule "茵" "인")
+(merge-rule "茶" "다~b")
+(merge-rule "茸" "용")
+(merge-rule "茹" "여~b")
+(merge-rule "茼" "동")
+(merge-rule "è€" "순")
+(merge-rule "èƒ" "전")
+(merge-rule "è‡" "행")
+(merge-rule "è‰" "á„Žá…©~b")
+(merge-rule "èŠ" "형")
+(merge-rule "è" "임")
+(merge-rule "è" "천")
+(merge-rule "è‘" "á„‹á…µ~b")
+(merge-rule "è’" "황")
+(merge-rule "è³" "두~b")
+(merge-rule "è·" "á„’á…¡~b")
+(merge-rule "è»" "적")
+(merge-rule "莅" "리~b")
+(merge-rule "莉" "리~b")
+(merge-rule "莊" "장")
+(merge-rule "莎" "사~b")
+(merge-rule "莒" "거~b")
+(merge-rule "莓" "매~b")
+(merge-rule "莖" "경")
+(merge-rule "莘" "신")
+(merge-rule "莚" "연")
+(merge-rule "莛" "정")
+(merge-rule "èŽ" "좌~b")
+(merge-rule "莞" "완")
+(merge-rule "莟" "함")
+(merge-rule "莠" "유~b")
+(merge-rule "莢" "협")
+(merge-rule "莨" "랑")
+(merge-rule "莩" "부~b")
+(merge-rule "莪" "아~b")
+(merge-rule "莫" "막")
+(merge-rule "莽" "망")
+(merge-rule "莾" "망")
+(merge-rule "莿" "자~b")
+(merge-rule "è" "청")
+(merge-rule "è‚" "적")
+(merge-rule "è…" "관")
+(merge-rule "è‰" "녹")
+(merge-rule "èŠ" "국")
+(merge-rule "èŒ" "균")
+(merge-rule "è‘" "á„Žá…µ~b")
+(merge-rule "è“" "과~b")
+(merge-rule "è”" "복")
+(merge-rule "è–" "창")
+(merge-rule "è˜" "숭")
+(merge-rule "èœ" "á„Žá…¢~b")
+(merge-rule "èŸ" "도~b")
+(merge-rule "è " "á„‘á…¡~b")
+(merge-rule "è¡" "함")
+(merge-rule "è©" "보~b")
+(merge-rule "è«" "근")
+(merge-rule "è¯" "á„’á…ª~b")
+(merge-rule "è°" "고~b")
+(merge-rule "è±" "능")
+(merge-rule "è²" "비~b")
+(merge-rule "è´" "암")
+(merge-rule "è¶" "봉")
+(merge-rule "è¹" "저~b")
+(merge-rule "è½" "숙")
+(merge-rule "èƒ" "á„Žá…°~b")
+(merge-rule "è„" "도~b")
+(merge-rule "è†" "비~b")
+(merge-rule "è‡" "장")
+(merge-rule "èŠ" "á„…á…¢~b")
+(merge-rule "è‹" "á„Žá…¥~b")
+(merge-rule "èŒ" "맹")
+(merge-rule "è" "평")
+(merge-rule "èŽ" "á„‹á…±~b")
+(merge-rule "è©" "á„Žá…®~b")
+(merge-rule "è¬" "만")
+(merge-rule "è±" "훤")
+(merge-rule "èµ" "á„‹á…ª~b")
+(merge-rule "è¸" "á„‹á…²~b")
+(merge-rule "è¹" "편")
+(merge-rule "è¼" "악")
+(merge-rule "è½" "낙")
+(merge-rule "葆" "보~b")
+(merge-rule "葉" "섭")
+(merge-rule "葊" "암")
+(merge-rule "葑" "풍")
+(merge-rule "著" "저~b")
+(merge-rule "葚" "심")
+(merge-rule "葛" "갈")
+(merge-rule "è‘¡" "á„‘á…©~b")
+(merge-rule "董" "동")
+(merge-rule "葦" "위~b")
+(merge-rule "è‘©" "á„‘á…¡~b")
+(merge-rule "葪" "계~b")
+(merge-rule "è‘«" "á„’á…©~b")
+(merge-rule "葬" "장")
+(merge-rule "葭" "가~b")
+(merge-rule "葯" "약")
+(merge-rule "葱" "총")
+(merge-rule "葳" "위~b")
+(merge-rule "葵" "규~b")
+(merge-rule "葷" "훈")
+(merge-rule "葺" "즙")
+(merge-rule "è’‚" "á„Žá…¦~b")
+(merge-rule "è’" "수~b")
+(merge-rule "蒔" "시~b")
+(merge-rule "蒙" "몽")
+(merge-rule "蒜" "산")
+(merge-rule "蒟" "구~b")
+(merge-rule "蒡" "방")
+(merge-rule "蒨" "천")
+(merge-rule "è’­" "á„Žá…®~b")
+(merge-rule "蒯" "괴~b")
+(merge-rule "è’²" "á„‘á…©~b")
+(merge-rule "蒴" "삭")
+(merge-rule "蒸" "증")
+(merge-rule "蒹" "겸")
+(merge-rule "蒺" "질")
+(merge-rule "蒻" "약")
+(merge-rule "蒼" "창")
+(merge-rule "è’¿" "á„’á…©~b")
+(merge-rule "蓀" "손")
+(merge-rule "è“" "진")
+(merge-rule "蓂" "명")
+(merge-rule "蓄" "축")
+(merge-rule "蓆" "석")
+(merge-rule "蓉" "용")
+(merge-rule "蓊" "옹")
+(merge-rule "蓋" "개~b")
+(merge-rule "è“" "시~b")
+(merge-rule "è“" "욕")
+(merge-rule "蓑" "사~b")
+(merge-rule "蓓" "배~b")
+(merge-rule "蓖" "비~b")
+(merge-rule "蓚" "수~b")
+(merge-rule "蓬" "봉")
+(merge-rule "蓭" "암")
+(merge-rule "蓮" "련")
+(merge-rule "蓯" "총")
+(merge-rule "蓱" "평")
+(merge-rule "蓴" "순")
+(merge-rule "蓼" "료~b")
+(merge-rule "蓽" "필")
+(merge-rule "蔀" "부~b")
+(merge-rule "蔆" "릉")
+(merge-rule "蔑" "멸")
+(merge-rule "蔓" "만")
+(merge-rule "蔔" "복")
+(merge-rule "蔕" "체~b")
+(merge-rule "蔗" "자~b")
+(merge-rule "蔘" "삼")
+(merge-rule "蔚" "울")
+(merge-rule "蔞" "루~b")
+(merge-rule "蔟" "주~b")
+(merge-rule "蔡" "채~b")
+(merge-rule "蔣" "장")
+(merge-rule "蔥" "총")
+(merge-rule "蔦" "조~b")
+(merge-rule "蔪" "점")
+(merge-rule "蔬" "소~b")
+(merge-rule "蔭" "음")
+(merge-rule "蔯" "진")
+(merge-rule "蔽" "폐~b")
+(merge-rule "蔿" "위~b")
+(merge-rule "è•" "담")
+(merge-rule "蕃" "번")
+(merge-rule "蕆" "천")
+(merge-rule "蕉" "초~b")
+(merge-rule "è•Š" "á„‹á…¨~b")
+(merge-rule "è•‹" "á„‹á…¨~b")
+(merge-rule "蕎" "교~b")
+(merge-rule "蕓" "운")
+(merge-rule "è••" "á„‹á…²~b")
+(merge-rule "蕖" "거~b")
+(merge-rule "蕘" "요~b")
+(merge-rule "è•™" "á„’á…¨~b")
+(merge-rule "è•ž" "á„Žá…¦~b")
+(merge-rule "蕡" "분")
+(merge-rule "蕣" "순")
+(merge-rule "蕤" "유~b")
+(merge-rule "蕨" "궐")
+(merge-rule "è•©" "á„ᅡᆼ")
+(merge-rule "蕪" "무~b")
+(merge-rule "蕫" "동")
+(merge-rule "蕭" "소~b")
+(merge-rule "蕺" "즙")
+(merge-rule "蕾" "뢰~b")
+(merge-rule "薀" "온")
+(merge-rule "薄" "박")
+(merge-rule "è–†" "á„‹á…¢~b")
+(merge-rule "薇" "미~b")
+(merge-rule "è–‰" "á„‹á…¨~b")
+(merge-rule "薊" "계~b")
+(merge-rule "薌" "향")
+(merge-rule "è–" "á„‹á…´~b")
+(merge-rule "薑" "강")
+(merge-rule "薔" "장")
+(merge-rule "薗" "원")
+(merge-rule "è–™" "á„Žá…µ~b")
+(merge-rule "薛" "설")
+(merge-rule "è–" "담")
+(merge-rule "è–¤" "á„’á…¢~b")
+(merge-rule "薥" "촉")
+(merge-rule "薦" "천")
+(merge-rule "薨" "훙")
+(merge-rule "薩" "살")
+(merge-rule "薪" "신")
+(merge-rule "薯" "서~b")
+(merge-rule "薰" "훈")
+(merge-rule "薺" "제~b")
+(merge-rule "è—" "고~b")
+(merge-rule "藉" "자~b")
+(merge-rule "è—" "남")
+(merge-rule "藎" "신")
+(merge-rule "è—" "장")
+(merge-rule "è—" "묘~b")
+(merge-rule "è—•" "á„‹á…®~b")
+(merge-rule "藜" "려~b")
+(merge-rule "è—" "á„‹á…¨~b")
+(merge-rule "藤" "등")
+(merge-rule "藥" "약")
+(merge-rule "藩" "번")
+(merge-rule "藪" "수~b")
+(merge-rule "藷" "저~b")
+(merge-rule "è—¹" "á„‹á…¢~b")
+(merge-rule "藺" "린")
+(merge-rule "藻" "조~b")
+(merge-rule "藽" "친")
+(merge-rule "藿" "곽")
+(merge-rule "蘀" "á„ᅡᆨ")
+(merge-rule "蘂" "예~b")
+(merge-rule "蘄" "기~b")
+(merge-rule "蘆" "노~b")
+(merge-rule "蘇" "소~b")
+(merge-rule "蘊" "온")
+(merge-rule "蘋" "빈")
+(merge-rule "蘖" "얼")
+(merge-rule "蘗" "벽")
+(merge-rule "蘘" "양")
+(merge-rule "蘚" "선")
+(merge-rule "蘢" "롱")
+(merge-rule "蘧" "거~b")
+(merge-rule "蘩" "번")
+(merge-rule "蘭" "난")
+(merge-rule "蘯" "á„ᅡᆼ")
+(merge-rule "蘼" "미~b")
+(merge-rule "蘿" "나~b")
+(merge-rule "è™" "기~b")
+(merge-rule "虎" "호~b")
+(merge-rule "è™" "학")
+(merge-rule "虓" "효~b")
+(merge-rule "虔" "건")
+(merge-rule "處" "처~b")
+(merge-rule "è™›" "á„’á…¥~b")
+(merge-rule "虜" "노~b")
+(merge-rule "虞" "우~b")
+(merge-rule "號" "호~b")
+(merge-rule "虧" "휴~b")
+(merge-rule "虫" "훼~b")
+(merge-rule "虬" "규~b")
+(merge-rule "虯" "규~b")
+(merge-rule "虱" "슬")
+(merge-rule "虸" "자~b")
+(merge-rule "虹" "홍")
+(merge-rule "虺" "훼~b")
+(merge-rule "虻" "맹")
+(merge-rule "蚊" "문")
+(merge-rule "èš‹" "á„‹á…¨~b")
+(merge-rule "蚌" "방")
+(merge-rule "èš" "비~b")
+(merge-rule "蚓" "인")
+(merge-rule "蚕" "천")
+(merge-rule "蚣" "공")
+(merge-rule "蚤" "조~b")
+(merge-rule "蚨" "부~b")
+(merge-rule "èš©" "á„Žá…µ~b")
+(merge-rule "蚪" "두~b")
+(merge-rule "蚯" "구~b")
+(merge-rule "èš°" "á„‹á…²~b")
+(merge-rule "蚱" "책")
+(merge-rule "èš´" "á„‹á…²~b")
+(merge-rule "蛀" "주~b")
+(merge-rule "蛅" "점")
+(merge-rule "蛆" "저~b")
+(merge-rule "蛇" "사~b")
+(merge-rule "蛉" "령")
+(merge-rule "蛋" "단")
+(merge-rule "è›”" "á„’á…¬~b")
+(merge-rule "è›™" "á„‹á…ª~b")
+(merge-rule "蛛" "주~b")
+(merge-rule "蛞" "활")
+(merge-rule "蛟" "교~b")
+(merge-rule "蛣" "길")
+(merge-rule "蛤" "합")
+(merge-rule "蛩" "공")
+(merge-rule "蛬" "공")
+(merge-rule "蛭" "질")
+(merge-rule "蛸" "소~b")
+(merge-rule "蛹" "용")
+(merge-rule "蛻" "세~b")
+(merge-rule "蛾" "아~b")
+(merge-rule "蜀" "촉")
+(merge-rule "蜂" "봉")
+(merge-rule "蜃" "신")
+(merge-rule "蜆" "현")
+(merge-rule "蜈" "오~b")
+(merge-rule "蜉" "부~b")
+(merge-rule "蜊" "리~b")
+(merge-rule "蜋" "랑")
+(merge-rule "蜑" "단")
+(merge-rule "蜘" "지~b")
+(merge-rule "蜚" "비~b")
+(merge-rule "蜜" "밀")
+(merge-rule "èœ" "기~b")
+(merge-rule "蜡" "사~b")
+(merge-rule "蜥" "석")
+(merge-rule "蜨" "접")
+(merge-rule "蜩" "조~b")
+(merge-rule "蜴" "척")
+(merge-rule "蜵" "연")
+(merge-rule "蜷" "권")
+(merge-rule "蜺" "예~b")
+(merge-rule "蜻" "청")
+(merge-rule "蜿" "원")
+(merge-rule "è€" "동")
+(merge-rule "èŒ" "과~b")
+(merge-rule "èŽ" "갈")
+(merge-rule "è•" "식")
+(merge-rule "è—" "황")
+(merge-rule "è™" "편")
+(merge-rule "èŸ" "á„‹á…±~b")
+(merge-rule "è " "복")
+(merge-rule "è¤" "á„‹á…²~b")
+(merge-rule "è¥" "모~b")
+(merge-rule "è¦" "á„’á…¡~b")
+(merge-rule "è¨" "슬")
+(merge-rule "è®" "복")
+(merge-rule "è´" "á„’á…©~b")
+(merge-rule "è¶" "접")
+(merge-rule "è¸" "á„‹á…ª~b")
+(merge-rule "螂" "랑")
+(merge-rule "螃" "방")
+(merge-rule "螌" "반")
+(merge-rule "èž" "융")
+(merge-rule "螘" "의~b")
+(merge-rule "螞" "마~b")
+(merge-rule "螟" "명")
+(merge-rule "螢" "형")
+(merge-rule "螣" "등")
+(merge-rule "èž­" "á„…á…µ~b")
+(merge-rule "螳" "당")
+(merge-rule "螴" "진")
+(merge-rule "螺" "나~b")
+(merge-rule "èž»" "á„…á…®~b")
+(merge-rule "螽" "종")
+(merge-rule "蟀" "솔")
+(merge-rule "蟄" "칩")
+(merge-rule "蟇" "마~b")
+(merge-rule "蟊" "모~b")
+(merge-rule "蟋" "실")
+(merge-rule "蟒" "망")
+(merge-rule "蟚" "팽")
+(merge-rule "蟛" "팽")
+(merge-rule "蟠" "반")
+(merge-rule "蟣" "기~b")
+(merge-rule "蟬" "선")
+(merge-rule "蟯" "요~b")
+(merge-rule "蟲" "충")
+(merge-rule "蟷" "당")
+(merge-rule "蟹" "해~b")
+(merge-rule "蟻" "의~b")
+(merge-rule "蟾" "섬")
+(merge-rule "蠅" "승")
+(merge-rule "è " "갈")
+(merge-rule "蠑" "영")
+(merge-rule "蠕" "연")
+(merge-rule "蠟" "납")
+(merge-rule "è ¡" "á„…á…§~b")
+(merge-rule "蠢" "준")
+(merge-rule "è £" "á„…á…§~b")
+(merge-rule "蠱" "고~b")
+(merge-rule "蠲" "견")
+(merge-rule "蠶" "잠")
+(merge-rule "蠹" "두~b")
+(merge-rule "蠻" "만")
+(merge-rule "血" "혈")
+(merge-rule "衄" "뉵")
+(merge-rule "衆" "중")
+(merge-rule "衊" "멸")
+(merge-rule "行" "항")
+(merge-rule "è¡" "연")
+(merge-rule "衎" "간")
+(merge-rule "衒" "현")
+(merge-rule "術" "술")
+(merge-rule "街" "가~b")
+(merge-rule "è¡™" "á„‹á…¡~b")
+(merge-rule "è¡›" "á„‹á…±~b")
+(merge-rule "è¡" "충")
+(merge-rule "è¡ž" "á„‹á…±~b")
+(merge-rule "衡" "형")
+(merge-rule "衢" "구~b")
+(merge-rule "è¡£" "á„‹á…´~b")
+(merge-rule "表" "표~b")
+(merge-rule "衫" "삼")
+(merge-rule "衮" "곤")
+(merge-rule "衰" "쇠~b")
+(merge-rule "衲" "납")
+(merge-rule "衷" "충")
+(merge-rule "衽" "임")
+(merge-rule "衾" "금")
+(merge-rule "衿" "금")
+(merge-rule "è¢" "원")
+(merge-rule "袂" "몌~b")
+(merge-rule "袈" "가~b")
+(merge-rule "袋" "대~b")
+(merge-rule "è¢" "á„‘á…©~b")
+(merge-rule "袒" "단")
+(merge-rule "袖" "수~b")
+(merge-rule "袗" "진")
+(merge-rule "袛" "저~b")
+(merge-rule "è¢" "부~b")
+(merge-rule "袞" "곤")
+(merge-rule "袢" "번")
+(merge-rule "袪" "거~b")
+(merge-rule "被" "피~b")
+(merge-rule "袴" "고~b")
+(merge-rule "裀" "인")
+(merge-rule "è£" "재~b")
+(merge-rule "裂" "렬")
+(merge-rule "装" "장")
+(merge-rule "裊" "뇨~b")
+(merge-rule "è£" "곤")
+(merge-rule "è£" "á„…á…µ~b")
+(merge-rule "裒" "부~b")
+(merge-rule "裔" "예~b")
+(merge-rule "裕" "유~b")
+(merge-rule "裘" "구~b")
+(merge-rule "裙" "군")
+(merge-rule "補" "보~b")
+(merge-rule "è£" "장")
+(merge-rule "裟" "사~b")
+(merge-rule "裡" "리~b")
+(merge-rule "裨" "비~b")
+(merge-rule "裯" "주~b")
+(merge-rule "裱" "표~b")
+(merge-rule "裳" "상")
+(merge-rule "裴" "배~b")
+(merge-rule "裵" "배~b")
+(merge-rule "裸" "나~b")
+(merge-rule "裹" "과~b")
+(merge-rule "製" "제~b")
+(merge-rule "裾" "거~b")
+(merge-rule "褄" "처~b")
+(merge-rule "複" "복")
+(merge-rule "褊" "편")
+(merge-rule "褌" "곤")
+(merge-rule "è¤" "갈")
+(merge-rule "褒" "포~b")
+(merge-rule "褓" "보~b")
+(merge-rule "褕" "유~b")
+(merge-rule "褘" "위~b")
+(merge-rule "褙" "배~b")
+(merge-rule "褚" "저~b")
+(merge-rule "褥" "욕")
+(merge-rule "褧" "경")
+(merge-rule "褪" "á„á…¬~b")
+(merge-rule "褫" "치~b")
+(merge-rule "褰" "건")
+(merge-rule "褶" "습")
+(merge-rule "褸" "루~b")
+(merge-rule "褺" "첩")
+(merge-rule "褻" "설")
+(merge-rule "è¥" "강")
+(merge-rule "襄" "양")
+(merge-rule "è¥" "잡")
+(merge-rule "襖" "오~b")
+(merge-rule "襘" "괴~b")
+(merge-rule "襜" "첨")
+(merge-rule "襞" "벽")
+(merge-rule "襟" "금")
+(merge-rule "襠" "당")
+(merge-rule "襤" "남")
+(merge-rule "襪" "말")
+(merge-rule "襭" "힐")
+(merge-rule "襯" "친")
+(merge-rule "襲" "습")
+(merge-rule "襴" "란")
+(merge-rule "西" "서~b")
+(merge-rule "è¦" "á„‹á…­~b")
+(merge-rule "覃" "담")
+(merge-rule "覆" "복")
+(merge-rule "覇" "패~b")
+(merge-rule "覈" "핵")
+(merge-rule "覉" "기~b")
+(merge-rule "見" "견")
+(merge-rule "è¦" "규~b")
+(merge-rule "覓" "멱")
+(merge-rule "視" "시~b")
+(merge-rule "覗" "사~b")
+(merge-rule "覘" "점")
+(merge-rule "覡" "격")
+(merge-rule "覨" "악")
+(merge-rule "覩" "도~b")
+(merge-rule "親" "친")
+(merge-rule "覬" "기~b")
+(merge-rule "覯" "구~b")
+(merge-rule "覲" "근")
+(merge-rule "覷" "처~b")
+(merge-rule "覺" "각")
+(merge-rule "覽" "람")
+(merge-rule "覿" "적")
+(merge-rule "觀" "관")
+(merge-rule "角" "각")
+(merge-rule "觔" "근")
+(merge-rule "觖" "결")
+(merge-rule "觚" "고~b")
+(merge-rule "觜" "자~b")
+(merge-rule "è§" "저~b")
+(merge-rule "解" "해~b")
+(merge-rule "觥" "굉")
+(merge-rule "觱" "필")
+(merge-rule "觳" "곡")
+(merge-rule "觴" "상")
+(merge-rule "觸" "촉")
+(merge-rule "言" "언")
+(merge-rule "訂" "정")
+(merge-rule "訃" "부~b")
+(merge-rule "訇" "굉")
+(merge-rule "計" "계~b")
+(merge-rule "訉" "범")
+(merge-rule "訊" "신")
+(merge-rule "訌" "홍")
+(merge-rule "討" "á„á…©~b")
+(merge-rule "è¨" "알")
+(merge-rule "訑" "이~b")
+(merge-rule "訓" "훈")
+(merge-rule "訔" "은")
+(merge-rule "訕" "산")
+(merge-rule "訖" "흘")
+(merge-rule "託" "á„ᅡᆨ")
+(merge-rule "記" "기~b")
+(merge-rule "訛" "와~b")
+(merge-rule "è¨" "á„‹á…¡~b")
+(merge-rule "訟" "송")
+(merge-rule "訢" "흔")
+(merge-rule "訣" "결")
+(merge-rule "訥" "눌")
+(merge-rule "訪" "방")
+(merge-rule "設" "설")
+(merge-rule "許" "허~b")
+(merge-rule "訴" "소~b")
+(merge-rule "訶" "가~b")
+(merge-rule "診" "진")
+(merge-rule "註" "주~b")
+(merge-rule "証" "정")
+(merge-rule "訾" "자~b")
+(merge-rule "è©" "고~b")
+(merge-rule "詆" "저~b")
+(merge-rule "詋" "주~b")
+(merge-rule "è©" "사~b")
+(merge-rule "è©‘" "á„‹á…µ~b")
+(merge-rule "詔" "조~b")
+(merge-rule "評" "평")
+(merge-rule "è©–" "á„‘á…µ~b")
+(merge-rule "詗" "형")
+(merge-rule "詘" "굴")
+(merge-rule "詛" "저~b")
+(merge-rule "詞" "사~b")
+(merge-rule "詠" "영")
+(merge-rule "è©¡" "á„’á…®~b")
+(merge-rule "詢" "순")
+(merge-rule "è©£" "á„‹á…¨~b")
+(merge-rule "試" "시~b")
+(merge-rule "詩" "시~b")
+(merge-rule "è©«" "á„á…¡~b")
+(merge-rule "詬" "구~b")
+(merge-rule "詭" "궤~b")
+(merge-rule "詮" "전")
+(merge-rule "詰" "힐")
+(merge-rule "話" "화~b")
+(merge-rule "該" "해~b")
+(merge-rule "詳" "상")
+(merge-rule "詵" "선")
+(merge-rule "詹" "첨")
+(merge-rule "詼" "회~b")
+(merge-rule "詿" "괘~b")
+(merge-rule "誂" "조~b")
+(merge-rule "誄" "뢰~b")
+(merge-rule "誅" "주~b")
+(merge-rule "誆" "광")
+(merge-rule "誇" "과~b")
+(merge-rule "誌" "지~b")
+(merge-rule "èª" "인")
+(merge-rule "誑" "광")
+(merge-rule "誓" "서~b")
+(merge-rule "誕" "á„ᅡᆫ")
+(merge-rule "誘" "유~b")
+(merge-rule "誚" "초~b")
+(merge-rule "語" "어~b")
+(merge-rule "誠" "성")
+(merge-rule "誡" "계~b")
+(merge-rule "誢" "현")
+(merge-rule "誣" "무~b")
+(merge-rule "誤" "오~b")
+(merge-rule "誥" "고~b")
+(merge-rule "誦" "송")
+(merge-rule "誧" "포~b")
+(merge-rule "誨" "회~b")
+(merge-rule "說" "설")
+(merge-rule "誰" "수~b")
+(merge-rule "課" "과~b")
+(merge-rule "誹" "비~b")
+(merge-rule "誼" "의~b")
+(merge-rule "誾" "은")
+(merge-rule "調" "조~b")
+(merge-rule "諂" "첨")
+(merge-rule "諄" "순")
+(merge-rule "談" "담")
+(merge-rule "諉" "위~b")
+(merge-rule "請" "청")
+(merge-rule "è«" "쟁")
+(merge-rule "è«" "á„Žá…®~b")
+(merge-rule "諒" "량")
+(merge-rule "論" "논")
+(merge-rule "è«›" "á„‹á…²~b")
+(merge-rule "諜" "첩")
+(merge-rule "諞" "편")
+(merge-rule "諟" "시~b")
+(merge-rule "諠" "훤")
+(merge-rule "諡" "시~b")
+(merge-rule "諤" "악")
+(merge-rule "諦" "체~b")
+(merge-rule "諧" "해~b")
+(merge-rule "諪" "정")
+(merge-rule "諫" "간")
+(merge-rule "è«­" "á„‹á…²~b")
+(merge-rule "諮" "자~b")
+(merge-rule "諰" "시~b")
+(merge-rule "諱" "휘~b")
+(merge-rule "諳" "암")
+(merge-rule "諴" "함")
+(merge-rule "諶" "심")
+(merge-rule "諷" "풍")
+(merge-rule "諸" "제~b")
+(merge-rule "諺" "언")
+(merge-rule "諼" "훤")
+(merge-rule "諾" "낙")
+(merge-rule "謀" "모~b")
+(merge-rule "è¬" "알")
+(merge-rule "謂" "위~b")
+(merge-rule "謄" "등")
+(merge-rule "謇" "건")
+(merge-rule "謌" "가~b")
+(merge-rule "謎" "미~b")
+(merge-rule "è¬" "밀")
+(merge-rule "謑" "혜~b")
+(merge-rule "謔" "학")
+(merge-rule "謖" "속")
+(merge-rule "謗" "방")
+(merge-rule "謙" "겸")
+(merge-rule "謚" "익")
+(merge-rule "講" "강")
+(merge-rule "謜" "원")
+(merge-rule "è¬" "사~b")
+(merge-rule "謠" "요~b")
+(merge-rule "謣" "우~b")
+(merge-rule "謦" "경")
+(merge-rule "謨" "모~b")
+(merge-rule "謫" "적")
+(merge-rule "謬" "류~b")
+(merge-rule "謳" "구~b")
+(merge-rule "謷" "오~b")
+(merge-rule "謹" "근")
+(merge-rule "謾" "만")
+(merge-rule "è­" "á„’á…ª~b")
+(merge-rule "è­ƒ" "á„’á…®~b")
+(merge-rule "證" "증")
+(merge-rule "譌" "와~b")
+(merge-rule "譎" "휼")
+(merge-rule "è­" "기~b")
+(merge-rule "譔" "선")
+(merge-rule "譖" "참")
+(merge-rule "識" "식")
+(merge-rule "è­™" "á„Žá…©~b")
+(merge-rule "譚" "담")
+(merge-rule "譜" "보~b")
+(merge-rule "譟" "조~b")
+(merge-rule "警" "경")
+(merge-rule "譫" "섬")
+(merge-rule "譬" "비~b")
+(merge-rule "譯" "역")
+(merge-rule "è­°" "á„‹á…´~b")
+(merge-rule "譱" "선")
+(merge-rule "譴" "견")
+(merge-rule "è­·" "á„’á…©~b")
+(merge-rule "è­½" "á„‹á…¨~b")
+(merge-rule "è­¿" "á„’á…¨~b")
+(merge-rule "讀" "독")
+(merge-rule "讉" "유~b")
+(merge-rule "變" "변")
+(merge-rule "讌" "연")
+(merge-rule "讎" "수~b")
+(merge-rule "è®" "수~b")
+(merge-rule "讒" "참")
+(merge-rule "讓" "양")
+(merge-rule "讖" "참")
+(merge-rule "讚" "찬")
+(merge-rule "讜" "당")
+(merge-rule "讞" "언")
+(merge-rule "谷" "곡")
+(merge-rule "谿" "계~b")
+(merge-rule "è±" "활")
+(merge-rule "豆" "두~b")
+(merge-rule "豇" "강")
+(merge-rule "豈" "개~b")
+(merge-rule "豉" "시~b")
+(merge-rule "豊" "풍")
+(merge-rule "豌" "완")
+(merge-rule "豎" "수~b")
+(merge-rule "豕" "시~b")
+(merge-rule "豖" "축")
+(merge-rule "豚" "돈")
+(merge-rule "象" "상")
+(merge-rule "豢" "환")
+(merge-rule "豨" "희~b")
+(merge-rule "豪" "호~b")
+(merge-rule "豫" "예~b")
+(merge-rule "豬" "저~b")
+(merge-rule "豳" "빈")
+(merge-rule "豸" "치~b")
+(merge-rule "è±¹" "á„‘á…­~b")
+(merge-rule "豺" "시~b")
+(merge-rule "貂" "초~b")
+(merge-rule "貃" "맥")
+(merge-rule "貊" "맥")
+(merge-rule "貌" "모~b")
+(merge-rule "è²" "á„…á…µ~b")
+(merge-rule "貓" "묘~b")
+(merge-rule "貔" "비~b")
+(merge-rule "貘" "맥")
+(merge-rule "è²" "á„‘á…¢~b")
+(merge-rule "貞" "정")
+(merge-rule "負" "부~b")
+(merge-rule "財" "재~b")
+(merge-rule "貢" "공")
+(merge-rule "貧" "빈")
+(merge-rule "貨" "화~b")
+(merge-rule "販" "판")
+(merge-rule "貪" "á„ᅡᆷ")
+(merge-rule "貫" "관")
+(merge-rule "責" "책")
+(merge-rule "貯" "저~b")
+(merge-rule "貰" "세~b")
+(merge-rule "貲" "자~b")
+(merge-rule "è²³" "á„‹á…µ~b")
+(merge-rule "貴" "귀~b")
+(merge-rule "貶" "폄")
+(merge-rule "買" "매~b")
+(merge-rule "貸" "대~b")
+(merge-rule "貺" "황")
+(merge-rule "費" "비~b")
+(merge-rule "貼" "첩")
+(merge-rule "è²½" "á„‹á…µ~b")
+(merge-rule "貿" "무~b")
+(merge-rule "è³€" "á„’á…¡~b")
+(merge-rule "è³" "분")
+(merge-rule "賂" "뇌~b")
+(merge-rule "賃" "임")
+(merge-rule "賄" "회~b")
+(merge-rule "賆" "변")
+(merge-rule "資" "자~b")
+(merge-rule "賈" "가~b")
+(merge-rule "賊" "적")
+(merge-rule "賑" "진")
+(merge-rule "賓" "빈")
+(merge-rule "賙" "주~b")
+(merge-rule "賚" "뢰~b")
+(merge-rule "賜" "사~b")
+(merge-rule "賞" "상")
+(merge-rule "賠" "배~b")
+(merge-rule "賡" "갱")
+(merge-rule "賢" "현")
+(merge-rule "賣" "매~b")
+(merge-rule "賤" "천")
+(merge-rule "賦" "부~b")
+(merge-rule "質" "질")
+(merge-rule "賬" "장")
+(merge-rule "賭" "도~b")
+(merge-rule "è³´" "á„…á…¬~b")
+(merge-rule "賻" "부~b")
+(merge-rule "購" "구~b")
+(merge-rule "賽" "새~b")
+(merge-rule "贄" "지~b")
+(merge-rule "è´…" "á„Žá…±~b")
+(merge-rule "贇" "윤")
+(merge-rule "贈" "증")
+(merge-rule "贊" "찬")
+(merge-rule "贋" "안")
+(merge-rule "è´" "섬")
+(merge-rule "è´" "영")
+(merge-rule "è´" "신")
+(merge-rule "贓" "장")
+(merge-rule "贔" "비~b")
+(merge-rule "贖" "속")
+(merge-rule "贛" "공")
+(merge-rule "赤" "적")
+(merge-rule "赦" "사~b")
+(merge-rule "赧" "난")
+(merge-rule "赫" "혁")
+(merge-rule "赭" "자~b")
+(merge-rule "走" "주~b")
+(merge-rule "赳" "규~b")
+(merge-rule "赴" "부~b")
+(merge-rule "赶" "간")
+(merge-rule "起" "기~b")
+(merge-rule "è¶" "진")
+(merge-rule "超" "초~b")
+(merge-rule "越" "월")
+(merge-rule "趎" "주~b")
+(merge-rule "è¶" "혈")
+(merge-rule "趙" "조~b")
+(merge-rule "趠" "초~b")
+(merge-rule "趣" "취~b")
+(merge-rule "趨" "추~b")
+(merge-rule "趫" "교~b")
+(merge-rule "趲" "찬")
+(merge-rule "足" "족")
+(merge-rule "趺" "부~b")
+(merge-rule "趾" "지~b")
+(merge-rule "跂" "기~b")
+(merge-rule "è·†" "á„á…¢~b")
+(merge-rule "跋" "발")
+(merge-rule "跌" "질")
+(merge-rule "è·Ž" "á„á…¡~b")
+(merge-rule "è·" "가~b")
+(merge-rule "跕" "접")
+(merge-rule "跖" "척")
+(merge-rule "跗" "부~b")
+(merge-rule "è·›" "á„‘á…¡~b")
+(merge-rule "è·" "거~b")
+(merge-rule "跟" "근")
+(merge-rule "跡" "적")
+(merge-rule "跣" "선")
+(merge-rule "跨" "과~b")
+(merge-rule "跪" "궤~b")
+(merge-rule "跫" "공")
+(merge-rule "跬" "규~b")
+(merge-rule "è·¯" "á„‚á…©~b")
+(merge-rule "è·±" "á„Žá…µ~b")
+(merge-rule "跳" "도~b")
+(merge-rule "跼" "국")
+(merge-rule "踆" "준")
+(merge-rule "踈" "소~b")
+(merge-rule "踉" "량")
+(merge-rule "踊" "용")
+(merge-rule "è¸" "답")
+(merge-rule "è¸" "천")
+(merge-rule "踔" "á„ᅡᆨ")
+(merge-rule "è¸" "과~b")
+(merge-rule "踞" "거~b")
+(merge-rule "踟" "지~b")
+(merge-rule "踪" "종")
+(merge-rule "踰" "유~b")
+(merge-rule "踴" "용")
+(merge-rule "踵" "종")
+(merge-rule "踶" "제~b")
+(merge-rule "踽" "우~b")
+(merge-rule "蹀" "접")
+(merge-rule "蹂" "유~b")
+(merge-rule "蹄" "제~b")
+(merge-rule "蹇" "건")
+(merge-rule "蹈" "도~b")
+(merge-rule "蹉" "차~b")
+(merge-rule "蹊" "혜~b")
+(merge-rule "蹌" "창")
+(merge-rule "è¹" "제~b")
+(merge-rule "蹕" "필")
+(merge-rule "蹙" "축")
+(merge-rule "蹜" "축")
+(merge-rule "蹟" "적")
+(merge-rule "蹠" "척")
+(merge-rule "蹣" "만")
+(merge-rule "蹤" "종")
+(merge-rule "蹲" "준")
+(merge-rule "蹴" "축")
+(merge-rule "蹶" "궐")
+(merge-rule "蹻" "교~b")
+(merge-rule "èº" "조~b")
+(merge-rule "躅" "촉")
+(merge-rule "躇" "저~b")
+(merge-rule "躉" "돈")
+(merge-rule "躊" "주~b")
+(merge-rule "躋" "제~b")
+(merge-rule "èº" "약")
+(merge-rule "èº" "렵")
+(merge-rule "躑" "척")
+(merge-rule "躓" "지~b")
+(merge-rule "躔" "전")
+(merge-rule "躙" "린")
+(merge-rule "躡" "섭")
+(merge-rule "躩" "곽")
+(merge-rule "躪" "린")
+(merge-rule "身" "신")
+(merge-rule "躬" "궁")
+(merge-rule "躱" "á„á…¡~b")
+(merge-rule "躳" "궁")
+(merge-rule "軀" "구~b")
+(merge-rule "軆" "체~b")
+(merge-rule "車" "거~b")
+(merge-rule "軋" "알")
+(merge-rule "軌" "궤~b")
+(merge-rule "è»" "군")
+(merge-rule "軒" "헌")
+(merge-rule "軟" "연")
+(merge-rule "軨" "령")
+(merge-rule "軫" "진")
+(merge-rule "軸" "축")
+(merge-rule "軹" "지~b")
+(merge-rule "軺" "초~b")
+(merge-rule "軻" "가~b")
+(merge-rule "軼" "일")
+(merge-rule "軾" "식")
+(merge-rule "較" "교~b")
+(merge-rule "è¼…" "á„…á…©~b")
+(merge-rule "輇" "전")
+(merge-rule "輈" "주~b")
+(merge-rule "載" "재~b")
+(merge-rule "輒" "첩")
+(merge-rule "輓" "만")
+(merge-rule "輔" "보~b")
+(merge-rule "輕" "경")
+(merge-rule "輛" "량")
+(merge-rule "輜" "치~b")
+(merge-rule "è¼" "á„’á…±~b")
+(merge-rule "輞" "망")
+(merge-rule "輟" "철")
+(merge-rule "輦" "련")
+(merge-rule "輧" "병")
+(merge-rule "輨" "관")
+(merge-rule "輩" "배~b")
+(merge-rule "輪" "륜")
+(merge-rule "輯" "집")
+(merge-rule "輰" "양")
+(merge-rule "輳" "주~b")
+(merge-rule "輸" "수~b")
+(merge-rule "輹" "복")
+(merge-rule "輻" "복")
+(merge-rule "輾" "전")
+(merge-rule "輿" "여~b")
+(merge-rule "轀" "온")
+(merge-rule "轂" "곡")
+(merge-rule "轄" "할")
+(merge-rule "轅" "원")
+(merge-rule "轆" "록")
+(merge-rule "轉" "전")
+(merge-rule "è½" "철")
+(merge-rule "轎" "교~b")
+(merge-rule "轒" "분")
+(merge-rule "轔" "린")
+(merge-rule "轗" "감")
+(merge-rule "轘" "환")
+(merge-rule "è½" "á„‹á…§~b")
+(merge-rule "轞" "함")
+(merge-rule "轟" "굉")
+(merge-rule "轡" "비~b")
+(merge-rule "轢" "력")
+(merge-rule "轣" "력")
+(merge-rule "轤" "로~b")
+(merge-rule "辛" "신")
+(merge-rule "辜" "고~b")
+(merge-rule "辟" "피~b")
+(merge-rule "辢" "랄")
+(merge-rule "辣" "랄")
+(merge-rule "辦" "판")
+(merge-rule "辨" "변")
+(merge-rule "辭" "사~b")
+(merge-rule "辮" "변")
+(merge-rule "辯" "변")
+(merge-rule "辰" "신")
+(merge-rule "辱" "욕")
+(merge-rule "農" "농")
+(merge-rule "辻" "십")
+(merge-rule "辿" "천")
+(merge-rule "迀" "간")
+(merge-rule "è¿‚" "á„‹á…®~b")
+(merge-rule "迃" "오~b")
+(merge-rule "迄" "흘")
+(merge-rule "迅" "신")
+(merge-rule "è¿" "둔")
+(merge-rule "迎" "영")
+(merge-rule "近" "근")
+(merge-rule "è¿“" "á„‹á…¡~b")
+(merge-rule "返" "반")
+(merge-rule "è¿•" "á„‹á…©~b")
+(merge-rule "è¿¢" "á„Žá…©~b")
+(merge-rule "迤" "이~b")
+(merge-rule "迥" "형")
+(merge-rule "迦" "가~b")
+(merge-rule "迨" "á„á…¢~b")
+(merge-rule "迪" "적")
+(merge-rule "迫" "박")
+(merge-rule "迬" "왕")
+(merge-rule "迭" "질")
+(merge-rule "述" "술")
+(merge-rule "迲" "겁")
+(merge-rule "è¿´" "á„’á…¬~b")
+(merge-rule "迷" "미~b")
+(merge-rule "迸" "병")
+(merge-rule "迹" "적")
+(merge-rule "迺" "내~b")
+(merge-rule "追" "추~b")
+(merge-rule "退" "á„á…¬~b")
+(merge-rule "é€" "송")
+(merge-rule "适" "괄")
+(merge-rule "逃" "도~b")
+(merge-rule "逅" "후~b")
+(merge-rule "逆" "역")
+(merge-rule "逈" "형")
+(merge-rule "逋" "포~b")
+(merge-rule "逌" "유~b")
+(merge-rule "é€" "소~b")
+(merge-rule "é€" "á„á…®~b")
+(merge-rule "é€" "축")
+(merge-rule "逑" "구~b")
+(merge-rule "途" "도~b")
+(merge-rule "逕" "경")
+(merge-rule "逖" "적")
+(merge-rule "逗" "두~b")
+(merge-rule "這" "저~b")
+(merge-rule "通" "á„ᅩᆼ")
+(merge-rule "é€" "서~b")
+(merge-rule "逞" "령")
+(merge-rule "速" "속")
+(merge-rule "造" "조~b")
+(merge-rule "逡" "준")
+(merge-rule "逢" "봉")
+(merge-rule "連" "련")
+(merge-rule "逮" "체~b")
+(merge-rule "週" "주~b")
+(merge-rule "進" "진")
+(merge-rule "逴" "á„ᅡᆨ")
+(merge-rule "逵" "규~b")
+(merge-rule "逶" "위~b")
+(merge-rule "逸" "일")
+(merge-rule "逼" "핍")
+(merge-rule "逾" "유~b")
+(merge-rule "é" "둔")
+(merge-rule "é‚" "수~b")
+(merge-rule "é‡" "á„‹á…®~b")
+(merge-rule "é‰" "정")
+(merge-rule "éŠ" "á„‹á…²~b")
+(merge-rule "é‹" "운")
+(merge-rule "é" "편")
+(merge-rule "éŽ" "과~b")
+(merge-rule "é" "알")
+(merge-rule "é" "á„’á…¡~b")
+(merge-rule "é‘" "황")
+(merge-rule "é’" "주~b")
+(merge-rule "é“" "도~b")
+(merge-rule "é”" "달")
+(merge-rule "é•" "á„‹á…±~b")
+(merge-rule "é˜" "구~b")
+(merge-rule "é™" "á„‹á…­~b")
+(merge-rule "é›" "á„…á…²~b")
+(merge-rule "éœ" "손")
+(merge-rule "é" "답")
+(merge-rule "éž" "á„Žá…¦~b")
+(merge-rule "é " "원")
+(merge-rule "é¡" "소~b")
+(merge-rule "é£" "견")
+(merge-rule "é¨" "á„‹á…©~b")
+(merge-rule "é©" "적")
+(merge-rule "é¬" "속")
+(merge-rule "é­" "조~b")
+(merge-rule "é®" "á„Žá…¡~b")
+(merge-rule "é¯" "둔")
+(merge-rule "é²" "지~b")
+(merge-rule "éµ" "준")
+(merge-rule "é¶" "á„‹á…­~b")
+(merge-rule "é·" "천")
+(merge-rule "é¸" "선")
+(merge-rule "éº" "á„‹á…²~b")
+(merge-rule "é¼" "á„…á…­~b")
+(merge-rule "é½" "거~b")
+(merge-rule "é¿" "á„‘á…µ~b")
+(merge-rule "é‚€" "á„‹á…­~b")
+(merge-rule "é‚" "매~b")
+(merge-rule "é‚‚" "á„’á…¢~b")
+(merge-rule "邃" "수~b")
+(merge-rule "還" "환")
+(merge-rule "邅" "전")
+(merge-rule "邇" "이~b")
+(merge-rule "邈" "막")
+(merge-rule "邊" "변")
+(merge-rule "邌" "려~b")
+(merge-rule "é‚" "á„‚á…¡~b")
+(merge-rule "é‚" "á„…á…µ~b")
+(merge-rule "邑" "읍")
+(merge-rule "邕" "옹")
+(merge-rule "邙" "망")
+(merge-rule "邠" "빈")
+(merge-rule "邢" "형")
+(merge-rule "é‚£" "á„‚á…¡~b")
+(merge-rule "邦" "방")
+(merge-rule "邨" "촌")
+(merge-rule "邪" "사~b")
+(merge-rule "邯" "감")
+(merge-rule "é‚°" "á„á…¢~b")
+(merge-rule "邱" "구~b")
+(merge-rule "邳" "비~b")
+(merge-rule "邵" "소~b")
+(merge-rule "邸" "저~b")
+(merge-rule "邽" "규~b")
+(merge-rule "éƒ" "욱")
+(merge-rule "郃" "합")
+(merge-rule "郄" "극")
+(merge-rule "郅" "질")
+(merge-rule "郊" "교~b")
+(merge-rule "郎" "낭")
+(merge-rule "郜" "고~b")
+(merge-rule "éƒ" "학")
+(merge-rule "郞" "랑")
+(merge-rule "郡" "군")
+(merge-rule "郢" "영")
+(merge-rule "部" "부~b")
+(merge-rule "郪" "처~b")
+(merge-rule "郫" "비~b")
+(merge-rule "郭" "곽")
+(merge-rule "郯" "담")
+(merge-rule "郴" "침")
+(merge-rule "郵" "우~b")
+(merge-rule "都" "도~b")
+(merge-rule "鄂" "악")
+(merge-rule "é„’" "á„Žá…®~b")
+(merge-rule "鄕" "향")
+(merge-rule "鄙" "비~b")
+(merge-rule "鄞" "은")
+(merge-rule "鄢" "언")
+(merge-rule "鄣" "장")
+(merge-rule "鄧" "등")
+(merge-rule "鄭" "정")
+(merge-rule "鄰" "린")
+(merge-rule "鄱" "파~b")
+(merge-rule "鄲" "단")
+(merge-rule "鄴" "업")
+(merge-rule "鄽" "전")
+(merge-rule "酈" "력")
+(merge-rule "é…‰" "á„‹á…²~b")
+(merge-rule "酊" "정")
+(merge-rule "é…‹" "á„Žá…®~b")
+(merge-rule "酌" "작")
+(merge-rule "é…" "배~b")
+(merge-rule "酎" "주~b")
+(merge-rule "酒" "주~b")
+(merge-rule "é…–" "á„ᅡᆷ")
+(merge-rule "é…—" "á„’á…®~b")
+(merge-rule "é…¢" "á„Žá…©~b")
+(merge-rule "酣" "감")
+(merge-rule "酤" "고~b")
+(merge-rule "酥" "소~b")
+(merge-rule "酩" "명")
+(merge-rule "酪" "낙")
+(merge-rule "酬" "수~b")
+(merge-rule "酲" "정")
+(merge-rule "酴" "도~b")
+(merge-rule "é…µ" "á„’á…­~b")
+(merge-rule "酶" "매~b")
+(merge-rule "酷" "혹")
+(merge-rule "酸" "산")
+(merge-rule "é…¹" "á„…á…¬~b")
+(merge-rule "醃" "엄")
+(merge-rule "醇" "순")
+(merge-rule "醉" "취~b")
+(merge-rule "醋" "초~b")
+(merge-rule "é†" "제~b")
+(merge-rule "é†" "á„’á…©~b")
+(merge-rule "醒" "성")
+(merge-rule "醜" "추~b")
+(merge-rule "醞" "온")
+(merge-rule "醢" "해~b")
+(merge-rule "醪" "료~b")
+(merge-rule "醫" "의~b")
+(merge-rule "醬" "장")
+(merge-rule "醮" "초~b")
+(merge-rule "醯" "혜~b")
+(merge-rule "醱" "발")
+(merge-rule "醲" "농")
+(merge-rule "醴" "례~b")
+(merge-rule "醵" "갹")
+(merge-rule "釀" "양")
+(merge-rule "é‡" "흔")
+(merge-rule "釃" "시~b")
+(merge-rule "釅" "염")
+(merge-rule "采" "채~b")
+(merge-rule "釉" "유~b")
+(merge-rule "釋" "석")
+(merge-rule "里" "리~b")
+(merge-rule "é‡" "중")
+(merge-rule "野" "야~b")
+(merge-rule "é‡" "량")
+(merge-rule "é‡" "á„…á…µ~b")
+(merge-rule "金" "금")
+(merge-rule "釗" "쇠~b")
+(merge-rule "釘" "정")
+(merge-rule "釜" "부~b")
+(merge-rule "é‡" "침")
+(merge-rule "釣" "조~b")
+(merge-rule "釤" "삼")
+(merge-rule "釦" "구~b")
+(merge-rule "釧" "천")
+(merge-rule "釪" "우~b")
+(merge-rule "釭" "공")
+(merge-rule "釵" "채~b")
+(merge-rule "釿" "근")
+(merge-rule "鈇" "부~b")
+(merge-rule "éˆ" "둔")
+(merge-rule "éˆ" "검")
+(merge-rule "鈑" "판")
+(merge-rule "鈒" "삽")
+(merge-rule "鈔" "초~b")
+(merge-rule "鈗" "윤")
+(merge-rule "鈜" "횡")
+(merge-rule "鈞" "균")
+(merge-rule "鈟" "조~b")
+(merge-rule "鈴" "령")
+(merge-rule "鈵" "병")
+(merge-rule "鈷" "고~b")
+(merge-rule "鈸" "발")
+(merge-rule "鈺" "옥")
+(merge-rule "鈿" "전")
+(merge-rule "鉀" "갑")
+(merge-rule "é‰" "진")
+(merge-rule "鉅" "거~b")
+(merge-rule "鉉" "현")
+(merge-rule "鉋" "포~b")
+(merge-rule "鉎" "생")
+(merge-rule "é‰" "서~b")
+(merge-rule "é‰" "석")
+(merge-rule "鉒" "주~b")
+(merge-rule "鉗" "겸")
+(merge-rule "鉛" "연")
+(merge-rule "鉞" "월")
+(merge-rule "鉢" "발")
+(merge-rule "鉤" "구~b")
+(merge-rule "鉥" "술")
+(merge-rule "鉦" "정")
+(merge-rule "鉷" "홍")
+(merge-rule "鉸" "교~b")
+(merge-rule "鉼" "병")
+(merge-rule "鉾" "모~b")
+(merge-rule "銀" "은")
+(merge-rule "銃" "총")
+(merge-rule "銅" "동")
+(merge-rule "銋" "임")
+(merge-rule "銑" "선")
+(merge-rule "銓" "전")
+(merge-rule "銕" "철")
+(merge-rule "銖" "수~b")
+(merge-rule "銘" "명")
+(merge-rule "銙" "과~b")
+(merge-rule "銚" "조~b")
+(merge-rule "銛" "섬")
+(merge-rule "銜" "함")
+(merge-rule "銳" "예~b")
+(merge-rule "銶" "구~b")
+(merge-rule "銷" "소~b")
+(merge-rule "銹" "수~b")
+(merge-rule "鋆" "윤")
+(merge-rule "鋌" "정")
+(merge-rule "é‹" "협")
+(merge-rule "鋑" "전")
+(merge-rule "鋒" "봉")
+(merge-rule "鋗" "현")
+(merge-rule "鋟" "침")
+(merge-rule "鋤" "서~b")
+(merge-rule "鋥" "정")
+(merge-rule "鋪" "포~b")
+(merge-rule "鋲" "병")
+(merge-rule "鋸" "거~b")
+(merge-rule "鋹" "창")
+(merge-rule "鋺" "원")
+(merge-rule "鋼" "강")
+(merge-rule "鋽" "조~b")
+(merge-rule "錄" "녹")
+(merge-rule "錆" "창")
+(merge-rule "éŒ" "á„‹á…¡~b")
+(merge-rule "éŒ" "á„Žá…®~b")
+(merge-rule "錕" "곤")
+(merge-rule "錘" "추~b")
+(merge-rule "錙" "치~b")
+(merge-rule "錚" "쟁")
+(merge-rule "錞" "순")
+(merge-rule "錟" "담")
+(merge-rule "錠" "정")
+(merge-rule "錡" "기~b")
+(merge-rule "錢" "전")
+(merge-rule "錣" "철")
+(merge-rule "錤" "기~b")
+(merge-rule "錦" "금")
+(merge-rule "錧" "관")
+(merge-rule "錨" "묘~b")
+(merge-rule "錪" "전")
+(merge-rule "錫" "석")
+(merge-rule "錬" "동")
+(merge-rule "錮" "고~b")
+(merge-rule "錯" "착")
+(merge-rule "éˆ" "영")
+(merge-rule "é‰" "시~b")
+(merge-rule "éŠ" "련")
+(merge-rule "é‹" "과~b")
+(merge-rule "é" "도~b")
+(merge-rule "é”" "악")
+(merge-rule "é—" "제~b")
+(merge-rule "é›" "단")
+(merge-rule "éœ" "á„’á…¡~b")
+(merge-rule "é" "á„‹á…®~b")
+(merge-rule "é¤" "삽")
+(merge-rule "é«" "á„Žá…©~b")
+(merge-rule "é¬" "á„Žá…©~b")
+(merge-rule "é®" "á„‹á…²~b")
+(merge-rule "é°" "환")
+(merge-rule "éµ" "건")
+(merge-rule "é¼" "침")
+(merge-rule "é¾" "종")
+(merge-rule "鎊" "방")
+(merge-rule "鎌" "겸")
+(merge-rule "鎔" "용")
+(merge-rule "鎖" "쇄~b")
+(merge-rule "鎗" "쟁")
+(merge-rule "鎚" "추~b")
+(merge-rule "鎛" "박")
+(merge-rule "鎟" "상")
+(merge-rule "鎡" "자~b")
+(merge-rule "鎣" "형")
+(merge-rule "鎤" "황")
+(merge-rule "鎧" "개~b")
+(merge-rule "鎬" "호~b")
+(merge-rule "鎭" "진")
+(merge-rule "鎰" "일")
+(merge-rule "éƒ" "족")
+(merge-rule "é‡" "선")
+(merge-rule "éˆ" "련")
+(merge-rule "éŠ" "á„‹á…©~b")
+(merge-rule "é‹" "만")
+(merge-rule "éŒ" "막")
+(merge-rule "é‘" "적")
+(merge-rule "é–" "á„‹á…©~b")
+(merge-rule "é—" "갱")
+(merge-rule "é˜" "장")
+(merge-rule "éœ" "당")
+(merge-rule "é" "만")
+(merge-rule "éž" "용")
+(merge-rule "éŸ" "산")
+(merge-rule "é¡" "경")
+(merge-rule "é¢" "á„‘á…­~b")
+(merge-rule "é¤" "á„…á…®~b")
+(merge-rule "é¦" "총")
+(merge-rule "é¨" "참")
+(merge-rule "é¶" "집")
+(merge-rule "é»" "린")
+(merge-rule "éƒ" "á„‚á…­~b")
+(merge-rule "é„" "횡")
+(merge-rule "é" "준")
+(merge-rule "é" "á„…á…­~b")
+(merge-rule "é“" "대~b")
+(merge-rule "é”" "심")
+(merge-rule "é˜" "종")
+(merge-rule "é™" "등")
+(merge-rule "é¥" "선")
+(merge-rule "éª" "á„…á…©~b")
+(merge-rule "é«" "전")
+(merge-rule "éµ" "철")
+(merge-rule "é¶" "환")
+(merge-rule "é¸" "á„ᅡᆨ")
+(merge-rule "éº" "당")
+(merge-rule "鑂" "훈")
+(merge-rule "鑄" "주~b")
+(merge-rule "鑊" "확")
+(merge-rule "鑌" "빈")
+(merge-rule "鑑" "감")
+(merge-rule "鑒" "감")
+(merge-rule "鑕" "질")
+(merge-rule "鑛" "광")
+(merge-rule "鑞" "랍")
+(merge-rule "鑠" "삭")
+(merge-rule "é‘¢" "á„…á…§~b")
+(merge-rule "é‘£" "á„‘á…­~b")
+(merge-rule "鑪" "로~b")
+(merge-rule "鑰" "약")
+(merge-rule "鑱" "참")
+(merge-rule "鑲" "양")
+(merge-rule "鑵" "관")
+(merge-rule "鑷" "섭")
+(merge-rule "鑼" "라~b")
+(merge-rule "鑽" "찬")
+(merge-rule "鑾" "란")
+(merge-rule "鑿" "착")
+(merge-rule "長" "장")
+(merge-rule "門" "문")
+(merge-rule "閃" "섬")
+(merge-rule "閈" "한")
+(merge-rule "é–‰" "á„‘á…¨~b")
+(merge-rule "閊" "산")
+(merge-rule "開" "개~b")
+(merge-rule "閎" "굉")
+(merge-rule "é–" "윤")
+(merge-rule "閑" "한")
+(merge-rule "閒" "한")
+(merge-rule "間" "간")
+(merge-rule "閔" "민")
+(merge-rule "閘" "갑")
+(merge-rule "閟" "비~b")
+(merge-rule "閣" "각")
+(merge-rule "閤" "합")
+(merge-rule "閥" "벌")
+(merge-rule "閨" "규~b")
+(merge-rule "閩" "민")
+(merge-rule "閫" "곤")
+(merge-rule "閬" "랑")
+(merge-rule "é–­" "á„…á…§~b")
+(merge-rule "閱" "열")
+(merge-rule "閶" "창")
+(merge-rule "閹" "엄")
+(merge-rule "閻" "염")
+(merge-rule "閼" "알")
+(merge-rule "閽" "혼")
+(merge-rule "閾" "역")
+(merge-rule "闃" "격")
+(merge-rule "闇" "암")
+(merge-rule "é—ˆ" "á„‹á…±~b")
+(merge-rule "闊" "활")
+(merge-rule "闋" "결")
+(merge-rule "闌" "란")
+(merge-rule "é—" "도~b")
+(merge-rule "闓" "개~b")
+(merge-rule "闔" "합")
+(merge-rule "闕" "궐")
+(merge-rule "é—–" "á„ᅳᆷ")
+(merge-rule "闚" "규~b")
+(merge-rule "關" "관")
+(merge-rule "闞" "함")
+(merge-rule "闠" "궤~b")
+(merge-rule "闡" "천")
+(merge-rule "闢" "벽")
+(merge-rule "闥" "달")
+(merge-rule "阜" "부~b")
+(merge-rule "阡" "천")
+(merge-rule "阤" "치~b")
+(merge-rule "阨" "액")
+(merge-rule "阪" "판")
+(merge-rule "阮" "완")
+(merge-rule "阯" "지~b")
+(merge-rule "防" "방")
+(merge-rule "阻" "조~b")
+(merge-rule "阿" "아~b")
+(merge-rule "陀" "á„á…¡~b")
+(merge-rule "陂" "피~b")
+(merge-rule "附" "부~b")
+(merge-rule "陋" "누~b")
+(merge-rule "陌" "맥")
+(merge-rule "é™" "강")
+(merge-rule "é™" "한")
+(merge-rule "陘" "형")
+(merge-rule "é™›" "á„‘á…¨~b")
+(merge-rule "陜" "합")
+(merge-rule "é™" "섬")
+(merge-rule "陞" "승")
+(merge-rule "陟" "척")
+(merge-rule "陡" "두~b")
+(merge-rule "院" "원")
+(merge-rule "陣" "진")
+(merge-rule "除" "제~b")
+(merge-rule "陪" "배~b")
+(merge-rule "陬" "추~b")
+(merge-rule "陰" "음")
+(merge-rule "陲" "수~b")
+(merge-rule "陳" "진")
+(merge-rule "陴" "비~b")
+(merge-rule "陵" "능")
+(merge-rule "陶" "도~b")
+(merge-rule "陷" "함")
+(merge-rule "陸" "륙")
+(merge-rule "陼" "저~b")
+(merge-rule "陽" "양")
+(merge-rule "隄" "제~b")
+(merge-rule "éš…" "á„‹á…®~b")
+(merge-rule "隆" "륭")
+(merge-rule "隊" "대~b")
+(merge-rule "隋" "수~b")
+(merge-rule "éš" "황")
+(merge-rule "階" "계~b")
+(merge-rule "隑" "기~b")
+(merge-rule "隔" "격")
+(merge-rule "隕" "운")
+(merge-rule "éš—" "á„‹á…¬~b")
+(merge-rule "隘" "애~b")
+(merge-rule "隙" "극")
+(merge-rule "際" "제~b")
+(merge-rule "障" "장")
+(merge-rule "隣" "린")
+(merge-rule "隤" "á„á…¬~b")
+(merge-rule "隧" "수~b")
+(merge-rule "隨" "수~b")
+(merge-rule "éš©" "á„‹á…©~b")
+(merge-rule "險" "험")
+(merge-rule "隰" "습")
+(merge-rule "隱" "은")
+(merge-rule "éš³" "á„’á…²~b")
+(merge-rule "隴" "롱")
+(merge-rule "隶" "이~b")
+(merge-rule "éš·" "á„…á…¨~b")
+(merge-rule "隸" "예~b")
+(merge-rule "éš¹" "á„Žá…®~b")
+(merge-rule "隻" "척")
+(merge-rule "隼" "준")
+(merge-rule "雀" "작")
+(merge-rule "é›" "안")
+(merge-rule "雄" "웅")
+(merge-rule "é›…" "á„‹á…¡~b")
+(merge-rule "集" "집")
+(merge-rule "雇" "고~b")
+(merge-rule "雉" "치~b")
+(merge-rule "雋" "준")
+(merge-rule "雌" "자~b")
+(merge-rule "é›" "옹")
+(merge-rule "雎" "저~b")
+(merge-rule "雕" "조~b")
+(merge-rule "雖" "수~b")
+(merge-rule "雙" "쌍")
+(merge-rule "雚" "관")
+(merge-rule "é››" "á„Žá…®~b")
+(merge-rule "雜" "잡")
+(merge-rule "é›" "옹")
+(merge-rule "雞" "계~b")
+(merge-rule "離" "리~b")
+(merge-rule "難" "난")
+(merge-rule "雨" "우~b")
+(merge-rule "雩" "우~b")
+(merge-rule "雪" "설")
+(merge-rule "雯" "문")
+(merge-rule "雰" "분")
+(merge-rule "雲" "운")
+(merge-rule "零" "령")
+(merge-rule "é›·" "á„‚á…¬~b")
+(merge-rule "雹" "박")
+(merge-rule "雺" "몽")
+(merge-rule "電" "전")
+(merge-rule "需" "수~b")
+(merge-rule "霄" "소~b")
+(merge-rule "霅" "삽")
+(merge-rule "霆" "정")
+(merge-rule "震" "진")
+(merge-rule "霈" "패~b")
+(merge-rule "霉" "매~b")
+(merge-rule "霌" "주~b")
+(merge-rule "éœ" "곽")
+(merge-rule "霎" "삽")
+(merge-rule "éœ" "비~b")
+(merge-rule "霑" "점")
+(merge-rule "霓" "예~b")
+(merge-rule "霔" "주~b")
+(merge-rule "霖" "림")
+(merge-rule "霙" "영")
+(merge-rule "霜" "상")
+(merge-rule "霞" "하~b")
+(merge-rule "霣" "운")
+(merge-rule "霦" "빈")
+(merge-rule "霧" "무~b")
+(merge-rule "霪" "음")
+(merge-rule "霰" "산")
+(merge-rule "露" "노~b")
+(merge-rule "霸" "패~b")
+(merge-rule "霹" "벽")
+(merge-rule "霽" "제~b")
+(merge-rule "é‚" "력")
+(merge-rule "é„" "á„‹á…¢~b")
+(merge-rule "é†" "á„Žá…¦~b")
+(merge-rule "éˆ" "령")
+(merge-rule "é‰" "á„‹á…¢~b")
+(merge-rule "éŒ" "보~b")
+(merge-rule "é‘" "청")
+(merge-rule "é–" "정")
+(merge-rule "éš" "정")
+(merge-rule "é›" "전")
+(merge-rule "éœ" "정")
+(merge-rule "é" "천")
+(merge-rule "éž" "비~b")
+(merge-rule "é " "고~b")
+(merge-rule "é¡" "미~b")
+(merge-rule "é¢" "면")
+(merge-rule "é¦" "전")
+(merge-rule "é¨" "엽")
+(merge-rule "é©" "혁")
+(merge-rule "é­" "인")
+(merge-rule "é³" "근")
+(merge-rule "é´" "á„’á…ª~b")
+(merge-rule "éµ" "á„‚á…²~b")
+(merge-rule "é·" "인")
+(merge-rule "éº" "말")
+(merge-rule "é¼" "달")
+(merge-rule "鞀" "도~b")
+(merge-rule "éž" "á„‘á…µ~b")
+(merge-rule "éž„" "á„‘á…©~b")
+(merge-rule "鞅" "앙")
+(merge-rule "éž‹" "á„’á…¨~b")
+(merge-rule "éž" "안")
+(merge-rule "éž" "공")
+(merge-rule "鞘" "초~b")
+(merge-rule "鞠" "국")
+(merge-rule "鞣" "유~b")
+(merge-rule "鞦" "추~b")
+(merge-rule "鞨" "갈")
+(merge-rule "鞫" "국")
+(merge-rule "鞬" "건")
+(merge-rule "鞭" "편")
+(merge-rule "鞱" "도~b")
+(merge-rule "鞴" "비~b")
+(merge-rule "鞸" "필")
+(merge-rule "鞹" "곽")
+(merge-rule "éŸ" "강")
+(merge-rule "韃" "달")
+(merge-rule "韆" "천")
+(merge-rule "韋" "위~b")
+(merge-rule "éŸ" "불")
+(merge-rule "éŸ" "갑")
+(merge-rule "韓" "한")
+(merge-rule "韙" "위~b")
+(merge-rule "韜" "도~b")
+(merge-rule "éŸ" "구~b")
+(merge-rule "韞" "온")
+(merge-rule "韠" "필")
+(merge-rule "韡" "위~b")
+(merge-rule "韭" "구~b")
+(merge-rule "韮" "구~b")
+(merge-rule "韱" "섬")
+(merge-rule "韲" "제~b")
+(merge-rule "音" "음")
+(merge-rule "韵" "운")
+(merge-rule "韶" "소~b")
+(merge-rule "韺" "영")
+(merge-rule "韻" "운")
+(merge-rule "響" "향")
+(merge-rule "é €" "á„’á…©~b")
+(merge-rule "é " "혈")
+(merge-rule "頂" "정")
+(merge-rule "頃" "경")
+(merge-rule "項" "항")
+(merge-rule "順" "순")
+(merge-rule "須" "수~b")
+(merge-rule "頊" "욱")
+(merge-rule "頌" "송")
+(merge-rule "é " "규~b")
+(merge-rule "頎" "기~b")
+(merge-rule "é " "항")
+(merge-rule "é " "á„‹á…¨~b")
+(merge-rule "頑" "완")
+(merge-rule "頒" "반")
+(merge-rule "頓" "돈")
+(merge-rule "頖" "반")
+(merge-rule "é —" "á„‘á…¡~b")
+(merge-rule "領" "령")
+(merge-rule "頞" "알")
+(merge-rule "頡" "힐")
+(merge-rule "頣" "신")
+(merge-rule "é ¦" "á„’á…¢~b")
+(merge-rule "頫" "부~b")
+(merge-rule "頭" "두~b")
+(merge-rule "é ®" "á„’á…¬~b")
+(merge-rule "頰" "협")
+(merge-rule "頷" "암")
+(merge-rule "頸" "경")
+(merge-rule "é ¹" "á„á…¬~b")
+(merge-rule "頻" "빈")
+(merge-rule "頿" "자~b")
+(merge-rule "é¡‚" "á„…á…¬~b")
+(merge-rule "顆" "과~b")
+(merge-rule "顇" "췌~b")
+(merge-rule "顈" "경")
+(merge-rule "顋" "시~b")
+(merge-rule "題" "제~b")
+(merge-rule "é¡" "액")
+(merge-rule "顎" "악")
+(merge-rule "顒" "옹")
+(merge-rule "顓" "전")
+(merge-rule "顔" "안")
+(merge-rule "願" "원")
+(merge-rule "顙" "상")
+(merge-rule "顚" "전")
+(merge-rule "é¡ž" "á„…á…²~b")
+(merge-rule "é¡¥" "á„’á…©~b")
+(merge-rule "顦" "초~b")
+(merge-rule "顧" "고~b")
+(merge-rule "顫" "전")
+(merge-rule "顯" "현")
+(merge-rule "顰" "빈")
+(merge-rule "顱" "로~b")
+(merge-rule "顳" "섭")
+(merge-rule "顴" "관")
+(merge-rule "風" "풍")
+(merge-rule "颭" "점")
+(merge-rule "颯" "삽")
+(merge-rule "颱" "á„á…¢~b")
+(merge-rule "颲" "렬")
+(merge-rule "颶" "구~b")
+(merge-rule "颺" "양")
+(merge-rule "颼" "수~b")
+(merge-rule "颿" "범")
+(merge-rule "飂" "료~b")
+(merge-rule "飄" "표~b")
+(merge-rule "飇" "표~b")
+(merge-rule "飉" "료~b")
+(merge-rule "飋" "실")
+(merge-rule "飛" "비~b")
+(merge-rule "飜" "번")
+(merge-rule "食" "식")
+(merge-rule "飡" "손")
+(merge-rule "飢" "기~b")
+(merge-rule "飦" "전")
+(merge-rule "飧" "손")
+(merge-rule "飪" "임")
+(merge-rule "飫" "어~b")
+(merge-rule "飭" "칙")
+(merge-rule "飮" "음")
+(merge-rule "飯" "반")
+(merge-rule "飱" "손")
+(merge-rule "飴" "이~b")
+(merge-rule "飻" "철")
+(merge-rule "飼" "사~b")
+(merge-rule "飽" "포~b")
+(merge-rule "飾" "식")
+(merge-rule "餃" "교~b")
+(merge-rule "餉" "향")
+(merge-rule "養" "양")
+(merge-rule "餌" "이~b")
+(merge-rule "é¤" "찬")
+(merge-rule "餒" "뇌~b")
+(merge-rule "餓" "아~b")
+(merge-rule "餔" "포~b")
+(merge-rule "餕" "준")
+(merge-rule "餘" "여~b")
+(merge-rule "餚" "효~b")
+(merge-rule "餞" "전")
+(merge-rule "餠" "병")
+(merge-rule "餦" "장")
+(merge-rule "餧" "위~b")
+(merge-rule "館" "관")
+(merge-rule "餪" "난")
+(merge-rule "餬" "호~b")
+(merge-rule "餮" "철")
+(merge-rule "餰" "전")
+(merge-rule "餱" "후~b")
+(merge-rule "餳" "당")
+(merge-rule "餹" "당")
+(merge-rule "餼" "희~b")
+(merge-rule "餽" "궤~b")
+(merge-rule "饂" "온")
+(merge-rule "饅" "만")
+(merge-rule "饈" "수~b")
+(merge-rule "饉" "근")
+(merge-rule "饋" "궤~b")
+(merge-rule "饌" "찬")
+(merge-rule "é¥" "선")
+(merge-rule "é¥" "á„‹á…´~b")
+(merge-rule "饑" "기~b")
+(merge-rule "饒" "요~b")
+(merge-rule "饔" "옹")
+(merge-rule "饕" "도~b")
+(merge-rule "饗" "향")
+(merge-rule "饜" "염")
+(merge-rule "饞" "참")
+(merge-rule "首" "수~b")
+(merge-rule "馗" "규~b")
+(merge-rule "馘" "괵")
+(merge-rule "香" "향")
+(merge-rule "é¦" "필")
+(merge-rule "馣" "암")
+(merge-rule "馥" "복")
+(merge-rule "馨" "형")
+(merge-rule "馬" "마~b")
+(merge-rule "馭" "어~b")
+(merge-rule "馮" "풍")
+(merge-rule "馰" "적")
+(merge-rule "馱" "á„á…¡~b")
+(merge-rule "馳" "치~b")
+(merge-rule "馴" "순")
+(merge-rule "馹" "일")
+(merge-rule "é§" "박")
+(merge-rule "駄" "á„á…¢~b")
+(merge-rule "駈" "구~b")
+(merge-rule "駉" "경")
+(merge-rule "é§" "거~b")
+(merge-rule "é§" "주~b")
+(merge-rule "駑" "노~b")
+(merge-rule "駒" "구~b")
+(merge-rule "駕" "가~b")
+(merge-rule "駘" "á„á…¢~b")
+(merge-rule "駙" "부~b")
+(merge-rule "駛" "사~b")
+(merge-rule "駜" "필")
+(merge-rule "é§" "á„á…¡~b")
+(merge-rule "駞" "á„á…¡~b")
+(merge-rule "駟" "사~b")
+(merge-rule "駢" "변")
+(merge-rule "駨" "순")
+(merge-rule "駪" "신")
+(merge-rule "駭" "해~b")
+(merge-rule "駮" "박")
+(merge-rule "駱" "낙")
+(merge-rule "駸" "침")
+(merge-rule "駻" "한")
+(merge-rule "駽" "현")
+(merge-rule "駿" "준")
+(merge-rule "é¨" "빙")
+(merge-rule "騂" "성")
+(merge-rule "騃" "애~b")
+(merge-rule "騄" "록")
+(merge-rule "騅" "추~b")
+(merge-rule "騈" "병")
+(merge-rule "騋" "래~b")
+(merge-rule "é¨" "과~b")
+(merge-rule "騎" "기~b")
+(merge-rule "é¨" "기~b")
+(merge-rule "騑" "비~b")
+(merge-rule "騖" "무~b")
+(merge-rule "騘" "총")
+(merge-rule "騙" "편")
+(merge-rule "騛" "비~b")
+(merge-rule "騫" "건")
+(merge-rule "騭" "즐")
+(merge-rule "騰" "등")
+(merge-rule "騵" "원")
+(merge-rule "騶" "추~b")
+(merge-rule "騷" "소~b")
+(merge-rule "騸" "선")
+(merge-rule "騾" "라~b")
+(merge-rule "驀" "맥")
+(merge-rule "é©" "á„‹á…©~b")
+(merge-rule "驂" "참")
+(merge-rule "驃" "표~b")
+(merge-rule "驄" "총")
+(merge-rule "驅" "구~b")
+(merge-rule "é©Š" "á„’á…ª~b")
+(merge-rule "驌" "숙")
+(merge-rule "é©" "á„’á…­~b")
+(merge-rule "驎" "린")
+(merge-rule "é©" "잔")
+(merge-rule "é©’" "á„ᅡᆫ")
+(merge-rule "驕" "교~b")
+(merge-rule "驗" "험")
+(merge-rule "驘" "라~b")
+(merge-rule "驚" "경")
+(merge-rule "驛" "역")
+(merge-rule "é©Ÿ" "á„Žá…±~b")
+(merge-rule "é©¢" "á„…á…§~b")
+(merge-rule "驤" "양")
+(merge-rule "驥" "기~b")
+(merge-rule "驩" "환")
+(merge-rule "驪" "려~b")
+(merge-rule "骨" "골")
+(merge-rule "骪" "위~b")
+(merge-rule "骰" "á„á…®~b")
+(merge-rule "骸" "해~b")
+(merge-rule "骹" "교~b")
+(merge-rule "骼" "격")
+(merge-rule "骿" "변")
+(merge-rule "髀" "비~b")
+(merge-rule "髆" "박")
+(merge-rule "é«" "á„…á…®~b")
+(merge-rule "髑" "촉")
+(merge-rule "髓" "수~b")
+(merge-rule "é«”" "á„Žá…¦~b")
+(merge-rule "髖" "관")
+(merge-rule "é«—" "á„…á…©~b")
+(merge-rule "高" "고~b")
+(merge-rule "é«Ÿ" "á„‘á…­~b")
+(merge-rule "髡" "곤")
+(merge-rule "髣" "방")
+(merge-rule "髥" "염")
+(merge-rule "髦" "모~b")
+(merge-rule "é««" "á„Žá…©~b")
+(merge-rule "髭" "자~b")
+(merge-rule "髮" "발")
+(merge-rule "é«°" "á„Žá…¦~b")
+(merge-rule "髲" "피~b")
+(merge-rule "髴" "불")
+(merge-rule "髹" "휴~b")
+(merge-rule "髺" "괄")
+(merge-rule "髻" "계~b")
+(merge-rule "髽" "좌~b")
+(merge-rule "鬂" "빈")
+(merge-rule "鬅" "붕")
+(merge-rule "鬆" "송")
+(merge-rule "鬊" "순")
+(merge-rule "鬋" "전")
+(merge-rule "é¬" "á„’á…©~b")
+(merge-rule "é¬" "기~b")
+(merge-rule "鬒" "진")
+(merge-rule "鬖" "삼")
+(merge-rule "鬘" "만")
+(merge-rule "鬙" "승")
+(merge-rule "鬚" "수~b")
+(merge-rule "鬟" "환")
+(merge-rule "鬢" "빈")
+(merge-rule "鬣" "렵")
+(merge-rule "鬧" "료~b")
+(merge-rule "鬨" "홍")
+(merge-rule "鬩" "혁")
+(merge-rule "鬪" "á„á…®~b")
+(merge-rule "鬮" "구~b")
+(merge-rule "鬯" "창")
+(merge-rule "鬱" "울")
+(merge-rule "鬲" "격")
+(merge-rule "鬺" "상")
+(merge-rule "鬼" "귀~b")
+(merge-rule "é­" "괴~b")
+(merge-rule "魂" "혼")
+(merge-rule "魃" "발")
+(merge-rule "魄" "백")
+(merge-rule "魅" "매~b")
+(merge-rule "魈" "소~b")
+(merge-rule "é­‹" "á„Žá…®~b")
+(merge-rule "é­" "망")
+(merge-rule "魎" "량")
+(merge-rule "é­" "á„‹á…±~b")
+(merge-rule "é­‘" "á„…á…µ~b")
+(merge-rule "魔" "마~b")
+(merge-rule "魘" "염")
+(merge-rule "é­š" "á„‹á…¥~b")
+(merge-rule "魦" "사~b")
+(merge-rule "é­¯" "á„‚á…©~b")
+(merge-rule "魴" "방")
+(merge-rule "鮀" "á„á…¡~b")
+(merge-rule "鮃" "평")
+(merge-rule "鮎" "점")
+(merge-rule "鮑" "포~b")
+(merge-rule "鮒" "부~b")
+(merge-rule "鮓" "자~b")
+(merge-rule "鮗" "동")
+(merge-rule "鮟" "안")
+(merge-rule "鮧" "제~b")
+(merge-rule "鮨" "지~b")
+(merge-rule "鮪" "유~b")
+(merge-rule "鮫" "교~b")
+(merge-rule "é®­" "á„’á…¢~b")
+(merge-rule "鮮" "선")
+(merge-rule "鮹" "소~b")
+(merge-rule "é¯" "경")
+(merge-rule "鯆" "포~b")
+(merge-rule "鯉" "리~b")
+(merge-rule "鯊" "사~b")
+(merge-rule "鯔" "치~b")
+(merge-rule "鯖" "청")
+(merge-rule "鯛" "조~b")
+(merge-rule "鯢" "예~b")
+(merge-rule "鯤" "곤")
+(merge-rule "鯨" "경")
+(merge-rule "鯷" "제~b")
+(merge-rule "鰈" "접")
+(merge-rule "鰊" "련")
+(merge-rule "鰌" "추~b")
+(merge-rule "é°" "á„Žá…®~b")
+(merge-rule "é°" "악")
+(merge-rule "鰒" "복")
+(merge-rule "鰓" "새~b")
+(merge-rule "é°•" "á„’á…¡~b")
+(merge-rule "鰤" "사~b")
+(merge-rule "鰥" "환")
+(merge-rule "鰭" "기~b")
+(merge-rule "鰮" "온")
+(merge-rule "鰯" "약")
+(merge-rule "鰱" "련")
+(merge-rule "é°²" "á„‹á…©~b")
+(merge-rule "鰵" "민")
+(merge-rule "鰹" "견")
+(merge-rule "鰺" "소~b")
+(merge-rule "鰻" "만")
+(merge-rule "é°¾" "á„‘á…­~b")
+(merge-rule "鱇" "강")
+(merge-rule "鱉" "별")
+(merge-rule "é±" "심")
+(merge-rule "鱒" "준")
+(merge-rule "鱓" "선")
+(merge-rule "鱗" "린")
+(merge-rule "é± " "á„’á…¬~b")
+(merge-rule "鱣" "전")
+(merge-rule "鱧" "례~b")
+(merge-rule "鱸" "로~b")
+(merge-rule "鱻" "선")
+(merge-rule "鳥" "조~b")
+(merge-rule "鳦" "을")
+(merge-rule "鳧" "부~b")
+(merge-rule "鳩" "구~b")
+(merge-rule "鳳" "봉")
+(merge-rule "鳴" "명")
+(merge-rule "鳶" "연")
+(merge-rule "鴃" "격")
+(merge-rule "鴆" "짐")
+(merge-rule "鴇" "보~b")
+(merge-rule "鴈" "안")
+(merge-rule "é´‰" "á„‹á…¡~b")
+(merge-rule "鴌" "봉")
+(merge-rule "鴒" "령")
+(merge-rule "é´•" "á„á…¡~b")
+(merge-rule "鴘" "변")
+(merge-rule "é´™" "á„Žá…µ~b")
+(merge-rule "鴛" "원")
+(merge-rule "é´Ÿ" "á„Žá…µ~b")
+(merge-rule "鴣" "고~b")
+(merge-rule "鴦" "앙")
+(merge-rule "鴨" "압")
+(merge-rule "鴰" "괄")
+(merge-rule "鴶" "알")
+(merge-rule "鴻" "홍")
+(merge-rule "éµ" "교~b")
+(merge-rule "鵂" "휴~b")
+(merge-rule "鵄" "치~b")
+(merge-rule "鵑" "견")
+(merge-rule "鵓" "발")
+(merge-rule "鵔" "준")
+(merge-rule "éµ" "á„‹á…¡~b")
+(merge-rule "鵞" "아~b")
+(merge-rule "鵠" "곡")
+(merge-rule "鵡" "무~b")
+(merge-rule "鵩" "복")
+(merge-rule "鵬" "붕")
+(merge-rule "鵯" "필")
+(merge-rule "鵰" "조~b")
+(merge-rule "鵲" "작")
+(merge-rule "鵷" "원")
+(merge-rule "éµ»" "á„Žá…®~b")
+(merge-rule "鵾" "곤")
+(merge-rule "鶄" "청")
+(merge-rule "鶉" "순")
+(merge-rule "鶖" "추~b")
+(merge-rule "鶚" "악")
+(merge-rule "鶡" "갈")
+(merge-rule "鶤" "곤")
+(merge-rule "鶩" "목")
+(merge-rule "鶬" "창")
+(merge-rule "鶯" "앵")
+(merge-rule "鶴" "학")
+(merge-rule "鶵" "추~b")
+(merge-rule "鶸" "약")
+(merge-rule "鶹" "류~b")
+(merge-rule "鶻" "골")
+(merge-rule "鶿" "자~b")
+(merge-rule "é·" "익")
+(merge-rule "é·‚" "á„‹á…­~b")
+(merge-rule "鷄" "계~b")
+(merge-rule "鷇" "구~b")
+(merge-rule "鷓" "자~b")
+(merge-rule "é·–" "á„‹á…¨~b")
+(merge-rule "鷗" "구~b")
+(merge-rule "鷙" "지~b")
+(merge-rule "é·¦" "á„Žá…©~b")
+(merge-rule "鷩" "별")
+(merge-rule "鷪" "앵")
+(merge-rule "鷫" "숙")
+(merge-rule "鷰" "연")
+(merge-rule "鷱" "고~b")
+(merge-rule "é·²" "á„Žá…±~b")
+(merge-rule "鷳" "한")
+(merge-rule "鷸" "휼")
+(merge-rule "鷹" "응")
+(merge-rule "é·º" "á„‚á…©~b")
+(merge-rule "鷽" "학")
+(merge-rule "鷿" "벽")
+(merge-rule "鸇" "전")
+(merge-rule "é¸" "몽")
+(merge-rule "鸕" "로~b")
+(merge-rule "鸚" "앵")
+(merge-rule "鸛" "관")
+(merge-rule "鸜" "구~b")
+(merge-rule "鸞" "난")
+(merge-rule "é¹µ" "á„…á…©~b")
+(merge-rule "鹷" "령")
+(merge-rule "鹹" "함")
+(merge-rule "鹻" "감")
+(merge-rule "鹽" "염")
+(merge-rule "鹿" "녹")
+(merge-rule "麀" "우~b")
+(merge-rule "麂" "궤~b")
+(merge-rule "麄" "추~b")
+(merge-rule "麋" "미~b")
+(merge-rule "麌" "우~b")
+(merge-rule "éº" "균")
+(merge-rule "麑" "예~b")
+(merge-rule "麒" "기~b")
+(merge-rule "麓" "록")
+(merge-rule "麗" "려~b")
+(merge-rule "éº" "사~b")
+(merge-rule "麞" "장")
+(merge-rule "麟" "린")
+(merge-rule "麤" "추~b")
+(merge-rule "麥" "맥")
+(merge-rule "麩" "부~b")
+(merge-rule "麪" "면")
+(merge-rule "麯" "국")
+(merge-rule "麴" "국")
+(merge-rule "麵" "면")
+(merge-rule "麻" "마~b")
+(merge-rule "麽" "마~b")
+(merge-rule "麾" "휘~b")
+(merge-rule "麿" "마~b")
+(merge-rule "黃" "황")
+(merge-rule "黅" "금")
+(merge-rule "黌" "횡")
+(merge-rule "é»" "서~b")
+(merge-rule "黎" "려~b")
+(merge-rule "é»" "점")
+(merge-rule "é»" "á„…á…µ~b")
+(merge-rule "黑" "흑")
+(merge-rule "黔" "검")
+(merge-rule "黖" "기~b")
+(merge-rule "默" "묵")
+(merge-rule "黚" "겸")
+(merge-rule "黛" "대~b")
+(merge-rule "黜" "출")
+(merge-rule "é»" "á„‹á…²~b")
+(merge-rule "點" "점")
+(merge-rule "黠" "힐")
+(merge-rule "黥" "경")
+(merge-rule "黨" "당")
+(merge-rule "黮" "담")
+(merge-rule "黯" "암")
+(merge-rule "黲" "참")
+(merge-rule "黴" "미~b")
+(merge-rule "黵" "담")
+(merge-rule "黶" "염")
+(merge-rule "黷" "독")
+(merge-rule "黺" "분")
+(merge-rule "黻" "불")
+(merge-rule "黼" "보~b")
+(merge-rule "黽" "민")
+(merge-rule "黿" "원")
+(merge-rule "鼀" "축")
+(merge-rule "鼂" "조~b")
+(merge-rule "鼄" "주~b")
+(merge-rule "鼇" "오~b")
+(merge-rule "鼈" "별")
+(merge-rule "鼉" "á„á…¡~b")
+(merge-rule "鼊" "벽")
+(merge-rule "鼎" "정")
+(merge-rule "é¼" "á„‚á…¢~b")
+(merge-rule "鼓" "고~b")
+(merge-rule "鼗" "도~b")
+(merge-rule "鼙" "비~b")
+(merge-rule "鼠" "서~b")
+(merge-rule "鼢" "분")
+(merge-rule "鼫" "석")
+(merge-rule "鼬" "유~b")
+(merge-rule "鼯" "오~b")
+(merge-rule "鼴" "언")
+(merge-rule "鼸" "겸")
+(merge-rule "鼹" "언")
+(merge-rule "鼻" "비~b")
+(merge-rule "鼾" "한")
+(merge-rule "齊" "제~b")
+(merge-rule "齋" "재~b")
+(merge-rule "齎" "재~b")
+(merge-rule "é½’" "á„Žá…µ~b")
+(merge-rule "齔" "친")
+(merge-rule "齕" "흘")
+(merge-rule "齗" "은")
+(merge-rule "齟" "저~b")
+(merge-rule "é½ " "á„Žá…©~b")
+(merge-rule "齡" "령")
+(merge-rule "齦" "간")
+(merge-rule "齧" "설")
+(merge-rule "齩" "교~b")
+(merge-rule "齪" "착")
+(merge-rule "齫" "곤")
+(merge-rule "齬" "어~b")
+(merge-rule "é½²" "á„‹á…®~b")
+(merge-rule "齶" "악")
+(merge-rule "齷" "악")
+(merge-rule "é¾" "룡")
+(merge-rule "龎" "롱")
+(merge-rule "é¾" "방")
+(merge-rule "龒" "룡")
+(merge-rule "龔" "공")
+(merge-rule "龕" "감")
+(merge-rule "龜" "구~b")
+(merge-rule "é¾" "á„Žá…®~b")
+(merge-rule "龠" "약")
+(merge-rule "é¾¢" "á„’á…ª~b")
+(merge-rule "é¾¥" "á„‹á…²~b")
+(merge-rule "豈" "개~b")
+(merge-rule "ï¤" "갱")
+(merge-rule "車" "거~b")
+(merge-rule "賈" "고~b")
+(merge-rule "滑" "골")
+(merge-rule "串" "관")
+(merge-rule "句" "귀~b")
+(merge-rule "龜" "귀~b")
+(merge-rule "龜" "균")
+(merge-rule "契" "글")
+(merge-rule "金" "금")
+(merge-rule "喇" "나~b")
+(merge-rule "奈" "나~b")
+(merge-rule "ï¤" "á„‚á…¡~b")
+(merge-rule "癩" "나~b")
+(merge-rule "ï¤" "á„‚á…¡~b")
+(merge-rule "ï¤" "á„‚á…¡~b")
+(merge-rule "螺" "나~b")
+(merge-rule "裸" "나~b")
+(merge-rule "邏" "나~b")
+(merge-rule "樂" "낙")
+(merge-rule "洛" "낙")
+(merge-rule "烙" "낙")
+(merge-rule "珞" "낙")
+(merge-rule "落" "낙")
+(merge-rule "酪" "낙")
+(merge-rule "駱" "낙")
+(merge-rule "亂" "난")
+(merge-rule "卵" "난")
+(merge-rule "ï¤" "난")
+(merge-rule "爛" "난")
+(merge-rule "蘭" "난")
+(merge-rule "鸞" "난")
+(merge-rule "嵐" "남")
+(merge-rule "濫" "남")
+(merge-rule "藍" "남")
+(merge-rule "襤" "남")
+(merge-rule "拉" "납")
+(merge-rule "臘" "납")
+(merge-rule "蠟" "납")
+(merge-rule "廊" "낭")
+(merge-rule "朗" "낭")
+(merge-rule "浪" "낭")
+(merge-rule "狼" "낭")
+(merge-rule "郎" "낭")
+(merge-rule "來" "내~b")
+(merge-rule "冷" "냉")
+(merge-rule "勞" "노~b")
+(merge-rule "擄" "노~b")
+(merge-rule "櫓" "노~b")
+(merge-rule "爐" "노~b")
+(merge-rule "盧" "노~b")
+(merge-rule "老" "노~b")
+(merge-rule "蘆" "노~b")
+(merge-rule "虜" "노~b")
+(merge-rule "路" "노~b")
+(merge-rule "露" "노~b")
+(merge-rule "魯" "노~b")
+(merge-rule "鷺" "노~b")
+(merge-rule "碌" "녹")
+(merge-rule "祿" "녹")
+(merge-rule "綠" "녹")
+(merge-rule "菉" "녹")
+(merge-rule "錄" "녹")
+(merge-rule "鹿" "녹")
+(merge-rule "ï¥" "논")
+(merge-rule "壟" "농")
+(merge-rule "弄" "농")
+(merge-rule "籠" "농")
+(merge-rule "聾" "농")
+(merge-rule "牢" "뇌~b")
+(merge-rule "磊" "뇌~b")
+(merge-rule "賂" "뇌~b")
+(merge-rule "雷" "뇌~b")
+(merge-rule "壘" "누~b")
+(merge-rule "屢" "누~b")
+(merge-rule "樓" "누~b")
+(merge-rule "ï¥" "á„‚á…®~b")
+(merge-rule "漏" "누~b")
+(merge-rule "ï¥" "á„‚á…®~b")
+(merge-rule "ï¥" "á„‚á…®~b")
+(merge-rule "陋" "누~b")
+(merge-rule "勒" "늑")
+(merge-rule "肋" "늑")
+(merge-rule "凜" "늠")
+(merge-rule "凌" "능")
+(merge-rule "稜" "능")
+(merge-rule "綾" "능")
+(merge-rule "菱" "능")
+(merge-rule "陵" "능")
+(merge-rule "讀" "두~b")
+(merge-rule "拏" "라~b")
+(merge-rule "樂" "락")
+(merge-rule "ï¥" "락")
+(merge-rule "丹" "란")
+(merge-rule "寧" "령")
+(merge-rule "怒" "로~b")
+(merge-rule "率" "률")
+(merge-rule "異" "리~b")
+(merge-rule "北" "배~b")
+(merge-rule "磻" "번")
+(merge-rule "便" "변")
+(merge-rule "復" "부~b")
+(merge-rule "不" "불")
+(merge-rule "泌" "비~b")
+(merge-rule "數" "삭")
+(merge-rule "索" "삭")
+(merge-rule "參" "삼")
+(merge-rule "塞" "색")
+(merge-rule "省" "생")
+(merge-rule "葉" "섭")
+(merge-rule "說" "세~b")
+(merge-rule "殺" "쇄~b")
+(merge-rule "辰" "신")
+(merge-rule "沈" "심")
+(merge-rule "拾" "십")
+(merge-rule "若" "야~b")
+(merge-rule "掠" "약")
+(merge-rule "略" "약")
+(merge-rule "亮" "양")
+(merge-rule "兩" "양")
+(merge-rule "凉" "양")
+(merge-rule "梁" "양")
+(merge-rule "糧" "양")
+(merge-rule "良" "양")
+(merge-rule "諒" "양")
+(merge-rule "量" "양")
+(merge-rule "勵" "여~b")
+(merge-rule "呂" "여~b")
+(merge-rule "ï¦" "á„‹á…§~b")
+(merge-rule "廬" "여~b")
+(merge-rule "旅" "여~b")
+(merge-rule "濾" "여~b")
+(merge-rule "礪" "여~b")
+(merge-rule "閭" "여~b")
+(merge-rule "驪" "여~b")
+(merge-rule "麗" "여~b")
+(merge-rule "黎" "여~b")
+(merge-rule "力" "역")
+(merge-rule "曆" "역")
+(merge-rule "歷" "역")
+(merge-rule "ï¦" "역")
+(merge-rule "年" "연")
+(merge-rule "ï¦" "연")
+(merge-rule "ï¦" "연")
+(merge-rule "撚" "연")
+(merge-rule "漣" "연")
+(merge-rule "煉" "연")
+(merge-rule "璉" "연")
+(merge-rule "秊" "연")
+(merge-rule "練" "연")
+(merge-rule "聯" "연")
+(merge-rule "輦" "연")
+(merge-rule "蓮" "연")
+(merge-rule "連" "연")
+(merge-rule "鍊" "연")
+(merge-rule "列" "열")
+(merge-rule "ï¦" "열")
+(merge-rule "咽" "열")
+(merge-rule "烈" "열")
+(merge-rule "裂" "열")
+(merge-rule "說" "열")
+(merge-rule "廉" "염")
+(merge-rule "念" "염")
+(merge-rule "捻" "염")
+(merge-rule "殮" "염")
+(merge-rule "簾" "염")
+(merge-rule "獵" "엽")
+(merge-rule "令" "영")
+(merge-rule "囹" "영")
+(merge-rule "寧" "영")
+(merge-rule "嶺" "영")
+(merge-rule "怜" "영")
+(merge-rule "玲" "영")
+(merge-rule "瑩" "영")
+(merge-rule "羚" "영")
+(merge-rule "聆" "영")
+(merge-rule "鈴" "영")
+(merge-rule "零" "영")
+(merge-rule "靈" "영")
+(merge-rule "領" "영")
+(merge-rule "例" "예~b")
+(merge-rule "禮" "예~b")
+(merge-rule "醴" "예~b")
+(merge-rule "隸" "예~b")
+(merge-rule "惡" "오~b")
+(merge-rule "了" "요~b")
+(merge-rule "僚" "요~b")
+(merge-rule "寮" "요~b")
+(merge-rule "尿" "요~b")
+(merge-rule "料" "요~b")
+(merge-rule "樂" "요~b")
+(merge-rule "燎" "요~b")
+(merge-rule "ï§" "á„‹á…­~b")
+(merge-rule "蓼" "요~b")
+(merge-rule "遼" "요~b")
+(merge-rule "龍" "용")
+(merge-rule "暈" "운")
+(merge-rule "阮" "원")
+(merge-rule "劉" "유~b")
+(merge-rule "杻" "유~b")
+(merge-rule "柳" "유~b")
+(merge-rule "流" "유~b")
+(merge-rule "溜" "유~b")
+(merge-rule "琉" "유~b")
+(merge-rule "ï§" "á„‹á…²~b")
+(merge-rule "硫" "유~b")
+(merge-rule "ï§" "á„‹á…²~b")
+(merge-rule "ï§" "á„‹á…²~b")
+(merge-rule "六" "육")
+(merge-rule "戮" "육")
+(merge-rule "陸" "육")
+(merge-rule "倫" "윤")
+(merge-rule "崙" "윤")
+(merge-rule "淪" "윤")
+(merge-rule "輪" "윤")
+(merge-rule "律" "율")
+(merge-rule "慄" "율")
+(merge-rule "栗" "율")
+(merge-rule "率" "율")
+(merge-rule "隆" "융")
+(merge-rule "ï§" "á„‹á…µ~b")
+(merge-rule "吏" "이~b")
+(merge-rule "履" "이~b")
+(merge-rule "易" "이~b")
+(merge-rule "李" "이~b")
+(merge-rule "梨" "이~b")
+(merge-rule "泥" "이~b")
+(merge-rule "理" "이~b")
+(merge-rule "痢" "이~b")
+(merge-rule "罹" "이~b")
+(merge-rule "裏" "이~b")
+(merge-rule "裡" "이~b")
+(merge-rule "里" "이~b")
+(merge-rule "離" "이~b")
+(merge-rule "匿" "익")
+(merge-rule "溺" "익")
+(merge-rule "吝" "인")
+(merge-rule "燐" "인")
+(merge-rule "璘" "인")
+(merge-rule "藺" "인")
+(merge-rule "隣" "인")
+(merge-rule "鱗" "인")
+(merge-rule "麟" "인")
+(merge-rule "林" "임")
+(merge-rule "淋" "임")
+(merge-rule "臨" "임")
+(merge-rule "立" "입")
+(merge-rule "笠" "입")
+(merge-rule "粒" "입")
+(merge-rule "狀" "장")
+(merge-rule "炙" "적")
+(merge-rule "識" "지~b")
+(merge-rule "什" "집")
+(merge-rule "茶" "차~b")
+(merge-rule "刺" "척")
+(merge-rule "切" "체~b")
+(merge-rule "ï¨" "á„ᅡᆨ")
+(merge-rule "拓" "á„ᅡᆨ")
+(merge-rule "糖" "á„ᅡᆼ")
+(merge-rule "宅" "á„ᅢᆨ")
+(merge-rule "洞" "á„ᅩᆼ")
+(merge-rule "暴" "포~b")
+(merge-rule "輻" "폭")
+(merge-rule "行" "항")
+(merge-rule "降" "항")
+(merge-rule "見" "현")
+(merge-rule "廓" "확")
+
+; insert jongsong-filler
+(merge-rule "([ᅠᅡᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᅶᅷᅸᅹᅺᅻᅼᅽᅾᅿᆀá†á†‚ᆃᆄᆅᆆᆇᆈᆉᆊᆋᆌá†á†Žá†á†á†‘ᆒᆓᆔᆕᆖᆗᆘᆙᆚᆛᆜá†á†žá†Ÿá† á†¡á†¢á†£á†¤á†¥á†¦á†§íž°íž±íž²íž³íž´ížµíž¶íž·íž¸íž¹ížºíž»íž¼íž½íž¾íž¿íŸ€íŸíŸ‚ퟃퟄퟅퟆ])" "\1~b" :eregexp )
+
+(merge-rule "〮" "")
+(merge-rule "〯" "")
+
+;; END
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/latin/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/lang/latin/Makefile.am
new file mode 100644
index 00000000000..0f66df07918
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/latin/Makefile.am
@@ -0,0 +1,23 @@
+## Makefile.am fragment for modules/lang/latin/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ lang/latin/caseisrt.xdy \
+ lang/latin/letgroup.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/latin/caseisrt.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/latin/caseisrt.xdy
new file mode 100644
index 00000000000..8b17010338e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/latin/caseisrt.xdy
@@ -0,0 +1,34 @@
+;; $Id: caseisrt.xdy,v 1.1 1996/07/03 18:44:47 kehr Exp $
+;;
+;; These are the sort-rules for a latin-based alphabet. Usually in an
+;; index lower- and uppercase letters appear intermixed. Therefore, we
+;; map all uppercase-letters to their lowercase counterpart.
+
+(sort-rule "A" "a")
+(sort-rule "B" "b")
+(sort-rule "C" "c")
+(sort-rule "D" "d")
+(sort-rule "E" "e")
+(sort-rule "F" "f")
+(sort-rule "G" "g")
+(sort-rule "H" "h")
+(sort-rule "I" "i")
+(sort-rule "J" "j")
+(sort-rule "K" "k")
+(sort-rule "L" "l")
+(sort-rule "M" "m")
+(sort-rule "N" "n")
+(sort-rule "O" "o")
+(sort-rule "P" "p")
+(sort-rule "Q" "q")
+(sort-rule "R" "r")
+(sort-rule "S" "s")
+(sort-rule "T" "t")
+(sort-rule "U" "u")
+(sort-rule "V" "v")
+(sort-rule "W" "w")
+(sort-rule "X" "x")
+(sort-rule "Y" "y")
+(sort-rule "Z" "z")
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/lang/latin/letgroup.xdy b/Build/source/utils/xindy/xindy-src/modules/lang/latin/letgroup.xdy
new file mode 100644
index 00000000000..f02680bd9e3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/lang/latin/letgroup.xdy
@@ -0,0 +1,10 @@
+;; $Id: letgroup.xdy,v 1.3 1996/07/18 16:04:18 kehr Exp $
+;;
+;; This file contains the standard letter groups used in latin-based
+;; languages.
+
+(define-letter-groups
+ ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+ "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/ord/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/ord/Makefile.am
new file mode 100644
index 00000000000..b304aee08cc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/ord/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am fragment for modules/ord/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ ord/letorder.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/ord/letorder.xdy b/Build/source/utils/xindy/xindy-src/modules/ord/letorder.xdy
new file mode 100644
index 00000000000..24d566d52b6
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/ord/letorder.xdy
@@ -0,0 +1,8 @@
+;; $Id$
+;;
+;; This module defined the letter ordering scheme.
+;;
+
+(sort-rule " " "")
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/rules/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/rules/Makefile.am
new file mode 100644
index 00000000000..8239fb3a1fb
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/rules/Makefile.am
@@ -0,0 +1,25 @@
+## Makefile.am fragment for modules/rules/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ rules/isolatin1-exchange.xdy \
+ rules/latin-exchange.xdy \
+ rules/isolatin1-tolower.xdy \
+ rules/latin-tolower.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-exchange.xdy b/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-exchange.xdy
new file mode 100644
index 00000000000..f85c2b2cb1e
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-exchange.xdy
@@ -0,0 +1,88 @@
+;; isolatin1-exchange.xdy Roger Kehr 14 Jan 98
+;;----------------------------------------------------------------------
+
+;; This style maps swap uppercase with lowercase letters of the ISO
+;; Latin1 alphabet in the range 160-255. These rules do not :again to
+;; prevent looping.
+
+(define-rule-set "isolatin1-exchange"
+
+ :rules (("À" "à" :string)
+ ("Á" "á" :string)
+ ("Â" "â" :string)
+ ("Ã" "ã" :string)
+ ("Ä" "ä" :string)
+ ("Å" "å" :string)
+ ("Æ" "æ" :string)
+
+ ("Ç" "ç" :string)
+
+ ("È" "è" :string)
+ ("É" "é" :string)
+ ("Ê" "ê" :string)
+ ("Ë" "ë" :string)
+
+ ("Ì" "ì" :string)
+ ("Í" "í" :string)
+ ("Î" "î" :string)
+ ("Ï" "ï" :string)
+
+ ("Ð" "ð" :string)
+ ("Ñ" "ñ" :string)
+
+ ("Ò" "ò" :string)
+ ("Ó" "ó" :string)
+ ("Ô" "ô" :string)
+ ("Õ" "õ" :string)
+ ("Ö" "ö" :string)
+ ("Ø" "ø" :string)
+
+ ("Ù" "ù" :string)
+ ("Ú" "ú" :string)
+ ("Û" "û" :string)
+ ("Ü" "ü" :string)
+
+ ("Ý" "ý" :string)
+ ("Þ" "þ" :string)
+
+
+ ("à" "À" :string)
+ ("á" "Á" :string)
+ ("â" "Â" :string)
+ ("ã" "Ã" :string)
+ ("ä" "Ä" :string)
+ ("å" "Å" :string)
+ ("æ" "Æ" :string)
+
+ ("ç" "Ç" :string)
+
+ ("è" "È" :string)
+ ("é" "É" :string)
+ ("ê" "Ê" :string)
+ ("ë" "Ë" :string)
+
+ ("ì" "Ì" :string)
+ ("í" "Í" :string)
+ ("î" "Î" :string)
+ ("ï" "Ï" :string)
+
+ ("ð" "Ð" :string)
+ ("ñ" "Ñ" :string)
+
+ ("ò" "Ò" :string)
+ ("ó" "Ó" :string)
+ ("ô" "Ô" :string)
+ ("õ" "Õ" :string)
+ ("ö" "Ö" :string)
+ ("ø" "Ø" :string)
+
+ ("ù" "Ù" :string)
+ ("ú" "Ú" :string)
+ ("û" "Û" :string)
+ ("ü" "Ü" :string)
+
+ ("ý" "Ý" :string)
+ ("þ" "Þ" :string)
+ ))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-tolower.xdy b/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-tolower.xdy
new file mode 100644
index 00000000000..e481a86651a
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/rules/isolatin1-tolower.xdy
@@ -0,0 +1,52 @@
+;; isolatin1-tolower Roger Kehr 14 Jan 98
+;;----------------------------------------------------------------------
+
+;; This style maps all uppercase letters of the ISO Latin1 alphabet
+;; in the range 160-255 to their lowercase counterparts.
+
+(require "rules/latin-tolower.xdy")
+
+(define-rule-set "isolatin1-tolower"
+
+ :inherit-from ("latin-tolower")
+
+ :rules (("À" "à" :string :again)
+ ("Á" "á" :string :again)
+ ("Â" "â" :string :again)
+ ("Ã" "ã" :string :again)
+ ("Ä" "ä" :string :again)
+ ("Å" "å" :string :again)
+ ("Æ" "æ" :string :again)
+
+ ("Ç" "ç" :string :again)
+
+ ("È" "è" :string :again)
+ ("É" "é" :string :again)
+ ("Ê" "ê" :string :again)
+ ("Ë" "ë" :string :again)
+
+ ("Ì" "ì" :string :again)
+ ("Í" "í" :string :again)
+ ("Î" "î" :string :again)
+ ("Ï" "ï" :string :again)
+
+ ("Ð" "ð" :string :again)
+ ("Ñ" "ñ" :string :again)
+
+ ("Ò" "ò" :string :again)
+ ("Ó" "ó" :string :again)
+ ("Ô" "ô" :string :again)
+ ("Õ" "õ" :string :again)
+ ("Ö" "ö" :string :again)
+ ("Ø" "ø" :string :again)
+
+ ("Ù" "ù" :string :again)
+ ("Ú" "ú" :string :again)
+ ("Û" "û" :string :again)
+ ("Ü" "ü" :string :again)
+
+ ("Ý" "ý" :string :again)
+ ("Þ" "þ" :string :again)
+ ))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/rules/latin-exchange.xdy b/Build/source/utils/xindy/xindy-src/modules/rules/latin-exchange.xdy
new file mode 100644
index 00000000000..5275f3b85aa
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/rules/latin-exchange.xdy
@@ -0,0 +1,64 @@
+;; latin-exchange.xdy Roger Kehr 14 Jan 98
+;;----------------------------------------------------------------------
+;;
+;; Exchanges lower and uppercase letters.
+;;
+
+(define-rule-set "latin-exchange"
+
+ :rules (("A" "a" :string)
+ ("B" "b" :string)
+ ("C" "c" :string)
+ ("D" "d" :string)
+ ("E" "e" :string)
+ ("F" "f" :string)
+ ("G" "g" :string)
+ ("H" "h" :string)
+ ("I" "i" :string)
+ ("J" "j" :string)
+ ("K" "k" :string)
+ ("L" "l" :string)
+ ("M" "m" :string)
+ ("N" "n" :string)
+ ("O" "o" :string)
+ ("P" "p" :string)
+ ("Q" "q" :string)
+ ("R" "r" :string)
+ ("S" "s" :string)
+ ("T" "t" :string)
+ ("U" "u" :string)
+ ("V" "v" :string)
+ ("W" "w" :string)
+ ("X" "x" :string)
+ ("Y" "y" :string)
+ ("Z" "z" :string)
+
+ ("a" "A" :string)
+ ("b" "B" :string)
+ ("c" "C" :string)
+ ("d" "D" :string)
+ ("e" "E" :string)
+ ("f" "F" :string)
+ ("g" "G" :string)
+ ("h" "H" :string)
+ ("i" "I" :string)
+ ("j" "J" :string)
+ ("k" "K" :string)
+ ("l" "L" :string)
+ ("m" "M" :string)
+ ("n" "N" :string)
+ ("o" "O" :string)
+ ("p" "P" :string)
+ ("q" "Q" :string)
+ ("r" "R" :string)
+ ("s" "S" :string)
+ ("t" "T" :string)
+ ("u" "U" :string)
+ ("v" "V" :string)
+ ("w" "W" :string)
+ ("x" "X" :string)
+ ("y" "Y" :string)
+ ("z" "Z" :string)
+ ))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/rules/latin-tolower.xdy b/Build/source/utils/xindy/xindy-src/modules/rules/latin-tolower.xdy
new file mode 100644
index 00000000000..b6559da4336
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/rules/latin-tolower.xdy
@@ -0,0 +1,37 @@
+;; latin-tolower.xdy Roger Kehr 14 Jan 98
+;;----------------------------------------------------------------------
+;;
+;; Maps all latin letters to their lowercase counterpart
+;;
+
+(define-rule-set "latin-tolower"
+
+ :rules (("A" "a" :string :again)
+ ("B" "b" :string :again)
+ ("C" "c" :string :again)
+ ("D" "d" :string :again)
+ ("E" "e" :string :again)
+ ("F" "f" :string :again)
+ ("G" "g" :string :again)
+ ("H" "h" :string :again)
+ ("I" "i" :string :again)
+ ("J" "j" :string :again)
+ ("K" "k" :string :again)
+ ("L" "l" :string :again)
+ ("M" "m" :string :again)
+ ("N" "n" :string :again)
+ ("O" "o" :string :again)
+ ("P" "p" :string :again)
+ ("Q" "q" :string :again)
+ ("R" "r" :string :again)
+ ("S" "s" :string :again)
+ ("T" "t" :string :again)
+ ("U" "u" :string :again)
+ ("V" "v" :string :again)
+ ("W" "w" :string :again)
+ ("X" "x" :string :again)
+ ("Y" "y" :string :again)
+ ("Z" "z" :string :again)
+ ))
+
+;; End
diff --git a/Build/source/utils/xindy/xindy-src/modules/styles/Makefile.am b/Build/source/utils/xindy/xindy-src/modules/styles/Makefile.am
new file mode 100644
index 00000000000..58186d747f2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/styles/Makefile.am
@@ -0,0 +1,23 @@
+## Makefile.am fragment for modules/styles/.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org>
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+nobase_modules_DATA += \
+ styles/basic.xdy \
+ styles/makeidx.xdy
diff --git a/Build/source/utils/xindy/xindy-src/modules/styles/basic.xdy b/Build/source/utils/xindy/xindy-src/modules/styles/basic.xdy
new file mode 100644
index 00000000000..08df4bc66dc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/styles/basic.xdy
@@ -0,0 +1,36 @@
+;; $Id: basic.xdy,v 1.2 2008/01/09 15:13:54 jschrod Exp $ -*- Lisp -*-
+;; ------------------------------------------------------------
+;; (history at end)
+;; Licensed under GPL, see README and LICENSE.
+
+
+;;;
+;;; Very basic xindy style, to get some TeX-like output at all.
+;;; Useful for testing without the whole texindy framework.
+;;; It assumes the alphabets to be handled elsewhere, by language modules.
+;;;
+
+(define-location-class "page-numbers" ("arabic-numbers"))
+(define-attributes ("default"))
+
+(markup-letter-group :open-head "~n~n \textbf{" :close-head "}~n"
+ :capitalize)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+(markup-locclass-list :open "\quad ")
+(markup-locref-list :sep ", ")
+(markup-range :sep "--")
+
+
+;======================================================================
+;;
+;; $Log: basic.xdy,v $
+;; Revision 1.2 2008/01/09 15:13:54 jschrod
+;; Add another newline in front of letter groups.
+;;
+;; Revision 1.1 2006/08/05 15:58:11 jschrod
+;; Initial revision.
+;;
diff --git a/Build/source/utils/xindy/xindy-src/modules/styles/makeidx.xdy b/Build/source/utils/xindy/xindy-src/modules/styles/makeidx.xdy
new file mode 100644
index 00000000000..3b2492dd871
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/modules/styles/makeidx.xdy
@@ -0,0 +1,148 @@
+;; $Id: makeidx.xdy,v 1.1 1997/02/07 14:17:31 kehr Exp $
+;;
+;; This file implements the Output Style Specifiers for plain
+;; makeindex (see manpage of makeindex 2.x) in conjuction with
+;; TeX/LaTeX.
+;;
+;; The Input Style Specifiers of makeindex cannot de defined in a
+;; `xindy' style file. Use an appropriate version of the program
+;; `tex2xindy' which should be included with this distribution.
+;;
+;; Since `xindy' uses a different specification language than
+;; makeindex and some of the command-line options of makeindex are now
+;; only available as style-file commands, this file can only serve as
+;; a template that produces the default-markup of makeindex. However,
+;; it may be used as a starting point for further modification and
+;; specialization.
+;;
+;; The following values are taken from the source of the makeindex
+;; distribution (see file scanst.h and the manpage) for further
+;; details.
+;;
+
+;; Define all attributes appearing in your document. Your attributes
+;; are all encapsulators you use in your \index commands following the
+;; vertical bar sign `|'. For example `foo' is the attribute in the
+;; command \index{...|foo}. Here you specify the set of attributes
+;; that appear in your document, the order in which they appear in the
+;; index and which one superdes the other.
+;;
+;; Example: a) (define-attibutes (("default") ("bf") ("it")))
+;; b) (define-attibutes (("bf" "default")))
+;;
+;; The initial command is (change it accordingly):
+
+(define-attributes ("default"))
+
+;; The description of the location-classes.
+;; Add more location classes as needed.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+;; The most frequently used cross reference class "see". Add more, if
+;; necessary.
+
+(define-crossref-class "see")
+(markup-crossref-list :open "\see{" :close "}{}" :class "see")
+
+;; In makeindex: page_precedence <string> "rnaRA"
+;; List all location classes appearing in your document.
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"))
+
+
+;; preamble <string> "\\begin{theindex}\n"
+;; postamble <string> "\n\n\\end{theindex}\n"
+
+(markup-index :open "\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+;; These specifiers are not directly supported via a command-line
+;; switch as in makeindex. Add the appropriate markup-commands into
+;; the preamble.
+
+;; setpage_prefix <string> "~n \setcounter{page}{"
+;; setpage_suffix <string> "}~n"
+
+;; group_skip <string> "~n~n \indexspace~n"
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+
+;; The indexentries (item_<..> specifiers)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+;; Location-references
+
+;; delim_0 <string> ", "
+;; delim_1 <string> ", "
+;; delim_2 <string> ", "
+
+(markup-locclass-list :open ", " :sep ", ")
+
+;; delim_n <string> ", "
+
+(markup-locref-list :sep ", ")
+
+;; delim_r <string> "--"
+
+(markup-range :sep "--")
+
+;; Here follow all letter-groups. The short-cut notation is used here.
+
+(define-letter-groups
+ ("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
+ "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+
+;;
+;; The sort-rules map all letters to their lowercase counterpart.
+;;
+
+(sort-rule "A" "a")
+(sort-rule "B" "b")
+(sort-rule "C" "c")
+(sort-rule "D" "d")
+(sort-rule "E" "e")
+(sort-rule "F" "f")
+(sort-rule "G" "g")
+(sort-rule "H" "h")
+(sort-rule "I" "i")
+(sort-rule "J" "j")
+(sort-rule "K" "k")
+(sort-rule "L" "l")
+(sort-rule "M" "m")
+(sort-rule "N" "n")
+(sort-rule "O" "o")
+(sort-rule "P" "p")
+(sort-rule "Q" "q")
+(sort-rule "R" "r")
+(sort-rule "S" "s")
+(sort-rule "T" "t")
+(sort-rule "U" "u")
+(sort-rule "V" "v")
+(sort-rule "W" "w")
+(sort-rule "X" "x")
+(sort-rule "Y" "y")
+(sort-rule "Z" "z")
+
+
+;; That's all ;-)
+
+
+;; End
+
+;; Local Variables:
+;; mode: lisp
+;; End:
diff --git a/Build/source/utils/xindy/xindy-src/src/Makefile.am b/Build/source/utils/xindy/xindy-src/src/Makefile.am
new file mode 100644
index 00000000000..d7aac1f3854
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/Makefile.am
@@ -0,0 +1,71 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2008,2009 by Joachim Schrod.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+# Where the modules are found at runtime.
+MODULEDIR = $(pkglibdir)/modules
+
+
+# Automake has no CLISP support; moreover xindy.mem is not a binary
+# to be stripped upon 'make install-strip'. We define it as DATA.
+mem_DATA = xindy.mem
+
+# Tell the dist target about our sources, define the object files for
+# our own rule and the .lib files for the clean definition. Don't use
+# gmake-isms.
+FASSRC = base.lsp ordrules.lsp locref.lsp idxstyle.lsp \
+ index.lsp version.lsp markup.lsp
+FAS = base.fas ordrules.fas locref.fas idxstyle.fas \
+ index.fas version.fas markup.fas
+FASLIBS = base.lib ordrules.lib locref.lib idxstyle.lib \
+ index.lib version.lib markup.lib
+
+DEFAULTS = defaults.xdy
+DUMP_XINDY = dump-xindy.lsp
+MEMFILE = xindy.mem
+CLISP = @CLISP@ -q -E iso-8859-1
+
+xindy.mem: $(DEFAULTS) $(FAS) $(DUMP_XINDY)
+ rm -f $(MEMFILE)
+ $(CLISP) $(srcdir)/$(DUMP_XINDY)
+ if test "$(host_os)" != "mingw32"; then \
+ gzip -9n $@; \
+ mv $@.gz $@; \
+ fi
+
+$(DEFAULTS): $(DEFAULTS).in Makefile
+ sed 's|@MODULEDIR[@]|$(MODULEDIR)|g' <$(srcdir)/$(DEFAULTS).in >$(DEFAULTS)
+
+EXTRA_DIST = $(DEFAULTS).in $(FASSRC) dump-xindy.lsp
+
+SUFFIXES = .fas .lsp
+.lsp.fas:
+ $(CLISP) -c $< -o $@
+
+
+CLEANFILES = $(FAS) $(FASLIBS) $(DEFAULTS) xindy.mem
+
+# Dependencies required for parallel make.
+markup.fas: index.fas version.fas
+index.fas: idxstyle.fas ordrules.fas
+idxstyle.fas: locref.fas
+locref.fas: base.fas
+
diff --git a/Build/source/utils/xindy/xindy-src/src/Makefile.in b/Build/source/utils/xindy/xindy-src/src/Makefile.in
new file mode 100644
index 00000000000..ded63e8525c
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/Makefile.in
@@ -0,0 +1,524 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xindy-src/src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(memdir)"
+DATA = $(mem_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@ -q -E iso-8859-1
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Where the modules are found at runtime.
+MODULEDIR = $(pkglibdir)/modules
+
+# Automake has no CLISP support; moreover xindy.mem is not a binary
+# to be stripped upon 'make install-strip'. We define it as DATA.
+mem_DATA = xindy.mem
+
+# Tell the dist target about our sources, define the object files for
+# our own rule and the .lib files for the clean definition. Don't use
+# gmake-isms.
+FASSRC = base.lsp ordrules.lsp locref.lsp idxstyle.lsp \
+ index.lsp version.lsp markup.lsp
+
+FAS = base.fas ordrules.fas locref.fas idxstyle.fas \
+ index.fas version.fas markup.fas
+
+FASLIBS = base.lib ordrules.lib locref.lib idxstyle.lib \
+ index.lib version.lib markup.lib
+
+DEFAULTS = defaults.xdy
+DUMP_XINDY = dump-xindy.lsp
+MEMFILE = xindy.mem
+EXTRA_DIST = $(DEFAULTS).in $(FASSRC) dump-xindy.lsp
+SUFFIXES = .fas .lsp
+CLEANFILES = $(FAS) $(FASLIBS) $(DEFAULTS) xindy.mem
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .fas .lsp
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-memDATA: $(mem_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(mem_DATA)'; test -n "$(memdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(memdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(memdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(memdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(memdir)" || exit $$?; \
+ done
+
+uninstall-memDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(mem_DATA)'; test -n "$(memdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(memdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(memdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-memDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-memDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-memDATA install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags-am uninstall uninstall-am \
+ uninstall-memDATA
+
+.PRECIOUS: Makefile
+
+
+xindy.mem: $(DEFAULTS) $(FAS) $(DUMP_XINDY)
+ rm -f $(MEMFILE)
+ $(CLISP) $(srcdir)/$(DUMP_XINDY)
+ if test "$(host_os)" != "mingw32"; then \
+ gzip -9n $@; \
+ mv $@.gz $@; \
+ fi
+
+$(DEFAULTS): $(DEFAULTS).in Makefile
+ sed 's|@MODULEDIR[@]|$(MODULEDIR)|g' <$(srcdir)/$(DEFAULTS).in >$(DEFAULTS)
+.lsp.fas:
+ $(CLISP) -c $< -o $@
+
+# Dependencies required for parallel make.
+markup.fas: index.fas version.fas
+index.fas: idxstyle.fas ordrules.fas
+idxstyle.fas: locref.fas
+locref.fas: base.fas
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/src/base.lsp b/Build/source/utils/xindy/xindy-src/src/base.lsp
new file mode 100644
index 00000000000..4158d212f7b
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/base.lsp
@@ -0,0 +1,237 @@
+;; line 30 "base.nw"
+(lisp:defpackage "BASE")
+(lisp:in-package "BASE")
+(lisp:provide "base")
+
+#+:CMU17 (defpackage "CLOS")
+
+(eval-when (compile load eval)
+ (lisp:use-package "CLOS")
+ (lisp:use-package "COMMON-LISP")
+ #+CLISP (lisp:use-package "EXT")
+ )
+
+(eval-when (eval load compile)
+ #+CLISP (when (find-package "XP")
+ (pushnew :XP *features*))
+ #+(or ALLEGRO :CMU17) (pushnew :XP *features*)
+ )
+
+(setq *print-pretty* t)
+(setq *print-escape* t)
+
+(defparameter *mappings-trace* nil)
+(defparameter *locref-trace* nil)
+(eval-when (compile load eval)
+ (export '(*mappings-trace* *locref-trace*)))
+
+;; line 104 "base.nw"
+#-CLISP
+(defmacro simple-condition-format-string (&rest args)
+ `(simple-condition-format-control ,@args))
+#-CLISP
+(eval-when (compile load eval)
+ (export '(simple-condition-format-string)))
+;; line 133 "base.nw"
+(defmacro info (&rest msg)
+ `(APPLY #'FORMAT *STANDARD-OUTPUT* (LIST ,@msg)))
+;; line 138 "base.nw"
+(defparameter *nraw-error-message* "~&WARNING: ")
+
+(defmacro nraw (&rest msg)
+ `(PROGN
+ (FORMAT *ERROR-OUTPUT* BASE::*NRAW-ERROR-MESSAGE*)
+ (APPLY #'FORMAT *ERROR-OUTPUT* (LIST ,@msg))))
+;; line 147 "base.nw"
+(defparameter *oops-error-message* "~&ERROR: ")
+
+(defmacro oops (&rest msg)
+ `(LET ((MSG (LIST ,@msg)))
+ (FORMAT *ERROR-OUTPUT* BASE::*OOPS-ERROR-MESSAGE*)
+ (APPLY #'FORMAT *ERROR-OUTPUT* MSG)
+ (WHEN *LOGGING-ON*
+ (FORMAT *LOGGING-STREAM* BASE::*OOPS-ERROR-MESSAGE*)
+ (APPLY #'FORMAT *LOGGING-STREAM* MSG))))
+;; line 162 "base.nw"
+(defmacro oops* (fmt args)
+ `(LET ((FMT ,fmt)
+ (ARGS ,args))
+ (FORMAT *ERROR-OUTPUT* BASE::*OOPS-ERROR-MESSAGE*)
+ (APPLY #'FORMAT *ERROR-OUTPUT* FMT ARGS)
+ (WHEN *LOGGING-ON*
+ (FORMAT *LOGGING-STREAM* BASE::*OOPS-ERROR-MESSAGE*)
+ (APPLY #'FORMAT *LOGGING-STREAM* FMT ARGS))))
+;; line 183 "base.nw"
+(defparameter *logging-stream* nil)
+(defparameter *logging-on* nil)
+
+(defmacro gol (flag &rest msg)
+ `(WHEN (AND ,flag *LOGGING-ON*)
+ (APPLY #'FORMAT *LOGGING-STREAM* (list ,@msg))))
+;; line 74 "base.nw"
+(defmacro ifnot (expr then-body else-body)
+ `(IF (NOT ,expr) ,then-body ,else-body))
+;; line 82 "base.nw"
+(defun error-exit ()
+ #+CLISP (exit 1)
+ #+ALLEGRO (excl:exit 1)
+ #+CMU17 (unix:unix-exit 1)
+ )
+
+(defun exit-normally ()
+ #+CLISP (exit 0)
+ #+ALLEGRO (excl:exit 0)
+ #+CMU17 (unix:unix-exit 0)
+ )
+;; line 201 "base.nw"
+(defmacro assert! (cond &optional msg)
+ `(UNLESS ,cond
+ (FORMAT *ERROR-OUTPUT* "Internal error! Assertion ~A failed!" ',cond)
+ ,(if msg
+ `(ERROR "~S" ,msg)
+ `(ERROR "Entering debugger!"))))
+
+(pushnew :ASSERT! *features*)
+;; line 218 "base.nw"
+(defmacro define-slot-accessors (accessors)
+ `(eval-when (compile load eval)
+ ,@(apply #'nconc
+ (mapcar
+ #'(lambda (acc)
+ (let ((getnam (intern (concatenate 'string "GET-"
+ (symbol-name acc))))
+ (setnam (intern (concatenate 'string "SET-"
+ (symbol-name acc))))
+ )
+ `((defmacro ,getnam (obj)
+ (list 'slot-value obj '',acc))
+ (defmacro ,setnam (val obj)
+ (list 'setf (list 'slot-value obj '',acc) val))
+ (export '(,getnam ,setnam ,acc)))))
+ accessors))))
+
+(define-slot-accessors (
+ attribute
+ base-alphabet
+ basetype
+ catattr
+ catattr-grp-ordnum
+ entries
+ entry-list
+ entry-table
+ first
+ group-definition
+ hierdepth
+ idxclass
+ inner
+ join-length
+ last
+ last-in-group
+ layers
+ length
+ letters
+ locclass
+ locref-cache
+ locref-string
+ locrefs
+ members
+ merge-key
+ sort-key
+ print-key
+ main-key
+ name
+ order
+ ordnum
+ ordnums
+ origin
+ processing-ordnum
+ props
+ rangeattr
+ separator
+ sort-ordnum
+ state
+ subentries
+ subrefs
+ symbols
+ target
+ type
+ ))
+;; line 297 "base.nw"
+(defun split-list (split-function list &key sortfunc headfunc)
+ #+:ASSERT! (assert (not (and sortfunc headfunc))
+ ()
+ "split-list")
+ (let ((list-len (length list)))
+ (if (= 1 list-len)
+ (list list)
+ (let ((split-table (make-hash-table :test #'equal
+ :size (round (* 1.2 list-len))))
+ (key-list '()))
+ (mapc #'(lambda (elt)
+ (let ((key (funcall split-function elt)))
+ (setf (gethash key split-table)
+ (cons elt (gethash key split-table)))))
+ list)
+ (maphash #'(lambda (key element)
+ (declare (ignore element))
+ (push key key-list))
+ split-table)
+ (maplist #'(lambda (rest-list)
+ (let ((entries (gethash (car rest-list) split-table)))
+ (if headfunc
+ (let ((head (find-if headfunc entries)))
+ (rplaca rest-list
+ (if head
+ (cons head (delete head entries))
+ entries)))
+ (rplaca rest-list entries))))
+ (if sortfunc (sort key-list sortfunc) key-list))
+ key-list))))
+
+#|
+This version seems to be a little bit slower than the above one,
+despite the fact that we use a temporary array with a fill-pointer.
+
+(defun split-list (split-function sort-function list)
+ (let ((list-len (length list)))
+ (if (= 1 list-len)
+ (list list)
+ (let ((split-table (make-hash-table :test #'equal
+ :size (round (* 1.5 list-len)))))
+ (mapc #'(lambda (elt)
+ (let ((key (funcall split-function elt)))
+ (setf (gethash key split-table)
+ (cons elt (gethash key split-table)))))
+ list)
+ (let ((sort-array (make-array (hash-table-count split-table)
+ :fill-pointer 0)))
+ (maphash #'(lambda (key element)
+ (declare (ignore element))
+ (vector-push key sort-array))
+ split-table)
+ (map 'list
+ #'(lambda (key)
+ (gethash key split-table))
+ (sort sort-array sort-function)))))))
+|#
+
+;; line 60 "base.nw"
+(defvar *RCS-Identifier* '(
+;; line 68 "base.nw"
+("base" . "$Id: base.nw,v 1.20 1997/03/26 16:17:58 kehr Exp $")
+;; line 60 "base.nw"
+ ))
+
+(eval-when (compile load eval)
+
+;; line 96 "base.nw"
+(export '(ifnot error-exit exit-normally))
+;; line 192 "base.nw"
+(export '(oops oops* nraw info gol
+ *logging-stream* *logging-on*))
+;; line 212 "base.nw"
+(export 'assert!)
+;; line 357 "base.nw"
+(export '(split-list))
+;; line 64 "base.nw"
+ )
diff --git a/Build/source/utils/xindy/xindy-src/src/defaults.xdy.in b/Build/source/utils/xindy/xindy-src/src/defaults.xdy.in
new file mode 100644
index 00000000000..bd149fdbae0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/defaults.xdy.in
@@ -0,0 +1,5 @@
+;; defaults.xdy.in 29 Mar 09 -*- Lisp -*-
+;;------------------------------------------------------------
+
+(setq *load-paths* (list (pathname ".")
+ (pathname "@MODULEDIR@")))
diff --git a/Build/source/utils/xindy/xindy-src/src/dump-xindy.lsp b/Build/source/utils/xindy/xindy-src/src/dump-xindy.lsp
new file mode 100644
index 00000000000..73dc63677bd
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/dump-xindy.lsp
@@ -0,0 +1,33 @@
+;; $Id: dump-xindy.xdy,v 1.2 1996/08/02 17:41:07 kehr Exp $
+;; ----------------------------------------------------------------------
+;;
+;; This file is necessary to dump xindy.
+;;
+
+#+CLISP (setq custom:*suppress-check-redefinition* t)
+
+(load 'base)
+(load 'locref)
+(load 'ordrules)
+(load 'idxstyle)
+(load 'index)
+(load 'version)
+(load 'markup)
+
+(load "defaults.xdy")
+
+(setq *load-verbose* nil)
+
+(shadow 'require)
+(lisp:shadowing-import idxstyle:*idxstyle-user-interface-definitions*)
+(lisp:import markup:*markup-user-interface-definitions*)
+(lisp:import index:*raw-index-interface-definitions*)
+
+;; Install the break-driver if its feature exists.
+#+:BREAK-DRIVER
+(setq *break-driver* #'xindy:*break-driver*)
+
+(gc)
+
+(saveinitmem "xindy.mem" :quiet t)
+(exit)
diff --git a/Build/source/utils/xindy/xindy-src/src/idxstyle.lsp b/Build/source/utils/xindy/xindy-src/src/idxstyle.lsp
new file mode 100644
index 00000000000..2a561aee7f9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/idxstyle.lsp
@@ -0,0 +1,2127 @@
+;; line 289 "idxstyle.nw"
+;; $Id: idxstyle.nw,v 1.19 1997/03/26 16:18:23 kehr Exp $
+;;
+
+(lisp:defpackage "IDXSTYLE")
+(lisp:in-package "IDXSTYLE")
+(lisp:provide "idxstyle")
+
+#+CLISP (lisp:require "base")
+#+CLISP (lisp:require "locref")
+#+CLISP (lisp:require "ordrules")
+
+(eval-when (compile load eval)
+ (lisp:use-package "CLOS")
+ (lisp:use-package "COMMON-LISP")
+ #+CLISP (lisp:use-package "EXT")
+ #+(and :XP CLISP) (lisp:use-package "XP")
+ #-CLISP (lisp:require "base")
+ #-CLISP (lisp:require "locref")
+ (lisp:use-package "BASE")
+ (lisp:use-package "LOCREF")
+
+;; line 472 "intface.nw"
+(eval-when (eval load compile)
+ (when (find-package "ORDRULES")
+ (pushnew :ORDRULES *features*)))
+;; line 306 "idxstyle.nw"
+ ;; see submodule intface
+ )
+
+;; line 78 "idxstyle.nw"
+(defparameter *indexstyle* nil)
+(defparameter *indexstyle-readtable* (copy-readtable))
+(defparameter *included-files* '())
+(defvar *load-paths* "")
+(defparameter *default-load-paths* *load-paths*)
+
+(defparameter *default-minimum-range-length* 2)
+(defparameter *default-locref-hierdepth* 0)
+
+;; line 1151 "intface.nw"
+;; $Id: intface.nw,v 1.30 1997/10/20 11:25:09 kehr Exp $
+
+;; line 1016 "intface.nw"
+;;; $Id: intface.nw,v 1.30 1997/10/20 11:25:09 kehr Exp $
+;;;----------------------------------------------------------------------
+
+;;;
+;;; util-lib LISP Utitlity Library
+;;;
+;;; (history at end)
+
+
+;(provide 'util-lib)
+;(in-package 'util-lib)
+
+(defvar whole)
+(eval-when (compile load eval)
+ (export '(destructuring-switch-bind &switch whole)))
+
+(defmacro destructuring-switch-bind (lambdalist expr . body)
+ "Similar to 'destructuring-bind' but also allows switch options at the
+end of LAMBDALIST with the following syntax:
+
+ &switch { var | (var key [defval]) | (var ({ key }*) [defval]) }*
+
+In all cases VAR will be accessible in BODY as a variable.
+
+If only VAR is specified, it is bound to the keyword with the same
+name, if that keyword occured in EXPR. Otherwise it is bound to NIL.
+
+If both a VAR and KEY were specified, VAR will be bound to KEY, if KEY
+occured in EXPR and to NIL otherwise.
+
+If VAR and a list of KEYs were specified, VAR will be bound to the
+first KEY, which occured in EXPR. If none of the KEYS occured within
+EXPR, VAR will be bound to NIL.
+
+If DEFVAL was specified, variable will be bound to DEFVAL instead of
+NIL in cases where no switch keyword was found in EXPR.
+"
+
+ (let* ((switchlist (member '&switch lambdalist))
+
+ ;; 'remove' switches from lambdalist
+ (lambdalist (ldiff lambdalist switchlist))
+
+ ;; drop &switch keyword
+ (switches (when switchlist (cdr switchlist)))
+
+ ;; construct bindings for each switch and collect valid
+ ;; keywords in 'switchkeys'
+ (switchkeys '())
+ (bindings
+ (mapcar
+ #'(lambda (spec)
+ (cond
+
+ ;; spec simply consists of VAR
+ ((symbolp spec)
+ (let ((key (intern (symbol-name spec) 'keyword)))
+ (push key switchkeys)
+ `(,spec (FIND ,key <DESTRUCTURING-SWITCH-FORM>))
+ ))
+
+ ;; spec is (VAR form)
+ ((and (listp spec) (>= (list-length spec) 2))
+ (let ((var (first spec))
+ (keyspec (second spec))
+ (defval (when (cddr spec) (third spec))))
+ (cond
+ ;; spec is (VAR (KEY1 KEY2 ...))
+ ((listp keyspec)
+ `(,var
+ (COND
+ ,@(mapcar
+ #'(lambda (key)
+ (push key switchkeys)
+ `((FIND ,key <DESTRUCTURING-SWITCH-FORM>)
+ ,key))
+ keyspec)
+ (T ,defval))))
+
+ ;; spec is (VAR KEY)
+ (t
+ (push keyspec switchkeys)
+ ` (,var (OR
+ (FIND ,keyspec <DESTRUCTURING-SWITCH-FORM>)
+ ,defval)))
+ )))
+
+ ;; illegal spec
+ (t (error "~A is not a valid switch specifier." spec))
+ ))
+ switches))
+ )
+
+ ;; construct the expansion form
+ ` (LET ((<DESTRUCTURING-SWITCH-FORM> ,expr))
+ (LET ,bindings
+ (HANDLER-CASE
+ (DESTRUCTURING-BIND ,lambdalist
+ (SET-DIFFERENCE-KEEP-ORIGINAL-ORDER
+ <DESTRUCTURING-SWITCH-FORM>
+ ',switchkeys)
+ ,@body)
+ (ERROR (COND)
+ (DECLARE (IGNORE COND))
+ (ERROR "~&Syntax Error in ~S." WHOLE)
+ )
+ )
+ )
+ )
+ ))
+
+(defun set-difference-keep-original-order (set1 set2)
+ (mapcan #'(lambda (elt)
+ (unless (member elt set2)
+ (list elt)))
+ set1))
+
+#|
+(destructuring-switch-bind (name &rest args &key foo bar
+ &switch
+ on ; simple form
+ (started :start)
+ (speed (:fast :slow))
+ (off :turn-off :turn-on) ; with switch key
+ (choose (:one :two :three) :three))
+ '(width :foo 5 :bar 7 :on :turn-off :one)
+ (list name foo bar args on started speed off choose))
+|#
+;; line 111 "intface.nw"
+(eval-when (compile load eval)
+ (defun stringify (name)
+ (declare (inline))
+ (etypecase name
+ (symbol (symbol-name name))
+ (string name)
+ (number (write-to-string name)))))
+
+(defun list-of-strings-p (x)
+ (cond ((not (listp x)) nil)
+ ((every #'(lambda (elt)
+ (or (stringp elt) (symbolp elt) (numberp elt)))
+ x))))
+;; line 136 "intface.nw"
+(defun make-well-formed-list (attr-list)
+ (mapcar #'(lambda (x)
+ (cond ((null x)
+ (error "empty lists are not allowed !"))
+ ((or (symbolp x) (stringp x) (numberp x))
+ (list (stringify x)))
+ ((listp x)
+ (map-to-strings x))))
+ attr-list))
+
+(defun map-to-strings (slist)
+ (mapcar #'(lambda (x)
+ (cond ((null x)
+ (error "empty lists are not allowed !"))
+ ((or (symbolp x) (stringp x) (numberp x))
+ (stringify x))
+ ((listp x)
+ (error "nesting level too deep !"))
+ (t (error "~S is not a string !" x))))
+ slist))
+;; line 185 "intface.nw"
+(defun c-string-reader (stream char)
+ (declare (ignore char))
+ (let ((ch nil)
+ (str (make-array 32
+ :element-type
+ #+CLISP 'string-char
+ #-CLISP 'base-char
+ :adjustable t
+ :fill-pointer 0)))
+ (loop
+ (setq ch (read-char stream t #\Newline t))
+ (case ch
+ (#\" (let ((nextch (read-char-no-hang stream t #\Newline t)))
+ (when nextch
+ (unread-char nextch stream)
+ (case nextch
+ (#\Newline)
+ (#\t)
+ (#\Space)
+ (#\))
+ (t (nraw "~&Possible read-error due to ill-formed string \"~A\" ~S"
+ str *))))
+ (return str)))
+ (#\~ (setq ch (read-char stream t #\Newline t))
+ (case ch
+ (#\n (vector-push-extend #\Newline str))
+ (#\t (vector-push-extend #\Tab str))
+ (#\b (vector-push-extend (character 1) str))
+ (#\e (vector-push-extend (character 255) str))
+ (t (vector-push-extend ch str))))
+ (t (vector-push-extend ch str))))))
+
+(set-macro-character #\" #'c-string-reader nil *indexstyle-readtable*)
+
+#|
+(let ((x #\Null))
+ (loop for i from 1 to 255
+ do (progn (print (character i))
+ (when (char>= x (character i))
+ (print "Whee!"))
+ (setq x (character i)))))
+|#
+;; line 254 "intface.nw"
+(defmacro define-alphabet (&whole whole &optional name string-list)
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 256 "intface.nw"
+ ((not (listp string-list))
+ (error "missing argument <string-list> !"))
+ ((not (list-of-strings-p string-list))
+ (error "~S is not a list of strings" string-list))
+ (t `(LET ((NAME (STRINGIFY ',name)))
+ (WHEN (LOOKUP-BASETYPE *indexstyle* NAME)
+ (NRAW "redefining alphabet `~S'" NAME))
+ (ADD *indexstyle* (MAKE-ALPHABET NAME ',string-list))))))
+
+(defmacro define-alphabet* (&whole whole &optional name string-list)
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 267 "intface.nw"
+ ((not (listp string-list))
+ (error "missing argument <string-list> !"))
+ (t (let ((scar (car string-list)))
+ (if (and (symbolp scar) (fboundp scar))
+ `(LET ((NAME (STRINGIFY ',name))
+ (STRING-LIST ,string-list)) #| evaluates string-list |#
+ (UNLESS (LIST-OF-STRINGS-P STRING-LIST)
+ (ERROR "~S is not a list of strings" STRING-LIST))
+ (WHEN (LOOKUP-BASETYPE *indexstyle* NAME)
+ (NRAW "redefining alphabet `~S'" NAME))
+ (ADD *indexstyle* (MAKE-ALPHABET NAME STRING-LIST))))))))
+;; line 284 "intface.nw"
+(defmacro define-enumeration (&whole
+ whole
+ &optional
+ name prefix-match-func base-alphabet)
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 289 "intface.nw"
+ ((null prefix-match-func)
+ (error "missing argument <prefix-match-function> !"))
+ (t (let* ((name (stringify name))
+ (symbol (make-symbol
+ (concatenate 'string "ENUMERATION-" name))))
+ `(LET () #| PROGN instead of LET () yields a runtime error !? |#
+ (IF (LOOKUP-BASETYPE *indexstyle* ,name)
+ (NRAW "redefining alphabet `~S'" ,name)
+ (PROGN
+ (DEFCLASS ,symbol (ENUMERATION) ())
+ (ADD *indexstyle*
+ (MAKE-ENUMERATION ',symbol ,name ,base-alphabet))))
+ (DEFMETHOD PREFIX-MATCH ((STR STRING) (ENUM ,symbol))
+ (FUNCALL ,prefix-match-func STR)))))))
+;; line 312 "intface.nw"
+(defmacro define-location-class (&whole whole &rest args)
+ (destructuring-switch-bind (name
+ layer-list
+ &key
+ (min-range-length *default-minimum-range-length*)
+ (hierdepth 0) ;no hierarchies are to be formed
+ &switch
+ (var :var))
+ args
+ (cond
+ ((null name)
+ (error "missing argument <name> in~%~S" whole))
+ ((null layer-list)
+ (error "missing argument <layer-list> in~%~S" whole))
+ ;;((not (list-of-strings-p layer-list))
+ ;; (error "~S is not a list of strings in~%~S" layer-list whole))
+ ((not (numberp hierdepth))
+ (error "~S is not a number! in~%~S" hierdepth whole))
+ ((not (or (numberp min-range-length)
+ (eql 'none min-range-length)))
+ (error "~S must be a number or the keyword `none' in~%~S"
+ min-range-length whole))
+ (t (when (eql 'none min-range-length)
+ (setq min-range-length 0))
+ `(LET ((NAME (STRINGIFY ',name))
+ (LAYERS (BUILD-LOCCLASS-LAYERS ',layer-list ',whole)))
+ ;;(GOL T "~&define-location-class: ~S" LAYERS)
+ (COND ((LOOKUP-CROSSREF-CLASS *indexstyle* NAME)
+ (OOPS "replacing cross-reference-class `~S' is not allowed !"
+ NAME))
+ (t (WHEN (LOOKUP-LOCATION-CLASS *indexstyle* NAME)
+ (NRAW "redefining location-reference-class `~S' !" NAME))
+ (ADD *indexstyle*
+ ,(if var
+ `(CHECKED-MAKE-VAR-LOCATION-CLASS NAME LAYERS
+ ,hierdepth)
+ `(CHECKED-MAKE-STANDARD-LOCATION-CLASS NAME LAYERS
+ ,min-range-length ,hierdepth))))
+ ))))))
+;; line 354 "intface.nw"
+(defun build-locclass-layers (layers whole)
+ (let ((res-list '()))
+ (loop
+ ;;(gol t "~&build-locclass-layers: ~S" layers)
+ (when (endp layers) (return (nreverse res-list)))
+ (cond ((eql :sep (car layers))
+ (setq layers (cdr layers))
+ (if (endp layers)
+ (error "Reached end of list in~%~S" whole)
+ (push (make-loccls-separator (stringify (car layers)))
+ res-list)))
+ (t (let* ((layer (stringify (car layers)))
+ (basetype (lookup-basetype *indexstyle* layer)))
+ (if basetype
+ (push (make-loccls-layer basetype) res-list)
+ (error "Unknown basetype ~S in~%~S" layer whole)))))
+ (setq layers (cdr layers)))))
+;; line 377 "intface.nw"
+(defmacro define-crossref-class (&whole whole &rest args)
+ (destructuring-switch-bind (name
+ &switch (verified :unverified))
+ args
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 382 "intface.nw"
+ (t `(LET ((NAME (STRINGIFY ',name)))
+ (cond ((LOOKUP-LOCATION-CLASS *indexstyle* NAME)
+ (OOPS "replacing location-reference-class `~S' is not allowed !"
+ NAME))
+ (t (WHEN (LOOKUP-CROSSREF-CLASS *indexstyle* NAME)
+ (NRAW "redefining crossref-location-class `~S'" NAME))
+ (ADD *indexstyle*
+ ,(if verified
+ `(MAKE-UNVERIFIED-CROSSREF-LOCATION-CLASS NAME)
+ `(MAKE-VERIFIED-CROSSREF-LOCATION-CLASS NAME))))))))))
+;; line 398 "intface.nw"
+(defmacro define-location-class-order (olist)
+ (cond ((not (listp olist))
+ (error "missing argument <list> !"))
+ ((not (list-of-strings-p olist))
+ (error "~S is not a list of strings" olist))
+ (t `(LET ((CTR 1))
+ (MAPC #'(LAMBDA (NAME)
+ (LET* ((NEW-NAME (STRINGIFY NAME))
+ (LOCCLS
+ (CDR (LOOKUP-LOCATION-CLASS *indexstyle*
+ NEW-NAME))))
+ (INCF CTR)
+ (COND (LOCCLS (SET-ORDNUM CTR LOCCLS))
+ (t (OOPS "unknown location-class `~S'"
+ NEW-NAME)))))
+ ',olist)))))
+;; line 423 "intface.nw"
+(defmacro define-attributes (&whole whole &optional attr-list)
+ (cond ((null attr-list)
+ (error "missing argument <attribute-list> in~&~S" whole))
+ (t (let* ((wf-attr-list (make-well-formed-list attr-list))
+ (plain-list (apply #'concatenate 'list wf-attr-list))
+ )
+ `(PROGN
+ (MAPCAR
+ #'(LAMBDA (CATATTR)
+ (IF (LOOKUP-CATATTR *indexstyle* CATATTR)
+ (NRAW "ignoring redefinition of attribute ~S in~&~S"
+ CATATTR ',whole)
+ (ADD *indexstyle*
+ (MAKE-CATEGORY-ATTRIBUTE CATATTR))))
+ ',plain-list)
+ (INITIALIZE-CATEGORY-ATTRIBUTES ',wf-attr-list *indexstyle*))
+ ))))
+;; line 488 "intface.nw"
+#+:ORDRULES
+(defmacro merge-rule (&whole whole &rest args)
+ (destructuring-switch-bind (pattern
+ replacement
+ &switch
+ (again :again)
+ (string :string)
+ (extended-regexp :eregexp)
+ (basic-regexp :bregexp))
+ args
+ (cond ((null pattern)
+ (error "missing argument <pattern> !"))
+ ((or (and string extended-regexp) (and string basic-regexp)
+ (and extended-regexp basic-regexp))
+ (error "~&Only one of (:string :bregexp :eregexp) allowed in:~&~S !"
+ whole))
+ ((null replacement)
+ (error "~&Missing argument <replacement> in:~&~S!" whole))
+ (t `(PROGN
+ (ORDRULES:ADD-KEYWORD-MERGE-RULE ,pattern ,replacement
+ ,(if again 1 0)
+ ,(cond (string 1)
+ (basic-regexp 2)
+ (extended-regexp 3)
+ (t 0)))
+ (FLUSH-ORDRULES-MESSAGE-BUFFER))))))
+
+#-:ORDRULES
+(defmacro merge-rule (&rest args)
+ (declare (ignore args))
+ (oops "merge-rule not supported! ignoring definition"))
+;; line 525 "intface.nw"
+#+:ORDRULES
+(defparameter *sort-rule-orientations*
+ '(forward forward forward forward
+ forward forward forward forward))
+
+#+:ORDRULES
+(defmacro define-sort-rule-orientations (&whole whole &rest args)
+ (destructuring-switch-bind (&optional
+ (orientations *sort-rule-orientations*))
+ args
+ (unless (every #'(lambda (run)
+ (member run '(forward backward)))
+ orientations)
+ (error "~&Elements of ~S must be one of {forward,backward}!"
+ orientations))
+ `(PROGN
+ (SETQ *SORT-RULE-ORIENTATIONS* ',orientations)
+ (ORDRULES:INITIALIZE (LENGTH *SORT-RULE-ORIENTATIONS*))
+ (FLUSH-ORDRULES-MESSAGE-BUFFER))))
+
+#+:ORDRULES
+(defmacro define-rule-set (&whole whole &rest args)
+ (destructuring-bind (&optional
+ name
+ &key
+ inherit-from
+ rules)
+ args
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 554 "intface.nw"
+ ((not (listp rules))
+ (error "missing argument <rules-list> !"))
+ (t `(LET ((RS (MAKE-RULE-SET ',name ',inherit-from ',rules)))
+ (MAPC #'(LAMBDA (INH-NAME)
+ (INHERIT-RULE-SET RS (LOOKUP-RULE-SET *INDEXSTYLE*
+ INH-NAME)))
+ ',inherit-from)
+ (ADD-RULE-SET *INDEXSTYLE* RS))))))
+
+#-:ORDRULES
+(defmacro define-rule-set (&rest args)
+ (declare (ignore args))
+ (oops "define-rule-sets not supported! ignoring definition"))
+
+#+:ORDRULES
+(defmacro use-rule-set (&whole whole &rest args)
+ ;; FIXME: if we use destructuring-switch-bind-here an error occurs
+ (destructuring-bind (&key
+ run
+ rule-set)
+ args
+ (cond ((not (integerp run))
+ (error "incorrect argument <run> !"))
+ ((not rule-set)
+ (error "missing argument <rule-set> !"))
+ ((not (or (listp rule-set)
+ (stringp rule-set)))
+ (error "wrong argument to <rule-set> !"))
+ (t `(INSTANTIATE-RULE-SET ,run ,rule-set)))))
+
+#-:ORDRULES
+(defmacro use-rule-set (&rest args)
+ (declare (ignore args))
+ (oops "use-rule-sets not supported! ignoring definition"))
+
+#+:ORDRULES
+(defmacro sort-rule (&whole whole &rest args)
+ (destructuring-switch-bind (pattern
+ replacement
+ &key
+ (run 0)
+ &switch
+ (again :again)
+ (string :string)
+ (extended-regexp :eregexp)
+ (basic-regexp :bregexp))
+ args
+ (cond ((null pattern)
+ (error "missing argument <pattern> !"))
+ ((or (< run 0) (>= run (length *sort-rule-orientations*)))
+ (error "~&Argument of :run must be in the interval [0..~A]!"
+ (length *sort-rule-orientations*)))
+ ((or (and string extended-regexp) (and string basic-regexp)
+ (and extended-regexp basic-regexp))
+ (error "~&Only one of (:string :bregexp :eregexp) allowed in:~&~S !"
+ whole))
+ ((null replacement)
+ (error "missing argument <replacement> !"))
+ (t `(PROGN
+ (ORDRULES:ADD-KEYWORD-SORT-RULE ,run ,pattern ,replacement
+ ,(if again 1 0)
+ ,(cond (string 1)
+ (basic-regexp 2)
+ (extended-regexp 3)
+ (t 0)))
+ (FLUSH-ORDRULES-MESSAGE-BUFFER))))))
+
+#-:ORDRULES
+(defmacro define-sort-rule-orientations (&rest args)
+ (declare (ignore args))
+ (oops "define-sort-rule-orientations not supported! ignoring definition"))
+
+#-:ORDRULES
+(defmacro sort-rule (&rest args)
+ (declare (ignore args))
+ (oops "sort-rule not supported! ignoring definition"))
+
+(defun flush-ordrules-message-buffer ()
+ #+:ORDRULES
+ (when (and *mappings-trace* ordrules::*message-logging*)
+ (gol t "~A" ordrules::*message-buffer*)
+ (setq ordrules::*message-buffer-ptr* 0)))
+;; line 696 "intface.nw"
+(defmacro define-letter-group
+ (&whole whole name &key prefixes before after)
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 699 "intface.nw"
+ ((and before
+ (not (lookup-letter-group-definition *indexstyle* before)))
+ (error "~S does not name a letter group in~%~S" before whole))
+ ((and after
+ (not (lookup-letter-group-definition *indexstyle* after)))
+ (error "~S does not name a letter group in~%~S" after whole))
+ ((not (list-of-strings-p prefixes))
+ (error "argument <prefixes> is not a list of strings in~%~S"
+ whole))
+ (t `(LET ()
+ (ADD-LETTER-GROUPS *INDEXSTYLE*
+ ,name ',(or prefixes (list name))
+ :BEFORE ,before :AFTER ,after)))))
+;; line 718 "intface.nw"
+(defmacro define-letter-groups (&whole whole &optional letter-groups)
+ (cond ((not (list-of-strings-p letter-groups))
+ (error "~S is not a list of strings in~%~S" letter-groups whole))
+ (t `(LET ()
+ (ADD-LETTER-GROUPS *INDEXSTYLE*
+ ,(car letter-groups) ',(list (car letter-groups)))
+ ,@(let ((last (car letter-groups)))
+ (mapcar #'(lambda (letter-group)
+ (prog1
+ `(ADD-LETTER-GROUPS *INDEXSTYLE*
+ ,letter-group ',(list letter-group)
+ :AFTER ,last)
+ (setq last letter-group)))
+ (cdr letter-groups)))))))
+;; line 650 "intface.nw"
+(defmacro merge-to (&whole whole &rest args)
+ (destructuring-switch-bind (from to &switch drop)
+ args
+ (let ((from-attr (lookup-catattr *indexstyle* from))
+ (to-attr (lookup-catattr *indexstyle* to)))
+ (cond ((not from-attr)
+ (nraw "`~S' is not a known attribute in:~&~A" from whole))
+ ((not to-attr)
+ (nraw "`~S' is not a known attribute in:~&~A" to whole))
+ (t (if drop
+ `(ADD-DROP-IF-MERGED-RULE *INDEXSTYLE*
+ ',from-attr ',to-attr)
+ `(ADD-MERGE-RULE *INDEXSTYLE*
+ ',from-attr ',to-attr)))))))
+;; line 740 "intface.nw"
+;;; we remove the inherited symbol and establish a new one
+(eval-when (compile load eval)
+ (shadow 'require))
+
+(defmacro require (&rest args)
+ (cond ((null args)
+ (error "missing argument <filename> !"))
+ ((not (stringp (car args)))
+ (error "(require ~S): expected <filename> !" (car args)))
+ (t `(LET ((FILENAME (STRINGIFY ',(car args))))
+ (DO-REQUIRE FILENAME)))))
+
+(defun do-require (filename)
+ (let ((file (find-file filename)))
+ (unless (member file *included-files* :test #'equalp)
+ (push file *included-files*)
+ (info "~&Loading module ~S..." filename)
+ (watched-load file :echo t)
+ (info "~&Finished loading module ~S.~%" filename))))
+
+#|
+(defun do-require (filename)
+ (let ((file (find-file filename)))
+ (unless (member file *included-files* :test #'equalp)
+ (push file *included-files*)
+ (info "~&Loading module ~S..." filename)
+ (let ((*standard-output* (make-string-output-stream)))
+ (handler-case
+ (load file :verbose nil :echo t)
+; (stream-error (cond)
+; (step
+; (progn
+; (oops*
+; (simple-condition-format-string cond)
+; (simple-condition-format-arguments cond))
+; (exit))
+; )
+; )
+ (error (condition)
+ (info "~&~%~A~%" ";;;;;;;;;;;;;;;;;;;;;;;;")
+ (info "~A~%" ";; ERROR SECTION START")
+ (info "~%~A~%" (get-output-stream-string *standard-output*))
+ (info "~%~A~%" ";; ERROR SECTION END")
+ (info "~A~%~%" ";;;;;;;;;;;;;;;;;;;;;;;;")
+ (oops* (simple-condition-format-string condition)
+ (simple-condition-format-arguments condition))
+ (error-exit))
+ )
+ )
+ (info "~&Finished loading module ~S.~%" filename))))
+|#
+;; line 802 "intface.nw"
+(defun find-file (filename)
+ (let ((file (parse-namestring filename)))
+ (when (equal (file-namestring file) "")
+ (error "~S is not a valid filename !" filename))
+ (let ((found (some #'(lambda (path)
+ (and (probe-file (append-pathnames path file))))
+ *load-paths*)))
+ (or found (error "Could not find file ~S !" filename)))))
+;; line 813 "intface.nw"
+(defvar *wl-fmt* "~&~%Error in line ~S:~%~A~%")
+(defun watched-load (filename
+ &key
+ (print *load-print*)
+ (if-does-not-exist t)
+ echo)
+ (let ((stream (open (setq filename (pathname filename))
+ :direction
+ #+CLISP :input-immutable
+ #-CLISP :input
+ :element-type
+ #+CLISP 'string-char
+ #-CLISP 'base-char
+ :if-does-not-exist nil))
+ (lineno 1))
+ (if stream
+ (let* ((load-stream (make-string-output-stream))
+ (input-stream (if echo
+ (make-echo-stream stream load-stream)
+ stream
+ ))
+ (*load-pathname* (if (pathnamep filename) filename nil))
+ (*load-truename* (if (pathnamep filename) (truename filename) nil))
+ (*package* *package*) ; *PACKAGE* binden
+ (*readtable* *readtable*) ; *READTABLE* binden
+ (end-of-file "EOF")) ; einmaliges Objekt
+ ;;(setq sys::*load-input-stream* input-stream)
+ (block nil
+ (unwind-protect
+ (tagbody weiter
+ (let* ((obj
+ (handler-case (read input-stream nil end-of-file)
+ (error (cond)
+ (when echo
+ (let* ((str (get-output-stream-string load-stream))
+ (cnt (count #\Newline str)))
+ (info *wl-fmt* (+ cnt lineno) str)
+ (oops* (simple-condition-format-string cond)
+ (simple-condition-format-arguments cond))
+ (error-exit))))))
+ (str (get-output-stream-string load-stream))
+ (cnt (count #\Newline str)))
+ (incf lineno cnt)
+ (when (eql obj end-of-file)
+ (return-from nil))
+ (setq obj
+ (multiple-value-list
+ (cond ((compiled-function-p obj) (funcall obj))
+ ;;(compiling (funcall (compile-form obj nil nil nil nil nil)))
+ (t (handler-case (eval obj)
+ (error (cond)
+ (info *wl-fmt* lineno str)
+ (oops* (simple-condition-format-string cond)
+ (simple-condition-format-arguments cond))
+ (error-exit)))
+ (get-output-stream-string load-stream)
+ ))))
+ (when print (when obj (print (first obj))))
+ )
+ (go weiter)
+ )
+ (close stream) (close input-stream)
+ ) )
+ t)
+ (if if-does-not-exist
+ (error "A file with name ~A does not exist" filename)
+ nil)
+ ) ))
+;; line 891 "intface.nw"
+(defmacro searchpath (&rest args)
+ (cond ((null args)
+ (error "missing argument <pathlist> !"))
+ ((stringp (car args))
+ `(SET-SEARCHPATH-BY-STRING ,(car args)))
+ ((listp args)
+ `(SET-SEARCHPATH ',(car args)))))
+
+(defun set-searchpath-by-string (searchpath-str)
+ (set-searchpath (string-to-searchlist searchpath-str)))
+;; line 913 "intface.nw"
+(defun string-to-searchlist (str)
+ (let ((paths '())
+ pos)
+ (nreverse
+ (loop (when (equalp str "")
+ (return (push :default paths)))
+ (setq pos (position #+UNIX #\:
+ #+OS/2 #\;
+ #+WIN32 #\;
+ str))
+ (if pos
+ (progn
+ (push (subseq str 0 pos) paths)
+ (setq str (subseq str (1+ pos))))
+ (return (push str paths)))))))
+
+(defun set-searchpath (path-list)
+ (setq *load-paths*
+ (apply #'nconc
+ (mapcar
+ #'(lambda (elt)
+ (cond ((stringp elt)
+ (list (make-real-pathname elt)))
+ ((eq elt :default)
+ *default-load-paths*)
+ ((eq elt :last)
+ *load-paths*)
+ (t (oops "~&searchpath: invalid argument ~S in~%~S"
+ elt path-list))))
+ path-list))))
+;; line 954 "intface.nw"
+#+CLISP
+(defun make-real-pathname (pathname-str)
+ (let* ((pn (pathname pathname-str))
+ (fname (file-namestring pn)))
+ (if (string/= fname "")
+ (make-pathname :device (pathname-device pn)
+ :directory (append (or (pathname-directory pn)
+ '(:relative))
+ (list fname)))
+ pn)))
+;; line 966 "intface.nw"
+#-CLISP
+(defun make-real-pathname (pathname-str)
+ (let ((pn (parse-namestring
+ (if (eql (elt pathname-str (1- (length pathname-str))) #\/)
+ pathname-str
+ (concatenate 'string pathname-str "/")))))
+ (if (pathname-directory pn)
+ pn
+ (make-pathname :directory (list :relative (pathname-name pn))))))
+;; line 986 "intface.nw"
+(defun append-pathnames (pn-dir pn-sub)
+ (let ((dir-dir (pathname-directory pn-dir))
+ (dir-sub (pathname-directory pn-sub)))
+ (cond ((eq :absolute (car dir-sub)) pn-sub)
+ (t (make-pathname :device (pathname-device pn-dir)
+ :directory (append dir-dir (cdr dir-sub))
+ :name (pathname-name pn-sub)
+ :type (pathname-type pn-sub))))))
+
+;; line 62 "intface.nw"
+(defparameter *idxstyle-user-interface-definitions*
+ '(
+ *default-minimum-range-length*
+ *included-files*
+ *indexstyle-readtable*
+ define-alphabet
+ define-alphabet*
+ define-attributes
+ define-crossref-class
+ define-enumeration
+ define-letter-group
+ define-letter-groups
+ define-location-class
+ define-location-class-order
+ define-rule-set
+ define-sort-rule-orientations
+ forward backward
+ info
+ merge-rule
+ merge-to
+ require
+ searchpath
+ sort-rule
+ use-rule-set
+ *indexstyle*
+ ))
+
+;; line 1168 "intface.nw"
+(eval-when (compile load eval)
+
+;; line 91 "intface.nw"
+(export '(*indexstyle*
+ *indexstyle-readtable*
+ do-require
+ set-searchpath-by-string
+ *sort-rule-orientations*
+ forward backward
+ *idxstyle-user-interface-definitions*
+ ))
+;; line 159 "intface.nw"
+(export '(stringify list-of-strings-p
+ make-well-formed-list map-to-strings))
+;; line 642 "intface.nw"
+(export 'flush-ordrules-message-buffer)
+;; line 1170 "intface.nw"
+ )
+;; line 557 "idxrule.nw"
+;; $Id: idxrule.nw,v 1.10 1997/03/26 16:18:19 kehr Exp $
+
+;; line 323 "idxrule.nw"
+(defclass relation ()
+ ((rel-sets :accessor get-rel-sets
+ :initform '() )
+ (rel-hash :accessor get-rel-hash
+ :initform (make-hash-table :test #'equal))))
+
+(defun make-relation ()
+ (make-instance 'relation))
+;; line 344 "idxrule.nw"
+(defmethod rel-insert ((rel relation) x y)
+ (let* ((rel-sets (get-rel-sets rel))
+ (x-node (assoc x rel-sets))
+ (y-node (assoc y rel-sets)))
+ (cond ((null x-node) (setf (get-rel-sets rel) (cons (list x y) rel-sets)))
+ ((member y (cdr x-node)))
+ (t (rplacd x-node (cons y (cdr x-node)))))
+ (when (and (null y-node) (not (eql x y)))
+ (setf (get-rel-sets rel) (cons (list y) (get-rel-sets rel)))))
+ rel)
+
+(defmethod rel-simple-insert ((rel relation) x)
+ (let* ((rel-sets (get-rel-sets rel))
+ (x-node (assoc x rel-sets)))
+ (unless x-node (setf (get-rel-sets rel) (cons (list x) rel-sets))))
+ rel)
+;; line 366 "idxrule.nw"
+(defmethod rel-merge ((rel-1 relation) x)
+ (declare (ignore x))
+ rel-1)
+
+(defmethod rel-merge ((rel-1 relation) (rel-2 relation))
+ (mapc #'(lambda (r-2)
+ (let ((r-1 (assoc (car r-2) (get-rel-sets rel-1))))
+ (cond ((null r-1)
+ (setf (get-rel-sets rel-1)
+ (cons r-2 (get-rel-sets rel-1))))
+ (t (rplacd r-1 (union (cdr r-1) (cdr r-2)))))))
+ (get-rel-sets rel-2))
+ rel-1)
+;; line 387 "idxrule.nw"
+(defmacro relation-set (rel x)
+ `(CDR (ASSOC ,x (SLOT-VALUE ,rel 'REL-SETS))))
+;; line 408 "idxrule.nw"
+(defmethod make-ready ((rel relation))
+ (let ((ht (get-rel-hash rel)))
+ (mapc #'(lambda (node)
+ (mapc #'(lambda (succ-node)
+ (setf (gethash (cons (car node) succ-node) ht)
+ t))
+ (cdr node)))
+ (get-rel-sets rel)))
+ rel)
+;; line 423 "idxrule.nw"
+(defmacro relation-p (rel x y)
+ `(GETHASH (CONS ,x ,y) (SLOT-VALUE ,rel 'REL-HASH)))
+;; line 439 "idxrule.nw"
+(defun print-relation (rel-sets stream printfunc
+ &key open close headsep listsep)
+ (mapc #'(lambda (from)
+ (when open (format stream open))
+ (write (funcall printfunc (car from)) :stream stream)
+ (when headsep (format stream headsep))
+ (mapc #'(lambda (to)
+ (write (funcall printfunc to) :stream stream)
+ (when listsep (format stream listsep)))
+ (cdr from))
+ (when close (format stream close)))
+ rel-sets))
+;; line 467 "idxrule.nw"
+(defmethod topsort ((rel relation))
+ (let ((rel-set (copy-tree (get-rel-sets rel)))
+ (topsort-list '()))
+ (loop
+ (let ((zero-indeg (find-if #'(lambda (x) (null (cdr x))) rel-set)))
+ (when (null zero-indeg) (return))
+ (let ((zero-indeg-elt (car zero-indeg)))
+ (setq topsort-list (cons zero-indeg-elt topsort-list))
+ (setq rel-set (delete zero-indeg rel-set :test #'equal))
+ (mapc #'(lambda (x)
+ (rplacd x (delete zero-indeg-elt (cdr x) :test #'equal)))
+ rel-set)))
+ )
+ (if (null rel-set)
+ (values topsort-list t)
+ (values nil rel-set))))
+;; line 494 "idxrule.nw"
+(defmethod transform-relation ((rel relation) transform-func)
+ (let ((new-rel (make-relation)))
+ (mapc #'(lambda (x)
+ (let ((transformed-x (funcall transform-func (car x))))
+ (mapc #'(lambda (y)
+ (rel-insert new-rel
+ transformed-x
+ (funcall transform-func y)))
+ (cdr x))))
+ (get-rel-sets rel))
+ new-rel))
+;; line 511 "idxrule.nw"
+(defmethod remove-reflexivity ((rel relation))
+ (mapc #'(lambda (x)
+ (rplacd x (delete (car x) (cdr x) :test #'equal)))
+ (get-rel-sets rel))
+ rel)
+;; line 529 "idxrule.nw"
+(defmethod transitive-hull ((rel relation))
+ (setf (get-rel-sets rel)
+ (let ((rel-sets (get-rel-sets rel)))
+ (mapc #'(lambda (j)
+ (mapc #'(lambda (i)
+ (when (member (car j) (cdr i))
+ (mapc #'(lambda (k)
+ (when (and
+ (member (car k) (cdr j))
+ (not (member (car k)
+ (cdr i))))
+ (rplacd (last i)
+ (list (car k)))))
+ rel-sets)))
+ rel-sets))
+ rel-sets)))
+ rel)
+;; line 61 "idxrule.nw"
+(defclass index-rule ()
+ ())
+
+(defclass relation-rule (index-rule relation)
+ ())
+;; line 88 "idxrule.nw"
+(defclass merge-rule (relation-rule)
+ ())
+
+(defun make-merge-rule ()
+ (make-instance 'merge-rule))
+;; line 117 "idxrule.nw"
+(defclass drop-if-merged-rule (relation-rule)
+ ())
+
+(defun make-drop-if-merged-rule ()
+ (make-instance 'drop-if-merged-rule))
+;; line 278 "idxrule.nw"
+(defclass substitution-rule (relation-rule)
+ ())
+
+(defun make-substitution-rule ()
+ (make-instance 'substitution-rule))
+;; line 164 "idxrule.nw"
+(defclass catattr-groups (index-rule)
+ ((attribute-list :reader get-attribute-list
+ :writer set-attribute-list
+ :initform nil)
+ (attribute-table :reader get-attribute-table
+ :initform (make-hash-table :test #'equal
+ :size 16))))
+
+(defun make-catattr-groups ()
+ (make-instance 'catattr-groups))
+
+(defmethod add ((catattr-grp catattr-groups)
+ (catattr category-attribute))
+ (setf (gethash (get-name catattr) (get-attribute-table catattr-grp))
+ catattr))
+
+(defmacro lookup-catattr-name (catattr-grp catattr-name)
+ `(GETHASH ,catattr-name (SLOT-VALUE ,catattr-grp 'ATTRIBUTE-TABLE)))
+;; line 217 "idxrule.nw"
+(defun initialize-category-attributes (attribute-list idxcls)
+ (let ((catattr-grps (get-cat-attrs idxcls))
+ (impl-subst-rule (get-implicit-subst-rules idxcls)))
+ (set-attribute-list attribute-list catattr-grps)
+ (let ((catattr-grp-counter 0)
+ (sort-ordnum-counter 0))
+ (mapc
+ #'(lambda (sublist)
+ (incf catattr-grp-counter)
+ (let ((last-in-group (lookup-catattr-name catattr-grps
+ (car (last sublist))))
+ (prev-catattr nil))
+ (mapc
+ #'(lambda (catattr)
+ (cond ((stringp catattr)
+ (let ((ca (lookup-catattr-name catattr-grps
+ catattr)))
+ (incf sort-ordnum-counter)
+ (set-sort-ordnum sort-ordnum-counter ca)
+ (set-catattr-grp-ordnum catattr-grp-counter ca)
+ (set-last-in-group last-in-group ca)
+ (when prev-catattr
+ (rel-insert impl-subst-rule
+ (lookup-catattr-name catattr-grps
+ prev-catattr)
+ (lookup-catattr-name catattr-grps
+ catattr)))
+ (setq prev-catattr catattr)))
+ (t (error "~A is not a string" catattr))))
+ sublist)))
+ attribute-list))
+ catattr-grps))
+
+;; line 566 "idxrule.nw"
+(eval-when (compile load eval)
+
+;; line 69 "idxrule.nw"
+(export '(index-rule relation-rule))
+;; line 96 "idxrule.nw"
+(export '(merge-rule make-merge-rule))
+;; line 125 "idxrule.nw"
+(export '(drop-if-merged-rule make-drop-if-merged-rule))
+;; line 185 "idxrule.nw"
+(export '(catattr-groups make-catattr-groups lookup-catattr-name))
+;; line 252 "idxrule.nw"
+(export '(initialize-category-attributes catattr-single catattr-mixed))
+;; line 286 "idxrule.nw"
+(export '(substitution-rule make-substitution-rule))
+;; line 428 "idxrule.nw"
+(export '(relation make-relation get-rel-sets
+ rel-insert rel-merge make-ready
+ relation-set relation-p))
+;; line 549 "idxrule.nw"
+(export '(topsort transform-relation remove-reflexivity transitive-hull))
+;; line 568 "idxrule.nw"
+ )
+;; line 873 "idxclass.nw"
+;; $Id: idxclass.nw,v 1.20 1997/03/26 16:18:16 kehr Exp $
+;;
+
+;; line 129 "idxclass.nw"
+(defparameter *locref-cache-size* 1000)
+(defparameter *locref-cache-rehash-size* 2)
+(defparameter *locref-cache-hits* 0)
+(defparameter *locref-cache-misses* 0)
+;; line 80 "idxclass.nw"
+(defclass indexclass ()
+ ((name :initarg :name :type string)
+ (basetypes :accessor get-basetypes
+ :initform (make-hash-table :test #'equal :size 10))
+ (cat-attrs :accessor get-cat-attrs
+ :initform (make-catattr-groups))
+ (locref-classes :accessor get-locref-classes
+ :initform '() :type list)
+ (xref-classes :accessor get-xref-classes
+ :initform '() :type list)
+ (letter-groups :reader get-letter-groups
+ :initform (make-letter-group-manager))
+ (partial-order-dict :reader get-partial-order-dict
+ :initform (make-partial-order-dict))
+ (letter-dict :reader get-letter-dict
+ :initform (make-letter-dict))
+ (rule-sets :reader get-rule-sets
+ :initform (make-hash-table :test #'equal :size 20))
+
+;; line 136 "idxclass.nw"
+ (locref-cache :initform (initialize-locref-cache))
+;; line 99 "idxclass.nw"
+ ;; (succ-table :accessor get-succ-table
+ ;; :initform (make-hash-table))
+
+;; line 219 "idxclass.nw"
+ (merge-rules :reader get-merge-rules
+ :initform (make-merge-rule))
+ (drop-if-merged-rules :reader get-drop-if-merged-rules
+ :initform (make-drop-if-merged-rule))
+;; (merge-rule-topsort :reader get-merge-rule-topsort
+;; :writer set-merge-rule-topsort
+;; :initform '())
+
+
+;; line 724 "idxclass.nw"
+ (merge-drop-hook :reader get-merge-drop-hook
+ :writer set-merge-drop-hook
+ :initform #'set-state-deleted)
+
+;; line 229 "idxclass.nw"
+ (implicit-subst-rules :reader get-implicit-subst-rules
+ :initform (make-substitution-rule))
+ (explicit-subst-rules :reader get-explicit-subst-rules
+ :writer set-explicit-subst-rules
+ :initform (make-substitution-rule))
+
+;; line 776 "idxclass.nw"
+ (implicit-subst-hook :reader get-implicit-subst-hook
+ :writer set-implicit-subst-hook
+ :initform #'transitive-hull)
+ (explicit-subst-hook :reader get-explicit-subst-hook
+ :writer set-explicit-subst-hook
+ :initform #'identity)
+ (global-subst-hook :reader get-global-subst-hook
+ :writer set-global-subst-hook
+ :initform #'identity)
+ (substitution-subst-hook :reader get-substitution-subst-hook
+ :writer set-substitution-subst-hook
+ :initform #'null)
+;; line 102 "idxclass.nw"
+ ))
+
+(defun make-indexclass (name)
+ (make-instance 'indexclass :name name))
+;; line 253 "idxclass.nw"
+(defparameter *default-letter-group-definition* "default")
+
+(defclass letter-group-definition ()
+ ((name :initarg :name :type string)
+ (ordnum :initarg :ordnum :type number)))
+
+(defun make-letter-group-definition (name)
+ (make-instance 'letter-group-definition :name name :ordnum 0))
+
+(defclass letter-group-manager ()
+ ((prefixes :accessor get-prefixes
+ :initform (make-hash-table :test #'equal))
+ (letter-groups :accessor get-letter-groups
+ :initform (make-hash-table :test #'equal))
+ (sort-relation :accessor get-sort-relation
+ :initform (make-relation))
+ (lookup-list :accessor get-lookup-list :initform '())))
+
+(defun make-letter-group-manager ()
+ (let* ((lgm (make-instance 'letter-group-manager))
+ (letter-groups (get-letter-groups lgm))
+ (default-group (make-letter-group-definition
+ *default-letter-group-definition*)))
+ (setf (gethash *default-letter-group-definition* letter-groups)
+ default-group)
+ (rel-simple-insert (get-sort-relation lgm) default-group)
+ lgm))
+;; line 295 "idxclass.nw"
+(defun make-lookup-list (lgm)
+ (setf (get-lookup-list lgm)
+ (let ((lookup-list '()))
+ (maphash #'(lambda (key elt)
+ (push (cons key elt) lookup-list))
+ (get-prefixes lgm))
+ (sort lookup-list #'prefix<))))
+
+(defun prefix< (x y)
+ (let ((cx (car x))
+ (cy (car y)))
+ (let ((same-prefix (string/= cx cy)))
+ (cond ((null same-prefix))
+ ((> same-prefix 0)
+ (and (= same-prefix (length (car y)))))
+ (t (string< cx cy))))))
+;; line 326 "idxclass.nw"
+(defun add-letter-group-to-manager (lgm name prefix &key before after)
+ (let* ((prefixes (get-prefixes lgm))
+ (letter-groups (get-letter-groups lgm))
+ (letter-group (gethash name letter-groups)))
+ (unless letter-group;; this letter group is unknown -- create one!
+ (setq letter-group (make-letter-group-definition name))
+ (setf (gethash name letter-groups) letter-group)
+ (rel-simple-insert (get-sort-relation lgm) letter-group))
+ (let ((current-binding (gethash prefix prefixes)))
+ (and current-binding
+ (not (equal name (get-name current-binding)))
+ (warn "define-letter-group: prefix ~S now maps to letter group ~S"
+ prefix name)))
+ (setf (gethash prefix prefixes) letter-group)
+ (when before
+ (rel-insert (get-sort-relation lgm)
+ letter-group
+ (lookup-letter-group-definition *indexstyle* before)))
+ (when after
+ (rel-insert (get-sort-relation lgm)
+ (lookup-letter-group-definition *indexstyle* after)
+ letter-group)))
+ lgm)
+
+(defmethod lookup-letter-group-definition ((idxcls indexclass) (letter string))
+ (gethash letter (get-letter-groups (get-letter-groups idxcls))))
+;; line 360 "idxclass.nw"
+(defmethod make-ready ((lgm letter-group-manager))
+ (make-lookup-list lgm)
+ (let ((sort-relation (get-sort-relation lgm)))
+ (multiple-value-bind (topsorted-list remaining-relation)
+ (topsort sort-relation)
+ (if topsorted-list
+ (let ((ctr 0))
+ (mapc #'(lambda (grp-def)
+ (setf (get-ordnum grp-def) (incf ctr)))
+ topsorted-list))
+ (error
+ (concatenate 'string
+ "The user-defined relations for the letter-groups contains cycles!~%The part of the relation containing cycles is"
+ (with-output-to-string (s)
+ (print-relation remaining-relation s
+ #'(lambda (lgdef)
+ (get-name lgdef))
+ :open "~%" :headsep " before "
+ :listsep " "))))))))
+;; line 388 "idxclass.nw"
+(defmethod match-letter-group ((idxcls indexclass) (letter string))
+ (let* ((lgm (get-letter-groups idxcls))
+ (lookup-list (get-lookup-list lgm))
+ (match (find-if #'(lambda (prefix-cons)
+ (let* ((prefix (car prefix-cons))
+ (match-len (string/= prefix letter)))
+ (or (not match-len) #| full match |#
+ (= match-len #| full match with lg |#
+ (length prefix)))))
+ lookup-list))
+ (letter-group-definition
+ (if match
+ (cdr match);; the corresponding letter-grp-def
+ (lookup-letter-group-definition
+ *indexstyle* *default-letter-group-definition*))))
+ (gol t "~&Letter-group: ~S -> ~S"
+ letter (get-name letter-group-definition))
+ letter-group-definition))
+;; line 549 "idxclass.nw"
+(defclass rule-set ()
+ ((name :initarg :name)
+ (rules-list :accessor rules-list :initarg :rules-list)
+ (rules-hash :reader rules-hash
+ :initform (make-hash-table :test #'equal :size 32))
+ ))
+
+(defun make-rule-set (name inherit rules)
+ (unless (every #'(lambda (rule)
+ (and (stringp (car rule));; pattern
+ (stringp (cadr rule)));; replacement
+ )
+ rules)
+ (error "not a valid rule-set definition!"))
+ (let ((rs (make-instance 'rule-set :name name :rules-list rules)))
+ (let ((rh (rules-hash rs)))
+ (mapc #'(lambda (rule)
+ (setf (gethash (car rule) rh) rule))
+ rules)
+ (mapc #'(lambda (inh-name)
+ (let ((inh-rs (lookup-rule-set *indexstyle* inh-name)))
+ (when inh-rs
+ (inherit-rule-set rs inh-rs))))
+ inherit)
+ rs)))
+
+#|
+(add-rule-set *indexstyle*
+ (make-rule-set "foo" '() '(("foo" "bar" :again)
+ ("baz" "bam" :string)
+ ("1" "3"))))
+
+(add-rule-set *indexstyle*
+ (make-rule-set "bar" '() '(("1" "bar" :again)
+ ("2" "bam" :string))))
+|#
+
+(defmacro instantiate-rule-set (run rule-set-names)
+ (let ((rs (make-rule-set "temporary rule-set" rule-set-names '())))
+ (when rs
+ (cons 'progn
+ (mapcar #'(lambda (rule)
+ `(SORT-RULE ,@rule :RUN ,RUN))
+ (rules-list rs))))))
+
+
+
+(defun inherit-rule-set (rs parent)
+ (let ((rs-hash (rules-hash rs)))
+ (mapc #'(lambda (rule)
+ (let ((pattern (car rule)))
+ (unless (gethash pattern rs-hash)
+ (setf (gethash pattern rs-hash) rule)
+ (setf (rules-list rs)
+ (append (rules-list rs) (list rule))))))
+ (rules-list parent))
+ rs))
+;; line 140 "idxclass.nw"
+(defun initialize-locref-cache ()
+ (setq *locref-cache-hits* 0)
+ (setq *locref-cache-misses* 0)
+ (make-hash-table :test #'equal
+ :size *locref-cache-size*
+ :rehash-size *locref-cache-rehash-size*))
+
+(defmethod clear-locref-cache ((idxclass indexclass))
+ (setf (get-locref-cache idxclass)
+ (initialize-locref-cache)))
+
+(defun set-locref-cache-parameters (&key (size 1000) (rehash-size 3))
+ (when (< size 100) (setq size 100))
+ (when (< rehash-size 1.5) (setq rehash-size 1.5))
+ (setq *locref-cache-size* size)
+ (setq *locref-cache-rehash-size* rehash-size))
+;; line 165 "idxclass.nw"
+(defmacro lookup-locref-cache (idxcls locref-string)
+ `(LET ((LOCREF-LOOKUP (GETHASH ,locref-string
+ (SLOT-VALUE ,idxcls 'LOCREF-CACHE))))
+ (IF LOCREF-LOOKUP
+ (PROGN
+ (INCF *LOCREF-CACHE-HITS*)
+ (VALUES (CAR LOCREF-LOOKUP) (CDR LOCREF-LOOKUP)))
+ (PROGN
+ (INCF *LOCREF-CACHE-MISSES*)
+ (VALUES NIL NIL)))))
+
+(defmethod add-locref-cache ((idxcls indexclass)
+ (locref-string string)
+ (num number)
+ ;; the next one is typeless, since we
+ ;; also want to store the value NIL into
+ ;; it, to denote a mismatch
+ locref)
+ (setf (gethash locref-string (get-locref-cache idxcls))
+ (cons num locref))
+ (values num locref))
+
+(defmethod locref-statistics ((idxcls indexclass))
+ (let ((ht (get-locref-cache idxcls)))
+ (with-output-to-string (s)
+ (format
+ s "Statistics for locref-cache of indexclass ~S:~%" (get-name idxcls))
+ (format
+ s
+ "Hash-table: size=~A, count=~A, cache-hits=~A, cache-misses=~A, hits=~4,1,,'*F%~%"
+ (hash-table-size ht) (hash-table-count ht)
+ *locref-cache-hits* *locref-cache-misses*
+ (if (> *locref-cache-misses* 0)
+ (* 100 (/ *locref-cache-hits* (+ *locref-cache-hits*
+ *locref-cache-misses*)))
+ 100.0 #| produces an invalid value |#)))))
+;; line 430 "idxclass.nw"
+(defmethod add ((idxcls indexclass) (basetype basetype))
+ (setf (gethash (get-name basetype) (get-basetypes idxcls))
+ basetype)
+ idxcls)
+
+(defmethod add-alias ((idxcls indexclass) basetype alias-name)
+ (let ((new-basetype (make-copy (lookup-basetype idxcls basetype)
+ alias-name)))
+ (add idxcls new-basetype)))
+
+(defmethod add ((idxcls indexclass) (catattr category-attribute))
+ (add (get-cat-attrs idxcls) catattr)
+ idxcls)
+;; line 446 "idxclass.nw"
+(defun add-letter-groups (idxcls name prefixes &key before after)
+ (let ((lgm (get-letter-groups idxcls)))
+ (mapc #'(lambda (prefix)
+ (add-letter-group-to-manager lgm name prefix
+ :before before
+ :after after))
+ prefixes)))
+;; line 462 "idxclass.nw"
+(defmethod add ((idxcls indexclass) (loccls layered-location-class))
+ (let* ((loccls-name (get-name loccls))
+ (old-loccls (cdr (lookup-locref-class idxcls loccls-name))))
+ (when old-loccls
+ (remove-location-class idxcls old-loccls))
+ (if (get-locref-classes idxcls) #| if it is empty, we can't rplacd |#
+ (rplacd (last (get-locref-classes idxcls))
+ (acons loccls-name loccls nil))
+ (setf (get-locref-classes idxcls)
+ (acons loccls-name loccls nil))))
+ idxcls)
+
+(defmethod remove-location-class ((idxcls indexclass)
+ (loccls layered-location-class))
+ (setf (get-locref-classes idxcls)
+ (delete-if #'(lambda (elt)
+ (eq (cdr elt) loccls))
+ (get-locref-classes idxcls)))
+ idxcls)
+;; line 484 "idxclass.nw"
+(defmethod add ((idxcls indexclass) (xrefcls crossref-location-class))
+ (let ((xrefcls-name (get-name xrefcls)))
+ (setf (get-xref-classes idxcls)
+ (acons xrefcls-name xrefcls (get-xref-classes idxcls)))
+ idxcls))
+;; line 495 "idxclass.nw"
+(defmethod add-merge-rule ((idxcls indexclass)
+ (catattr-1 category-attribute)
+ (catattr-2 category-attribute))
+ (rel-insert (get-merge-rules idxcls) catattr-1 catattr-2)
+ idxcls)
+
+(defmethod add-drop-if-merged-rule ((idxcls indexclass)
+ (catattr-1 category-attribute)
+ (catattr-2 category-attribute))
+ (rel-insert (get-merge-rules idxcls) catattr-1 catattr-2)
+ (rel-insert (get-drop-if-merged-rules idxcls) catattr-1 catattr-2)
+ idxcls)
+;; line 512 "idxclass.nw"
+(defmethod add-implicit-substitution-rule (
+ (idxcls indexclass)
+ (catattr-1 category-attribute)
+ (catattr-2 category-attribute))
+ (rel-insert (get-implicit-subst-rules idxcls) catattr-1 catattr-2)
+ idxcls)
+
+
+(defmethod add-explicit-substitution-rule (
+ (idxcls indexclass)
+ (catattr-1 category-attribute)
+ (catattr-2 category-attribute))
+ (rel-insert (get-explicit-subst-rules idxcls) catattr-1 catattr-2)
+ idxcls)
+;; line 609 "idxclass.nw"
+(defmethod add-rule-set ((idxcls indexclass) (rs rule-set))
+ (let ((rule-sets (get-rule-sets idxcls))
+ (rs-name (get-name rs)))
+ (setf (gethash rs-name rule-sets) rs)))
+;; line 635 "idxclass.nw"
+(defmethod lookup-basetype ((idxcls indexclass) (basetype-name string))
+ (gethash basetype-name (get-basetypes idxcls)))
+
+(defmethod lookup-catattr ((idxcls indexclass) (catattr-name string))
+ (lookup-catattr-name (slot-value idxcls 'cat-attrs) catattr-name))
+
+(defmethod lookup-location-class ((idxcls indexclass) (loccls-name string))
+ (or (lookup-crossref-class idxcls loccls-name)
+ (lookup-locref-class idxcls loccls-name)))
+
+(defmethod lookup-crossref-class ((idxcls indexclass) (xref-name string))
+ (assoc xref-name (slot-value idxcls 'xref-classes) :test #'equal))
+
+(defmethod lookup-locref-class ((idxcls indexclass) (loccls-name string))
+ (assoc loccls-name (slot-value idxcls 'locref-classes) :test #'equal))
+
+(defmethod lookup-rule-set ((idxcls indexclass) (rule-set-name string))
+ (gethash rule-set-name (get-rule-sets idxcls)))
+;; line 685 "idxclass.nw"
+(defmacro map-location-classes (idxcls apply-func &rest arguments)
+ `(LET ()
+ (APPLY #'NCONC
+ (MAPCAR
+ #'(LAMBDA (ELT)
+ (LET ((RES
+ (FUNCALL ,apply-func
+ ,idxcls
+ (CDR ELT) #|ELT is ("name".<LOCATION-CLASS>))|#
+ ,@arguments)))
+ (WHEN RES (LIST RES))))
+ (GET-LOCREF-CLASSES ,idxcls)))))
+
+;; line 800 "idxclass.nw"
+(defmethod apply-substitution-hooks ((idxcls indexclass))
+ (let ((impl (get-implicit-subst-rules idxcls))
+ (expl (get-explicit-subst-rules idxcls)))
+ (funcall (get-implicit-subst-hook idxcls) impl)
+ (funcall (get-explicit-subst-hook idxcls) expl)
+ (rel-merge impl expl)
+ (set-explicit-subst-rules nil idxcls)
+ (funcall (get-global-subst-hook idxcls) impl)
+ (make-ready impl)
+ ))
+;; line 838 "idxclass.nw"
+(defmethod make-ready ((idxcls indexclass))
+ (apply-substitution-hooks idxcls)
+ (make-ready (get-merge-rules idxcls))
+ (make-ready (get-drop-if-merged-rules idxcls))
+ (make-ready (get-letter-groups idxcls))
+
+
+;; (set-merge-rule-topsort (topsort
+;; (remove-reflexivity
+;; (transform-relation
+;; (get-drop-if-merged-rules idxcls)
+;; #'(lambda (attr)
+;; (get-ordnum attr)))))
+;; *indexstyle*)
+
+ ;;(pprint (get-drop-if-merged-rules idxcls))
+ ;;(pprint (topsort (get-drop-if-merged-rules idxcls)))
+
+ (let ((counter 0))
+ (mapc #'(lambda (catattr)
+ (set-processing-ordnum (incf counter) catattr))
+ (reverse (topsort (get-drop-if-merged-rules idxcls)))))
+
+ idxcls)
+
+;; line 888 "idxclass.nw"
+(eval-when (compile load eval)
+
+;; line 109 "idxclass.nw"
+(export '(indexclass make-indexclass
+ get-name get-basetypes
+ get-cat-attrs get-xref-classes
+ get-succ-table get-locref-classes
+ get-rule-sets
+
+;; line 241 "idxclass.nw"
+ get-merge-rules
+ get-drop-if-merged-rules
+; get-merge-rule-topsort set-merge-rule-topsort
+ get-implicit-subst-rules set-implicit-subst-rules
+ get-explicit-subst-rules set-explicit-subst-rules
+;; line 115 "idxclass.nw"
+ ))
+;; line 204 "idxclass.nw"
+(export '(locref-cache-size* *locref-cache-rehash-size*
+ initialize-locref-cache clear-locref-cache
+ lookup-locref-cache add-locref-cache
+ locref-statistics))
+;; line 409 "idxclass.nw"
+(export '(letter-group-definition match-letter-group))
+;; line 530 "idxclass.nw"
+(export '(add set
+ add-letter-groups
+ add-merge-rule
+ add-drop-if-merged-rule
+ add-implict-substitution-rule
+ add-explicit-substitution-rule))
+;; line 616 "idxclass.nw"
+(export '(rule-set
+ make-rule-set
+ add-rule-set
+ instantiate-rule-set
+ inherit-rule-set))
+;; line 656 "idxclass.nw"
+(export '(lookup-basetype
+ lookup-catattr
+ lookup-letter-group-definition
+ lookup-location-class
+ lookup-crossref-class
+ lookup-locref-class
+ lookup-rule-set))
+;; line 700 "idxclass.nw"
+(export 'map-location-classes)
+;; line 730 "idxclass.nw"
+(export '(get-merge-drop-hook set-merge-drop-hook))
+;; line 791 "idxclass.nw"
+(export '(get-implicit-subst-hook set-implicit-subst-hook
+ get-explicit-subst-hook set-explicit-subst-hook
+ get-global-subst-hook set-global-subst-hook
+ get-substitution-subst-hook set-substitution-subst-hook))
+;; line 823 "idxclass.nw"
+(export '(apply-substitution-hooks))
+;; line 865 "idxclass.nw"
+(export '(make-ready))
+;; line 890 "idxclass.nw"
+ )
+;; line 54 "idxstyle.nw"
+(defun create-indexclass (idxcls-name)
+ (setq *indexstyle* (make-indexclass idxcls-name)))
+;; line 259 "letters.nw"
+;; $Id$
+
+;; line 37 "letters.nw"
+(defclass letter ()
+ ((name :initarg :name :type string)
+ (props :initarg :props :type list)))
+
+(defun make-letter (name properties inherits-from)
+ (make-instance 'letter
+ :name name
+ :props (if inherits-from
+ (append properties (get-props inherits-from))
+ properties)))
+
+(defun find-prop (letter prop)
+ (assoc prop (get-props letter)))
+;; line 53 "letters.nw"
+(defclass letter-dictionary ()
+ ((letters :initform (make-hash-table :test #'equal))))
+
+(defun make-letter-dict ()
+ (make-instance 'letter-dictionary))
+
+(defun find-letter* (dict-ht letter)
+ (gethash letter dict-ht))
+
+(defun find-letter (dict letter)
+ (gethash letter (get-letters dict)))
+
+(defun add-letter-to-dict (letter-dict
+ po-dict
+ name props
+ &optional
+ inherits)
+ (let ((dict-ht (get-letters letter-dict)))
+ (when (gethash name dict-ht)
+ (nraw "Letter `~S' redefined!" name))
+ (setf (gethash name dict-ht)
+ (make-letter name
+ (pre-calculate-props props po-dict)
+ (when inherits
+ (find-letter* dict-ht name))))))
+;; line 85 "letters.nw"
+(defun pre-calculate-props (props po-dict)
+ (mapc #'(lambda (po-spec)
+ (let ((po-name (car po-spec))
+ (po-val (cadr po-spec)))
+ (setf (cdr (last po-spec))
+ (list (find-prop-weight
+ (find-partial-order po-dict po-name)
+ po-val)))))
+ props)
+ props)
+;; line 98 "letters.nw"
+(defmacro define-letter (&whole whole &rest rest)
+ (destructuring-switch-bind (name &rest proplist)
+ rest
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 102 "letters.nw"
+ ((not (listp proplist))
+ (error "~S is not a property list in ~S." proplist whole))
+ (t `(LET ((NAME (STRINGIFY ',name)))
+ (ADD-LETTER-TO-DICT
+ (GET-LETTER-DICT *INDEXSTYLE*)
+ (GET-PARTIAL-ORDER-DICT *INDEXSTYLE*)
+ ,name ',proplist))))))
+;; line 119 "letters.nw"
+(defclass partial-order ()
+ ((name :initarg :name :type string)
+ (order :initform (make-hash-table :test #'equal))
+ (direct :initarg :direct :type symbol)))
+
+(defun make-partial-order (name order &optional (direct :from-start))
+ (let* ((po (make-instance 'partial-order :name name :direct direct))
+ (po-ht (get-order po))
+ (ctr 0))
+ (mapc #'(lambda (elt)
+ (when (gethash elt po-ht)
+ (error "Element ~S doubly defined in partial order ~S."
+ elt name))
+ (setf (gethash elt po-ht) (incf ctr)))
+ order)
+ po))
+;; line 140 "letters.nw"
+(defclass partial-order-dictionary ()
+ ((order :initform (make-hash-table :test #'equal))))
+
+(defun make-partial-order-dict ()
+ (make-instance 'partial-order-dictionary))
+
+(defun find-partial-order (dict po-name)
+ (gethash po-name (get-order dict)))
+
+(defun find-prop-weight (po po-name)
+ (gethash po-name (get-order po)))
+
+(defun add-partial-order-to-dict (dict po-name po-order po-direct)
+ (let ((dict-ht (get-order dict)))
+ (when (gethash po-name dict-ht)
+ (nraw "Partial order ~S redefined!" po-name))
+ (setf (gethash po-name dict-ht)
+ (make-partial-order po-name po-order po-direct))))
+;; line 161 "letters.nw"
+(defmacro define-partial-order (&whole whole &rest rest)
+ (destructuring-switch-bind (name
+ ordlist
+ &switch
+ from-start
+ from-end)
+ rest
+ (cond
+;; line 239 "intface.nw"
+((null name)
+ (error "missing argument <name> in `~S' !" whole))
+((not (or (symbolp name) (stringp name)))
+ (error "~S is not a symbol or a string in `~S' !" name whole))
+;; line 169 "letters.nw"
+ ((not (listp ordlist))
+ (error "~S is not a partial order list in ~S." ordlist whole))
+ ((and from-start from-end)
+ (error "Only one of :from-start or :from-end is allowed in ~S."
+ whole))
+ (t `(LET ((NAME (STRINGIFY ',name)))
+ (ADD-PARTIAL-ORDER-TO-DICT
+ (GET-PARTIAL-ORDER-DICT *INDEXSTYLE*)
+ ,name ',ordlist
+ ,(if (or from-start (not from-end))
+ :from-start :from-end)))))))
+;; line 194 "letters.nw"
+(defun word-cmp (word1 word2 po)
+ (let ((po-name (get-name po))
+ let1 let2 weight1 weight2)
+ (loop
+ (cond
+ ((and (endp word1) (endp word2)) (return :equal))
+ ((endp word1) (return :less))
+ ((endp word2) (return :greater))
+ (t (setq let1 (car word1))
+ (setq word1 (cdr word1))
+ (setq let2 (car word2))
+ (setq word2 (cdr word2))
+ (setq weight1 (lookup-letter-weight let1 po-name))
+ (setq weight2 (lookup-letter-weight let2 po-name))
+ (when (< weight1 weight2) (return :less))
+ (when (> weight1 weight2) (return :greater)))))))
+
+(defun calc-list-of-weights (word po)
+ (let ((po-name (get-name po)))
+ (mapcar #'(lambda (letter)
+ (lookup-letter-weight letter po-name))
+ word)))
+;; line 227 "letters.nw"
+(defun lookup-letter-weight (letter po-name)
+ (let ((prop (find-prop letter po-name)))
+ (if prop
+ (car (last prop))
+ (find-prop-weight
+ (find-partial-order (get-partial-order-dict *indexstyle*) po-name)
+ 'others))))
+;; line 237 "letters.nw"
+(defun make-word (letter-list)
+ (let ((dict (get-letter-dict *indexstyle*)))
+ (mapcar #'(lambda (str)
+ (find-letter dict str))
+ letter-list)))
+
+(defun sort-words (word-list po)
+ (split-list #'(lambda (word)
+ (calc-list-of-weights word po))
+ word-list))
+
+
+
+;; line 99 "idxstyle.nw"
+(create-indexclass "default")
+;; line 107 "idxstyle.nw"
+(defmacro string-expand (str)
+ (let ((str-expansion
+ (map 'list
+ #'(lambda (c)
+ (make-string 1 :initial-element c))
+ str)))
+ `(QUOTE ,str-expansion)))
+
+(define-alphabet* "ALPHA" (string-expand "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
+(define-alphabet* "alpha" (string-expand "abcdefghijklmnopqrstuvwxyz"))
+(define-alphabet* "digits" (string-expand "0123456789"))
+;; line 128 "idxstyle.nw"
+(defun prefix-match-for-radix-numbers (str radix)
+ (let* ((n nil)
+ (strlen (length str))
+ (len-match (do ((i 0 (1+ i)))
+ ((or (>= i strlen)
+ (not (digit-char-p (char str i) radix)))
+ i)
+ (setq n (+ (* (if n n 0) radix)
+ (digit-char-p (char str i) radix))))))
+ (values (subseq str 0 len-match)
+ (subseq str len-match)
+ n)))
+;; line 155 "idxstyle.nw"
+(define-enumeration "arabic-numbers"
+ #'(lambda (str)
+ (prefix-match-for-radix-numbers str 10))
+ "0123456789")
+;; line 178 "idxstyle.nw"
+(defparameter *lowercase-roman-numbers-lookup-table*
+ '((#\i ("ix" . 9) ("iv" . 4) ("iiii" . 4) ("iii". 3) ("ii" . 2) ("i" . 1))
+ (#\v ("viiii" . 9) ("viii" . 8) ("vii" . 7) ("vi" . 6) ("v" . 5))
+ (#\x ("xc" . 90) ("xl" . 40) ("x" . 10))
+ (#\m ("m" . 1000))
+ (#\c ("cm" . 900) ("cd" . 400) ("c" . 100))
+ (#\l ("lxxxx" . 90) ("lxxx" . 80) ("lxx" . 70) ("lx" . 60) ("l" . 50))
+ (#\d ("dcccc" . 900) ("dccc" . 800) ("dcc" . 700) ("dc" . 600) ("d" . 500))
+ ))
+
+(defparameter *uppercase-roman-numbers-lookup-table*
+ '((#\I ("IX" . 9) ("IV" . 4) ("IIII" . 4) ("III". 3) ("II" . 2) ("I" . 1))
+ (#\V ("VIIII" . 9) ("VIII" . 8) ("VII" . 7) ("VI" . 6) ("V" . 5))
+ (#\X ("XC" . 90) ("XL" . 40) ("X" . 10))
+ (#\M ("M" . 1000))
+ (#\C ("CM" . 900) ("CD" . 400) ("C" . 100))
+ (#\L ("LXXXX" . 90) ("LXXX" . 80) ("LXX" . 70) ("LX" . 60) ("L" . 50))
+ (#\D ("DCCCC" . 900) ("DCCC" . 800) ("DCC" . 700) ("DC" . 600) ("D" . 500))
+ ))
+;; line 206 "idxstyle.nw"
+(defun roman-number-prefix-match (roman-number-string *table*)
+ (let ((result 0)
+ (str roman-number-string)
+ (last-val 100000) #| hope that's enough |#
+ (str-len (length roman-number-string))
+ ch table match-cons curr-val
+ )
+ (loop (when (= 0 (length str))
+ (return (values roman-number-string "" result)))
+ (setq ch (aref str 0))
+ (setq table (cdr (assoc ch *table*)))
+ (setq match-cons
+ (find-if #'(lambda (cons)
+ (let* ((prefix (car cons))
+ (match-len (string/= prefix str)))
+ (or (not match-len)
+ (= match-len (length prefix)))))
+ table))
+ (unless match-cons
+ (return (if (= 0 result)
+ (values nil nil nil)
+ (values (subseq roman-number-string
+ 0 (- str-len (length str)))
+ str result))))
+ (setq curr-val (cdr match-cons))
+ (when (> curr-val last-val)
+ (return (values (subseq roman-number-string
+ 0 (- str-len (length str)))
+ str result)))
+ (incf result curr-val)
+ (setq last-val curr-val)
+ (setq str (subseq str (length (car match-cons)))))))
+;; line 241 "idxstyle.nw"
+(define-enumeration "roman-numbers-uppercase"
+ #'(lambda (str)
+ (roman-number-prefix-match
+ str
+ *uppercase-roman-numbers-lookup-table*))
+ "IVXLCDM")
+
+(add-alias *indexstyle* "roman-numbers-uppercase" "ROMAN")
+(add-alias *indexstyle* "roman-numbers-uppercase" "roman-numerals-uppercase")
+
+(define-enumeration "roman-numbers-lowercase"
+ #'(lambda (str)
+ (roman-number-prefix-match
+ str
+ *lowercase-roman-numbers-lookup-table*))
+ "ivxlcdm")
+
+(add-alias *indexstyle* "roman-numbers-lowercase" "roman")
+(add-alias *indexstyle* "roman-numbers-lowercase" "roman-numerals-lowercase")
+
+
+;; line 902 "idxclass.nw"
+#+:XP
+(defmacro pprint-slot-block (slot-name body)
+ `(progn
+ (pprint-logical-block (s nil :suffix " }")
+ (pprint-indent :block 2 s)
+ (write-string ,slot-name s)
+ (pprint-newline :mandatory s)
+ ,body)
+ (pprint-newline :mandatory s)))
+
+#+:XP
+(defmacro pprint-slot-block-line (slot-name body)
+ `(progn
+ (pprint-logical-block (s nil :suffix " }")
+ (pprint-indent :block 2 s)
+ (write-string ,slot-name s)
+ (pprint-newline :linear s)
+ ,body)
+ (pprint-newline :mandatory s)))
+;; line 924 "idxclass.nw"
+#+:XP
+(set-pprint-dispatch 'indexclass
+ #'(lambda (s idxcls)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "indexclass " s)
+ (write (get-name idxcls) :stream s)
+ (write-string " {" s)
+ (pprint-newline :mandatory s)
+ (pprint-slot-block
+ "basetypes {"
+ (maphash #'(lambda (key bt)
+ (declare (ignore key))
+ (write (get-name bt) :stream s)
+ (write-string " " s)
+ (pprint-newline :linear s))
+ (get-basetypes idxcls)))
+ (pprint-slot-block
+ "cat-attrs {"
+ (write (get-cat-attrs idxcls) :stream s))
+ (pprint-slot-block
+ "locclasses {"
+ (mapc #'(lambda (lc)
+ (write (get-name (cdr lc)) :stream s)
+ (write-string " [" s)
+ (write (get-ordnum (cdr lc)) :stream s)
+ (write-string "] " s)
+ (pprint-newline :linear s))
+ (get-locref-classes idxcls)))
+ (pprint-slot-block
+ "xrefclasses {"
+ (mapc #'(lambda (lc)
+ (write (get-name (cdr lc)) :stream s)
+ (write-string " [" s)
+ (write (get-ordnum (cdr lc)) :stream s)
+ (write-string "] " s)
+ (pprint-newline :linear s))
+ (get-xref-classes idxcls)))
+
+ (write (get-letter-dict idxcls) :stream s)
+ (pprint-newline :mandatory s)
+ (write (get-partial-order-dict idxcls) :stream s)
+ (pprint-newline :mandatory s)
+
+ (pprint-slot-block
+ "merge-rules {"
+ (write (get-merge-rules idxcls) :stream s))
+ (pprint-slot-block
+ "drop-if-merged-rules {"
+ (write (get-drop-if-merged-rules idxcls) :stream s))
+ ;; (pprint-slot-block-line
+ ;; "merge-rule-topsort { "
+ ;; (write (get-merge-rule-topsort idxcls) :stream s))
+ (pprint-slot-block
+ "implicit-subst-rules {"
+ (write (get-implicit-subst-rules idxcls) :stream s))
+ (pprint-slot-block
+ "explicit-subst-rules {"
+ (write (get-explicit-subst-rules idxcls) :stream s))
+
+ (pprint-slot-block-line
+ "implicit-subst-hook {"
+ (write (get-implicit-subst-hook idxcls) :stream s))
+ (pprint-slot-block-line
+ "explicit-subst-hook {"
+ (write (get-explicit-subst-hook idxcls) :stream s))
+ (pprint-slot-block-line
+ "global-subst-hook {"
+ (write (get-global-subst-hook idxcls) :stream s))
+ (pprint-slot-block-line
+ "substitution-subst-hook {"
+ (write (get-substitution-subst-hook idxcls) :stream s))
+ (pprint-slot-block-line
+ "merge-drop-hook {"
+ (write (get-merge-drop-hook idxcls) :stream s))
+
+ ; (pprint-slot-block
+ ; "keyword-markup {"
+ ; (write (get-keyword-markup idxcls) :stream s))
+ )))
+;; line 580 "idxrule.nw"
+#+:XP
+(defun pprint-relation (s rel)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "Relation { " s)
+ (pprint-logical-block (s nil)
+ (pprint-indent :block 2)
+ (mapc #'(lambda (x)
+ (when x
+ (write (car x) :stream s)
+ (write-string " ->" s)
+ (mapc #'(lambda (y)
+ (write-string " " s)
+ (write y :stream s))
+ (cdr x))
+ (pprint-newline :mandatory s)))
+ (get-rel-sets rel)))))
+
+#+:XP
+(set-pprint-dispatch 'relation-rule #'pprint-relation)
+#+:XP
+(set-pprint-dispatch 'relation #'pprint-relation)
+;; line 606 "idxrule.nw"
+#+:XP
+(set-pprint-dispatch
+ 'catattr-groups
+ #'(lambda (s catgrp)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "Category-attribute-group { " s)
+ (pprint-newline :mandatory s)
+ (write (get-attribute-list catgrp) :stream s)
+ (pprint-newline :mandatory s)
+ (write (get-attribute-table catgrp) :stream s))))
+;; line 277 "letters.nw"
+#+:XP
+(set-pprint-dispatch 'letter
+ #'(lambda (s lt)
+ (pprint-logical-block
+ (s nil :suffix ">")
+ (pprint-indent :block 2 s)
+ (write-string "<" s)
+ (write (get-name lt) :stream s)
+ (write-string " " s)
+ (pprint-newline :linear s)
+ (write (get-props lt) :stream s))))
+
+#+:XP
+(set-pprint-dispatch 'letter-dictionary
+ #'(lambda (s dict)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "letters {" s)
+ (maphash #'(lambda (key lt)
+ (declare (ignore key))
+ (write lt :stream s)
+ (write-string " " s)
+ (pprint-newline :linear s))
+ (get-letters dict)))))
+
+#+:XP
+(set-pprint-dispatch 'partial-order
+ #'(lambda (s po)
+ (pprint-logical-block
+ (s nil :suffix ">")
+ (pprint-indent :block 2 s)
+ (write-string "<" s)
+ (write (get-name po) :stream s)
+ (pprint-newline :linear s)
+ (maphash #'(lambda (key po)
+ (write-string " [" s)
+ (write key :stream s)
+ (write-string " " s)
+ (write po :stream s)
+ (write-string "]" s)
+ (pprint-newline :linear s))
+ (get-order po)))))
+
+
+#+:XP
+(set-pprint-dispatch 'partial-order-dictionary
+ #'(lambda (s dict)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "partial-orders {" s)
+ (maphash #'(lambda (key po)
+ (declare (ignore key))
+ (write po :stream s)
+ (write-string " " s)
+ (pprint-newline :linear s))
+ (get-order dict)))))
+
+;; line 321 "idxstyle.nw"
+(defvar *RCS-Identifier* '(
+;; line 894 "idxclass.nw"
+("idxclass" . "$Id: idxclass.nw,v 1.20 1997/03/26 16:18:16 kehr Exp $")
+;; line 572 "idxrule.nw"
+("idxrule" . "$Id: idxrule.nw,v 1.10 1997/03/26 16:18:19 kehr Exp $")
+;; line 335 "idxstyle.nw"
+("idxstyle" . "$Id: idxstyle.nw,v 1.19 1997/03/26 16:18:23 kehr Exp $")
+;; line 1174 "intface.nw"
+("intface" . "$Id: intface.nw,v 1.30 1997/10/20 11:25:09 kehr Exp $")
+;; line 269 "letters.nw"
+("letters" . "$Id$")
+;; line 321 "idxstyle.nw"
+ ))
+
+(eval-when (compile load eval)
+
+;; line 59 "idxstyle.nw"
+(export 'create-indexclass)
+;; line 89 "idxstyle.nw"
+(export '*load-paths*)
+;; line 325 "idxstyle.nw"
+ )
diff --git a/Build/source/utils/xindy/xindy-src/src/index.lsp b/Build/source/utils/xindy/xindy-src/src/index.lsp
new file mode 100644
index 00000000000..7d171f96fab
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/index.lsp
@@ -0,0 +1,1333 @@
+;; line 835 "index.nw"
+;; $Id: index.nw,v 1.31 1997/03/26 16:18:37 kehr Exp $
+
+(lisp:defpackage "INDEX")
+(lisp:in-package "INDEX")
+(lisp:provide "index")
+
+#+CLISP (lisp:require "base")
+#+CLISP (lisp:require "locref")
+#+CLISP (lisp:require "idxstyle")
+#+CLISP (lisp:require "ordrules")
+
+(eval-when (compile load eval)
+ (lisp:use-package "CLOS")
+ #+(and :XP CLISP) (lisp:use-package "XP")
+ #-CLISP (lisp:require "base")
+ #-CLISP (lisp:require "locref")
+ #-CLISP (lisp:require "idxstyle")
+ (lisp:use-package "BASE")
+ (lisp:use-package "LOCREF")
+ (lisp:use-package "IDXSTYLE"))
+
+;; The following construct must be separated since the definition of
+;; the *feature* :ORDRULES was added via loading the package
+;; "idxstyle" but is only active *after* reading the whole SEXP.
+
+(eval-when (compile load eval)
+ #+:ORDRULES (use-package "ORDRULES"))
+
+;; line 986 "idxentry.nw"
+;; $Id: idxentry.nw,v 1.29 1997/03/27 17:17:25 kehr Exp $
+
+;; line 1002 "idxentry.nw"
+(defvar *number-of-indexentries*)
+(defvar *current-number*)
+;; line 1007 "idxentry.nw"
+(defvar *percentage-list*)
+(defvar *processing-percentage-list*)
+
+(defun print-rest-of-percentages (plist)
+ (dolist (percent plist)
+ (when (<= (cdr percent) 100)
+ (print-percent percent))))
+
+(defun print-percent (percent-cons)
+ (info " [~A%]" (cdr percent-cons)))
+;; line 85 "idxentry.nw"
+(defclass index-entry ()
+ ((main-key :initarg :main-key)
+ (merge-key :initarg :merge-key)
+ (sort-key :initarg :sort-key)
+ (print-key :initarg :print-key)
+ (locrefs :initarg :locrefs)
+ (idxclass :initarg :idxclass)
+ (subentries :initform '())))
+
+(defun make-index-entry (&key (main-key '()) (merge-key '())
+ (sort-key '()) (print-key '())
+ (locrefs '()) (idxclass nil)
+ &allow-other-keys)
+ (make-instance 'index-entry
+ :main-key main-key :merge-key merge-key
+ :sort-key sort-key :print-key print-key
+ :locrefs locrefs :idxclass idxclass))
+;; line 108 "idxentry.nw"
+(defvar *currently-processed-indexentry*)
+;; line 116 "idxentry.nw"
+(defmacro add-location-reference-to-indexentry (idxent locref)
+ `(PROGN
+ (UNLESS (SOME #'(LAMBDA (LREF)
+ (LOCREF= ,locref LREF))
+ (GET-LOCREFS ,idxent))
+ (SET-LOCREFS (CONS ,locref (GET-LOCREFS ,idxent))
+ ,idxent))
+ ,idxent))
+;; line 249 "idxentry.nw"
+(defun convert-sublists-to-group-objects (list-of-sublists
+ object-type
+ &key (initializer-func nil))
+ (mapcar #'(lambda (sublist)
+ (let ((locref-grp (make-locref-group object-type sublist)))
+ (if initializer-func
+ (funcall initializer-func locref-grp)
+ locref-grp)))
+ list-of-sublists))
+;; line 267 "idxentry.nw"
+(defun convert-sublists-to-specialized-groups (list-of-sublists
+ convert-func
+ &optional
+ initializer-func)
+ (mapcar #'(lambda (sublist)
+ (let ((locref-grp
+ (make-locref-group (funcall convert-func sublist)
+ sublist)))
+ (if initializer-func
+ (funcall initializer-func locref-grp)
+ locref-grp)))
+ list-of-sublists))
+;; line 292 "idxentry.nw"
+(defclass locref-group ()
+ ((members :initarg :members)))
+
+(defun make-locref-group (group-class members)
+ (make-instance group-class :members members))
+
+(defgeneric process-group (group-object indexclass))
+;; line 322 "idxentry.nw"
+(defclass locref-class-group (locref-group)
+ ((locclass :initform 'nil)))
+;; line 327 "idxentry.nw"
+(defclass crossref-class-group (locref-group)
+ ((locclass :initform 'nil)))
+;; line 333 "idxentry.nw"
+(defun process-indexentry (idxent)
+ (setq *currently-processed-indexentry* idxent)
+ (when (>= (incf *current-number*) (caar *processing-percentage-list*))
+ (print-percent (pop *processing-percentage-list*)))
+ (set-locrefs (convert-sublists-to-specialized-groups
+ (split-list #'(lambda (locref)
+ (get-ordnum (get-locclass locref)))
+ (get-locrefs idxent)
+ :sortfunc #'<)
+ #'(lambda (sublist)
+ (typecase (car sublist)
+ (layered-location-reference 'locref-class-group)
+ (crossref-location-reference 'crossref-class-group)
+ (t (error "internal error in `process-indexentry'"))))
+ #'(lambda (locref-cls-grp)
+ (set-locclass (get-locclass
+ (car (get-members locref-cls-grp)))
+ locref-cls-grp)
+ locref-cls-grp))
+ idxent)
+ (mapc #'(lambda (locref-cls-grp)
+ (process-group locref-cls-grp *indexstyle*))
+ (get-locrefs idxent))
+ idxent)
+;; line 899 "idxentry.nw"
+(defmacro take-first (list)
+ `(AND ,list (LIST (CAR ,list))))
+
+(defun tree-location-references (locref-list
+ max-depth
+ &optional (curr-depth 1))
+ (cond ((or (endp locref-list) #| nothing more to do |#
+ (> curr-depth max-depth)) #| we reached the end |#
+ locref-list)
+ (t (let ((locref-slist
+ (split-list #'(lambda (locref)
+ (car (get-ordnums locref)))
+ locref-list
+ :sortfunc #'<)))
+ (mapcar
+ #'(lambda (sublist)
+ (let* ((locref (car sublist))
+ (ordnums (get-ordnums locref)))
+ (if (= 1 (length ordnums))
+ (progn #| length = 1 |#
+ (set-subrefs
+ (sort-locrefs
+ (tree-location-references (remove-first-layers
+ (cdr sublist))
+ max-depth
+ (1+ curr-depth)))
+ locref)
+ locref)
+ (let #| length > 1 |#
+ ((new-locref
+ (make-layered-location-reference
+ :layers (take-first (get-layers locref))
+ :ordnums (take-first (get-ordnums locref))
+ :locclass (get-locclass locref)
+ :catattr (get-last-in-group
+ (get-catattr locref))
+ )))
+ (set-subrefs
+ (sort-locrefs
+ (tree-location-references (remove-first-layers sublist)
+ max-depth
+ (1+ curr-depth)))
+ new-locref)
+ new-locref))))
+ locref-slist)))))
+;; line 947 "idxentry.nw"
+(defun remove-first-layers (locref-list)
+ (declare (inline))
+ (mapc #'(lambda (locref)
+ (typecase locref
+ (layered-location-reference
+ (set-layers (cdr (get-layers locref)) locref)
+ (set-ordnums (cdr (get-ordnums locref)) locref))
+ (location-range
+ (let ((first (get-first locref))
+ (last (get-last locref)))
+ (set-layers (cdr (get-layers locref)) locref)
+ (set-ordnums (cdr (get-ordnums locref)) locref)
+ (set-layers (cdr (get-layers first)) first)
+ (set-ordnums (cdr (get-ordnums first)) first)
+ (set-layers (cdr (get-layers last)) last)
+ (set-ordnums (cdr (get-ordnums last)) last)
+ ))))
+ locref-list)
+ locref-list)
+;; line 973 "idxentry.nw"
+(defun sort-locrefs (locref-list)
+ #+:ASSERT! (assert! (listp locref-list))
+ (sort locref-list
+ #'(lambda (locref-1 locref-2)
+ (locref-ordnum< (get-ordnums locref-1)
+ (get-ordnums locref-2)))))
+;; line 370 "idxentry.nw"
+(defmethod process-group ((locref-cls-grp locref-class-group)
+ (idxcls indexclass))
+ #+:XP
+ (when *locref-trace* (pprint-locref-group *logging-stream* locref-cls-grp
+ "Inital location-refrence group:"))
+ (apply-substitution-and-merge-rules locref-cls-grp idxcls)
+ #+:XP
+ (when *locref-trace* (pprint-locref-group *logging-stream* locref-cls-grp
+ "After subst- and merge-to-rules:"))
+ (build-ranges-in-locref-class-group locref-cls-grp idxcls)
+ #+:XP
+ (when *locref-trace* (pprint-locref-group *logging-stream* locref-cls-grp
+ "After build-ranges:"))
+ (remove-virtual-locrefs locref-cls-grp)
+ #+:XP
+ (when *locref-trace* (pprint-locref-group *logging-stream* locref-cls-grp
+ "After remove virtuals:"))
+ (separate-into-catattr-groups locref-cls-grp)
+ #+:XP
+ (when *locref-trace* (pprint-locref-group *logging-stream* locref-cls-grp
+ "After separate attr-groups:"))
+ locref-cls-grp)
+
+;; line 531 "idxentry.nw"
+(defmethod apply-substitution-and-merge-rules ((locref-cls-grp locref-class-group)
+ (idxcls indexclass))
+ (let ((locref-same-ordnum-grps
+ (split-same-locrefs (get-members locref-cls-grp))))
+ (set-members
+ (mapcan #'(lambda (locref-same-ordnum-grp)
+ (apply-merge-rules
+ idxcls
+ (apply-substitution-rules idxcls
+ locref-same-ordnum-grp)))
+ locref-same-ordnum-grps)
+ locref-cls-grp))
+ locref-cls-grp)
+
+;; line 553 "idxentry.nw"
+(defun split-same-locrefs (locrefs)
+ #+ASSERT! (assert! (listp locrefs))
+ (split-list #'(lambda (locref)
+ (get-ordnums locref))
+ locrefs
+ :sortfunc #'(lambda (locref-ordnum-1 locref-ordnum-2)
+ (locref-ordnum< locref-ordnum-1 locref-ordnum-2))
+ ))
+;; line 569 "idxentry.nw"
+(defmethod apply-substitution-rules ((idxcls indexclass)
+ (locrefs list))
+ (let ((substitute-locref (get-substitution-subst-hook idxcls)))
+ (delete-if #'null
+ (mapcar #'(lambda (test-locref)
+ (cond ((some #'(lambda (against-locref)
+ (substitutable-p idxcls test-locref
+ against-locref))
+ locrefs)
+ (funcall substitute-locref test-locref))
+ (t test-locref)))
+ locrefs))))
+;; line 590 "idxentry.nw"
+(defmethod substitutable-p ((idxcls indexclass)
+ (test-locref layered-location-reference)
+ (against-locref layered-location-reference))
+ (cond ((eql test-locref against-locref)
+ nil)
+ ((and (state-normal-p against-locref)
+ (relation-p (get-implicit-subst-rules idxcls)
+ (get-catattr against-locref)
+ (get-catattr test-locref))))
+ (t nil)))
+;; line 638 "idxentry.nw"
+(defmethod apply-merge-rules ((idxcls indexclass) (locrefs list))
+ (let ((merge-rules (get-merge-rules idxcls))
+ (drop-if-merged-rules (get-drop-if-merged-rules idxcls)))
+ (nconc locrefs
+ (mapcan #'(lambda (locref)
+ (mapcan #'(lambda (catattr)
+ (let ((new-locref
+ (make-layered-location-reference
+ :virtual t
+ :layers (get-layers locref)
+ :ordnums (get-ordnums locref)
+ :catattr catattr
+ :locclass (get-locclass locref)
+ :attribute (get-attribute locref)
+ :string (get-locref-string locref)
+ )))
+ (when (relation-p drop-if-merged-rules
+ (get-catattr locref)
+ catattr)
+ (set-origin locref new-locref))
+ (list new-locref)))
+ (relation-set merge-rules (get-catattr locref))))
+ locrefs))))
+;; line 721 "idxentry.nw"
+(defun build-ranges-in-locref-class-group (locref-cls-grp idxcls)
+ (let ((locref-same-catattr-grps
+ (split-list #'(lambda (locref) (get-catattr locref))
+ (get-members locref-cls-grp)
+ :sortfunc #'(lambda (x y)
+ (< (get-processing-ordnum x)
+ (get-processing-ordnum y))))))
+ (set-members (mapcan #'(lambda (catattr-sublist)
+ (let ((processed-locrefs
+ (build-ranges catattr-sublist
+ idxcls
+ (get-locclass
+ (car catattr-sublist)))))
+ (when *locref-trace*
+ (let ((*print-pretty* t))
+ (gol t "~&after build-ranges:")
+ (pprint-newline :mandatory *logging-stream*)
+ (pprint-newline :mandatory *logging-stream*)
+ (write processed-locrefs
+ :stream *logging-stream*)))
+ (let ((s2 (mapcar
+ #'(lambda (x)
+ (post-process
+ x
+ #'set-state-deleted))
+ processed-locrefs)))
+ (when *locref-trace*
+ (let ((*print-pretty* t))
+ (gol t "~&after set-state-deleted:")
+ (pprint-newline :mandatory *logging-stream*)
+ (pprint-newline :mandatory *logging-stream*)
+ (write s2 :stream *logging-stream*)))
+ s2)))
+ locref-same-catattr-grps)
+ locref-cls-grp)))
+;; line 396 "idxentry.nw"
+(defmethod process-group ((crossref-cls-grp crossref-class-group)
+ (idxcls indexclass))
+ (let ((cross-references (get-members crossref-cls-grp)))
+ (typecase (get-locclass (car cross-references))
+ (verified-crossref-location-class
+ (mapc #'(lambda (xref)
+ (let* ((target (get-target xref))
+ (merge-key-target
+ #+:ORDRULES (gen-keyword-mergekey-list target)
+ #-:ORDRULES target))
+ (unless (lookup-indexentry merge-key-target)
+ (oops "Cross-reference-target ~S does not exist!"
+ target))))
+ cross-references))
+ (unverified-crossref-location-class)
+ (t (error "INTERNAL ERROR in process-group"))))
+ crossref-cls-grp)
+;; line 422 "idxentry.nw"
+(defun remove-virtual-locrefs (locref-cls-grp)
+ (set-members (delete-if #'(lambda (object)
+ (and (typep object 'location-reference)
+ (state-virtual-p object)))
+ (get-members locref-cls-grp))
+ locref-cls-grp))
+;; line 794 "idxentry.nw"
+(defclass category-attribute-group (locref-group)
+ ((ordnum :initform 'nil)))
+
+(defun separate-into-catattr-groups (locref-cls-grp)
+ (set-members (convert-sublists-to-group-objects
+ (split-list #'(lambda (object)
+ (get-catattr-grp-ordnum (get-catattr object)))
+ (get-members locref-cls-grp)
+ :sortfunc #'<)
+ 'category-attribute-group)
+ locref-cls-grp)
+ (mapc #'(lambda (catattr-grp)
+ (set-ordnum (get-catattr-grp-ordnum
+ (get-catattr (car (get-members catattr-grp))))
+ catattr-grp)
+ (set-members
+ (sort (tree-location-references (get-members catattr-grp)
+ (get-hierdepth
+ (get-locclass locref-cls-grp)))
+ #'(lambda (object-1 object-2)
+ (let ((ordnum-1 (get-ordnums object-1))
+ (ordnum-2 (get-ordnums object-2)))
+ (or (locref-ordnum< ordnum-1 ordnum-2)
+ (and (locref-ordnum= ordnum-1 ordnum-2)
+ (< (get-sort-ordnum (get-catattr object-1))
+ (get-sort-ordnum (get-catattr object-2))))))))
+ catattr-grp))
+ (get-members locref-cls-grp))
+ locref-cls-grp)
+
+#|
+(defun separate-into-catattr-groups-old-version (locref-cls-grp)
+ (set-members (convert-sublists-to-group-objects
+ (split-list #'(lambda (object)
+ (get-catattr-grp-ordnum (get-catattr object)))
+ #'<
+ (get-members locref-cls-grp))
+ 'category-attribute-group)
+ locref-cls-grp)
+ (mapc #'(lambda (catattr-grp)
+ (set-ordnum (get-catattr-grp-ordnum
+ (get-catattr (car (get-members catattr-grp))))
+ catattr-grp)
+ (set-members
+ (sort (get-members catattr-grp)
+ #'(lambda (object-1 object-2)
+ (let ((ordnum-1 (get-ordnums object-1))
+ (ordnum-2 (get-ordnums object-2)))
+ (or (locref-ordnum< ordnum-1 ordnum-2)
+ (and (locref-ordnum= ordnum-1 ordnum-2)
+ (< (get-sort-ordnum (get-catattr object-1))
+ (get-sort-ordnum (get-catattr object-2))))))))
+ catattr-grp))
+ (get-members locref-cls-grp))
+ locref-cls-grp)
+|#
+
+;; line 992 "idxentry.nw"
+(eval-when (compile load eval)
+
+;; line 127 "idxentry.nw"
+(export '(index-entry make-index-entry
+ add-location-reference-to-indexentry))
+;; line 360 "idxentry.nw"
+(export '(locref-group get-members
+ locref-class-group crossref-class-group get-locclass
+ make-locref-group process-group process-indexentry))
+;; line 603 "idxentry.nw"
+(export '(process-group split-same-locrefs
+ apply-substitution-rules substitutable-p))
+;; line 664 "idxentry.nw"
+(export '(apply-merge-rules))
+;; line 853 "idxentry.nw"
+(export '(category-attribute-group))
+;; line 1021 "idxentry.nw"
+(export '(*percentage-list* print-rest-of-percentages print-percent))
+;; line 994 "idxentry.nw"
+ )
+;; line 594 "ranges.nw"
+;; $Id: ranges.nw,v 1.11 1997/03/26 16:18:41 kehr Exp $
+
+;; line 68 "ranges.nw"
+(defclass location-range ()
+ ((length :initarg :length)
+ (first :initarg :first)
+ (last :initarg :last)
+ (layers :initarg :layers)
+ (ordnums :initarg :ordnums)
+ (inner :initarg :inner)
+ (locclass :initarg :locclass)
+ (catattr :initarg :catattr)
+ (subrefs :initform '())))
+
+(defun make-location-range (&key length first last first-ordnum inner locclass)
+ (make-instance 'location-range
+ :length length
+ :first first
+ :last last
+ :inner inner
+ :ordnums first-ordnum
+ :layers (get-layers first)
+ :locclass locclass
+ :catattr (get-catattr first)))
+;; line 581 "ranges.nw"
+(defun ordnum-successor-p (ordnums-1 ordnums-2)
+ (declare (inline))
+ (and ordnums-1 #|is there really something in it, or we are about to start?|#
+ (equal (butlast ordnums-1) (butlast ordnums-2))
+ (equal (1+ (car (last ordnums-1)))
+ (car (last ordnums-2)))))
+;; line 143 "ranges.nw"
+(defmethod build-ranges ((locref-list list)
+ (idxcls indexclass)
+ (loccls var-location-class))
+ locref-list)
+;; line 321 "ranges.nw"
+(defmacro newstat (s)
+ `(setq new-state ,s))
+
+(defmacro pushl ()
+ `(progn
+ (setq curr-ordnum (get-ordnums locref))
+ (unless locref-stack
+ (setq first-ordnum curr-ordnum)
+ (setq first-locref locref))
+ (setq prev-ordnum curr-ordnum)
+ (push locrefs locref-stack)))
+
+(defmacro pushone ()
+ `(progn
+ (setq curr-ordnum (get-ordnums locref))
+ (unless locref-stack
+ (setq first-ordnum curr-ordnum)
+ (setq first-locref locref))
+ (setq prev-ordnum curr-ordnum)
+ (push (list (car locrefs)) locref-stack)))
+
+(defmacro set-open-range ()
+ `(setq last-open-locref locref))
+
+(defmacro keep ()
+ `(setq back-flag t))
+
+(defmacro make-range ()
+ `(setq make-flag t))
+;; line 197 "ranges.nw"
+(defmethod build-ranges ((locref-list list)
+ (idxcls indexclass)
+ (loccls standard-location-class))
+ (let ((valid-list (mapcan #'(lambda (locref)
+ (unless (state-deleted-p locref)
+ (list locref)))
+ locref-list)))
+ (ifnot valid-list
+ '()
+ (ifnot (joining-allowed-p loccls)
+ valid-list
+ (let ((same-ordnum-list (split-same-locrefs valid-list))
+
+;; line 353 "ranges.nw"
+(locref-stack '())
+(result-list '())
+(state :START)
+(join-length (get-join-length loccls))
+new-state
+open-p close-p open+close-p no-typ-p list-end
+make-flag back-flag
+locrefs locref last-open-locref first-locref
+first-ordnum prev-ordnum curr-ordnum
+;; line 209 "ranges.nw"
+ )
+ (loop
+
+;; line 365 "ranges.nw"
+(setq locrefs (car same-ordnum-list))
+(setq list-end (null locrefs))
+(setq locref (car locrefs))
+(setq open-p (find-if #'(lambda (locref)
+ (rangeattr-open-p (get-rangeattr locref)))
+ locrefs))
+(setq close-p (find-if #'(lambda (locref)
+ (rangeattr-close-p (get-rangeattr locref)))
+ locrefs))
+(setq open+close-p (and open-p close-p))
+(setq no-typ-p (not (or open-p close-p)))
+;; line 212 "ranges.nw"
+ (ecase state
+ (:START
+;; line 230 "ranges.nw"
+(cond (list-end (return (apply #'nconc #| see note below for explanation |#
+ (apply #'nconc result-list))))
+ (no-typ-p (newstat :READ) (pushl))
+ (open+close-p (newstat :READ) (pushone))
+ (open-p (newstat :OPEN-RANGE) (pushl) (set-open-range))
+ (close-p (warn-invalid-close locref) (newstat :START))
+ (t (error
+ "INTERNAL-ERROR in build-ranges - :START")))
+;; line 213 "ranges.nw"
+ )
+ (:READ
+;; line 267 "ranges.nw"
+(if list-end
+ (progn (newstat :START) (make-range))
+ (progn
+ (setq curr-ordnum (get-ordnums locref))
+ (let ((succ-p (ordnum-successor-p prev-ordnum curr-ordnum)))
+ (cond ((and succ-p no-typ-p) (pushl))
+ ((and succ-p open+close-p) (pushone))
+ ((or no-typ-p
+ (not (and succ-p
+ open-p))) (newstat :START) (keep) (make-range))
+ (open-p (newstat :OPEN-RANGE)
+ (pushl) (set-open-range))
+ (close-p (warn-invalid-close locref) (newstat :READ))
+ (t (error "INTERNAL-ERROR in build-ranges - :READ"))))))
+;; line 214 "ranges.nw"
+ )
+ (:OPEN-RANGE
+;; line 288 "ranges.nw"
+(cond (list-end
+;; line 297 "ranges.nw"
+(warn
+ (with-output-to-string (s)
+ (format s "Found no :close-range matching an already opened one!~%")
+ (format s "Location-reference is ~A in keyword ~A.~%"
+ (get-locref-string last-open-locref)
+ (get-main-key *currently-processed-indexentry*))
+ (format s "Maybe I lost some of the regular location-references.~%")))
+;; line 288 "ranges.nw"
+ (newstat :START))
+ ((or no-typ-p open+close-p) (pushl))
+ (open-p
+;; line 307 "ranges.nw"
+(warn
+ (with-output-to-string (s)
+ (format s "Found :open-range that was already opened!~%")
+ (format s "Location-references are ~A and ~A in keyword ~A.~%"
+ (get-locref-string last-open-locref)
+ (get-locref-string locref)
+ (get-main-key *currently-processed-indexentry*))
+ (format s "I'll continue and ignore this.~%")))
+;; line 291 "ranges.nw"
+ (newstat :OPEN-RANGE))
+ (close-p (newstat :READ) (pushl))
+ (t (error "INTERNAL-ERROR in build-ranges - :OPEN-RANGE")))
+;; line 215 "ranges.nw"
+ ))
+
+;; line 402 "ranges.nw"
+(when make-flag
+ (let ((range-len (- (car (last prev-ordnum)) (car (last first-ordnum)))))
+ (if (>= range-len join-length)
+ (push (list (list
+ (make-location-range :first-ordnum first-ordnum
+ :locclass loccls
+ :inner locref-stack
+ :first first-locref
+ :last (caar locref-stack)
+ :length range-len)))
+ result-list)
+ (push locref-stack result-list))
+ (setq locref-stack '())
+ (setq make-flag nil)))
+(if back-flag
+ (setq back-flag nil)
+ (setq same-ordnum-list (cdr same-ordnum-list)))
+(setq state new-state)
+;; line 216 "ranges.nw"
+ ))))))
+;; line 241 "ranges.nw"
+(defun warn-invalid-close (locref)
+ (warn
+ (with-output-to-string (s)
+ (format s "Found a :close-range in the index that wasn't opened before!~%")
+ (format s "Location-reference is ~A in keyword ~A~%"
+ (get-locref-string locref)
+ (get-main-key *currently-processed-indexentry*))
+ (format s "I'll continue and ignore this.~%"))))
+;; line 509 "ranges.nw"
+(defmethod post-process ((locrange location-range) (drop-function function))
+ (let ((locref-list (apply #'nconc (get-inner locrange))))
+ (cond ((>= (get-length locrange)
+ (get-join-length (get-locclass locrange)))
+ (mapc #'(lambda (locref)
+ (let ((origin (get-origin locref)))
+ (when origin
+ (funcall drop-function origin))))
+ locref-list)
+ ;;(set-inner '() locrange)
+ locrange)
+ (t locref-list))))
+
+;(defmethod post-process ((locref-list list) x)
+; (declare (ignore x))
+; locref-list)
+
+(defmethod post-process ((locref location-reference) x)
+ (declare (ignore x))
+ locref)
+
+;; line 600 "ranges.nw"
+(eval-when (compile load eval)
+
+;; line 92 "ranges.nw"
+(export '(location-range get-first get-last get-length))
+;; line 602 "ranges.nw"
+ )
+;; line 88 "index.nw"
+(defparameter *index-entry-table* nil) #| faster access to the entry-table |#
+;; line 69 "index.nw"
+(defconstant *all-hierarchy-layers* MOST-POSITIVE-FIXNUM)
+
+(defclass base-index ()
+ ((entry-table :initform (make-hash-table :test #'equal))
+ (entry-list :initform '())
+ (entries :initform '())
+ (idxclass :initarg :idxclass)
+ (hierdepth :initform *all-hierarchy-layers*)))
+
+(defun make-base-index (idxclass)
+ (make-instance 'base-index :idxclass idxclass))
+;; line 542 "index.nw"
+(defclass letter-group ()
+ ((members :initarg :members :type list)
+ (group-definition :initarg :group-definition)))
+;; line 555 "index.nw"
+(defun make-letter-group (members)
+ (make-instance 'letter-group
+ :members members
+ :group-definition (match-letter-group
+ *indexstyle*
+ (car (get-sort-key (car members))))))
+
+;; line 273 "index.nw"
+(defun add-layered-locref-indexentry (&key
+ (entry-table *index-entry-table*)
+ (idxcls *indexstyle*)
+ locref main-key
+ (merge-key '())
+ (print-key '())
+ (open-range nil) (close-range nil)
+ (catattr nil) (attribute nil))
+ #+:ASSERT! (assert! (and main-key locref))
+
+ (if (and open-range close-range)
+
+;; line 320 "index.nw"
+(nraw "specification of both :open-range and :close-range is invalid! (ignored)")
+;; line 285 "index.nw"
+ (progn
+ (when (or (not catattr)
+ (string= catattr ""))
+ (setq catattr "default"))
+ (let ((catattr-obj (lookup-catattr idxcls catattr)))
+ (if (not catattr-obj)
+ (nraw "unknown attribute `~A'! (ignored)" catattr)
+ (multiple-value-bind (num location-reference)
+ (create-location-reference-from-string
+ locref catattr-obj attribute)
+ (when (eql 1 num)
+ #| ;
+ Only one vaild location-reference! Use #'eql and
+ not #'= since we compare num against NIL, too.
+ |#
+
+;; line 359 "index.nw"
+#+:ORDRULES (unless merge-key
+ (setq merge-key (gen-keyword-mergekey-list main-key)))
+#-:ORDRULES (unless merge-key (setq merge-key main-key))
+;; line 301 "index.nw"
+ (cond (open-range (set-rangeattr-open location-reference))
+ (close-range (set-rangeattr-close location-reference)))
+ (let ((old-entry (gethash merge-key entry-table)))
+ (if old-entry
+ (setf (gethash merge-key entry-table)
+ (join-indexentries
+ old-entry;;(gethash merge-key entry-table)
+ main-key print-key
+ location-reference))
+ (setf (gethash merge-key entry-table)
+ (make-index-entry :main-key main-key
+ :merge-key merge-key
+ :print-key print-key
+ :locrefs (list
+ location-reference)
+ :indexclass idxcls)))))))))))
+;; line 324 "index.nw"
+(defun add-crossref-indexentry (&key
+ (entry-table *index-entry-table*)
+ (idxcls *indexstyle*)
+ (merge-key '())
+ (print-key '())
+ main-key
+ xref
+ xref-class-name
+ (attribute nil))
+ #+:ASSERT! (assert! (and main-key xref xref-class-name))
+
+ (unless xref-class-name (setq xref-class-name "default"))
+ (let ((xref-class (cdr (lookup-crossref-class idxcls xref-class-name))))
+ (if (not xref-class)
+ (nraw "unknown cross-reference-class `~A'! (ignored)~%"
+ xref-class-name)
+ (let ((cross-reference (create-cross-reference xref-class
+ xref attribute)))
+ (when cross-reference
+
+;; line 359 "index.nw"
+#+:ORDRULES (unless merge-key
+ (setq merge-key (gen-keyword-mergekey-list main-key)))
+#-:ORDRULES (unless merge-key (setq merge-key main-key))
+;; line 344 "index.nw"
+ (let ((old-entry (gethash merge-key entry-table)))
+ (if old-entry
+ (setf (gethash merge-key entry-table)
+ (join-indexentries old-entry ;;(gethash merge-key entry-table)
+ main-key print-key
+ cross-reference))
+ (setf (gethash merge-key entry-table)
+ (make-index-entry :main-key main-key
+ :merge-key merge-key
+ :print-key print-key
+ :locrefs (list cross-reference)
+ :indexclass idxcls)))))))))
+;; line 367 "index.nw"
+#+:ORDRULES
+(defun gen-keyword-mergekey-list (list-of-strings)
+ #+ASSERT! (assert! (and (not (null list-of-strings))
+ (listp list-of-strings)))
+ (let ((res (mapcar #'(lambda (str)
+ (gen-keyword-mergekey str))
+ list-of-strings)))
+ (flush-ordrules-message-buffer)
+ res))
+
+#+:ORDRULES
+(defun gen-keyword-sortkey-list (list-of-strings run)
+ #+ASSERT! (assert! (and (not (null list-of-strings))
+ (listp list-of-strings)
+ (<= 0 run) (run < 8)))
+ (let ((res (mapcar #'(lambda (str)
+ (gen-keyword-sortkey str run))
+ list-of-strings)))
+ (flush-ordrules-message-buffer)
+ res))
+;; line 398 "index.nw"
+(defun join-indexentries (idxent main-key print-key locref)
+ (let ((old-main-key (get-main-key idxent))
+ (old-print-key (get-print-key idxent)))
+ (unless old-main-key (set-main-key main-key idxent))
+ (set-print-key (mapcar #'(lambda (old curr)
+ (or old curr))
+ old-print-key print-key)
+ idxent)
+ ;; (info "~&(join-indexentries :old-main-key ~S :old-print-key ~S :new-print-key ~S)"
+ ;; old-main-key old-print-key (get-print-key idxent))
+ (add-location-reference-to-indexentry idxent locref)))
+;; line 438 "index.nw"
+(defun create-location-reference-from-string (locref-str catattr attribute)
+ (let* ((idxcls *indexstyle*))
+ (multiple-value-bind (num locref)
+ (lookup-locref-cache idxcls locref-str)
+ (if num #| something was found! |#
+ (case num
+ (0
+;; line 474 "index.nw"
+(nraw "location-reference ~S did not match any location-class! (ignored)"
+ locref-str)
+;; line 445 "index.nw"
+ (values nil nil))
+ (1 (values 1 (copy-locref-from-template locref catattr attribute))
+ #| return its only member |#)
+ (t
+;; line 469 "index.nw"
+(nraw "location-reference ~S did match multiple location-classes! (taking first one)"
+ locref-str)
+;; line 449 "index.nw"
+ (values num (copy-locref-from-template locref catattr attribute))
+ #| return a copy of the stored template |#))
+ (let ((locref-list
+ (map-location-classes
+ idxcls
+ #'(lambda (idxcls loccls)
+ (declare (ignore idxcls))
+ (build-location-reference loccls locref-str
+ catattr attribute)))))
+ (case (length locref-list)
+ (0
+;; line 474 "index.nw"
+(nraw "location-reference ~S did not match any location-class! (ignored)"
+ locref-str)
+;; line 460 "index.nw"
+ (add-locref-cache idxcls locref-str 0 nil))
+ (1 (add-locref-cache idxcls locref-str 1 (car locref-list))
+ #| return its only member |#)
+ (t
+;; line 469 "index.nw"
+(nraw "location-reference ~S did match multiple location-classes! (taking first one)"
+ locref-str)
+;; line 464 "index.nw"
+ (add-locref-cache idxcls locref-str 1 (car locref-list))
+ #| return its first member |#)))))))
+;; line 482 "index.nw"
+(defun copy-locref-from-template (locref catattr attribute)
+ (declare (inline))
+ (make-layered-location-reference :catattr catattr
+ :attribute attribute
+ :string (get-locref-string locref)
+ :locclass (get-locclass locref)
+ :layers (copy-list (get-layers locref))
+ :ordnums (copy-list (get-ordnums locref))))
+;; line 727 "index.nw"
+(defun sort-indexentries (indexentries)
+ #+:ASSERT! (assert! (listp indexentries))
+ (gol t "~&sort-indexentries: ~S" *sort-rule-orientations*)
+ (sort indexentries
+ #'(lambda (idxent-1 idxent-2)
+ (multiple-value-bind (less-equal? equal?)
+ (strlist<= (get-sort-key idxent-1)
+ (get-sort-key idxent-2)
+ (first *sort-rule-orientations*))
+ (if equal?
+ (sort-other-runs (get-merge-key idxent-1)
+ (get-merge-key idxent-2)
+ (rest *sort-rule-orientations*)
+ 1)
+ less-equal?)))))
+;; line 751 "index.nw"
+(defun sort-other-runs (merge-key-1 merge-key-2 orientations run)
+ (gol t "~&sort-other-runs: ~S ~S ~S ~S."
+ merge-key-1 merge-key-2 orientations run)
+ (cond ((endp orientations)
+ (nraw "Sort rules could not define exact order of key ~S."
+ merge-key-1)
+ nil)
+ (t (let ((key-1 (mapcar #'(lambda (key)
+ (gen-keyword-sortkey key run))
+ merge-key-1))
+ (key-2 (mapcar #'(lambda (key)
+ (gen-keyword-sortkey key run))
+ merge-key-2)))
+ (flush-ordrules-message-buffer)
+ (multiple-value-bind (less-equal? equal?)
+ (strlist<= key-1 key-2 (first orientations))
+ (if equal?
+ (sort-other-runs merge-key-1 merge-key-2
+ (rest orientations) (1+ run))
+ less-equal?))))))
+;; line 782 "index.nw"
+(defun oriented-string (string orientation)
+ (declare (inline))
+ (cond ((eql orientation 'forward) string)
+ ((eql orientation 'backward) (reverse string))
+ (t (error "INDEX:ORIENTED-STRING wrong orientation!"))))
+;; line 793 "index.nw"
+(defun strlist<= (slist-1 slist-2 orientation)
+ (declare (inline))
+ (cond ((endp slist-1) (values t (endp slist-2)))
+ ((endp slist-2) (values nil nil))
+ (t (let ((str-1 (oriented-string (first slist-1) orientation))
+ (str-2 (oriented-string (first slist-2) orientation)))
+ (let ((pos (string/= str-1 str-2)))
+ (if pos
+ (let ((lt (string< str-1 str-2)))
+ (if lt
+ (values t nil)
+ (values nil (string= str-1 str-2))))
+ (strlist<= (cdr slist-1) (cdr slist-2) orientation)))))))
+#|
+(strlist<= '("foo") '("foo") 'forward)
+(strlist<= '("fool") '("foo") 'forward)
+(strlist<= '("foo") '("fool") 'forward)
+(strlist<= '("foo") '("fool") 'backward)
+(strlist<= '("foo") '("foo" "bar") 'forward)
+(strlist<= '("foo" "bar") '("foo") 'forward)
+(strlist<= '("foo" "bar") '("foo") 'backward)
+|#
+
+
+#+OLDVER
+(defun strlist< (string-list-1 string-list-2)
+ (declare (inline))
+ (do ((rest-1 string-list-1 (cdr rest-1))
+ (rest-2 string-list-2 (cdr rest-2)))
+ ((or (endp rest-1) (endp rest-2)
+ (string/= (first rest-1) (first rest-2)))
+ (or (endp rest-1)
+ (if (endp rest-2)
+ 'nil
+ (string< (first rest-1) (first rest-2)))))))
+;; line 504 "index.nw"
+(defmethod process-index ((index base-index))
+ (let ((hash-list '()))
+ (maphash #'(lambda (key idxentry)
+ (declare (ignore key))
+ (setq hash-list (cons idxentry hash-list)))
+ (get-entry-table index))
+ (set-entry-list hash-list index)
+ (build-indexentry-tree index)
+
+ (setq *number-of-indexentries* (length (get-entry-list index)))
+ (setq *current-number* 0)
+ (setq *percentage-list*
+ (mapcar #'(lambda (percent)
+ (cons (truncate (* (/ percent 100)
+ *number-of-indexentries*))
+ percent))
+ ;; MOST-POSITIVE-FIXNUM acts as sentinel such that
+ ;; we never run out of elements
+ `(10 20 30 40 50 60 70 80 90 100 ,MOST-POSITIVE-FIXNUM)))
+ (setq *processing-percentage-list* *percentage-list*)
+ (mapc #'process-indexentry (get-entry-list index))
+ (print-rest-of-percentages *processing-percentage-list*)
+ index))
+;; line 568 "index.nw"
+(defmethod build-indexentry-tree ((index base-index))
+ (let ((index-hierdepth (get-hierdepth index)))
+ (gol t "~&~%Building indexentry-tree:~%")
+ (gol t "Hierdepth of index is ~S~%~%"
+ (if (= index-hierdepth most-positive-fixnum)
+ :tree index-hierdepth))
+ (set-entries (build-indexentry-tree-recursive (get-entry-list index)
+ index-hierdepth)
+ index)
+ (gol t "~&~%Forming letter-groups:~%")
+ (let ((letter-groups (split-list #'(lambda (idxent)
+ (get-ordnum
+ (match-letter-group
+ *indexstyle*
+ (car (get-sort-key idxent)))))
+ (get-entries index)
+ :sortfunc #'<)))
+ (set-entries (mapcar #'(lambda (lg-indexentries)
+ (make-letter-group
+ (sort-indexentries lg-indexentries)))
+ letter-groups)
+ index))))
+;; line 622 "index.nw"
+(defun build-indexentry-tree-recursive (idxent-list
+ max-depth
+ &optional (curr-depth 1))
+ (cond ((endp idxent-list) idxent-list) #| nothing more to do |#
+ ((> curr-depth max-depth) #| we reached the end |#
+ (gen-all-sort-keys idxent-list) #| this is the then case |#
+ )
+ (t (let ((idxent-slist
+ (split-list #'(lambda (idxent)
+ (car (get-merge-key idxent)))
+ idxent-list
+ :headfunc
+ #'(lambda (idxent)
+ (= 1 (length (get-merge-key idxent)))))))
+ (mapcar
+ #'(lambda (sublist)
+ (let* ((idxent (car sublist))
+ (merge-key (get-merge-key idxent)))
+ (if (= 1 (length merge-key))
+ (progn #| length = 1 |#
+ (set-sort-key #-:ORDRULES merge-key
+ #+:ORDRULES (gen-keyword-sortkey-list
+ merge-key 0)
+ idxent)
+ (set-subentries
+ (sort-indexentries
+ (build-indexentry-tree-recursive
+ (remove-first-keywords (cdr sublist))
+ max-depth
+ (1+ curr-depth)))
+ idxent)
+ idxent)
+ (let* #| length > 1 |#
+ ((main-key (get-main-key idxent))
+ (new-merge-key (take-first merge-key))
+ (some-print-key (find-print-key sublist))
+ (new-print-key (list (or some-print-key
+ (car main-key))))
+ (new-idxent
+ (make-index-entry
+ :main-key (take-first main-key)
+ :merge-key new-merge-key
+ :print-key new-print-key
+ :sort-key
+ #-:ORDRULES new-merge-key
+ #+:ORDRULES (gen-keyword-sortkey-list
+ new-merge-key 0)
+ :idxclass (get-idxclass idxent))))
+ ;; (info "~&(treeing :main ~S :some-print ~S :new-print ~S)"
+ ;; main-key some-print-key new-print-key)
+ (set-subentries
+ (sort-indexentries
+ (build-indexentry-tree-recursive
+ (remove-first-keywords sublist)
+ max-depth
+ (1+ curr-depth)))
+ new-idxent)
+ new-idxent))))
+ idxent-slist)))))
+
+(defun find-print-key (idxent-list)
+ (some #'(lambda (idxent)
+ (car (get-print-key idxent)))
+ idxent-list))
+;; line 689 "index.nw"
+(defun remove-first-keywords (idxent-list)
+ (declare (inline))
+ (mapc #'(lambda (idxent)
+ (setf (slot-value idxent 'merge-key)
+ (cdr (slot-value idxent 'merge-key)))
+ (setf (slot-value idxent 'main-key)
+ (cdr (slot-value idxent 'main-key)))
+ (setf (slot-value idxent 'print-key)
+ (cdr (slot-value idxent 'print-key)))
+ )
+ idxent-list)
+ idxent-list)
+;; line 713 "index.nw"
+(defun gen-all-sort-keys (idxent-list)
+ (when idxent-list
+ (mapc #'(lambda (idxent)
+ (set-sort-key #-:ORDRULES (get-merge-key idxent)
+ #+:ORDRULES (gen-keyword-sortkey-list
+ (get-merge-key idxent) 0)
+ idxent))
+ idxent-list))
+ idxent-list)
+;; line 94 "index.nw"
+(defparameter *index* nil)
+
+(defun create-index ()
+ (setq *index* (make-base-index *indexstyle*))
+ (setq *index-entry-table* (get-entry-table *index*))
+ *index*)
+
+(create-index)
+;; line 421 "index.nw"
+(defun lookup-indexentry (key &optional (index-entry-table *index-entry-table*))
+ (gethash key index-entry-table))
+
+;; line 258 "index.nw"
+(eval-when (compile load eval)
+ (defparameter *raw-index-interface-definitions*
+ '(indexentry)))
+;; line 165 "index.nw"
+(defmacro indexentry (&whole whole &rest args)
+ (destructuring-switch-bind (&key
+ key print tkey merge attr locref xref
+ &switch
+ (open-range :open-range)
+ (close-range :close-range))
+ args
+ (cond ((not (or key tkey))
+ (error "missing argument :key or :tkey in~%~S."))
+ ((and key tkey)
+ (error "you can't specify :key and :tkey at the same time in~%~S."
+ whole))
+ ((and locref xref)
+;; line 213 "index.nw"
+(error "you can't specify :locref and :xref at the same time in~%~S."
+ whole)
+
+;; line 177 "index.nw"
+ )
+ (t (progn
+ (if tkey
+ (multiple-value-setq (key print)
+ (tkey-to-normal-key tkey whole))
+ (when print;; check for correct key-length
+ (let ((keylen (length key)))
+ (unless (= keylen (length print))
+ (setq print;; take the first keylen elmts of print
+ (mapcar #'(lambda (x y) (declare (ignore y)) x)
+ key
+ (append print (make-list keylen))))))))
+ (cond ((not (listp key))
+ (error ":key ~S is not a list in~%~S." key whole))
+ ((not (listp print))
+ (error ":print ~S is not a list in~%~S." print whole))
+ (locref `(ADD-LAYERED-LOCREF-INDEXENTRY
+ :MAIN-KEY ',key
+ :PRINT-KEY ',print
+ :MERGE-KEY ',merge
+ :CATATTR ',attr
+ :LOCREF ',locref
+ :OPEN-RANGE ',open-range
+ :CLOSE-RANGE ',close-range))
+ (xref (when (or open-range close-range)
+
+;; line 221 "index.nw"
+(error "you can't specify :open-range or :close-range with :xref at the same time in~%~S."
+ whole)
+;; line 202 "index.nw"
+ )
+ (unless attr
+;; line 217 "index.nw"
+(error "missing :attr in combination with :xref in~%~S." whole)
+;; line 203 "index.nw"
+ )
+ `(ADD-CROSSREF-INDEXENTRY
+ :MAIN-KEY ',key
+ :PRINT-KEY ',print
+ :XREF ',xref
+ :XREF-CLASS-NAME ',attr))
+ (t
+;; line 226 "index.nw"
+(error "you must at least specify :locref or :xref in~%~S." whole)
+;; line 209 "index.nw"
+ )))))))
+;; line 238 "index.nw"
+(defun tkey-to-normal-key (tkey whole)
+ (when (not (listp tkey))
+;; line 254 "index.nw"
+(error "INDEXENTRY: invalid structure of :tkey in~%~S." tkey whole)
+;; line 239 "index.nw"
+ )
+ (let ((main-key '())
+ (print-key '()))
+ (mapc #'(lambda (key-elt)
+ (cond ((listp key-elt)
+ (push (car key-elt) main-key)
+ (if (cdr key-elt)
+ (push (cadr key-elt) print-key)
+ (push nil print-key)))
+ (t
+;; line 254 "index.nw"
+(error "INDEXENTRY: invalid structure of :tkey in~%~S." tkey whole)
+;; line 248 "index.nw"
+ )))
+ tkey)
+ (values (nreverse main-key) (nreverse print-key))))
+
+;; line 889 "index.nw"
+(eval-when (compile load eval)
+
+;; line 83 "index.nw"
+(export '(base-index make-base-index get-entries))
+;; line 105 "index.nw"
+(export '(*index* create-index))
+;; line 264 "index.nw"
+(export '*raw-index-interface-definitions*)
+(export *raw-index-interface-definitions*)
+;; line 412 "index.nw"
+(export '(add-locref-indexentry add-crossref-indexentry))
+;; line 530 "index.nw"
+(export '(process-index))
+;; line 564 "index.nw"
+(export '(letter-group get-members get-group-definition))
+;; line 891 "index.nw"
+ )
+
+;; line 1029 "idxentry.nw"
+#+:XP
+(set-pprint-dispatch 'index-entry
+ #'(lambda (s idxent)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (pprint-indent :block 2 s)
+ (write-string "Indexentry {" s)
+ (pprint-newline :mandatory s)
+ (write-string "main-key: " s)
+ (write (get-main-key idxent) :stream s)
+ (pprint-newline :mandatory s)
+ (write-string "merge-key: " s)
+ (write (get-merge-key idxent) :stream s)
+ (pprint-newline :mandatory s)
+ (write-string "sort-key: " s)
+ (write (get-sort-key idxent) :stream s)
+ (pprint-newline :mandatory s)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (write-string "Locrefs {" s)
+ (pprint-indent :block 2)
+ (pprint-newline :mandatory s)
+ (pprint-linear s (get-locrefs idxent)))
+ (pprint-newline :mandatory s)
+ (pprint-logical-block
+ (s nil :suffix "}")
+ (write-string "Subentries {" s)
+ (pprint-indent :block 2)
+ (pprint-newline :mandatory s)
+ (pprint-linear s (get-subentries idxent)))
+ (pprint-newline :mandatory s))
+ ))
+;; line 1071 "idxentry.nw"
+#+:XP
+(defun pprint-locref-group (s grp name)
+ (format s "~%")
+ (pprint-logical-block
+ (s nil :prefix "(" :suffix ")")
+ (write-string name s)
+ (write-string ":" s)
+ (when (typep grp 'category-attribute-group)
+ (write (get-ordnum grp) :stream s))
+ (pprint-indent :block 2 s)
+ (pprint-newline :mandatory s)
+ (pprint-fill s (get-members grp) nil)
+ (pprint-indent :block -1 s)
+ (pprint-newline :mandatory s)))
+
+#+:XP
+(defun set-pprint-locref-group-dispatch (class name &optional (rank 0))
+ (set-pprint-dispatch class
+ #'(lambda (s grp)
+ (pprint-locref-group s grp name))
+ rank))
+;; line 1107 "idxentry.nw"
+#+:XP
+(set-pprint-locref-group-dispatch 'locref-group
+ "LOCREF-GROUP" 0)
+#+:XP
+(set-pprint-locref-group-dispatch 'locref-class-group
+ "LOCREF-CLASS-GROUP" 1)
+#+:XP
+(set-pprint-locref-group-dispatch 'crossref-class-group
+ "CROSSREF-CLASS-GROUP" 2)
+#+:XP
+(set-pprint-locref-group-dispatch 'category-attribute-group
+ "CATEGORY-ATTRIBUTE-GROUP" 3)
+;; line 614 "ranges.nw"
+#+:XP
+(defun pprint-location-range (s range)
+ (pprint-logical-block
+ (s nil :prefix "[" :suffix "]")
+ (format s "range: ~D " (get-length range))
+ (pprint-newline :fill s)
+ (write-string " loccls: " s)
+ (write (get-locclass range) :stream s)
+ (pprint-newline :fill s)
+ (write-string " catattr: " s)
+ (write (get-catattr range) :stream s)
+ (format s "/~D" (get-sort-ordnum (get-catattr range)))
+ (pprint-newline :fill s)
+ (format s " ordnums: ~A " (get-ordnums range))
+ (pprint-newline :fill s)
+ (pprint-logical-block
+ (s nil :prefix "<" :suffix ">")
+ (write-string "first " s)
+ (pprint-newline :miser s)
+ (write (get-first range) :stream s))
+ (pprint-newline :mandatory s)
+ (pprint-logical-block
+ (s nil :prefix "<" :suffix ">")
+ (write-string "inner " s)
+ (pprint-newline :linear s)
+ (write (get-inner range) :stream s))
+ (pprint-newline :mandatory s)
+ (pprint-logical-block
+ (s nil :prefix "<" :suffix ">")
+ (write-string "last " s)
+ (pprint-newline :miser s)
+ (write (get-last range) :stream s))
+ (pprint-newline :mandatory s)))
+
+#+:XP
+(set-pprint-dispatch 'location-range #'pprint-location-range)
+
+;; line 868 "index.nw"
+(defvar *RCS-Identifier* '(
+;; line 998 "idxentry.nw"
+("idxentry" . "$Id: idxentry.nw,v 1.29 1997/03/27 17:17:25 kehr Exp $")
+;; line 895 "index.nw"
+("index" . "$Id: index.nw,v 1.31 1997/03/26 16:18:37 kehr Exp $")
+;; line 606 "ranges.nw"
+("ranges" . "$Id: ranges.nw,v 1.11 1997/03/26 16:18:41 kehr Exp $")
+;; line 868 "index.nw"
+ ))
diff --git a/Build/source/utils/xindy/xindy-src/src/locref.lsp b/Build/source/utils/xindy/xindy-src/src/locref.lsp
new file mode 100644
index 00000000000..428b629e910
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/locref.lsp
@@ -0,0 +1,556 @@
+;; line 360 "locref.nw"
+;; $Id: locref.nw,v 1.29 1997/03/26 16:18:53 kehr Exp $
+
+(lisp:defpackage "LOCREF")
+(lisp:in-package "LOCREF")
+(lisp:provide "locref")
+
+#+CLISP (lisp:require "base")
+
+(eval-when (compile load eval)
+ #-CLISP (lisp:require "base")
+ (lisp:use-package "BASE")
+ #+(and :XP CLISP) (lisp:use-package "XP")
+ (lisp:use-package "CLOS"))
+
+;; line 251 "basetype.nw"
+;; $Id: basetype.nw,v 1.17 1997/03/26 16:18:47 kehr Exp $
+
+;; line 110 "basetype.nw"
+(defgeneric prefix-match (str object))
+;; line 114 "basetype.nw"
+(defclass basetype ()
+ ((name :initarg :name)
+ (base-alphabet :initarg :base-alphabet)))
+;; line 142 "basetype.nw"
+(defclass alphabet (basetype)
+ ((symbols :initarg :symbols)))
+
+(defun make-alphabet (name symbols)
+ (make-instance 'alphabet :name name :symbols symbols
+ :base-alphabet (calculate-base-alphabet symbols)))
+
+(defmethod make-copy ((alph alphabet) new-name)
+ (make-instance 'alphabet
+ :name new-name
+ :symbols (get-symbols alph)
+ :base-alphabet (get-base-alphabet alph)))
+;; line 163 "basetype.nw"
+(defun calculate-base-alphabet (list-of-strings)
+ (sort (remove-duplicates
+ (apply #'nconc
+ (mapcar #'(lambda (str)
+ (coerce str 'list))
+ list-of-strings)))
+ #'char<))
+;; line 183 "basetype.nw"
+(defmethod prefix-match ((str string) (alph alphabet))
+ (multiple-value-bind (matched-string rest-string order-num)
+ (prefix-match-stringlist str (get-symbols alph))
+ (values matched-string rest-string order-num)))
+
+(defun prefix-match-stringlist (pattern list-of-str)
+ (let* ((matched-string "")
+ (rest-string pattern)
+ (ordnum-of-max-match nil)
+ (len-max-match 0)
+ (strlen (length pattern)))
+ (do ((ordnum 0 (1+ ordnum))
+ (string-list list-of-str (cdr string-list)))
+ ((endp string-list))
+ (let ((len-curr-match (string/= pattern (car string-list))))
+ (when (null len-curr-match) (setq len-curr-match strlen))
+ (when (> len-curr-match len-max-match)
+ (setq ordnum-of-max-match ordnum)
+ (setq len-max-match len-curr-match)
+ (setq rest-string (subseq pattern len-curr-match))
+ (setq matched-string
+ (subseq (car string-list) 0 len-curr-match)))))
+ (values matched-string rest-string ordnum-of-max-match)))
+;; line 227 "basetype.nw"
+(defclass enumeration (basetype)
+ ())
+
+(defun make-enumeration (enum-class name base-alphabet)
+ (make-instance enum-class
+ :name name
+ :base-alphabet base-alphabet))
+
+(defmethod make-copy ((enum enumeration) new-name)
+ (make-instance (class-name (class-of enum))
+ :name new-name
+ :base-alphabet (get-base-alphabet enum)))
+
+;; line 257 "basetype.nw"
+(eval-when (compile load eval)
+
+;; line 120 "basetype.nw"
+(export '(basetype prefix-match get-name get-base-alphabet))
+;; line 157 "basetype.nw"
+(export '(alphabet make-alphabet get-symbols make-copy))
+;; line 242 "basetype.nw"
+(export '(enumeration make-enumeration))
+;; line 259 "basetype.nw"
+ )
+;; line 493 "locclass.nw"
+;; $Id: locclass.nw,v 1.21 1997/03/26 16:18:49 kehr Exp $
+
+;; line 67 "locclass.nw"
+(defclass location-class ()
+ ((name :type string :initarg :name)
+ (ordnum :type number :initform (gen-next-loccls-ordnum))))
+;; line 87 "locclass.nw"
+(defparameter *curr-loccls-ordnum* 0)
+
+(defun gen-next-loccls-ordnum ()
+ (incf *curr-loccls-ordnum*))
+;; line 106 "locclass.nw"
+(defclass layered-location-class (location-class)
+ ((layers :initarg :layers)
+ (hierdepth :initarg :hierdepth)))
+;; line 125 "locclass.nw"
+(defclass standard-location-class (layered-location-class)
+ ((join-length :initarg :join-length)))
+
+(defun make-standard-location-class (name layers join-length hierdepth)
+ (make-instance 'standard-location-class
+ :name name :layers layers
+ :join-length join-length :hierdepth hierdepth))
+;; line 135 "locclass.nw"
+(defmacro joining-allowed-p (loccls)
+ `(SLOT-VALUE ,loccls 'JOIN-LENGTH))
+;; line 144 "locclass.nw"
+(defun checked-make-standard-location-class (name layers join-layers
+ &optional (hierdepth 0))
+ (make-standard-location-class name layers join-layers hierdepth))
+;; line 163 "locclass.nw"
+(defclass var-location-class (layered-location-class)
+ ())
+
+(defun make-var-location-class (name layers hierdepth)
+ (make-instance 'var-location-class
+ :name name :layers layers :hierdepth hierdepth))
+;; line 172 "locclass.nw"
+(defun checked-make-var-location-class (name layers &optional (hierdepth 0))
+ (make-var-location-class name layers hierdepth))
+;; line 189 "locclass.nw"
+(defclass loccls-layer ()
+ ((basetype :initarg :basetype)))
+
+(defun make-loccls-layer (basetype)
+ (make-instance 'loccls-layer :basetype basetype))
+;; line 206 "locclass.nw"
+(defmethod prefix-match ((locstring string)
+ (layer loccls-layer))
+ (prefix-match locstring (get-basetype layer)))
+;; line 220 "locclass.nw"
+(defclass loccls-separator ()
+ ((separator :initarg :separator)))
+
+(defun make-loccls-separator (separator)
+ (make-instance 'loccls-separator :separator separator))
+;; line 246 "locclass.nw"
+(defmethod prefix-match ((locstring string)
+ (separator loccls-separator))
+ (let* ((sepstr (get-separator separator))
+ (seplen (length sepstr))
+ (match-len (string/= sepstr locstring)))
+ (if (or (null match-len) (eql seplen match-len))
+ (values locstring (subseq locstring seplen) t)
+ (values nil nil nil))))
+;; line 273 "locclass.nw"
+(defclass crossref-location-class (location-class)
+ ((target :initarg :target)))
+;; line 299 "locclass.nw"
+(defclass verified-crossref-location-class (crossref-location-class)
+ ())
+
+(defun make-verified-crossref-location-class (name)
+ (make-instance 'verified-crossref-location-class :name name))
+;; line 319 "locclass.nw"
+(defclass unverified-crossref-location-class (crossref-location-class)
+ ())
+
+(defun make-unverified-crossref-location-class (name)
+ (make-instance 'unverified-crossref-location-class :name name))
+
+;; line 374 "locclass.nw"
+(defgeneric perform-match (locstring locclass))
+;; line 402 "locclass.nw"
+(defmethod perform-match ((locstring string)
+ (loccls standard-location-class))
+ (let ((layer-list '())
+ (ordnum-list '())
+ (give-up nil)
+ (matched-string nil)
+ (rest-string nil)
+ (ordnum nil))
+ (do ((layers (get-layers loccls) (cdr layers)))
+ ((or give-up
+ (let ((empty-string (= 0 (length locstring)))
+ (empty-list (endp layers)))
+ (cond ((and empty-string empty-list) t)
+ ((or empty-string empty-list) (setq give-up t))
+ (t nil)))))
+ (let ((curr-layer (car layers)))
+ (multiple-value-setq (matched-string rest-string ordnum)
+ (prefix-match locstring curr-layer))
+ (cond ((eq ordnum nil) (setq give-up t))
+ ((numberp ordnum)
+ (setq locstring rest-string)
+ (setq layer-list
+ (cons matched-string layer-list))
+ (setq ordnum-list (cons ordnum ordnum-list)))
+ (t (setq locstring rest-string)))
+ ))
+ (if (not give-up)
+ (values (nreverse layer-list) (nreverse ordnum-list))
+ (values nil nil))))
+;; line 446 "locclass.nw"
+(defmethod perform-match ((locstring string)
+ (loccls var-location-class))
+ (let ((layer-list '())
+ (ordnum-list '())
+ (give-up nil)
+ (matched-string nil)
+ (rest-string nil)
+ (ordnum nil))
+ (do ((layers (get-layers loccls) (cdr layers)))
+ ((or give-up
+ (let ((empty-string (= 0 (length locstring)))
+ (empty-list (endp layers)))
+ (cond (empty-string t)
+ (empty-list (setq give-up t))
+ (t nil)))))
+ (let ((curr-layer (car layers)))
+ (multiple-value-setq (matched-string rest-string ordnum)
+ (prefix-match locstring curr-layer))
+ (cond ((eq ordnum nil) (setq give-up t))
+ ((numberp ordnum)
+ (setq locstring rest-string)
+ (setq layer-list
+ (cons matched-string layer-list))
+ (setq ordnum-list (cons ordnum ordnum-list)))
+ (t (setq locstring rest-string)))
+ ))
+ (if (not give-up)
+ (values (nreverse layer-list) (nreverse ordnum-list))
+ (values nil nil))))
+;; line 482 "locclass.nw"
+;; FIXME (do we need this)
+;;(defmethod perform-match ((locstring string)
+;; (loccls crossref-location-class))
+;; t)
+
+;; line 507 "locclass.nw"
+(eval-when (compile load eval)
+
+;; line 94 "locclass.nw"
+(export '(location-class perform-match
+ get-name get-ordnum set-ordnum ordnum))
+;; line 112 "locclass.nw"
+(export '(layered-location-class))
+;; line 150 "locclass.nw"
+(export '(standard-location-class checked-make-standard-location-class
+ get-join-length set-join-length
+ joining-allowed-p join-length))
+;; line 177 "locclass.nw"
+(export '(var-location-class checked-make-var-location-class))
+;; line 197 "locclass.nw"
+(export '(loccls-layer make-loccls-layer
+ get-basetype get-markup))
+;; line 228 "locclass.nw"
+(export '(loccls-separator make-loccls-separator
+ get-separator get-markup))
+;; line 278 "locclass.nw"
+(export '(crossref-location-class get-target))
+;; line 307 "locclass.nw"
+(export '(verified-crossref-location-class
+ make-verified-crossref-location-class))
+;; line 327 "locclass.nw"
+(export '(unverified-crossref-location-class
+ make-unverified-crossref-location-class))
+;; line 183 "locref.nw"
+(export '(crossref-location-reference create-cross-reference))
+;; line 215 "locref.nw"
+(export 'build-location-reference)
+;; line 509 "locclass.nw"
+ )
+;; line 56 "locref.nw"
+(defclass location-reference ()
+ ((locclass :initarg :locclass)
+ (attribute :initarg :attribute)))
+;; line 78 "locref.nw"
+(defclass layered-location-reference (location-reference)
+ ((layers :initarg :layers)
+ (locref-string :initarg :string :type string)
+ (ordnums :initarg :ordnums)
+ (catattr :initarg :catattr)
+ (state :initarg :state)
+ (rangeattr :initform 'nil)
+ (origin :initform 'nil)
+ (subrefs :initform '() :type list)))
+
+;; line 95 "locref.nw"
+(defun make-layered-location-reference (&key (string "")
+ (layers '()) (ordnums '())
+ (catattr nil) (locclass nil)
+ (attribute nil) (virtual nil))
+ (make-instance 'layered-location-reference
+ :string string
+ :layers layers
+ :ordnums ordnums
+ :catattr catattr
+ :locclass locclass
+ :attribute attribute
+ :state (if virtual 'locref-state-virtual
+ 'locref-state-normal)))
+;; line 116 "locref.nw"
+(defmacro state-normal-p (locref)
+ `(EQL 'LOCREF-STATE-NORMAL (SLOT-VALUE ,locref 'STATE)))
+
+(defmacro state-virtual-p (locref)
+ `(EQL 'LOCREF-STATE-VIRTUAL (SLOT-VALUE ,locref 'STATE)))
+
+(defmacro state-deleted-p (locref)
+ `(EQL 'LOCREF-STATE-DELETED (SLOT-VALUE ,locref 'STATE)))
+
+(defun set-state-normal (locref)
+ (set-state 'locref-state-normal locref)
+ locref)
+
+(defun set-state-virtual (locref)
+ (set-state 'locref-state-virtual locref)
+ locref)
+
+(defun set-state-deleted (locref)
+ (set-state 'locref-state-deleted locref)
+ locref)
+;; line 139 "locref.nw"
+(defmacro rangeattr-open-p (attr)
+ `(EQL ,attr :RANGEATTR-OPEN))
+
+(defmacro rangeattr-close-p (attr)
+ `(EQL ,attr :RANGEATTR-CLOSE))
+
+(defmacro set-rangeattr-open (locref)
+ `(SETF (SLOT-VALUE ,locref 'RANGEATTR) :RANGEATTR-OPEN))
+
+(defmacro set-rangeattr-close (locref)
+ `(SETF (SLOT-VALUE ,locref 'RANGEATTR) :RANGEATTR-CLOSE))
+;; line 241 "locref.nw"
+(defclass category-attribute ()
+ ((name :initarg :name)
+ (catattr-grp-ordnum :initarg :ordnum)
+ (sort-ordnum :initform 0)
+ (processing-ordnum :initform 0)
+ (last-in-group :initarg :type)))
+
+(defun make-category-attribute (attr-name)
+ (make-instance 'category-attribute :name attr-name))
+;; line 174 "locref.nw"
+(defclass crossref-location-reference (location-reference)
+ ((target :initarg :target)))
+
+(defun create-cross-reference (loccls target attribute)
+ (make-instance 'crossref-location-reference
+ :locclass loccls :target target :attribute attribute))
+;; line 201 "locref.nw"
+(defmethod build-location-reference ((locclass layered-location-class)
+ (locref-str string)
+ (catattr category-attribute)
+ attribute)
+ (multiple-value-bind (layers ordnums)
+ (perform-match locref-str locclass)
+ (and layers ordnums
+ (make-layered-location-reference
+ :locclass locclass :layers layers
+ :ordnums ordnums :catattr catattr
+ :attribute attribute :string locref-str))))
+;; line 288 "locref.nw"
+(defun locref-class< (locref-1 locref-2)
+ (declare (inline))
+ (< (get-ordnum (get-locclass locref-1))
+ (get-ordnum (get-locclass locref-2))))
+
+(defun locref-class= (locref-1 locref-2)
+ (declare (inline))
+ (eql (get-locclass locref-1) (get-locclass locref-2)))
+;; line 301 "locref.nw"
+(defmacro locref-ordnum< (ordnum-list-1 ordnum-list-2)
+ `(COND
+ ((EQUAL ,ordnum-list-1 ,ordnum-list-2) NIL)
+ (T (DO ((REST-1 ,ordnum-list-1 (CDR REST-1))
+ (REST-2 ,ordnum-list-2 (CDR REST-2)))
+ ((OR (ENDP REST-1) (ENDP REST-2)
+ (/= (FIRST REST-1) (FIRST REST-2)))
+ (COND ((ENDP REST-1) T)
+ ((ENDP REST-2) NIL)
+ (T (< (FIRST REST-1) (FIRST REST-2)))))))))
+
+(defmacro locref-ordnum= (ordnum-list-1 ordnum-list-2)
+ `(EQUAL ,ordnum-list-1 ,ordnum-list-2))
+;; line 320 "locref.nw"
+#|
+FIXME
+(defun locref< (locref-1 locref-2)
+ (cond ((locref-class= locref-1 locref-2)
+ (locref-ordnum< locref-1 locref-2))
+ (t (locref-class< locref-1 locref-2))))
+|#
+
+(defmethod locref= ((locref-1 crossref-location-reference)
+ (locref-2 layered-location-reference))
+ nil)
+
+(defmethod locref= ((locref-1 layered-location-reference)
+ (locref-2 crossref-location-reference))
+ nil)
+
+(defmethod locref= ((locref-1 crossref-location-reference)
+ (locref-2 crossref-location-reference))
+ (and (locref-class= locref-1 locref-2)
+ (equal (get-target locref-1) (get-target locref-2))))
+
+(defmethod locref= ((locref-1 layered-location-reference)
+ (locref-2 layered-location-reference))
+ (and (locref-class= locref-1 locref-2)
+ (eql (get-catattr locref-1) (get-catattr locref-2))
+ (locref-ordnum= (get-ordnums locref-1) (get-ordnums locref-2))
+ (eql (get-rangeattr locref-1) (get-rangeattr locref-2))))
+
+;; line 391 "locref.nw"
+(eval-when (compile load eval)
+
+;; line 62 "locref.nw"
+(export 'location-reference)
+;; line 153 "locref.nw"
+(export '(layered-location-reference
+ make-layered-location-reference
+ get-layers set-layers layers
+ get-ordnums set-ordnums ordnums
+ get-subrefs set-subrefs subrefs
+ get-catattr catattr
+ get-rangeattr rangeattr
+ get-locref-string string
+ get-origin set-origin
+ state
+ state-normal-p state-virtual-p state-deleted-p
+ set-state-normal set-state-virtual set-state-deleted
+ set-rangeattr-open set-rangeattr-close
+ rangeattr-open-p rangeattr-close-p))
+;; line 257 "locref.nw"
+(export '(category-attribute make-category-attribute
+ get-name catattr-grp-ordnum
+ get-catattr-grp-ordnum set-catattr-grp-ordnum
+ get-sort-ordnum set-sort-ordnum
+ get-processing-ordnum set-processing-ordnum
+ get-last-in-group set-last-in-group
+ get-type set-type
+ get-markup set-markup))
+;; line 350 "locref.nw"
+(export '(locref-class< locref-class=
+ locref-ordnum< locref-ordnum=
+ locref=))
+;; line 393 "locref.nw"
+ )
+
+;; line 521 "locclass.nw"
+#+:XP
+(set-pprint-dispatch 'location-class
+ #'(lambda (s loccls)
+ (pprint-logical-block
+ (s nil :prefix "{" :suffix "}")
+ (write (get-name loccls) :stream s)
+ (write-string ":" s)
+ (write (get-ordnum loccls) :stream s))))
+
+#+:XP
+(set-pprint-dispatch 'layered-location-class
+ #'(lambda (s loccls)
+ (pprint-logical-block
+ (s nil :prefix "{" :suffix "}")
+ (write (get-name loccls) :stream s)
+ (write-string ":" s)
+ (write (get-ordnum loccls) :stream s)
+ (mapc #'(lambda (x)
+ (write-string " " s)
+ (pprint x s))
+ (get-layers loccls)))))
+
+#+:XP
+(set-pprint-dispatch 'loccls-layer
+ #'(lambda (s layer)
+ (pprint-logical-block
+ (s nil :prefix "<" :suffix ">")
+ (pprint (get-basetype layer) s))))
+
+#+:XP
+(set-pprint-dispatch 'loccls-separator
+ #'(lambda (s sep)
+ (pprint-logical-block
+ (s nil :prefix "<" :suffix ">")
+ (write (get-separator sep) :stream s))))
+;; line 406 "locref.nw"
+#+:XP
+(defun pprint-layered-location-reference (s locref)
+ (pprint-logical-block
+ (s nil :prefix "[" :suffix "]")
+ (cond ((state-normal-p locref) (write-string "Nor:" s))
+ ((state-virtual-p locref) (write-string "Vir:" s))
+ (t (write-string "Del:" s)))
+ (cond ((rangeattr-open-p (get-rangeattr locref)) (write-string "OPEN:" s))
+ ((rangeattr-close-p (get-rangeattr locref)) (write-string "CLOSE:" s)))
+ (write-string "\"" s)
+ (write-string (get-locref-string locref) s)
+ (write-string "\"=" s)
+ (write (get-layers locref) :stream s)
+ (write-string "=" s)
+ (write (get-ordnums locref) :stream s)
+ (write-string ";" s)
+ (pprint-newline :fill s)
+ (write (get-locclass locref) :stream s)
+ (write-string ";" s)
+ (pprint-newline :fill s)
+ (write (get-catattr locref) :stream s)
+ (when (get-origin locref)
+ (write-string "<-" s)
+ (write (get-catattr (get-origin locref)) :stream s))
+ (pprint-newline :fill s)
+ (write (get-subrefs locref) :stream s)
+ ))
+
+#+:XP
+(set-pprint-dispatch 'layered-location-reference
+ #'pprint-layered-location-reference)
+;; line 440 "locref.nw"
+#+:XP
+(defun pprint-crossref-location-reference (s xref)
+ (pprint-logical-block
+ (s nil :prefix "[" :suffix "]")
+ (write (get-locclass xref) :stream s)
+ (write-string "->" s)
+ (write (get-target xref) :stream s)
+ ))
+
+#+:XP
+(set-pprint-dispatch 'crossref-location-reference
+ #'pprint-crossref-location-reference)
+;; line 455 "locref.nw"
+#+:XP
+(set-pprint-dispatch 'category-attribute
+ #'(lambda (s catattr)
+ (write-string "`" s)
+ (write-string (get-name catattr) s)
+ (write-string "'" s)))
+
+;; line 380 "locref.nw"
+(defvar *RCS-Identifier* '(
+;; line 263 "basetype.nw"
+("basetype" . "$Id: basetype.nw,v 1.17 1997/03/26 16:18:47 kehr Exp $")
+;; line 513 "locclass.nw"
+("locclass" . "$Id: locclass.nw,v 1.21 1997/03/26 16:18:49 kehr Exp $")
+;; line 397 "locref.nw"
+("locref" . "$Id: locref.nw,v 1.29 1997/03/26 16:18:53 kehr Exp $")
+;; line 380 "locref.nw"
+ ))
diff --git a/Build/source/utils/xindy/xindy-src/src/markup.lsp b/Build/source/utils/xindy/xindy-src/src/markup.lsp
new file mode 100644
index 00000000000..6de238bbaf2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/markup.lsp
@@ -0,0 +1,1298 @@
+;; line 1154 "markup.nw"
+;; $Id: markup.nw,v 1.24 1997/03/26 16:18:58 kehr Exp $
+
+(lisp:defpackage "MARKUP")
+(lisp:in-package "MARKUP")
+(lisp:provide "markup")
+#+CLISP (lisp:require "base")
+#+CLISP (lisp:require "locref")
+#+CLISP (lisp:require "idxstyle")
+#+CLISP (lisp:require "index")
+#+CLISP (lisp:require "ordrules")
+#+CLISP (lisp:require "version")
+
+(eval-when (compile load eval)
+ (lisp:use-package "CLOS")
+ #+(and :XP CLISP) (lisp:use-package "XP")
+ #+CLISP (setq custom:*suppress-check-redefinition* t)
+ #-CLISP (lisp:require "base")
+ #-CLISP (lisp:require "locref")
+ #-CLISP (lisp:require "idxstyle")
+ #-CLISP (lisp:require "index")
+ (lisp:use-package "BASE")
+ (lisp:use-package "LOCREF")
+ (lisp:use-package "IDXSTYLE")
+ (lisp:use-package "INDEX"))
+
+;; line 1222 "markup.nw"
+;; $Id: markup.nw,v 1.24 1997/03/26 16:18:58 kehr Exp $
+
+;; line 71 "markup.nw"
+(defparameter *markup-output-stream* *standard-output*)
+(defparameter *markup-verbose-mode* nil)
+(defparameter *markup-verbose-open* "<")
+(defparameter *markup-verbose-close* ">")
+(defparameter *markup-indentation* 2)
+(defparameter *markup-indent-level* 0)
+(defparameter *empty-markup* "")
+
+(defvar *markup-percentage-list*)
+(defvar *current-number*)
+
+(defun do-markup-indent ()
+ (incf *markup-indent-level* *markup-indentation*))
+(defun do-markup-outdent ()
+ (decf *markup-indent-level* *markup-indentation*))
+;; line 102 "markup.nw"
+(defun do-markup-string (str)
+ (declare (inline))
+ (write-string str *markup-output-stream*))
+;; line 111 "markup.nw"
+(defun do-markup-default (str &optional arg1 arg2 arg3)
+ (when *markup-verbose-mode*
+ (loop for x from 1 to *markup-indent-level*
+ do (write-string " " *markup-output-stream*))
+ (do-markup-string *markup-verbose-open*)
+ (do-markup-string str)
+ (when arg1
+ (format *markup-output-stream* " [~S]" arg1)
+ (when arg2
+ (format *markup-output-stream* " [~S]" arg2)
+ (when arg3
+ (format *markup-output-stream* " [~S]" arg3)
+ )))
+ (do-markup-string *markup-verbose-close*)
+ (terpri *markup-output-stream*)
+ ))
+;; line 138 "markup.nw"
+(defmacro do-markup-list (some-list
+ &key
+ identifier counter
+ elt-body sep-body
+ open-body close-body)
+ `(PROGN
+ ,(when open-body `,open-body)
+ (LET ,(if counter
+ `((LIST-END (CAR (LAST ,some-list)))
+ (COUNTER ,counter))
+ `((LIST-END (CAR (LAST ,some-list)))))
+ (DO ((SLIST ,some-list (CDR SLIST)))
+ ((ENDP SLIST))
+ (LET ((,identifier (CAR SLIST)))
+ ,elt-body
+ ,(if sep-body
+ `(UNLESS (EQL ,identifier LIST-END)
+ ,sep-body)))))
+ ,(when close-body close-body)))
+;; line 162 "markup.nw"
+#|
+(macroexpand '(markup-list '(1 2 3) :identifier FOO
+ :open-body (print "open")
+ :close-body (print "close")
+ :elt-body (print FOO)
+ :sep-body (print ",")))
+
+expands to
+
+(PROGN (PRINT "open")
+ (LET ((LIST-END (CAR (LAST '(1 2 3)))))
+ (DO ((SLIST '(1 2 3) (CDR SLIST))) ((ENDP SLIST))
+ (LET ((FOO (CAR SLIST))) (PRINT FOO)
+ (UNLESS (EQL FOO LIST-END) (PRINT ","))
+ ) ) )
+ (PRINT "close")
+) ;
+T
+|#
+;; line 193 "markup.nw"
+(defmacro define-list-environment-methods (name
+ signature
+ &key open close sep declare body)
+ (let ((name (stringify name)))
+ `(EVAL-WHEN (COMPILE LOAD EVAL)
+ (HANDLER-BIND ((WARNING #'MUFFLE-WARNING))
+ (CL:DEFMETHOD
+ ,(intern (string-upcase (concatenate 'string name "-open"))
+ 'markup)
+ ,signature ,@declare ,@open ,@body)
+ (CL:DEFMETHOD
+ ,(intern (string-upcase (concatenate 'string name "-close"))
+ 'markup)
+ ,signature ,@declare ,@close ,@body)
+ (CL:DEFMETHOD
+ ,(intern (string-upcase (concatenate 'string name "-sep"))
+ 'markup)
+ ,signature ,@declare ,@sep ,@body)))))
+;; line 214 "markup.nw"
+(defmacro define-environment-methods (name
+ signature
+ &key open close declare body)
+ (let ((name (stringify name)))
+ `(EVAL-WHEN (COMPILE LOAD EVAL)
+ (HANDLER-BIND ((WARNING #'MUFFLE-WARNING))
+ (CL:DEFMETHOD
+ ,(intern (string-upcase (concatenate 'string name "-open"))
+ 'markup)
+ ,signature ,@declare ,@open ,@body)
+ (CL:DEFMETHOD
+ ,(intern (string-upcase (concatenate 'string name "-close"))
+ 'markup)
+ ,signature ,@declare ,@close ,@body)))))
+
+(defmacro define-method (name
+ signature
+ &key declare body)
+ (let ((name (stringify name)))
+ `(EVAL-WHEN (COMPILE LOAD EVAL)
+ (HANDLER-BIND ((WARNING #'MUFFLE-WARNING))
+ (CL:DEFMETHOD
+ ,(intern (string-upcase name) 'markup)
+ ,signature ,@declare ,@body)))))
+;; line 326 "markup.nw"
+(defmethod do-markup-index ((idx base-index))
+ (setq *current-number* 0)
+ (setq *markup-percentage-list* index:*percentage-list*)
+ (do-markup-index-open idx)
+ (do-markup-list (get-entries idx)
+ :identifier LETTER-GRP
+ :open-body (do-markup-letter-group-list-open)
+ :elt-body (do-markup-letter-group LETTER-GRP)
+ :sep-body (do-markup-letter-group-list-sep)
+ :close-body (do-markup-letter-group-list-close))
+ (index:print-rest-of-percentages *markup-percentage-list*)
+ (do-markup-index-close idx))
+
+(define-environment-methods do-markup-index ((idx base-index))
+ :open ((do-markup-default "INDEX:OPEN")
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "INDEX:CLOSE")))
+;; line 351 "markup.nw"
+(defmacro markup-index (&whole whole &rest args)
+ (destructuring-switch-bind (&key
+ open close hierdepth
+ &switch
+ tree flat)
+ args
+ (let (hierdepth-cmd)
+ (when (or hierdepth tree flat)
+ (cond
+ ((and tree flat)
+ (error "you can't specify :tree and :flat simultaneously in ~%~S~%"
+ whole))
+ ((and hierdepth (or tree flat))
+ (error "you can't specify :hierdepth with :tree or :flat simultaneously in ~%~S~%"
+ whole))
+ (flat (setq hierdepth-cmd
+ `(SET-HIERDEPTH 0 *INDEX*)));; no tree-structure
+ ;; MOST-POSITIVE-FIXNUM means make all trees
+ (tree (setq hierdepth-cmd
+ `(SET-HIERDEPTH MOST-POSITIVE-FIXNUM *INDEX*)))
+ (hierdepth
+ (when (not (numberp hierdepth))
+ (error "~S is not a number in ~S~%" whole))
+ (setq hierdepth-cmd
+ `(SET-HIERDEPTH ,hierdepth *INDEX*))))
+ `(LET ()
+ (markup::define-environment-methods
+ DO-MARKUP-INDEX ((idx index:base-index))
+ :declare ((declare (ignore idx)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close))))
+ ,hierdepth-cmd)))))
+;; line 390 "markup.nw"
+(define-list-environment-methods do-markup-letter-group-list ()
+ :open ((do-markup-default "LETTER-GROUP-LIST:OPEN")
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LETTER-GROUP-LIST:CLOSE"))
+ :sep ((do-markup-default "LETTER-GROUP-LIST:SEP")))
+;; line 409 "markup.nw"
+(defmethod do-markup-letter-group ((letter-grp letter-group))
+ (let ((group-definition (get-group-definition letter-grp)))
+ (do-markup-letter-group-open group-definition)
+ (do-markup-letter-group-head-open group-definition)
+ (do-markup-letter-group-head group-definition)
+ (do-markup-letter-group-head-close group-definition)
+ (do-markup-list (get-members letter-grp)
+ :identifier IDXENT #| the identifier to use in the expansion |#
+ :open-body (do-markup-indexentry-list-open 0
+ #|initial depth:=0|#)
+ :elt-body (do-markup-indexentry IDXENT 0)
+ :sep-body (do-markup-indexentry-list-sep 0)
+ :close-body (do-markup-indexentry-list-close 0))
+ (do-markup-letter-group-close group-definition)))
+
+(define-environment-methods do-markup-letter-group
+ ((group letter-group-definition))
+ :open ((do-markup-default "LETTER-GROUP:OPEN" (get-name group))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LETTER-GROUP:CLOSE" (get-name group))))
+
+(define-environment-methods do-markup-letter-group-head
+ ((group letter-group-definition))
+ :open ((do-markup-default "LETTER-GROUP-HEAD:OPEN" (get-name group))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LETTER-GROUP-HEAD:CLOSE" (get-name group))))
+
+(define-method do-markup-letter-group-head ((group letter-group-definition))
+ :body ((do-markup-default "LETTER-GROUP-HEAD" (get-name group))))
+;; line 503 "markup.nw"
+(define-list-environment-methods do-markup-indexentry-list ((depth number))
+ :open ((do-markup-default "INDEXENTRY-LIST:OPEN" depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "INDEXENTRY-LIST:CLOSE" depth))
+ :sep ((do-markup-default "INDEXENTRY-LIST:SEP" depth)))
+;; line 525 "markup.nw"
+(defmethod do-markup-indexentry ((idxent index-entry)
+ (depth number))
+ (when (>= (incf *current-number*) (caar *markup-percentage-list*))
+ (index:print-percent (pop *markup-percentage-list*)))
+
+ (do-markup-indexentry-open depth)
+
+ (let ((print-key (get-print-key idxent)))
+ (do-markup-list (merge-print-and-main-key print-key (get-main-key idxent))
+ :identifier KEYWORD
+ :open-body (do-markup-keyword-list-open depth)
+ :elt-body (do-markup-keyword KEYWORD depth)
+ :sep-body (do-markup-keyword-list-sep depth)
+ :close-body (do-markup-keyword-list-close depth)))
+
+ (let ((locrefs (get-locrefs idxent)))
+ (unless (endp locrefs)
+ (do-markup-list locrefs
+ :identifier LOCCLS-GRP
+ :open-body (do-markup-locclass-list-open)
+ :elt-body (do-markup-locclass LOCCLS-GRP)
+ :sep-body (do-markup-locclass-list-sep)
+ :close-body (do-markup-locclass-list-close))))
+
+ (let ((subentries (get-subentries idxent)))
+ (unless (endp subentries)
+ (let ((new-depth (1+ depth)))
+ (do-markup-list subentries
+ :identifier IDXENT
+ :open-body (do-markup-indexentry-list-open new-depth)
+ :elt-body (do-markup-indexentry IDXENT new-depth)
+ :sep-body (do-markup-indexentry-list-sep new-depth)
+ :close-body (do-markup-indexentry-list-close new-depth)))))
+
+ (do-markup-indexentry-close depth))
+
+(defun merge-print-and-main-key (print-key main-key)
+ ;;(info "~&(merge-print-and-main-key ~S ~S)" print-key main-key)
+ (if print-key
+ (mapcar #'(lambda (print main)
+ (or print main))
+ print-key main-key)
+ main-key))
+;; line 571 "markup.nw"
+(define-environment-methods do-markup-indexentry ((depth number))
+ :open ((do-markup-default "INDEXENTRY:OPEN" depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "INDEXENTRY:CLOSE" depth)))
+;; line 595 "markup.nw"
+(define-list-environment-methods do-markup-keyword-list ((depth number))
+ :open ((do-markup-default "KEYWORD-LIST:OPEN" depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "KEYWORD-LIST:CLOSE" depth))
+ :sep ((do-markup-default "KEYWORD-LIST:SEP" depth)))
+;; line 617 "markup.nw"
+(defmethod do-markup-keyword (keyword (depth number))
+ (do-markup-keyword-open depth)
+ (do-markup-string keyword)
+ (do-markup-keyword-close depth))
+;; line 624 "markup.nw"
+(define-environment-methods do-markup-keyword ((depth number))
+ :open ((do-markup-default "KEYWORD:OPEN" depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "KEYWORD:CLOSE" depth)))
+;; line 654 "markup.nw"
+(define-list-environment-methods do-markup-locclass-list ()
+ :open ((do-markup-default "LOCCLASS-LIST:OPEN")
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCCLASS-LIST:CLOSE"))
+ :sep ((do-markup-default "LOCCLASS-LIST:SEP")))
+;; line 677 "markup.nw"
+(defmethod do-markup-locclass ((locref-cls-grp locref-class-group))
+ (let ((locclass (get-locclass locref-cls-grp)))
+ (do-markup-locref-class-open locclass)
+
+ (do-markup-list (get-members locref-cls-grp)
+ :identifier ATTRIBUTE-GRP
+ :open-body (do-markup-attribute-group-list-open)
+ :elt-body (do-markup-attribute-group ATTRIBUTE-GRP locclass)
+ :sep-body (do-markup-attribute-group-list-sep)
+ :close-body (do-markup-attribute-group-list-close))
+
+ (do-markup-locref-class-close locclass)))
+
+(define-environment-methods do-markup-locref-class
+ ((locrefcls layered-location-class))
+ :open ((do-markup-default "LOCREF-CLASS:OPEN" (get-name locrefcls))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCREF-CLASS:CLOSE" (get-name locrefcls))))
+;; line 1044 "markup.nw"
+(defmethod do-markup-locclass ((xref-cls-grp crossref-class-group))
+ (let ((xrefclass (get-locclass xref-cls-grp)))
+
+ (do-markup-list (get-members xref-cls-grp)
+ :identifier XREF
+ :open-body (do-markup-crossref-list-open xrefclass)
+ :elt-body (do-markup-crossref XREF)
+ :sep-body (do-markup-crossref-list-sep xrefclass)
+ :close-body (do-markup-crossref-list-close xrefclass))))
+
+(define-list-environment-methods do-markup-crossref-list
+ ((xrefclass crossref-location-class))
+ :open ((do-markup-default "CROSSREF-LIST:OPEN" (get-name xrefclass))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "CROSSREF-LIST:CLOSE" (get-name xrefclass)))
+ :sep ((do-markup-default "CROSSREF-LIST:SEP" (get-name xrefclass))))
+;; line 1080 "markup.nw"
+(defmethod do-markup-crossref ((xref crossref-location-reference))
+ (let ((xrefclass (get-locclass xref)))
+
+ (do-markup-list (get-target xref)
+ :identifier XREF-LAYER
+ :open-body (do-markup-crossref-layer-list-open xrefclass)
+ :elt-body (do-markup-crossref-layer XREF-LAYER xrefclass)
+ :sep-body (do-markup-crossref-layer-list-sep xrefclass)
+ :close-body (do-markup-crossref-layer-list-close xrefclass))))
+
+(define-list-environment-methods do-markup-crossref-layer-list
+ ((xref-class crossref-location-class))
+ :open ((do-markup-default "CROSSREF-LAYER-LIST:OPEN"
+ (get-name xref-class))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "CROSSREF-LAYER-LIST:CLOSE"
+ (get-name xref-class)))
+ :sep ((do-markup-default "CROSSREF-LAYER-LIST:SEP"
+ (get-name xref-class))))
+;; line 1119 "markup.nw"
+(defmethod do-markup-crossref-layer (xref-layer
+ (xref-class crossref-location-class))
+ (do-markup-crossref-layer-open xref-class)
+ (do-markup-string xref-layer)
+ (do-markup-crossref-layer-close xref-class))
+
+(define-environment-methods do-markup-crossref-layer
+ ((xref-class crossref-location-class))
+ :open ((do-markup-default "CROSSREF-LAYER:OPEN" (get-name xref-class))
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "CROSSREF-LAYER:CLOSE" (get-name xref-class))))
+;; line 718 "markup.nw"
+(define-list-environment-methods do-markup-attribute-group-list ()
+ :open ((do-markup-default "ATTRIBUTE-GROUP-LIST:OPEN")
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "ATTRIBUTE-GROUP-LIST:CLOSE"))
+ :sep ((do-markup-default "ATTRIBUTE-GROUP-LIST:SEP")))
+;; line 737 "markup.nw"
+(defmethod do-markup-attribute-group ((attribute-group category-attribute-group)
+ (loccls layered-location-class))
+ (let ((ordnum (get-ordnum attribute-group)))
+ (do-markup-attribute-group-open ordnum)
+
+ (do-markup-list (get-members attribute-group)
+ :identifier LOCREF
+ :open-body (do-markup-locref-list-open loccls 0)
+ :elt-body (do-markup-locref (get-catattr LOCREF) LOCREF loccls 0)
+ :sep-body (do-markup-locref-list-sep loccls 0)
+ :close-body (do-markup-locref-list-close loccls 0))
+
+ (do-markup-attribute-group-close ordnum)))
+
+(define-environment-methods do-markup-attribute-group ((ordnum number))
+ :open ((do-markup-default "ATTRIBUTE-GROUP:OPEN" ordnum)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "ATTRIBUTE-GROUP:CLOSE" ordnum)))
+;; line 776 "markup.nw"
+(define-list-environment-methods do-markup-locref-list
+ ((loccls layered-location-class) (depth number))
+ :open ((do-markup-default "LOCREF-LIST:OPEN" (get-name loccls) depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCREF-LIST:CLOSE" (get-name loccls) depth))
+ :sep ((do-markup-default "LOCREF-LIST:SEP" (get-name loccls) depth)))
+;; line 808 "markup.nw"
+(defmethod do-markup-locref ((attr category-attribute)
+ (locref location-reference)
+ (loccls layered-location-class)
+ (depth number))
+ #+ASSERT! (assert! (and (typep locref 'layered-location-reference)
+ (typep depth 'number)))
+ (let ((attr (get-catattr locref))
+ (subrefs (get-subrefs locref))
+ (new-depth (1+ depth)))
+
+ (do-markup-locref-open attr loccls depth)
+
+ (cond
+ (subrefs
+ (let ((layer 0))
+ (do-markup-list (get-layers locref)
+ :identifier LOCREF-LAYER
+ :open-body (do-markup-locref-layer-list-open loccls depth)
+ :elt-body (do-markup-locref-layer LOCREF-LAYER loccls depth
+ (prog1 layer
+ (incf layer)))
+ :sep-body (do-markup-locref-layer-list-sep loccls depth)
+ :close-body (do-markup-locref-layer-list-close loccls depth)))
+
+ (do-markup-list subrefs
+ :identifier LOCREF
+ :open-body (do-markup-locref-list-open loccls new-depth)
+ :elt-body (do-markup-locref attr LOCREF loccls new-depth)
+ :sep-body (do-markup-locref-list-sep loccls new-depth)
+ :close-body (do-markup-locref-list-close loccls new-depth)))
+
+ ((= 0 depth)
+ (do-markup-string (get-locref-string locref)))
+
+ (t (let ((layer 0))
+ (do-markup-list (get-layers locref)
+ :identifier LOCREF-LAYER
+ :open-body (do-markup-locref-layer-list-open loccls depth)
+ :elt-body (do-markup-locref-layer LOCREF-LAYER loccls depth
+ (prog1 layer
+ (incf layer)))
+ :sep-body (do-markup-locref-layer-list-sep loccls depth)
+ :close-body (do-markup-locref-layer-list-close loccls depth)))))
+
+ (do-markup-locref-close attr loccls depth)))
+;; line 855 "markup.nw"
+(define-list-environment-methods do-markup-locref-layer-list
+ ((loccls layered-location-class) (depth number))
+ :open ((do-markup-default "LOCREF-LAYER-LIST:OPEN" (get-name loccls) depth)
+ (do-markup-indent))
+ :sep ((do-markup-default "LOCREF-LAYER-LIST:SEP" (get-name loccls) depth))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCREF-LAYER-LIST:CLOSE" (get-name loccls) depth)))
+;; line 883 "markup.nw"
+(defun do-markup-locref-layer (locref-layer loccls depth layer)
+ (do-markup-locref-layer-open loccls depth layer)
+ (do-markup-string locref-layer)
+ (do-markup-locref-layer-close loccls depth layer))
+
+(define-environment-methods do-markup-locref-layer
+ ((locref-class layered-location-class) (depth number) (layer number))
+ :open ((do-markup-default "LOCREF-LAYER:OPEN"
+ (get-name locref-class) depth layer)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCREF-LAYER:CLOSE"
+ (get-name locref-class) depth layer)))
+;; line 918 "markup.nw"
+(define-environment-methods do-markup-locref ((attr category-attribute)
+ (loccls layered-location-class)
+ (depth number))
+ :open ((do-markup-default "LOCREF:OPEN"
+ (get-name attr) (get-name loccls) depth)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "LOCREF:CLOSE"
+ (get-name attr) (get-name loccls) depth)))
+;; line 955 "markup.nw"
+(defmethod do-markup-locref ((attr category-attribute)
+ (range location-range)
+ (loccls layered-location-class)
+ (depth number))
+ (let ((length (get-length range)))
+ (do-markup-range-open attr loccls length)
+ (do-markup-locref attr (get-first range) loccls depth)
+ (do-markup-range-sep attr loccls length)
+ (when (markup-range-print-end-p loccls length)
+ (do-markup-locref attr (get-last range) loccls depth))
+ (do-markup-range-close attr loccls length)))
+
+(define-list-environment-methods do-markup-range
+ ((attr category-attribute) (loccls layered-location-class) (length number))
+ :open ((do-markup-default "RANGE:OPEN" (get-name attr) (get-name loccls) length)
+ (do-markup-indent))
+ :close ((do-markup-outdent)
+ (do-markup-default "RANGE:CLOSE" (get-name attr) (get-name loccls) length))
+ :sep ((do-markup-default "RANGE:SEP" (get-name loccls) length)))
+
+(defmethod markup-range-print-end-p ((loccls layered-location-class)
+ (length number))
+ t)
+;; line 304 "markup.nw"
+(defmacro markup-trace (&rest args)
+ (destructuring-switch-bind (&key
+ (open *markup-verbose-open*)
+ (close *markup-verbose-close*)
+ &switch
+ on)
+ args
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 312 "markup.nw"
+ (t `(LET ()
+ (SETQ *markup-verbose-open* ,open)
+ (SETQ *markup-verbose-close* ,close)
+ ,(when on `(SETQ *markup-verbose-mode* t)))))))
+;; line 399 "markup.nw"
+(defmacro markup-letter-group-list (&key open close sep)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 401 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-LETTER-GROUP-LIST ()
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 443 "markup.nw"
+(defmacro markup-letter-group (&whole whole &rest args)
+ (destructuring-switch-bind (&key
+ open close group
+ open-head close-head
+ &switch
+ upcase downcase capitalize)
+ args
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 451 "markup.nw"
+
+;; line 252 "markup.nw"
+((and open-head (not (stringp open-head)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open-head))
+((and close-head (not (stringp close-head)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close-head))
+;; line 452 "markup.nw"
+
+;; line 275 "markup.nw"
+((and group (progn
+ (setq group (stringify group))
+ (not (lookup-letter-group-definition *indexstyle* group))))
+ (nraw "parameter `~S' is not a valid letter-group! (ignored)~%" group))
+;; line 453 "markup.nw"
+ ((or (and upcase downcase)
+ (and upcase capitalize)
+ (and downcase capitalize))
+ (error "more than one modifier in~%~S" whole))
+ (t `(LET ()
+ (markup::define-environment-methods
+ DO-MARKUP-LETTER-GROUP
+ (,(if group
+ `(lg-def (EQL ',(lookup-letter-group-definition
+ *indexstyle* group)))
+ '(lg-def letter-group-definition)))
+ :declare ((declare (ignore lg-def)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close))))
+ (markup::define-environment-methods
+ DO-MARKUP-LETTER-GROUP-HEAD
+ (,(if group
+ `(lg-def (EQL ',(lookup-letter-group-definition
+ *indexstyle* group)))
+ '(lg-def letter-group-definition)))
+ :declare ((declare (ignore lg-def)))
+ :open ,(when open-head `((do-markup-string ,open-head)))
+ :close ,(when close-head `((do-markup-string ,close-head))))
+ ,(when (or open-head close-head)
+ `(markup::define-method
+ DO-MARKUP-LETTER-GROUP-HEAD
+ (,(if group
+ `(lg-def (EQL ',(lookup-letter-group-definition
+ *indexstyle* group)))
+ '(lg-def letter-group-definition)))
+ :body ((do-markup-string
+ ,(cond (upcase `(string-upcase
+ (get-name lg-def)))
+ (downcase `(string-downcase
+ (get-name lg-def)))
+ (capitalize `(string-capitalize
+ (get-name lg-def)))
+ (t `(get-name lg-def))))))))))))
+;; line 512 "markup.nw"
+(defmacro markup-indexentry-list (&key open close sep depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 514 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 515 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-INDEXENTRY-LIST
+ (,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 579 "markup.nw"
+(defmacro markup-indexentry (&key open close depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 581 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 582 "markup.nw"
+ (t `(markup::define-environment-methods
+ DO-MARKUP-INDEXENTRY
+ (,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 604 "markup.nw"
+(defmacro markup-keyword-list (&key open close sep depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 606 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 607 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-KEYWORD-LIST
+ (,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 632 "markup.nw"
+(defmacro markup-keyword (&key open close depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 634 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 635 "markup.nw"
+ (t `(markup::define-environment-methods
+ DO-MARKUP-KEYWORD
+ (,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 663 "markup.nw"
+(defmacro markup-locclass-list (&key open close sep)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 665 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-LOCCLASS-LIST ()
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 699 "markup.nw"
+(defmacro markup-locref-class (&key open close class)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 701 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 702 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-LOCREF-CLASS
+ (,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class)))
+ :declare ((declare (ignore locrefcls)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 727 "markup.nw"
+(defmacro markup-attribute-group-list (&key open close sep)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 729 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-ATTRIBUTE-GROUP-LIST ()
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 759 "markup.nw"
+(defmacro markup-attribute-group (&key open close group)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 761 "markup.nw"
+
+;; line 275 "markup.nw"
+((and group (progn
+ (setq group (stringify group))
+ (not (lookup-letter-group-definition *indexstyle* group))))
+ (nraw "parameter `~S' is not a valid letter-group! (ignored)~%" group))
+;; line 762 "markup.nw"
+ (t `(markup::define-environment-methods
+ DO-MARKUP-ATTRIBUTE-GROUP
+ (,(if group
+ `(ordnum (EQL ,group))
+ '(ordnum number)))
+ :declare ((declare (ignore ordnum)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 786 "markup.nw"
+(defmacro markup-locref-list (&key open close sep class depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 788 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 789 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 790 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-LOCREF-LIST
+ (,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore locrefcls depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 865 "markup.nw"
+(defmacro markup-locref-layer-list (&key open close sep class depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 867 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 868 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 869 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-LOCREF-LAYER-LIST
+ (,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore locrefcls depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 899 "markup.nw"
+(defmacro markup-locref-layer (&key class open close depth layer)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 901 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 902 "markup.nw"
+
+;; line 270 "markup.nw"
+((and layer (not (integerp layer)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" layer))
+;; line 903 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 904 "markup.nw"
+ (t `(markup::define-environment-methods
+ DO-MARKUP-LOCREF-LAYER
+ (,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if depth `(depth (EQL ,depth)) '(depth number))
+ ,(if layer `(layer (EQL ,layer)) '(layer number)))
+ :declare ((declare (ignore depth layer)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 930 "markup.nw"
+(defmacro markup-locref (&key open close class attr depth)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 932 "markup.nw"
+
+;; line 294 "markup.nw"
+((and attr (progn (setq attr (stringify attr))
+ (not (lookup-catattr *indexstyle* attr))))
+ (nraw "parameter `~S' is not an attribute! (ignored)~%" attr))
+;; line 933 "markup.nw"
+
+;; line 265 "markup.nw"
+((and depth (not (integerp depth)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" depth))
+;; line 934 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 935 "markup.nw"
+ (t `(markup::define-environment-methods
+ DO-MARKUP-LOCREF
+ (,(if attr
+ `(attr (EQL ',(lookup-catattr *indexstyle* attr)))
+ '(attr category-attribute))
+ ,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if depth `(depth (EQL ,depth)) '(depth number)))
+ :declare ((declare (ignore attr locrefcls depth)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 1002 "markup.nw"
+(defmacro markup-range (&whole whole &rest args)
+ (destructuring-switch-bind (&key
+ open close sep class attr length
+ &switch ignore-end)
+ args
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 1008 "markup.nw"
+
+;; line 282 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-locref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a location-reference class! (ignored)~%" class))
+;; line 294 "markup.nw"
+((and attr (progn (setq attr (stringify attr))
+ (not (lookup-catattr *indexstyle* attr))))
+ (nraw "parameter `~S' is not an attribute! (ignored)~%" attr))
+;; line 1009 "markup.nw"
+ ((and length (not (numberp length)))
+ (nraw "parameter `~S' is not a number! (ignored)~%" length))
+ (t `(let ()
+ (markup::define-list-environment-methods
+ DO-MARKUP-RANGE
+ (,(if attr
+ `(attr (EQL ',(lookup-catattr *indexstyle* attr)))
+ '(attr category-attribute))
+ ,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if length
+ `(length (EQL ,length))
+ '(length number)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep))))
+ (define-method markup::MARKUP-RANGE-PRINT-END-P
+ (,(if class
+ `(locrefcls (EQL ',(cdr (lookup-locref-class
+ *indexstyle* class))))
+ '(locrefcls layered-location-class))
+ ,(if length
+ `(length (EQL ,length))
+ '(length number)))
+ :declare ((declare (ignore attr locrefcls length)))
+ :body (,(not ignore-end))))))))
+;; line 1064 "markup.nw"
+(defmacro markup-crossref-list (&key open sep close class)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 1066 "markup.nw"
+
+;; line 288 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-crossref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a cross-reference class! (ignored)~%" class))
+;; line 1067 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-CROSSREF-LIST
+ (,(if class
+ `(xrefcls (EQL ',(cdr (lookup-crossref-class *indexstyle*
+ class))))
+ '(xrefcls crossref-location-class)))
+ :declare ((declare (ignore xrefcls)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 1103 "markup.nw"
+(defmacro markup-crossref-layer-list (&key open sep close class)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 260 "markup.nw"
+((and sep (not (stringp sep)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" sep))
+;; line 1105 "markup.nw"
+
+;; line 288 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-crossref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a cross-reference class! (ignored)~%" class))
+;; line 1106 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-CROSSREF-LAYER-LIST
+ (,(if class
+ `(xrefcls (EQL ',(cdr (lookup-crossref-class *indexstyle*
+ class))))
+ '(xrefcls crossref-location-class)))
+ :declare ((declare (ignore xrefcls)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))
+ :sep ,(when sep `((do-markup-string ,sep)))))))
+;; line 1134 "markup.nw"
+(defmacro markup-crossref-layer (&key open close class)
+ (cond
+;; line 245 "markup.nw"
+((and open (not (stringp open)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" open))
+((and close (not (stringp close)))
+ (nraw "parameter `~S' is not a string! (ignored)~%" close))
+;; line 1136 "markup.nw"
+
+;; line 288 "markup.nw"
+((and class (progn (setq class (stringify class))
+ (not (lookup-crossref-class *indexstyle* class))))
+ (nraw "parameter `~S' is not a cross-reference class! (ignored)~%" class))
+;; line 1137 "markup.nw"
+ (t `(markup::define-list-environment-methods
+ DO-MARKUP-CROSSREF-LAYER
+ (,(if class
+ `(xrefcls (EQL ',(cdr (lookup-crossref-class *indexstyle*
+ class))))
+ '(xrefcls crossref-location-class)))
+ :declare ((declare (ignore xrefcls)))
+ :open ,(when open `((do-markup-string ,open)))
+ :close ,(when close `((do-markup-string ,close)))))))
+;; line 1188 "markup.nw"
+(eval-when (compile load eval)
+ (defparameter *markup-user-interface-definitions*
+ '(*markup-verbose-mode*
+ *markup-verbose-open*
+ *markup-verbose-close*
+ markup-crossref-layer
+ markup-crossref-layer-list
+ markup-crossref-list
+ markup-index
+ markup-letter-group
+ markup-letter-group-list
+ markup-indexentry
+ markup-indexentry-list
+ markup-keyword
+ markup-keyword-list
+ markup-locclass-list
+ markup-locref-class
+ markup-attribute-group-list
+ markup-attribute-group
+ markup-locref-list
+ markup-locref
+ markup-locref-layer-list
+ markup-locref-layer
+ markup-range
+ markup-trace
+ )))
+
+;; line 1238 "markup.nw"
+(eval-when (compile load eval)
+
+;; line 89 "markup.nw"
+(export '(*markup-output-stream*
+ *markup-verbose-mode*
+ *markup-verbose-open*
+ *markup-verbose-close*
+ *indexstyle-readtable*))
+;; line 347 "markup.nw"
+(export '(do-markup-index))
+;; line 1217 "markup.nw"
+(export '*markup-user-interface-definitions*)
+(export *markup-user-interface-definitions*)
+;; line 1240 "markup.nw"
+ )
+
+;; line 1178 "markup.nw"
+(defvar *RCS-Identifier* '(
+;; line 1244 "markup.nw"
+("markup" . "$Id: markup.nw,v 1.24 1997/03/26 16:18:58 kehr Exp $")
+;; line 236 "startup.nw"
+("startup" . "$Id: startup.nw,v 1.17 1997/03/26 16:19:03 kehr Exp $")
+;; line 1178 "markup.nw"
+ ))
+
+;; this should be the last of the module since it defines the
+;; additional package `xindy'.
+;; line 210 "startup.nw"
+;; $Id: startup.nw,v 1.17 1997/03/26 16:19:03 kehr Exp $
+
+(lisp:defpackage "XINDY")
+(lisp:in-package "XINDY")
+
+(eval-when (compile load eval)
+ (lisp:use-package "BASE")
+ (lisp:use-package :xindy-version)
+ (lisp:use-package "MARKUP")
+ (lisp:use-package "CLOS")
+ (lisp:use-package "COMMON-LISP")
+ #+CLISP (lisp:use-package "EXT")
+ (lisp:import markup:*markup-user-interface-definitions*))
+
+(eval-when (compile load eval)
+ (pushnew :HANDLER *features*))
+;; FIXME: error messages about package locks
+;(eval-when (compile load eval)
+; (pushnew :BREAK-DRIVER *features*))
+
+;; line 44 "startup.nw"
+(defun issue-startup-message ()
+ (info "xindy kernel version: ~A~%" *xindy-kernel-version*)
+ (info "~A version ~A~% architecture: ~A~%"
+ (lisp-implementation-type) (lisp-implementation-version)
+ (machine-version))
+ )
+
+(defun startup (&key idxstyle rawindex output logfile
+ show-version markup-trace (trace-level 0))
+ (when show-version
+ (issue-startup-message)
+ (exit-normally))
+ (when markup-trace (setq *markup-verbose-mode* t))
+ #+:HANDLER
+ (handler-case
+ (do-startup idxstyle rawindex output logfile trace-level)
+ (error
+ (condition)
+ (oops* (simple-condition-format-string condition)
+ (simple-condition-format-arguments condition))
+ (error-exit)))
+ #-:HANDLER
+ (do-startup idxstyle rawindex output logfile trace-level))
+;; line 70 "startup.nw"
+(defun do-startup (idxstyle raw-index output logfile trace-level)
+ (set-searchpath-by-environment)
+ (setq custom:*default-file-encoding* charset:iso-8859-1)
+ (when logfile
+ (info "~&Opening logfile ~S " logfile)
+ (handler-case
+ (setq *logging-stream* (open logfile
+ :direction :output
+ :if-does-not-exist :create
+ :if-exists :supersede))
+ (error ()
+ (oops "Opening logfile ~S failed!" logfile)
+ (error-exit)))
+ (info "(done)~%")
+ ;; Set necessary flags...
+ (setq *logging-on* t)
+ (case trace-level
+ (0)
+ (1 (setq *mappings-trace* t))
+ (2 (setq *mappings-trace* t) (setq *locref-trace* t))
+ (3 (setq *mappings-trace* t) (setq *locref-trace* t))
+ (t (error "Invalid :trace-level ~S !" trace-level)))
+ #+:ORDRULES (when *mappings-trace*
+ (setq ordrules::*message-logging* 1))
+
+ (multiple-value-bind (sec min hour day mon year)
+ (get-decoded-time)
+ (gol t ";; This logfile was generated automatically by `xindy'~%")
+ (gol t ";; at ~2,'0D.~2,'0D.~4,'0D ~2,'0D:~2,'0D:~2,'0D~%"
+ day mon year hour min sec))
+ (gol t ";; Indexstyle: ~S, Rawindex: ~S, Output: ~S~%~%"
+ idxstyle raw-index output)
+ )
+
+ (info "~&Reading indexstyle...~%")
+ (let ((*readtable* idxstyle:*indexstyle-readtable*))
+ (idxstyle:do-require idxstyle))
+ (info "~&Finished reading indexstyle.")
+ (info "~&Finalizing indexstyle... ")
+ (idxstyle:make-ready idxstyle:*indexstyle*)
+ (info "(done)~%~%")
+
+ (info "~&Reading raw-index ~S..." raw-index)
+ (load raw-index :verbose nil)
+ (info "~&Finished reading raw-index.~%~%")
+
+ (handler-case
+ (setq *markup-output-stream*
+ (open output
+ :direction :output
+ :if-does-not-exist :create
+ :if-exists :supersede))
+ (error ()
+ (oops "Opening file ~S failed!" output)
+ (error-exit)))
+
+ (info "~&Processing index...")
+ (index:process-index index:*index*)
+ (info "~&Finished processing index.~%~%")
+
+ (info "~&Writing markup...")
+ (markup:do-markup-index index:*index*)
+ (info "~%Markup written into file ~S.~%" output))
+;; line 139 "startup.nw"
+(defun set-searchpath-by-environment ()
+ (let ((sp (#+CLISP
+ system::getenv
+ #+ALLEGRO
+ sys:getenv
+ "XINDY_SEARCHPATH")))
+ (when sp (idxstyle:set-searchpath-by-string sp))))
+;; line 170 "startup.nw"
+#+:BREAK-DRIVER
+(fmakunbound '*break-driver*)
+
+#+:BREAK-DRIVER
+(defun *break-driver* (continuable
+ &optional (condition nil) (print-it nil)
+ &aux (may-continue
+ (or continuable
+ (and condition
+ (find-restart 'continue condition))
+ ) )
+ (interactive-p (interactive-stream-p *debug-io*))
+ (commandsr '())
+ )
+ (declare (ignore may-continue interactive-p commandsr))
+ ;; This when-clause is from Bruno Haible.
+ (when (and condition print-it)
+ (terpri *error-output*)
+ (write-string "*** - " *error-output*)
+ #+CLISP (system::print-condition condition *error-output*)
+ #-CLISP (print condition *error-output*)
+ )
+ (format *ERROR-OUTPUT* "~&Bye.")
+ (error-exit))
+
+#+:BREAK-DRIVER-OLD
+(defun *break-driver* (continuable &rest rest)
+ (declare (ignore continuable rest))
+ (format *ERROR-OUTPUT* "~&Bye.")
+ (error-exit))
+
+#+:BREAK-DRIVER
+(eval-when (compile load eval)
+ (export '*break-driver*))
+
+;; line 230 "startup.nw"
+(eval-when (compile load eval)
+
+;; line 135 "startup.nw"
+(export '(startup *xindy-kernel-version*))
+;; line 232 "startup.nw"
+ )
diff --git a/Build/source/utils/xindy/xindy-src/src/ordrules.lsp b/Build/source/utils/xindy/xindy-src/src/ordrules.lsp
new file mode 100644
index 00000000000..ea372eb94ea
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/ordrules.lsp
@@ -0,0 +1,419 @@
+;;; $Id$
+;;;----------------------------------------------------------------------
+
+;;;
+;;; ordrules --- order rules for xindy
+;;;
+;;; (history at end)
+
+
+(provide "ordrules")
+
+
+;;;; ============================================================
+;;;;
+;;;; SPECIFICATION
+;;;;
+
+;;;
+;;; package ordrules XXX
+;;;
+
+(defpackage "ORDRULES"
+ (:documentation "Order rules for xindy.
+Provides functionality for merge-rules and sort-rules, as ordrule collections.
+An ordrule collection is an ordered set of order rules.
+An order rule is an object that manages replacement of a string or
+regular expression by a string.
+Ordrule collections are applied to strings, the result is created by
+successive application of matching order rules.")
+ (:use common-lisp clos regexp)
+ (:shadow match)
+ (:export ;; object interface
+ "MAKE-ORDRULE-TABLE" "ADD-RULE" "APPLY-RULES"
+ ;; legacy (C plugin) interface
+ "INITIALIZE" "ADD-KEYWORD-MERGE-RULE" "ADD-KEYWORD-SORT-RULE"
+ "GEN-KEYWORD-MERGEKEY" "GEN-KEYWORD-SORTKEY"
+ "*MESSAGE-BUFFER-PTR*" "*MESSAGE-BUFFER*" "*MESSAGE-LOGGING*")
+ )
+(in-package "ORDRULES")
+
+
+
+;;;; ============================================================
+;;;;
+;;;; ORDRULE OBJECTS
+;;;;
+
+;;; class ORDRULE
+;;; Slots:
+;;; -- match: regexp, string, or char that might be matched
+;;; -- repl: replacement for the matched substring
+;;; -- again: boolean flag if repl should be eligible for further ordrules
+;;;
+;;; subclass ORDRULE-STRING -- no additional slots
+;;; subclass ORDRULE-CHAR -- no additional slots
+;;; subclass ORDRULE-REGEXP
+;;; Additional Slots:
+;;; -- only-at-start: boolean flag if match should only be tested at start
+;;; of string
+
+(defclass ordrule ()
+ ((match :initarg :match :reader match)
+ (repl :initarg :repl :reader repl)
+ (again :initarg :again :reader again))
+ (:documentation
+ "An order rule that represents the replacement of a matching expression
+with a replacement string."))
+
+(defclass ordrule-string (ordrule)
+ ()
+ (:documentation
+ "An ordrule where the matching expression is a string"))
+
+(defclass ordrule-char (ordrule)
+ ()
+ (:documentation
+ "An ordrule where the matching expression is a char"))
+
+(defclass ordrule-regexp (ordrule)
+ ((pattern :initarg :pattern :reader pattern)
+ (only-at-start :initarg :only-at-start :reader only-at-start))
+ (:documentation
+ "An ordrule where the matching expression is a regexp"))
+
+(defmethod print-object ((obj ordrule) stream)
+ "Print an ordrule."
+ (format stream "#<ordrule: '~A' => '~A' :again ~A>"
+ (match obj) (repl obj) (again obj)))
+
+(defmethod print-object ((obj ordrule-regexp) stream)
+ "Print an ordrule."
+ (format stream "#<ordrule-regexp: '~A' => '~A' :again ~A :only-at-start ~A>"
+ (pattern obj) (repl obj) (again obj) (only-at-start obj)))
+
+(defun make-ordrule-string (match repl &key again)
+ "Create an ordrule-string object.
+MATCH is a string to compare."
+ (make-instance 'ordrule-string :match match :repl repl :again again))
+
+(defun make-ordrule-char (match repl &key again)
+ "Create an ordrule-string object.
+MATCH is a character to compare."
+ (make-instance 'ordrule-char :match match :repl (string repl) :again again))
+
+(defun make-ordrule-regexp (match-pattern repl &key again (extended t))
+ "Create an ordrule-regexp object.
+MATCH-PATTERN is a POSIX regular expression.
+The boolean keyword argument :extended tells if the regex is a basic
+one or an extended one; default is to use extended ones."
+ (let* ((only-at-start (char= (char match-pattern 0) #\^))
+ (match (if only-at-start (subseq match-pattern 1) match-pattern)))
+ (make-instance 'ordrule-regexp
+ :match (regexp-compile (concatenate 'string "^(" match ")")
+ :extended extended)
+ :repl repl :again again
+ :pattern match-pattern :only-at-start only-at-start)))
+
+;; A regexp-compile object does not survive dump and reload.
+;; Therefore we have to initialize it at first usage.
+(defvar *REGEXP-PATTERN*
+ nil
+ "If this pattern matches, the string is a regexp.")
+
+(defun make-ordrule (match repl &key again)
+ "Create an ordrule object.
+MATCH may be a string, a char, or a POSIX regular expression.
+If it's a regexp, it's an extended one."
+ (or *REGEXP-PATTERN*
+ (setq *REGEXP-PATTERN* (regexp-compile "[][|(){}.*+^$?]")))
+ (cond ((characterp match)
+ (make-ordrule-char match repl :again again))
+ ((= (length match) 1)
+ (make-ordrule-char (char match 0) repl :again again))
+ ((regexp-exec *REGEXP-PATTERN* match)
+ (make-ordrule-regexp match repl :again again))
+ (t (make-ordrule-string match repl :again again))))
+
+
+;;;
+;;; (try-rule RULE SOURCE) => FINAL ; SOURCE-REST or <no values>
+;;;
+
+(defgeneric try-rule (ordrule source &key at-start)
+ (:documentation "Apply an ordrule to a source string.
+If the rule does not match, return nothing. If it matches, return two
+values: the 1st is the final prefix with the replacement
+string and the 2nd is the rest of SOURCE that's left after the matched
+text. If the rule's again flag is true, FINAL will be the empty string
+and the replacement will be at the start of SOURCE-REST.
+An ordrule is not allowed to turn a source completely into an empty string.
+If that would happen, a warning is output and nothing is returned.
+That situation would exist, if AT-START is true and both FINAL and
+SOURCE-REST would be empty.
+AT-START tells if we are at the start to process the source string."))
+
+(defmethod try-rule ((rule ordrule-char) source &key at-start)
+ (if (char= (char source 0) (match rule))
+ (maybe-again-maybe-no rule source at-start
+ (repl rule) (subseq source 1))
+ (values)))
+
+(defun maybe-again-maybe-no (rule source at-start repl source-rest)
+ (cond ((and at-start (string= repl "") (string= source-rest ""))
+ (warn "Would replace complete index key by empty string, ignoring ~S" rule)
+ (values source ""))
+ ((again rule)
+ (values "" (concatenate 'string repl source-rest)))
+ (t (values repl source-rest))))
+
+(defmethod try-rule ((rule ordrule-string) source &key at-start)
+ (let* ((match-string (match rule))
+ (match-length (length match-string)))
+ (cond ((> match-length (length source)) (values))
+ ((string= source match-string :end1 match-length)
+ (maybe-again-maybe-no rule source at-start
+ (repl rule) (subseq source match-length)))
+ (t (values)))))
+
+(defmethod try-rule ((rule ordrule-regexp) source &key at-start)
+ (if (and (only-at-start rule) (not at-start))
+ nil
+ (let ((match-regexp (multiple-value-list (regexp-exec (match rule) source))))
+ (if match-regexp
+ (maybe-again-maybe-no rule source at-start
+ (maybe-repl-subexpr (repl rule) (rest match-regexp) source)
+ (subseq source (match-end (first match-regexp))))
+ (values)))))
+
+;; A regexp-compile object does not survive dump and reload.
+;; Therefore we have to initialize it at first usage.
+(defvar *REPL-PATTERN*
+ nil
+ "Compiled regexp that matches a backpattern in a regexp replacement text.")
+
+;; We need to substitute all \x and & constructs in the replacement text by
+;; the respective subexpression from source's matches. They are
+;; located with a regexp in a loop and we collect in 'final-repl the
+;; strings in front of each \x and the actual subexpression.
+(defun maybe-repl-subexpr (repl source-matches source)
+ (or *REPL-PATTERN*
+ (setq *REPL-PATTERN* (regexp-compile "\\\\([1-9])|&" :extended t)))
+ (do* ((start 0 (match-end (first subexpr-match)))
+ (subexpr-match (multiple-value-list (regexp-exec *REPL-PATTERN* repl))
+ (multiple-value-list (regexp-exec *REPL-PATTERN* repl
+ :start start)))
+ (final-repl ""))
+ ((null subexpr-match)
+ ;; Don't forget to return the rest of the string, too. Its
+ ;; index is now in 'start.
+ (concatenate 'string final-repl (subseq repl start)))
+ ;; OK, need a subexpr replacement. First, we determine which subexpression
+ ;; this shall be: If it's "&", the second match subexpression will be nil,
+ ;; as the parenthesis did not match anything. Otherwise the 2nd match
+ ;; subexpr will be the digit. Then we get that subexpression from the
+ ;; source string. Finally, we add the 'repl string part in front of \x and
+ ;; the respective subexpression to 'final-repl and are ready to look for
+ ;; our next \x construct.
+ (let* ((subexpr-match-struct (second subexpr-match))
+ (subexpr (and subexpr-match-struct
+ (match-string repl subexpr-match-struct)))
+ (subexpr-repl (match-string source
+ (nth (if (null subexpr)
+ 0
+ (read-from-string subexpr))
+ source-matches))))
+ (setq final-repl
+ (concatenate 'string final-repl
+ (subseq repl 0 (match-start (first subexpr-match)))
+ subexpr-repl)))))
+
+
+;;;
+;;; (rule-first-char RULE) => char or :regexp
+;;;
+
+(defgeneric rule-first-char (rule)
+ (:documentation "Returns the first char of a rule match.
+This returns either the first char of a rule match, or :regexp
+if that first char is a regular expression. The is used to find the
+slot for a rule in a rule table."))
+
+(defmethod rule-first-char ((rule ordrule-char))
+ (match rule))
+
+(defmethod rule-first-char ((rule ordrule-string))
+ (char (match rule) 0))
+
+(defmethod rule-first-char ((rule ordrule-regexp))
+ (let* ((pattern (pattern rule))
+ (start-index (if (only-at-start rule) 1 0))
+ (first-char (char pattern start-index)))
+ (cond ((char= first-char #\\)
+ (char pattern (1+ start-index)))
+ ((find first-char "[]|(){}.*+?")
+ :regexp)
+ (t first-char))))
+
+
+
+;;;; ============================================================
+;;;;
+;;;; ORDRULE TABLES
+;;;;
+
+;; An ordrule table is a hash table of ordrule lists, indexed by the first
+;; character of the rule. The key :regexp is the entry for rules that start
+;; with a regexp pattern.
+
+(defclass ordrule-table ()
+ ((table :initarg :table :reader table))
+ (:documentation
+ "A collection of ordrules."))
+
+(defmethod print-object ((obj ordrule-table) stream)
+ "Print an ordrule table."
+ (format stream "#<ordrule table with ~A entries>" (hash-table-count (table obj))))
+
+(defun make-ordrule-table ()
+ "Create an ordrule-table object."
+ (make-instance 'ordrule-table :table (make-hash-table :size 256)))
+
+(defun add-rule (rule-table rule)
+ "Add a rule to an ordrule table."
+ (let* ((first-char (rule-first-char rule))
+ (first-char-rules (gethash first-char (table rule-table))))
+ (if first-char-rules
+ (nconc first-char-rules (list rule))
+ (setf (gethash first-char (table rule-table)) (list rule)))))
+
+;; XXX This is the place where we might want to sort rules according to their
+;; length. But then we should also cache that sort result, because this
+;; function is called for each character in the index!
+;;
+;; XXX Maybe we should try a cache anyhow, to save appends, too? Need to
+;; measure that.
+(defun get-rules (rule-table source-start)
+ (append (gethash source-start (table rule-table))
+ (gethash :regexp (table rule-table))))
+
+(defun apply-rules-once (rule-table source at-start)
+ "Apply rules from rule-table once to source.
+Returns two values: (1) prefix that has been processed, (2) suffix that has
+still to be processed."
+ (dolist (rule (get-rules rule-table (char source 0))
+ (values))
+ (multiple-value-bind (prefix suffix)
+ (try-rule rule source :at-start at-start)
+ (if (stringp prefix)
+ (return (values prefix suffix))))))
+
+(defun apply-rules (rule-table source &optional (at-start t))
+ "Apply rules from rule-table to source."
+ (multiple-value-bind (prefix suffix)
+ (apply-rules-once rule-table source at-start)
+ (log-rule (format nil "apply rules once: '~A' => '~A' '~A'~%"
+ source prefix suffix))
+ (cond ((null prefix)
+ (if (= (length source) 1)
+ source
+ (concatenate 'string (subseq source 0 1)
+ (apply-rules rule-table (subseq source 1) nil))))
+ ((string= suffix "") prefix)
+ (t (concatenate 'string prefix
+ (apply-rules rule-table suffix nil))))))
+
+
+
+;;;; ============================================================
+;;;;
+;;;; LEGACY (C PLUGIN) INTERFACE
+;;;;
+
+;; The following code realizes the interface of xindy 2.3, even though we
+;; could now use real Lisp objects. This is a transient phase only.
+
+(defvar *merge-rule-table*
+ (make-ordrule-table))
+
+;; By default, we have runs 0..7.
+(defvar *sort-rule-tables*
+ (let ((tables (make-array '(8) :element-type 'ordrule-table)))
+ (dotimes (i 8)
+ (setf (aref tables i) (make-ordrule-table)))
+ tables))
+
+(defun initialize (num)
+ (setq *sort-rule-tables* (make-array (list num) :element-type 'ordrule-table))
+ (dotimes (i num)
+ (setf (aref *sort-rule-tables* i) (make-ordrule-table))))
+
+(defun add-keyword-rule (rule-table rule repl again ruletype)
+ (let* ((again (if (= again 1) t nil))
+ (rule-obj (ecase ruletype
+ (0 (make-ordrule rule repl :again again))
+ (1 (make-ordrule-string rule repl :again again))
+ (2 (make-ordrule-regexp rule repl :again again :extended nil))
+ (3 (make-ordrule-regexp rule repl :again again))
+ (4 (make-ordrule-char rule repl :again again)))))
+ (add-rule rule-table rule-obj)))
+
+(defun add-keyword-merge-rule (rule repl again ruletype)
+ (let* ((rule-list (add-keyword-rule *merge-rule-table* rule
+ repl again ruletype))
+ (message (format nil "Add merge rule: ~S~%" (first (last rule-list)))))
+ (log-rule message)))
+
+(defun add-keyword-sort-rule (run rule repl again ruletype)
+ (let* ((rule-list (add-keyword-rule (aref *sort-rule-tables* run)
+ rule repl again ruletype))
+ (message (format nil "Add sort rule to run ~A: ~S~%"
+ run (first (last rule-list)))))
+ (log-rule message)))
+
+(defun gen-keyword-mergekey (key)
+ (let ((result (apply-rules *merge-rule-table* key)))
+ (log-rule (format nil "Final merge-rule result: '~A' -> '~A'~%"
+ key result))
+ result))
+
+(defun gen-keyword-sortkey (key run)
+ (let ((result (apply-rules (aref *sort-rule-tables* run) key)))
+ (log-rule (format nil "Final sort-rule result, run ~A: '~A' -> '~A'~%"
+ run key result))
+ result))
+
+
+;;;
+;;; Logging
+;;;
+
+(defvar *message-logging*
+ nil
+ "Boolean: Shall rule replacement be logged?")
+
+(defvar *message-buffer*
+ ""
+ "String with the log message.
+This is remaining cruft from the C plugin that could not use Lisp
+output streams itself.")
+
+(defvar *message-buffer-ptr*
+ 0
+ "Current position in *message-buffer*.
+This is remaining cruft from the C plugin that could not use Lisp
+output streams itself.")
+
+(defun log-rule (message)
+ (and *message-logging*
+ (if (= (incf *message-buffer-ptr*) 1)
+ (setq *message-buffer* message)
+ (setq *message-buffer* (concatenate 'string *message-buffer*
+ message)))
+ ))
+
+
+
+;;;======================================================================
+;;
+;; $Log$
diff --git a/Build/source/utils/xindy/xindy-src/src/version.lsp b/Build/source/utils/xindy/xindy-src/src/version.lsp
new file mode 100644
index 00000000000..e7b219bba94
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/src/version.lsp
@@ -0,0 +1,13 @@
+;; $Id$ -*- Lisp -*-
+;; ------------------------------------------------------------
+;; version identification of xindy kernel
+;; src/version.lsp.
+
+(lisp:provide "version")
+
+(defpackage :xindy-version
+ (:export *xindy-kernel-version*))
+
+(in-package :xindy-version)
+
+(defconstant *xindy-kernel-version* "3.0")
diff --git a/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.am b/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.am
new file mode 100644
index 00000000000..fcdfadc41d1
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.am
@@ -0,0 +1,32 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+AM_CFLAGS = $(WARNING_CFLAGS)
+
+bin_PROGRAMS = tex2xindy
+
+tex2xindy_SOURCES = tex2xindy.l
+
+man_MANS = tex2xindy.1
+
+EXTRA_DIST = $(man_MANS)
+
+## CLEANFILES = tex2xindy.c
diff --git a/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.in b/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.in
new file mode 100644
index 00000000000..779e7f301d2
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/tex2xindy/Makefile.in
@@ -0,0 +1,688 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = tex2xindy$(EXEEXT)
+subdir = xindy-src/tex2xindy
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_tex2xindy_OBJECTS = tex2xindy.$(OBJEXT)
+tex2xindy_OBJECTS = $(am_tex2xindy_OBJECTS)
+tex2xindy_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/tex2xindy.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+AM_V_LEX = $(am__v_LEX_@AM_V@)
+am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
+am__v_LEX_0 = @echo " LEX " $@;
+am__v_LEX_1 =
+YLWRAP = $(top_srcdir)/../../build-aux/ylwrap
+SOURCES = $(tex2xindy_SOURCES)
+DIST_SOURCES = $(tex2xindy_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+ $(top_srcdir)/../../build-aux/depcomp \
+ $(top_srcdir)/../../build-aux/ylwrap tex2xindy.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WARNING_CFLAGS)
+tex2xindy_SOURCES = tex2xindy.l
+man_MANS = tex2xindy.1
+EXTRA_DIST = $(man_MANS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .l .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/tex2xindy/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/tex2xindy/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+tex2xindy$(EXEEXT): $(tex2xindy_OBJECTS) $(tex2xindy_DEPENDENCIES) $(EXTRA_tex2xindy_DEPENDENCIES)
+ @rm -f tex2xindy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tex2xindy_OBJECTS) $(tex2xindy_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tex2xindy.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.l.c:
+ $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -rm -f tex2xindy.c
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f ./$(DEPDIR)/tex2xindy.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f ./$(DEPDIR)/tex2xindy.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+ distclean distclean-compile distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-binPROGRAMS install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.1 b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.1
new file mode 100644
index 00000000000..2a26a7ae265
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.1
@@ -0,0 +1,213 @@
+.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "tex2xindy 1"
+.TH tex2xindy 1 "2010-05-10" "Version 1.24" "xindy"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+tex2xindy \- a preprocessor of the xindy index processor
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\& tex2xindy [\-o] [attr_file]
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBtex2xindy\fR transforms a LaTeX index file \f(CW\*(C`.idx\*(C'\fR (or an \f(CW\*(C`.aux\*(C'\fR
+file) into a \fBxindy\fR raw index file.
+.PP
+It is a filter that reads from \fIstdin\fR a file in the input format of
+LaTeX's raw index file, i.e., with \f(CW\*(C`\eindexentry\*(C'\fR tags. It outputs on
+\&\fIstdout\fR a \fBxindy\fR raw index file, i.e., with \f(CW\*(C`indexentry\*(C'\fR clauses.
+.PP
+If the option \fB\-o\fR is not specified, \fBtex2xindy\fR handles ^^\-notation
+of TeX and outputs the octet that is represented: \f(CW\*(C`^^ab\*(C'\fR in the input
+gets output as the octet 0xab. If \f(CW\*(C`^^^^abcd\*(C'\fR or \f(CW\*(C`^^^^^^^^abcdefab\*(C'\fR
+are detected, they are output as is.
+.PP
+If the option \fB\-o\fR is specified, \fBtex2xindy\fR operates in \fIOmega
+mode\fR and handles its ^^\-notation: Then \f(CW\*(C`^^ab\*(C'\fR, \f(CW\*(C`^^^^abcd\*(C'\fR, and
+\&\f(CW\*(C`^^^^^^^^abcdefab\*(C'\fR represent Unicode characters with code points
+0xab, 0xabcd, and 0xabcdefab respectively. They are output in \s-1UTF\-8\s0
+encoding.
+.PP
+If the optional argument \fIattr_file\fR is specified, \fBtex2xindy\fR
+writes all index key attributes into this file.
+.SH "DEFICITS"
+.IX Header "DEFICITS"
+This program was written since it was not easily possible to extract
+the parser from the old makeindex system. Therefore it does not find
+all errors in the input as the \fImakeindex\fR\|(1) version.
+.PP
+Additionally it uses only the default input specifiers of
+\&\fImakeindex\fR\|(1). If other input specifiers (cf. manual page of
+\&\fImakeindex\fR\|(1)) are needed, the input specifiers (starting from the
+pattern \f(CW\*(C`KEYWORD\*(C'\fR, see below) must be changed and the program must be
+recompiled.
+.PP
+The particular missing feature is configuration of the quote and the
+actual characters, maybe also the escape, subitem (level), and encap
+characters. Argument and range delimiters seem to be less of a problem.
+.PP
+In fact, input markup handling (and thus \fBtex2xindy\fR) should be
+incorporated into the \fBxindy\fR kernel, to be able to specify
+configuration in xindy style files.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fItexindy\fR\|(1),
+\&\fIxindy\fR\|(1),
+\&\fImakeindex\fR\|(1)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Roger Kehr, Institut fuer Theoretische Informatik, \s-1TU\s0 Darmstadt
+.SH "COPYRIGHT AND LICENSE"
+.IX Header "COPYRIGHT AND LICENSE"
+Copyright (c) 1996,1997 Roger Kehr.
+Copyright (c) 2006 Joachim Schrod.
+.PP
+This program is free software; you can redistribute it and/or modify
+it under the terms of the \s-1GNU\s0 General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at
+your option) any later version.
+.PP
+This program is distributed in the hope that it will be useful, but
+\&\s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of
+\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0
+General Public License for more details.
+.PP
+You should have received a copy of the \s-1GNU\s0 General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, \s-1MA\s0 02139, \s-1USA\s0.
diff --git a/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.c b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.c
new file mode 100644
index 00000000000..524a3ceff32
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.c
@@ -0,0 +1,2481 @@
+#line 95 "tex2xindy.l"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef WIN32
+# include <fcntl.h>
+# ifndef __MINGW32__ /* this should be W32TeX */
+# include <kpathsea/getopt.h>
+# define YY_NO_UNISTD_H 1
+# define __STDC_VERSION__ 199901L
+# endif
+#else
+# include <unistd.h>
+#endif
+
+
+
+#line 18 "tex2xindy.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE yyrestart(yyin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void yyrestart (FILE *input_file );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
+void yy_delete_buffer (YY_BUFFER_STATE b );
+void yy_flush_buffer (YY_BUFFER_STATE b );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
+
+void *yyalloc (yy_size_t );
+void *yyrealloc (void *,yy_size_t );
+void yyfree (void * );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ yyleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 36
+#define YY_END_OF_BUFFER 37
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[116] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 37, 35,
+ 34, 33, 35, 35, 32, 32, 31, 8, 32, 7,
+ 12, 32, 32, 10, 6, 11, 9, 13, 34, 35,
+ 24, 25, 19, 19, 19, 19, 15, 16, 19, 17,
+ 14, 18, 20, 21, 22, 23, 27, 27, 27, 27,
+ 26, 5, 4, 3, 0, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 2, 0, 30, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 4, 5, 1, 1, 1, 1, 1, 6,
+ 7, 1, 1, 1, 1, 1, 1, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 9, 1, 1,
+ 1, 1, 1, 10, 8, 8, 8, 8, 8, 8,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 11, 1, 12, 1, 1, 13, 8, 8, 14,
+
+ 15, 8, 16, 1, 17, 1, 1, 18, 1, 19,
+ 20, 1, 1, 21, 22, 23, 1, 1, 1, 24,
+ 25, 1, 26, 27, 28, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[29] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 1, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int16_t yy_base[123] =
+ { 0,
+ 0, 4, 14, 41, 0, 4, 68, 93, 116, 0,
+ 143, 170, 8, 9, 1, 2, 197, 224, 174, 263,
+ 263, 263, 165, 15, 263, 263, 263, 263, 164, 263,
+ 263, 161, 153, 263, 263, 263, 263, 263, 31, 159,
+ 263, 263, 263, 263, 263, 160, 263, 263, 157, 263,
+ 263, 263, 263, 263, 263, 263, 263, 263, 158, 155,
+ 263, 263, 263, 263, 141, 136, 141, 36, 263, 132,
+ 133, 41, 129, 112, 117, 263, 119, 102, 99, 50,
+ 109, 102, 99, 67, 101, 81, 80, 70, 85, 64,
+ 64, 263, 78, 61, 53, 92, 42, 35, 95, 36,
+
+ 46, 103, 26, 64, 263, 114, 14, 122, 75, 125,
+ 86, 263, 143, 263, 263, 252, 254, 256, 258, 260,
+ 20, 19
+ } ;
+
+static yyconst flex_int16_t yy_def[123] =
+ { 0,
+ 116, 116, 117, 117, 4, 4, 116, 116, 4, 9,
+ 118, 118, 9, 9, 9, 9, 119, 119, 115, 115,
+ 115, 115, 120, 115, 115, 115, 115, 115, 120, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 120, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 120, 115,
+ 115, 115, 115, 115, 115, 115, 121, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 122, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 0, 115, 115, 115, 115, 115,
+ 115, 115
+ } ;
+
+static yyconst flex_int16_t yy_nxt[292] =
+ { 0,
+ 115, 21, 22, 37, 23, 21, 22, 37, 23, 38,
+ 24, 53, 53, 38, 24, 26, 27, 28, 29, 64,
+ 80, 72, 30, 31, 32, 33, 54, 54, 56, 56,
+ 65, 66, 68, 54, 54, 55, 55, 68, 109, 34,
+ 35, 36, 26, 27, 28, 29, 107, 104, 76, 30,
+ 31, 32, 33, 76, 76, 76, 69, 84, 103, 101,
+ 100, 69, 84, 84, 84, 104, 34, 35, 36, 39,
+ 22, 105, 23, 98, 88, 97, 111, 92, 40, 88,
+ 88, 88, 92, 92, 92, 96, 95, 111, 94, 105,
+ 96, 96, 96, 41, 39, 22, 93, 23, 91, 99,
+
+ 112, 90, 102, 40, 99, 99, 99, 102, 102, 102,
+ 106, 112, 89, 87, 86, 106, 106, 106, 41, 25,
+ 85, 108, 83, 82, 25, 25, 108, 108, 108, 110,
+ 81, 79, 113, 78, 110, 110, 110, 113, 113, 113,
+ 77, 25, 25, 42, 44, 45, 75, 46, 47, 48,
+ 114, 74, 73, 49, 71, 114, 114, 114, 70, 64,
+ 63, 64, 63, 64, 67, 64, 63, 63, 50, 51,
+ 52, 44, 45, 115, 46, 47, 48, 115, 115, 115,
+ 49, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 50, 51, 52, 58, 22,
+
+ 115, 59, 115, 115, 115, 115, 115, 60, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 61, 58, 22, 115, 59, 115,
+ 115, 115, 115, 115, 60, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 61, 20, 20, 25, 25, 43, 43, 57, 57,
+ 62, 62, 19, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115
+
+ } ;
+
+static yyconst flex_int16_t yy_chk[292] =
+ { 0,
+ 0, 1, 1, 5, 1, 2, 2, 6, 2, 5,
+ 1, 13, 14, 6, 2, 3, 3, 3, 3, 24,
+ 122, 121, 3, 3, 3, 3, 15, 16, 15, 16,
+ 24, 24, 39, 13, 14, 13, 14, 68, 107, 3,
+ 3, 3, 4, 4, 4, 4, 103, 101, 72, 4,
+ 4, 4, 4, 72, 72, 72, 39, 80, 100, 98,
+ 97, 68, 80, 80, 80, 104, 4, 4, 4, 7,
+ 7, 101, 7, 95, 84, 94, 109, 88, 7, 84,
+ 84, 84, 88, 88, 88, 93, 91, 111, 90, 104,
+ 93, 93, 93, 7, 8, 8, 89, 8, 87, 96,
+
+ 109, 86, 99, 8, 96, 96, 96, 99, 99, 99,
+ 102, 111, 85, 83, 82, 102, 102, 102, 8, 9,
+ 81, 106, 79, 78, 9, 9, 106, 106, 106, 108,
+ 77, 75, 110, 74, 108, 108, 108, 110, 110, 110,
+ 73, 9, 9, 9, 11, 11, 71, 11, 11, 11,
+ 113, 70, 67, 11, 66, 113, 113, 113, 65, 60,
+ 59, 49, 46, 40, 33, 32, 29, 23, 11, 11,
+ 11, 12, 12, 19, 12, 12, 12, 0, 0, 0,
+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 12, 12, 17, 17,
+
+ 0, 17, 0, 0, 0, 0, 0, 17, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 18, 18, 0, 18, 0,
+ 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 18, 116, 116, 117, 117, 118, 118, 119, 119,
+ 120, 120, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115
+
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *yytext;
+#line 1 "tex2xindy.l"
+#line 4 "tex2xindy.l"
+ /* $Id: tex2xindy.l,v 1.24 2010/05/10 23:02:17 jschrod Exp $
+ ============================================================
+ (history at end)
+
+=head1 NAME
+
+tex2xindy - a preprocessor of the xindy index processor
+
+=head1 SYNOPSIS
+
+ tex2xindy [-o] [attr_file]
+
+=head1 DESCRIPTION
+
+B<tex2xindy> transforms a LaTeX index file C<.idx> (or an C<.aux>
+file) into a B<xindy> raw index file.
+
+It is a filter that reads from F<stdin> a file in the input format of
+LaTeX's raw index file, i.e., with C<\indexentry> tags. It outputs on
+F<stdout> a B<xindy> raw index file, i.e., with C<indexentry> clauses.
+
+If the option B<-o> is not specified, B<tex2xindy> handles ^^-notation
+of TeX and outputs the octet that is represented: C<^^ab> in the input
+gets output as the octet 0xab. If C<^^^^abcd> or C<^^^^^^^^abcdefab>
+are detected, they are output as is.
+
+If the option B<-o> is specified, B<tex2xindy> operates in I<Omega
+mode> and handles its ^^-notation: Then C<^^ab>, C<^^^^abcd>, and
+C<^^^^^^^^abcdefab> represent Unicode characters with code points
+0xab, 0xabcd, and 0xabcdefab respectively. They are output in UTF-8
+encoding.
+
+If the optional argument F<attr_file> is specified, B<tex2xindy>
+writes all index key attributes into this file.
+
+
+=head1 DEFICITS
+
+This program was written since it was not easily possible to extract
+the parser from the old makeindex system. Therefore it does not find
+all errors in the input as the makeindex(1) version.
+
+Additionally it uses only the default input specifiers of
+makeindex(1). If other input specifiers (cf. manual page of
+makeindex(1)) are needed, the input specifiers (starting from the
+pattern C<KEYWORD>, see below) must be changed and the program must be
+recompiled.
+
+The particular missing feature is configuration of the quote and the
+actual characters, maybe also the escape, subitem (level), and encap
+characters. Argument and range delimiters seem to be less of a problem.
+
+In fact, input markup handling (and thus B<tex2xindy>) should be
+incorporated into the B<xindy> kernel, to be able to specify
+configuration in xindy style files.
+
+=head1 SEE ALSO
+
+texindy(1),
+xindy(1),
+makeindex(1)
+
+=head1 AUTHOR
+
+Roger Kehr, Institut fuer Theoretische Informatik, TU Darmstadt
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 1996,1997 Roger Kehr.
+Copyright (c) 2006 Joachim Schrod.
+
+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 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, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+=cut
+
+*/
+
+#line 110 "tex2xindy.l"
+#define QUOTE_ECHO qs(yytext)
+
+FILE* attrfd = NULL;
+
+static int lineno = 1;
+static int braces = 0;
+static int xref_mode = 0;
+static int glos_mode = 0;
+static int errors = 0;
+static int omega_mode = 0;
+
+#define multiple_err \
+ { \
+ fprintf(stderr, "line %d: multiple %s's\n", lineno, yytext); \
+ errors++; \
+ }
+
+#define NO_RANGE 0
+#define OPEN_RANGE 1
+#define CLOSE_RANGE 2
+
+int range = NO_RANGE;
+
+/* This function quotes a character, if necessary. */
+
+static void qc( char ch ) {
+ switch (ch) {
+ case '\\' :
+ case '"' :
+ putchar( '\\' );
+ break;
+ }
+ putchar(ch);
+}
+
+/* Quote an entire string. */
+
+static void qs( char* str ) {
+ while ( *str ) {
+ qc( *str++ );
+ }
+}
+
+/*
+ Output an Omega character, ^^-notation in yytext, in UTF-8 encoding.
+ The parameter gets passed the amount of hex digits in the ^^-notation.
+ In front of the hex digits are the same amount of ^ chars.
+*/
+static void omega_output_utf8 ( int width )
+{
+ unsigned long int c = strtoul (yytext+width, NULL, 16);
+ if (c < 0x80) {
+ putchar (c);
+ }
+ else if (c < 0x800) {
+ putchar (0xC0 | (c>>6));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x10000) {
+ putchar (0xE0 | (c>>12));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x200000) {
+ putchar (0xF0 | (c>>18));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x4000000) {
+ putchar (0xF8 | (c>>24));
+ putchar (0x80 | (c>>18 & 0x3F));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x80000000) {
+ putchar (0xFC | (c>>30));
+ putchar (0x80 | (c>>24 & 0x3F));
+ putchar (0x80 | (c>>18 & 0x3F));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else { /* out of range, output U+FFFD REPLACEMENT CHARACTER */
+ fputs("\xef\xbf\xbd",stdout);
+ fprintf (stderr, "line %d: character %#lx not in UTF-8 range\n",
+ lineno, c);
+ }
+}
+
+
+#line 751 "tex2xindy.c"
+
+#define INITIAL 0
+#define key 1
+#define print 2
+#define skip2location 3
+#define location 4
+#define encap 5
+#define xref 6
+#define is 7
+#define skiplocation 8
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *yyget_in (void );
+
+void yyset_in (FILE * in_str );
+
+FILE *yyget_out (void );
+
+void yyset_out (FILE * out_str );
+
+int yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ int n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 222 "tex2xindy.l"
+
+
+#line 944 "tex2xindy.c"
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_load_buffer_state( );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of yytext. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 116 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_current_state != 115 );
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = (yy_hold_char);
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 224 "tex2xindy.l"
+{
+ printf("(indexentry :tkey ((\"");
+ xref_mode = 0;
+ glos_mode = 0;
+ BEGIN(key);
+ }
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 231 "tex2xindy.l"
+{
+ printf("(indexentry :tkey ((\"");
+ xref_mode = 0;
+ glos_mode = 1;
+ BEGIN(key);
+ }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 238 "tex2xindy.l"
+{ QUOTE_ECHO; }
+ YY_BREAK
+case 4:
+/* rule 4 can match eol */
+YY_RULE_SETUP
+#line 239 "tex2xindy.l"
+{ qc(yytext[1]); lineno++; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 240 "tex2xindy.l"
+{ qc(yytext[1]); }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 241 "tex2xindy.l"
+{
+ printf("\")) :attr \"");
+ range = NO_RANGE;
+ BEGIN(encap);
+ }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 246 "tex2xindy.l"
+{
+ if ( glos_mode ) {
+ printf("\")) :attr \"is\" :xref (\"");
+ range = NO_RANGE;
+ if (attrfd) fprintf(attrfd, "\txref\n");
+ BEGIN(is);
+ } else {
+ ECHO;
+ }
+ }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 256 "tex2xindy.l"
+{ printf("\") (\""); }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 257 "tex2xindy.l"
+{ printf("\") (\""); BEGIN(key); }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 258 "tex2xindy.l"
+{ ECHO; braces++; }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 259 "tex2xindy.l"
+{
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ printf("\"))");
+ BEGIN(skip2location);
+ }
+ }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 269 "tex2xindy.l"
+{ printf("\" \""); BEGIN(print); }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 270 "tex2xindy.l"
+{ multiple_err; }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 272 "tex2xindy.l"
+{ multiple_err; }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 273 "tex2xindy.l"
+{ range = OPEN_RANGE; }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 274 "tex2xindy.l"
+{ range = CLOSE_RANGE; }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 275 "tex2xindy.l"
+{ /* close :attr "... */
+ printf("\" :xref (\"");
+ if (attrfd) fprintf(attrfd, "\txref\n");
+ braces++;
+ BEGIN(xref);
+ }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 281 "tex2xindy.l"
+{
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ putchar('"');
+ if (attrfd) fprintf(attrfd, "\tlocref\n");
+ switch (range) {
+ case OPEN_RANGE:
+ printf(" :open-range");
+ break;
+ case CLOSE_RANGE:
+ printf(" :close-range");
+ break;
+ }
+ BEGIN(skip2location);
+ }
+ }
+ YY_BREAK
+case 19:
+/* rule 19 can match eol */
+YY_RULE_SETUP
+#line 299 "tex2xindy.l"
+{
+ QUOTE_ECHO;
+ if (attrfd) fwrite(yytext, sizeof(char), 1, attrfd);
+ if (*yytext == '\n') lineno++;
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 307 "tex2xindy.l"
+{ printf("\" \""); }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 308 "tex2xindy.l"
+{ ECHO; braces++; }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 309 "tex2xindy.l"
+{
+ if ( braces > 1 ) {
+ ECHO;
+ braces--;
+ } else if ( braces == 1 ) {
+ braces--;
+ } else {
+ printf("\")");
+ xref_mode = 1;
+ BEGIN(skip2location);
+ }
+ }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 321 "tex2xindy.l"
+{
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ printf("\")");
+ xref_mode = 1;
+ BEGIN(skip2location);
+ }
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 332 "tex2xindy.l"
+{
+ if (xref_mode) {
+ BEGIN(skiplocation);
+ } else {
+ printf(" :locref \"");
+ BEGIN(location);
+ }
+ }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 340 "tex2xindy.l"
+{ printf("\")\n"); BEGIN(0); }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 342 "tex2xindy.l"
+{ printf(")\n"); BEGIN(0); }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 343 "tex2xindy.l"
+{ ; }
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 345 "tex2xindy.l"
+{
+ if ( omega_mode ) {
+ omega_output_utf8(2);
+ } else {
+ unput( strtol(yytext+2, NULL, 16) );
+ }
+ }
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 352 "tex2xindy.l"
+{
+ if ( omega_mode ) {
+ omega_output_utf8(4);
+ } else {
+ ECHO;
+ }
+ }
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 359 "tex2xindy.l"
+{
+ if ( omega_mode ) {
+ omega_output_utf8(8);
+ } else {
+ ECHO;
+ }
+ }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 367 "tex2xindy.l"
+{ ECHO; lineno++; }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 368 "tex2xindy.l"
+{ QUOTE_ECHO; }
+ YY_BREAK
+case 33:
+/* rule 33 can match eol */
+YY_RULE_SETUP
+#line 370 "tex2xindy.l"
+{ lineno++; }
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 371 "tex2xindy.l"
+{ ; }
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 372 "tex2xindy.l"
+{
+ fprintf(stderr,
+ "Encountered unexpected char '%c' on line %d\n",
+ yytext[0], lineno);
+ }
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 378 "tex2xindy.l"
+ECHO;
+ YY_BREAK
+#line 1313 "tex2xindy.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(key):
+case YY_STATE_EOF(print):
+case YY_STATE_EOF(skip2location):
+case YY_STATE_EOF(location):
+case YY_STATE_EOF(encap):
+case YY_STATE_EOF(xref):
+case YY_STATE_EOF(is):
+case YY_STATE_EOF(skiplocation):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( yywrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of yylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart(yyin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 116 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+ register char *yy_cp = (yy_c_buf_p);
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 116 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 115);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up yytext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart(yyin );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve yytext */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+ yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ yy_load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void yy_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ yy_init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ *
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf );
+
+ yyfree((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ yy_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ yy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack();
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void yypop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ yy_switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = (yy_hold_char); \
+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int yyget_lineno (void)
+{
+
+ return yylineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *yyget_in (void)
+{
+ return yyin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *yyget_out (void)
+{
+ return yyout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int yyget_leng (void)
+{
+ return yyleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *yyget_text (void)
+{
+ return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void yyset_lineno (int line_number )
+{
+
+ yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str )
+{
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str )
+{
+ yyout = out_str ;
+}
+
+int yyget_debug (void)
+{
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug )
+{
+ yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ yyfree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void yyfree (void * ptr )
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 378 "tex2xindy.l"
+
+
+
+static void usage (void)
+{
+ fputs("This is tex2xindy, $Revision: 1.24 $.\n", stderr);
+ fputs("usage: tex2xindy [-o] [attr_file]\n", stderr);
+ exit (1);
+}
+
+int
+main(int argc, char* argv[])
+{
+ int option;
+
+#ifdef WIN32
+ setmode (fileno(stdout), _O_BINARY);
+#else
+ extern char *optarg;
+ extern int optind, optopt;
+#endif
+
+ while ( (option=getopt(argc, argv, ":o")) != -1 ) {
+ switch (option) {
+ case 'o':
+ omega_mode = 1;
+ break;
+ case '?':
+ default:
+ fprintf(stderr, "Unrecognized option: -%c\n", optopt);
+ usage();
+ /* NOTREACHED */
+ }
+ }
+
+ /* More than one argument left? */
+ if ( optind < argc - 1 ) usage();
+
+ /* attr_file specified? */
+ if ( optind == argc - 1 ) {
+ fprintf(stderr, "Writing attribute names to file \"%s\".\n",
+ argv[optind]);
+ if ( (attrfd = fopen(argv[optind], "wb")) == NULL ) {
+ perror (argv[optind]);
+ exit (1);
+ }
+ }
+
+ yylex();
+ if (attrfd) fclose(attrfd);
+ return (errors > 0); /* 1 or 0 */
+}
+
+
+/*
+ * Define dummy yywrap so we no longer depend on `libfl.a'.
+ */
+int yywrap (void)
+{
+ return 1;
+}
+
+
+/* ============================================================
+
+ $Log: tex2xindy.l,v $
+ Revision 1.24 2010/05/10 23:02:17 jschrod
+ Use ANSI C function definitions. (Patch from peb.)
+
+ Revision 1.23 2009/12/03 00:42:14 jschrod
+ Define internal functions as static to silence gcc warnings.
+
+ Revision 1.22 2009/12/03 00:36:09 jschrod
+ Define yywrap(), to be independent from libfl.
+
+ Revision 1.21 2006/07/30 09:44:04 jschrod
+ While quote is not output, escape+quote *is* output.
+
+ Revision 1.20 2006/07/18 21:40:45 jschrod
+ Add parenthesis as recommended by gcc -Wall.
+ Use ECHO instead of QUOTE_ECHO where quoting will not be needed.
+ Code cleanup: sanitize braces and indentation.
+
+ Revision 1.19 2006/07/18 21:26:34 jschrod
+ Add man page as POD to tex2xindy source.
+ Add support for ^^-notation, both in TeX and in new Omega mode.
+ Add usage message and proper option parsing.
+
+ Revision 1.18 2006/02/21 12:12:05 jschrod
+ Don't output escape or quote characters.
+
+ Revision 1.17 2006/02/21 02:05:00 jschrod
+ Quote really quotes the next char, now.
+
+ Revision 1.16 2005/06/27 20:49:06 jschrod
+ Keywords may be inmidst a line, as Jörg Sommer showed.
+ "." rule merging did not work for attributes, and for skiplocation.
+ Output error message if we come across chars outside our FSA.
+
+ Revision 1.15 2005/06/14 16:22:08 jschrod
+ Fold in changes from Thomas Henlich, as of 2000-02-14:
+ Paranoia fix: recognize KEYWORD only in INITIAL start condition.
+ Recognize \n and count lines (multiline entries do exist!).
+ Merged "." rules.
+ Fixed error messages (multiple ...).
+
+ Revision 1.14 2004/10/05 21:10:48 jschrod
+ Handles quote character correctly (bug ticket 1006128).
+ Test case: german-sty.
+
+ Revision 1.13 2002/01/29 13:32:58 thenlich
+ Fixed bug in crossref-to-subitem bugfix. The original one proposed by Roger Kehr
+ was right, only I copied it wrongly (shame on me). Thanks to Torsten Bronger
+ for pointing it out to me.
+
+ Revision 1.12 1999/10/13 08:06:44 kehr
+ Changed revision number message back to RCS-tag. No functional changes.
+
+ Revision 1.11 1999/10/13 08:05:10 kehr
+ Merged bugfix from Thomas Henlich with my own modifications.
+
+ 1.8 Fixed minor quoting bugs (for increased makeindex compatibility).
+ 1999-07-28 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+ Fixed crossref to subitem.
+ 1999-09-23 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+
+ 1.7 Fixed a bug concerning writing to and closing non-existing file (stat)
+ Fixed a bug concerning quoting the " character.
+ Enhancement for processing glossary files.
+ 1999-06-14 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+
+ Revision 1.10 1999/09/23 06:53:32 kehr
+ Fixed wrong raw index generation for cross-ref keywords.
+
+ Revision 1.9 1999/04/27 09:01:17 kehr
+ Defined a clean exit code as suggested by Klaus Guntermann
+ <guntermann@iti.informatik.tu-darmstadt.de>.
+
+ Revision 1.8 1999/04/27 08:57:48 kehr
+ Added quoting patch sent by Thomas Henlich <thenlich@Rcs1.urz.tu-dresden.de>
+
+ Revision 1.7 1999/04/27 08:56:59 kehr
+ Another checkin.
+
+ Revision 1.6 1997/02/13 14:42:50 kehr
+ Minor changes.
+
+ Revision 1.5 1997/01/21 16:44:36 kehr
+ Bugfix: State <print> was not changed back to <key> if {LEVEL} was found.
+
+ Revision 1.4 1997/01/17 16:30:37 kehr
+ Rewrote makeindex4 and heavily modified tex2xindy.
+
+ Revision 1.3 1996/07/19 17:15:18 kehr
+ Made this program comaptible with lex by correctly enclosing all
+ actions--stupid bug, 'cause lex didn't complain and flex did some
+ wonderful matching of all the actions such that no error was
+ discovered.
+
+ Revision 1.2 1996/07/11 14:16:55 kehr
+ Complete Major checkin before changing the letter-groups.
+
+ Revision 1.1 1996/06/24 08:53:57 kehr
+ Initial checkin of the Makefile, README and tex2xindy.
+*/
+
diff --git a/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.l b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.l
new file mode 100644
index 00000000000..edb6ea41be3
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/tex2xindy/tex2xindy.l
@@ -0,0 +1,541 @@
+%option never-interactive
+
+%{
+ /* $Id: tex2xindy.l,v 1.24 2010/05/10 23:02:17 jschrod Exp $
+ ============================================================
+ (history at end)
+
+=head1 NAME
+
+tex2xindy - a preprocessor of the xindy index processor
+
+=head1 SYNOPSIS
+
+ tex2xindy [-o] [attr_file]
+
+=head1 DESCRIPTION
+
+B<tex2xindy> transforms a LaTeX index file C<.idx> (or an C<.aux>
+file) into a B<xindy> raw index file.
+
+It is a filter that reads from F<stdin> a file in the input format of
+LaTeX's raw index file, i.e., with C<\indexentry> tags. It outputs on
+F<stdout> a B<xindy> raw index file, i.e., with C<indexentry> clauses.
+
+If the option B<-o> is not specified, B<tex2xindy> handles ^^-notation
+of TeX and outputs the octet that is represented: C<^^ab> in the input
+gets output as the octet 0xab. If C<^^^^abcd> or C<^^^^^^^^abcdefab>
+are detected, they are output as is.
+
+If the option B<-o> is specified, B<tex2xindy> operates in I<Omega
+mode> and handles its ^^-notation: Then C<^^ab>, C<^^^^abcd>, and
+C<^^^^^^^^abcdefab> represent Unicode characters with code points
+0xab, 0xabcd, and 0xabcdefab respectively. They are output in UTF-8
+encoding.
+
+If the optional argument F<attr_file> is specified, B<tex2xindy>
+writes all index key attributes into this file.
+
+
+=head1 DEFICITS
+
+This program was written since it was not easily possible to extract
+the parser from the old makeindex system. Therefore it does not find
+all errors in the input as the makeindex(1) version.
+
+Additionally it uses only the default input specifiers of
+makeindex(1). If other input specifiers (cf. manual page of
+makeindex(1)) are needed, the input specifiers (starting from the
+pattern C<KEYWORD>, see below) must be changed and the program must be
+recompiled.
+
+The particular missing feature is configuration of the quote and the
+actual characters, maybe also the escape, subitem (level), and encap
+characters. Argument and range delimiters seem to be less of a problem.
+
+In fact, input markup handling (and thus B<tex2xindy>) should be
+incorporated into the B<xindy> kernel, to be able to specify
+configuration in xindy style files.
+
+=head1 SEE ALSO
+
+texindy(1),
+xindy(1),
+makeindex(1)
+
+=head1 AUTHOR
+
+Roger Kehr, Institut fuer Theoretische Informatik, TU Darmstadt
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 1996,1997 Roger Kehr.
+Copyright (c) 2006 Joachim Schrod.
+
+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 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, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+=cut
+
+*/
+%}
+
+%top{
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef WIN32
+# include <fcntl.h>
+# ifndef __MINGW32__ /* this should be W32TeX */
+# include <kpathsea/getopt.h>
+# define YY_NO_UNISTD_H 1
+# define __STDC_VERSION__ 199901L
+# endif
+#else
+# include <unistd.h>
+#endif
+}
+
+%{
+#define QUOTE_ECHO qs(yytext)
+
+FILE* attrfd = NULL;
+
+static int lineno = 1;
+static int braces = 0;
+static int xref_mode = 0;
+static int glos_mode = 0;
+static int errors = 0;
+static int omega_mode = 0;
+
+#define multiple_err \
+ { \
+ fprintf(stderr, "line %d: multiple %s's\n", lineno, yytext); \
+ errors++; \
+ }
+
+#define NO_RANGE 0
+#define OPEN_RANGE 1
+#define CLOSE_RANGE 2
+
+int range = NO_RANGE;
+
+/* This function quotes a character, if necessary. */
+
+static void qc( char ch ) {
+ switch (ch) {
+ case '\\' :
+ case '"' :
+ putchar( '\\' );
+ break;
+ }
+ putchar(ch);
+}
+
+/* Quote an entire string. */
+
+static void qs( char* str ) {
+ while ( *str ) {
+ qc( *str++ );
+ }
+}
+
+/*
+ Output an Omega character, ^^-notation in yytext, in UTF-8 encoding.
+ The parameter gets passed the amount of hex digits in the ^^-notation.
+ In front of the hex digits are the same amount of ^ chars.
+*/
+static void omega_output_utf8 ( int width )
+{
+ unsigned long int c = strtoul (yytext+width, NULL, 16);
+ if (c < 0x80) {
+ putchar (c);
+ }
+ else if (c < 0x800) {
+ putchar (0xC0 | (c>>6));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x10000) {
+ putchar (0xE0 | (c>>12));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x200000) {
+ putchar (0xF0 | (c>>18));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x4000000) {
+ putchar (0xF8 | (c>>24));
+ putchar (0x80 | (c>>18 & 0x3F));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else if (c < 0x80000000) {
+ putchar (0xFC | (c>>30));
+ putchar (0x80 | (c>>24 & 0x3F));
+ putchar (0x80 | (c>>18 & 0x3F));
+ putchar (0x80 | (c>>12 & 0x3F));
+ putchar (0x80 | (c>>6 & 0x3F));
+ putchar (0x80 | (c & 0x3F));
+ }
+ else { /* out of range, output U+FFFD REPLACEMENT CHARACTER */
+ fputs("\xef\xbf\xbd",stdout);
+ fprintf (stderr, "line %d: character %#lx not in UTF-8 range\n",
+ lineno, c);
+ }
+}
+
+%}
+
+KEYWORD \\indexentry
+KEYWORDG \\glossaryentry
+ENCAP \|
+ACTUAL @
+ESCAPE \\
+LEVEL !
+IS :
+QUOTE \"
+ROPEN \(
+RCLOSE \)
+ARGOPEN \{
+ARGCLOSE \}
+
+HATHAT8BIT \^{2}[0-9a-fA-F]{2}
+HATHAT16BIT \^{4}[0-9a-fA-F]{4}
+HATHAT32BIT \^{8}[0-9a-fA-F]{8}
+
+%s key print skip2location location encap xref is skiplocation
+
+%%
+
+<INITIAL>{KEYWORD}[ \t]*{ARGOPEN} {
+ printf("(indexentry :tkey ((\"");
+ xref_mode = 0;
+ glos_mode = 0;
+ BEGIN(key);
+ }
+
+<INITIAL>{KEYWORDG}[ \t]*{ARGOPEN} {
+ printf("(indexentry :tkey ((\"");
+ xref_mode = 0;
+ glos_mode = 1;
+ BEGIN(key);
+ }
+
+{ESCAPE}{QUOTE} { QUOTE_ECHO; }
+{QUOTE}\n { qc(yytext[1]); lineno++; }
+{QUOTE}. { qc(yytext[1]); }
+<key,print>{ENCAP} {
+ printf("\")) :attr \"");
+ range = NO_RANGE;
+ BEGIN(encap);
+ }
+<key,print>{IS} {
+ if ( glos_mode ) {
+ printf("\")) :attr \"is\" :xref (\"");
+ range = NO_RANGE;
+ if (attrfd) fprintf(attrfd, "\txref\n");
+ BEGIN(is);
+ } else {
+ ECHO;
+ }
+ }
+<key>{LEVEL} { printf("\") (\""); }
+<print>{LEVEL} { printf("\") (\""); BEGIN(key); }
+<key,print>{ARGOPEN} { ECHO; braces++; }
+<key,print>{ARGCLOSE} {
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ printf("\"))");
+ BEGIN(skip2location);
+ }
+ }
+
+<key>{ACTUAL} { printf("\" \""); BEGIN(print); }
+<print>{ACTUAL} { multiple_err; }
+
+<encap>{ENCAP} { multiple_err; }
+<encap>{ROPEN} { range = OPEN_RANGE; }
+<encap>{RCLOSE} { range = CLOSE_RANGE; }
+<encap>{ARGOPEN} { /* close :attr "... */
+ printf("\" :xref (\"");
+ if (attrfd) fprintf(attrfd, "\txref\n");
+ braces++;
+ BEGIN(xref);
+ }
+<encap>{ARGCLOSE} {
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ putchar('"');
+ if (attrfd) fprintf(attrfd, "\tlocref\n");
+ switch (range) {
+ case OPEN_RANGE:
+ printf(" :open-range");
+ break;
+ case CLOSE_RANGE:
+ printf(" :close-range");
+ break;
+ }
+ BEGIN(skip2location);
+ }
+ }
+<encap>.|\n {
+ QUOTE_ECHO;
+ if (attrfd) fwrite(yytext, sizeof(char), 1, attrfd);
+ if (*yytext == '\n') lineno++;
+ }
+
+
+
+<xref>{LEVEL} { printf("\" \""); }
+<xref,is>{ARGOPEN} { ECHO; braces++; }
+<xref>{ARGCLOSE} {
+ if ( braces > 1 ) {
+ ECHO;
+ braces--;
+ } else if ( braces == 1 ) {
+ braces--;
+ } else {
+ printf("\")");
+ xref_mode = 1;
+ BEGIN(skip2location);
+ }
+ }
+<is>{ARGCLOSE} {
+ if ( braces > 0 ) {
+ ECHO;
+ braces--;
+ } else {
+ printf("\")");
+ xref_mode = 1;
+ BEGIN(skip2location);
+ }
+ }
+
+<skip2location>[ \t]*{ARGOPEN} {
+ if (xref_mode) {
+ BEGIN(skiplocation);
+ } else {
+ printf(" :locref \"");
+ BEGIN(location);
+ }
+ }
+<location>{ARGCLOSE} { printf("\")\n"); BEGIN(0); }
+
+<skiplocation>{ARGCLOSE} { printf(")\n"); BEGIN(0); }
+<skiplocation>. { ; }
+
+<key,print,xref,is,location>{HATHAT8BIT} {
+ if ( omega_mode ) {
+ omega_output_utf8(2);
+ } else {
+ unput( strtol(yytext+2, NULL, 16) );
+ }
+ }
+<key,print,xref,is,location>{HATHAT16BIT} {
+ if ( omega_mode ) {
+ omega_output_utf8(4);
+ } else {
+ ECHO;
+ }
+ }
+<key,print,xref,is,location>{HATHAT32BIT} {
+ if ( omega_mode ) {
+ omega_output_utf8(8);
+ } else {
+ ECHO;
+ }
+ }
+
+<key,print,xref,is,location>\n { ECHO; lineno++; }
+<key,print,xref,is,location>. { QUOTE_ECHO; }
+
+\n { lineno++; }
+[ \t] { ; }
+. {
+ fprintf(stderr,
+ "Encountered unexpected char '%c' on line %d\n",
+ yytext[0], lineno);
+ }
+
+%%
+
+static void usage (void)
+{
+ fputs("This is tex2xindy, $Revision: 1.24 $.\n", stderr);
+ fputs("usage: tex2xindy [-o] [attr_file]\n", stderr);
+ exit (1);
+}
+
+int
+main(int argc, char* argv[])
+{
+ int option;
+
+#ifdef WIN32
+ setmode (fileno(stdout), _O_BINARY);
+#else
+ extern char *optarg;
+ extern int optind, optopt;
+#endif
+
+ while ( (option=getopt(argc, argv, ":o")) != -1 ) {
+ switch (option) {
+ case 'o':
+ omega_mode = 1;
+ break;
+ case '?':
+ default:
+ fprintf(stderr, "Unrecognized option: -%c\n", optopt);
+ usage();
+ /* NOTREACHED */
+ }
+ }
+
+ /* More than one argument left? */
+ if ( optind < argc - 1 ) usage();
+
+ /* attr_file specified? */
+ if ( optind == argc - 1 ) {
+ fprintf(stderr, "Writing attribute names to file \"%s\".\n",
+ argv[optind]);
+ if ( (attrfd = fopen(argv[optind], "wb")) == NULL ) {
+ perror (argv[optind]);
+ exit (1);
+ }
+ }
+
+ yylex();
+ if (attrfd) fclose(attrfd);
+ return (errors > 0); /* 1 or 0 */
+}
+
+
+/*
+ * Define dummy yywrap so we no longer depend on `libfl.a'.
+ */
+int yywrap (void)
+{
+ return 1;
+}
+
+
+/* ============================================================
+
+ $Log: tex2xindy.l,v $
+ Revision 1.24 2010/05/10 23:02:17 jschrod
+ Use ANSI C function definitions. (Patch from peb.)
+
+ Revision 1.23 2009/12/03 00:42:14 jschrod
+ Define internal functions as static to silence gcc warnings.
+
+ Revision 1.22 2009/12/03 00:36:09 jschrod
+ Define yywrap(), to be independent from libfl.
+
+ Revision 1.21 2006/07/30 09:44:04 jschrod
+ While quote is not output, escape+quote *is* output.
+
+ Revision 1.20 2006/07/18 21:40:45 jschrod
+ Add parenthesis as recommended by gcc -Wall.
+ Use ECHO instead of QUOTE_ECHO where quoting will not be needed.
+ Code cleanup: sanitize braces and indentation.
+
+ Revision 1.19 2006/07/18 21:26:34 jschrod
+ Add man page as POD to tex2xindy source.
+ Add support for ^^-notation, both in TeX and in new Omega mode.
+ Add usage message and proper option parsing.
+
+ Revision 1.18 2006/02/21 12:12:05 jschrod
+ Don't output escape or quote characters.
+
+ Revision 1.17 2006/02/21 02:05:00 jschrod
+ Quote really quotes the next char, now.
+
+ Revision 1.16 2005/06/27 20:49:06 jschrod
+ Keywords may be inmidst a line, as Jörg Sommer showed.
+ "." rule merging did not work for attributes, and for skiplocation.
+ Output error message if we come across chars outside our FSA.
+
+ Revision 1.15 2005/06/14 16:22:08 jschrod
+ Fold in changes from Thomas Henlich, as of 2000-02-14:
+ Paranoia fix: recognize KEYWORD only in INITIAL start condition.
+ Recognize \n and count lines (multiline entries do exist!).
+ Merged "." rules.
+ Fixed error messages (multiple ...).
+
+ Revision 1.14 2004/10/05 21:10:48 jschrod
+ Handles quote character correctly (bug ticket 1006128).
+ Test case: german-sty.
+
+ Revision 1.13 2002/01/29 13:32:58 thenlich
+ Fixed bug in crossref-to-subitem bugfix. The original one proposed by Roger Kehr
+ was right, only I copied it wrongly (shame on me). Thanks to Torsten Bronger
+ for pointing it out to me.
+
+ Revision 1.12 1999/10/13 08:06:44 kehr
+ Changed revision number message back to RCS-tag. No functional changes.
+
+ Revision 1.11 1999/10/13 08:05:10 kehr
+ Merged bugfix from Thomas Henlich with my own modifications.
+
+ 1.8 Fixed minor quoting bugs (for increased makeindex compatibility).
+ 1999-07-28 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+ Fixed crossref to subitem.
+ 1999-09-23 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+
+ 1.7 Fixed a bug concerning writing to and closing non-existing file (stat)
+ Fixed a bug concerning quoting the " character.
+ Enhancement for processing glossary files.
+ 1999-06-14 Thomas Henlich <henlich@mmers1.mw.tu-dresden.de>
+
+ Revision 1.10 1999/09/23 06:53:32 kehr
+ Fixed wrong raw index generation for cross-ref keywords.
+
+ Revision 1.9 1999/04/27 09:01:17 kehr
+ Defined a clean exit code as suggested by Klaus Guntermann
+ <guntermann@iti.informatik.tu-darmstadt.de>.
+
+ Revision 1.8 1999/04/27 08:57:48 kehr
+ Added quoting patch sent by Thomas Henlich <thenlich@Rcs1.urz.tu-dresden.de>
+
+ Revision 1.7 1999/04/27 08:56:59 kehr
+ Another checkin.
+
+ Revision 1.6 1997/02/13 14:42:50 kehr
+ Minor changes.
+
+ Revision 1.5 1997/01/21 16:44:36 kehr
+ Bugfix: State <print> was not changed back to <key> if {LEVEL} was found.
+
+ Revision 1.4 1997/01/17 16:30:37 kehr
+ Rewrote makeindex4 and heavily modified tex2xindy.
+
+ Revision 1.3 1996/07/19 17:15:18 kehr
+ Made this program comaptible with lex by correctly enclosing all
+ actions--stupid bug, 'cause lex didn't complain and flex did some
+ wonderful matching of all the actions such that no error was
+ discovered.
+
+ Revision 1.2 1996/07/11 14:16:55 kehr
+ Complete Major checkin before changing the letter-groups.
+
+ Revision 1.1 1996/06/24 08:53:57 kehr
+ Initial checkin of the Makefile, README and tex2xindy.
+*/
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/Makefile.am b/Build/source/utils/xindy/xindy-src/user-commands/Makefile.am
new file mode 100644
index 00000000000..fe84698c789
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/Makefile.am
@@ -0,0 +1,52 @@
+## Use `autoreconf' in top-level directory to recreate all
+## autoconf/automake files.
+## Or, call `automake Makefile' to create only Makefile.in.
+
+## Copyright (C) 2004-2005 by Gour.
+## Copyright (C) 2008 by Joachim Schrod.
+##
+## 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 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 in the file COPYING; if not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301 USA.
+
+scripts = texindy xindy
+
+bin_SCRIPTS =
+
+if !TEXLIVE_BUILD
+
+bin_SCRIPTS += $(scripts)
+
+texindy: texindy.in Makefile
+ sed -e 's:@libdir\@:$(libdir):' $(srcdir)/texindy.in >texindy
+
+xindy: xindy.in Makefile
+ sed -e 's:@libdir\@:$(libdir):' $(srcdir)/xindy.in >xindy
+
+endif !TEXLIVE_BUILD
+
+man_MANS = texindy.1 xindy.1
+
+texindy.1: texindy.in ../VERSION
+ cat $(srcdir)/texindy.in | pod2man --release="Release `cat $(srcdir)/../VERSION`" \
+ --errors=none --center=xindy --name=texindy >texindy.1
+
+xindy.1: xindy.in ../VERSION
+ cat $(srcdir)/xindy.in | pod2man --release="Release `cat $(srcdir)/../VERSION`" \
+ --errors=none --center=xindy --name=xindy >xindy.1
+
+EXTRA_DIST = $(man_MANS) texindy.in xindy.in
+
+CLEANFILES = $(scripts)
+
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/Makefile.in b/Build/source/utils/xindy/xindy-src/user-commands/Makefile.in
new file mode 100644
index 00000000000..0fd9b26de29
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/Makefile.in
@@ -0,0 +1,560 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@TEXLIVE_BUILD_FALSE@am__append_1 = $(scripts)
+subdir = xindy-src/user-commands
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-progs.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/../../m4/kpse-win32.m4 $(top_srcdir)/version.ac \
+ $(top_srcdir)/ac/xindy.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibdir = @pkglibdir@
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CLISP = @CLISP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX = @LATEX@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LISP_RUN = @LISP_RUN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WIN_WRAPPER = @WIN_WRAPPER@
+XINDY_RUN = @XINDY_RUN@
+XINDY_TREE = @XINDY_TREE@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+memdir = @memdir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+scripts = texindy xindy
+bin_SCRIPTS = $(am__append_1)
+man_MANS = texindy.1 xindy.1
+EXTRA_DIST = $(man_MANS) texindy.in xindy.in
+CLEANFILES = $(scripts)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xindy-src/user-commands/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign xindy-src/user-commands/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binSCRIPTS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+ ctags-am distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binSCRIPTS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-binSCRIPTS uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+@TEXLIVE_BUILD_FALSE@texindy: texindy.in Makefile
+@TEXLIVE_BUILD_FALSE@ sed -e 's:@libdir\@:$(libdir):' $(srcdir)/texindy.in >texindy
+
+@TEXLIVE_BUILD_FALSE@xindy: xindy.in Makefile
+@TEXLIVE_BUILD_FALSE@ sed -e 's:@libdir\@:$(libdir):' $(srcdir)/xindy.in >xindy
+
+texindy.1: texindy.in ../VERSION
+ cat $(srcdir)/texindy.in | pod2man --release="Release `cat $(srcdir)/../VERSION`" \
+ --errors=none --center=xindy --name=texindy >texindy.1
+
+xindy.1: xindy.in ../VERSION
+ cat $(srcdir)/xindy.in | pod2man --release="Release `cat $(srcdir)/../VERSION`" \
+ --errors=none --center=xindy --name=xindy >xindy.1
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/texindy.1 b/Build/source/utils/xindy/xindy-src/user-commands/texindy.1
new file mode 100644
index 00000000000..a216d7d6db0
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/texindy.1
@@ -0,0 +1,489 @@
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+. if \nF \{
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "texindy 1"
+.TH texindy 1 "2014-05-29" "Release 2.5.1" "xindy"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+texindy \- create sorted and tagged index from raw LaTeX index
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 2
+\& texindy [\-V?h] [\-qv] [\-iglr] [\-d magic] [\-o outfile.ind] [\-t log] \e
+\& [\-L lang] [\-C codepage] [\-M module] [idx0 idx1 ...]
+.Ve
+.SS "GNU-Style Long Options for Short Options:"
+.IX Subsection "GNU-Style Long Options for Short Options:"
+.Vb 10
+\& \-V / \-\-version
+\& \-? / \-h / \-\-help
+\& \-q / \-\-quiet
+\& \-v / \-\-verbose
+\& \-i / \-\-stdin
+\& \-g / \-\-german
+\& \-l / \-\-letter\-ordering
+\& \-r / \-\-no\-ranges
+\& \-d / \-\-debug (multiple times)
+\& \-o / \-\-out\-file
+\& \-t / \-\-log\-file
+\& \-L / \-\-language
+\& \-C / \-\-codepage
+\& \-M / \-\-module (multiple times)
+\& \-I / \-\-input\-markup (supported: latex, xelatex, omega)
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBtexindy\fR is the LaTeX-specific command of xindy, the flexible
+indexing system. It takes a raw index as input, and produces a merged,
+sorted and tagged index. Merging, sorting, and tagging is controlled
+by xindy modules, with a convenient set already preloaded.
+.PP
+Files with the raw index are passed as arguments. If no arguments are
+passed, the raw index will be read from standard input.
+.PP
+A good introductionary description of \fBtexindy\fR appears in the
+indexing chapter of the LaTeX Companion (2nd ed.)
+.PP
+If you want to produce an index for LaTeX documents with special index
+markup, the command \fIxindy\fR\|(1) is probably more of interest for you.
+.PP
+\&\fBtexindy\fR is an approach to merge support for the \fImake-rules\fR
+framework, own xindy modules (e.g., for special LaTeX commands in the
+index), and a reasonable level of MakeIndex compatibility.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.ie n .IP """\-\-version"" / \fB\-V\fR" 4
+.el .IP "\f(CW\-\-version\fR / \fB\-V\fR" 4
+.IX Item "--version / -V"
+output version numbers of all relevant components and exit.
+.ie n .IP """\-\-help"" / \fB\-h\fR / \fB\-?\fR" 4
+.el .IP "\f(CW\-\-help\fR / \fB\-h\fR / \fB\-?\fR" 4
+.IX Item "--help / -h / -?"
+output usage message with options explanation.
+.ie n .IP """\-\-quiet"" / \fB\-q\fR" 4
+.el .IP "\f(CW\-\-quiet\fR / \fB\-q\fR" 4
+.IX Item "--quiet / -q"
+Don't output progress messages. Output only error messages.
+.ie n .IP """\-\-verbose"" / \fB\-v\fR" 4
+.el .IP "\f(CW\-\-verbose\fR / \fB\-v\fR" 4
+.IX Item "--verbose / -v"
+Output verbose progress messages.
+.ie n .IP """\-\-debug"" \fImagic\fR / \fB\-d\fR \fImagic\fR" 4
+.el .IP "\f(CW\-\-debug\fR \fImagic\fR / \fB\-d\fR \fImagic\fR" 4
+.IX Item "--debug magic / -d magic"
+Output debug messages, this option may be specified multiple times.
+\&\fImagic\fR determines what is output:
+.Sp
+.Vb 6
+\& magic remark
+\& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+\& script internal progress messages of driver scripts
+\& keep_tmpfiles don\*(Aqt discard temporary files
+\& markup output markup trace, as explained in xindy manual
+\& level=n log level, n is 0 (default), 1, 2, or 3
+.Ve
+.ie n .IP """\-\-out\-file"" \fIoutfile.ind\fR / \fB\-o\fR \fIoutfile.ind\fR" 4
+.el .IP "\f(CW\-\-out\-file\fR \fIoutfile.ind\fR / \fB\-o\fR \fIoutfile.ind\fR" 4
+.IX Item "--out-file outfile.ind / -o outfile.ind"
+Output index to file \fIoutfile.ind\fR. If this option is not passed, the
+name of the output file is the base name of the first argument and the
+file extension \fIind\fR. If the raw index is read from standard input,
+this option is mandatory.
+.ie n .IP """\-\-log\-file"" \fIlog.ilg\fR / \fB\-t\fR \fIlog.ilg\fR" 4
+.el .IP "\f(CW\-\-log\-file\fR \fIlog.ilg\fR / \fB\-t\fR \fIlog.ilg\fR" 4
+.IX Item "--log-file log.ilg / -t log.ilg"
+Output log messages to file \fIlog.ilg\fR. These log messages are
+independent from the progress messages that you can influence with
+\&\f(CW\*(C`\-\-debug\*(C'\fR or \f(CW\*(C`\-\-verbose\*(C'\fR.
+.ie n .IP """\-\-language"" \fIlang\fR / \fB\-L\fR \fIlang\fR" 4
+.el .IP "\f(CW\-\-language\fR \fIlang\fR / \fB\-L\fR \fIlang\fR" 4
+.IX Item "--language lang / -L lang"
+The index is sorted according to the rules of language \fIlang\fR. These
+rules are encoded in a xindy module created by \fImake-rules\fR.
+.Sp
+If no input encoding is specified via \f(CW\*(C`\-\-codepage\*(C'\fR or enforced by
+input markup, a xindy module for that language is searched with a
+latin, a cp, an iso, ascii, or utf8 encoding, in that order.
+.ie n .IP """\-\-codepage"" \fIenc\fR / \fB\-C\fR \fIenc\fR" 4
+.el .IP "\f(CW\-\-codepage\fR \fIenc\fR / \fB\-C\fR \fIenc\fR" 4
+.IX Item "--codepage enc / -C enc"
+There are two different situations and use cases for this option.
+.RS 4
+.IP "1." 4
+Input markup is \f(CW\*(C`latex\*(C'\fR (the default).
+.Sp
+Then \fBtexindy\fR's raw input is assumed to be encoded in LaTeX Internal
+Character Representation (\s-1LICR\s0). I.e., non-ASCII characters are
+encoded as command sequences. This option tells xindy the encoding it
+shall use for letter group headings. (Additionally it specifies the
+encoding used internally for sorting \*(-- but that doesn't matter for
+the result.)
+.Sp
+Only \s-1LICR\s0 encodings for Latin script alphabets are supported; more
+precisely characters that are in LaTeX latin1, latin2, and latin3 \s-1LICR\s0
+encodings.
+.Sp
+Even when you specify \f(CW\*(C`utf8\*(C'\fR as codepage, only these characters will
+be known. But if you use non-Latin alphabets, you probably use (or
+should use) XeLaTeX or LuaLaTeX and then you have a different input
+markup.
+.IP "2." 4
+Input markup is \f(CW\*(C`xelatex\*(C'\fR or \f(CW\*(C`omega\*(C'\fR.
+.Sp
+Then this option is ignored; codepage \f(CW\*(C`utf8\*(C'\fR is enforced.
+.Sp
+\&\fBtexindy\fR's raw input is assumed to be \s-1UTF\-8\s0 encoded, \s-1LICR\s0 is not
+used.
+.RE
+.RS 4
+.RE
+.ie n .IP """\-\-module"" \fImodule\fR / \fB\-M\fR \fImodule\fR" 4
+.el .IP "\f(CW\-\-module\fR \fImodule\fR / \fB\-M\fR \fImodule\fR" 4
+.IX Item "--module module / -M module"
+Load the xindy module \fImodule.xdy\fR. This option may be specified
+multiple times. The modules are searched in the xindy search path that
+can be changed with the environment variable \f(CW\*(C`XINDY_SEARCHPATH\*(C'\fR.
+.ie n .IP """\-\-input\-markup"" \fIinput\fR / \fB\-I\fR \fIinput\fR" 4
+.el .IP "\f(CW\-\-input\-markup\fR \fIinput\fR / \fB\-I\fR \fIinput\fR" 4
+.IX Item "--input-markup input / -I input"
+Specifies the input markup of the raw index. Supported values for
+\&\fIinput\fR are \f(CW\*(C`latex\*(C'\fR, \f(CW\*(C`xelatex\*(C'\fR, and \f(CW\*(C`omega\*(C'\fR.
+.Sp
+\&\f(CW\*(C`latex\*(C'\fR input markup is the one that is emitted by default from the
+LaTeX kernel, or by the \f(CW\*(C`index\*(C'\fR macro package of David Jones, when
+used with standard LaTeX or pdfLaTeX. ^^\-notation of single byte
+characters is supported. Usage of LaTeX's \fIinputenc\fR package is
+assumed as well, i.e., raw input is encoded in \s-1LICR.\s0
+.Sp
+\&\f(CW\*(C`xelatex\*(C'\fR input markup is like \f(CW\*(C`latex\*(C'\fR, but without \fIinputenc\fR
+usage. Raw input is encoded in \s-1UTF\-8.\s0 LuaLaTeX has the same input
+markup, there's no special option value for it.
+.Sp
+\&\f(CW\*(C`omega\*(C'\fR input markup is like \f(CW\*(C`latex\*(C'\fR input markup, but with Omega's
+^^\-notation as encoding for non-ASCII characters. \s-1LICR\s0 encoding is not
+used then, and \f(CW\*(C`utf8\*(C'\fR is enforced to be the codepage for sorting and
+for output of letter group headings.
+.SH "SUPPORTED LANGUAGES / CODEPAGES"
+.IX Header "SUPPORTED LANGUAGES / CODEPAGES"
+The following languages are supported:
+.SS "Latin scripts"
+.IX Subsection "Latin scripts"
+.Vb 10
+\& albanian gypsy portuguese
+\& croatian hausa romanian
+\& czech hungarian russian\-iso
+\& danish icelandic slovak\-small
+\& english italian slovak\-large
+\& esperanto kurdish\-bedirxan slovenian
+\& estonian kurdish\-turkish spanish\-modern
+\& finnish latin spanish\-traditional
+\& french latvian swedish
+\& general lithuanian turkish
+\& german\-din lower\-sorbian upper\-sorbian
+\& german\-duden norwegian vietnamese
+\& greek\-iso polish
+.Ve
+.PP
+German recognizes two different sorting schemes to handle umlauts:
+normally, \f(CW\*(C`a\*:\*(C'\fR is sorted like \f(CW\*(C`ae\*(C'\fR, but in phone books or
+dictionaries, it is sorted like \f(CW\*(C`a\*(C'\fR. The first scheme is known as
+\&\fI\s-1DIN\s0 order\fR, the second as \fIDuden order\fR.
+.PP
+\&\f(CW\*(C`*\-iso\*(C'\fR language names assume that the raw index entries are in \s-1ISO
+8859\-9\s0 encoding.
+.PP
+\&\f(CW\*(C`gypsy\*(C'\fR is a northern Russian dialect.
+.SS "Cyrillic scripts"
+.IX Subsection "Cyrillic scripts"
+.Vb 3
+\& belarusian mongolian serbian
+\& bulgarian russian ukrainian
+\& macedonian
+.Ve
+.SS "Other scripts"
+.IX Subsection "Other scripts"
+.Vb 1
+\& greek klingon
+.Ve
+.SS "Available Codepages"
+.IX Subsection "Available Codepages"
+This is not yet written. You can look them up in your xindy
+distribution, in the \fImodules/lang/language/\fR directory (where
+\&\fIlanguage\fR is your language). They are named
+\&\fIvariant\-codepage\-lang.xdy\fR, where \fIvariant\-\fR is most often empty
+(for german, it's \f(CW\*(C`din5007\*(C'\fR and \f(CW\*(C`duden\*(C'\fR; for spanish, it's \f(CW\*(C`modern\*(C'\fR
+and \f(CW\*(C`traditional\*(C'\fR, etc.)
+.PP
+.Vb 1
+\& < Describe available codepages for each language >
+\&
+\& < Describe relevance of codepages (as internal representation) for
+\& LaTeX inputenc >
+.Ve
+.SH "TEXINDY STANDARD MODULES"
+.IX Header "TEXINDY STANDARD MODULES"
+There is a set of \fBtexindy\fR standard modules that help to process
+LaTeX index files. Some of them are automatically loaded. Some of them
+are loaded by default, this can be turned off with a \fBtexindy\fR
+option. Others may be specified as \f(CW\*(C`\-\-module\*(C'\fR argument to achieve a
+specific effect.
+.PP
+.Vb 1
+\& xindy Module Category Description
+.Ve
+.SS "Sorting"
+.IX Subsection "Sorting"
+.Vb 10
+\& word\-order Default A space comes before any letter in the
+\& alphabet: \`\`index style\*(Aq\*(Aq is listed before
+\& \`\`indexing\*(Aq\*(Aq. Turn it off with option \-l.
+\& letter\-order Add\-on Spaces are ignored: \`\`index style\*(Aq\*(Aq
+\& is sorted after \`\`indexing\*(Aq\*(Aq.
+\& keep\-blanks Add\-on Leading and trailing white space (blanks
+\& and tabs) are not ignored; intermediate
+\& white space is not changed.
+\& ignore\-hyphen Add\-on Hyphens are ignored:
+\& \`\`ad\-hoc\*(Aq\*(Aq is sorted as \`\`adhoc\*(Aq\*(Aq.
+\& ignore\-punctuation Add\-on All kinds of punctuation characters are
+\& ignored: hyphens, periods, commas, slashes,
+\& parentheses, and so on.
+\& numeric\-sort Auto Numbers are sorted numerically, not like
+\& characters: \`\`V64\*(Aq\*(Aq appears before \`\`V128\*(Aq\*(Aq.
+.Ve
+.SS "Page Numbers"
+.IX Subsection "Page Numbers"
+.Vb 10
+\& page\-ranges Default Appearances on more than two consecutive
+\& pages are listed as a range: \`\`1\-\-4\*(Aq\*(Aq.
+\& Turn it off with option \-r.
+\& ff\-ranges Add\-on Uses implicit \`\`ff\*(Aq\*(Aq notation for ranges
+\& of three pages, and explicit ranges
+\& thereafter: 2f, 2ff, 2\-\-6.
+\& ff\-ranges\-only Add\-on Uses only implicit ranges: 2f, 2ff.
+\& book\-order Add\-on Sorts page numbers with common book numbering
+\& scheme correctly \-\- Roman numerals first, then
+\& Arabic numbers, then others: i, 1, A.
+.Ve
+.SS "Markup and Layout"
+.IX Subsection "Markup and Layout"
+.Vb 10
+\& tex Auto Handles basic TeX conventions.
+\& latex\-loc\-fmts Auto Provides LaTeX formatting commands
+\& for page number encapsulation.
+\& latex Auto Handles LaTeX conventions, both in raw
+\& index entries and output markup; implies
+\& tex.
+\& makeindex Auto Emulates the default MakeIndex input syntax
+\& and quoting behavior.
+\& latin\-lettergroups Auto Layout contains a single Latin letter
+\& above each group of words starting with the
+\& same letter.
+\& german\-sty Add\-on Handles umlaut markup of babel\*(Aqs german
+\& and ngerman options.
+.Ve
+.SH "COMPATIBILITY TO MAKEINDEX"
+.IX Header "COMPATIBILITY TO MAKEINDEX"
+\&\fBxindy\fR does not claim to be completely compatible with MakeIndex,
+that would prevent some of its enhancements. That said, we strive to
+deliver as much compatibility as possible. The most important
+incompatibilities are
+.IP "\(bu" 4
+For raw index entries in LaTeX syntax, \f(CW\*(C`\eindex{aaa|bbb}\*(C'\fR is
+interpreted differently. For MakeIndex \f(CW\*(C`bbb\*(C'\fR is markup that is output
+as a LaTeX tag for this page number. For \fBxindy\fR, this is a location
+attribute, an abstract identifier that will be later associated with
+markup that should be output for that attribute.
+.Sp
+For straight-forward usage, when \f(CW\*(C`bbb\*(C'\fR is \f(CW\*(C`textbf\*(C'\fR or similar, we
+supply location attribute definitions that mimic MakeIndex's
+behaviour.
+.Sp
+For more complex usage, when \f(CW\*(C`bbb\*(C'\fR is not an identifier, no such
+compatibility definitions exist and may also not been created with
+current \fBxindy\fR. In particular, this means that by default the LaTeX
+package \f(CW\*(C`hyperref\*(C'\fR will create raw index files that cannot be
+processed with \fBxindy\fR. This is not a bug, this is the unfortunate
+result of an intented incompatibility. It is currently not possible to
+get both hyperref's index links and use \fBxindy\fR.
+.Sp
+A similar situation is reported to exist for the \f(CW\*(C`memoir\*(C'\fR LaTeX
+class.
+.Sp
+Programmers who know Common Lisp and Lex and want to work on a remedy
+should please contact the author.
+.IP "\(bu" 4
+If you have an index rage and a location attribute, e.g.,
+\&\f(CW\*(C`\eindex{key\e(attr}\*(C'\fR starts the range, one needs (1) to specify that
+attribute in the range closing entry as well (i.e., as
+\&\f(CW\*(C`\eindex{key\e)attr}\*(C'\fR) and (2) one needs to declare the index attribute
+in an \fBxindy\fR style file.
+.Sp
+MakeIndex will output the markup \f(CW\*(C`\eattr{page1\-\-page2}\*(C'\fR for such a
+construct. This is not possible to achieve in \fBxindy\fR, output will be
+\&\f(CW\*(C`\eattrMarkup{page1}\-\-\eattrMarkup{page2}\*(C'\fR. (This is actually
+considered a bug, but not a high priority one.)
+.Sp
+The difference between MakeIndex page number tags and \fBxindy\fR
+location attributes was already explained in the previous item.
+.IP "\(bu" 4
+The MakeIndex compatibility definitions support only the default raw
+index syntax and markup definition. It is not possible to configure
+raw index parsing or use a MakeIndex style file to describe output
+markup.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+.ie n .IP """TEXINDY_AUTO_MODULE""" 4
+.el .IP "\f(CWTEXINDY_AUTO_MODULE\fR" 4
+.IX Item "TEXINDY_AUTO_MODULE"
+This is the name of the xindy module that loads all auto-loaded
+modules. The default is \f(CW\*(C`texindy\*(C'\fR.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Joachim Schrod
+.SH "LEGALESE"
+.IX Header "LEGALESE"
+Copyright (C) 2004\-2014 by Joachim Schrod.
+.PP
+\&\fBtexindy\fR is free software; you can redistribute it and/or modify it
+under the terms of the \s-1GNU\s0 General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+.PP
+This program is distributed in the hope that it will be useful,
+but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
+\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the
+\&\s-1GNU\s0 General Public License for more details.
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/texindy.in b/Build/source/utils/xindy/xindy-src/user-commands/texindy.in
new file mode 100644
index 00000000000..653e51d49c9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/texindy.in
@@ -0,0 +1,690 @@
+#!/usr/bin/env perl
+# $Id: texindy,v 1.13 2011/01/18 22:18:29 jschrod Exp $
+#------------------------------------------------------------
+# (history at end)
+
+=head1 NAME
+
+texindy - create sorted and tagged index from raw LaTeX index
+
+=head1 SYNOPSIS
+
+ texindy [-V?h] [-qv] [-iglr] [-d magic] [-o outfile.ind] [-t log] \
+ [-L lang] [-C codepage] [-M module] [idx0 idx1 ...]
+
+=head2 GNU-Style Long Options for Short Options:
+
+ -V / --version
+ -? / -h / --help
+ -q / --quiet
+ -v / --verbose
+ -i / --stdin
+ -g / --german
+ -l / --letter-ordering
+ -r / --no-ranges
+ -d / --debug (multiple times)
+ -o / --out-file
+ -t / --log-file
+ -L / --language
+ -C / --codepage
+ -M / --module (multiple times)
+ -I / --input-markup (supported: latex, xelatex, omega)
+
+
+=head1 DESCRIPTION
+
+B<texindy> is the LaTeX-specific command of xindy, the flexible
+indexing system. It takes a raw index as input, and produces a merged,
+sorted and tagged index. Merging, sorting, and tagging is controlled
+by xindy modules, with a convenient set already preloaded.
+
+Files with the raw index are passed as arguments. If no arguments are
+passed, the raw index will be read from standard input.
+
+A good introductionary description of B<texindy> appears in the
+indexing chapter of the LaTeX Companion (2nd ed.)
+
+If you want to produce an index for LaTeX documents with special index
+markup, the command xindy(1) is probably more of interest for you.
+
+B<texindy> is an approach to merge support for the I<make-rules>
+framework, own xindy modules (e.g., for special LaTeX commands in the
+index), and a reasonable level of MakeIndex compatibility.
+
+
+=head1 OPTIONS
+
+=over
+
+=item C<--version> / B<-V>
+
+output version numbers of all relevant components and exit.
+
+=item C<--help> / B<-h> / B<-?>
+
+output usage message with options explanation.
+
+=item C<--quiet> / B<-q>
+
+Don't output progress messages. Output only error messages.
+
+=item C<--verbose> / B<-v>
+
+Output verbose progress messages.
+
+=item C<--debug> I<magic> / B<-d> I<magic>
+
+Output debug messages, this option may be specified multiple times.
+I<magic> determines what is output:
+
+ magic remark
+ ------------------------------------------------------------
+ script internal progress messages of driver scripts
+ keep_tmpfiles don't discard temporary files
+ markup output markup trace, as explained in xindy manual
+ level=n log level, n is 0 (default), 1, 2, or 3
+
+=item C<--out-file> F<outfile.ind> / B<-o> F<outfile.ind>
+
+Output index to file F<outfile.ind>. If this option is not passed, the
+name of the output file is the base name of the first argument and the
+file extension F<ind>. If the raw index is read from standard input,
+this option is mandatory.
+
+=item C<--log-file> F<log.ilg> / B<-t> F<log.ilg>
+
+Output log messages to file F<log.ilg>. These log messages are
+independent from the progress messages that you can influence with
+C<--debug> or C<--verbose>.
+
+=item C<--language> I<lang> / B<-L> I<lang>
+
+The index is sorted according to the rules of language I<lang>. These
+rules are encoded in a xindy module created by I<make-rules>.
+
+If no input encoding is specified via C<--codepage> or enforced by
+input markup, a xindy module for that language is searched with a
+latin, a cp, an iso, ascii, or utf8 encoding, in that order.
+
+=item C<--codepage> I<enc> / B<-C> I<enc>
+
+There are two different situations and use cases for this option.
+
+=over
+
+=item 1.
+
+Input markup is C<latex> (the default).
+
+Then B<texindy>'s raw input is assumed to be encoded in LaTeX Internal
+Character Representation (LICR). I.e., non-ASCII characters are
+encoded as command sequences. This option tells xindy the encoding it
+shall use for letter group headings. (Additionally it specifies the
+encoding used internally for sorting -- but that doesn't matter for
+the result.)
+
+Only LICR encodings for Latin script alphabets are supported; more
+precisely characters that are in LaTeX latin1, latin2, and latin3 LICR
+encodings.
+
+Even when you specify C<utf8> as codepage, only these characters will
+be known. But if you use non-Latin alphabets, you probably use (or
+should use) XeLaTeX or LuaLaTeX and then you have a different input
+markup.
+
+=item 2.
+
+Input markup is C<xelatex> or C<omega>.
+
+Then this option is ignored; codepage C<utf8> is enforced.
+
+B<texindy>'s raw input is assumed to be UTF-8 encoded, LICR is not
+used.
+
+=back
+
+=item C<--module> I<module> / B<-M> I<module>
+
+Load the xindy module F<module.xdy>. This option may be specified
+multiple times. The modules are searched in the xindy search path that
+can be changed with the environment variable C<XINDY_SEARCHPATH>.
+
+=item C<--input-markup> I<input> / B<-I> I<input>
+
+Specifies the input markup of the raw index. Supported values for
+I<input> are C<latex>, C<xelatex>, and C<omega>.
+
+C<latex> input markup is the one that is emitted by default from the
+LaTeX kernel, or by the C<index> macro package of David Jones, when
+used with standard LaTeX or pdfLaTeX. ^^-notation of single byte
+characters is supported. Usage of LaTeX's I<inputenc> package is
+assumed as well, i.e., raw input is encoded in LICR.
+
+C<xelatex> input markup is like C<latex>, but without I<inputenc>
+usage. Raw input is encoded in UTF-8. LuaLaTeX has the same input
+markup, there's no special option value for it.
+
+C<omega> input markup is like C<latex> input markup, but with Omega's
+^^-notation as encoding for non-ASCII characters. LICR encoding is not
+used then, and C<utf8> is enforced to be the codepage for sorting and
+for output of letter group headings.
+
+=back
+
+
+=head1 SUPPORTED LANGUAGES / CODEPAGES
+
+The following languages are supported:
+
+=head2 Latin scripts
+
+ albanian gypsy portuguese
+ croatian hausa romanian
+ czech hungarian russian-iso
+ danish icelandic slovak-small
+ english italian slovak-large
+ esperanto kurdish-bedirxan slovenian
+ estonian kurdish-turkish spanish-modern
+ finnish latin spanish-traditional
+ french latvian swedish
+ general lithuanian turkish
+ german-din lower-sorbian upper-sorbian
+ german-duden norwegian vietnamese
+ greek-iso polish
+
+German recognizes two different sorting schemes to handle umlauts:
+normally, C<ä> is sorted like C<ae>, but in phone books or
+dictionaries, it is sorted like C<a>. The first scheme is known as
+I<DIN order>, the second as I<Duden order>.
+
+C<*-iso> language names assume that the raw index entries are in ISO
+8859-9 encoding.
+
+C<gypsy> is a northern Russian dialect.
+
+=head2 Cyrillic scripts
+
+ belarusian mongolian serbian
+ bulgarian russian ukrainian
+ macedonian
+
+=head2 Other scripts
+
+ greek klingon
+
+=head2 Available Codepages
+
+This is not yet written. You can look them up in your xindy
+distribution, in the F<modules/lang/language/> directory (where
+I<language> is your language). They are named
+F<variant-codepage-lang.xdy>, where F<variant-> is most often empty
+(for german, it's C<din5007> and C<duden>; for spanish, it's C<modern>
+and C<traditional>, etc.)
+
+ < Describe available codepages for each language >
+
+ < Describe relevance of codepages (as internal representation) for
+ LaTeX inputenc >
+
+
+=head1 TEXINDY STANDARD MODULES
+
+There is a set of B<texindy> standard modules that help to process
+LaTeX index files. Some of them are automatically loaded. Some of them
+are loaded by default, this can be turned off with a B<texindy>
+option. Others may be specified as C<--module> argument to achieve a
+specific effect.
+
+ xindy Module Category Description
+
+=head2 Sorting
+
+ word-order Default A space comes before any letter in the
+ alphabet: ``index style'' is listed before
+ ``indexing''. Turn it off with option -l.
+ letter-order Add-on Spaces are ignored: ``index style''
+ is sorted after ``indexing''.
+ keep-blanks Add-on Leading and trailing white space (blanks
+ and tabs) are not ignored; intermediate
+ white space is not changed.
+ ignore-hyphen Add-on Hyphens are ignored:
+ ``ad-hoc'' is sorted as ``adhoc''.
+ ignore-punctuation Add-on All kinds of punctuation characters are
+ ignored: hyphens, periods, commas, slashes,
+ parentheses, and so on.
+ numeric-sort Auto Numbers are sorted numerically, not like
+ characters: ``V64'' appears before ``V128''.
+
+=head2 Page Numbers
+
+ page-ranges Default Appearances on more than two consecutive
+ pages are listed as a range: ``1--4''.
+ Turn it off with option -r.
+ ff-ranges Add-on Uses implicit ``ff'' notation for ranges
+ of three pages, and explicit ranges
+ thereafter: 2f, 2ff, 2--6.
+ ff-ranges-only Add-on Uses only implicit ranges: 2f, 2ff.
+ book-order Add-on Sorts page numbers with common book numbering
+ scheme correctly -- Roman numerals first, then
+ Arabic numbers, then others: i, 1, A.
+
+=head2 Markup and Layout
+
+ tex Auto Handles basic TeX conventions.
+ latex-loc-fmts Auto Provides LaTeX formatting commands
+ for page number encapsulation.
+ latex Auto Handles LaTeX conventions, both in raw
+ index entries and output markup; implies
+ tex.
+ makeindex Auto Emulates the default MakeIndex input syntax
+ and quoting behavior.
+ latin-lettergroups Auto Layout contains a single Latin letter
+ above each group of words starting with the
+ same letter.
+ german-sty Add-on Handles umlaut markup of babel's german
+ and ngerman options.
+
+
+=head1 COMPATIBILITY TO MAKEINDEX
+
+B<xindy> does not claim to be completely compatible with MakeIndex,
+that would prevent some of its enhancements. That said, we strive to
+deliver as much compatibility as possible. The most important
+incompatibilities are
+
+=over
+
+=item *
+
+For raw index entries in LaTeX syntax, C<\index{aaa|bbb}> is
+interpreted differently. For MakeIndex C<bbb> is markup that is output
+as a LaTeX tag for this page number. For B<xindy>, this is a location
+attribute, an abstract identifier that will be later associated with
+markup that should be output for that attribute.
+
+For straight-forward usage, when C<bbb> is C<textbf> or similar, we
+supply location attribute definitions that mimic MakeIndex's
+behaviour.
+
+For more complex usage, when C<bbb> is not an identifier, no such
+compatibility definitions exist and may also not been created with
+current B<xindy>. Such a situation is reported to exist for the
+C<memoir> LaTeX class.
+
+Programmers who know Common Lisp and Lex and want to work on a remedy
+should please contact the author.
+
+=item *
+
+If you have an index rage and a location attribute, e.g.,
+C<\index{key\(attr}> starts the range, one needs (1) to specify that
+attribute in the range closing entry as well (i.e., as
+C<\index{key\)attr}>) and (2) one needs to declare the index attribute
+in an B<xindy> style file.
+
+MakeIndex will output the markup C<\attr{page1--page2}> for such a
+construct. This is not possible to achieve in B<xindy>, output will be
+C<\attrMarkup{page1}--\attrMarkup{page2}>. (This is actually
+considered a bug, but not a high priority one.)
+
+The difference between MakeIndex page number tags and B<xindy>
+location attributes was already explained in the previous item.
+
+=item *
+
+The MakeIndex compatibility definitions support only the default raw
+index syntax and markup definition. It is not possible to configure
+raw index parsing or use a MakeIndex style file to describe output
+markup.
+
+=back
+
+
+
+=head1 ENVIRONMENT
+
+=over
+
+=item C<TEXINDY_AUTO_MODULE>
+
+This is the name of the xindy module that loads all auto-loaded
+modules. The default is C<texindy>.
+
+=back
+
+
+=head1 AUTHOR
+
+Joachim Schrod
+
+
+=head1 LEGALESE
+
+Copyright (c) 2004-2014 by Joachim Schrod.
+
+B<texindy> 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 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.
+
+
+=for Emacs
+#'
+
+=cut
+
+
+use strict;
+use English qw(-no_match_vars);
+
+our $VERSION = sprintf "%d.%02d", q$Revision: 1.13 $ =~ /: (\d+)\.(\d+)/ ;
+
+
+# Used modules.
+
+use Cwd;
+use File::Basename;
+use Getopt::Long qw(:config bundling);
+
+
+# Determine environment. Where is our library directory, and our modules?
+
+our $is_TL = ( '@is_TL@' eq 'yes' );
+our $is_w32 = ( $OSNAME =~ /^MSWin/i ) ;
+our $real_cmd = Cwd::realpath($0);
+our $cmd_dir = dirname($real_cmd);
+our $cmd = basename($0);
+our $xindy;
+
+# In TeX-Live, user commands are symlinks in some bin directory, and
+# the actual scripts are in the library directory and have a .pl
+# extension. In standalone installations, user command xindy is
+# expected to be in the same directory as our command.
+
+if ( $is_TL ) { # TeX Live
+
+ if ( $is_w32 ) {
+ $xindy = "$cmd_dir/xindy.pl";
+ } else {
+ die "$cmd: not a symlink as required for TeX Live" unless -l $0;
+ # FIXME: What this good for? Ain't xindy not also
+ # "$cmd_dir/xindy.pl" in a Unix TL installation? Why does
+ # Peter use the directory of the last symlink, where it just
+ # finds the symlink again that is then expanded by xindy.pl?
+ $real_cmd = $0;
+ $cmd_dir = dirname($real_cmd);
+ # Follow symlinks, but remember last one
+ my $lcmd_dir;
+ while ( -l $real_cmd ) {
+ $lcmd_dir = $cmd_dir;
+ $real_cmd = readlink($real_cmd);
+ $real_cmd = "$lcmd_dir/$real_cmd" unless $real_cmd =~ m,^[\\/],; # relative link
+ $cmd_dir = dirname($real_cmd);
+ }
+ $xindy = "$lcmd_dir/xindy";
+ }
+ # FIXME: That's a very ugly kludge to achieve that the VERSION
+ # file is found in output_xindy_release(). The real solution is to
+ # copy the code from xindy.pl that determines $modules_dir and
+ # $lib_dir and use that code as well.
+ $cmd_dir = Cwd::realpath("$cmd_dir/../../xindy/modules");
+ die "Cannot locate xindy modules directory" unless -f "$cmd_dir/../VERSION";
+} else {
+ if ( -f "$cmd_dir/xindy" && -x _ ) {
+ $xindy = "$cmd_dir/xindy";
+ } elsif ( -f "$cmd_dir/xindy.pl" && -x _ ) {
+ $xindy = "$cmd_dir/xindy.pl";
+ } else {
+ die "$cmd: cannot locate xindy\n";
+ }
+}
+die "$cmd: cannot locate xindy\n" unless -f $xindy && ($is_w32 || -x $xindy);
+
+
+# Check arguments, store them in proper variables.
+
+sub usage ( ;$ )
+{
+ my $exit_code = shift;
+ $exit_code += 0; # turn undef into 0
+ my $out = ( $exit_code ? *STDERR : *STDOUT );
+ print $out <<_EOT_
+
+usage: $cmd [-V?h] [-qv] [-iglr] [-d magic] [-o outfile.ind] [-t log] \\
+ [-L lang] [-C codepage] [-M module] [-I input] [idx0 idx1 ...]
+
+GNU-STYLE LONG OPTIONS FOR SHORT OPTIONS:
+
+ -V / --version
+ -? / -h / --help
+ -q / --quiet
+ -v / --verbose
+ -i / --stdin
+ -g / --german
+ -l / --letter-ordering
+ -r / --no-ranges
+ -d / --debug (multiple times)
+ (supported: script, keep_tmpfiles, markup, level=n)
+ -o / --out-file
+ -t / --log-file
+ -L / --language
+ -C / --codepage
+ -M / --module (multiple times)
+ -I / --input-markup (supported: latex, omega)
+
+_EOT_
+ ;
+ exit ($exit_code);
+}
+
+our ($output_version, $quiet, $verbose, $stdin, @debug,
+ $outfile, $logfile, $language, $codepage, @modules, $input_markup);
+$language = 'general';
+$codepage = 'latin';
+$input_markup = 'latex';
+
+parse_options();
+output_version() if $output_version; # will not return
+usage(1) if ( ! $stdin && @ARGV == 0 ); # brain damaged, but like makeindex
+
+
+# Construct xindy options, and eventually switch to it.
+
+my @opt;
+push (@opt, '-q') if $quiet;
+push (@opt, '-v') if $verbose;
+push (@opt, map { ('-d', $_) } @debug) if @debug;
+push (@opt, '-o', $outfile) if $outfile;
+push (@opt, '-t', $logfile) if $logfile;
+push (@opt, '-L', $language);
+push (@opt, '-C', $codepage) if $codepage;
+push (@opt, '-M', "tex/inputenc/$codepage") if $codepage;
+push (@opt, map { ('-M', $_) } ($ENV{TEXINDY_AUTO_MODULE} || 'texindy',
+ @modules));
+push (@opt, '-I', $input_markup);
+
+print "Calling xindy as: $xindy @opt @ARGV\n" if (grep /^script$/, @debug);
+exec_xindy(@opt, @ARGV);
+
+# NOT REACHED
+
+
+# ------------------------------------------------------------
+
+
+sub exec_xindy {
+ if ( $is_w32 ) {
+ system ($EXECUTABLE_NAME, $xindy, @_);
+ if ($? == -1) {
+ die "$cmd: could not execute xindy: $ERRNO\n";
+ } elsif ($? & 127) {
+ die "xindy died with signal " . ($? & 127) ."\n";
+ } else {
+ exit ($? >> 8);
+ }
+ } else {
+ exec ($xindy, @_);
+ die "$cmd: could not execute xindy: $!\n";
+ }
+}
+
+
+sub parse_options() {
+
+ my ($german, $letter_ordering, $no_ranges);
+ GetOptions(
+ 'version|V' => \$output_version,
+ 'help|h|?' => \&usage,
+ 'quiet|q' => \$quiet,
+ 'verbose|v' => \$verbose,
+ 'stdin|i' => \$stdin,
+ 'german|g' => \$german,
+ 'letter-ordering|l' => \$letter_ordering,
+ 'no-ranges|r' => \$no_ranges,
+ 'debug|d=s' => \@debug,
+ 'out-file|o=s' => \$outfile,
+ 'log-file|t=s' => \$logfile,
+ 'language|L=s' => \$language,
+ 'codepage|C=s' => \$codepage,
+ 'module|M=s' => \@modules,
+ 'input-markup|I=s' => \$input_markup,
+ )
+ or usage(1);
+
+ if ( $german ) {
+ unshift (@modules, 'german-sty');
+ if ( $language eq 'general' ) {
+ $language = 'german-din';
+ } elsif ( $language !~ /^german/ ) {
+ print STDERR "You cannot specify -g and -L at the same time.\n";
+ #print STDERR "NOTE: -g is obsolete anyhow.\n";
+ exit (1);
+ }
+ }
+ unshift (@modules, ($letter_ordering ? 'letter-order' : 'word-order'));
+ unshift (@modules, 'page-ranges') unless $no_ranges;
+
+ # Check that the input markup is known. xelatex and omega markup implies
+ # codepage utf8 for sorting, but no inputenc. We set the codepage
+ # to undef to prevent loading of the inputenc module. Setting it
+ # to utf8 for sort encoding is done by the xindy script.
+ if ( $input_markup ne 'latex' && $input_markup ne 'xelatex' &&
+ $input_markup ne 'omega' ) {
+ print STDERR "Unsupported input markup $input_markup.\n";
+ usage(1);
+ }
+ if ( $input_markup eq 'xelatex' || $input_markup eq 'omega' ) {
+ $codepage = undef;
+ }
+
+}
+
+
+sub output_version () {
+ output_xindy_release();
+ print "$cmd script version: $VERSION\n";
+ my @xindy_cmd = ('--internal-version');
+ push (@xindy_cmd, qw(-d script --foobar)) if grep(/^script$/, @debug);
+ exec_xindy(@xindy_cmd);
+}
+
+
+sub output_xindy_release () {
+ my $version = 'unknown';
+ my $version_file;
+ if ( -f "$cmd_dir/../VERSION" ) {
+ $version_file = "$cmd_dir/../VERSION";
+ } else {
+ # Where is the library directory?
+ my $lib_dir;
+ if ( $ENV{XINDY_LIBDIR} ) {
+ $lib_dir = $ENV{XINDY_LIBDIR};
+ } elsif ( '@libdir@' ne '@libdir' . '@' ) { # GNU configure at work?
+ if ( -d '@libdir@/xindy' ) { # /usr style
+ $lib_dir = '@libdir@/xindy';
+ } else {
+ $lib_dir = '@libdir@'; # /opt style
+ }
+ } elsif ( -f "$cmd_dir/../lib/xindy.run" ) { # /opt style
+ $lib_dir = "$cmd_dir/../lib";
+ } elsif ( -d "$cmd_dir/../lib/xindy" ) { # /usr style
+ $lib_dir = "$cmd_dir/../lib/xindy";
+ } else {
+ die "Cannot locate xindy library directory";
+ }
+ if ( -f "$lib_dir/VERSION" ) {
+ $version_file = "$lib_dir/VERSION";
+ }
+ }
+
+ if ( $version_file ) {
+ if ( open(VERSION, "<$version_file") ) {
+ while ( $version = <VERSION> ) {
+ chomp ($version);
+ $version =~ s/\#.*// ;
+ $version =~ s/^\s+// ;
+ $version =~ s/\s+$// ;
+ last if $version;
+ }
+ close (VERSION);
+ }
+ }
+ print "xindy release: $version\n";
+}
+
+
+
+#======================================================================
+#
+# $Log: texindy,v $
+# Revision 1.13 2011/01/18 22:18:29 jschrod
+# Document the range raw markup incompatibility with MakeIndex.
+# (Bug ticket 998541)
+#
+# Revision 1.12 2010/08/12 00:16:01 jschrod
+# Output help message on stdout if there's no error.
+#
+# Revision 1.11 2010/05/10 23:39:24 jschrod
+# Incorporate TeX-Live patches from Vladimir Volovich and Peter
+# Breitenlohner: Support for TL installation scheme, support for Mac OS
+# X, support for Windows in TL.
+#
+# Revision 1.10 2010/04/20 00:15:23 jschrod
+# Emphasize incompatibility with hyperref in man page.
+#
+# Revision 1.9 2009/12/03 00:28:22 jschrod
+# Search perl via env.
+#
+# Revision 1.8 2009/03/22 11:08:18 jschrod
+# man page: --v is --verbose, not --version.
+#
+# Revision 1.7 2009/03/21 16:32:06 jschrod
+# Inputenc merge rules must be loaded before other texindy modules;
+# otherwise inputenc markup would be discarded by tex.xdy.
+#
+# Revision 1.6 2008/02/17 14:55:32 jschrod
+# Use exitcode 0 when usage is explicitly demanded with --help et.al.
+#
+# Revision 1.5 2006/07/30 10:30:42 jschrod
+# Check if an exec() error happened and output an error message.
+# (Ticket 1230801)
+#
+# Revision 1.4 2006/07/19 00:29:56 jschrod
+# Support for omega input markup.
+#
+# Revision 1.3 2004/11/01 22:48:51 jschrod
+# Locate xindy script.
+# Terminate on option error.
+# Fix up version output.
+#
+# Revision 1.2 2004/05/26 21:30:11 jschrod
+# Added POD documentation.
+#
+# Revision 1.1 2004/05/24 19:47:13 jschrod
+# Introduce new driver script, as part of the "Companion Release".
+#
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/xindy.1 b/Build/source/utils/xindy/xindy-src/user-commands/xindy.1
new file mode 100644
index 00000000000..d8498756edc
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/xindy.1
@@ -0,0 +1,445 @@
+.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+. if \nF \{
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "xindy 1"
+.TH xindy 1 "2015-08-15" "Release 2.5.1" "xindy"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+xindy \- create sorted and tagged index from raw index
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 4
+\& xindy [\-V?h] [\-qv] [\-d magic] [\-o outfile.ind] [\-t log] \e
+\& [\-L lang] [\-C codepage] [\-M module] [\-I input] \e
+\& [\-\-interactive] [\-\-mem\-file=xindy.mem] \e
+\& [idx0 idx1 ...]
+.Ve
+.SS "GNU-Style Long Options for Short Options:"
+.IX Subsection "GNU-Style Long Options for Short Options:"
+.Vb 11
+\& \-V / \-\-version
+\& \-? / \-h / \-\-help
+\& \-q / \-\-quiet
+\& \-v / \-\-verbose
+\& \-d / \-\-debug (multiple times)
+\& \-o / \-\-out\-file
+\& \-t / \-\-log\-file
+\& \-L / \-\-language
+\& \-C / \-\-codepage
+\& \-M / \-\-module (multiple times)
+\& \-I / \-\-input\-markup (supported: latex, xelatex, omega, xindy)
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBxindy\fR is the formatter-independent command of xindy, the flexible
+indexing system. It takes a raw index as input, and produces a merged,
+sorted and tagged index. Merging, sorting, and tagging is controlled
+by xindy style files.
+.PP
+Files with the raw index are passed as arguments. If no arguments are
+passed, the raw index will be read from standard input.
+.PP
+\&\fBxindy\fR is completely described in its manual that you will find on
+its Web Site, http://www.xindy.org/. A good introductionary
+description appears in the indexing chapter of the LaTeX Companion (2nd ed.)
+.PP
+If you want to produce an index for LaTeX documents, the command
+\&\fItexindy\fR\|(1) is probably more of interest for you. It is a wrapper for
+\&\fBxindy\fR that turns on many LaTeX conventions by default.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.ie n .IP """\-\-version"" / \fB\-V\fR" 4
+.el .IP "\f(CW\-\-version\fR / \fB\-V\fR" 4
+.IX Item "--version / -V"
+output version numbers of all relevant components and exit.
+.ie n .IP """\-\-help"" / \fB\-h\fR / \fB\-?\fR" 4
+.el .IP "\f(CW\-\-help\fR / \fB\-h\fR / \fB\-?\fR" 4
+.IX Item "--help / -h / -?"
+output usage message with options explanation.
+.ie n .IP """\-\-quiet"" / \fB\-q\fR" 4
+.el .IP "\f(CW\-\-quiet\fR / \fB\-q\fR" 4
+.IX Item "--quiet / -q"
+Don't output progress messages. Output only error messages.
+.ie n .IP """\-\-verbose"" / \fB\-v\fR" 4
+.el .IP "\f(CW\-\-verbose\fR / \fB\-v\fR" 4
+.IX Item "--verbose / -v"
+Output verbose progress messages.
+.ie n .IP """\-\-debug"" \fImagic\fR / \fB\-d\fR \fImagic\fR" 4
+.el .IP "\f(CW\-\-debug\fR \fImagic\fR / \fB\-d\fR \fImagic\fR" 4
+.IX Item "--debug magic / -d magic"
+Output debug messages, this option may be specified multiple times.
+\&\fImagic\fR determines what is output:
+.Sp
+.Vb 6
+\& magic remark
+\& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+\& script internal progress messages of driver scripts
+\& keep_tmpfiles don\*(Aqt discard temporary files
+\& markup output markup trace, as explained in xindy manual
+\& level=n log level, n is 0 (default), 1, 2, or 3
+.Ve
+.ie n .IP """\-\-out\-file"" \fIoutfile.ind\fR / \fB\-o\fR \fIoutfile.ind\fR" 4
+.el .IP "\f(CW\-\-out\-file\fR \fIoutfile.ind\fR / \fB\-o\fR \fIoutfile.ind\fR" 4
+.IX Item "--out-file outfile.ind / -o outfile.ind"
+Output index to file \fIoutfile.ind\fR. If this option is not passed, the
+name of the output file is the base name of the first argument and the
+file extension \fIind\fR. If the raw index is read from standard input,
+this option is mandatory.
+.ie n .IP """\-\-log\-file"" \fIlog.ilg\fR / \fB\-t\fR \fIlog.ilg\fR" 4
+.el .IP "\f(CW\-\-log\-file\fR \fIlog.ilg\fR / \fB\-t\fR \fIlog.ilg\fR" 4
+.IX Item "--log-file log.ilg / -t log.ilg"
+Output log messages to file \fIlog.ilg\fR. These log messages are
+independent from the progress messages that you can influence with
+\&\f(CW\*(C`\-\-debug\*(C'\fR or \f(CW\*(C`\-\-verbose\*(C'\fR.
+.ie n .IP """\-\-language"" \fIlang\fR / \fB\-L\fR \fIlang\fR" 4
+.el .IP "\f(CW\-\-language\fR \fIlang\fR / \fB\-L\fR \fIlang\fR" 4
+.IX Item "--language lang / -L lang"
+The index is sorted according to the rules of language \fIlang\fR. These
+rules are encoded in a xindy module created by \fImake-rules\fR.
+.Sp
+If no input encoding is specified via \f(CW\*(C`\-\-codepage\*(C'\fR or enforced by
+input markup, a xindy module for that language is searched with a
+latin, a cp, an iso, ascii, or utf8 encoding, in that order.
+.Sp
+Language modules are either placed in the \fIlang\fR or in the
+\&\fIcontrib/lang\fR sub-directory of the modules base directory.
+.ie n .IP """\-\-codepage"" \fIenc\fR / \fB\-C\fR \fIenc\fR" 4
+.el .IP "\f(CW\-\-codepage\fR \fIenc\fR / \fB\-C\fR \fIenc\fR" 4
+.IX Item "--codepage enc / -C enc"
+The raw input is in input encoding \fIenc\fR. This information is used to
+select the correct xindy sort module and output encoding of letter
+group headings.
+.Sp
+When \f(CW\*(C`xelatex\*(C'\fR or \f(CW\*(C`omega\*(C'\fR input markup is used, \f(CW\*(C`utf8\*(C'\fR is always
+used as codepage, then this option is ignored.
+.Sp
+If raw input is in \s-1LICR,\s0 \fItexindy\fR\|(1) should be used instead of
+\&\fIxindy\fR\|(1). It will activate a mapping of \fIinputenc\fR encoding for
+\&\f(CW\*(C`latex\*(C'\fR input markup to the chosen raw input codepage.
+.ie n .IP """\-\-module"" \fImodule\fR / \fB\-M\fR \fImodule\fR" 4
+.el .IP "\f(CW\-\-module\fR \fImodule\fR / \fB\-M\fR \fImodule\fR" 4
+.IX Item "--module module / -M module"
+Load the xindy module \fImodule.xdy\fR. This option may be specified
+multiple times. The modules are searched in the xindy search path that
+can be changed with the environment variable \f(CW\*(C`XINDY_SEARCHPATH\*(C'\fR.
+.ie n .IP """\-\-input\-markup"" \fIinput\fR / \fB\-I\fR \fIinput\fR" 4
+.el .IP "\f(CW\-\-input\-markup\fR \fIinput\fR / \fB\-I\fR \fIinput\fR" 4
+.IX Item "--input-markup input / -I input"
+Specifies the input markup of the raw index. Supported values for
+\&\fIinput\fR are \f(CW\*(C`latex\*(C'\fR, \f(CW\*(C`xelatex\*(C'\fR, \f(CW\*(C`omega\*(C'\fR, and \f(CW\*(C`xindy\*(C'\fR.
+.Sp
+\&\f(CW\*(C`latex\*(C'\fR and \f(CW\*(C`xelatex\*(C'\fR input markup is the one that is emitted by
+default from the LaTeX kernel, or by the \f(CW\*(C`index\*(C'\fR macro package of
+David Jones. ^^\-notation of single byte characters is supported.
+Remapping of LICR-encoded characters is not done; use \fItexindy\fR\|(1) for
+that. Use input markup \f(CW\*(C`latex\*(C'\fR if you use standard LaTeX or pdfLaTeX
+and use input markup \f(CW\*(C`xelatex\*(C'\fR if you use XeLaTeX or LuaLaTeX.
+.Sp
+\&\f(CW\*(C`omega\*(C'\fR input markup is like \f(CW\*(C`latex\*(C'\fR input markup, but with Omega's
+^^\-notation as encoding for non-ASCII characters.
+.Sp
+\&\f(CW\*(C`xindy\*(C'\fR input markup is specified in the xindy manual.
+.ie n .IP """\-\-interactive""" 4
+.el .IP "\f(CW\-\-interactive\fR" 4
+.IX Item "--interactive"
+Start xindy in interactive mode. You will be in a xindy read-eval-loop
+where xindy language expressions are read and evaluated interactively.
+.ie n .IP """\-\-mem\-file"" \fIxindy.mem\fR" 4
+.el .IP "\f(CW\-\-mem\-file\fR \fIxindy.mem\fR" 4
+.IX Item "--mem-file xindy.mem"
+This option is only usable for developers or in very rare situations.
+The compiled xindy kernel is stored in a so-called \fImemory file\fR,
+canonically named \fIxindy.mem\fR, and located in the xindy library
+directory. This option allows to use another xindy kernel.
+.SH "SUPPORTED LANGUAGES / CODEPAGES"
+.IX Header "SUPPORTED LANGUAGES / CODEPAGES"
+The following languages are supported:
+.SS "Latin scripts"
+.IX Subsection "Latin scripts"
+.Vb 10
+\& albanian gypsy portuguese
+\& croatian hausa romanian
+\& czech hungarian russian\-iso
+\& danish icelandic slovak\-small
+\& english italian slovak\-large
+\& esperanto kurdish\-bedirxan slovenian
+\& estonian kurdish\-turkish spanish\-modern
+\& finnish latin spanish\-traditional
+\& french latvian swedish
+\& general lithuanian turkish
+\& german\-din lower\-sorbian upper\-sorbian
+\& german\-duden norwegian vietnamese
+\& greek\-iso polish
+.Ve
+.PP
+German recognizes two different sorting schemes to handle umlauts:
+normally, \f(CW\*(C`a\*:\*(C'\fR is sorted like \f(CW\*(C`ae\*(C'\fR, but in phone books or
+dictionaries, it is sorted like \f(CW\*(C`a\*(C'\fR. The first scheme is known as
+\&\fI\s-1DIN\s0 order\fR, the second as \fIDuden order\fR.
+.PP
+\&\f(CW\*(C`*\-iso\*(C'\fR language names assume that the raw index entries are in \s-1ISO
+8859\-9\s0 encoding.
+.PP
+\&\f(CW\*(C`gypsy\*(C'\fR is a northern Russian dialect.
+.SS "Cyrillic scripts"
+.IX Subsection "Cyrillic scripts"
+.Vb 3
+\& belarusian mongolian serbian
+\& bulgarian russian ukrainian
+\& macedonian
+.Ve
+.SS "Other scripts"
+.IX Subsection "Other scripts"
+.Vb 1
+\& greek klingon
+.Ve
+.SS "Available Codepages"
+.IX Subsection "Available Codepages"
+This is not yet written. You can look them up in your xindy
+distribution, in the \fImodules/lang/language/\fR directory (where
+\&\fIlanguage\fR is your language). They are named
+\&\fIvariant\-codepage\-lang.xdy\fR, where \fIvariant\-\fR is most often empty
+(for german, it's \f(CW\*(C`din5007\*(C'\fR and \f(CW\*(C`duden\*(C'\fR; for spanish, it's \f(CW\*(C`modern\*(C'\fR
+and \f(CW\*(C`traditional\*(C'\fR, etc.)
+.PP
+.Vb 1
+\& < Describe available codepages for each language >
+\&
+\& < Describe relevance of codepages (as internal representation) for
+\& LaTeX inputenc >
+.Ve
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+.ie n .IP """XINDY_SEARCHPATH""" 4
+.el .IP "\f(CWXINDY_SEARCHPATH\fR" 4
+.IX Item "XINDY_SEARCHPATH"
+A list of directories where the xindy modules are searched in. No
+subtree searching is done (as in TDS-conformant TeX).
+.Sp
+If this environment variable is not set, the default is used:
+\&\f(CW\*(C`.:\*(C'\fR\fImodules_dir\fR\f(CW\*(C`:\*(C'\fR\fImodules_dir\fR\f(CW\*(C`/base\*(C'\fR. \fImodules_dir\fR is
+determined at run time, relative to the \fBxindy\fR command location:
+Either it's \fI../modules\fR, that's the case for \fIopt\fR\-installations.
+Or it's \fI../lib/xindy/modules\fR, that's the case for
+\&\fIusr\fR\-installations.
+.ie n .IP """XINDY_LIBDIR""" 4
+.el .IP "\f(CWXINDY_LIBDIR\fR" 4
+.IX Item "XINDY_LIBDIR"
+Library directory where \fIxindy.mem\fR is located.
+.Sp
+The modules directory may be a subdirectory, too.
+.SH "COMPATIBILITY TO MAKEINDEX"
+.IX Header "COMPATIBILITY TO MAKEINDEX"
+\&\fBxindy\fR does not claim to be completely compatible with MakeIndex,
+that would prevent some of its enhancements. That said, we strive to
+deliver as much compatibility as possible. The most important
+incompatibilities are
+.IP "\(bu" 4
+For raw index entries in LaTeX syntax, \f(CW\*(C`\eindex{aaa|bbb}\*(C'\fR is
+interpreted differently. For MakeIndex \f(CW\*(C`bbb\*(C'\fR is markup that is output
+as a LaTeX tag for this page number. For \fBxindy\fR, this is a location
+attribute, an abstract identifier that will be later associated with
+markup that should be output for that attribute.
+.Sp
+For straight-forward usage, when \f(CW\*(C`bbb\*(C'\fR is \f(CW\*(C`textbf\*(C'\fR or similar, we
+supply location attribute definitions that mimic MakeIndex's
+behaviour.
+.Sp
+For more complex usage, when \f(CW\*(C`bbb\*(C'\fR is not an identifier, no such
+compatibility definitions exist and may also not been created with
+current \fBxindy\fR. In particular, this means that by default the LaTeX
+package \f(CW\*(C`hyperref\*(C'\fR will create raw index files that cannot be
+processed with \fBxindy\fR. This is not a bug, this is the unfortunate
+result of an intented incompatibility. It is currently not possible to
+get both hyperref's index links and use \fBxindy\fR.
+.Sp
+A similar situation is reported to exist for the \f(CW\*(C`memoir\*(C'\fR LaTeX
+class.
+.Sp
+Programmers who know Common Lisp and Lex and want to work on a remedy
+should please contact the author.
+.IP "\(bu" 4
+If you have an index rage and a location attribute, e.g.,
+\&\f(CW\*(C`\eindex{key\e(attr}\*(C'\fR starts the range, one needs (1) to specify that
+attribute in the range closing entry as well (i.e., as
+\&\f(CW\*(C`\eindex{key\e)attr}\*(C'\fR) and (2) one needs to declare the index attribute
+in an \fBxindy\fR style file.
+.Sp
+MakeIndex will output the markup \f(CW\*(C`\eattr{page1\-\-page2}\*(C'\fR for such a
+construct. This is not possible to achieve in \fBxindy\fR, output will be
+\&\f(CW\*(C`\eattrMarkup{page1}\-\-\eattrMarkup{page2}\*(C'\fR. (This is actually
+considered a bug, but not a high priority one.)
+.Sp
+The difference between MakeIndex page number tags and \fBxindy\fR
+location attributes was already explained in the previous item.
+.IP "\(bu" 4
+The MakeIndex compatibility definitions support only the default raw
+index syntax and markup definition. It is not possible to configure
+raw index parsing or use a MakeIndex style file to describe output
+markup.
+.SH "KNOWN ISSUES"
+.IX Header "KNOWN ISSUES"
+Option \fB\-q\fR also prevents output of error messages. Error messages
+should be output on stderr, progress messages on stdout.
+.PP
+There should be a way to output the final index to stdout. This would
+imply \fB\-q\fR, of course.
+.PP
+LaTeX raw index parsing should be configurable.
+.PP
+Codepage \f(CW\*(C`utf8\*(C'\fR should be supported for all languages, and should be
+used as internal codepage for LaTeX inputenc re-encoding.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fItexindy\fR\|(1),
+\&\fItex2xindy\fR\|(1)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Joachim Schrod
+.SH "LEGALESE"
+.IX Header "LEGALESE"
+Copyright (C) 2004\-2014 by Joachim Schrod.
+.PP
+\&\fBxindy\fR is free software; you can redistribute it and/or modify it
+under the terms of the \s-1GNU\s0 General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+.PP
+This program is distributed in the hope that it will be useful,
+but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
+\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the
+\&\s-1GNU\s0 General Public License for more details.
diff --git a/Build/source/utils/xindy/xindy-src/user-commands/xindy.in b/Build/source/utils/xindy/xindy-src/user-commands/xindy.in
new file mode 100644
index 00000000000..df52dd948c9
--- /dev/null
+++ b/Build/source/utils/xindy/xindy-src/user-commands/xindy.in
@@ -0,0 +1,993 @@
+#!/usr/bin/env perl
+# $Id: xindy.pl,v 1.18 2011/01/18 22:18:29 jschrod Exp $
+#------------------------------------------------------------
+# (history at end)
+
+=head1 NAME
+
+xindy - create sorted and tagged index from raw index
+
+=head1 SYNOPSIS
+
+ xindy [-V?h] [-qv] [-d magic] [-o outfile.ind] [-t log] \
+ [-L lang] [-C codepage] [-M module] [-I input] \
+ [--interactive] [--mem-file=xindy.mem] \
+ [idx0 idx1 ...]
+
+=head2 GNU-Style Long Options for Short Options:
+
+ -V / --version
+ -? / -h / --help
+ -q / --quiet
+ -v / --verbose
+ -d / --debug (multiple times)
+ -o / --out-file
+ -t / --log-file
+ -L / --language
+ -C / --codepage
+ -M / --module (multiple times)
+ -I / --input-markup (supported: latex, xelatex, omega, xindy)
+
+
+=head1 DESCRIPTION
+
+B<xindy> is the formatter-indepedent command of xindy, the flexible
+indexing system. It takes a raw index as input, and produces a merged,
+sorted and tagged index. Merging, sorting, and tagging is controlled
+by xindy style files.
+
+Files with the raw index are passed as arguments. If no arguments are
+passed, the raw index will be read from standard input.
+
+B<xindy> is completely described in its manual that you will find on
+its Web Site, http://www.xindy.org/. A good introductionary
+description appears in the indexing chapter of the LaTeX Companion (2nd ed.)
+
+If you want to produce an index for LaTeX documents, the command
+texindy(1) is probably more of interest for you. It is a wrapper for
+B<xindy> that turns on many LaTeX conventions by default.
+
+
+=head1 OPTIONS
+
+=over
+
+=item C<--version> / B<-V>
+
+output version numbers of all relevant components and exit.
+
+=item C<--help> / B<-h> / B<-?>
+
+output usage message with options explanation.
+
+=item C<--quiet> / B<-q>
+
+Don't output progress messages. Output only error messages.
+
+=item C<--verbose> / B<-v>
+
+Output verbose progress messages.
+
+=item C<--debug> I<magic> / B<-d> I<magic>
+
+Output debug messages, this option may be specified multiple times.
+I<magic> determines what is output:
+
+ magic remark
+ ------------------------------------------------------------
+ script internal progress messages of driver scripts
+ keep_tmpfiles don't discard temporary files
+ markup output markup trace, as explained in xindy manual
+ level=n log level, n is 0 (default), 1, 2, or 3
+
+=item C<--out-file> F<outfile.ind> / B<-o> F<outfile.ind>
+
+Output index to file F<outfile.ind>. If this option is not passed, the
+name of the output file is the base name of the first argument and the
+file extension F<ind>. If the raw index is read from standard input,
+this option is mandatory.
+
+=item C<--log-file> F<log.ilg> / B<-t> F<log.ilg>
+
+Output log messages to file F<log.ilg>. These log messages are
+independent from the progress messages that you can influence with
+C<--debug> or C<--verbose>.
+
+=item C<--language> I<lang> / B<-L> I<lang>
+
+The index is sorted according to the rules of language I<lang>. These
+rules are encoded in a xindy module created by I<make-rules>.
+
+If no input encoding is specified via C<--codepage> or enforced by
+input markup, a xindy module for that language is searched with a
+latin, a cp, an iso, ascii, or utf8 encoding, in that order.
+
+Language modules are either placed in the F<lang> or in the
+F<contrib/lang> sub-directory of the modules base directory.
+
+=item C<--codepage> I<enc> / B<-C> I<enc>
+
+The raw input is in input encoding I<enc>. This information is used to
+select the correct xindy sort module and output encoding of letter
+group headings.
+
+When C<xelatex> or C<omega> input markup is used, C<utf8> is always
+used as codepage, then this option is ignored.
+
+If raw input is in LICR, texindy(1) should be used instead of
+xindy(1). It will activate a mapping of I<inputenc> encoding for
+C<latex> input markup to the chosen raw input codepage.
+
+=item C<--module> I<module> / B<-M> I<module>
+
+Load the xindy module F<module.xdy>. This option may be specified
+multiple times. The modules are searched in the xindy search path that
+can be changed with the environment variable C<XINDY_SEARCHPATH>.
+
+=item C<--input-markup> I<input> / B<-I> I<input>
+
+Specifies the input markup of the raw index. Supported values for
+I<input> are C<latex>, C<xelatex>, C<omega>, and C<xindy>.
+
+C<latex> and C<xelatex> input markup is the one that is emitted by
+default from the LaTeX kernel, or by the C<index> macro package of
+David Jones. ^^-notation of single byte characters is supported.
+Remapping of LICR-encoded characters is not done; use texindy(1) for
+that. Use input markup C<latex> if you use standard LaTeX or pdfLaTeX
+and use input markup C<xelatex> if you use XeLaTeX or LuaLaTeX.
+
+C<omega> input markup is like C<latex> input markup, but with Omega's
+^^-notation as encoding for non-ASCII characters.
+
+C<xindy> input markup is specified in the xindy manual.
+
+=item C<--interactive>
+
+Start xindy in interactive mode. You will be in a xindy read-eval-loop
+where xindy language expressions are read and evaluated interactively.
+
+=item C<--mem-file> I<xindy.mem>
+
+This option is only usable for developers or in very rare situations.
+The compiled xindy kernel is stored in a so-called I<memory file>,
+canonically named F<xindy.mem>, and located in the xindy library
+directory. This option allows to use another xindy kernel.
+
+=back
+
+
+=head1 SUPPORTED LANGUAGES / CODEPAGES
+
+The following languages are supported:
+
+=head2 Latin scripts
+
+ albanian gypsy portuguese
+ croatian hausa romanian
+ czech hungarian russian-iso
+ danish icelandic slovak-small
+ english italian slovak-large
+ esperanto kurdish-bedirxan slovenian
+ estonian kurdish-turkish spanish-modern
+ finnish latin spanish-traditional
+ french latvian swedish
+ general lithuanian turkish
+ german-din lower-sorbian upper-sorbian
+ german-duden norwegian vietnamese
+ greek-iso polish
+
+German recognizes two different sorting schemes to handle umlauts:
+normally, C<ä> is sorted like C<ae>, but in phone books or
+dictionaries, it is sorted like C<a>. The first scheme is known as
+I<DIN order>, the second as I<Duden order>.
+
+C<*-iso> language names assume that the raw index entries are in ISO
+8859-9 encoding.
+
+C<gypsy> is a northern Russian dialect.
+
+=head2 Cyrillic scripts
+
+ belarusian mongolian serbian
+ bulgarian russian ukrainian
+ macedonian
+
+=head2 Other scripts
+
+ greek klingon
+
+=head2 Available Codepages
+
+This is not yet written. You can look them up in your xindy
+distribution, in the F<modules/lang/language/> directory (where
+I<language> is your language). They are named
+F<variant-codepage-lang.xdy>, where F<variant-> is most often empty
+(for german, it's C<din5007> and C<duden>; for spanish, it's C<modern>
+and C<traditional>, etc.)
+
+ < Describe available codepages for each language >
+
+ < Describe relevance of codepages (as internal representation) for
+ LaTeX inputenc >
+
+
+
+=head1 ENVIRONMENT
+
+=over
+
+=item C<XINDY_SEARCHPATH>
+
+A list of directories where the xindy modules are searched in. No
+subtree searching is done (as in TDS-conformant TeX).
+
+If this environment variable is not set, the default is used:
+C<.:>I<modules_dir>C<:>I<modules_dir>C</base>. I<modules_dir> is
+determined at run time, relative to the B<xindy> command location:
+Either it's F<../modules>, that's the case for F<opt>-installations.
+Or it's F<../lib/xindy/modules>, that's the case for
+F<usr>-installations.
+
+=item C<XINDY_LIBDIR>
+
+Library directory where F<xindy.mem> is located.
+
+The modules directory may be a subdirectory, too.
+
+=back
+
+
+=head1 COMPATIBILITY TO MAKEINDEX
+
+B<xindy> does not claim to be completely compatible with MakeIndex,
+that would prevent some of its enhancements. That said, we strive to
+deliver as much compatibility as possible. The most important
+incompatibilities are
+
+=over
+
+=item *
+
+For raw index entries in LaTeX syntax, C<\index{aaa|bbb}> is
+interpreted differently. For MakeIndex C<bbb> is markup that is output
+as a LaTeX tag for this page number. For B<xindy>, this is a location
+attribute, an abstract identifier that will be later associated with
+markup that should be output for that attribute.
+
+For straight-forward usage, when C<bbb> is C<textbf> or similar, we
+supply location attribute definitions that mimic MakeIndex's
+behaviour.
+
+For more complex usage, when C<bbb> is not an identifier, no such
+compatibility definitions exist and may also not been created with
+current B<xindy>. Such a situation is reported to exist for the
+C<memoir> LaTeX class.
+
+Programmers who know Common Lisp and Lex and want to work on a remedy
+should please contact the author.
+
+=item *
+
+If you have an index rage and a location attribute, e.g.,
+C<\index{key\(attr}> starts the range, one needs (1) to specify that
+attribute in the range closing entry as well (i.e., as
+C<\index{key\)attr}>) and (2) one needs to declare the index attribute
+in an B<xindy> style file.
+
+MakeIndex will output the markup C<\attr{page1--page2}> for such a
+construct. This is not possible to achieve in B<xindy>, output will be
+C<\attrMarkup{page1}--\attrMarkup{page2}>. (This is actually
+considered a bug, but not a high priority one.)
+
+The difference between MakeIndex page number tags and B<xindy>
+location attributes was already explained in the previous item.
+
+=item *
+
+The MakeIndex compatibility definitions support only the default raw
+index syntax and markup definition. It is not possible to configure
+raw index parsing or use a MakeIndex style file to describe output
+markup.
+
+=back
+
+
+=head1 KNOWN ISSUES
+
+Option B<-q> also prevents output of error messages. Error messages
+should be output on stderr, progress messages on stdout.
+
+There should be a way to output the final index to stdout. This would
+imply B<-q>, of course.
+
+LaTeX raw index parsing should be configurable.
+
+Codepage C<utf8> should be supported for all languages, and should be
+used as internal codepage for LaTeX inputenc re-encoding.
+
+
+=head1 SEE ALSO
+
+texindy(1),
+tex2xindy(1)
+
+
+=head1 AUTHOR
+
+Joachim Schrod
+
+
+=head1 LEGALESE
+
+Copyright (c) 2004-2014 by Joachim Schrod.
+
+B<xindy> 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 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.
+
+=for Emacs
+# '
+
+=cut
+
+
+use strict;
+use English qw(-no_match_vars);
+
+our $VERSION = sprintf "%d.%02d", q$Revision: 1.18 $ =~ /: (\d+)\.(\d+)/ ;
+
+
+# Used modules.
+
+use Cwd;
+use File::Basename;
+use File::Glob qw(bsd_glob);
+use File::Spec;
+use File::Temp qw(tempfile tmpnam);
+use Getopt::Long qw(:config bundling);
+use POSIX qw(uname);
+
+
+# Determine environment. Where is our library directory, and our modules?
+
+our $is_TL = ( '@is_TL@' eq 'yes' );
+our $is_w32 = ( $OSNAME =~ /^MSWin/i ) ;
+our $path_sep = ( $is_w32 ? ';' : ':' ) ;
+our $is_windows = ( $is_w32 || $OSNAME eq 'cygwin' ) ;
+our $clisp = ( $is_windows ? 'clisp.exe' : 'clisp' ) ;
+our $real_cmd = Cwd::realpath($0);
+our $cmd_dir = dirname($real_cmd);
+our $cmd = basename($0);
+
+our ($lib_dir, $modules_dir);
+
+# xindy-lisp.exe for Windows seems to be unable to interpret the short-name
+# format which is a default for the variables TEMP and TMP in Windows OS.
+# As a workaround, we create temporary files in the current directory
+# in xindy on Windows.
+
+if ( $is_w32 ) {
+use Env qw(TMPDIR);
+Env::import();
+$TMPDIR = ".";
+}
+
+# We have different installation structures for TeX-Live and a
+# standalone installation. In TeX-Live, the user command is a symlink
+# in some bin directory, and the actual script is in the library
+# directory where both memory image and modules live as well.
+# Standalone installations come in /usr or /opt variants, memory
+# images are located in a lib directory, modules are located in a
+# share directory.
+#
+# FIXME: In standalone installations, modules are still placed in lib
+# directory. This is not conformant to FHS.
+
+if ( $is_TL ) { # TeX Live, MiKTeX, or W32TeX
+
+ $modules_dir = Cwd::realpath("$cmd_dir/../../xindy/modules");
+ die "$cmd: Cannot locate xindy modules directory" unless -d $modules_dir;
+
+ if ( $is_w32 ) {
+ if ( -d "$cmd_dir/../../../bin/win32" ) { # TeX Live
+ $cmd_dir = "$cmd_dir/../../../bin/win32";
+ } elsif ( -d "$cmd_dir/../../miktex/bin/x64/internal" ) { # MiKTeX 64-bit
+ $cmd_dir = "$cmd_dir/../../miktex/bin/x64/internal";
+ } elsif ( -d "$cmd_dir/../../miktex/bin/internal" ) { # MiKTeX 32-bit
+ $cmd_dir = "$cmd_dir/../../miktex/bin/internal";
+ } elsif ( -d "$cmd_dir/../../../../bin" ) { # W32TeX
+ $cmd_dir = "$cmd_dir/../../../../bin";
+ } else {
+ die "$cmd: Cannot locate bin directory";
+ }
+ } else {
+ die "$cmd: not a symlink as required for TeX Live" unless -l $0;
+ # Follow symlinks and determine $cmd_dir such that
+ # $cmd_dir/xindy -> $r0 = XINDY_SCRIPTDIR/xindy.pl
+ # I.e., it determines the directory with the last symbolic link; the
+ # one that points to a real file. That's the directory with the binary
+ # files (Lisp executable and memory file).
+ $real_cmd = $0;
+ while (-l $real_cmd) {
+ $cmd_dir = dirname($real_cmd);
+ $real_cmd = readlink($real_cmd);
+ # \ directory separator may happen on Cygwin.
+ $real_cmd = "$cmd_dir/$real_cmd" unless $real_cmd =~ m,^[\\/],; # relative link
+ }
+ }
+
+ # library directory
+ $lib_dir = $cmd_dir;
+
+ # clisp runtime
+ my $xindy_run = ( $is_windows ?
+ "$lib_dir/xindy-lisp.exe" : "$lib_dir/xindy.run" );
+ $clisp = $xindy_run if -e $xindy_run;
+
+} else { # standalone installation
+
+ # library directory
+ if ( $ENV{XINDY_LIBDIR} ) {
+ $lib_dir = $ENV{XINDY_LIBDIR};
+ } elsif ( '@libdir@' ne '@libdir' . '@' ) { # GNU configure at work?
+ if ( -d '@libdir@/xindy' ) { # /usr style
+ $lib_dir = '@libdir@/xindy';
+ } else {
+ $lib_dir = '@libdir@'; # /opt style
+ }
+ } elsif ( -f "$cmd_dir/../lib/xindy.mem" ) { # /opt style
+ $lib_dir = "$cmd_dir/../lib";
+ } elsif ( -d "$cmd_dir/../lib/xindy" ) { # /usr style
+ $lib_dir = "$cmd_dir/../lib/xindy";
+ } else {
+ die "$cmd: Cannot locate xindy library directory";
+ }
+
+ # modules directory
+ if ( -d "$cmd_dir/../modules" ) { # /opt style
+ $modules_dir = "$cmd_dir/../modules";
+ } elsif ( -d "$lib_dir/modules" ) { # /usr style
+ $modules_dir = "$lib_dir/modules";
+ } else {
+ die "$cmd: Cannot locate xindy modules directory";
+ }
+
+} # determine environment
+
+
+# Check arguments, store them in proper variables.
+
+sub usage ( ;$ )
+{
+ my $exit_code = shift;
+ $exit_code += 0; # turn undef into 0
+ my $out = ( $exit_code ? *STDERR : *STDOUT );
+ print $out <<_EOT_
+
+usage: $cmd [-V?h] [-qv] [-d magic] [-o outfile.ind] [-t log] \\
+ [-L lang] [-C codepage] [-M module] [-I input] \\
+ [--interactive] [--mem-file xindy.mem] \\
+ [idx0 idx1 ...]
+
+GNU-STYLE LONG OPTIONS FOR SHORT OPTIONS:
+
+ -V / --version
+ -? / -h / --help
+ -q / --quiet
+ -v / --verbose
+ -d / --debug (multiple times)
+ (supported: script, keep_tmpfiles, markup, level=n)
+ -o / --out-file
+ -t / --log-file
+ -L / --language
+ -C / --codepage
+ -M / --module (multiple times)
+ -I / --input-markup (supported: latex, xelatex, omega, xindy)
+
+_EOT_
+ ;
+ exit ($exit_code);
+}
+
+our ($quiet, $verbose, %debug,
+ $outfile, $logfile, $language, @codepages, @modules, $input_markup,
+ $interactive, $mem_file);
+$input_markup = 'latex';
+$mem_file = "$lib_dir/xindy.mem";
+
+my @orig_argv = @ARGV;
+parse_options();
+
+
+# Support universal binary on Mac OS X.
+
+if ( $OSNAME eq 'darwin' && ! -e $mem_file ) {
+ my @uname = POSIX::uname();
+ if ( $uname[4] eq 'Power Macintosh' ) {
+ $mem_file = "$lib_dir/xindy-ppc.mem";
+ } else {
+ $mem_file = "$lib_dir/xindy-i386.mem";
+ }
+}
+die "$cmd: Cannot locate $mem_file" unless -e $mem_file;
+
+
+# This script creates temporary files. Whenever a file is created, its
+# name is added to @temp_files. In an END handler, the temporary files
+# are deleted. Signal handlers are set up to get proper program
+# termination on user-induced signals.
+
+our @temp_files = ();
+handle_signals();
+END {
+ unlink (@temp_files) if ( @temp_files && ! $debug{keep_tmpfiles} );
+}
+
+
+# Raw index handling: xindy is not able (yet?) to handle arguments
+# Perl-style, so we do it instead. We gather the raw index in a
+# temporary file. We also process it by the filter program it if
+# wanted. Signal handlers will discard temporary files if necessary.
+
+our $raw_index = File::Spec->devnull;
+unless ( $interactive ) {
+ for my $f ( @ARGV ) {
+ die "$cmd: input file $f does not exist" unless -f $f;
+ }
+ $raw_index = create_raw_index(); # processes @ARGV
+ my $filter_cmd = '';
+ if ( $input_markup =~ /latex$/ ) {
+ $filter_cmd = "$cmd_dir/tex2xindy";
+ } elsif ( $input_markup eq 'omega' ) {
+ $filter_cmd = "$cmd_dir/tex2xindy -o";
+ }
+ $raw_index = filter_index ($filter_cmd, $raw_index)
+ if $filter_cmd;
+}
+
+
+# Execution: Create xindy start expression and call it.
+
+my $xindy_expression = xindy_expression(); # accesses global option vars
+my $exit_code = call_xindy ($mem_file, $xindy_expression);
+
+
+# Finished: exit, clean up in END handler.
+
+exit ($exit_code);
+
+
+# ------------------------------------------------------------
+
+
+sub parse_options() {
+
+ my (@debug);
+ GetOptions(
+ 'version|V' => sub { output_version(0); },
+ 'internal-version' => sub { output_version(1); },
+ 'help|h|?' => \&usage,
+ 'quiet|q' => \$quiet,
+ 'verbose|v' => \$verbose,
+ 'debug|d=s' => \@debug,
+ 'out-file|o=s' => \$outfile,
+ 'log-file|t=s' => \$logfile,
+ 'language|L=s' => \$language,
+ 'codepage|C=s' => \@codepages,
+ 'module|M=s' => \@modules,
+ 'input-markup|I=s' => \$input_markup,
+ 'interactive' => \$interactive,
+ 'mem-file=s' => \$mem_file,
+ )
+ or usage(1);
+
+ # Debug option values are easier to test in a hash. Clean up trace
+ # level options, too.
+ %debug = map { $_ => 1 } @debug;
+ my @trace_level = grep /^level=/, @debug;
+ if ( @trace_level > 1 ) {
+ print STDERR "You can only specify one trace level.\n\n";
+ exit (1);
+ }
+ delete $debug{$trace_level[0]};
+ $trace_level[0] =~ s/^level=// ;
+ $debug{trace_level} = $trace_level[0];
+
+ # Check for unsupported debug option values.
+ my %debug_check = %debug;
+ foreach my $magic ( qw(script keep_tmpfiles markup trace_level) ) {
+ delete $debug_check{$magic};
+ }
+ if ( %debug_check ) {
+ my @magic = keys(%debug_check);
+ print STDERR "Unsupported argument for --debug: @magic\n";
+ usage(1);
+ }
+
+ # Script debugging implies running it verbose and not quiet.
+ if ( $debug{script} ) {
+ $verbose = 1;
+ $quiet = 0;
+ }
+
+ # Default for the output file: first argument, with extension replaced
+ # by ".ind".
+ unless ( $outfile || $interactive ) {
+ if ( @ARGV == 0 ) {
+ print STDERR
+"You need to specify --out-file if the raw index is read from standard input.\n";
+ usage(1);
+ }
+ my ($name, $path, $suffix) = fileparse ($ARGV[0], '\.[^\.]+');
+ if ($path eq ".\\") {
+ $outfile = "$name.ind";
+ } else {
+ $outfile = "$path$name.ind";
+ }
+ }
+
+ # FIXME: xindy wants a log file. Really?
+ $logfile = File::Spec->devnull unless $logfile;
+
+ # Modules fixup: If they have no .xdy suffix, they get one.
+ @modules = map { /\.xdy$/ ? $_ : "$_.xdy" } @modules;
+
+ # Check that the input markup is known.
+ # omega markup implies codepage utf8.
+ if ( $input_markup &&
+ $input_markup ne 'latex' && $input_markup ne 'xelatex' &&
+ $input_markup ne 'omega' && $input_markup ne 'xindy' ) {
+ print STDERR "Unsupported input markup $input_markup.\n";
+ usage(1);
+ }
+ if ( $input_markup eq 'xelatex' || $input_markup eq 'omega' ) {
+ @codepages = qw(utf8);
+ }
+
+}
+
+
+
+#
+# SIGNAL HANDLING
+#
+# FIXME: This is not good enough. We also need to kill subprocesses,
+# i.e., filter or xindy, if they are running.
+
+# Our signal handler function just exits. Temporary files are deleted
+# by the END section above. Actually, the exit code looses the
+# information about the received signal, that's not good but shouldn't
+# hurt either...
+
+sub signal_exit() {
+ exit (2);
+}
+
+sub handle_signals () {
+ $SIG{'HUP'} = \&signal_exit; # 1
+ $SIG{'INT'} = \&signal_exit; # 2
+ $SIG{'QUIT'} = \&signal_exit; # 3
+ $SIG{'TERM'} = \&signal_exit; # 15
+}
+
+
+
+#
+# CREATION OF RAW XINDY INDEX
+#
+
+# Handle input files Perl-style. Returns file name that contains
+# concatenated input file contents.
+
+sub create_raw_index () {
+ my ($output, $outfile) = tempfile();
+ push (@temp_files, $outfile);
+ $outfile=quotify($outfile);
+ while ( <> ) {
+ print $output $_;
+ }
+ close ($output);
+ print "concatenated xindy input file: $outfile\n" if $debug{script};
+ return $outfile;
+}
+
+
+# Run a filter over raw index. Returns file name with filtered raw
+# index, supposed to be in xindy input format.
+#
+# We assume the file names to be safe from shell meta characters since
+# they were computed by File::Temp.
+
+sub filter_index ( $$ ) {
+ my ($filter, $input) = @_;
+ my $output = tmpnam();
+ push (@temp_files, $output);
+ $output=quotify($output);
+ $filter=quotify($filter);
+ print "Running filter: $filter <$input >$output\n" if $verbose;
+ system "$filter <$input >$output";
+ print "filtered xindy input file: $output\n" if $debug{script};
+ return $output;
+}
+
+
+
+#
+# XINDY EXECUTION
+#
+
+# Construct final xindy expression, from options.
+
+sub xindy_expression () {
+ my ($logging, $tracing, $trace_level, $searchpath);
+
+ # Determine language module of make-rules framework. Part of the
+ # complexity below is from compatibility with the TLC2
+ # description. We need to support the language names listed there,
+ # even though they are not current. In addition, the codepage
+ # option was introduced later and we need to guess it. This
+ # guesswork will often be wrong, sadly.
+ #
+ # FIXME: I didn't see all languages. What's on with gypsy and
+ # hausa?
+ if ( !$language ) {
+ $language = "general";
+ }
+ if ( $language ) {
+ # If there is no language directory, this might be a variant.
+ # Language names and variants are separated by hyphens. The
+ # variant name "din" is an abbreviation for "din5007". The
+ # variant name "iso" is ignored, that is actually a codepage
+ # name.
+ #
+ # FIXME: Or is "iso" the variant "translit"?!
+ my @lang_base_dirs = ("$modules_dir/contrib/lang", "$modules_dir/lang");
+ my ($lang_dir, $variant);
+ foreach my $ld ( @lang_base_dirs ) {
+ if ( -d "$ld/$language" ) {
+ $lang_dir = "$ld/$language";
+ last;
+ } else {
+ $language =~ /^([^-]*)-(.*)/ ; # language name ends with 1st hyphen
+ if ( $2 && -d "$ld/$1" ) { # $2 is not set if the regex didn't match
+ $language = $1;
+ $lang_dir = "$ld/$language";
+ $variant = "$2-" unless ( $2 eq 'iso' );
+ $variant eq 'din-' and $variant = 'din5007-';
+ last;
+ }
+ }
+ }
+ # Let's guess the codepage. We take any that starts with
+ # "latin", "cp", "iso8859", "ascii", or "utf8".
+ @codepages = qw(latin cp iso8859 ascii utf8) unless @codepages;
+ my @styles;
+ foreach my $cp ( @codepages ) {
+ @styles = bsd_glob("$lang_dir/$variant$cp*-lang.xdy");
+ last if @styles;
+ }
+ unless ( @styles ) {
+ print STDERR "Cannot locate xindy module for language $language";
+ print STDERR " in codepage $codepages[0]" if ( @codepages == 1 );
+ print STDERR ".\n";
+ exit (1);
+ }
+ # Extract language module name: It's the relative part after
+ # the module directory. Put it at the front of the list of
+ # needed modules. It's important that the language module is
+ # loaded first, it defines the sort rulesets, and subsequent
+ # modules shall be able to add sort rules.
+ unshift (@modules, substr($styles[0], length("$modules_dir/")));
+ print "Found language module $styles[0]\n" if $debug{script};
+ }
+
+ # If there is more than one xindy module, construct a style file.
+ # This is bad, of course; xindy should handle a list of style
+ # files itself.
+ my $style_file = $modules[0]; # will be undef if @modules is not set
+ if ( @modules > 1 ) {
+ my $sf;
+ ($sf, $style_file) = tempfile();
+ push (@temp_files, $style_file);
+ $style_file=quotify($style_file);
+ foreach my $module ( @modules ) {
+ if (($module =~ /\//) || ($module =~ /\\/)) {
+ # If $module contains directory separators, the module must be a system
+ # module. So we don't call kpsewhich.
+ print $sf "(require \"$module\")\n";
+ } else {
+ # Here we call kpsewhich to search for a module. Thus modules can be under
+ # (anytexmf)/xindy/modules/
+ my $fnmodule=`kpsewhich -progname=xindy -format=othertext $module`;
+ if ($fnmodule) {
+ chomp($fnmodule);
+ print $sf "(require \"$fnmodule\")\n";
+ } else {
+ print $sf "(require \"$module\")\n";
+ }
+ }
+ }
+ close ($sf);
+ }
+
+ $outfile = quotify($outfile);
+ $logging = ':logfile ' . quotify($logfile) if $logfile;
+ $tracing = ':markup-trace :on' if $debug{markup};
+ $trace_level = ":trace-level $debug{trace_level}" if $debug{trace_level};
+ $searchpath = quotify(join($path_sep, ".", $modules_dir, "$modules_dir/base"));
+
+ my $exp = <<_EOT_
+(progn
+ (searchpath $searchpath)
+ (xindy:startup
+ :idxstyle $style_file
+ :rawindex $raw_index
+ :output $outfile
+ $logging
+ $tracing
+ $trace_level)
+ (exit))
+_EOT_
+ ;
+
+ return $exp;
+}
+
+
+# Actual xindy call. Returns exit code.
+
+sub call_xindy ( $$ ) {
+ my ($mem_file, $xindy_exp) = @_;
+
+ my @command = ($clisp, '-M', $mem_file, '-E', 'iso-8859-1');
+ if ( $interactive ) {
+ print "Proposed xindy expression:\n\n$xindy_exp\n" unless $quiet;
+ } elsif ($is_w32) {
+ my ($output, $outfile) = tempfile();
+ push (@temp_files, $outfile);
+ $outfile=quotify($outfile);
+ print $output $xindy_exp;
+ close ($output);
+ print "xindy startup file: $outfile\n" if $debug{script};
+ push (@command, "$outfile");
+ } else {
+ push (@command, '-x', $xindy_exp);
+ }
+
+ if ( $debug{script} ) {
+ print "modules directory: $modules_dir.\n";
+ print "command: @command\n";
+ }
+
+ if ( $quiet && ! $interactive ) {
+ open (STDOUT, '>', File::Spec->devnull);
+ }
+ system @command;
+ if ( $? == -1 ) {
+ print STDERR "$cmd: Could not execute xindy kernel: $!\n";
+ } elsif ( $? & 127 ) {
+ return 4;
+ } else {
+ return $? >> 8;
+ }
+}
+
+sub output_version ( ;$ ) { # optional arg: internal-version flag
+ my $internal = shift;
+ output_xindy_release() unless $internal;
+ print "$cmd script version: $VERSION\n";
+ my $exit_code = call_xindy($mem_file, '(xindy:startup :show-version t)');
+ exit ($exit_code);
+}
+
+
+sub output_xindy_release () {
+ my $version = 'unknown';
+ my $version_file;
+ if ( -f "$modules_dir/../VERSION" ) {
+ $version_file = "$modules_dir/../VERSION";
+ } elsif ( -f "$cmd_dir/../VERSION" ) {
+ $version_file = "$cmd_dir/../VERSION";
+ } elsif ( -f "$lib_dir/VERSION" ) {
+ $version_file = "$lib_dir/VERSION";
+ }
+ if ( $version_file ) {
+ if ( open(VERSION, "<$version_file") ) {
+ while ( $version = <VERSION> ) {
+ chomp ($version);
+ $version =~ s/\#.*// ;
+ $version =~ s/^\s+// ;
+ $version =~ s/\s+$// ;
+ last if $version;
+ }
+ close (VERSION);
+ }
+ }
+ print "xindy release: $version\n";
+}
+
+
+# Helper function: Make a proper quoted Lisp string.
+
+sub quotify ( $ ) {
+ my $s = shift;
+ $s =~ s:([\\\"]):\\$1:g ;
+ return "\"$s\"";
+}
+
+
+
+#======================================================================
+#
+# $Log: xindy.pl,v $
+# Revision 1.18 2011/01/18 22:18:29 jschrod
+# Document the range raw markup incompatibility with MakeIndex.
+# (Bug ticket 998541)
+#
+# Revision 1.17 2010/08/12 00:16:01 jschrod
+# Output help message on stdout if there's no error.
+#
+# Revision 1.16 2010/05/10 23:39:24 jschrod
+# Incorporate TeX-Live patches from Vladimir Volovich and Peter
+# Breitenlohner: Support for TL installation scheme, support for Mac OS
+# X, support for Windows in TL.
+#
+# Revision 1.15 2010/04/20 00:15:23 jschrod
+# Emphasize incompatibility with hyperref in man page.
+#
+# Revision 1.14 2009/12/03 00:28:22 jschrod
+# Search perl via env.
+#
+# Revision 1.13 2009/03/29 11:14:04 jschrod
+# xindy.run does not exist any more, call clisp directly.
+#
+# Revision 1.12 2009/03/26 17:27:28 jschrod
+# Checking for variant name din needs to take trailing hyphen into account.
+#
+# Revision 1.11 2009/03/22 11:08:18 jschrod
+# man page: --v is --verbose, not --version.
+#
+# Revision 1.10 2009/03/21 18:05:11 jschrod
+# Variant rename of din to din5007 made explicit. (Proposed by
+# Zdenek Wagner at 16 Mar 09.)
+#
+# Revision 1.9 2008/02/17 14:55:32 jschrod
+# Use exitcode 0 when usage is explicitly demanded with --help et.al.
+#
+# Revision 1.8 2006/07/30 10:30:42 jschrod
+# Check if an exec() error happened and output an error message.
+# (Ticket 1230801)
+#
+# Revision 1.7 2006/07/19 00:29:56 jschrod
+# Support for omega input markup.
+#
+# Revision 1.6 2005/05/02 19:16:26 jschrod
+# Support new RTE 2.2, built with CLISP 2.33.2, that needs -E option
+# to specify the default charset.
+# xindy also has proper version output in Lisp now, no need for
+# workarounds in script any more.
+#
+# Revision 1.5 2004/11/01 22:48:51 jschrod
+# Locate xindy script.
+# Terminate on option error.
+# Fix up version output.
+#
+# Revision 1.4 2004/08/05 14:10:54 jschrod
+# Language variant names may have hyphens now. Language names must
+# not have hyphens -- the first hyphen of the -L option argument
+# separates language and variant name.
+# Revision 1.3 was completely off -- I committed a copy of texindy.
+# I really don't know what happened there.
+#
+# Revision 1.2 2004/05/26 21:30:11 jschrod
+# Added POD documentation.
+#
+# Revision 1.1 2004/05/24 19:47:13 jschrod
+# Introduce new driver script, as part of the "Companion Release".
+#