diff --git a/NEWS b/NEWS index 5162534d2d..3590878a98 100644 --- a/NEWS +++ b/NEWS @@ -37,6 +37,10 @@ Version 2.26 headers, and the NIS(+) name service modules, to be built and installed. This option may be removed in a future release. +* Extensive new collation tests for Hungarian locales based on + "The Rules of Hungarian Orthography, 12th edition" and the work of + Egmont Koblinger (Bug 18934). + Security related changes: [Add security related changes here] diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 3b257a2f32..f0d5965cff 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,10 @@ +2017-03-28 Egmont Koblinger + + [BZ #18934] + * locales/hu_HU: Fix multiple collate bugs. + * hu_HU.in: New file. + * Makefile (test-input): Add hu_HU.UTF-8. + 2017-02-20 Mike FABIAN [BZ #20313] diff --git a/localedata/Makefile b/localedata/Makefile index f6a70a3254..47ca39d76a 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -37,7 +37,7 @@ test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \ tst-ctype tst-langinfo tst-langinfo-static tst-numeric test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 tr_TR.UTF-8 fr_FR.UTF-8 \ - si_LK.UTF-8 uk_UA.UTF-8 + si_LK.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8 test-input-data = $(addsuffix .in, $(basename $(test-input))) test-output := $(foreach s, .out .xout, \ $(addsuffix $s, $(basename $(test-input)))) @@ -106,7 +106,7 @@ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \ nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 tr_TR.UTF-8 cs_CZ.UTF-8 \ zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 si_LK.UTF-8 \ - tr_TR.ISO-8859-9 en_GB.UTF-8 uk_UA.UTF-8 + tr_TR.ISO-8859-9 en_GB.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8 include ../gen-locales.mk endif diff --git a/localedata/hu_HU.in b/localedata/hu_HU.in new file mode 100644 index 0000000000..7736ac08f7 --- /dev/null +++ b/localedata/hu_HU.in @@ -0,0 +1,560 @@ +AkH-14-a1 acél ; The "AkH" tests are from: +AkH-14-a1 cukor ; +AkH-14-a1 csók ; A magyar helyesírás szabályai, 12. kiadás +AkH-14-a1 gép ; [The Rules of Hungarian Orthography, 12th edition] +AkH-14-a1 hideg ; +AkH-14-a1 kettő ; often referred to as akadémiai helyesírás (AkH.) [academic orthography] +AkH-14-a1 Nagy ; +AkH-14-a1 nyúl ; http://helyesiras.mta.hu/helyesiras/default/akh12 +AkH-14-a1 olasz ; +AkH-14-a1 öröm ; Alphabetical ordering described in #14-16. +AkH-14-a1 remény +AkH-14-a1 sokáig ; #14-a1: Sort based on first letter. +AkH-14-a1 szabad +AkH-14-a1 Tamás +AkH-14-a1 vásárol +AkH-14-a2 jácint ; #14-a2: If no other difference, lowercase initial precedes uppercase. +AkH-14-a2 Jácint +AkH-14-a2 opera +AkH-14-a2 Opera +AkH-14-a2 szűcs +AkH-14-a2 Szűcs +AkH-14-a2 viola +AkH-14-a2 Viola +AkH-14-a3 cudar ; #14-a3: Compound letters (cs, dz, dzs, gy, ly, ny, sz, ty, zs) +AkH-14-a3 cukor ; are sorted separately, after their first letter: +AkH-14-a3 cuppant ; a b c cs d dz dzs e f g gy h ... l ly m n ny o ... s sz t ty u ... z zs +AkH-14-a3 csalit +AkH-14-a3 csata +AkH-14-a3 Csepel +AkH-14-a3 Zoltán +AkH-14-a3 zongora +AkH-14-a3 zúdul +AkH-14-a3 zsalu +AkH-14-a3 zseni +AkH-14-a3 Zsigmond +AkH-14-b1 lom ; #14-b1: The first difference matters. +AkH-14-b1 lomb +AkH-14-b1 lombik +AkH-14-b1 Lontay +AkH-14-b1 lovagol +AkH-14-b1 pirinkó +AkH-14-b1 pirinyó +AkH-14-b1 pirít +AkH-14-b1 pirkad +AkH-14-b1 Piroska +AkH-14-b1 tükör +AkH-14-b1 Tünde +AkH-14-b1 tünemény +AkH-14-b1 tüntet +AkH-14-b1 tüzér +AkH-14-b2 kas ; #14-b2: If a compound letter is pronounced long, only the first letter +AkH-14-b2 Kasmír ; is duplicated in writing: becomes ccs, is ddzs etc. +AkH-14-b2 Kassák ; (unless it's at the boundary of a compound word where it's written out twice). +AkH-14-b2 kastély ; Sort according to the actual tokens, not the shorthand written form. +AkH-14-b2 kasza ; +AkH-14-b2 kaszinó ; <ó> +AkH-14-b2 kassza ; +AkH-14-b2 kaszt ; +AkH-14-b2 mennek +AkH-14-b2 mennének +AkH-14-b2 menü +AkH-14-b2 menza +AkH-14-b2 meny ; +AkH-14-b2 Menyhért ; <é> +AkH-14-b2 mennybolt ; +AkH-14-b2 mennyi ; +AkH-14-b2 nagy ; +AkH-14-b2 naggyá ; <á> +AkH-14-b2 nagygyakorlat ; (compound word: nagy+gyakorlat) +AkH-14-b2 naggyal ; +AkH-14-b2 nagyít ; <í> +AkH-14-b2 nagyobb +AkH-14-b2 nagyol +AkH-14-b2 nagyoll +AkH-14-c1 ír ; #14-c1: Vowels collate equally in pairs: a-á, e-é, i-í, o-ó, ö-ő, u-ú, ü-ű. +AkH-14-c1 Irak +AkH-14-c1 iram +AkH-14-c1 Irán +AkH-14-c1 írandó +AkH-14-c1 iránt +AkH-14-c1 író +AkH-14-c1 iroda +AkH-14-c1 irónia +AkH-14-c2 Eger ; #14-c2: Short vowel (unaccented, or with diaeresis) comes first if that's the only difference. +AkH-14-c2 egér +AkH-14-c2 egyfelé +AkH-14-c2 egyféle +AkH-14-c2 elöl +AkH-14-c2 elől +AkH-14-c2 kerek +AkH-14-c2 kerék +AkH-14-c2 keres +AkH-14-c2 kérés +AkH-14-c2 koros +AkH-14-c2 kóros +AkH-14-c2 szel +AkH-14-c2 szél +AkH-14-c2 szeles +AkH-14-c2 széles +AkH-14-c2 szüret +AkH-14-c2 szűret +AkH-14-d1 kis részben ; #14-d1: Spaces, hyphens are ignored. +AkH-14-d1 kissé +AkH-14-d1 Kiss Ernő +AkH-14-d1 kis sorozat +AkH-14-d1 kissorozat-gyártás +AkH-14-d1 kis számban +AkH-14-d1 kistányér +AkH-14-d1 kis virág +AkH-14-d1 márvány +AkH-14-d1 márványkő +AkH-14-d1 márvány sírkő +AkH-14-d1 Márvány-tenger +AkH-14-d1 márványtömb +AkH-14-d1 Márvány Zsolt +AkH-14-d1 másféle +AkH-14-d1 másol +AkH-14-d1 tiszafa +AkH-14-d1 Tiszahát +AkH-14-d1 Tisza Kálmán +AkH-14-d1 Tisza menti +AkH-14-d1 Tiszántúl +AkH-14-d1 Tisza-part +AkH-14-d1 tiszavirág +AkH-14-d1 tiszt +AkH-15 cérna ; #15: Foreign accents are ignored, unless they're the only difference, +AkH-15 Černý ; in which case they are sorted after the Hungarian ones (in unspecified order). +AkH-15 Champagne +AkH-15 Cholnoky +AkH-15 címez +AkH-15 cukor +AkH-15 Czuczor +AkH-15 csapat +AkH-15 Gaal +AkH-15 galamb +AkH-15 Gärtner +AkH-15 gáz +AkH-15 geodézia +AkH-15 Georges +AkH-15 góc +AkH-15 Goethe +AkH-15 moshat +AkH-15 mosna +AkH-15 Mošna +AkH-15 mosópor +AkH-15 Møsstrand +AkH-15 mostan +AkH-15 munka +AkH-15 Muñoz +alphabet a ; All the remaining tests were added by glibc. +alphabet á +alphabet aa ; a = á unless that's the only difference in which case a < á. +alphabet aá ; (Same for e = é, i = í, o = ó, ö = ő, u = ú, ü = ű below.) +alphabet áa ; Differences in accents matter from left to right. +alphabet áá +alphabet áp +alphabet aq +alphabet b +alphabet c +alphabet cz ; +alphabet cs ; -- or rarely , can't tell for sure, assume . +alphabet csc ; +alphabet ccs ; -- or rarely , can't tell for sure, assume . +alphabet cscs ; -- Make sure ccs and cscs don't collate as equal, see bug 13547. +alphabet ccsa ; -- The order of ccs and cscs is not specified in the rules and is arbitrarily chosen by glibc. +alphabet cscsa ; +alphabet csd ; -- (These comments also apply to all other compound letters below.) +alphabet d +alphabet dz ; +alphabet dzd ; +alphabet ddz ; +alphabet dzdz ; +alphabet ddza ; +alphabet dzdza ; +alphabet dzdzs ; +alphabet dze ; +alphabet dzz ; +alphabet dzs ; +alphabet dzsdz ; +alphabet ddzs ; +alphabet dzsdzs ; +alphabet ddzsa ; +alphabet dzsdzsa ; +alphabet dzse ; +alphabet e +alphabet é +alphabet ee +alphabet eé +alphabet ée +alphabet éé +alphabet ép +alphabet eq +alphabet f +alphabet g +alphabet gz ; +alphabet gy ; +alphabet gyg ; +alphabet ggy ; +alphabet gygy ; +alphabet ggya ; +alphabet gygya ; +alphabet gyh ; +alphabet h +alphabet i +alphabet í +alphabet ii +alphabet ií +alphabet íi +alphabet íí +alphabet íp +alphabet iq +alphabet j +alphabet k +alphabet l +alphabet lz ; +alphabet ly ; +alphabet lyl ; +alphabet lly ; +alphabet lyly ; +alphabet llya ; +alphabet lylya ; +alphabet lym ; +alphabet m +alphabet n +alphabet nz ; +alphabet ny ; +alphabet nyn ; +alphabet nny ; +alphabet nyny ; +alphabet nnya ; +alphabet nynya ; +alphabet nyo ; +alphabet o +alphabet ó +alphabet oo +alphabet oó +alphabet óo +alphabet óó +alphabet óp +alphabet oq +alphabet ö ; ö = ő (unless that's the only difference), but these come strictly after o and ó. +alphabet ő +alphabet öö +alphabet öő +alphabet őö +alphabet őő +alphabet őp +alphabet öq +alphabet p +alphabet q +alphabet r +alphabet s +alphabet sz ; +alphabet szs ; +alphabet ssz ; +alphabet szsz ; +alphabet ssza ; +alphabet szsza ; +alphabet szt ; +alphabet t +alphabet tz ; +alphabet ty ; +alphabet tyt ; +alphabet tty ; +alphabet tyty ; +alphabet ttya ; +alphabet tytya ; +alphabet tyu ; +alphabet u +alphabet ú +alphabet úp +alphabet uq +alphabet uu +alphabet uú +alphabet úu +alphabet úú +alphabet ü ; ü = ű (unless that's the only difference), but these come strictly after u and ú. +alphabet ű +alphabet űp +alphabet üq +alphabet üü +alphabet üű +alphabet űü +alphabet űű +alphabet v +alphabet w +alphabet x +alphabet y +alphabet z +alphabet zz ; +alphabet zs ; +alphabet zsz ; +alphabet zzs ; +alphabet zszs ; +alphabet zzsa ; +alphabet zszsa ; +case a ; #14-a2 specifies that if the same word appears in lowercase as well as with +case A ; uppercase initial, the lowercase one is to be sorted first. +case á ; Arbitrarily extend this to all other weird combinations of upper- and lowercases in compound letters. +case Á +case cs ; +case cS +case Cs +case CS +case ccs ; +case ccS +case cCs +case cCS +case Ccs +case CcS +case CCs +case CCS +case dz ; +case dZ +case Dz +case DZ +case ddz ; +case ddZ +case dDz +case dDZ +case Ddz +case DdZ +case DDz +case DDZ +case dzs ; +case dzS +case dZs +case dZS +case Dzs +case DzS +case DZs +case DZS +case ddzs ; +case ddzS +case ddZs +case ddZS +case dDzs +case dDzS +case dDZs +case dDZS +case Ddzs +case DdzS +case DdZs +case DdZS +case DDzs +case DDzS +case DDZs +case DDZS +case e +case E +case é +case É +case gy ; +case gY +case Gy +case GY +case ggy ; +case ggY +case gGy +case gGY +case Ggy +case GgY +case GGy +case GGY +case i +case I +case í +case Í +case ly ; +case lY +case Ly +case LY +case lly ; +case llY +case lLy +case lLY +case Lly +case LlY +case LLy +case LLY +case ny ; +case nY +case Ny +case NY +case nny ; +case nnY +case nNy +case nNY +case Nny +case NnY +case NNy +case NNY +case o +case O +case ó +case Ó +case ö +case Ö +case ő +case Ő +case sz ; +case sZ +case Sz +case SZ +case ssz ; +case ssZ +case sSz +case sSZ +case Ssz +case SsZ +case SSz +case SSZ +case ty ; +case tY +case Ty +case TY +case tty ; +case ttY +case tTy +case tTY +case Tty +case TtY +case TTy +case TTY +case u +case U +case ú +case Ú +case ü +case Ü +case ű +case Ű +case zs ; +case zS +case Zs +case ZS +case zzs ; +case zzS +case zZs +case zZS +case Zzs +case ZzS +case ZZs +case ZZS +foreign-a1 á ; More thorough tests for foreign accents (#15). +foreign-a1 à ; Each test consists of 4 lines. The foreign accent is in the middle two. +foreign-a1 àp ; That is, on their own they come after the Hungarian accent, but a +foreign-a1 áq ; subsequent difference (p and q) overrides this. +foreign-a2 á +foreign-a2 â +foreign-a2 âp +foreign-a2 áq +foreign-a3 á +foreign-a3 ã +foreign-a3 ãp +foreign-a3 áq +foreign-a4 á +foreign-a4 ä +foreign-a4 äp +foreign-a4 áq +foreign-a5 á +foreign-a5 å +foreign-a5 åp +foreign-a5 áq +foreign-a6 á +foreign-a6 ă +foreign-a6 ăp +foreign-a6 áq +foreign-c1 c +foreign-c1 ç +foreign-c1 çp +foreign-c1 cq +foreign-d1 d +foreign-d1 đ +foreign-d1 đp +foreign-d1 dq +foreign-e1 é +foreign-e1 è +foreign-e1 èp +foreign-e1 éq +foreign-e2 é +foreign-e2 ê +foreign-e2 êp +foreign-e2 éq +foreign-e3 é +foreign-e3 ë +foreign-e3 ëp +foreign-e3 éq +foreign-e4 é +foreign-e4 ě +foreign-e4 ěp +foreign-e4 éq +foreign-i1 í +foreign-i1 ì +foreign-i1 ìp +foreign-i1 íq +foreign-i2 í +foreign-i2 î +foreign-i2 îp +foreign-i2 íq +foreign-i3 í +foreign-i3 ï +foreign-i3 ïp +foreign-i3 íq +foreign-l1 l +foreign-l1 ł +foreign-l1 łp +foreign-l1 lq +foreign-n1 n +foreign-n1 ñ +foreign-n1 ñp +foreign-n1 nq +foreign-n2 n +foreign-n2 ň +foreign-n2 ňp +foreign-n2 nq +foreign-o1 ó ; The rules are not explicit whether foreign accents on top of o or u +foreign-o1 ò ; should be sorted among o-ó and u-ú, or among ö-ő and ü-ű, but the +foreign-o1 òp ; AkH #15 example with Møsstrand implicitly shows that it's the former. +foreign-o1 óq +foreign-o2 ó +foreign-o2 ô +foreign-o2 ôp +foreign-o2 óq +foreign-o3 ó +foreign-o3 õ +foreign-o3 õp +foreign-o3 óq +foreign-o4 ó +foreign-o4 ø +foreign-o4 øp +foreign-o4 óq +foreign-r1 r +foreign-r1 ř +foreign-r1 řp +foreign-r1 rq +foreign-s1 s +foreign-s1 š +foreign-s1 šp +foreign-s1 sq +foreign-u1 ú +foreign-u1 ù +foreign-u1 ùp +foreign-u1 úq +foreign-u2 ú +foreign-u2 û +foreign-u2 ûp +foreign-u2 úq +foreign-u3 ú +foreign-u3 ũ +foreign-u3 ũp +foreign-u3 úq +foreign-u4 ú +foreign-u4 ů +foreign-u4 ůp +foreign-u4 úq +foreign-y1 y +foreign-y1 ÿ +foreign-y1 ÿp +foreign-y1 yq diff --git a/localedata/locales/hu_HU b/localedata/locales/hu_HU index 898d293b18..31c59ea194 100644 --- a/localedata/locales/hu_HU +++ b/localedata/locales/hu_HU @@ -22,7 +22,7 @@ escape_char / % - made all days abbreviations same lenght by appending spaces % Email: srtxg@chanae.alphanet.ch % -% Further changes by Egmont Koblinger, 2002/Jan/06, 2012/Jan/03, 2015/Sep/03 +% Further changes by Egmont Koblinger during 2002-2017: % - fixed tons of remaining bugs in alphabetical order % - turned month names and similar stuff to lowercase % - other small bugfixes @@ -64,6 +64,7 @@ category "i18n:2012";LC_MEASUREMENT END LC_IDENTIFICATION LC_COLLATE +define DIACRIT_FORWARD copy "iso14651_t1" %% a b c cs d dz dzs e f g gy h i j k l ly m n ny o o: p q @@ -77,15 +78,18 @@ copy "iso14651_t1" %% dzs+dzs becomes ddzs, and so on. %% However, c+cs is also spelled as ccs, you need to speak %% the language to tell which one is the case. -%% Tokenize ccs as , and sort the tokens as -%% a b c c_or_cs cs d... This effectively assumes cs+cs -%% which is more frequent than c+cs, but guarantees that the -%% strings ccs and cscs don't collate as equal. +%% Tokenize ccs as since this is much more frequent +%% than , but apply SINGLE-OR-COMPOUND and COMPOUND +%% to the tokens so that the strings ccs and cscs don't collate +%% as equal. +%% The same goes for all other compound consonants. collating-symbol collating-symbol -collating-symbol +collating-symbol +collating-symbol + collating-symbol collating-element from "" collating-element from "" @@ -100,7 +104,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -115,7 +118,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -142,7 +144,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -157,7 +158,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -172,7 +172,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -187,7 +186,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -202,7 +200,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -217,7 +214,6 @@ collating-element from "" collating-element from "" collating-element from "" -collating-symbol collating-symbol collating-element from "" collating-element from "" @@ -232,8 +228,10 @@ collating-element from "" collating-element from "" collating-element from "" +collating-symbol collating-symbol collating-symbol +collating-symbol collating-symbol collating-symbol collating-symbol @@ -244,6 +242,7 @@ collating-symbol collating-symbol reorder-after + @@ -252,42 +251,38 @@ reorder-after reorder-after + reorder-after - reorder-after - - reorder-after - reorder-after - reorder-after - reorder-after reorder-after - reorder-after - reorder-after reorder-after - +reorder-after + + + reorder-after ;;;IGNORE ;;;IGNORE @@ -300,152 +295,157 @@ reorder-after ;;;IGNORE ;;;IGNORE +reorder-after + + + + reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-after - ;;;IGNORE - ;;;IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE - "";"";"";IGNORE + ;;;IGNORE + ;;;IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE + "";"";"";IGNORE reorder-end