updated for version 7.0070
diff --git a/src/buffer.c b/src/buffer.c
index 993e14d..9772336 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2390,6 +2390,11 @@
if (p_fdls >= 0)
curwin->w_p_fdl = p_fdls;
#endif
+
+#ifdef FEAT_SYN_HL
+ if (curwin->w_p_spell && *buf->b_p_spl != NUL)
+ did_set_spelllang(buf);
+#endif
}
/*
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index a3d4c14..dc33f65 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -21,7 +21,12 @@
int vim_iswordp __ARGS((char_u *p));
int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
void init_spell_chartab __ARGS((void));
+int set_spell_chartab __ARGS((char_u *fol, char_u *low, char_u *upp));
+int set_spell_charflags __ARGS((char_u *flags, int cnt, char_u *upp));
+void write_spell_chartab __ARGS((FILE *fd));
int spell_iswordc __ARGS((char_u *p));
+int spell_isupper __ARGS((int c));
+int spell_casefold __ARGS((char_u *p, int len, char_u *buf, int buflen));
int vim_isfilec __ARGS((int c));
int vim_isprintc __ARGS((int c));
int vim_isprintc_strict __ARGS((int c));
diff --git a/src/spell.c b/src/spell.c
index cc71b8d..e8ac352 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -97,6 +97,8 @@
/*
* Structure used to store words and other info for one language, loaded from
* a .spl file.
+ * The main access is through hashtable "sl_word", using the case-folded
+ * word as the key. This finds a linked list of fword_T.
*/
typedef struct slang_S slang_T;
struct slang_S
@@ -149,6 +151,8 @@
/*
* Structure to store a basic word.
* There are many of these, keep it small!
+ * The list of prefix and suffix NRs is stored after "fw_word" to avoid the
+ * need for two extra pointers.
*/
typedef struct fword_S fword_T;
struct fword_S
@@ -223,7 +227,7 @@
* (Needed to keep ADD_ flags in one byte.) */
#define ADD2BWF(x) (((x) & 0x0f) | (((x) & 0xf0) << 4))
-#define VIMSPELLMAGIC "VIMspell03" /* string at start of Vim spell file */
+#define VIMSPELLMAGIC "VIMspell04" /* string at start of Vim spell file */
#define VIMSPELLMAGICL 10
/*
@@ -307,7 +311,7 @@
return (int)(mi.mi_end - ptr);
/* Make case-folded copy of the word. */
- (void)str_foldcase(ptr, mi.mi_end - ptr, mi.mi_fword, MAXWLEN + 1);
+ (void)spell_casefold(ptr, mi.mi_end - ptr, mi.mi_fword, MAXWLEN + 1);
mi.mi_cword = mi.mi_fword;
mi.mi_fendlen = STRLEN(mi.mi_fword);
mi.mi_faddlen = 0;
@@ -404,6 +408,8 @@
* "d'", "de-", "'s-", "l'de-". But not "'s".
* Also need to do this when a matching word was already found, because we
* might find a longer match this way (French: "qu" and "qu'a-t-elle").
+ * The check above may have added characters to mi_fword, thus we need to
+ * truncate it after the basic word for the hash lookup.
*/
cc = mip->mi_fword[mip->mi_fendlen];
mip->mi_fword[mip->mi_fendlen] = NUL;
@@ -772,7 +778,7 @@
else
#endif
l = 1;
- (void)str_foldcase(mip->mi_fend, l, p + mip->mi_faddlen,
+ (void)spell_casefold(mip->mi_fend, l, p + mip->mi_faddlen,
MAXWLEN - mip->mi_fendlen - mip->mi_faddlen);
mip->mi_fend += l;
mip->mi_faddlen += STRLEN(p + mip->mi_faddlen);
@@ -992,6 +998,8 @@
* Stop checking if there are no suffixes with so many characters.
*/
sufp = endw;
+ *endw = NUL; /* truncate after possible suffix */
+
for (charlen = 0; charlen <= mip->mi_slang->sl_sufftab.ga_len; ++charlen)
{
/* Move the pointer to the possible suffix back one character, unless
@@ -1012,13 +1020,11 @@
if (ht->ht_used == 0)
continue;
- *endw = NUL; /* truncate after possible suffix */
hi = hash_find(ht, sufp);
if (HASHITEM_EMPTY(hi))
ai = NULL;
else
ai = HI2AI(hi);
- *endw = endw_c;
}
if (ai != NULL)
@@ -1027,6 +1033,7 @@
* we can use. */
tlen = sufp - mip->mi_cword; /* length of word without suffix */
mch_memmove(pword, mip->mi_cword, tlen);
+ *endw = endw_c;
for ( ; ai != NULL; ai = ai->ai_next)
{
@@ -1068,9 +1075,12 @@
}
}
}
+
+ *endw = NUL; /* truncate after possible suffix */
}
}
+ *endw = endw_c;
mip->mi_capflags = capflags_save;
return FALSE;
}
@@ -1115,7 +1125,7 @@
else
#endif
c = *p++;
- if (MB_ISUPPER(c))
+ if (spell_isupper(c))
{
if (capflags == 0 || (capflags & BWF_ONECAP))
{
@@ -1460,7 +1470,7 @@
int round;
char_u *save_sourcing_name = sourcing_name;
linenr_T save_sourcing_lnum = sourcing_lnum;
- int cnt;
+ int cnt, ccnt;
int choplen;
int addlen;
int leadlen;
@@ -1474,39 +1484,41 @@
addword_T *aw, *naw;
int flen;
int xlen;
+ char_u *fol;
fd = fopen((char *)fname, "r");
if (fd == NULL)
{
EMSG2(_(e_notopen), fname);
- goto errorend;
+ goto endFAIL;
}
/* Set sourcing_name, so that error messages mention the file name. */
sourcing_name = fname;
sourcing_lnum = 0;
- /* <HEADER>: <fileID> <regioncnt> <regionname> ... */
+ /* <HEADER>: <fileID> <regioncnt> <regionname> ...
+ * <charflagslen> <charflags> <fcharslen> <fchars> */
for (i = 0; i < VIMSPELLMAGICL; ++i)
buf[i] = getc(fd); /* <fileID> */
if (STRNCMP(buf, VIMSPELLMAGIC, VIMSPELLMAGICL) != 0)
{
EMSG(_("E757: Wrong file ID in spell file"));
- goto errorend;
+ goto endFAIL;
}
cnt = getc(fd); /* <regioncnt> */
- if (cnt == EOF)
+ if (cnt < 0)
{
truncerr:
EMSG(_("E758: Truncated spell file"));
- goto errorend;
+ goto endFAIL;
}
if (cnt > 8)
{
formerr:
EMSG(_("E759: Format error in spell file"));
- goto errorend;
+ goto endFAIL;
}
for (i = 0; i < cnt; ++i)
{
@@ -1515,8 +1527,39 @@
}
lp->sl_regions[cnt * 2] = NUL;
- /* round 1: <PREFIXLIST>: <affcount> <afftotcnt> <affix> ...
- * round 2: <SUFFIXLIST>: <affcount> <afftotcnt> <affix> ... */
+ cnt = getc(fd); /* <charflagslen> */
+ if (cnt > 0)
+ {
+ p = (char_u *)getroom(lp, &bl_used, cnt);
+ if (p == NULL)
+ goto endFAIL;
+ for (i = 0; i < cnt; ++i)
+ p[i] = getc(fd); /* <charflags> */
+
+ ccnt = (getc(fd) << 8) + getc(fd); /* <fcharslen> */
+ if (ccnt <= 0)
+ goto formerr;
+ fol = (char_u *)getroom(lp, &bl_used, ccnt + 1);
+ if (fol == NULL)
+ goto endFAIL;
+ for (i = 0; i < ccnt; ++i)
+ fol[i] = getc(fd); /* <fchars> */
+ fol[i] = NUL;
+
+ /* Set the word-char flags and fill spell_isupper() table. */
+ if (set_spell_charflags(p, cnt, fol) == FAIL)
+ goto formerr;
+ }
+ else
+ {
+ /* When <charflagslen> is zero then <fcharlen> must also be zero. */
+ cnt = (getc(fd) << 8) + getc(fd);
+ if (cnt != 0)
+ goto formerr;
+ }
+
+ /* round 1: <PREFIXLIST>: <affcount> <affix> ...
+ * round 2: <SUFFIXLIST>: <affcount> <affix> ... */
for (round = 1; round <= 2; ++round)
{
affcount = (getc(fd) << 8) + getc(fd); /* <affcount> */
@@ -1537,9 +1580,6 @@
suffm = affcount > 256 ? 2 : 1;
}
- i = (getc(fd) << 8) + getc(fd); /* <afftotcnt> */
- /* afftotcnt is not used */
-
/*
* For each affix NR there can be several affixes.
*/
@@ -1555,7 +1595,7 @@
* <affaddlen> <affadd> */
affflags = getc(fd); /* <affflags> */
choplen = getc(fd); /* <affchoplen> */
- if (choplen == EOF)
+ if (choplen < 0)
goto truncerr;
if (choplen >= MAXWLEN)
goto formerr;
@@ -1563,7 +1603,7 @@
buf[i] = getc(fd);
buf[i] = NUL;
addlen = getc(fd); /* <affaddlen> */
- if (addlen == EOF)
+ if (addlen < 0)
goto truncerr;
if (affflags & AFF_PREWORD)
xlen = addlen + 2; /* space for lead and trail string */
@@ -1571,12 +1611,11 @@
xlen = 0;
/* Get room to store the affitem_T, chop and add strings. */
- p = (char_u *)getroom(lp, &bl_used,
+ ai = (affitem_T *)getroom(lp, &bl_used,
sizeof(affitem_T) + addlen + choplen + 1 + xlen);
- if (p == NULL)
- goto errorend;
+ if (ai == NULL)
+ goto endFAIL;
- ai = (affitem_T *)p;
ai->ai_nr = affnr;
ai->ai_flags = affflags;
ai->ai_choplen = choplen;
@@ -1596,8 +1635,12 @@
int l, leadoff, trailoff;
/*
- * Separate lead and trail string, put word at ai_add, so
- * that it can be used as hashtable key.
+ * A preword is a prefix that's recognized as a word: it
+ * contains a word characters folled by a non-word
+ * character.
+ * <affadd> is the whole prefix. Separate lead and trail
+ * string, put the word itself at ai_add, so that it can
+ * be used as hashtable key.
*/
/* lead string: up to first word char */
while (*p != NUL && !spell_iswordc(p))
@@ -1623,13 +1666,13 @@
hi = hash_lookup(&lp->sl_prewords, ai->ai_add, hash);
if (HASHITEM_EMPTY(hi))
{
- /* First affix with this word, add to hashtable. */
+ /* First preword with this word, add to hashtable. */
hash_add_item(&lp->sl_prewords, hi, ai->ai_add, hash);
ai->ai_next = NULL;
}
else
{
- /* There already is an affix with this word, link in
+ /* There already is a preword with this word, link in
* the list. */
ai2 = HI2AI(hi);
ai->ai_next = ai2->ai_next;
@@ -1660,7 +1703,7 @@
{
/* Longer affix, need more hashtables. */
if (ga_grow(gap, addlen - gap->ga_len) == FAIL)
- goto errorend;
+ goto endFAIL;
/* Re-allocating ga_data means that an ht_array
* pointing to ht_smallarray becomes invalid. We
@@ -1733,14 +1776,14 @@
*/
/* Use <nr> bytes from the previous word. */
wlen = getc(fd); /* <nr> */
- if (wlen == EOF)
+ if (wlen < 0)
{
if (widx >= wordcount) /* normal way to end the file */
break;
goto truncerr;
}
- /* Read further word bytes until one below 0x20, that must be the
+ /* Read further word bytes until one below 0x20, that one must be the
* flags. Keep this fast! */
for (;;)
{
@@ -1760,10 +1803,12 @@
{
/* Read <caselen> and <caseword> first, its length may differ from
* the case-folded word. Note: this should only happen after the
- * basic word! */
+ * basic word without KEEPCAP! */
wlen = getc(fd);
if (wlen < 0)
goto truncerr;
+ if (wlen >= MAXWLEN)
+ goto formerr;
for (i = 0; i < wlen; ++i)
cbuf[i] = getc(fd);
cbuf[i] = NUL;
@@ -1800,7 +1845,7 @@
fw = (fword_T *)getroom(lp, &bl_used, (int)sizeof(fword_T) + wlen
+ (p - affixbuf));
if (fw == NULL)
- goto errorend;
+ goto endFAIL;
mch_memmove(fw->fw_word, (flags & BWF_KEEPCAP) ? cbuf : buf, wlen + 1);
/* Put the affix NRs just after the word, if any. */
@@ -1811,12 +1856,15 @@
fw->fw_prefixcnt = prefixcnt;
fw->fw_suffixcnt = suffixcnt;
+ /* We store the word in the hashtable case-folded. For a KEEPCAP word
+ * the entry must already exist, because fw_word can't be used as the
+ * key, it differs from "buf"! */
hash = hash_hash(buf);
hi = hash_lookup(&lp->sl_words, buf, hash);
if (HASHITEM_EMPTY(hi))
{
if (hash_add_item(&lp->sl_words, hi, fw->fw_word, hash) == FAIL)
- goto errorend;
+ goto endFAIL;
fw->fw_next = NULL;
}
else
@@ -1826,7 +1874,7 @@
fw2 = HI2FWORD(hi);
fw->fw_next = fw2->fw_next;
fw2->fw_next = fw;
- --widx; /* don't count this one */
+ --widx; /* don't count this one as a basic word */
}
if (flags & BWF_REGION)
@@ -1841,15 +1889,20 @@
adds = (getc(fd) << 8) + getc(fd); /* <addcnt> */
else
adds = getc(fd); /* <addcnt> */
+ if (adds < 0)
+ goto formerr;
if (adds > 30)
{
- /* Use a hashtable to loopup the part until the next word end.
+ /* Use a hashtable to lookup the part until the next word end.
+ * Thus for "de-bur-die" "de" is the basic word, "-bur" is key
+ * in the addition hashtable, "-bur<NUL>die" the whole
+ * addition and "aw_saveb" is '-'.
* This uses more memory and involves some overhead, thus only
- * do it when there are many additions (e.g., for French). */
+ * do it when there are many additions (e.g., for French). */
ht = (hashtab_T *)getroom(lp, &bl_used, sizeof(hashtab_T));
if (ht == NULL)
- goto errorend;
+ goto endFAIL;
hash_init(ht);
fw->fw_adds = (addword_T *)ht;
fw->fw_flags |= BWF_ADDHASH;
@@ -1860,19 +1913,26 @@
else
ht = NULL;
+ /*
+ * Note: uses cbuf[] to copy bytes from previous addition.
+ */
while (--adds >= 0)
{
/* <add>: <addflags> <addlen> [<leadlen>] [<copylen>]
* [<addstring>] [<region>] */
flags = getc(fd); /* <addflags> */
addlen = getc(fd); /* <addlen> */
- if (addlen == EOF)
+ if (addlen < 0)
goto truncerr;
if (addlen >= MAXWLEN)
goto formerr;
if (flags & ADD_LEADLEN)
+ {
leadlen = getc(fd); /* <leadlen> */
+ if (leadlen > addlen)
+ goto formerr;
+ }
else
leadlen = 0;
@@ -1891,7 +1951,7 @@
{
/* <addstring> is in original case, need to get
* case-folded word too. */
- (void)str_foldcase(cbuf, addlen, fbuf, MAXWLEN);
+ (void)spell_casefold(cbuf, addlen, fbuf, MAXWLEN);
flen = addlen - leadlen + 1;
addlen = STRLEN(fbuf);
}
@@ -1901,7 +1961,7 @@
aw = (addword_T *)getroom(lp, &bl_used,
sizeof(addword_T) + addlen + flen);
if (aw == NULL)
- goto errorend;
+ goto endFAIL;
if (flags & ADD_KEEPCAP)
{
@@ -1954,7 +2014,7 @@
naw = (addword_T *)getroom(lp, &bl_used,
sizeof(addword_T) + STRLEN(NOWC_KEY));
if (naw == NULL)
- goto errorend;
+ goto endFAIL;
STRCPY(naw->aw_word, NOWC_KEY);
hash_add_item(ht, hi, naw->aw_word, hash);
naw->aw_next = aw;
@@ -1994,11 +2054,12 @@
}
}
}
- goto end_OK;
+ goto endOK;
-errorend:
+endFAIL:
lp->sl_error = TRUE;
-end_OK:
+
+endOK:
if (fd != NULL)
fclose(fd);
hash_unlock(&lp->sl_words);
@@ -2187,7 +2248,7 @@
#else
c = *p++;
#endif
- firstcap = allcap = MB_ISUPPER(c);
+ firstcap = allcap = spell_isupper(c);
/*
* Need to check all letters to find a word with mixed upper/lower.
@@ -2201,7 +2262,7 @@
#else
c = *p;
#endif
- if (!MB_ISUPPER(c))
+ if (!spell_isupper(c))
{
/* UUl -> KEEPCAP */
if (past_second && allcap)
@@ -2345,9 +2406,9 @@
garray_T bw_prefix; /* table with prefix numbers */
garray_T bw_suffix; /* table with suffix numbers */
int bw_region; /* region bits */
- char_u *bw_caseword; /* keep-case word */
- char_u *bw_leadstring; /* must come before bw_word */
- char_u *bw_addstring; /* must come after bw_word */
+ char_u *bw_caseword; /* keep-case word or NULL */
+ char_u *bw_leadstring; /* must come before bw_word or NULL */
+ char_u *bw_addstring; /* must come after bw_word or NULL */
char_u bw_word[1]; /* actually longer: word case folded */
};
@@ -2391,12 +2452,12 @@
static void clear_affhash __ARGS((hashtab_T *ht));
static void trans_affixes __ARGS((dicword_T *dw, basicword_T *bw, afffile_T *oldaff, hashtab_T *newwords));
static int build_wordlist __ARGS((hashtab_T *newwords, hashtab_T *oldwords, afffile_T *oldaff, int regionmask));
+static basicword_T *get_basicword __ARGS((char_u *word, int asize));
static void combine_regions __ARGS((hashtab_T *newwords));
static int same_affixes __ARGS((basicword_T *bw, basicword_T *nbw));
-static void expand_affixes __ARGS((hashtab_T *newwords, garray_T *prefgap, garray_T *suffgap));
-static void expand_one_aff __ARGS((basicword_T *bw, garray_T *add_words, affentry_T *pae, affentry_T *sae));
-static void add_to_wordlist __ARGS((hashtab_T *newwords, basicword_T *bw));
-static void put_bytes __ARGS((FILE *fd, long_u nr, int len));
+static int expand_affixes __ARGS((hashtab_T *newwords, garray_T *prefgap, garray_T *suffgap));
+static int expand_one_aff __ARGS((basicword_T *bw, garray_T *add_words, affentry_T *pae, affentry_T *sae));
+static int add_to_wordlist __ARGS((hashtab_T *newwords, basicword_T *bw));
static void write_affix __ARGS((FILE *fd, affheader_T *ah));
static void write_affixlist __ARGS((FILE *fd, garray_T *aff, int bytes));
static void write_vim_spell __ARGS((char_u *fname, garray_T *prefga, garray_T *suffga, hashtab_T *newwords, int regcount, char_u *regchars));
@@ -2428,6 +2489,9 @@
affheader_T *cur_aff = NULL;
int aff_todo = 0;
hashtab_T *tp;
+ char_u *low = NULL;
+ char_u *fol = NULL;
+ char_u *upp = NULL;
fd = fopen((char *)fname, "r");
if (fd == NULL)
@@ -2449,8 +2513,9 @@
/*
* Read all the lines in the file one by one.
*/
- while (!vim_fgets(rline, MAXLINELEN, fd))
+ while (!vim_fgets(rline, MAXLINELEN, fd) && !got_int)
{
+ line_breakcheck();
++lnum;
/* Skip comment lines. */
@@ -2462,6 +2527,12 @@
if (conv->vc_type != CONV_NONE)
{
pc = string_convert(conv, rline, NULL);
+ if (pc == NULL)
+ {
+ smsg((char_u *)_("Conversion failure for word in %s line %d: %s"),
+ fname, lnum, rline);
+ continue;
+ }
line = pc;
}
else
@@ -2587,6 +2658,30 @@
cur_aff->ah_first = aff_entry;
}
}
+ else if (STRCMP(items[0], "FOL") == 0 && itemcnt == 2)
+ {
+ if (fol != NULL)
+ smsg((char_u *)_("Duplicate FOL in %s line %d"),
+ fname, lnum);
+ else
+ fol = vim_strsave(items[1]);
+ }
+ else if (STRCMP(items[0], "LOW") == 0 && itemcnt == 2)
+ {
+ if (low != NULL)
+ smsg((char_u *)_("Duplicate LOW in %s line %d"),
+ fname, lnum);
+ else
+ low = vim_strsave(items[1]);
+ }
+ else if (STRCMP(items[0], "UPP") == 0 && itemcnt == 2)
+ {
+ if (upp != NULL)
+ smsg((char_u *)_("Duplicate UPP in %s line %d"),
+ fname, lnum);
+ else
+ upp = vim_strsave(items[1]);
+ }
else if (STRCMP(items[0], "REP") == 0 && itemcnt == 2)
/* Ignore REP count */;
else if (STRCMP(items[0], "REP") == 0 && itemcnt == 3)
@@ -2608,6 +2703,18 @@
}
+ if (fol != NULL || low != NULL || upp != NULL)
+ {
+ if (fol == NULL || low == NULL || upp == NULL)
+ smsg((char_u *)_("Missing FOL/LOW/UPP line in %s"), fname);
+ else
+ set_spell_chartab(fol, low, upp);
+
+ vim_free(fol);
+ vim_free(low);
+ vim_free(upp);
+ }
+
vim_free(pc);
fclose(fd);
return aff;
@@ -2720,8 +2827,9 @@
* The words are converted to 'encoding' here, before being added to
* the hashtable.
*/
- while (!vim_fgets(line, MAXLINELEN, fd))
+ while (!vim_fgets(line, MAXLINELEN, fd) && !got_int)
{
+ line_breakcheck();
++lnum;
/* Remove CR, LF and white space from end. */
@@ -2745,6 +2853,12 @@
if (conv->vc_type != CONV_NONE)
{
pc = string_convert(conv, line, NULL);
+ if (pc == NULL)
+ {
+ smsg((char_u *)_("Conversion failure for word in %s line %d: %s"),
+ fname, lnum, line);
+ continue;
+ }
w = pc;
}
else
@@ -2756,7 +2870,10 @@
dw = (dicword_T *)alloc_clear((unsigned)sizeof(dicword_T)
+ STRLEN(w));
if (dw == NULL)
+ {
+ vim_free(pc);
break;
+ }
STRCPY(dw->dw_word, w);
vim_free(pc);
@@ -3136,7 +3253,7 @@
char_u key[2];
char_u *p;
char_u *affnm;
- garray_T *gap;
+ garray_T *gap, *agap;
hashitem_T *aff_hi;
affheader_T *ah;
affentry_T *ae;
@@ -3144,7 +3261,6 @@
int i;
basicword_T *nbw;
int alen;
- int wlen;
garray_T suffixga; /* list of words with non-word suffixes */
garray_T prefixga; /* list of words with non-word prefixes */
char_u nword[MAXWLEN];
@@ -3179,7 +3295,7 @@
for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next)
{
/* Setup for regexp matching. Note that we don't ignore case.
- * This is weird, because he rules in an .aff file don't care
+ * This is weird, because the rules in an .aff file don't care
* about case, but it's necessary for compatibility with Myspell.
*/
regmatch.regprog = ae->ae_prog;
@@ -3190,23 +3306,19 @@
if ((ae->ae_add_nw != NULL || ae->ae_add_pw != NULL)
&& (gap != &bw->bw_suffix || bw->bw_addstring == NULL))
{
- /* Affix has a non-word character and isn't prepended to
+ /*
+ * Affix has a non-word character and isn't prepended to
* leader or appended to addition. Need to use another
- * word with an addition. It's a copy of the basicword_T
- * "bw". */
- if (gap == &bw->bw_suffix)
+ * word with a leadstring and/or addstring.
+ */
+ if (gap == &bw->bw_suffix || ae->ae_add_nw == NULL)
{
- alen = ae->ae_add_nw - ae->ae_add;
- nbw = (basicword_T *)alloc((unsigned)(
- sizeof(basicword_T) + STRLEN(bw->bw_word)
- + alen + 1));
- if (nbw != NULL)
+ /* Suffix or prefix with only non-word chars.
+ * Build the new basic word in "nword": Remove chop
+ * string and append/prepend addition. */
+ if (gap == &bw->bw_suffix)
{
- *nbw = *bw;
- ga_init2(&nbw->bw_prefix, sizeof(short_u), 1);
- ga_init2(&nbw->bw_suffix, sizeof(short_u), 1);
-
- /* Adding the suffix may change the caps. */
+ /* suffix goes at the end of the word */
STRCPY(nword, dw->dw_word);
if (ae->ae_chop != NULL)
{
@@ -3217,64 +3329,11 @@
*p = NUL;
}
STRCAT(nword, ae->ae_add);
- flags = captype(nword, nword + STRLEN(nword));
- if (flags & BWF_KEEPCAP)
- {
- /* "caseword" excludes the addition */
- nword[STRLEN(dw->dw_word) + alen] = NUL;
- nbw->bw_caseword = vim_strsave(nword);
- }
- nbw->bw_flags &= ~(BWF_ONECAP | BWF_ALLCAP
- | BWF_KEEPCAP);
- nbw->bw_flags |= flags;
-
- if (bw->bw_leadstring != NULL)
- nbw->bw_leadstring =
- vim_strsave(bw->bw_leadstring);
- nbw->bw_addstring = vim_strsave(ae->ae_add_nw);
-
- STRCPY(nbw->bw_word, bw->bw_word);
- if (alen > 0 || ae->ae_chop != NULL)
- {
- /* Suffix starts with word character and/or
- * chop off something. Append it to the word.
- * Add new word entry. */
- wlen = STRLEN(nbw->bw_word);
- if (ae->ae_chop != NULL)
- wlen -= STRLEN(ae->ae_chop);
- mch_memmove(nbw->bw_word + wlen, ae->ae_add,
- alen);
- nbw->bw_word[wlen + alen] = NUL;
- add_to_wordlist(newwords, nbw);
- }
- else
- /* Basic word is the same, link "nbw" after
- * "bw". */
- bw->bw_next = nbw;
-
- /* Remember this word, we need to set bw_prefix
- * and bw_prefix later. */
- if (ga_grow(&suffixga, 1) == OK)
- ((basicword_T **)suffixga.ga_data)
- [suffixga.ga_len++] = nbw;
+ agap = &suffixga;
}
- }
- else if (ae->ae_add_nw == NULL)
- {
- /* Prefix that starts with non-word char(s) and may be
- * followed by word chars: Make a leadstring and
- * prepend word chars before the word. */
- alen = STRLEN(ae->ae_add_pw);
- nbw = (basicword_T *)alloc((unsigned)(
- sizeof(basicword_T) + STRLEN(bw->bw_word)
- + alen + 1));
- if (nbw != NULL)
+ else
{
- *nbw = *bw;
- ga_init2(&nbw->bw_prefix, sizeof(short_u), 1);
- ga_init2(&nbw->bw_suffix, sizeof(short_u), 1);
-
- /* Adding the prefix may change the caps. */
+ /* prefix goes before the word */
STRCPY(nword, ae->ae_add);
p = dw->dw_word;
if (ae->ae_chop != NULL)
@@ -3282,51 +3341,33 @@
for (i = mb_charlen(ae->ae_chop); i > 0; --i)
mb_ptr_adv( p);
STRCAT(nword, p);
+ agap = &prefixga;
+ }
- flags = captype(nword, nword + STRLEN(nword));
- if (flags & BWF_KEEPCAP)
- /* "caseword" excludes the addition */
- nbw->bw_caseword = vim_strsave(nword
- + (ae->ae_add_pw - ae->ae_add));
- else
- nbw->bw_caseword = NULL;
- nbw->bw_flags &= ~(BWF_ONECAP | BWF_ALLCAP
- | BWF_KEEPCAP);
- nbw->bw_flags |= flags;
+ /* Create a basicword_T from the word. */
+ nbw = get_basicword(nword, 1);
+ if (nbw != NULL)
+ {
+ nbw->bw_region = bw->bw_region;
+ nbw->bw_flags |= bw->bw_flags
+ & ~(BWF_ONECAP | BWF_ALLCAP | BWF_KEEPCAP);
- if (bw->bw_addstring != NULL)
- nbw->bw_addstring =
- vim_strsave(bw->bw_addstring);
- else
- nbw->bw_addstring = NULL;
- nbw->bw_leadstring = vim_strnsave(ae->ae_add,
- ae->ae_add_pw - ae->ae_add);
-
- if (alen > 0 || ae->ae_chop != NULL)
- {
- /* Prefix ends in word character and/or chop
- * off something. Prepend it to the word.
- * Add new word entry. */
- STRCPY(nbw->bw_word, ae->ae_add_pw);
- p = bw->bw_word;
- if (ae->ae_chop != NULL)
- p += STRLEN(ae->ae_chop);
- STRCAT(nbw->bw_word, p);
- add_to_wordlist(newwords, nbw);
- }
+ if (STRCMP(bw->bw_word, nbw->bw_word) != 0)
+ /* Basic word differs, add new word entry. */
+ (void)add_to_wordlist(newwords, nbw);
else
{
/* Basic word is the same, link "nbw" after
* "bw". */
- STRCPY(nbw->bw_word, bw->bw_word);
+ nbw->bw_next = bw->bw_next;
bw->bw_next = nbw;
}
- /* Remember this word, we need to set bw_suffix
- * and bw_suffix later. */
- if (ga_grow(&prefixga, 1) == OK)
- ((basicword_T **)prefixga.ga_data)
- [prefixga.ga_len++] = nbw;
+ /* Remember this word, we need to set bw_prefix
+ * or bw_suffix later. */
+ if (ga_grow(agap, 1) == OK)
+ ((basicword_T **)agap->ga_data)
+ [agap->ga_len++] = nbw;
}
}
else
@@ -3345,7 +3386,7 @@
#else
n = 1;
#endif
- (void)str_foldcase(p, n, nword + alen,
+ (void)spell_casefold(p, n, nword + alen,
MAXWLEN - alen);
alen += STRLEN(nword + alen);
}
@@ -3393,7 +3434,7 @@
else
nbw->bw_leadstring = NULL;
- add_to_wordlist(newwords, nbw);
+ (void)add_to_wordlist(newwords, nbw);
/* Remember this word, we need to set bw_suffix
* and bw_suffix later. */
@@ -3482,17 +3523,6 @@
hashitem_T *old_hi;
dicword_T *dw;
basicword_T *bw;
- char_u foldword[MAXLINELEN];
- int leadlen;
- char_u leadstring[MAXLINELEN];
- int addlen;
- char_u addstring[MAXLINELEN];
- int dwlen;
- char_u *p;
- int clen;
- int flags;
- char_u *cp = NULL;
- int l;
char_u message[MAXLINELEN + MAXWLEN];
todo = oldwords->ht_used;
@@ -3519,107 +3549,15 @@
break;
}
- /* The basic words are always stored with folded case. */
- dwlen = STRLEN(dw->dw_word);
- (void)str_foldcase(dw->dw_word, dwlen, foldword, MAXLINELEN);
- flags = captype(dw->dw_word, dw->dw_word + dwlen);
-
- /* Check for non-word characters before the word. */
- clen = 0;
- leadlen = 0;
- if (!spell_iswordc(foldword))
- {
- p = foldword;
- for (;;)
- {
- mb_ptr_adv(p);
- ++clen;
- if (*p == NUL) /* Only non-word chars (bad word!) */
- {
- if (p_verbose > 0)
- smsg((char_u *)_("Warning: word without word characters: \"%s\""),
- foldword);
- break;
- }
- if (spell_iswordc(p))
- {
- /* Move the leader to "leadstring" and remove it from
- * "foldword". */
- leadlen = p - foldword;
- mch_memmove(leadstring, foldword, leadlen);
- leadstring[leadlen] = NUL;
- mch_memmove(foldword, p, STRLEN(p) + 1);
- break;
- }
- }
- }
-
- /* Check for non-word characters after word characters. */
- addlen = 0;
- for (p = foldword; spell_iswordc(p); mb_ptr_adv(p))
- {
- if (*p == NUL)
- break;
- ++clen;
- }
- if (*p != NUL)
- {
- /* Move the addition to "addstring" and truncate "foldword". */
- if (flags & BWF_KEEPCAP)
- {
- /* Preserve caps, need to skip the right number of
- * characters in the original word (case folding may
- * change the byte count). */
- l = 0;
- for (cp = dw->dw_word; l < clen; mb_ptr_adv(cp))
- ++l;
- addlen = STRLEN(cp);
- mch_memmove(addstring, cp, addlen + 1);
- }
- else
- {
- addlen = STRLEN(p);
- mch_memmove(addstring, p, addlen + 1);
- }
- *p = NUL;
- }
-
- bw = (basicword_T *)alloc_clear((unsigned)sizeof(basicword_T)
- + STRLEN(foldword));
+ bw = get_basicword(dw->dw_word, 10);
if (bw == NULL)
break;
- STRCPY(bw->bw_word, foldword);
bw->bw_region = regionmask;
- if (leadlen > 0)
- bw->bw_leadstring = vim_strsave(leadstring);
- else
- bw->bw_leadstring = NULL;
- if (addlen > 0)
- bw->bw_addstring = vim_strsave(addstring);
- else
- bw->bw_addstring = NULL;
-
- add_to_wordlist(newwords, bw);
-
- if (flags & BWF_KEEPCAP)
- {
- if (addlen == 0)
- /* use the whole word */
- bw->bw_caseword = vim_strsave(dw->dw_word + leadlen);
- else
- /* use only up to the addition */
- bw->bw_caseword = vim_strnsave(dw->dw_word + leadlen,
- cp - dw->dw_word - leadlen);
- if (bw->bw_caseword == NULL) /* out of memory */
- flags &= ~BWF_KEEPCAP;
- }
- bw->bw_flags = flags;
+ (void)add_to_wordlist(newwords, bw);
/* Deal with any affix names on the old word, translate them
* into affix numbers. */
- ga_init2(&bw->bw_prefix, sizeof(short_u), 10);
- ga_init2(&bw->bw_suffix, sizeof(short_u), 10);
if (dw->dw_affnm != NULL)
trans_affixes(dw, bw, oldaff, newwords);
}
@@ -3630,6 +3568,128 @@
}
/*
+ * Get a basicword_T from a word in original case.
+ * Caller must set bw_region.
+ * Returns NULL when something fails.
+ */
+ static basicword_T *
+get_basicword(word, asize)
+ char_u *word;
+ int asize; /* growsize for affix garray */
+{
+ int dwlen;
+ char_u foldword[MAXLINELEN];
+ int flags;
+ int clen;
+ int leadlen;
+ char_u *p;
+ char_u leadstring[MAXLINELEN];
+ int addlen;
+ char_u addstring[MAXLINELEN];
+ char_u *cp = NULL;
+ int l;
+ basicword_T *bw;
+
+ /* The basic words are always stored with folded case. */
+ dwlen = STRLEN(word);
+ (void)spell_casefold(word, dwlen, foldword, MAXLINELEN);
+ flags = captype(word, word + dwlen);
+
+ /* Check for non-word characters before the word. */
+ clen = 0;
+ leadlen = 0;
+ if (!spell_iswordc(foldword))
+ {
+ p = foldword;
+ for (;;)
+ {
+ mb_ptr_adv(p);
+ ++clen;
+ if (*p == NUL) /* Only non-word chars (bad word!) */
+ {
+ if (p_verbose > 0)
+ smsg((char_u *)_("Warning: word without word characters: \"%s\""),
+ foldword);
+ break;
+ }
+ if (spell_iswordc(p))
+ {
+ /* Move the leader to "leadstring" and remove it from
+ * "foldword". */
+ leadlen = p - foldword;
+ mch_memmove(leadstring, foldword, leadlen);
+ leadstring[leadlen] = NUL;
+ mch_memmove(foldword, p, STRLEN(p) + 1);
+ break;
+ }
+ }
+ }
+
+ /* Check for non-word characters after word characters. */
+ addlen = 0;
+ for (p = foldword; spell_iswordc(p); mb_ptr_adv(p))
+ {
+ if (*p == NUL)
+ break;
+ ++clen;
+ }
+ if (*p != NUL)
+ {
+ /* Move the addition to "addstring" and truncate "foldword". */
+ if (flags & BWF_KEEPCAP)
+ {
+ /* Preserve caps, need to skip the right number of
+ * characters in the original word (case folding may
+ * change the byte count). */
+ l = 0;
+ for (cp = word; l < clen; mb_ptr_adv(cp))
+ ++l;
+ addlen = STRLEN(cp);
+ mch_memmove(addstring, cp, addlen + 1);
+ }
+ else
+ {
+ addlen = STRLEN(p);
+ mch_memmove(addstring, p, addlen + 1);
+ }
+ *p = NUL;
+ }
+
+ bw = (basicword_T *)alloc_clear((unsigned)sizeof(basicword_T)
+ + STRLEN(foldword));
+ if (bw == NULL)
+ return NULL;
+
+ STRCPY(bw->bw_word, foldword);
+
+ if (leadlen > 0)
+ bw->bw_leadstring = vim_strsave(leadstring);
+ else
+ bw->bw_leadstring = NULL;
+ if (addlen > 0)
+ bw->bw_addstring = vim_strsave(addstring);
+ else
+ bw->bw_addstring = NULL;
+
+ if (flags & BWF_KEEPCAP)
+ {
+ if (addlen == 0)
+ /* use the whole word */
+ bw->bw_caseword = vim_strsave(word + leadlen);
+ else
+ /* use only up to the addition */
+ bw->bw_caseword = vim_strnsave(word + leadlen,
+ cp - word - leadlen);
+ }
+
+ bw->bw_flags = flags;
+ ga_init2(&bw->bw_prefix, sizeof(short_u), asize);
+ ga_init2(&bw->bw_suffix, sizeof(short_u), asize);
+
+ return bw;
+}
+
+/*
* Go through the list of words and combine the ones that are identical except
* for the region.
*/
@@ -3662,14 +3722,16 @@
&& (bw->bw_addstring == NULL)
== (nbw->bw_addstring == NULL)
&& ((bw->bw_flags & BWF_KEEPCAP) == 0
- || (STRCMP(bw->bw_caseword,
- nbw->bw_caseword) == 0))
+ || bw->bw_caseword == NULL
+ || nbw->bw_caseword == NULL
+ || STRCMP(bw->bw_caseword,
+ nbw->bw_caseword) == 0)
&& (bw->bw_leadstring == NULL
- || (STRCMP(bw->bw_leadstring,
- nbw->bw_leadstring) == 0))
+ || STRCMP(bw->bw_leadstring,
+ nbw->bw_leadstring) == 0)
&& (bw->bw_addstring == NULL
- || (STRCMP(bw->bw_addstring,
- nbw->bw_addstring) == 0))
+ || STRCMP(bw->bw_addstring,
+ nbw->bw_addstring) == 0)
&& same_affixes(bw, nbw)
)
{
@@ -3716,8 +3778,10 @@
* This is also needed when a word with an addition has a prefix and the word
* with prefix also exists. E.g., "blurp's/D" (D is prefix "de") and
* "deblurp". "deblurp" would match and no prefix would be tried.
+ *
+ * Returns FAIL when out of memory.
*/
- static void
+ static int
expand_affixes(newwords, prefgap, suffgap)
hashtab_T *newwords;
garray_T *prefgap;
@@ -3731,6 +3795,7 @@
garray_T add_words;
int n;
char_u message[MAXLINELEN + MAXWLEN];
+ int retval = OK;
ga_init2(&add_words, sizeof(basicword_T *), 10);
@@ -3806,7 +3871,12 @@
{
/* Expand the word for this combination of
* prefixes and affixes. */
- expand_one_aff(bw, &add_words, pae, sae);
+ if (expand_one_aff(bw, &add_words,
+ pae, sae) == FAIL)
+ {
+ retval = FAIL;
+ goto theend;
+ }
/* Advance to next suffix entry, if there
* is one. */
@@ -3831,9 +3901,16 @@
* all its items.
*/
for (pi = 0; pi < add_words.ga_len; ++pi)
- add_to_wordlist(newwords, ((basicword_T **)add_words.ga_data)[pi]);
+ {
+ retval = add_to_wordlist(newwords,
+ ((basicword_T **)add_words.ga_data)[pi]);
+ if (retval == FAIL)
+ break;
+ }
+theend:
ga_clear(&add_words);
+ return retval;
}
/*
@@ -3841,8 +3918,9 @@
* prefix "pae" and suffix "sae". Either "pae" or "sae" can be NULL.
* Don't do this when not necessary:
* - no leadstring and adding prefix doesn't result in existing word.
+ * Returns FAIL when out of memory.
*/
- static void
+ static int
expand_one_aff(bw, add_words, pae, sae)
basicword_T *bw;
garray_T *add_words;
@@ -3873,7 +3951,7 @@
STRCPY(word + l, bw->bw_word + choplen);
/* Do the same for bw_caseword, if it's there. */
- if (bw->bw_flags & BWF_KEEPCAP)
+ if ((bw->bw_flags & BWF_KEEPCAP) && bw->bw_caseword != NULL)
{
if (l > 0)
mch_memmove(caseword, pae->ae_add, l);
@@ -3907,112 +3985,116 @@
nbw = (basicword_T *)alloc_clear((unsigned)
sizeof(basicword_T) + STRLEN(word));
- if (nbw != NULL)
+ if (nbw == NULL)
+ return FAIL;
+
+ /* Add the new word to the list of words to be added later. */
+ if (ga_grow(add_words, 1) == FAIL)
{
- /* Add the new word to the list of words to be added later. */
- if (ga_grow(add_words, 1) == FAIL)
+ vim_free(nbw);
+ return FAIL;
+ }
+ ((basicword_T **)add_words->ga_data)[add_words->ga_len++] = nbw;
+
+ /* Copy the (modified) basic word, flags and region. */
+ STRCPY(nbw->bw_word, word);
+ nbw->bw_flags = bw->bw_flags;
+ nbw->bw_region = bw->bw_region;
+
+ /* Set the (modified) caseword. */
+ if (bw->bw_flags & BWF_KEEPCAP)
+ nbw->bw_caseword = vim_strsave(caseword);
+ else
+ nbw->bw_caseword = NULL;
+
+ if (bw->bw_leadstring != NULL)
+ {
+ if (pae != NULL)
{
- vim_free(nbw);
- return;
- }
- ((basicword_T **)add_words->ga_data)[add_words->ga_len++] = nbw;
-
- /* Copy the (modified) basic word, flags and region. */
- STRCPY(nbw->bw_word, word);
- nbw->bw_flags = bw->bw_flags;
- nbw->bw_region = bw->bw_region;
-
- /* Set the (modified) caseword. */
- if (bw->bw_flags & BWF_KEEPCAP)
- if ((nbw->bw_caseword = vim_strsave(caseword)) == NULL)
- nbw->bw_flags &= ~BWF_KEEPCAP;
-
- if (bw->bw_leadstring != NULL)
- {
- if (pae != NULL)
+ /* Prepend prefix to leadstring. */
+ ll = STRLEN(bw->bw_leadstring);
+ l = choplen = 0;
+ if (pae->ae_add != NULL)
+ l = STRLEN(pae->ae_add);
+ if (pae->ae_chop != NULL)
{
- /* Prepend prefix to leadstring. */
- ll = STRLEN(bw->bw_leadstring);
- l = choplen = 0;
- if (pae->ae_add != NULL)
- l = STRLEN(pae->ae_add);
- if (pae->ae_chop != NULL)
- {
- choplen = STRLEN(pae->ae_chop);
- if (choplen > ll) /* TODO: error? */
- choplen = ll;
- }
- nbw->bw_leadstring = alloc((unsigned)(ll + l - choplen + 1));
- if (nbw->bw_leadstring != NULL)
- {
- if (l > 0)
- mch_memmove(nbw->bw_leadstring, pae->ae_add, l);
- STRCPY(nbw->bw_leadstring + l, bw->bw_leadstring + choplen);
- }
+ choplen = STRLEN(pae->ae_chop);
+ if (choplen > ll) /* TODO: error? */
+ choplen = ll;
}
- else
- nbw->bw_leadstring = vim_strsave(bw->bw_leadstring);
- }
- else if (bw->bw_prefix.ga_len > 0)
- {
- /* There is no leadstring, copy the list of possible prefixes. */
- ga_init2(&nbw->bw_prefix, sizeof(short_u), 1);
- if (ga_grow(&nbw->bw_prefix, bw->bw_prefix.ga_len) == OK)
+ nbw->bw_leadstring = alloc((unsigned)(ll + l - choplen + 1));
+ if (nbw->bw_leadstring != NULL)
{
- mch_memmove(nbw->bw_prefix.ga_data, bw->bw_prefix.ga_data,
- bw->bw_prefix.ga_len * sizeof(short_u));
- nbw->bw_prefix.ga_len = bw->bw_prefix.ga_len;
+ if (l > 0)
+ mch_memmove(nbw->bw_leadstring, pae->ae_add, l);
+ STRCPY(nbw->bw_leadstring + l, bw->bw_leadstring + choplen);
}
}
-
- if (bw->bw_addstring != NULL)
+ else
+ nbw->bw_leadstring = vim_strsave(bw->bw_leadstring);
+ }
+ else if (bw->bw_prefix.ga_len > 0)
+ {
+ /* There is no leadstring, copy the list of possible prefixes. */
+ ga_init2(&nbw->bw_prefix, sizeof(short_u), 1);
+ if (ga_grow(&nbw->bw_prefix, bw->bw_prefix.ga_len) == OK)
{
- if (sae != NULL)
- {
- /* Append suffix to addstring. */
- l = STRLEN(bw->bw_addstring);
- if (sae->ae_chop != NULL)
- {
- l -= STRLEN(sae->ae_chop);
- if (l < 0) /* TODO: error? */
- l = 0;
- }
- if (sae->ae_add == NULL)
- ll = 0;
- else
- ll = STRLEN(sae->ae_add);
- nbw->bw_addstring = alloc((unsigned)(ll + l - choplen + 1));
- if (nbw->bw_addstring != NULL)
- {
- STRCPY(nbw->bw_addstring, bw->bw_addstring);
- if (sae->ae_add == NULL)
- nbw->bw_addstring[l] = NUL;
- else
- STRCPY(nbw->bw_addstring + l, sae->ae_add);
- }
- }
- else
- nbw->bw_addstring = vim_strsave(bw->bw_addstring);
+ mch_memmove(nbw->bw_prefix.ga_data, bw->bw_prefix.ga_data,
+ bw->bw_prefix.ga_len * sizeof(short_u));
+ nbw->bw_prefix.ga_len = bw->bw_prefix.ga_len;
}
}
+
+ if (bw->bw_addstring != NULL)
+ {
+ if (sae != NULL)
+ {
+ /* Append suffix to addstring. */
+ l = STRLEN(bw->bw_addstring);
+ if (sae->ae_chop != NULL)
+ {
+ l -= STRLEN(sae->ae_chop);
+ if (l < 0) /* TODO: error? */
+ l = 0;
+ }
+ if (sae->ae_add == NULL)
+ ll = 0;
+ else
+ ll = STRLEN(sae->ae_add);
+ nbw->bw_addstring = alloc((unsigned)(ll + l - choplen + 1));
+ if (nbw->bw_addstring != NULL)
+ {
+ STRCPY(nbw->bw_addstring, bw->bw_addstring);
+ if (sae->ae_add == NULL)
+ nbw->bw_addstring[l] = NUL;
+ else
+ STRCPY(nbw->bw_addstring + l, sae->ae_add);
+ }
+ }
+ else
+ nbw->bw_addstring = vim_strsave(bw->bw_addstring);
+ }
+
+ return OK;
}
/*
* Add basicword_T "*bw" to wordlist "newwords".
*/
- static void
+ static int
add_to_wordlist(newwords, bw)
hashtab_T *newwords;
basicword_T *bw;
{
hashitem_T *hi;
basicword_T *bw2;
+ int retval = OK;
hi = hash_find(newwords, bw->bw_word);
if (HASHITEM_EMPTY(hi))
{
/* New entry, add to hashlist. */
- hash_add(newwords, bw->bw_word);
+ retval = hash_add(newwords, bw->bw_word);
bw->bw_next = NULL;
}
else
@@ -4022,12 +4104,13 @@
bw->bw_next = bw2->bw_next;
bw2->bw_next = bw;
}
+ return retval;
}
/*
* Write a number to file "fd", MSB first, in "len" bytes.
*/
- static void
+ void
put_bytes(fd, nr, len)
FILE *fd;
long_u nr;
@@ -4105,22 +4188,29 @@
* <SUGGEST> <WORDLIST>
*
* <HEADER>: <fileID> <regioncnt> <regionname> ...
+ * <charflagslen> <charflags> <fcharslen> <fchars>
*
- * <fileID> 10 bytes "VIMspell03"
+ * <fileID> 10 bytes "VIMspell04"
* <regioncnt> 1 byte number of regions following (8 supported)
* <regionname> 2 bytes Region name: ca, au, etc.
* First <regionname> is region 1.
*
+ * <charflagslen> 1 byte Number of bytes in <charflags> (should be 128).
+ * <charflags> N bytes List of flags (first one is for character 128):
+ * 0x01 word character
+ * 0x01 upper-case character
+ * <fcharslen> 2 bytes Number of bytes in <fchars>.
+ * <fchars> N bytes Folded characters, first one is for character 128.
*
- * <PREFIXLIST>: <affcount> <afftotcnt> <affix> ...
- * <SUFFIXLIST>: <affcount> <afftotcnt> <affix> ...
+ *
+ * <PREFIXLIST>: <affcount> <affix> ...
+ * <SUFFIXLIST>: <affcount> <affix> ...
* list of possible affixes: prefixes and suffixes.
*
* <affcount> 2 bytes Number of affixes (MSB comes first).
* When more than 256 an affixNR is 2 bytes.
* This is separate for prefixes and suffixes!
* First affixNR is 0.
- * <afftotcnt> 2 bytes Total number of affix items (MSB comes first).
*
* <affix>: <affitemcnt> <affitem> ...
*
@@ -4228,8 +4318,6 @@
int flags, aflags;
basicword_T *bw, *bwf, *bw2 = NULL;
int i;
- int cnt;
- affentry_T *ae;
int round;
garray_T bwga;
@@ -4242,12 +4330,14 @@
return;
}
- fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, wif.wif_fd);
+ /* <HEADER>: <fileID> <regioncnt> <regionname> ...
+ * <charflagslen> <charflags> <fcharslen> <fchars> */
+ fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, wif.wif_fd); /* <fileID> */
/* write the region names if there is more than one */
if (regcount > 1)
{
- putc(regcount, wif.wif_fd);
+ putc(regcount, wif.wif_fd); /* <regioncnt> <regionname> ... */
fwrite(regchars, (size_t)(regcount * 2), (size_t)1, wif.wif_fd);
wif.wif_regionmask = (1 << regcount) - 1;
}
@@ -4257,20 +4347,17 @@
wif.wif_regionmask = 0;
}
- /* Write the prefix and suffix lists. */
+ /* Write the table with character flags and table for case folding.
+ * <charflagslen> <charflags> <fcharlen> <fchars> */
+ write_spell_chartab(wif.wif_fd);
+
+ /* <PREFIXLIST>: <affcount> <affix> ...
+ * <SUFFIXLIST>: <affcount> <affix> ... */
for (round = 1; round <= 2; ++round)
{
gap = round == 1 ? prefga : suffga;
put_bytes(wif.wif_fd, (long_u)gap->ga_len, 2); /* <affcount> */
- /* Count the total number of affix items. */
- cnt = 0;
- for (i = 0; i < gap->ga_len; ++i)
- for (ae = ((affheader_T *)gap->ga_data + i)->ah_first;
- ae != NULL; ae = ae->ae_next)
- ++cnt;
- put_bytes(wif.wif_fd, (long_u)cnt, 2); /* <afftotcnt> */
-
for (i = 0; i < gap->ga_len; ++i)
write_affix(wif.wif_fd, (affheader_T *)gap->ga_data + i);
}
@@ -4279,12 +4366,14 @@
wif.wif_prefm = (prefga->ga_len > 256) ? 2 : 1;
wif.wif_suffm = (suffga->ga_len > 256) ? 2 : 1;
- /* Write the suggest info. TODO */
- put_bytes(wif.wif_fd, 0L, 4);
+ /* <SUGGEST> : <suggestlen> <more> ...
+ * TODO. Only write a zero length for now. */
+ put_bytes(wif.wif_fd, 0L, 4); /* <suggestlen> */
/*
- * Write the word list. <wordcount> <worditem> ...
+ * <WORDLIST>: <wordcount> <worditem> ...
*/
+
/* number of basic words in 4 bytes */
put_bytes(wif.wif_fd, newwords->ht_used, 4); /* <wordcount> */
@@ -4333,8 +4422,10 @@
| BWF_ALLCAP);
if (flags == aflags
&& ((flags & BWF_KEEPCAP) == 0
- || (STRCMP(bw->bw_caseword,
- bw2->bw_caseword) == 0))
+ || bw->bw_caseword == NULL
+ || bw2->bw_caseword == NULL
+ || STRCMP(bw->bw_caseword,
+ bw2->bw_caseword) == 0)
&& same_affixes(bw, bw2))
break;
}
@@ -4385,6 +4476,7 @@
}
ga_clear(&bwga);
+ vim_free(wtab);
}
fclose(wif.wif_fd);
@@ -4548,7 +4640,7 @@
if (lowcap)
return;
- if (flags & BWF_KEEPCAP)
+ if ((flags & BWF_KEEPCAP) && bw->bw_caseword != NULL)
{
len = STRLEN(bw->bw_caseword);
putc(len, fd); /* <caselen> */
@@ -4684,6 +4776,7 @@
bw2 = bw;
}
+
vim_free(wtab);
}
}
@@ -4710,6 +4803,7 @@
vimconv_T conv;
int ascii = FALSE;
char_u *arg = eap->arg;
+ int error = FALSE;
if (STRNCMP(arg, "-ascii", 6) == 0)
{
@@ -4766,6 +4860,10 @@
}
}
+ /* Clear the char type tables, don't want to use any of the currently
+ * used spell properties. */
+ init_spell_chartab();
+
/*
* Read all the .aff and .dic files.
* Text is converted to 'encoding'.
@@ -4846,15 +4944,18 @@
*/
MSG(_("Processing words..."));
out_flush();
- expand_affixes(&newwords, &prefga, &suffga);
+ error = expand_affixes(&newwords, &prefga, &suffga) == FAIL;
- /* Write the info in the spell file. */
- smsg((char_u *)_("Writing spell file %s..."), wfname);
- out_flush();
- write_vim_spell(wfname, &prefga, &suffga, &newwords,
+ if (!error)
+ {
+ /* Write the info in the spell file. */
+ smsg((char_u *)_("Writing spell file %s..."), wfname);
+ out_flush();
+ write_vim_spell(wfname, &prefga, &suffga, &newwords,
fcount - 1, region_name);
- MSG(_("Done!"));
- out_flush();
+ MSG(_("Done!"));
+ out_flush();
+ }
/* Free the allocated stuff. */
free_wordtable(&newwords);
diff --git a/src/spell/en_AU.diff b/src/spell/en_AU.diff
new file mode 100644
index 0000000..2d03fa8
--- /dev/null
+++ b/src/spell/en_AU.diff
@@ -0,0 +1,2275 @@
+*** en_AU.orig.aff Fri Apr 15 13:20:36 2005
+--- en_AU.aff Sat Apr 23 19:57:40 2005
+***************
+*** 7,9 ****
+ SET ISO8859-1
+! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
+ REP 24
+--- 7,15 ----
+ SET ISO8859-1
+! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
+!
+! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+!
+!
+ REP 24
+***************
+*** 34,53 ****
+ PFX A Y 2
+! PFX A 0 re [^e]
+! PFX A 0 re- e
+ PFX a Y 1
+! PFX a 0 mis .
+ PFX I Y 4
+! PFX I 0 il l
+! PFX I 0 ir r
+! PFX I 0 im [bmp]
+! PFX I 0 in [^blmpr]
+ PFX c Y 1
+! PFX c 0 over .
+ PFX U Y 1
+! PFX U 0 un .
+ PFX C Y 2
+! PFX C 0 de [^e]
+! PFX C 0 de- e
+ PFX E Y 1
+! PFX E 0 dis .
+ PFX F Y 5
+--- 40,59 ----
+ PFX A Y 2
+! PFX A 0 re [^e]
+! PFX A 0 re- e
+ PFX a Y 1
+! PFX a 0 mis .
+ PFX I Y 4
+! PFX I 0 il l
+! PFX I 0 ir r
+! PFX I 0 im [bmp]
+! PFX I 0 in [^blmpr]
+ PFX c Y 1
+! PFX c 0 over .
+ PFX U Y 1
+! PFX U 0 un .
+ PFX C Y 2
+! PFX C 0 de [^e]
+! PFX C 0 de- e
+ PFX E Y 1
+! PFX E 0 dis .
+ PFX F Y 5
+***************
+*** 57,451 ****
+ PFX F 0 col l
+! PFX F 0 con [^abehilmopru].
+ PFX K Y 1
+! PFX K 0 pre .
+ PFX e Y 1
+! PFX e 0 out .
+ PFX f Y 2
+! PFX f 0 under [^r]
+! PFX f 0 under- r
+ PFX O Y 1
+! PFX O 0 non- .
+ PFX 4 Y 1
+! PFX 4 0 trans .
+ SFX V Y 15
+! SFX V 0 tive [aio]
+! SFX V b ptive b
+! SFX V d sive d
+! SFX V be ptive be
+! SFX V e tive ce
+! SFX V de sive de
+! SFX V ke cative ke
+! SFX V e ptive me
+! SFX V e ive [st]e
+! SFX V e ative [^bcdkmst]e
+! SFX V 0 lative [aeiou]l
+! SFX V 0 ative [^aeiou]l
+! SFX V 0 ive [st]
+! SFX V y icative y
+! SFX V 0 ative [^abdeilosty]
+ SFX v Y 15
+! SFX v 0 tively [aio]
+! SFX v b ptively b
+! SFX v d sively d
+! SFX v be ptively be
+! SFX v e tively ce
+! SFX v de sively de
+! SFX v ke catively ke
+! SFX v e ptively me
+! SFX v e ively [st]e
+! SFX v e atively [^bcdkmst]e
+! SFX v 0 latively [aeiou]l
+! SFX v 0 atively [^aeiou]l
+! SFX v 0 ively [st]
+! SFX v y icatively y
+! SFX v 0 atively [^abdeilosty]
+ SFX u Y 15
+! SFX u 0 tiveness [aio]
+! SFX u b ptiveness b
+! SFX u d siveness d
+! SFX u be ptiveness be
+! SFX u e tiveness ce
+! SFX u de siveness de
+! SFX u ke cativeness ke
+! SFX u e ptiveness me
+! SFX u e iveness [st]e
+! SFX u e ativeness [^bcdkmst]e
+! SFX u 0 lativeness [aeiou]l
+! SFX u 0 ativeness [^aeiou]l
+! SFX u 0 iveness [st]
+! SFX u y icativeness y
+! SFX u 0 ativeness [^abdeilosty]
+ SFX N Y 26
+! SFX N b ption b
+! SFX N d sion d
+! SFX N be ption be
+! SFX N e tion ce
+! SFX N de sion de
+! SFX N ke cation ke
+! SFX N e ption ume
+! SFX N e mation [^u]me
+! SFX N e ion [^o]se
+! SFX N e ition ose
+! SFX N e ation [iou]te
+! SFX N e ion [^iou]te
+! SFX N e ation [^bcdkmst]e
+! SFX N el ulsion el
+! SFX N 0 lation [aiou]l
+! SFX N 0 ation [^aeiou]l
+! SFX N 0 mation [aeiou]m
+! SFX N 0 ation [^aeiou]m
+! SFX N er ration er
+! SFX N 0 ation [^e]r
+! SFX N 0 ion [sx]
+! SFX N t ssion mit
+! SFX N 0 ion [^m]it
+! SFX N 0 ation [^i]t
+! SFX N y ication y
+! SFX N 0 ation [^bdelmrstxy]
+ SFX n Y 28
+! SFX n 0 tion a
+! SFX n e tion ce
+! SFX n ke cation ke
+! SFX n e ation [iou]te
+! SFX n e ion [^iou]te
+! SFX n e ation [^ckt]e
+! SFX n el ulsion el
+! SFX n 0 lation [aiou]l
+! SFX n 0 ation [^aeiou]l
+! SFX n er ration er
+! SFX n 0 ation [^e]r
+! SFX n y ation py
+! SFX n y ication [^p]y
+! SFX n 0 ation [^aelry]
+! SFX n 0 tions a
+! SFX n e tions ce
+! SFX n ke cations ke
+! SFX n e ations [iou]te
+! SFX n e ions [^iou]te
+! SFX n e ations [^ckt]e
+! SFX n el ulsions el
+! SFX n 0 lations [aiou]l
+! SFX n 0 ations [^aeiou]l
+! SFX n er rations er
+! SFX n 0 ations [^e]r
+! SFX n y ations py
+! SFX n y ications [^p]y
+! SFX n 0 ations [^aelry]
+ SFX X Y 26
+! SFX X b ptions b
+! SFX X d sions d
+! SFX X be ptions be
+! SFX X e tions ce
+! SFX X ke cations ke
+! SFX X de sions de
+! SFX X e ptions ume
+! SFX X e mations [^u]me
+! SFX X e ions [^o]se
+! SFX X e itions ose
+! SFX X e ations [iou]te
+! SFX X e ions [^iou]te
+! SFX X e ations [^bcdkmst]e
+! SFX X el ulsions el
+! SFX X 0 lations [aiou]l
+! SFX X 0 ations [^aeiou]l
+! SFX X 0 mations [aeiou]m
+! SFX X 0 ations [^aeiou]m
+! SFX X er rations er
+! SFX X 0 ations [^e]r
+! SFX X 0 ions [sx]
+! SFX X t ssions mit
+! SFX X 0 ions [^m]it
+! SFX X 0 ations [^i]t
+! SFX X y ications y
+! SFX X 0 ations [^bdelmrstxy]
+ SFX x Y 40
+! SFX x b ptional b
+! SFX x d sional d
+! SFX x be ptional be
+! SFX x e tional ce
+! SFX x ke cational ke
+! SFX x de sional de
+! SFX x e ional [^o]se
+! SFX x e itional ose
+! SFX x e ional te
+! SFX x e ational [^bcdkst]e
+! SFX x el ulsional el
+! SFX x 0 lational [aiou]l
+! SFX x 0 ational [^aeiou]l
+! SFX x er rational er
+! SFX x 0 ational [^e]r
+! SFX x 0 ional [sx]
+! SFX x 0 ional [^n]t
+! SFX x 0 ational nt
+! SFX x y icational y
+! SFX x 0 ational [^bdelrstxy]
+! SFX x b ptionally b
+! SFX x d sionally d
+! SFX x be ptionally be
+! SFX x e tionally ce
+! SFX x ke cationally ke
+! SFX x de sionally de
+! SFX x e ionally [^o]se
+! SFX x e itionally ose
+! SFX x e ionally te
+! SFX x e ationally [^bcdkst]e
+! SFX x el ulsionally el
+! SFX x 0 lationally [aiou]l
+! SFX x 0 ationally [^aeiou]l
+! SFX x er rationally er
+! SFX x 0 ationally [^e]r
+! SFX x 0 ionally [sx]
+! SFX x 0 ionally [^n]t
+! SFX x 0 ationally nt
+! SFX x y icationally y
+! SFX x 0 ationally [^bdelrstxy]
+ SFX H N 13
+! SFX H y ieth y
+! SFX H ree ird ree
+! SFX H ve fth ve
+! SFX H e th [^ev]e
+! SFX H 0 h t
+! SFX H 0 th [^ety]
+! SFX H y ieths y
+! SFX H ree irds ree
+! SFX H ve fths ve
+! SFX H e ths [^ev]e
+! SFX H 0 hs t
+! SFX H 0 ths [^ety]
+! SFX H 0 fold .
+ SFX Y Y 9
+! SFX Y 0 ally ic
+! SFX Y 0 ly [^i]c
+! SFX Y e y [^aeiou]le
+! SFX Y 0 ly [aeiou]le
+! SFX Y 0 ly [^l]e
+! SFX Y 0 y [^aeiou]l
+! SFX Y y ily [^aeiou]y
+! SFX Y 0 ly [aeiou][ly]
+! SFX Y 0 ly [^cely]
+ SFX G Y 24
+! SFX G e ing [^eioy]e
+! SFX G 0 ing [eoy]e
+! SFX G ie ying ie
+! SFX G 0 bing [^aeio][aeiou]b
+! SFX G 0 king [^aeio][aeiou]c
+! SFX G 0 ding [^aeio][aeiou]d
+! SFX G 0 fing [^aeio][aeiou]f
+! SFX G 0 ging [^aeio][aeiou]g
+! SFX G 0 king [^aeio][aeiou]k
+! SFX G 0 ling [^aeio][eiou]l
+! SFX G 0 ing [aeio][eiou]l
+! SFX G 0 ling [^aeo]al
+! SFX G 0 ing [aeo]al
+! SFX G 0 ming [^aeio][aeiou]m
+! SFX G 0 ning [^aeio][aeiou]n
+! SFX G 0 ping [^aeio][aeiou]p
+! SFX G 0 ring [^aeio][aeiou]r
+! SFX G 0 sing [^aeio][aeiou]s
+! SFX G 0 ting [^aeio][aeiou]t
+! SFX G 0 ving [^aeio][aeiou]v
+! SFX G 0 zing [^aeio][aeiou]z
+! SFX G 0 ing [aeio][aeiou][bcdfgkmnprstvz]
+! SFX G 0 ing [^aeiou][bcdfgklmnprstvz]
+! SFX G 0 ing [^ebcdfgklmnprstvz]
+ SFX J Y 25
+! SFX J e ings [^eioy]e
+! SFX J 0 ings [eoy]e
+! SFX J ie yings ie
+! SFX J 0 bings [^aeio][aeiou]b
+! SFX J 0 king [^aeio][aeiou]c
+! SFX J 0 dings [^aeio][aeiou]d
+! SFX J 0 fings [^aeio][aeiou]f
+! SFX J 0 gings [^aeio][aeiou]g
+! SFX J 0 kings [^aeio][aeiou]k
+! SFX J 0 lings [^aeio][eiou]l
+! SFX J 0 ings [aeio][eiou]l
+! SFX J 0 lings [^aeo]al
+! SFX J 0 ings [aeo]al
+! SFX J 0 mings [^aeio][aeiou]m
+! SFX J 0 nings [^aeio][aiou]n
+! SFX J 0 pings [^aeio][aeiou]p
+! SFX J 0 rings [^aeio][aiou]r
+! SFX J 0 sings [^aeio][aeiou]s
+! SFX J 0 tings [^aeio][aiou]t
+! SFX J 0 vings [^aeio][aeiou]v
+! SFX J 0 zings [^aeio][aeiou]z
+! SFX J 0 ings [^aeio]e[nrt]
+! SFX J 0 ings [aeio][aeiou][bcdfgkmnprstvz]
+! SFX J 0 ings [^aeiou][bcdfgklmnprstvz]
+! SFX J 0 ings [^ebcdfgklmnprstvz]
+ SFX k Y 8
+! SFX k e ingly [^eioy]e
+! SFX k 0 ingly [eoy]e
+! SFX k ie yingly ie
+! SFX k 0 kingly [^aeio][aeiou]c
+! SFX k 0 lingly [^aeio][aeiou]l
+! SFX k 0 ingly [aeio][aeiou][cl]
+! SFX k 0 ingly [^aeiou][cl]
+! SFX k 0 ingly [^ecl]
+ SFX D Y 25
+! SFX D 0 d [^e]e
+! SFX D e d ee
+! SFX D 0 bed [^aeio][aeiou]b
+! SFX D 0 ked [^aeio][aeiou]c
+! SFX D 0 ded [^aeio][aeiou]d
+! SFX D 0 fed [^aeio][aeiou]f
+! SFX D 0 ged [^aeio][aeiou]g
+! SFX D 0 ked [^aeio][aeiou]k
+! SFX D 0 led [^aeio][eiou]l
+! SFX D 0 ed [aeio][eiou]l
+! SFX D 0 led [^aeo]al
+! SFX D 0 ed [aeo]al
+! SFX D 0 med [^aeio][aeiou]m
+! SFX D 0 ned [^aeio][aeiou]n
+! SFX D 0 ped [^aeio][aeiou]p
+! SFX D 0 red [^aeio][aeiou]r
+! SFX D 0 sed [^aeio][aeiou]s
+! SFX D 0 ted [^aeio][aeiou]t
+! SFX D 0 ved [^aeio][aeiou]v
+! SFX D 0 zed [^aeio][aeiou]z
+! SFX D y ied [^aeiou]y
+! SFX D 0 ed [aeiou]y
+! SFX D 0 ed [aeio][aeiou][bcdfgkmnprstvz]
+! SFX D 0 ed [^aeiou][bcdfgklmnprstvz]
+! SFX D 0 ed [^ebcdfgklmnprstvyz]
+ SFX d Y 16
+! SFX d 0 d e
+! SFX d 0 ked [^aeio][aeiou]c
+! SFX d 0 led [^aeio][aeiou]l
+! SFX d y ied [^aeiou]y
+! SFX d 0 ed [aeiou]y
+! SFX d 0 ed [aeio][aeiou][cl]
+! SFX d 0 ed [^aeiou][cl]
+! SFX d 0 ed [^ecly]
+! SFX d e ing [^eioy]e
+! SFX d 0 ing [eoy]e
+! SFX d ie ying ie
+! SFX d 0 king [^aeio][aeiou]c
+! SFX d 0 ling [^aeio][aeiou]l
+! SFX d 0 ing [aeio][aeiou][cl]
+! SFX d 0 ing [^aeiou][cl]
+! SFX d 0 ing [^ecl]
+ SFX h Y 22
+! SFX h 0 dly e
+! SFX h 0 bedly [^aeio][aeiou]b
+! SFX h 0 kedly [^aeio][aeiou]c
+! SFX h 0 dedly [^aeio][aeiou]d
+! SFX h 0 fedly [^aeio][aeiou]f
+! SFX h 0 gedly [^aeio][aeiou]g
+! SFX h 0 kedly [^aeio][aeiou]k
+! SFX h 0 ledly [^aeio][aeiou]l
+! SFX h 0 medly [^aeio][aeiou]m
+! SFX h 0 nedly [^aeio][aiou]n
+! SFX h 0 pedly [^aeio][aeiou]p
+! SFX h 0 redly [^aeio][aiou]r
+! SFX h 0 sedly [^aeio][aeiou]s
+! SFX h 0 tedly [^aeio][aiou]t
+! SFX h 0 vedly [^aeio][aeiou]v
+! SFX h 0 zedly [^aeio][aeiou]z
+! SFX h 0 edly [^aeio]e[nrt]
+! SFX h y iedly [^aeiou]y
+! SFX h 0 edly [aeiou]y
+! SFX h 0 edly [aeio][aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^ebcdfgklmnprstvyz]
+ SFX i Y 22
+! SFX i 0 dness e
+! SFX i 0 bedness [^aeio][aeiou]b
+! SFX i 0 kedness [^aeio][aeiou]c
+! SFX i 0 dedness [^aeio][aeiou]d
+! SFX i 0 fedness [^aeio][aeiou]f
+! SFX i 0 gedness [^aeio][aeiou]g
+! SFX i 0 kedness [^aeio][aeiou]k
+! SFX i 0 ledness [^aeio][aeiou]l
+! SFX i 0 medness [^aeio][aeiou]m
+! SFX i 0 nedness [^aeio][aiou]n
+! SFX i 0 pedness [^aeio][aeiou]p
+! SFX i 0 redness [^aeio][aiou]r
+! SFX i 0 sedness [^aeio][aeiou]s
+! SFX i 0 tedness [^aeio][aiou]t
+! SFX i 0 vedness [^aeio][aeiou]v
+! SFX i 0 zedness [^aeio][aeiou]z
+! SFX i 0 edness [^aeio]e[nrt]
+! SFX i y iedness [^aeiou]y
+! SFX i 0 edness [aeiou]y
+! SFX i 0 edness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^ebcdfgklmnprstvyz]
+ SFX T Y 42
+! SFX T 0 r e
+ SFX T 0 st e
+! SFX T 0 ber [^aeio][aeiou]b
+ SFX T 0 best [^aeio][aeiou]b
+! SFX T 0 ker [^aeio][aeiou]c
+ SFX T 0 kest [^aeio][aeiou]c
+! SFX T 0 der [^aeio][aeiou]d
+ SFX T 0 dest [^aeio][aeiou]d
+! SFX T 0 fer [^aeio][aeiou]f
+ SFX T 0 fest [^aeio][aeiou]f
+! SFX T 0 ger [^aeio][aeiou]g
+ SFX T 0 gest [^aeio][aeiou]g
+! SFX T 0 ker [^aeio][aeiou]k
+ SFX T 0 kest [^aeio][aeiou]k
+! SFX T 0 ler [^aeio][aeiou]l
+ SFX T 0 lest [^aeio][aeiou]l
+! SFX T 0 mer [^aeio][aeiou]m
+ SFX T 0 mest [^aeio][aeiou]m
+! SFX T 0 ner [^aeio][aeiou]n
+ SFX T 0 nest [^aeio][aeiou]n
+! SFX T 0 per [^aeio][aeiou]p
+ SFX T 0 pest [^aeio][aeiou]p
+! SFX T 0 rer [^aeio][aeiou]r
+ SFX T 0 rest [^aeio][aeiou]r
+! SFX T 0 ser [^aeio][aeiou]s
+ SFX T 0 sest [^aeio][aeiou]s
+! SFX T 0 ter [^aeio][aeiou]t
+ SFX T 0 test [^aeio][aeiou]t
+! SFX T 0 ver [^aeio][aeiou]v
+ SFX T 0 vest [^aeio][aeiou]v
+! SFX T 0 zer [^aeio][aeiou]z
+ SFX T 0 zest [^aeio][aeiou]z
+! SFX T y ier [^aeiou]y
+ SFX T y iest [^aeiou]y
+! SFX T 0 er [aeiou]y
+ SFX T 0 est [aeiou]y
+--- 63,457 ----
+ PFX F 0 col l
+! PFX F 0 con [^abehilmopru].
+ PFX K Y 1
+! PFX K 0 pre .
+ PFX e Y 1
+! PFX e 0 out .
+ PFX f Y 2
+! PFX f 0 under [^r]
+! PFX f 0 under- r
+ PFX O Y 1
+! PFX O 0 non- .
+ PFX 4 Y 1
+! PFX 4 0 trans .
+ SFX V Y 15
+! SFX V 0 tive [aio]
+! SFX V b ptive b
+! SFX V d sive d
+! SFX V be ptive be
+! SFX V e tive ce
+! SFX V de sive de
+! SFX V ke cative ke
+! SFX V e ptive me
+! SFX V e ive [st]e
+! SFX V e ative [^bcdkmst]e
+! SFX V 0 lative [aeiou]l
+! SFX V 0 ative [^aeiou]l
+! SFX V 0 ive [st]
+! SFX V y icative y
+! SFX V 0 ative [^abdeilosty]
+ SFX v Y 15
+! SFX v 0 tively [aio]
+! SFX v b ptively b
+! SFX v d sively d
+! SFX v be ptively be
+! SFX v e tively ce
+! SFX v de sively de
+! SFX v ke catively ke
+! SFX v e ptively me
+! SFX v e ively [st]e
+! SFX v e atively [^bcdkmst]e
+! SFX v 0 latively [aeiou]l
+! SFX v 0 atively [^aeiou]l
+! SFX v 0 ively [st]
+! SFX v y icatively y
+! SFX v 0 atively [^abdeilosty]
+ SFX u Y 15
+! SFX u 0 tiveness [aio]
+! SFX u b ptiveness b
+! SFX u d siveness d
+! SFX u be ptiveness be
+! SFX u e tiveness ce
+! SFX u de siveness de
+! SFX u ke cativeness ke
+! SFX u e ptiveness me
+! SFX u e iveness [st]e
+! SFX u e ativeness [^bcdkmst]e
+! SFX u 0 lativeness [aeiou]l
+! SFX u 0 ativeness [^aeiou]l
+! SFX u 0 iveness [st]
+! SFX u y icativeness y
+! SFX u 0 ativeness [^abdeilosty]
+ SFX N Y 26
+! SFX N b ption b
+! SFX N d sion d
+! SFX N be ption be
+! SFX N e tion ce
+! SFX N de sion de
+! SFX N ke cation ke
+! SFX N e ption ume
+! SFX N e mation [^u]me
+! SFX N e ion [^o]se
+! SFX N e ition ose
+! SFX N e ation [iou]te
+! SFX N e ion [^iou]te
+! SFX N e ation [^bcdkmst]e
+! SFX N el ulsion el
+! SFX N 0 lation [aiou]l
+! SFX N 0 ation [^aeiou]l
+! SFX N 0 mation [aeiou]m
+! SFX N 0 ation [^aeiou]m
+! SFX N er ration er
+! SFX N 0 ation [^e]r
+! SFX N 0 ion [sx]
+! SFX N t ssion mit
+! SFX N 0 ion [^m]it
+! SFX N 0 ation [^i]t
+! SFX N y ication y
+! SFX N 0 ation [^bdelmrstxy]
+ SFX n Y 28
+! SFX n 0 tion a
+! SFX n e tion ce
+! SFX n ke cation ke
+! SFX n e ation [iou]te
+! SFX n e ion [^iou]te
+! SFX n e ation [^ckt]e
+! SFX n el ulsion el
+! SFX n 0 lation [aiou]l
+! SFX n 0 ation [^aeiou]l
+! SFX n er ration er
+! SFX n 0 ation [^e]r
+! SFX n y ation py
+! SFX n y ication [^p]y
+! SFX n 0 ation [^aelry]
+! SFX n 0 tions a
+! SFX n e tions ce
+! SFX n ke cations ke
+! SFX n e ations [iou]te
+! SFX n e ions [^iou]te
+! SFX n e ations [^ckt]e
+! SFX n el ulsions el
+! SFX n 0 lations [aiou]l
+! SFX n 0 ations [^aeiou]l
+! SFX n er rations er
+! SFX n 0 ations [^e]r
+! SFX n y ations py
+! SFX n y ications [^p]y
+! SFX n 0 ations [^aelry]
+ SFX X Y 26
+! SFX X b ptions b
+! SFX X d sions d
+! SFX X be ptions be
+! SFX X e tions ce
+! SFX X ke cations ke
+! SFX X de sions de
+! SFX X e ptions ume
+! SFX X e mations [^u]me
+! SFX X e ions [^o]se
+! SFX X e itions ose
+! SFX X e ations [iou]te
+! SFX X e ions [^iou]te
+! SFX X e ations [^bcdkmst]e
+! SFX X el ulsions el
+! SFX X 0 lations [aiou]l
+! SFX X 0 ations [^aeiou]l
+! SFX X 0 mations [aeiou]m
+! SFX X 0 ations [^aeiou]m
+! SFX X er rations er
+! SFX X 0 ations [^e]r
+! SFX X 0 ions [sx]
+! SFX X t ssions mit
+! SFX X 0 ions [^m]it
+! SFX X 0 ations [^i]t
+! SFX X y ications y
+! SFX X 0 ations [^bdelmrstxy]
+ SFX x Y 40
+! SFX x b ptional b
+! SFX x d sional d
+! SFX x be ptional be
+! SFX x e tional ce
+! SFX x ke cational ke
+! SFX x de sional de
+! SFX x e ional [^o]se
+! SFX x e itional ose
+! SFX x e ional te
+! SFX x e ational [^bcdkst]e
+! SFX x el ulsional el
+! SFX x 0 lational [aiou]l
+! SFX x 0 ational [^aeiou]l
+! SFX x er rational er
+! SFX x 0 ational [^e]r
+! SFX x 0 ional [sx]
+! SFX x 0 ional [^n]t
+! SFX x 0 ational nt
+! SFX x y icational y
+! SFX x 0 ational [^bdelrstxy]
+! SFX x b ptionally b
+! SFX x d sionally d
+! SFX x be ptionally be
+! SFX x e tionally ce
+! SFX x ke cationally ke
+! SFX x de sionally de
+! SFX x e ionally [^o]se
+! SFX x e itionally ose
+! SFX x e ionally te
+! SFX x e ationally [^bcdkst]e
+! SFX x el ulsionally el
+! SFX x 0 lationally [aiou]l
+! SFX x 0 ationally [^aeiou]l
+! SFX x er rationally er
+! SFX x 0 ationally [^e]r
+! SFX x 0 ionally [sx]
+! SFX x 0 ionally [^n]t
+! SFX x 0 ationally nt
+! SFX x y icationally y
+! SFX x 0 ationally [^bdelrstxy]
+ SFX H N 13
+! SFX H y ieth y
+! SFX H ree ird ree
+! SFX H ve fth ve
+! SFX H e th [^ev]e
+! SFX H 0 h t
+! SFX H 0 th [^ety]
+! SFX H y ieths y
+! SFX H ree irds ree
+! SFX H ve fths ve
+! SFX H e ths [^ev]e
+! SFX H 0 hs t
+! SFX H 0 ths [^ety]
+! SFX H 0 fold .
+ SFX Y Y 9
+! SFX Y 0 ally ic
+! SFX Y 0 ly [^i]c
+! SFX Y e y [^aeiou]le
+! SFX Y 0 ly [aeiou]le
+! SFX Y 0 ly [^l]e
+! SFX Y 0 y [^aeiou]l
+! SFX Y y ily [^aeiou]y
+! SFX Y 0 ly [aeiou][ly]
+! SFX Y 0 ly [^cely]
+ SFX G Y 24
+! SFX G e ing [^eioy]e
+! SFX G 0 ing [eoy]e
+! SFX G ie ying ie
+! SFX G 0 bing [^aeio][aeiou]b
+! SFX G 0 king [^aeio][aeiou]c
+! SFX G 0 ding [^aeio][aeiou]d
+! SFX G 0 fing [^aeio][aeiou]f
+! SFX G 0 ging [^aeio][aeiou]g
+! SFX G 0 king [^aeio][aeiou]k
+! SFX G 0 ling [^aeio][eiou]l
+! SFX G 0 ing [aeio][eiou]l
+! SFX G 0 ling [^aeo]al
+! SFX G 0 ing [aeo]al
+! SFX G 0 ming [^aeio][aeiou]m
+! SFX G 0 ning [^aeio][aeiou]n
+! SFX G 0 ping [^aeio][aeiou]p
+! SFX G 0 ring [^aeio][aeiou]r
+! SFX G 0 sing [^aeio][aeiou]s
+! SFX G 0 ting [^aeio][aeiou]t
+! SFX G 0 ving [^aeio][aeiou]v
+! SFX G 0 zing [^aeio][aeiou]z
+! SFX G 0 ing [aeio][aeiou][bcdfgkmnprstvz]
+! SFX G 0 ing [^aeiou][bcdfgklmnprstvz]
+! SFX G 0 ing [^ebcdfgklmnprstvz]
+ SFX J Y 25
+! SFX J e ings [^eioy]e
+! SFX J 0 ings [eoy]e
+! SFX J ie yings ie
+! SFX J 0 bings [^aeio][aeiou]b
+! SFX J 0 king [^aeio][aeiou]c
+! SFX J 0 dings [^aeio][aeiou]d
+! SFX J 0 fings [^aeio][aeiou]f
+! SFX J 0 gings [^aeio][aeiou]g
+! SFX J 0 kings [^aeio][aeiou]k
+! SFX J 0 lings [^aeio][eiou]l
+! SFX J 0 ings [aeio][eiou]l
+! SFX J 0 lings [^aeo]al
+! SFX J 0 ings [aeo]al
+! SFX J 0 mings [^aeio][aeiou]m
+! SFX J 0 nings [^aeio][aiou]n
+! SFX J 0 pings [^aeio][aeiou]p
+! SFX J 0 rings [^aeio][aiou]r
+! SFX J 0 sings [^aeio][aeiou]s
+! SFX J 0 tings [^aeio][aiou]t
+! SFX J 0 vings [^aeio][aeiou]v
+! SFX J 0 zings [^aeio][aeiou]z
+! SFX J 0 ings [^aeio]e[nrt]
+! SFX J 0 ings [aeio][aeiou][bcdfgkmnprstvz]
+! SFX J 0 ings [^aeiou][bcdfgklmnprstvz]
+! SFX J 0 ings [^ebcdfgklmnprstvz]
+ SFX k Y 8
+! SFX k e ingly [^eioy]e
+! SFX k 0 ingly [eoy]e
+! SFX k ie yingly ie
+! SFX k 0 kingly [^aeio][aeiou]c
+! SFX k 0 lingly [^aeio][aeiou]l
+! SFX k 0 ingly [aeio][aeiou][cl]
+! SFX k 0 ingly [^aeiou][cl]
+! SFX k 0 ingly [^ecl]
+ SFX D Y 25
+! SFX D 0 d [^e]e
+! SFX D e d ee
+! SFX D 0 bed [^aeio][aeiou]b
+! SFX D 0 ked [^aeio][aeiou]c
+! SFX D 0 ded [^aeio][aeiou]d
+! SFX D 0 fed [^aeio][aeiou]f
+! SFX D 0 ged [^aeio][aeiou]g
+! SFX D 0 ked [^aeio][aeiou]k
+! SFX D 0 led [^aeio][eiou]l
+! SFX D 0 ed [aeio][eiou]l
+! SFX D 0 led [^aeo]al
+! SFX D 0 ed [aeo]al
+! SFX D 0 med [^aeio][aeiou]m
+! SFX D 0 ned [^aeio][aeiou]n
+! SFX D 0 ped [^aeio][aeiou]p
+! SFX D 0 red [^aeio][aeiou]r
+! SFX D 0 sed [^aeio][aeiou]s
+! SFX D 0 ted [^aeio][aeiou]t
+! SFX D 0 ved [^aeio][aeiou]v
+! SFX D 0 zed [^aeio][aeiou]z
+! SFX D y ied [^aeiou]y
+! SFX D 0 ed [aeiou]y
+! SFX D 0 ed [aeio][aeiou][bcdfgkmnprstvz]
+! SFX D 0 ed [^aeiou][bcdfgklmnprstvz]
+! SFX D 0 ed [^ebcdfgklmnprstvyz]
+ SFX d Y 16
+! SFX d 0 d e
+! SFX d 0 ked [^aeio][aeiou]c
+! SFX d 0 led [^aeio][aeiou]l
+! SFX d y ied [^aeiou]y
+! SFX d 0 ed [aeiou]y
+! SFX d 0 ed [aeio][aeiou][cl]
+! SFX d 0 ed [^aeiou][cl]
+! SFX d 0 ed [^ecly]
+! SFX d e ing [^eioy]e
+! SFX d 0 ing [eoy]e
+! SFX d ie ying ie
+! SFX d 0 king [^aeio][aeiou]c
+! SFX d 0 ling [^aeio][aeiou]l
+! SFX d 0 ing [aeio][aeiou][cl]
+! SFX d 0 ing [^aeiou][cl]
+! SFX d 0 ing [^ecl]
+ SFX h Y 22
+! SFX h 0 dly e
+! SFX h 0 bedly [^aeio][aeiou]b
+! SFX h 0 kedly [^aeio][aeiou]c
+! SFX h 0 dedly [^aeio][aeiou]d
+! SFX h 0 fedly [^aeio][aeiou]f
+! SFX h 0 gedly [^aeio][aeiou]g
+! SFX h 0 kedly [^aeio][aeiou]k
+! SFX h 0 ledly [^aeio][aeiou]l
+! SFX h 0 medly [^aeio][aeiou]m
+! SFX h 0 nedly [^aeio][aiou]n
+! SFX h 0 pedly [^aeio][aeiou]p
+! SFX h 0 redly [^aeio][aiou]r
+! SFX h 0 sedly [^aeio][aeiou]s
+! SFX h 0 tedly [^aeio][aiou]t
+! SFX h 0 vedly [^aeio][aeiou]v
+! SFX h 0 zedly [^aeio][aeiou]z
+! SFX h 0 edly [^aeio]e[nrt]
+! SFX h y iedly [^aeiou]y
+! SFX h 0 edly [aeiou]y
+! SFX h 0 edly [aeio][aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^ebcdfgklmnprstvyz]
+ SFX i Y 22
+! SFX i 0 dness e
+! SFX i 0 bedness [^aeio][aeiou]b
+! SFX i 0 kedness [^aeio][aeiou]c
+! SFX i 0 dedness [^aeio][aeiou]d
+! SFX i 0 fedness [^aeio][aeiou]f
+! SFX i 0 gedness [^aeio][aeiou]g
+! SFX i 0 kedness [^aeio][aeiou]k
+! SFX i 0 ledness [^aeio][aeiou]l
+! SFX i 0 medness [^aeio][aeiou]m
+! SFX i 0 nedness [^aeio][aiou]n
+! SFX i 0 pedness [^aeio][aeiou]p
+! SFX i 0 redness [^aeio][aiou]r
+! SFX i 0 sedness [^aeio][aeiou]s
+! SFX i 0 tedness [^aeio][aiou]t
+! SFX i 0 vedness [^aeio][aeiou]v
+! SFX i 0 zedness [^aeio][aeiou]z
+! SFX i 0 edness [^aeio]e[nrt]
+! SFX i y iedness [^aeiou]y
+! SFX i 0 edness [aeiou]y
+! SFX i 0 edness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^ebcdfgklmnprstvyz]
+ SFX T Y 42
+! SFX T 0 r e
+ SFX T 0 st e
+! SFX T 0 ber [^aeio][aeiou]b
+ SFX T 0 best [^aeio][aeiou]b
+! SFX T 0 ker [^aeio][aeiou]c
+ SFX T 0 kest [^aeio][aeiou]c
+! SFX T 0 der [^aeio][aeiou]d
+ SFX T 0 dest [^aeio][aeiou]d
+! SFX T 0 fer [^aeio][aeiou]f
+ SFX T 0 fest [^aeio][aeiou]f
+! SFX T 0 ger [^aeio][aeiou]g
+ SFX T 0 gest [^aeio][aeiou]g
+! SFX T 0 ker [^aeio][aeiou]k
+ SFX T 0 kest [^aeio][aeiou]k
+! SFX T 0 ler [^aeio][aeiou]l
+ SFX T 0 lest [^aeio][aeiou]l
+! SFX T 0 mer [^aeio][aeiou]m
+ SFX T 0 mest [^aeio][aeiou]m
+! SFX T 0 ner [^aeio][aeiou]n
+ SFX T 0 nest [^aeio][aeiou]n
+! SFX T 0 per [^aeio][aeiou]p
+ SFX T 0 pest [^aeio][aeiou]p
+! SFX T 0 rer [^aeio][aeiou]r
+ SFX T 0 rest [^aeio][aeiou]r
+! SFX T 0 ser [^aeio][aeiou]s
+ SFX T 0 sest [^aeio][aeiou]s
+! SFX T 0 ter [^aeio][aeiou]t
+ SFX T 0 test [^aeio][aeiou]t
+! SFX T 0 ver [^aeio][aeiou]v
+ SFX T 0 vest [^aeio][aeiou]v
+! SFX T 0 zer [^aeio][aeiou]z
+ SFX T 0 zest [^aeio][aeiou]z
+! SFX T y ier [^aeiou]y
+ SFX T y iest [^aeiou]y
+! SFX T 0 er [aeiou]y
+ SFX T 0 est [aeiou]y
+***************
+*** 458,1143 ****
+ SFX R Y 72
+! SFX R 0 r e
+! SFX R 0 rs e
+! SFX R 0 ber [^aeio][aeiou]b
+! SFX R 0 bers [^aeio][aeiou]b
+! SFX R 0 ker [^aeio][aeiou]c
+! SFX R 0 kers [^aeio][aeiou]c
+! SFX R 0 der [^aeio][aeiou]d
+! SFX R 0 ders [^aeio][aeiou]d
+! SFX R 0 fer [^aeio][aeiou]f
+! SFX R 0 fers [^aeio][aeiou]f
+! SFX R 0 ger [^aeio][aeiou]g
+! SFX R 0 gers [^aeio][aeiou]g
+! SFX R 0 ker [^aeio][aeiou]k
+! SFX R 0 kers [^aeio][aeiou]k
+! SFX R 0 ler [^aeio][eiou]l
+! SFX R 0 er [aeio][eiou]l
+! SFX R 0 ler [^aeo]al
+! SFX R 0 er [aeo]al
+! SFX R 0 lers [^aeio][eiou]l
+! SFX R 0 ers [aeio][eiou]l
+! SFX R 0 lers [^aeo]al
+! SFX R 0 ers [aeo]al
+! SFX R 0 mer [^aeio][aeiou]m
+! SFX R 0 mers [^aeio][aeiou]m
+! SFX R 0 ner [^aeio][aeiou]n
+! SFX R 0 ners [^aeio][aeiou]n
+! SFX R 0 per [^aeio][aeiou]p
+! SFX R 0 pers [^aeio][aeiou]p
+! SFX R 0 rer [^aeio][aeiou]r
+! SFX R 0 rers [^aeio][aeiou]r
+! SFX R 0 ser [^aeio][aeiou]s
+! SFX R 0 sers [^aeio][aeiou]s
+! SFX R 0 ter [^aeio][aeiou]t
+! SFX R 0 ters [^aeio][aeiou]t
+! SFX R 0 ver [^aeio][aeiou]v
+! SFX R 0 vers [^aeio][aeiou]v
+! SFX R 0 zer [^aeio][aeiou]z
+! SFX R 0 zers [^aeio][aeiou]z
+! SFX R y ier [^aeiou]y
+! SFX R y iers [^aeiou]y
+! SFX R 0 er [aeiou]y
+! SFX R 0 ers [aeiou]y
+! SFX R 0 er [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 ers [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 ers [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er [^ebcdfgklmnprstvyz]
+! SFX R 0 ers [^ebcdfgklmnprstvyz]
+! SFX R 0 r's e
+! SFX R 0 ber's [^aeio][aeiou]b
+! SFX R 0 ker's [^aeio][aeiou]c
+! SFX R 0 der's [^aeio][aeiou]d
+! SFX R 0 fer's [^aeio][aeiou]f
+! SFX R 0 ger's [^aeio][aeiou]g
+! SFX R 0 ker's [^aeio][aeiou]k
+! SFX R 0 ler's [^aeio][eiou]l
+! SFX R 0 er's [aeio][eiou]l
+! SFX R 0 ler's [^aeo]al
+! SFX R 0 er's [aeo]al
+! SFX R 0 mer's [^aeio][aeiou]m
+! SFX R 0 ner's [^aeio][aeiou]n
+! SFX R 0 per's [^aeio][aeiou]p
+! SFX R 0 rer's [^aeio][aeiou]r
+! SFX R 0 ser's [^aeio][aeiou]s
+! SFX R 0 ter's [^aeio][aeiou]t
+! SFX R 0 ver's [^aeio][aeiou]v
+! SFX R 0 zer's [^aeio][aeiou]z
+! SFX R y ier's [^aeiou]y
+! SFX R 0 er's [aeiou]y
+! SFX R 0 er's [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er's [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er's [^ebcdfgklmnprstvyz]
+ SFX r Y 24
+! SFX r 0 r e
+! SFX r 0 ler [^aeio][aeiou]l
+! SFX r 0 ker [^aeio][aeiou]c
+! SFX r y ier [^aeiou]y
+! SFX r 0 er [aeiou]y
+! SFX r 0 er [aeio][aeiou][cl]
+! SFX r 0 er [^aeiou][cl]
+! SFX r 0 er [^ecly]
+! SFX r 0 rs e
+! SFX r 0 lers [^aeio][aeiou]l
+! SFX r 0 kers [^aeio][aeiou]c
+! SFX r y iers [^aeiou]y
+! SFX r 0 ers [aeiou]y
+! SFX r 0 ers [aeio][aeiou][cl]
+! SFX r 0 ers [^aeiou][cl]
+! SFX r 0 ers [^ecly]
+! SFX r 0 r's e
+! SFX r 0 ler's [^aeio][aeiou]l
+! SFX r 0 ker's [^aeio][aeiou]c
+! SFX r y ier's [^aeiou]y
+! SFX r 0 er's [aeiou]y
+! SFX r 0 er's [aeio][aeiou][cl]
+! SFX r 0 er's [^aeiou][cl]
+! SFX r 0 er's [^ecly]
+ SFX S Y 9
+! SFX S y ies [^aeiou]y
+! SFX S 0 s [aeiou]y
+! SFX S 0 es [sxz]
+! SFX S 0 es [cs]h
+! SFX S 0 s [^cs]h
+! SFX S 0 s [ae]u
+! SFX S 0 x [ae]u
+! SFX S 0 s [^ae]u
+ SFX S 0 s [^hsuxyz]
+ SFX P Y 6
+! SFX P y iness [^aeiou]y
+! SFX P 0 ness [aeiou]y
+! SFX P 0 ness [^y]
+! SFX P y iness's [^aeiou]y
+! SFX P 0 ness's [aeiou]y
+! SFX P 0 ness's [^y]
+ SFX m Y 20
+! SFX m 0 sman [bdknmt]
+! SFX m 0 sman [aeiou][bdklmnt]e
+! SFX m 0 man [^aeiou][bdklmnt]e
+! SFX m 0 man [^bdklmnt]e
+! SFX m 0 man [^bdeknmt]
+! SFX m 0 smen [bdknmt]
+! SFX m 0 smen [aeiou][bdklmnt]e
+! SFX m 0 men [^aeiou][bdklmnt]e
+! SFX m 0 men [^bdklmnt]e
+! SFX m 0 men [^bdeknmt]
+! SFX m 0 sman's [bdknmt]
+! SFX m 0 sman's [aeiou][bdklmnt]e
+! SFX m 0 man's [^aeiou][bdklmnt]e
+! SFX m 0 man's [^bdklmnt]e
+! SFX m 0 man's [^bdeknmt]
+! SFX m 0 smen's [bdknmt]
+! SFX m 0 smen's [aeiou][bdklmnt]e
+! SFX m 0 men's [^aeiou][bdklmnt]e
+! SFX m 0 men's [^bdklmnt]e
+! SFX m 0 men's [^bdeknmt]
+ SFX 5 Y 15
+! SFX 5 0 swoman [bdknmt]
+! SFX 5 0 swoman [aeiou][bdklmnt]e
+! SFX 5 0 woman [^aeiou][bdklmnt]e
+! SFX 5 0 woman [^bdklmnt]e
+! SFX 5 0 woman [^bdeknmt]
+! SFX 5 0 swomen [bdknmt]
+! SFX 5 0 swomen [aeiou][bdklmnt]e
+! SFX 5 0 women [^aeiou][bdklmnt]e
+! SFX 5 0 women [^bdklmnt]e
+! SFX 5 0 women [^bdeknmt]
+! SFX 5 0 swoman's [bdknmt]
+! SFX 5 0 swoman's [aeiou][bdklmnt]e
+! SFX 5 0 woman's [^aeiou][bdklmnt]e
+! SFX 5 0 woman's [^bdklmnt]e
+! SFX 5 0 woman's [^bdeknmt]
+ SFX 6 Y 3
+! SFX 6 y iful [^aeiou]y
+! SFX 6 0 ful [aeiou]y
+! SFX 6 0 ful [^y]
+ SFX j Y 3
+! SFX j y ifully [^aeiou]y
+! SFX j 0 fully [aeiou]y
+! SFX j 0 fully [^y]
+ SFX p Y 5
+! SFX p y iless [^aeiou]y
+! SFX p 0 less [aeiou]y
+! SFX p 0 ess ll
+! SFX p 0 less [^l]l
+! SFX p 0 less [^ly]
+ SFX Q Y 88
+! SFX Q 0 tise a
+! SFX Q e ise [^l]e
+! SFX Q le ilise [^aeiou]le
+! SFX Q e ise [aeiou]le
+! SFX Q um ise um
+! SFX Q 0 ise [^u]m
+! SFX Q s se is
+! SFX Q 0 ise [^i]s
+! SFX Q y ise [^aeiou]y
+! SFX Q 0 ise [aeiou]y
+! SFX Q 0 ise [^aemsy]
+! SFX Q 0 tises a
+! SFX Q e ises [^l]e
+! SFX Q le ilises [^aeiou]le
+! SFX Q e ises [aeiou]le
+! SFX Q um ises um
+! SFX Q 0 ises [^u]m
+! SFX Q s ses is
+! SFX Q 0 ises [^i]s
+! SFX Q y ises [^aeiou]y
+! SFX Q 0 ises [aeiou]y
+! SFX Q 0 ises [^aemsy]
+! SFX Q 0 tised a
+! SFX Q e ised [^l]e
+! SFX Q le ilised [^aeiou]le
+! SFX Q e ised [aeiou]le
+! SFX Q um ised um
+! SFX Q 0 ised [^u]m
+! SFX Q s sed is
+! SFX Q 0 ised [^i]s
+! SFX Q y ised [^aeiou]y
+! SFX Q 0 ised [aeiou]y
+! SFX Q 0 ised [^aemsy]
+! SFX Q 0 tising a
+! SFX Q e ising [^l]e
+! SFX Q le ilising [^aeiou]le
+! SFX Q e ising [aeiou]le
+! SFX Q um ising um
+! SFX Q 0 ising [^u]m
+! SFX Q s sing is
+! SFX Q 0 ising [^i]s
+! SFX Q y ising [^aeiou]y
+! SFX Q 0 ising [aeiou]y
+! SFX Q 0 ising [^aemsy]
+! SFX Q 0 tize a
+! SFX Q e ize [^l]e
+! SFX Q le ilize [^aeiou]le
+! SFX Q e ize [aeiou]le
+! SFX Q um ize um
+! SFX Q 0 ize [^u]m
+! SFX Q s ze is
+! SFX Q 0 ize [^i]s
+! SFX Q y ize [^aeiou]y
+! SFX Q 0 ize [aeiou]y
+! SFX Q 0 ize [^aemsy]
+! SFX Q 0 tizes a
+! SFX Q e izes [^l]e
+! SFX Q le ilizes [^aeiou]le
+! SFX Q e izes [aeiou]le
+! SFX Q um izes um
+! SFX Q 0 izes [^u]m
+! SFX Q s zes is
+! SFX Q 0 izes [^i]s
+! SFX Q y izes [^aeiou]y
+! SFX Q 0 izes [aeiou]y
+! SFX Q 0 izes [^aemsy]
+! SFX Q 0 tized a
+! SFX Q e ized [^l]e
+! SFX Q le ilized [^aeiou]le
+! SFX Q e ized [aeiou]le
+! SFX Q um ized um
+! SFX Q 0 ized [^u]m
+! SFX Q s zed is
+! SFX Q 0 ized [^i]s
+! SFX Q y ized [^aeiou]y
+! SFX Q 0 ized [aeiou]y
+! SFX Q 0 ized [^aemsy]
+! SFX Q 0 tizing a
+! SFX Q e izing [^l]e
+! SFX Q le ilizing [^aeiou]le
+! SFX Q e izing [aeiou]le
+! SFX Q um izing um
+! SFX Q 0 izing [^u]m
+! SFX Q s zing is
+! SFX Q 0 izing [^i]s
+! SFX Q y izing [^aeiou]y
+! SFX Q 0 izing [aeiou]y
+! SFX Q 0 izing [^aemsy]
+ SFX q Y 44
+! SFX q 0 tisation a
+! SFX q e isation [^l]e
+! SFX q le ilisation [^aeiou]le
+! SFX q e isation [aeiou]le
+! SFX q um isation um
+! SFX q 0 isation [^u]m
+! SFX q s sation is
+! SFX q 0 isation [^i]s
+! SFX q y isation [^aeiou]y
+! SFX q 0 isation [aeiou]y
+! SFX q 0 isation [^aemsy]
+! SFX q 0 tisations a
+! SFX q e isations [^l]e
+! SFX q le ilisations [^aeiou]le
+! SFX q e isations [aeiou]le
+! SFX q um isations um
+! SFX q 0 isations [^u]m
+! SFX q s sations is
+! SFX q 0 isations [^i]s
+! SFX q y isations [^aeiou]y
+! SFX q 0 isations [aeiou]y
+! SFX q 0 isations [^aemsy]
+! SFX q 0 tization a
+! SFX q e ization [^l]e
+! SFX q le ilization [^aeiou]le
+! SFX q e ization [aeiou]le
+! SFX q um ization um
+! SFX q 0 ization [^u]m
+! SFX q s zation is
+! SFX q 0 ization [^i]s
+! SFX q y ization [^aeiou]y
+! SFX q 0 ization [aeiou]y
+! SFX q 0 ization [^aemsy]
+! SFX q 0 tizations a
+! SFX q e izations [^l]e
+! SFX q le ilizations [^aeiou]le
+! SFX q e izations [aeiou]le
+! SFX q um izations um
+! SFX q 0 izations [^u]m
+! SFX q s zations is
+! SFX q 0 izations [^i]s
+! SFX q y izations [^aeiou]y
+! SFX q 0 izations [aeiou]y
+! SFX q 0 izations [^aemsy]
+ SFX s Y 66
+! SFX s 0 tiser a
+! SFX s e iser [^l]e
+! SFX s le iliser [^aeiou]le
+! SFX s e iser [aeiou]le
+! SFX s um iser um
+! SFX s 0 iser [^u]m
+! SFX s s ser is
+! SFX s 0 iser [^i]s
+! SFX s y iser [^aeiou]y
+! SFX s 0 iser [aeiou]y
+! SFX s 0 iser [^aemsy]
+! SFX s 0 tisers a
+! SFX s e isers [^l]e
+! SFX s le ilisers [^aeiou]le
+! SFX s e isers [aeiou]le
+! SFX s um isers um
+! SFX s 0 isers [^u]m
+! SFX s s sers is
+! SFX s 0 isers [^i]s
+! SFX s y isers [^aeiou]y
+! SFX s 0 isers [aeiou]y
+! SFX s 0 isers [^aemsy]
+! SFX s 0 tiser's a
+! SFX s e iser's [^l]e
+! SFX s le iliser's [^aeiou]le
+! SFX s e iser's [aeiou]le
+! SFX s um iser's um
+! SFX s 0 iser's [^u]m
+! SFX s s ser's is
+! SFX s 0 iser's [^i]s
+! SFX s y iser's [^aeiou]y
+! SFX s 0 iser's [aeiou]y
+! SFX s 0 iser's [^aemsy]
+! SFX s 0 tizer a
+! SFX s e izer [^l]e
+! SFX s le ilizer [^aeiou]le
+! SFX s e izer [aeiou]le
+! SFX s um izer um
+! SFX s 0 izer [^u]m
+! SFX s s zer is
+! SFX s 0 izer [^i]s
+! SFX s y izer [^aeiou]y
+! SFX s 0 izer [aeiou]y
+! SFX s 0 izer [^aemsy]
+! SFX s 0 tizers a
+! SFX s e izers [^l]e
+! SFX s le ilizers [^aeiou]le
+! SFX s e izers [aeiou]le
+! SFX s um izers um
+! SFX s 0 izers [^u]m
+! SFX s s zers is
+! SFX s 0 izers [^i]s
+! SFX s y izers [^aeiou]y
+! SFX s 0 izers [aeiou]y
+! SFX s 0 izers [^aemsy]
+! SFX s 0 tizer's a
+! SFX s e izer's [^l]e
+! SFX s le ilizer's [^aeiou]le
+! SFX s e izer's [aeiou]le
+! SFX s um izer's um
+! SFX s 0 izer's [^u]m
+! SFX s s zer's is
+! SFX s 0 izer's [^i]s
+! SFX s y izer's [^aeiou]y
+! SFX s 0 izer's [aeiou]y
+! SFX s 0 izer's [^aemsy]
+ SFX t Y 44
+! SFX t 0 tisable a
+! SFX t e isable [^l]e
+! SFX t le ilisable [^aeiou]le
+! SFX t e isable [aeiou]le
+! SFX t um isable um
+! SFX t 0 isable [^u]m
+! SFX t s sable is
+! SFX t 0 isable [^i]s
+! SFX t y isable [^aeiou]y
+! SFX t 0 isable [aeiou]y
+! SFX t 0 isable [^aemsy]
+! SFX t 0 tizable a
+! SFX t e izable [^l]e
+! SFX t le ilizable [^aeiou]le
+! SFX t e izable [aeiou]le
+! SFX t um izable um
+! SFX t 0 izable [^u]m
+! SFX t s zable is
+! SFX t 0 izable [^i]s
+! SFX t y izable [^aeiou]y
+! SFX t 0 izable [aeiou]y
+! SFX t 0 izable [^aemsy]
+! SFX t 0 tisability a
+! SFX t e isability [^l]e
+! SFX t le ilisability [^aeiou]le
+! SFX t e isability [aeiou]le
+! SFX t um isability um
+! SFX t 0 isability [^u]m
+! SFX t s sability is
+! SFX t 0 isability [^i]s
+! SFX t y isability [^aeiou]y
+! SFX t 0 isability [aeiou]y
+! SFX t 0 isability [^aemsy]
+! SFX t 0 tizability a
+! SFX t e izability [^l]e
+! SFX t le ilizability [^aeiou]le
+! SFX t e izability [aeiou]le
+! SFX t um izability um
+! SFX t 0 izability [^u]m
+! SFX t s zability is
+! SFX t 0 izability [^i]s
+! SFX t y izability [^aeiou]y
+! SFX t 0 izability [aeiou]y
+! SFX t 0 izability [^aemsy]
+ SFX M Y 1
+! SFX M 0 's .
+ SFX B Y 48
+! SFX B e able [^acegilotu]e
+! SFX B 0 able [acegilou]e
+! SFX B te ble ate
+! SFX B e able [^a]te
+! SFX B 0 bable [^aeio][aeiou]b
+! SFX B 0 kable [^aeio][aeiou]c
+! SFX B 0 dable [^aeio][aeiou]d
+! SFX B 0 fable [^aeio][aeiou]f
+! SFX B 0 gable [^aeio][aeiou]g
+! SFX B 0 kable [^aeio][aeiou]k
+! SFX B 0 lable [^aeio][aeiou]l
+! SFX B 0 mable [^aeio][aeiou]m
+! SFX B 0 nable [^aeio][aeiou]n
+! SFX B 0 pable [^aeio][aeiou]p
+! SFX B 0 rable [^aeio][aeiou]r
+! SFX B 0 sable [^aeio][aeiou]s
+! SFX B 0 table [^aeio][aeiou]t
+! SFX B 0 vable [^aeio][aeiou]v
+! SFX B 0 zable [^aeio][aeiou]z
+! SFX B 0 able [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 able [^aeiou][bcdfgklmnprstvz]
+! SFX B y iable [^aeiou]y
+! SFX B 0 able [aeiou]y
+! SFX B 0 able [^ebcdfgklmnprstvzy]
+! SFX B e ability [^acegilotu]e
+! SFX B 0 ability [acegilou]e
+! SFX B te bility ate
+! SFX B e ability [^a]te
+! SFX B 0 bability [^aeio][aeiou]b
+! SFX B 0 kability [^aeio][aeiou]c
+! SFX B 0 dability [^aeio][aeiou]d
+! SFX B 0 fability [^aeio][aeiou]f
+! SFX B 0 gability [^aeio][aeiou]g
+! SFX B 0 kability [^aeio][aeiou]k
+! SFX B 0 lability [^aeio][aeiou]l
+! SFX B 0 mability [^aeio][aeiou]m
+! SFX B 0 nability [^aeio][aeiou]n
+! SFX B 0 pability [^aeio][aeiou]p
+! SFX B 0 rability [^aeio][aeiou]r
+! SFX B 0 sability [^aeio][aeiou]s
+! SFX B 0 tability [^aeio][aeiou]t
+! SFX B 0 vability [^aeio][aeiou]v
+! SFX B 0 zability [^aeio][aeiou]z
+! SFX B 0 ability [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 ability [^aeiou][bcdfgklmnprstvz]
+! SFX B y iability [^aeiou]y
+! SFX B 0 ability [aeiou]y
+! SFX B 0 ability [^ebcdfgklmnprstvzy]
+ SFX 7 Y 9
+! SFX 7 e able [acegilou]e
+! SFX 7 0 able [^acegilou]e
+! SFX 7 0 kable [^aeio][aeiou]c
+! SFX 7 0 lable [^aeio][aeiou]l
+! SFX 7 0 able [aeio][aeiou][cl]
+! SFX 7 0 able [^aeiou][cl]
+! SFX 7 y iable [^aeiou]y
+! SFX 7 0 able [aeiou]y
+! SFX 7 0 able [^cely]
+ SFX g Y 9
+! SFX g e ability [^acegilou]e
+! SFX g 0 ability [acegilou]e
+! SFX g 0 kability [^aeio][aeiou]c
+! SFX g 0 lability [^aeio][aeiou]l
+! SFX g 0 ability [aeio][aeiou][cl]
+! SFX g 0 ability [^aeiou][cl]
+! SFX g y iability [^aeiou]y
+! SFX g 0 ability [aeiou]y
+! SFX g 0 ability [^cely]
+ SFX l Y 9
+! SFX l e ably [^acegilou]e
+! SFX l 0 ably [acegilou]e
+! SFX l 0 kably [^aeio][aeiou]c
+! SFX l 0 lably [^aeio][aeiou]l
+! SFX l 0 ably [aeio][aeiou][cl]
+! SFX l 0 ably [^aeiou][cl]
+! SFX l y iably [^aeiou]y
+! SFX l 0 ably [aeiou]y
+! SFX l 0 ably [^cely]
+ SFX b Y 3
+! SFX b e ible [^aeiou]e
+! SFX b 0 ible [aeiou]e
+! SFX b 0 ible [^e]
+ SFX L Y 12
+! SFX L 0 ament m
+! SFX L y iment [^aeiou]y
+! SFX L 0 ment [aeiou]y
+! SFX L 0 ment [^my]
+! SFX L 0 aments m
+! SFX L y iments [^aeiou]y
+! SFX L 0 ments [aeiou]y
+! SFX L 0 ments [^my]
+! SFX L 0 ament's m
+! SFX L y iment's [^aeiou]y
+! SFX L 0 ment's [aeiou]y
+! SFX L 0 ment's [^my]
+ SFX Z Y 22
+! SFX Z e y [^aeiouy]e
+! SFX Z 0 y [aeiouy]e
+! SFX Z 0 ey [aiouy]
+! SFX Z 0 by [^aeio][aeiou]b
+! SFX Z 0 ky [^aeio][aeiou]c
+! SFX Z 0 dy [^aeio][aeiou]d
+! SFX Z 0 fy [^aeio][aeiou]f
+! SFX Z 0 gy [^aeio][aeiou]g
+! SFX Z 0 ky [^aeio][aeiou]k
+! SFX Z 0 ly [^aeio][aeiou]l
+! SFX Z 0 my [^aeio][aeiou]m
+! SFX Z 0 ny [^aeio][aiou]n
+! SFX Z 0 py [^aeio][aeiou]p
+! SFX Z 0 ry [^aeio][aiou]r
+! SFX Z 0 sy [^aeio][aeiou]s
+! SFX Z 0 ty [^aeio][aiou]t
+! SFX Z 0 vy [^aeio][aeiou]v
+! SFX Z 0 zy [^aeio][aeiou]z
+! SFX Z 0 y [^aeio]e[nrt]
+! SFX Z 0 y [aeio][aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aebcdfgiklmnoprstuvyz]
+ SFX 2 Y 21
+! SFX 2 e iness [^aeiouy]e
+! SFX 2 0 iness [aeiouy]e
+! SFX 2 0 biness [^aeio][aeiou]b
+! SFX 2 0 kiness [^aeio][aeiou]c
+! SFX 2 0 diness [^aeio][aeiou]d
+! SFX 2 0 finess [^aeio][aeiou]f
+! SFX 2 0 giness [^aeio][aeiou]g
+! SFX 2 0 kiness [^aeio][aeiou]k
+! SFX 2 0 liness [^aeio][aeiou]l
+! SFX 2 0 miness [^aeio][aeiou]m
+! SFX 2 0 niness [^aeio][aiou]n
+! SFX 2 0 piness [^aeio][aeiou]p
+! SFX 2 0 riness [^aeio][aiou]r
+! SFX 2 0 siness [^aeio][aeiou]s
+! SFX 2 0 tiness [^aeio][aiou]t
+! SFX 2 0 viness [^aeio][aeiou]v
+! SFX 2 0 ziness [^aeio][aeiou]z
+! SFX 2 0 iness [^aeio]e[nrt]
+! SFX 2 0 iness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^ebcdfgklmnprstvz]
+ SFX z Y 24
+! SFX z e ily [^aeiouy]e
+! SFX z 0 ily [aeiouy]e
+! SFX z 0 ily [aiou]y
+! SFX z ey ily ey
+! SFX z y ily [^aeiou]y
+! SFX z 0 bily [^aeio][aeiou]b
+! SFX z 0 kily [^aeio][aeiou]c
+! SFX z 0 dily [^aeio][aeiou]d
+! SFX z 0 fily [^aeio][aeiou]f
+! SFX z 0 gily [^aeio][aeiou]g
+! SFX z 0 kily [^aeio][aeiou]k
+! SFX z 0 lily [^aeio][aeiou]l
+! SFX z 0 mily [^aeio][aeiou]m
+! SFX z 0 nily [^aeio][aiou]n
+! SFX z 0 pily [^aeio][aeiou]p
+! SFX z 0 rily [^aeio][aiou]r
+! SFX z 0 sily [^aeio][aeiou]s
+! SFX z 0 tily [^aeio][aiou]t
+! SFX z 0 vily [^aeio][aeiou]v
+! SFX z 0 zily [^aeio][aeiou]z
+! SFX z 0 ily [^aeio]e[nrt]
+! SFX z 0 ily [aeio][aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^ebcdfgklmnprstvyz]
+ SFX y Y 15
+! SFX y e ory te
+! SFX y e atory [mr]e
+! SFX y e ary se
+! SFX y 0 ry [^mrst]e
+! SFX y 0 ory [^aeous]t
+! SFX y 0 ry [aeous]t
+! SFX y 0 ery h
+! SFX y 0 atory [^i]m
+! SFX y im matory im
+! SFX y 0 ory s
+! SFX y 0 ary ion
+! SFX y 0 ry [^i]on
+! SFX y 0 nery [aiu]n
+! SFX y 0 ry [^aiou]n
+! SFX y 0 ry [^ehmstn]
+ SFX O Y 12
+! SFX O 0 l a
+! SFX O e al [^bcgv]e
+! SFX O e ial [bcgv]e
+! SFX O 0 ial [bcrx]
+! SFX O um al um
+! SFX O 0 al [^u]m
+! SFX O y al ty
+! SFX O y ial [^t]y
+! SFX O 0 ual [px]t
+! SFX O 0 tal [iu]t
+! SFX O 0 al [^ipux]t
+! SFX O 0 al [^aebcrtxmy]
+ SFX o Y 12
+! SFZ o 0 lly a
+! SFX o e ally [^bcgv]e
+! SFX o e ially [bcgv]e
+! SFX o 0 ially [bcrx]
+! SFX o um ally um
+! SFX o 0 ally [^u]m
+! SFX o y ally ty
+! SFX o y ially [^t]y
+! SFX o 0 ually [px]t
+! SFX o 0 tally [iu]t
+! SFX o 0 ally [^ipux]t
+! SFX o 0 ally [^aebcrtxmy]
+ SFX W Y 21
+! SFX W ce tific ce
+! SFX W e atic me
+! SFX W se tic se
+! SFX W le ic ble
+! SFX W e ic [^b]le
+! SFX W e ic [^clms]e
+! SFX W 0 lic [ay]l
+! SFX W 0 ic [^ay]l
+! SFX W us ic us
+! SFX W 0 tic [^u]s
+! SFX W er ric er
+! SFX W 0 ic [^e]r
+! SFX W 0 atic [aeiou]m
+! SFX W 0 ic [^aeiou]m
+! SFX W 0 tic ma
+! SFX W a ic [^m]a
+! SFX W y etic thy
+! SFX W y ic [^t]hy
+! SFX W y tic sy
+! SFX W y ic [^hs]y
+! SFX W 0 ic [^aelmrsy]
+ SFX w Y 9
+! SFX w e ical e
+! SFX w er rical er
+! SFX w 0 ical [^e]r
+! SFX w 0 atical [aeiou]m
+! SFX w 0 ical [^aeiou]m
+! SFX w 0 tical ma
+! SFX w a ical [^m]a
+! SFX w y ical y
+! SFX w 0 ical [^aemry]
+ SFX 1 Y 9
+! SFX 1 e ically e
+! SFX 1 er rically er
+! SFX 1 0 ically [^e]r
+! SFX 1 0 atically [aeiou]m
+! SFX 1 0 ically [^aeiou]m
+! SFX 1 0 tically ma
+! SFX 1 a ically [^m]a
+! SFX 1 y ically y
+! SFX 1 0 ically [^aemry]
+ SFX 3 Y 21
+! SFX 3 e ist [^aceiou]e
+! SFX 3 ce tist ce
+! SFX 3 0 ist [aeiou]e
+! SFX 3 y ist [^aeioubp]y
+! SFX 3 0 ist [aeioubp]y
+! SFX 3 o ist o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ists [^aceiou]e
+! SFX 3 ce tists ce
+! SFX 3 0 ists [aeiou]e
+! SFX 3 y ists [^aeioubp]y
+! SFX 3 0 ists [aeioubp]y
+! SFX 3 o ists o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ist's [^aceiou]e
+! SFX 3 ce tist's ce
+! SFX 3 0 ist's [aeiou]e
+! SFX 3 y ist's [^aeioubp]y
+! SFX 3 0 ist's [aeioubp]y
+! SFX 3 o ist's o
+! SFX 3 0 ist's [^eoy]
+--- 464,1149 ----
+ SFX R Y 72
+! SFX R 0 r e
+! SFX R 0 rs e
+! SFX R 0 ber [^aeio][aeiou]b
+! SFX R 0 bers [^aeio][aeiou]b
+! SFX R 0 ker [^aeio][aeiou]c
+! SFX R 0 kers [^aeio][aeiou]c
+! SFX R 0 der [^aeio][aeiou]d
+! SFX R 0 ders [^aeio][aeiou]d
+! SFX R 0 fer [^aeio][aeiou]f
+! SFX R 0 fers [^aeio][aeiou]f
+! SFX R 0 ger [^aeio][aeiou]g
+! SFX R 0 gers [^aeio][aeiou]g
+! SFX R 0 ker [^aeio][aeiou]k
+! SFX R 0 kers [^aeio][aeiou]k
+! SFX R 0 ler [^aeio][eiou]l
+! SFX R 0 er [aeio][eiou]l
+! SFX R 0 ler [^aeo]al
+! SFX R 0 er [aeo]al
+! SFX R 0 lers [^aeio][eiou]l
+! SFX R 0 ers [aeio][eiou]l
+! SFX R 0 lers [^aeo]al
+! SFX R 0 ers [aeo]al
+! SFX R 0 mer [^aeio][aeiou]m
+! SFX R 0 mers [^aeio][aeiou]m
+! SFX R 0 ner [^aeio][aeiou]n
+! SFX R 0 ners [^aeio][aeiou]n
+! SFX R 0 per [^aeio][aeiou]p
+! SFX R 0 pers [^aeio][aeiou]p
+! SFX R 0 rer [^aeio][aeiou]r
+! SFX R 0 rers [^aeio][aeiou]r
+! SFX R 0 ser [^aeio][aeiou]s
+! SFX R 0 sers [^aeio][aeiou]s
+! SFX R 0 ter [^aeio][aeiou]t
+! SFX R 0 ters [^aeio][aeiou]t
+! SFX R 0 ver [^aeio][aeiou]v
+! SFX R 0 vers [^aeio][aeiou]v
+! SFX R 0 zer [^aeio][aeiou]z
+! SFX R 0 zers [^aeio][aeiou]z
+! SFX R y ier [^aeiou]y
+! SFX R y iers [^aeiou]y
+! SFX R 0 er [aeiou]y
+! SFX R 0 ers [aeiou]y
+! SFX R 0 er [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 ers [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 ers [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er [^ebcdfgklmnprstvyz]
+! SFX R 0 ers [^ebcdfgklmnprstvyz]
+! SFX R 0 r's e
+! SFX R 0 ber's [^aeio][aeiou]b
+! SFX R 0 ker's [^aeio][aeiou]c
+! SFX R 0 der's [^aeio][aeiou]d
+! SFX R 0 fer's [^aeio][aeiou]f
+! SFX R 0 ger's [^aeio][aeiou]g
+! SFX R 0 ker's [^aeio][aeiou]k
+! SFX R 0 ler's [^aeio][eiou]l
+! SFX R 0 er's [aeio][eiou]l
+! SFX R 0 ler's [^aeo]al
+! SFX R 0 er's [aeo]al
+! SFX R 0 mer's [^aeio][aeiou]m
+! SFX R 0 ner's [^aeio][aeiou]n
+! SFX R 0 per's [^aeio][aeiou]p
+! SFX R 0 rer's [^aeio][aeiou]r
+! SFX R 0 ser's [^aeio][aeiou]s
+! SFX R 0 ter's [^aeio][aeiou]t
+! SFX R 0 ver's [^aeio][aeiou]v
+! SFX R 0 zer's [^aeio][aeiou]z
+! SFX R y ier's [^aeiou]y
+! SFX R 0 er's [aeiou]y
+! SFX R 0 er's [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er's [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er's [^ebcdfgklmnprstvyz]
+ SFX r Y 24
+! SFX r 0 r e
+! SFX r 0 ler [^aeio][aeiou]l
+! SFX r 0 ker [^aeio][aeiou]c
+! SFX r y ier [^aeiou]y
+! SFX r 0 er [aeiou]y
+! SFX r 0 er [aeio][aeiou][cl]
+! SFX r 0 er [^aeiou][cl]
+! SFX r 0 er [^ecly]
+! SFX r 0 rs e
+! SFX r 0 lers [^aeio][aeiou]l
+! SFX r 0 kers [^aeio][aeiou]c
+! SFX r y iers [^aeiou]y
+! SFX r 0 ers [aeiou]y
+! SFX r 0 ers [aeio][aeiou][cl]
+! SFX r 0 ers [^aeiou][cl]
+! SFX r 0 ers [^ecly]
+! SFX r 0 r's e
+! SFX r 0 ler's [^aeio][aeiou]l
+! SFX r 0 ker's [^aeio][aeiou]c
+! SFX r y ier's [^aeiou]y
+! SFX r 0 er's [aeiou]y
+! SFX r 0 er's [aeio][aeiou][cl]
+! SFX r 0 er's [^aeiou][cl]
+! SFX r 0 er's [^ecly]
+ SFX S Y 9
+! SFX S y ies [^aeiou]y
+! SFX S 0 s [aeiou]y
+! SFX S 0 es [sxz]
+! SFX S 0 es [cs]h
+! SFX S 0 s [^cs]h
+! SFX S 0 s [ae]u
+! SFX S 0 x [ae]u
+! SFX S 0 s [^ae]u
+ SFX S 0 s [^hsuxyz]
+ SFX P Y 6
+! SFX P y iness [^aeiou]y
+! SFX P 0 ness [aeiou]y
+! SFX P 0 ness [^y]
+! SFX P y iness's [^aeiou]y
+! SFX P 0 ness's [aeiou]y
+! SFX P 0 ness's [^y]
+ SFX m Y 20
+! SFX m 0 sman [bdknmt]
+! SFX m 0 sman [aeiou][bdklmnt]e
+! SFX m 0 man [^aeiou][bdklmnt]e
+! SFX m 0 man [^bdklmnt]e
+! SFX m 0 man [^bdeknmt]
+! SFX m 0 smen [bdknmt]
+! SFX m 0 smen [aeiou][bdklmnt]e
+! SFX m 0 men [^aeiou][bdklmnt]e
+! SFX m 0 men [^bdklmnt]e
+! SFX m 0 men [^bdeknmt]
+! SFX m 0 sman's [bdknmt]
+! SFX m 0 sman's [aeiou][bdklmnt]e
+! SFX m 0 man's [^aeiou][bdklmnt]e
+! SFX m 0 man's [^bdklmnt]e
+! SFX m 0 man's [^bdeknmt]
+! SFX m 0 smen's [bdknmt]
+! SFX m 0 smen's [aeiou][bdklmnt]e
+! SFX m 0 men's [^aeiou][bdklmnt]e
+! SFX m 0 men's [^bdklmnt]e
+! SFX m 0 men's [^bdeknmt]
+ SFX 5 Y 15
+! SFX 5 0 swoman [bdknmt]
+! SFX 5 0 swoman [aeiou][bdklmnt]e
+! SFX 5 0 woman [^aeiou][bdklmnt]e
+! SFX 5 0 woman [^bdklmnt]e
+! SFX 5 0 woman [^bdeknmt]
+! SFX 5 0 swomen [bdknmt]
+! SFX 5 0 swomen [aeiou][bdklmnt]e
+! SFX 5 0 women [^aeiou][bdklmnt]e
+! SFX 5 0 women [^bdklmnt]e
+! SFX 5 0 women [^bdeknmt]
+! SFX 5 0 swoman's [bdknmt]
+! SFX 5 0 swoman's [aeiou][bdklmnt]e
+! SFX 5 0 woman's [^aeiou][bdklmnt]e
+! SFX 5 0 woman's [^bdklmnt]e
+! SFX 5 0 woman's [^bdeknmt]
+ SFX 6 Y 3
+! SFX 6 y iful [^aeiou]y
+! SFX 6 0 ful [aeiou]y
+! SFX 6 0 ful [^y]
+ SFX j Y 3
+! SFX j y ifully [^aeiou]y
+! SFX j 0 fully [aeiou]y
+! SFX j 0 fully [^y]
+ SFX p Y 5
+! SFX p y iless [^aeiou]y
+! SFX p 0 less [aeiou]y
+! SFX p 0 ess ll
+! SFX p 0 less [^l]l
+! SFX p 0 less [^ly]
+ SFX Q Y 88
+! SFX Q 0 tise a
+! SFX Q e ise [^l]e
+! SFX Q le ilise [^aeiou]le
+! SFX Q e ise [aeiou]le
+! SFX Q um ise um
+! SFX Q 0 ise [^u]m
+! SFX Q s se is
+! SFX Q 0 ise [^i]s
+! SFX Q y ise [^aeiou]y
+! SFX Q 0 ise [aeiou]y
+! SFX Q 0 ise [^aemsy]
+! SFX Q 0 tises a
+! SFX Q e ises [^l]e
+! SFX Q le ilises [^aeiou]le
+! SFX Q e ises [aeiou]le
+! SFX Q um ises um
+! SFX Q 0 ises [^u]m
+! SFX Q s ses is
+! SFX Q 0 ises [^i]s
+! SFX Q y ises [^aeiou]y
+! SFX Q 0 ises [aeiou]y
+! SFX Q 0 ises [^aemsy]
+! SFX Q 0 tised a
+! SFX Q e ised [^l]e
+! SFX Q le ilised [^aeiou]le
+! SFX Q e ised [aeiou]le
+! SFX Q um ised um
+! SFX Q 0 ised [^u]m
+! SFX Q s sed is
+! SFX Q 0 ised [^i]s
+! SFX Q y ised [^aeiou]y
+! SFX Q 0 ised [aeiou]y
+! SFX Q 0 ised [^aemsy]
+! SFX Q 0 tising a
+! SFX Q e ising [^l]e
+! SFX Q le ilising [^aeiou]le
+! SFX Q e ising [aeiou]le
+! SFX Q um ising um
+! SFX Q 0 ising [^u]m
+! SFX Q s sing is
+! SFX Q 0 ising [^i]s
+! SFX Q y ising [^aeiou]y
+! SFX Q 0 ising [aeiou]y
+! SFX Q 0 ising [^aemsy]
+! SFX Q 0 tize a
+! SFX Q e ize [^l]e
+! SFX Q le ilize [^aeiou]le
+! SFX Q e ize [aeiou]le
+! SFX Q um ize um
+! SFX Q 0 ize [^u]m
+! SFX Q s ze is
+! SFX Q 0 ize [^i]s
+! SFX Q y ize [^aeiou]y
+! SFX Q 0 ize [aeiou]y
+! SFX Q 0 ize [^aemsy]
+! SFX Q 0 tizes a
+! SFX Q e izes [^l]e
+! SFX Q le ilizes [^aeiou]le
+! SFX Q e izes [aeiou]le
+! SFX Q um izes um
+! SFX Q 0 izes [^u]m
+! SFX Q s zes is
+! SFX Q 0 izes [^i]s
+! SFX Q y izes [^aeiou]y
+! SFX Q 0 izes [aeiou]y
+! SFX Q 0 izes [^aemsy]
+! SFX Q 0 tized a
+! SFX Q e ized [^l]e
+! SFX Q le ilized [^aeiou]le
+! SFX Q e ized [aeiou]le
+! SFX Q um ized um
+! SFX Q 0 ized [^u]m
+! SFX Q s zed is
+! SFX Q 0 ized [^i]s
+! SFX Q y ized [^aeiou]y
+! SFX Q 0 ized [aeiou]y
+! SFX Q 0 ized [^aemsy]
+! SFX Q 0 tizing a
+! SFX Q e izing [^l]e
+! SFX Q le ilizing [^aeiou]le
+! SFX Q e izing [aeiou]le
+! SFX Q um izing um
+! SFX Q 0 izing [^u]m
+! SFX Q s zing is
+! SFX Q 0 izing [^i]s
+! SFX Q y izing [^aeiou]y
+! SFX Q 0 izing [aeiou]y
+! SFX Q 0 izing [^aemsy]
+ SFX q Y 44
+! SFX q 0 tisation a
+! SFX q e isation [^l]e
+! SFX q le ilisation [^aeiou]le
+! SFX q e isation [aeiou]le
+! SFX q um isation um
+! SFX q 0 isation [^u]m
+! SFX q s sation is
+! SFX q 0 isation [^i]s
+! SFX q y isation [^aeiou]y
+! SFX q 0 isation [aeiou]y
+! SFX q 0 isation [^aemsy]
+! SFX q 0 tisations a
+! SFX q e isations [^l]e
+! SFX q le ilisations [^aeiou]le
+! SFX q e isations [aeiou]le
+! SFX q um isations um
+! SFX q 0 isations [^u]m
+! SFX q s sations is
+! SFX q 0 isations [^i]s
+! SFX q y isations [^aeiou]y
+! SFX q 0 isations [aeiou]y
+! SFX q 0 isations [^aemsy]
+! SFX q 0 tization a
+! SFX q e ization [^l]e
+! SFX q le ilization [^aeiou]le
+! SFX q e ization [aeiou]le
+! SFX q um ization um
+! SFX q 0 ization [^u]m
+! SFX q s zation is
+! SFX q 0 ization [^i]s
+! SFX q y ization [^aeiou]y
+! SFX q 0 ization [aeiou]y
+! SFX q 0 ization [^aemsy]
+! SFX q 0 tizations a
+! SFX q e izations [^l]e
+! SFX q le ilizations [^aeiou]le
+! SFX q e izations [aeiou]le
+! SFX q um izations um
+! SFX q 0 izations [^u]m
+! SFX q s zations is
+! SFX q 0 izations [^i]s
+! SFX q y izations [^aeiou]y
+! SFX q 0 izations [aeiou]y
+! SFX q 0 izations [^aemsy]
+ SFX s Y 66
+! SFX s 0 tiser a
+! SFX s e iser [^l]e
+! SFX s le iliser [^aeiou]le
+! SFX s e iser [aeiou]le
+! SFX s um iser um
+! SFX s 0 iser [^u]m
+! SFX s s ser is
+! SFX s 0 iser [^i]s
+! SFX s y iser [^aeiou]y
+! SFX s 0 iser [aeiou]y
+! SFX s 0 iser [^aemsy]
+! SFX s 0 tisers a
+! SFX s e isers [^l]e
+! SFX s le ilisers [^aeiou]le
+! SFX s e isers [aeiou]le
+! SFX s um isers um
+! SFX s 0 isers [^u]m
+! SFX s s sers is
+! SFX s 0 isers [^i]s
+! SFX s y isers [^aeiou]y
+! SFX s 0 isers [aeiou]y
+! SFX s 0 isers [^aemsy]
+! SFX s 0 tiser's a
+! SFX s e iser's [^l]e
+! SFX s le iliser's [^aeiou]le
+! SFX s e iser's [aeiou]le
+! SFX s um iser's um
+! SFX s 0 iser's [^u]m
+! SFX s s ser's is
+! SFX s 0 iser's [^i]s
+! SFX s y iser's [^aeiou]y
+! SFX s 0 iser's [aeiou]y
+! SFX s 0 iser's [^aemsy]
+! SFX s 0 tizer a
+! SFX s e izer [^l]e
+! SFX s le ilizer [^aeiou]le
+! SFX s e izer [aeiou]le
+! SFX s um izer um
+! SFX s 0 izer [^u]m
+! SFX s s zer is
+! SFX s 0 izer [^i]s
+! SFX s y izer [^aeiou]y
+! SFX s 0 izer [aeiou]y
+! SFX s 0 izer [^aemsy]
+! SFX s 0 tizers a
+! SFX s e izers [^l]e
+! SFX s le ilizers [^aeiou]le
+! SFX s e izers [aeiou]le
+! SFX s um izers um
+! SFX s 0 izers [^u]m
+! SFX s s zers is
+! SFX s 0 izers [^i]s
+! SFX s y izers [^aeiou]y
+! SFX s 0 izers [aeiou]y
+! SFX s 0 izers [^aemsy]
+! SFX s 0 tizer's a
+! SFX s e izer's [^l]e
+! SFX s le ilizer's [^aeiou]le
+! SFX s e izer's [aeiou]le
+! SFX s um izer's um
+! SFX s 0 izer's [^u]m
+! SFX s s zer's is
+! SFX s 0 izer's [^i]s
+! SFX s y izer's [^aeiou]y
+! SFX s 0 izer's [aeiou]y
+! SFX s 0 izer's [^aemsy]
+ SFX t Y 44
+! SFX t 0 tisable a
+! SFX t e isable [^l]e
+! SFX t le ilisable [^aeiou]le
+! SFX t e isable [aeiou]le
+! SFX t um isable um
+! SFX t 0 isable [^u]m
+! SFX t s sable is
+! SFX t 0 isable [^i]s
+! SFX t y isable [^aeiou]y
+! SFX t 0 isable [aeiou]y
+! SFX t 0 isable [^aemsy]
+! SFX t 0 tizable a
+! SFX t e izable [^l]e
+! SFX t le ilizable [^aeiou]le
+! SFX t e izable [aeiou]le
+! SFX t um izable um
+! SFX t 0 izable [^u]m
+! SFX t s zable is
+! SFX t 0 izable [^i]s
+! SFX t y izable [^aeiou]y
+! SFX t 0 izable [aeiou]y
+! SFX t 0 izable [^aemsy]
+! SFX t 0 tisability a
+! SFX t e isability [^l]e
+! SFX t le ilisability [^aeiou]le
+! SFX t e isability [aeiou]le
+! SFX t um isability um
+! SFX t 0 isability [^u]m
+! SFX t s sability is
+! SFX t 0 isability [^i]s
+! SFX t y isability [^aeiou]y
+! SFX t 0 isability [aeiou]y
+! SFX t 0 isability [^aemsy]
+! SFX t 0 tizability a
+! SFX t e izability [^l]e
+! SFX t le ilizability [^aeiou]le
+! SFX t e izability [aeiou]le
+! SFX t um izability um
+! SFX t 0 izability [^u]m
+! SFX t s zability is
+! SFX t 0 izability [^i]s
+! SFX t y izability [^aeiou]y
+! SFX t 0 izability [aeiou]y
+! SFX t 0 izability [^aemsy]
+ SFX M Y 1
+! SFX M 0 's .
+ SFX B Y 48
+! SFX B e able [^acegilotu]e
+! SFX B 0 able [acegilou]e
+! SFX B te ble ate
+! SFX B e able [^a]te
+! SFX B 0 bable [^aeio][aeiou]b
+! SFX B 0 kable [^aeio][aeiou]c
+! SFX B 0 dable [^aeio][aeiou]d
+! SFX B 0 fable [^aeio][aeiou]f
+! SFX B 0 gable [^aeio][aeiou]g
+! SFX B 0 kable [^aeio][aeiou]k
+! SFX B 0 lable [^aeio][aeiou]l
+! SFX B 0 mable [^aeio][aeiou]m
+! SFX B 0 nable [^aeio][aeiou]n
+! SFX B 0 pable [^aeio][aeiou]p
+! SFX B 0 rable [^aeio][aeiou]r
+! SFX B 0 sable [^aeio][aeiou]s
+! SFX B 0 table [^aeio][aeiou]t
+! SFX B 0 vable [^aeio][aeiou]v
+! SFX B 0 zable [^aeio][aeiou]z
+! SFX B 0 able [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 able [^aeiou][bcdfgklmnprstvz]
+! SFX B y iable [^aeiou]y
+! SFX B 0 able [aeiou]y
+! SFX B 0 able [^ebcdfgklmnprstvzy]
+! SFX B e ability [^acegilotu]e
+! SFX B 0 ability [acegilou]e
+! SFX B te bility ate
+! SFX B e ability [^a]te
+! SFX B 0 bability [^aeio][aeiou]b
+! SFX B 0 kability [^aeio][aeiou]c
+! SFX B 0 dability [^aeio][aeiou]d
+! SFX B 0 fability [^aeio][aeiou]f
+! SFX B 0 gability [^aeio][aeiou]g
+! SFX B 0 kability [^aeio][aeiou]k
+! SFX B 0 lability [^aeio][aeiou]l
+! SFX B 0 mability [^aeio][aeiou]m
+! SFX B 0 nability [^aeio][aeiou]n
+! SFX B 0 pability [^aeio][aeiou]p
+! SFX B 0 rability [^aeio][aeiou]r
+! SFX B 0 sability [^aeio][aeiou]s
+! SFX B 0 tability [^aeio][aeiou]t
+! SFX B 0 vability [^aeio][aeiou]v
+! SFX B 0 zability [^aeio][aeiou]z
+! SFX B 0 ability [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 ability [^aeiou][bcdfgklmnprstvz]
+! SFX B y iability [^aeiou]y
+! SFX B 0 ability [aeiou]y
+! SFX B 0 ability [^ebcdfgklmnprstvzy]
+ SFX 7 Y 9
+! SFX 7 e able [acegilou]e
+! SFX 7 0 able [^acegilou]e
+! SFX 7 0 kable [^aeio][aeiou]c
+! SFX 7 0 lable [^aeio][aeiou]l
+! SFX 7 0 able [aeio][aeiou][cl]
+! SFX 7 0 able [^aeiou][cl]
+! SFX 7 y iable [^aeiou]y
+! SFX 7 0 able [aeiou]y
+! SFX 7 0 able [^cely]
+ SFX g Y 9
+! SFX g e ability [^acegilou]e
+! SFX g 0 ability [acegilou]e
+! SFX g 0 kability [^aeio][aeiou]c
+! SFX g 0 lability [^aeio][aeiou]l
+! SFX g 0 ability [aeio][aeiou][cl]
+! SFX g 0 ability [^aeiou][cl]
+! SFX g y iability [^aeiou]y
+! SFX g 0 ability [aeiou]y
+! SFX g 0 ability [^cely]
+ SFX l Y 9
+! SFX l e ably [^acegilou]e
+! SFX l 0 ably [acegilou]e
+! SFX l 0 kably [^aeio][aeiou]c
+! SFX l 0 lably [^aeio][aeiou]l
+! SFX l 0 ably [aeio][aeiou][cl]
+! SFX l 0 ably [^aeiou][cl]
+! SFX l y iably [^aeiou]y
+! SFX l 0 ably [aeiou]y
+! SFX l 0 ably [^cely]
+ SFX b Y 3
+! SFX b e ible [^aeiou]e
+! SFX b 0 ible [aeiou]e
+! SFX b 0 ible [^e]
+ SFX L Y 12
+! SFX L 0 ament m
+! SFX L y iment [^aeiou]y
+! SFX L 0 ment [aeiou]y
+! SFX L 0 ment [^my]
+! SFX L 0 aments m
+! SFX L y iments [^aeiou]y
+! SFX L 0 ments [aeiou]y
+! SFX L 0 ments [^my]
+! SFX L 0 ament's m
+! SFX L y iment's [^aeiou]y
+! SFX L 0 ment's [aeiou]y
+! SFX L 0 ment's [^my]
+ SFX Z Y 22
+! SFX Z e y [^aeiouy]e
+! SFX Z 0 y [aeiouy]e
+! SFX Z 0 ey [aiouy]
+! SFX Z 0 by [^aeio][aeiou]b
+! SFX Z 0 ky [^aeio][aeiou]c
+! SFX Z 0 dy [^aeio][aeiou]d
+! SFX Z 0 fy [^aeio][aeiou]f
+! SFX Z 0 gy [^aeio][aeiou]g
+! SFX Z 0 ky [^aeio][aeiou]k
+! SFX Z 0 ly [^aeio][aeiou]l
+! SFX Z 0 my [^aeio][aeiou]m
+! SFX Z 0 ny [^aeio][aiou]n
+! SFX Z 0 py [^aeio][aeiou]p
+! SFX Z 0 ry [^aeio][aiou]r
+! SFX Z 0 sy [^aeio][aeiou]s
+! SFX Z 0 ty [^aeio][aiou]t
+! SFX Z 0 vy [^aeio][aeiou]v
+! SFX Z 0 zy [^aeio][aeiou]z
+! SFX Z 0 y [^aeio]e[nrt]
+! SFX Z 0 y [aeio][aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aebcdfgiklmnoprstuvyz]
+ SFX 2 Y 21
+! SFX 2 e iness [^aeiouy]e
+! SFX 2 0 iness [aeiouy]e
+! SFX 2 0 biness [^aeio][aeiou]b
+! SFX 2 0 kiness [^aeio][aeiou]c
+! SFX 2 0 diness [^aeio][aeiou]d
+! SFX 2 0 finess [^aeio][aeiou]f
+! SFX 2 0 giness [^aeio][aeiou]g
+! SFX 2 0 kiness [^aeio][aeiou]k
+! SFX 2 0 liness [^aeio][aeiou]l
+! SFX 2 0 miness [^aeio][aeiou]m
+! SFX 2 0 niness [^aeio][aiou]n
+! SFX 2 0 piness [^aeio][aeiou]p
+! SFX 2 0 riness [^aeio][aiou]r
+! SFX 2 0 siness [^aeio][aeiou]s
+! SFX 2 0 tiness [^aeio][aiou]t
+! SFX 2 0 viness [^aeio][aeiou]v
+! SFX 2 0 ziness [^aeio][aeiou]z
+! SFX 2 0 iness [^aeio]e[nrt]
+! SFX 2 0 iness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^ebcdfgklmnprstvz]
+ SFX z Y 24
+! SFX z e ily [^aeiouy]e
+! SFX z 0 ily [aeiouy]e
+! SFX z 0 ily [aiou]y
+! SFX z ey ily ey
+! SFX z y ily [^aeiou]y
+! SFX z 0 bily [^aeio][aeiou]b
+! SFX z 0 kily [^aeio][aeiou]c
+! SFX z 0 dily [^aeio][aeiou]d
+! SFX z 0 fily [^aeio][aeiou]f
+! SFX z 0 gily [^aeio][aeiou]g
+! SFX z 0 kily [^aeio][aeiou]k
+! SFX z 0 lily [^aeio][aeiou]l
+! SFX z 0 mily [^aeio][aeiou]m
+! SFX z 0 nily [^aeio][aiou]n
+! SFX z 0 pily [^aeio][aeiou]p
+! SFX z 0 rily [^aeio][aiou]r
+! SFX z 0 sily [^aeio][aeiou]s
+! SFX z 0 tily [^aeio][aiou]t
+! SFX z 0 vily [^aeio][aeiou]v
+! SFX z 0 zily [^aeio][aeiou]z
+! SFX z 0 ily [^aeio]e[nrt]
+! SFX z 0 ily [aeio][aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^ebcdfgklmnprstvyz]
+ SFX y Y 15
+! SFX y e ory te
+! SFX y e atory [mr]e
+! SFX y e ary se
+! SFX y 0 ry [^mrst]e
+! SFX y 0 ory [^aeous]t
+! SFX y 0 ry [aeous]t
+! SFX y 0 ery h
+! SFX y 0 atory [^i]m
+! SFX y im matory im
+! SFX y 0 ory s
+! SFX y 0 ary ion
+! SFX y 0 ry [^i]on
+! SFX y 0 nery [aiu]n
+! SFX y 0 ry [^aiou]n
+! SFX y 0 ry [^ehmstn]
+ SFX O Y 12
+! SFX O 0 l a
+! SFX O e al [^bcgv]e
+! SFX O e ial [bcgv]e
+! SFX O 0 ial [bcrx]
+! SFX O um al um
+! SFX O 0 al [^u]m
+! SFX O y al ty
+! SFX O y ial [^t]y
+! SFX O 0 ual [px]t
+! SFX O 0 tal [iu]t
+! SFX O 0 al [^ipux]t
+! SFX O 0 al [^aebcrtxmy]
+ SFX o Y 12
+! SFX o 0 lly a
+! SFX o e ally [^bcgv]e
+! SFX o e ially [bcgv]e
+! SFX o 0 ially [bcrx]
+! SFX o um ally um
+! SFX o 0 ally [^u]m
+! SFX o y ally ty
+! SFX o y ially [^t]y
+! SFX o 0 ually [px]t
+! SFX o 0 tally [iu]t
+! SFX o 0 ally [^ipux]t
+! SFX o 0 ally [^aebcrtxmy]
+ SFX W Y 21
+! SFX W ce tific ce
+! SFX W e atic me
+! SFX W se tic se
+! SFX W le ic ble
+! SFX W e ic [^b]le
+! SFX W e ic [^clms]e
+! SFX W 0 lic [ay]l
+! SFX W 0 ic [^ay]l
+! SFX W us ic us
+! SFX W 0 tic [^u]s
+! SFX W er ric er
+! SFX W 0 ic [^e]r
+! SFX W 0 atic [aeiou]m
+! SFX W 0 ic [^aeiou]m
+! SFX W 0 tic ma
+! SFX W a ic [^m]a
+! SFX W y etic thy
+! SFX W y ic [^t]hy
+! SFX W y tic sy
+! SFX W y ic [^hs]y
+! SFX W 0 ic [^aelmrsy]
+ SFX w Y 9
+! SFX w e ical e
+! SFX w er rical er
+! SFX w 0 ical [^e]r
+! SFX w 0 atical [aeiou]m
+! SFX w 0 ical [^aeiou]m
+! SFX w 0 tical ma
+! SFX w a ical [^m]a
+! SFX w y ical y
+! SFX w 0 ical [^aemry]
+ SFX 1 Y 9
+! SFX 1 e ically e
+! SFX 1 er rically er
+! SFX 1 0 ically [^e]r
+! SFX 1 0 atically [aeiou]m
+! SFX 1 0 ically [^aeiou]m
+! SFX 1 0 tically ma
+! SFX 1 a ically [^m]a
+! SFX 1 y ically y
+! SFX 1 0 ically [^aemry]
+ SFX 3 Y 21
+! SFX 3 e ist [^aceiou]e
+! SFX 3 ce tist ce
+! SFX 3 0 ist [aeiou]e
+! SFX 3 y ist [^aeioubp]y
+! SFX 3 0 ist [aeioubp]y
+! SFX 3 o ist o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ists [^aceiou]e
+! SFX 3 ce tists ce
+! SFX 3 0 ists [aeiou]e
+! SFX 3 y ists [^aeioubp]y
+! SFX 3 0 ists [aeioubp]y
+! SFX 3 o ists o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ist's [^aceiou]e
+! SFX 3 ce tist's ce
+! SFX 3 0 ist's [aeiou]e
+! SFX 3 y ist's [^aeioubp]y
+! SFX 3 0 ist's [aeioubp]y
+! SFX 3 o ist's o
+! SFX 3 0 ist's [^eoy]
+*** en_AU.orig.dic Fri Apr 15 13:20:36 2005
+--- en_AU.dic Tue Apr 19 22:19:18 2005
+***************
+*** 4921,4922 ****
+--- 4921,4923 ----
+ Brahms
++ Bram/M
+ braid/DGS
+***************
+*** 12468,12469 ****
+--- 12469,12471 ----
+ Dutch/5m
++ Farsi
+ Dutchwomen/M
+***************
+*** 19214,19216 ****
+ Hobbes
+! hobbit
+ hobble/RGSD
+--- 19216,19218 ----
+ Hobbes
+! hobbit/MS
+ hobble/RGSD
+***************
+*** 26417,26418 ****
+--- 26419,26421 ----
+ Moolawatana
++ Moolenaar/M
+ Moomba
+***************
+*** 36012,36014 ****
+ sec.
+! s/eca
+ secant/MS
+--- 36015,36017 ----
+ sec.
+! outs
+ secant/MS
+***************
+*** 43749,43751 ****
+ Vilnius/M
+! vim/M
+ vinaigrette/MS
+--- 43752,43754 ----
+ Vilnius/M
+! Vim/M
+ vinaigrette/MS
diff --git a/src/spell/en_CA.diff b/src/spell/en_CA.diff
new file mode 100644
index 0000000..c321ff1
--- /dev/null
+++ b/src/spell/en_CA.diff
@@ -0,0 +1,87 @@
+*** en_CA.orig.aff Fri Apr 15 13:20:36 2005
+--- en_CA.aff Sat Apr 23 19:57:43 2005
+***************
+*** 3,4 ****
+--- 3,8 ----
+
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
++
+ PFX A Y 1
+***************
+*** 30,33 ****
+ SFX N e ion e
+! SFX N y ication y
+! SFX N 0 en [^ey]
+
+--- 34,37 ----
+ SFX N e ion e
+! SFX N y ication y
+! SFX N 0 en [^ey]
+
+***************
+*** 40,42 ****
+ SFX H y ieth y
+! SFX H 0 th [^y]
+
+--- 44,46 ----
+ SFX H y ieth y
+! SFX H 0 th [^y]
+
+***************
+*** 47,49 ****
+ SFX G e ing e
+! SFX G 0 ing [^e]
+
+--- 51,53 ----
+ SFX G e ing e
+! SFX G 0 ing [^e]
+
+*** en_CA.orig.dic Sat Apr 16 14:40:06 2005
+--- en_CA.dic Tue Apr 19 22:19:46 2005
+***************
+*** 46,48 ****
+ R/G
+- S
+ easternmost
+--- 46,47 ----
+***************
+*** 89,91 ****
+ r/GVTJ
+! s/FK
+ fatting
+--- 88,90 ----
+ r/GVTJ
+! cons
+ fatting
+***************
+*** 13669,13671 ****
+ engross/LDRSG
+! hobbit
+ certainty/MUS
+--- 13668,13670 ----
+ engross/LDRSG
+! hobbit/MS
+ certainty/MUS
+***************
+*** 36707,36708 ****
+--- 36706,36708 ----
+ Moody/M
++ Moolenaar/M
+ Bresenham/M
+***************
+*** 50272,50273 ****
+--- 50272,50274 ----
+ Dutch/M
++ Farsi
+ Sharon/M
+***************
+*** 52565,52567 ****
+ hatchery/MS
+! vim/SM
+ compatriot/MS
+--- 52566,52568 ----
+ hatchery/MS
+! Vim/SM
+ compatriot/MS
diff --git a/src/spell/en_NZ.diff b/src/spell/en_NZ.diff
new file mode 100644
index 0000000..4fa638b
--- /dev/null
+++ b/src/spell/en_NZ.diff
@@ -0,0 +1,2468 @@
+*** en_NZ.orig.aff Fri Apr 15 13:20:36 2005
+--- en_NZ.aff Sat Apr 23 19:57:49 2005
+***************
+*** 7,9 ****
+ SET ISO8859-1
+! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
+ REP 66
+--- 7,14 ----
+ SET ISO8859-1
+! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
+!
+! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
+!
+ REP 66
+***************
+*** 76,95 ****
+ PFX A Y 2
+! PFX A 0 re [^e]
+! PFX A 0 re- e
+ PFX a Y 1
+! PFX a 0 mis .
+ PFX I Y 4
+! PFX I 0 il l
+! PFX I 0 ir r
+! PFX I 0 im [bmp]
+! PFX I 0 in [^blmpr]
+ PFX c Y 1
+! PFX c 0 over .
+ PFX U Y 1
+! PFX U 0 un .
+ PFX C Y 2
+! PFX C 0 de [^e]
+! PFX C 0 de- e
+ PFX E Y 1
+! PFX E 0 dis .
+ PFX F Y 5
+--- 81,100 ----
+ PFX A Y 2
+! PFX A 0 re [^e]
+! PFX A 0 re- e
+ PFX a Y 1
+! PFX a 0 mis .
+ PFX I Y 4
+! PFX I 0 il l
+! PFX I 0 ir r
+! PFX I 0 im [bmp]
+! PFX I 0 in [^blmpr]
+ PFX c Y 1
+! PFX c 0 over .
+ PFX U Y 1
+! PFX U 0 un .
+ PFX C Y 2
+! PFX C 0 de [^e]
+! PFX C 0 de- e
+ PFX E Y 1
+! PFX E 0 dis .
+ PFX F Y 5
+***************
+*** 99,493 ****
+ PFX F 0 col l
+! PFX F 0 con [^abehilmopru].
+ PFX K Y 1
+! PFX K 0 pre .
+ PFX e Y 1
+! PFX e 0 out .
+ PFX f Y 2
+! PFX f 0 under [^r]
+! PFX f 0 under- r
+ PFX O Y 1
+! PFX O 0 non- .
+ PFX 4 Y 1
+! PFX 4 0 trans .
+ SFX V Y 15
+! SFX V 0 tive [aio]
+! SFX V b ptive b
+! SFX V d sive d
+! SFX V be ptive be
+! SFX V e tive ce
+! SFX V de sive de
+! SFX V ke cative ke
+! SFX V e ptive me
+! SFX V e ive [st]e
+! SFX V e ative [^bcdkmst]e
+! SFX V 0 lative [aeiou]l
+! SFX V 0 ative [^aeiou]l
+! SFX V 0 ive [st]
+! SFX V y icative y
+! SFX V 0 ative [^abdeilosty]
+ SFX v Y 15
+! SFX v 0 tively [aio]
+! SFX v b ptively b
+! SFX v d sively d
+! SFX v be ptively be
+! SFX v e tively ce
+! SFX v de sively de
+! SFX v ke catively ke
+! SFX v e ptively me
+! SFX v e ively [st]e
+! SFX v e atively [^bcdkmst]e
+! SFX v 0 latively [aeiou]l
+! SFX v 0 atively [^aeiou]l
+! SFX v 0 ively [st]
+! SFX v y icatively y
+! SFX v 0 atively [^abdeilosty]
+ SFX u Y 15
+! SFX u 0 tiveness [aio]
+! SFX u b ptiveness b
+! SFX u d siveness d
+! SFX u be ptiveness be
+! SFX u e tiveness ce
+! SFX u de siveness de
+! SFX u ke cativeness ke
+! SFX u e ptiveness me
+! SFX u e iveness [st]e
+! SFX u e ativeness [^bcdkmst]e
+! SFX u 0 lativeness [aeiou]l
+! SFX u 0 ativeness [^aeiou]l
+! SFX u 0 iveness [st]
+! SFX u y icativeness y
+! SFX u 0 ativeness [^abdeilosty]
+ SFX N Y 26
+! SFX N b ption b
+! SFX N d sion d
+! SFX N be ption be
+! SFX N e tion ce
+! SFX N de sion de
+! SFX N ke cation ke
+! SFX N e ption ume
+! SFX N e mation [^u]me
+! SFX N e ion [^o]se
+! SFX N e ition ose
+! SFX N e ation [iou]te
+! SFX N e ion [^iou]te
+! SFX N e ation [^bcdkmst]e
+! SFX N el ulsion el
+! SFX N 0 lation [aiou]l
+! SFX N 0 ation [^aeiou]l
+! SFX N 0 mation [aeiou]m
+! SFX N 0 ation [^aeiou]m
+! SFX N er ration er
+! SFX N 0 ation [^e]r
+! SFX N 0 ion [sx]
+! SFX N t ssion mit
+! SFX N 0 ion [^m]it
+! SFX N 0 ation [^i]t
+! SFX N y ication y
+! SFX N 0 ation [^bdelmrstxy]
+ SFX n Y 28
+! SFX n 0 tion a
+! SFX n e tion ce
+! SFX n ke cation ke
+! SFX n e ation [iou]te
+! SFX n e ion [^iou]te
+! SFX n e ation [^ckt]e
+! SFX n el ulsion el
+! SFX n 0 lation [aiou]l
+! SFX n 0 ation [^aeiou]l
+! SFX n er ration er
+! SFX n 0 ation [^e]r
+! SFX n y ation py
+! SFX n y ication [^p]y
+! SFX n 0 ation [^aelry]
+! SFX n 0 tions a
+! SFX n e tions ce
+! SFX n ke cations ke
+! SFX n e ations [iou]te
+! SFX n e ions [^iou]te
+! SFX n e ations [^ckt]e
+! SFX n el ulsions el
+! SFX n 0 lations [aiou]l
+! SFX n 0 ations [^aeiou]l
+! SFX n er rations er
+! SFX n 0 ations [^e]r
+! SFX n y ations py
+! SFX n y ications [^p]y
+! SFX n 0 ations [^aelry]
+ SFX X Y 26
+! SFX X b ptions b
+! SFX X d sions d
+! SFX X be ptions be
+! SFX X e tions ce
+! SFX X ke cations ke
+! SFX X de sions de
+! SFX X e ptions ume
+! SFX X e mations [^u]me
+! SFX X e ions [^o]se
+! SFX X e itions ose
+! SFX X e ations [iou]te
+! SFX X e ions [^iou]te
+! SFX X e ations [^bcdkmst]e
+! SFX X el ulsions el
+! SFX X 0 lations [aiou]l
+! SFX X 0 ations [^aeiou]l
+! SFX X 0 mations [aeiou]m
+! SFX X 0 ations [^aeiou]m
+! SFX X er rations er
+! SFX X 0 ations [^e]r
+! SFX X 0 ions [sx]
+! SFX X t ssions mit
+! SFX X 0 ions [^m]it
+! SFX X 0 ations [^i]t
+! SFX X y ications y
+! SFX X 0 ations [^bdelmrstxy]
+ SFX x Y 40
+! SFX x b ptional b
+! SFX x d sional d
+! SFX x be ptional be
+! SFX x e tional ce
+! SFX x ke cational ke
+! SFX x de sional de
+! SFX x e ional [^o]se
+! SFX x e itional ose
+! SFX x e ional te
+! SFX x e ational [^bcdkst]e
+! SFX x el ulsional el
+! SFX x 0 lational [aiou]l
+! SFX x 0 ational [^aeiou]l
+! SFX x er rational er
+! SFX x 0 ational [^e]r
+! SFX x 0 ional [sx]
+! SFX x 0 ional [^n]t
+! SFX x 0 ational nt
+! SFX x y icational y
+! SFX x 0 ational [^bdelrstxy]
+! SFX x b ptionally b
+! SFX x d sionally d
+! SFX x be ptionally be
+! SFX x e tionally ce
+! SFX x ke cationally ke
+! SFX x de sionally de
+! SFX x e ionally [^o]se
+! SFX x e itionally ose
+! SFX x e ionally te
+! SFX x e ationally [^bcdkst]e
+! SFX x el ulsionally el
+! SFX x 0 lationally [aiou]l
+! SFX x 0 ationally [^aeiou]l
+! SFX x er rationally er
+! SFX x 0 ationally [^e]r
+! SFX x 0 ionally [sx]
+! SFX x 0 ionally [^n]t
+! SFX x 0 ationally nt
+! SFX x y icationally y
+! SFX x 0 ationally [^bdelrstxy]
+ SFX H N 13
+! SFX H y ieth y
+! SFX H ree ird ree
+! SFX H ve fth ve
+! SFX H e th [^ev]e
+! SFX H 0 h t
+! SFX H 0 th [^ety]
+! SFX H y ieths y
+! SFX H ree irds ree
+! SFX H ve fths ve
+! SFX H e ths [^ev]e
+! SFX H 0 hs t
+! SFX H 0 ths [^ety]
+! SFX H 0 fold .
+ SFX Y Y 9
+! SFX Y 0 ally ic
+! SFX Y 0 ly [^i]c
+! SFX Y e y [^aeiou]le
+! SFX Y 0 ly [aeiou]le
+! SFX Y 0 ly [^l]e
+! SFX Y 0 y [^aeiou]l
+! SFX Y y ily [^aeiou]y
+! SFX Y 0 ly [aeiou][ly]
+! SFX Y 0 ly [^cely]
+ SFX G Y 24
+! SFX G e ing [^eioy]e
+! SFX G 0 ing [eoy]e
+! SFX G ie ying ie
+! SFX G 0 bing [^aeio][aeiou]b
+! SFX G 0 king [^aeio][aeiou]c
+! SFX G 0 ding [^aeio][aeiou]d
+! SFX G 0 fing [^aeio][aeiou]f
+! SFX G 0 ging [^aeio][aeiou]g
+! SFX G 0 king [^aeio][aeiou]k
+! SFX G 0 ling [^aeio][eiou]l
+! SFX G 0 ing [aeio][eiou]l
+! SFX G 0 ling [^aeo]al
+! SFX G 0 ing [aeo]al
+! SFX G 0 ming [^aeio][aeiou]m
+! SFX G 0 ning [^aeio][aeiou]n
+! SFX G 0 ping [^aeio][aeiou]p
+! SFX G 0 ring [^aeio][aeiou]r
+! SFX G 0 sing [^aeio][aeiou]s
+! SFX G 0 ting [^aeio][aeiou]t
+! SFX G 0 ving [^aeio][aeiou]v
+! SFX G 0 zing [^aeio][aeiou]z
+! SFX G 0 ing [aeio][aeiou][bcdfgkmnprstvz]
+! SFX G 0 ing [^aeiou][bcdfgklmnprstvz]
+! SFX G 0 ing [^ebcdfgklmnprstvz]
+ SFX J Y 25
+! SFX J e ings [^eioy]e
+! SFX J 0 ings [eoy]e
+! SFX J ie yings ie
+! SFX J 0 bings [^aeio][aeiou]b
+! SFX J 0 king [^aeio][aeiou]c
+! SFX J 0 dings [^aeio][aeiou]d
+! SFX J 0 fings [^aeio][aeiou]f
+! SFX J 0 gings [^aeio][aeiou]g
+! SFX J 0 kings [^aeio][aeiou]k
+! SFX J 0 lings [^aeio][eiou]l
+! SFX J 0 ings [aeio][eiou]l
+! SFX J 0 lings [^aeo]al
+! SFX J 0 ings [aeo]al
+! SFX J 0 mings [^aeio][aeiou]m
+! SFX J 0 nings [^aeio][aiou]n
+! SFX J 0 pings [^aeio][aeiou]p
+! SFX J 0 rings [^aeio][aiou]r
+! SFX J 0 sings [^aeio][aeiou]s
+! SFX J 0 tings [^aeio][aiou]t
+! SFX J 0 vings [^aeio][aeiou]v
+! SFX J 0 zings [^aeio][aeiou]z
+! SFX J 0 ings [^aeio]e[nrt]
+! SFX J 0 ings [aeio][aeiou][bcdfgkmnprstvz]
+! SFX J 0 ings [^aeiou][bcdfgklmnprstvz]
+! SFX J 0 ings [^ebcdfgklmnprstvz]
+ SFX k Y 8
+! SFX k e ingly [^eioy]e
+! SFX k 0 ingly [eoy]e
+! SFX k ie yingly ie
+! SFX k 0 kingly [^aeio][aeiou]c
+! SFX k 0 lingly [^aeio][aeiou]l
+! SFX k 0 ingly [aeio][aeiou][cl]
+! SFX k 0 ingly [^aeiou][cl]
+! SFX k 0 ingly [^ecl]
+ SFX D Y 25
+! SFX D 0 d [^e]e
+! SFX D e d ee
+! SFX D 0 bed [^aeio][aeiou]b
+! SFX D 0 ked [^aeio][aeiou]c
+! SFX D 0 ded [^aeio][aeiou]d
+! SFX D 0 fed [^aeio][aeiou]f
+! SFX D 0 ged [^aeio][aeiou]g
+! SFX D 0 ked [^aeio][aeiou]k
+! SFX D 0 led [^aeio][eiou]l
+! SFX D 0 ed [aeio][eiou]l
+! SFX D 0 led [^aeo]al
+! SFX D 0 ed [aeo]al
+! SFX D 0 med [^aeio][aeiou]m
+! SFX D 0 ned [^aeio][aeiou]n
+! SFX D 0 ped [^aeio][aeiou]p
+! SFX D 0 red [^aeio][aeiou]r
+! SFX D 0 sed [^aeio][aeiou]s
+! SFX D 0 ted [^aeio][aeiou]t
+! SFX D 0 ved [^aeio][aeiou]v
+! SFX D 0 zed [^aeio][aeiou]z
+! SFX D y ied [^aeiou]y
+! SFX D 0 ed [aeiou]y
+! SFX D 0 ed [aeio][aeiou][bcdfgkmnprstvz]
+! SFX D 0 ed [^aeiou][bcdfgklmnprstvz]
+! SFX D 0 ed [^ebcdfgklmnprstvyz]
+ SFX d Y 16
+! SFX d 0 d e
+! SFX d 0 ked [^aeio][aeiou]c
+! SFX d 0 led [^aeio][aeiou]l
+! SFX d y ied [^aeiou]y
+! SFX d 0 ed [aeiou]y
+! SFX d 0 ed [aeio][aeiou][cl]
+! SFX d 0 ed [^aeiou][cl]
+! SFX d 0 ed [^ecly]
+! SFX d e ing [^eioy]e
+! SFX d 0 ing [eoy]e
+! SFX d ie ying ie
+! SFX d 0 king [^aeio][aeiou]c
+! SFX d 0 ling [^aeio][aeiou]l
+! SFX d 0 ing [aeio][aeiou][cl]
+! SFX d 0 ing [^aeiou][cl]
+! SFX d 0 ing [^ecl]
+ SFX h Y 22
+! SFX h 0 dly e
+! SFX h 0 bedly [^aeio][aeiou]b
+! SFX h 0 kedly [^aeio][aeiou]c
+! SFX h 0 dedly [^aeio][aeiou]d
+! SFX h 0 fedly [^aeio][aeiou]f
+! SFX h 0 gedly [^aeio][aeiou]g
+! SFX h 0 kedly [^aeio][aeiou]k
+! SFX h 0 ledly [^aeio][aeiou]l
+! SFX h 0 medly [^aeio][aeiou]m
+! SFX h 0 nedly [^aeio][aiou]n
+! SFX h 0 pedly [^aeio][aeiou]p
+! SFX h 0 redly [^aeio][aiou]r
+! SFX h 0 sedly [^aeio][aeiou]s
+! SFX h 0 tedly [^aeio][aiou]t
+! SFX h 0 vedly [^aeio][aeiou]v
+! SFX h 0 zedly [^aeio][aeiou]z
+! SFX h 0 edly [^aeio]e[nrt]
+! SFX h y iedly [^aeiou]y
+! SFX h 0 edly [aeiou]y
+! SFX h 0 edly [aeio][aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^ebcdfgklmnprstvyz]
+ SFX i Y 22
+! SFX i 0 dness e
+! SFX i 0 bedness [^aeio][aeiou]b
+! SFX i 0 kedness [^aeio][aeiou]c
+! SFX i 0 dedness [^aeio][aeiou]d
+! SFX i 0 fedness [^aeio][aeiou]f
+! SFX i 0 gedness [^aeio][aeiou]g
+! SFX i 0 kedness [^aeio][aeiou]k
+! SFX i 0 ledness [^aeio][aeiou]l
+! SFX i 0 medness [^aeio][aeiou]m
+! SFX i 0 nedness [^aeio][aiou]n
+! SFX i 0 pedness [^aeio][aeiou]p
+! SFX i 0 redness [^aeio][aiou]r
+! SFX i 0 sedness [^aeio][aeiou]s
+! SFX i 0 tedness [^aeio][aiou]t
+! SFX i 0 vedness [^aeio][aeiou]v
+! SFX i 0 zedness [^aeio][aeiou]z
+! SFX i 0 edness [^aeio]e[nrt]
+! SFX i y iedness [^aeiou]y
+! SFX i 0 edness [aeiou]y
+! SFX i 0 edness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^ebcdfgklmnprstvyz]
+ SFX T Y 42
+! SFX T 0 r e
+ SFX T 0 st e
+! SFX T 0 ber [^aeio][aeiou]b
+ SFX T 0 best [^aeio][aeiou]b
+! SFX T 0 ker [^aeio][aeiou]c
+ SFX T 0 kest [^aeio][aeiou]c
+! SFX T 0 der [^aeio][aeiou]d
+ SFX T 0 dest [^aeio][aeiou]d
+! SFX T 0 fer [^aeio][aeiou]f
+ SFX T 0 fest [^aeio][aeiou]f
+! SFX T 0 ger [^aeio][aeiou]g
+ SFX T 0 gest [^aeio][aeiou]g
+! SFX T 0 ker [^aeio][aeiou]k
+ SFX T 0 kest [^aeio][aeiou]k
+! SFX T 0 ler [^aeio][aeiou]l
+ SFX T 0 lest [^aeio][aeiou]l
+! SFX T 0 mer [^aeio][aeiou]m
+ SFX T 0 mest [^aeio][aeiou]m
+! SFX T 0 ner [^aeio][aeiou]n
+ SFX T 0 nest [^aeio][aeiou]n
+! SFX T 0 per [^aeio][aeiou]p
+ SFX T 0 pest [^aeio][aeiou]p
+! SFX T 0 rer [^aeio][aeiou]r
+ SFX T 0 rest [^aeio][aeiou]r
+! SFX T 0 ser [^aeio][aeiou]s
+ SFX T 0 sest [^aeio][aeiou]s
+! SFX T 0 ter [^aeio][aeiou]t
+ SFX T 0 test [^aeio][aeiou]t
+! SFX T 0 ver [^aeio][aeiou]v
+ SFX T 0 vest [^aeio][aeiou]v
+! SFX T 0 zer [^aeio][aeiou]z
+ SFX T 0 zest [^aeio][aeiou]z
+! SFX T y ier [^aeiou]y
+ SFX T y iest [^aeiou]y
+! SFX T 0 er [aeiou]y
+ SFX T 0 est [aeiou]y
+--- 104,498 ----
+ PFX F 0 col l
+! PFX F 0 con [^abehilmopru].
+ PFX K Y 1
+! PFX K 0 pre .
+ PFX e Y 1
+! PFX e 0 out .
+ PFX f Y 2
+! PFX f 0 under [^r]
+! PFX f 0 under- r
+ PFX O Y 1
+! PFX O 0 non- .
+ PFX 4 Y 1
+! PFX 4 0 trans .
+ SFX V Y 15
+! SFX V 0 tive [aio]
+! SFX V b ptive b
+! SFX V d sive d
+! SFX V be ptive be
+! SFX V e tive ce
+! SFX V de sive de
+! SFX V ke cative ke
+! SFX V e ptive me
+! SFX V e ive [st]e
+! SFX V e ative [^bcdkmst]e
+! SFX V 0 lative [aeiou]l
+! SFX V 0 ative [^aeiou]l
+! SFX V 0 ive [st]
+! SFX V y icative y
+! SFX V 0 ative [^abdeilosty]
+ SFX v Y 15
+! SFX v 0 tively [aio]
+! SFX v b ptively b
+! SFX v d sively d
+! SFX v be ptively be
+! SFX v e tively ce
+! SFX v de sively de
+! SFX v ke catively ke
+! SFX v e ptively me
+! SFX v e ively [st]e
+! SFX v e atively [^bcdkmst]e
+! SFX v 0 latively [aeiou]l
+! SFX v 0 atively [^aeiou]l
+! SFX v 0 ively [st]
+! SFX v y icatively y
+! SFX v 0 atively [^abdeilosty]
+ SFX u Y 15
+! SFX u 0 tiveness [aio]
+! SFX u b ptiveness b
+! SFX u d siveness d
+! SFX u be ptiveness be
+! SFX u e tiveness ce
+! SFX u de siveness de
+! SFX u ke cativeness ke
+! SFX u e ptiveness me
+! SFX u e iveness [st]e
+! SFX u e ativeness [^bcdkmst]e
+! SFX u 0 lativeness [aeiou]l
+! SFX u 0 ativeness [^aeiou]l
+! SFX u 0 iveness [st]
+! SFX u y icativeness y
+! SFX u 0 ativeness [^abdeilosty]
+ SFX N Y 26
+! SFX N b ption b
+! SFX N d sion d
+! SFX N be ption be
+! SFX N e tion ce
+! SFX N de sion de
+! SFX N ke cation ke
+! SFX N e ption ume
+! SFX N e mation [^u]me
+! SFX N e ion [^o]se
+! SFX N e ition ose
+! SFX N e ation [iou]te
+! SFX N e ion [^iou]te
+! SFX N e ation [^bcdkmst]e
+! SFX N el ulsion el
+! SFX N 0 lation [aiou]l
+! SFX N 0 ation [^aeiou]l
+! SFX N 0 mation [aeiou]m
+! SFX N 0 ation [^aeiou]m
+! SFX N er ration er
+! SFX N 0 ation [^e]r
+! SFX N 0 ion [sx]
+! SFX N t ssion mit
+! SFX N 0 ion [^m]it
+! SFX N 0 ation [^i]t
+! SFX N y ication y
+! SFX N 0 ation [^bdelmrstxy]
+ SFX n Y 28
+! SFX n 0 tion a
+! SFX n e tion ce
+! SFX n ke cation ke
+! SFX n e ation [iou]te
+! SFX n e ion [^iou]te
+! SFX n e ation [^ckt]e
+! SFX n el ulsion el
+! SFX n 0 lation [aiou]l
+! SFX n 0 ation [^aeiou]l
+! SFX n er ration er
+! SFX n 0 ation [^e]r
+! SFX n y ation py
+! SFX n y ication [^p]y
+! SFX n 0 ation [^aelry]
+! SFX n 0 tions a
+! SFX n e tions ce
+! SFX n ke cations ke
+! SFX n e ations [iou]te
+! SFX n e ions [^iou]te
+! SFX n e ations [^ckt]e
+! SFX n el ulsions el
+! SFX n 0 lations [aiou]l
+! SFX n 0 ations [^aeiou]l
+! SFX n er rations er
+! SFX n 0 ations [^e]r
+! SFX n y ations py
+! SFX n y ications [^p]y
+! SFX n 0 ations [^aelry]
+ SFX X Y 26
+! SFX X b ptions b
+! SFX X d sions d
+! SFX X be ptions be
+! SFX X e tions ce
+! SFX X ke cations ke
+! SFX X de sions de
+! SFX X e ptions ume
+! SFX X e mations [^u]me
+! SFX X e ions [^o]se
+! SFX X e itions ose
+! SFX X e ations [iou]te
+! SFX X e ions [^iou]te
+! SFX X e ations [^bcdkmst]e
+! SFX X el ulsions el
+! SFX X 0 lations [aiou]l
+! SFX X 0 ations [^aeiou]l
+! SFX X 0 mations [aeiou]m
+! SFX X 0 ations [^aeiou]m
+! SFX X er rations er
+! SFX X 0 ations [^e]r
+! SFX X 0 ions [sx]
+! SFX X t ssions mit
+! SFX X 0 ions [^m]it
+! SFX X 0 ations [^i]t
+! SFX X y ications y
+! SFX X 0 ations [^bdelmrstxy]
+ SFX x Y 40
+! SFX x b ptional b
+! SFX x d sional d
+! SFX x be ptional be
+! SFX x e tional ce
+! SFX x ke cational ke
+! SFX x de sional de
+! SFX x e ional [^o]se
+! SFX x e itional ose
+! SFX x e ional te
+! SFX x e ational [^bcdkst]e
+! SFX x el ulsional el
+! SFX x 0 lational [aiou]l
+! SFX x 0 ational [^aeiou]l
+! SFX x er rational er
+! SFX x 0 ational [^e]r
+! SFX x 0 ional [sx]
+! SFX x 0 ional [^n]t
+! SFX x 0 ational nt
+! SFX x y icational y
+! SFX x 0 ational [^bdelrstxy]
+! SFX x b ptionally b
+! SFX x d sionally d
+! SFX x be ptionally be
+! SFX x e tionally ce
+! SFX x ke cationally ke
+! SFX x de sionally de
+! SFX x e ionally [^o]se
+! SFX x e itionally ose
+! SFX x e ionally te
+! SFX x e ationally [^bcdkst]e
+! SFX x el ulsionally el
+! SFX x 0 lationally [aiou]l
+! SFX x 0 ationally [^aeiou]l
+! SFX x er rationally er
+! SFX x 0 ationally [^e]r
+! SFX x 0 ionally [sx]
+! SFX x 0 ionally [^n]t
+! SFX x 0 ationally nt
+! SFX x y icationally y
+! SFX x 0 ationally [^bdelrstxy]
+ SFX H N 13
+! SFX H y ieth y
+! SFX H ree ird ree
+! SFX H ve fth ve
+! SFX H e th [^ev]e
+! SFX H 0 h t
+! SFX H 0 th [^ety]
+! SFX H y ieths y
+! SFX H ree irds ree
+! SFX H ve fths ve
+! SFX H e ths [^ev]e
+! SFX H 0 hs t
+! SFX H 0 ths [^ety]
+! SFX H 0 fold .
+ SFX Y Y 9
+! SFX Y 0 ally ic
+! SFX Y 0 ly [^i]c
+! SFX Y e y [^aeiou]le
+! SFX Y 0 ly [aeiou]le
+! SFX Y 0 ly [^l]e
+! SFX Y 0 y [^aeiou]l
+! SFX Y y ily [^aeiou]y
+! SFX Y 0 ly [aeiou][ly]
+! SFX Y 0 ly [^cely]
+ SFX G Y 24
+! SFX G e ing [^eioy]e
+! SFX G 0 ing [eoy]e
+! SFX G ie ying ie
+! SFX G 0 bing [^aeio][aeiou]b
+! SFX G 0 king [^aeio][aeiou]c
+! SFX G 0 ding [^aeio][aeiou]d
+! SFX G 0 fing [^aeio][aeiou]f
+! SFX G 0 ging [^aeio][aeiou]g
+! SFX G 0 king [^aeio][aeiou]k
+! SFX G 0 ling [^aeio][eiou]l
+! SFX G 0 ing [aeio][eiou]l
+! SFX G 0 ling [^aeo]al
+! SFX G 0 ing [aeo]al
+! SFX G 0 ming [^aeio][aeiou]m
+! SFX G 0 ning [^aeio][aeiou]n
+! SFX G 0 ping [^aeio][aeiou]p
+! SFX G 0 ring [^aeio][aeiou]r
+! SFX G 0 sing [^aeio][aeiou]s
+! SFX G 0 ting [^aeio][aeiou]t
+! SFX G 0 ving [^aeio][aeiou]v
+! SFX G 0 zing [^aeio][aeiou]z
+! SFX G 0 ing [aeio][aeiou][bcdfgkmnprstvz]
+! SFX G 0 ing [^aeiou][bcdfgklmnprstvz]
+! SFX G 0 ing [^ebcdfgklmnprstvz]
+ SFX J Y 25
+! SFX J e ings [^eioy]e
+! SFX J 0 ings [eoy]e
+! SFX J ie yings ie
+! SFX J 0 bings [^aeio][aeiou]b
+! SFX J 0 king [^aeio][aeiou]c
+! SFX J 0 dings [^aeio][aeiou]d
+! SFX J 0 fings [^aeio][aeiou]f
+! SFX J 0 gings [^aeio][aeiou]g
+! SFX J 0 kings [^aeio][aeiou]k
+! SFX J 0 lings [^aeio][eiou]l
+! SFX J 0 ings [aeio][eiou]l
+! SFX J 0 lings [^aeo]al
+! SFX J 0 ings [aeo]al
+! SFX J 0 mings [^aeio][aeiou]m
+! SFX J 0 nings [^aeio][aiou]n
+! SFX J 0 pings [^aeio][aeiou]p
+! SFX J 0 rings [^aeio][aiou]r
+! SFX J 0 sings [^aeio][aeiou]s
+! SFX J 0 tings [^aeio][aiou]t
+! SFX J 0 vings [^aeio][aeiou]v
+! SFX J 0 zings [^aeio][aeiou]z
+! SFX J 0 ings [^aeio]e[nrt]
+! SFX J 0 ings [aeio][aeiou][bcdfgkmnprstvz]
+! SFX J 0 ings [^aeiou][bcdfgklmnprstvz]
+! SFX J 0 ings [^ebcdfgklmnprstvz]
+ SFX k Y 8
+! SFX k e ingly [^eioy]e
+! SFX k 0 ingly [eoy]e
+! SFX k ie yingly ie
+! SFX k 0 kingly [^aeio][aeiou]c
+! SFX k 0 lingly [^aeio][aeiou]l
+! SFX k 0 ingly [aeio][aeiou][cl]
+! SFX k 0 ingly [^aeiou][cl]
+! SFX k 0 ingly [^ecl]
+ SFX D Y 25
+! SFX D 0 d [^e]e
+! SFX D e d ee
+! SFX D 0 bed [^aeio][aeiou]b
+! SFX D 0 ked [^aeio][aeiou]c
+! SFX D 0 ded [^aeio][aeiou]d
+! SFX D 0 fed [^aeio][aeiou]f
+! SFX D 0 ged [^aeio][aeiou]g
+! SFX D 0 ked [^aeio][aeiou]k
+! SFX D 0 led [^aeio][eiou]l
+! SFX D 0 ed [aeio][eiou]l
+! SFX D 0 led [^aeo]al
+! SFX D 0 ed [aeo]al
+! SFX D 0 med [^aeio][aeiou]m
+! SFX D 0 ned [^aeio][aeiou]n
+! SFX D 0 ped [^aeio][aeiou]p
+! SFX D 0 red [^aeio][aeiou]r
+! SFX D 0 sed [^aeio][aeiou]s
+! SFX D 0 ted [^aeio][aeiou]t
+! SFX D 0 ved [^aeio][aeiou]v
+! SFX D 0 zed [^aeio][aeiou]z
+! SFX D y ied [^aeiou]y
+! SFX D 0 ed [aeiou]y
+! SFX D 0 ed [aeio][aeiou][bcdfgkmnprstvz]
+! SFX D 0 ed [^aeiou][bcdfgklmnprstvz]
+! SFX D 0 ed [^ebcdfgklmnprstvyz]
+ SFX d Y 16
+! SFX d 0 d e
+! SFX d 0 ked [^aeio][aeiou]c
+! SFX d 0 led [^aeio][aeiou]l
+! SFX d y ied [^aeiou]y
+! SFX d 0 ed [aeiou]y
+! SFX d 0 ed [aeio][aeiou][cl]
+! SFX d 0 ed [^aeiou][cl]
+! SFX d 0 ed [^ecly]
+! SFX d e ing [^eioy]e
+! SFX d 0 ing [eoy]e
+! SFX d ie ying ie
+! SFX d 0 king [^aeio][aeiou]c
+! SFX d 0 ling [^aeio][aeiou]l
+! SFX d 0 ing [aeio][aeiou][cl]
+! SFX d 0 ing [^aeiou][cl]
+! SFX d 0 ing [^ecl]
+ SFX h Y 22
+! SFX h 0 dly e
+! SFX h 0 bedly [^aeio][aeiou]b
+! SFX h 0 kedly [^aeio][aeiou]c
+! SFX h 0 dedly [^aeio][aeiou]d
+! SFX h 0 fedly [^aeio][aeiou]f
+! SFX h 0 gedly [^aeio][aeiou]g
+! SFX h 0 kedly [^aeio][aeiou]k
+! SFX h 0 ledly [^aeio][aeiou]l
+! SFX h 0 medly [^aeio][aeiou]m
+! SFX h 0 nedly [^aeio][aiou]n
+! SFX h 0 pedly [^aeio][aeiou]p
+! SFX h 0 redly [^aeio][aiou]r
+! SFX h 0 sedly [^aeio][aeiou]s
+! SFX h 0 tedly [^aeio][aiou]t
+! SFX h 0 vedly [^aeio][aeiou]v
+! SFX h 0 zedly [^aeio][aeiou]z
+! SFX h 0 edly [^aeio]e[nrt]
+! SFX h y iedly [^aeiou]y
+! SFX h 0 edly [aeiou]y
+! SFX h 0 edly [aeio][aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^aeiou][bcdfgklmnprstvz]
+! SFX h 0 edly [^ebcdfgklmnprstvyz]
+ SFX i Y 22
+! SFX i 0 dness e
+! SFX i 0 bedness [^aeio][aeiou]b
+! SFX i 0 kedness [^aeio][aeiou]c
+! SFX i 0 dedness [^aeio][aeiou]d
+! SFX i 0 fedness [^aeio][aeiou]f
+! SFX i 0 gedness [^aeio][aeiou]g
+! SFX i 0 kedness [^aeio][aeiou]k
+! SFX i 0 ledness [^aeio][aeiou]l
+! SFX i 0 medness [^aeio][aeiou]m
+! SFX i 0 nedness [^aeio][aiou]n
+! SFX i 0 pedness [^aeio][aeiou]p
+! SFX i 0 redness [^aeio][aiou]r
+! SFX i 0 sedness [^aeio][aeiou]s
+! SFX i 0 tedness [^aeio][aiou]t
+! SFX i 0 vedness [^aeio][aeiou]v
+! SFX i 0 zedness [^aeio][aeiou]z
+! SFX i 0 edness [^aeio]e[nrt]
+! SFX i y iedness [^aeiou]y
+! SFX i 0 edness [aeiou]y
+! SFX i 0 edness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^aeiou][bcdfgklmnprstvz]
+! SFX i 0 edness [^ebcdfgklmnprstvyz]
+ SFX T Y 42
+! SFX T 0 r e
+ SFX T 0 st e
+! SFX T 0 ber [^aeio][aeiou]b
+ SFX T 0 best [^aeio][aeiou]b
+! SFX T 0 ker [^aeio][aeiou]c
+ SFX T 0 kest [^aeio][aeiou]c
+! SFX T 0 der [^aeio][aeiou]d
+ SFX T 0 dest [^aeio][aeiou]d
+! SFX T 0 fer [^aeio][aeiou]f
+ SFX T 0 fest [^aeio][aeiou]f
+! SFX T 0 ger [^aeio][aeiou]g
+ SFX T 0 gest [^aeio][aeiou]g
+! SFX T 0 ker [^aeio][aeiou]k
+ SFX T 0 kest [^aeio][aeiou]k
+! SFX T 0 ler [^aeio][aeiou]l
+ SFX T 0 lest [^aeio][aeiou]l
+! SFX T 0 mer [^aeio][aeiou]m
+ SFX T 0 mest [^aeio][aeiou]m
+! SFX T 0 ner [^aeio][aeiou]n
+ SFX T 0 nest [^aeio][aeiou]n
+! SFX T 0 per [^aeio][aeiou]p
+ SFX T 0 pest [^aeio][aeiou]p
+! SFX T 0 rer [^aeio][aeiou]r
+ SFX T 0 rest [^aeio][aeiou]r
+! SFX T 0 ser [^aeio][aeiou]s
+ SFX T 0 sest [^aeio][aeiou]s
+! SFX T 0 ter [^aeio][aeiou]t
+ SFX T 0 test [^aeio][aeiou]t
+! SFX T 0 ver [^aeio][aeiou]v
+ SFX T 0 vest [^aeio][aeiou]v
+! SFX T 0 zer [^aeio][aeiou]z
+ SFX T 0 zest [^aeio][aeiou]z
+! SFX T y ier [^aeiou]y
+ SFX T y iest [^aeiou]y
+! SFX T 0 er [aeiou]y
+ SFX T 0 est [aeiou]y
+***************
+*** 500,1185 ****
+ SFX R Y 72
+! SFX R 0 r e
+! SFX R 0 rs e
+! SFX R 0 ber [^aeio][aeiou]b
+! SFX R 0 bers [^aeio][aeiou]b
+! SFX R 0 ker [^aeio][aeiou]c
+! SFX R 0 kers [^aeio][aeiou]c
+! SFX R 0 der [^aeio][aeiou]d
+! SFX R 0 ders [^aeio][aeiou]d
+! SFX R 0 fer [^aeio][aeiou]f
+! SFX R 0 fers [^aeio][aeiou]f
+! SFX R 0 ger [^aeio][aeiou]g
+! SFX R 0 gers [^aeio][aeiou]g
+! SFX R 0 ker [^aeio][aeiou]k
+! SFX R 0 kers [^aeio][aeiou]k
+! SFX R 0 ler [^aeio][eiou]l
+! SFX R 0 er [aeio][eiou]l
+! SFX R 0 ler [^aeo]al
+! SFX R 0 er [aeo]al
+! SFX R 0 lers [^aeio][eiou]l
+! SFX R 0 ers [aeio][eiou]l
+! SFX R 0 lers [^aeo]al
+! SFX R 0 ers [aeo]al
+! SFX R 0 mer [^aeio][aeiou]m
+! SFX R 0 mers [^aeio][aeiou]m
+! SFX R 0 ner [^aeio][aeiou]n
+! SFX R 0 ners [^aeio][aeiou]n
+! SFX R 0 per [^aeio][aeiou]p
+! SFX R 0 pers [^aeio][aeiou]p
+! SFX R 0 rer [^aeio][aeiou]r
+! SFX R 0 rers [^aeio][aeiou]r
+! SFX R 0 ser [^aeio][aeiou]s
+! SFX R 0 sers [^aeio][aeiou]s
+! SFX R 0 ter [^aeio][aeiou]t
+! SFX R 0 ters [^aeio][aeiou]t
+! SFX R 0 ver [^aeio][aeiou]v
+! SFX R 0 vers [^aeio][aeiou]v
+! SFX R 0 zer [^aeio][aeiou]z
+! SFX R 0 zers [^aeio][aeiou]z
+! SFX R y ier [^aeiou]y
+! SFX R y iers [^aeiou]y
+! SFX R 0 er [aeiou]y
+! SFX R 0 ers [aeiou]y
+! SFX R 0 er [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 ers [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 ers [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er [^ebcdfgklmnprstvyz]
+! SFX R 0 ers [^ebcdfgklmnprstvyz]
+! SFX R 0 r's e
+! SFX R 0 ber's [^aeio][aeiou]b
+! SFX R 0 ker's [^aeio][aeiou]c
+! SFX R 0 der's [^aeio][aeiou]d
+! SFX R 0 fer's [^aeio][aeiou]f
+! SFX R 0 ger's [^aeio][aeiou]g
+! SFX R 0 ker's [^aeio][aeiou]k
+! SFX R 0 ler's [^aeio][eiou]l
+! SFX R 0 er's [aeio][eiou]l
+! SFX R 0 ler's [^aeo]al
+! SFX R 0 er's [aeo]al
+! SFX R 0 mer's [^aeio][aeiou]m
+! SFX R 0 ner's [^aeio][aeiou]n
+! SFX R 0 per's [^aeio][aeiou]p
+! SFX R 0 rer's [^aeio][aeiou]r
+! SFX R 0 ser's [^aeio][aeiou]s
+! SFX R 0 ter's [^aeio][aeiou]t
+! SFX R 0 ver's [^aeio][aeiou]v
+! SFX R 0 zer's [^aeio][aeiou]z
+! SFX R y ier's [^aeiou]y
+! SFX R 0 er's [aeiou]y
+! SFX R 0 er's [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er's [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er's [^ebcdfgklmnprstvyz]
+ SFX r Y 24
+! SFX r 0 r e
+! SFX r 0 ler [^aeio][aeiou]l
+! SFX r 0 ker [^aeio][aeiou]c
+! SFX r y ier [^aeiou]y
+! SFX r 0 er [aeiou]y
+! SFX r 0 er [aeio][aeiou][cl]
+! SFX r 0 er [^aeiou][cl]
+! SFX r 0 er [^ecly]
+! SFX r 0 rs e
+! SFX r 0 lers [^aeio][aeiou]l
+! SFX r 0 kers [^aeio][aeiou]c
+! SFX r y iers [^aeiou]y
+! SFX r 0 ers [aeiou]y
+! SFX r 0 ers [aeio][aeiou][cl]
+! SFX r 0 ers [^aeiou][cl]
+! SFX r 0 ers [^ecly]
+! SFX r 0 r's e
+! SFX r 0 ler's [^aeio][aeiou]l
+! SFX r 0 ker's [^aeio][aeiou]c
+! SFX r y ier's [^aeiou]y
+! SFX r 0 er's [aeiou]y
+! SFX r 0 er's [aeio][aeiou][cl]
+! SFX r 0 er's [^aeiou][cl]
+! SFX r 0 er's [^ecly]
+ SFX S Y 9
+! SFX S y ies [^aeiou]y
+! SFX S 0 s [aeiou]y
+! SFX S 0 es [sxz]
+! SFX S 0 es [cs]h
+! SFX S 0 s [^cs]h
+! SFX S 0 s [ae]u
+! SFX S 0 x [ae]u
+! SFX S 0 s [^ae]u
+ SFX S 0 s [^hsuxyz]
+ SFX P Y 6
+! SFX P y iness [^aeiou]y
+! SFX P 0 ness [aeiou]y
+! SFX P 0 ness [^y]
+! SFX P y iness's [^aeiou]y
+! SFX P 0 ness's [aeiou]y
+! SFX P 0 ness's [^y]
+ SFX m Y 20
+! SFX m 0 sman [bdknmt]
+! SFX m 0 sman [aeiou][bdklmnt]e
+! SFX m 0 man [^aeiou][bdklmnt]e
+! SFX m 0 man [^bdklmnt]e
+! SFX m 0 man [^bdeknmt]
+! SFX m 0 smen [bdknmt]
+! SFX m 0 smen [aeiou][bdklmnt]e
+! SFX m 0 men [^aeiou][bdklmnt]e
+! SFX m 0 men [^bdklmnt]e
+! SFX m 0 men [^bdeknmt]
+! SFX m 0 sman's [bdknmt]
+! SFX m 0 sman's [aeiou][bdklmnt]e
+! SFX m 0 man's [^aeiou][bdklmnt]e
+! SFX m 0 man's [^bdklmnt]e
+! SFX m 0 man's [^bdeknmt]
+! SFX m 0 smen's [bdknmt]
+! SFX m 0 smen's [aeiou][bdklmnt]e
+! SFX m 0 men's [^aeiou][bdklmnt]e
+! SFX m 0 men's [^bdklmnt]e
+! SFX m 0 men's [^bdeknmt]
+ SFX 5 Y 15
+! SFX 5 0 swoman [bdknmt]
+! SFX 5 0 swoman [aeiou][bdklmnt]e
+! SFX 5 0 woman [^aeiou][bdklmnt]e
+! SFX 5 0 woman [^bdklmnt]e
+! SFX 5 0 woman [^bdeknmt]
+! SFX 5 0 swomen [bdknmt]
+! SFX 5 0 swomen [aeiou][bdklmnt]e
+! SFX 5 0 women [^aeiou][bdklmnt]e
+! SFX 5 0 women [^bdklmnt]e
+! SFX 5 0 women [^bdeknmt]
+! SFX 5 0 swoman's [bdknmt]
+! SFX 5 0 swoman's [aeiou][bdklmnt]e
+! SFX 5 0 woman's [^aeiou][bdklmnt]e
+! SFX 5 0 woman's [^bdklmnt]e
+! SFX 5 0 woman's [^bdeknmt]
+ SFX 6 Y 3
+! SFX 6 y iful [^aeiou]y
+! SFX 6 0 ful [aeiou]y
+! SFX 6 0 ful [^y]
+ SFX j Y 3
+! SFX j y ifully [^aeiou]y
+! SFX j 0 fully [aeiou]y
+! SFX j 0 fully [^y]
+ SFX p Y 5
+! SFX p y iless [^aeiou]y
+! SFX p 0 less [aeiou]y
+! SFX p 0 ess ll
+! SFX p 0 less [^l]l
+! SFX p 0 less [^ly]
+ SFX Q Y 88
+! SFX Q 0 tise a
+! SFX Q e ise [^l]e
+! SFX Q le ilise [^aeiou]le
+! SFX Q e ise [aeiou]le
+! SFX Q um ise um
+! SFX Q 0 ise [^u]m
+! SFX Q s se is
+! SFX Q 0 ise [^i]s
+! SFX Q y ise [^aeiou]y
+! SFX Q 0 ise [aeiou]y
+! SFX Q 0 ise [^aemsy]
+! SFX Q 0 tises a
+! SFX Q e ises [^l]e
+! SFX Q le ilises [^aeiou]le
+! SFX Q e ises [aeiou]le
+! SFX Q um ises um
+! SFX Q 0 ises [^u]m
+! SFX Q s ses is
+! SFX Q 0 ises [^i]s
+! SFX Q y ises [^aeiou]y
+! SFX Q 0 ises [aeiou]y
+! SFX Q 0 ises [^aemsy]
+! SFX Q 0 tised a
+! SFX Q e ised [^l]e
+! SFX Q le ilised [^aeiou]le
+! SFX Q e ised [aeiou]le
+! SFX Q um ised um
+! SFX Q 0 ised [^u]m
+! SFX Q s sed is
+! SFX Q 0 ised [^i]s
+! SFX Q y ised [^aeiou]y
+! SFX Q 0 ised [aeiou]y
+! SFX Q 0 ised [^aemsy]
+! SFX Q 0 tising a
+! SFX Q e ising [^l]e
+! SFX Q le ilising [^aeiou]le
+! SFX Q e ising [aeiou]le
+! SFX Q um ising um
+! SFX Q 0 ising [^u]m
+! SFX Q s sing is
+! SFX Q 0 ising [^i]s
+! SFX Q y ising [^aeiou]y
+! SFX Q 0 ising [aeiou]y
+! SFX Q 0 ising [^aemsy]
+! SFX Q 0 tize a
+! SFX Q e ize [^l]e
+! SFX Q le ilize [^aeiou]le
+! SFX Q e ize [aeiou]le
+! SFX Q um ize um
+! SFX Q 0 ize [^u]m
+! SFX Q s ze is
+! SFX Q 0 ize [^i]s
+! SFX Q y ize [^aeiou]y
+! SFX Q 0 ize [aeiou]y
+! SFX Q 0 ize [^aemsy]
+! SFX Q 0 tizes a
+! SFX Q e izes [^l]e
+! SFX Q le ilizes [^aeiou]le
+! SFX Q e izes [aeiou]le
+! SFX Q um izes um
+! SFX Q 0 izes [^u]m
+! SFX Q s zes is
+! SFX Q 0 izes [^i]s
+! SFX Q y izes [^aeiou]y
+! SFX Q 0 izes [aeiou]y
+! SFX Q 0 izes [^aemsy]
+! SFX Q 0 tized a
+! SFX Q e ized [^l]e
+! SFX Q le ilized [^aeiou]le
+! SFX Q e ized [aeiou]le
+! SFX Q um ized um
+! SFX Q 0 ized [^u]m
+! SFX Q s zed is
+! SFX Q 0 ized [^i]s
+! SFX Q y ized [^aeiou]y
+! SFX Q 0 ized [aeiou]y
+! SFX Q 0 ized [^aemsy]
+! SFX Q 0 tizing a
+! SFX Q e izing [^l]e
+! SFX Q le ilizing [^aeiou]le
+! SFX Q e izing [aeiou]le
+! SFX Q um izing um
+! SFX Q 0 izing [^u]m
+! SFX Q s zing is
+! SFX Q 0 izing [^i]s
+! SFX Q y izing [^aeiou]y
+! SFX Q 0 izing [aeiou]y
+! SFX Q 0 izing [^aemsy]
+ SFX q Y 44
+! SFX q 0 tisation a
+! SFX q e isation [^l]e
+! SFX q le ilisation [^aeiou]le
+! SFX q e isation [aeiou]le
+! SFX q um isation um
+! SFX q 0 isation [^u]m
+! SFX q s sation is
+! SFX q 0 isation [^i]s
+! SFX q y isation [^aeiou]y
+! SFX q 0 isation [aeiou]y
+! SFX q 0 isation [^aemsy]
+! SFX q 0 tisations a
+! SFX q e isations [^l]e
+! SFX q le ilisations [^aeiou]le
+! SFX q e isations [aeiou]le
+! SFX q um isations um
+! SFX q 0 isations [^u]m
+! SFX q s sations is
+! SFX q 0 isations [^i]s
+! SFX q y isations [^aeiou]y
+! SFX q 0 isations [aeiou]y
+! SFX q 0 isations [^aemsy]
+! SFX q 0 tization a
+! SFX q e ization [^l]e
+! SFX q le ilization [^aeiou]le
+! SFX q e ization [aeiou]le
+! SFX q um ization um
+! SFX q 0 ization [^u]m
+! SFX q s zation is
+! SFX q 0 ization [^i]s
+! SFX q y ization [^aeiou]y
+! SFX q 0 ization [aeiou]y
+! SFX q 0 ization [^aemsy]
+! SFX q 0 tizations a
+! SFX q e izations [^l]e
+! SFX q le ilizations [^aeiou]le
+! SFX q e izations [aeiou]le
+! SFX q um izations um
+! SFX q 0 izations [^u]m
+! SFX q s zations is
+! SFX q 0 izations [^i]s
+! SFX q y izations [^aeiou]y
+! SFX q 0 izations [aeiou]y
+! SFX q 0 izations [^aemsy]
+ SFX s Y 66
+! SFX s 0 tiser a
+! SFX s e iser [^l]e
+! SFX s le iliser [^aeiou]le
+! SFX s e iser [aeiou]le
+! SFX s um iser um
+! SFX s 0 iser [^u]m
+! SFX s s ser is
+! SFX s 0 iser [^i]s
+! SFX s y iser [^aeiou]y
+! SFX s 0 iser [aeiou]y
+! SFX s 0 iser [^aemsy]
+! SFX s 0 tisers a
+! SFX s e isers [^l]e
+! SFX s le ilisers [^aeiou]le
+! SFX s e isers [aeiou]le
+! SFX s um isers um
+! SFX s 0 isers [^u]m
+! SFX s s sers is
+! SFX s 0 isers [^i]s
+! SFX s y isers [^aeiou]y
+! SFX s 0 isers [aeiou]y
+! SFX s 0 isers [^aemsy]
+! SFX s 0 tiser's a
+! SFX s e iser's [^l]e
+! SFX s le iliser's [^aeiou]le
+! SFX s e iser's [aeiou]le
+! SFX s um iser's um
+! SFX s 0 iser's [^u]m
+! SFX s s ser's is
+! SFX s 0 iser's [^i]s
+! SFX s y iser's [^aeiou]y
+! SFX s 0 iser's [aeiou]y
+! SFX s 0 iser's [^aemsy]
+! SFX s 0 tizer a
+! SFX s e izer [^l]e
+! SFX s le ilizer [^aeiou]le
+! SFX s e izer [aeiou]le
+! SFX s um izer um
+! SFX s 0 izer [^u]m
+! SFX s s zer is
+! SFX s 0 izer [^i]s
+! SFX s y izer [^aeiou]y
+! SFX s 0 izer [aeiou]y
+! SFX s 0 izer [^aemsy]
+! SFX s 0 tizers a
+! SFX s e izers [^l]e
+! SFX s le ilizers [^aeiou]le
+! SFX s e izers [aeiou]le
+! SFX s um izers um
+! SFX s 0 izers [^u]m
+! SFX s s zers is
+! SFX s 0 izers [^i]s
+! SFX s y izers [^aeiou]y
+! SFX s 0 izers [aeiou]y
+! SFX s 0 izers [^aemsy]
+! SFX s 0 tizer's a
+! SFX s e izer's [^l]e
+! SFX s le ilizer's [^aeiou]le
+! SFX s e izer's [aeiou]le
+! SFX s um izer's um
+! SFX s 0 izer's [^u]m
+! SFX s s zer's is
+! SFX s 0 izer's [^i]s
+! SFX s y izer's [^aeiou]y
+! SFX s 0 izer's [aeiou]y
+! SFX s 0 izer's [^aemsy]
+ SFX t Y 44
+! SFX t 0 tisable a
+! SFX t e isable [^l]e
+! SFX t le ilisable [^aeiou]le
+! SFX t e isable [aeiou]le
+! SFX t um isable um
+! SFX t 0 isable [^u]m
+! SFX t s sable is
+! SFX t 0 isable [^i]s
+! SFX t y isable [^aeiou]y
+! SFX t 0 isable [aeiou]y
+! SFX t 0 isable [^aemsy]
+! SFX t 0 tizable a
+! SFX t e izable [^l]e
+! SFX t le ilizable [^aeiou]le
+! SFX t e izable [aeiou]le
+! SFX t um izable um
+! SFX t 0 izable [^u]m
+! SFX t s zable is
+! SFX t 0 izable [^i]s
+! SFX t y izable [^aeiou]y
+! SFX t 0 izable [aeiou]y
+! SFX t 0 izable [^aemsy]
+! SFX t 0 tisability a
+! SFX t e isability [^l]e
+! SFX t le ilisability [^aeiou]le
+! SFX t e isability [aeiou]le
+! SFX t um isability um
+! SFX t 0 isability [^u]m
+! SFX t s sability is
+! SFX t 0 isability [^i]s
+! SFX t y isability [^aeiou]y
+! SFX t 0 isability [aeiou]y
+! SFX t 0 isability [^aemsy]
+! SFX t 0 tizability a
+! SFX t e izability [^l]e
+! SFX t le ilizability [^aeiou]le
+! SFX t e izability [aeiou]le
+! SFX t um izability um
+! SFX t 0 izability [^u]m
+! SFX t s zability is
+! SFX t 0 izability [^i]s
+! SFX t y izability [^aeiou]y
+! SFX t 0 izability [aeiou]y
+! SFX t 0 izability [^aemsy]
+ SFX M Y 1
+! SFX M 0 's .
+ SFX B Y 48
+! SFX B e able [^acegilotu]e
+! SFX B 0 able [acegilou]e
+! SFX B te ble ate
+! SFX B e able [^a]te
+! SFX B 0 bable [^aeio][aeiou]b
+! SFX B 0 kable [^aeio][aeiou]c
+! SFX B 0 dable [^aeio][aeiou]d
+! SFX B 0 fable [^aeio][aeiou]f
+! SFX B 0 gable [^aeio][aeiou]g
+! SFX B 0 kable [^aeio][aeiou]k
+! SFX B 0 lable [^aeio][aeiou]l
+! SFX B 0 mable [^aeio][aeiou]m
+! SFX B 0 nable [^aeio][aeiou]n
+! SFX B 0 pable [^aeio][aeiou]p
+! SFX B 0 rable [^aeio][aeiou]r
+! SFX B 0 sable [^aeio][aeiou]s
+! SFX B 0 table [^aeio][aeiou]t
+! SFX B 0 vable [^aeio][aeiou]v
+! SFX B 0 zable [^aeio][aeiou]z
+! SFX B 0 able [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 able [^aeiou][bcdfgklmnprstvz]
+! SFX B y iable [^aeiou]y
+! SFX B 0 able [aeiou]y
+! SFX B 0 able [^ebcdfgklmnprstvzy]
+! SFX B e ability [^acegilotu]e
+! SFX B 0 ability [acegilou]e
+! SFX B te bility ate
+! SFX B e ability [^a]te
+! SFX B 0 bability [^aeio][aeiou]b
+! SFX B 0 kability [^aeio][aeiou]c
+! SFX B 0 dability [^aeio][aeiou]d
+! SFX B 0 fability [^aeio][aeiou]f
+! SFX B 0 gability [^aeio][aeiou]g
+! SFX B 0 kability [^aeio][aeiou]k
+! SFX B 0 lability [^aeio][aeiou]l
+! SFX B 0 mability [^aeio][aeiou]m
+! SFX B 0 nability [^aeio][aeiou]n
+! SFX B 0 pability [^aeio][aeiou]p
+! SFX B 0 rability [^aeio][aeiou]r
+! SFX B 0 sability [^aeio][aeiou]s
+! SFX B 0 tability [^aeio][aeiou]t
+! SFX B 0 vability [^aeio][aeiou]v
+! SFX B 0 zability [^aeio][aeiou]z
+! SFX B 0 ability [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 ability [^aeiou][bcdfgklmnprstvz]
+! SFX B y iability [^aeiou]y
+! SFX B 0 ability [aeiou]y
+! SFX B 0 ability [^ebcdfgklmnprstvzy]
+ SFX 7 Y 9
+! SFX 7 e able [acegilou]e
+! SFX 7 0 able [^acegilou]e
+! SFX 7 0 kable [^aeio][aeiou]c
+! SFX 7 0 lable [^aeio][aeiou]l
+! SFX 7 0 able [aeio][aeiou][cl]
+! SFX 7 0 able [^aeiou][cl]
+! SFX 7 y iable [^aeiou]y
+! SFX 7 0 able [aeiou]y
+! SFX 7 0 able [^cely]
+ SFX g Y 9
+! SFX g e ability [^acegilou]e
+! SFX g 0 ability [acegilou]e
+! SFX g 0 kability [^aeio][aeiou]c
+! SFX g 0 lability [^aeio][aeiou]l
+! SFX g 0 ability [aeio][aeiou][cl]
+! SFX g 0 ability [^aeiou][cl]
+! SFX g y iability [^aeiou]y
+! SFX g 0 ability [aeiou]y
+! SFX g 0 ability [^cely]
+ SFX l Y 9
+! SFX l e ably [^acegilou]e
+! SFX l 0 ably [acegilou]e
+! SFX l 0 kably [^aeio][aeiou]c
+! SFX l 0 lably [^aeio][aeiou]l
+! SFX l 0 ably [aeio][aeiou][cl]
+! SFX l 0 ably [^aeiou][cl]
+! SFX l y iably [^aeiou]y
+! SFX l 0 ably [aeiou]y
+! SFX l 0 ably [^cely]
+ SFX b Y 3
+! SFX b e ible [^aeiou]e
+! SFX b 0 ible [aeiou]e
+! SFX b 0 ible [^e]
+ SFX L Y 12
+! SFX L 0 ament m
+! SFX L y iment [^aeiou]y
+! SFX L 0 ment [aeiou]y
+! SFX L 0 ment [^my]
+! SFX L 0 aments m
+! SFX L y iments [^aeiou]y
+! SFX L 0 ments [aeiou]y
+! SFX L 0 ments [^my]
+! SFX L 0 ament's m
+! SFX L y iment's [^aeiou]y
+! SFX L 0 ment's [aeiou]y
+! SFX L 0 ment's [^my]
+ SFX Z Y 22
+! SFX Z e y [^aeiouy]e
+! SFX Z 0 y [aeiouy]e
+! SFX Z 0 ey [aiouy]
+! SFX Z 0 by [^aeio][aeiou]b
+! SFX Z 0 ky [^aeio][aeiou]c
+! SFX Z 0 dy [^aeio][aeiou]d
+! SFX Z 0 fy [^aeio][aeiou]f
+! SFX Z 0 gy [^aeio][aeiou]g
+! SFX Z 0 ky [^aeio][aeiou]k
+! SFX Z 0 ly [^aeio][aeiou]l
+! SFX Z 0 my [^aeio][aeiou]m
+! SFX Z 0 ny [^aeio][aiou]n
+! SFX Z 0 py [^aeio][aeiou]p
+! SFX Z 0 ry [^aeio][aiou]r
+! SFX Z 0 sy [^aeio][aeiou]s
+! SFX Z 0 ty [^aeio][aiou]t
+! SFX Z 0 vy [^aeio][aeiou]v
+! SFX Z 0 zy [^aeio][aeiou]z
+! SFX Z 0 y [^aeio]e[nrt]
+! SFX Z 0 y [aeio][aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aebcdfgiklmnoprstuvyz]
+ SFX 2 Y 21
+! SFX 2 e iness [^aeiouy]e
+! SFX 2 0 iness [aeiouy]e
+! SFX 2 0 biness [^aeio][aeiou]b
+! SFX 2 0 kiness [^aeio][aeiou]c
+! SFX 2 0 diness [^aeio][aeiou]d
+! SFX 2 0 finess [^aeio][aeiou]f
+! SFX 2 0 giness [^aeio][aeiou]g
+! SFX 2 0 kiness [^aeio][aeiou]k
+! SFX 2 0 liness [^aeio][aeiou]l
+! SFX 2 0 miness [^aeio][aeiou]m
+! SFX 2 0 niness [^aeio][aiou]n
+! SFX 2 0 piness [^aeio][aeiou]p
+! SFX 2 0 riness [^aeio][aiou]r
+! SFX 2 0 siness [^aeio][aeiou]s
+! SFX 2 0 tiness [^aeio][aiou]t
+! SFX 2 0 viness [^aeio][aeiou]v
+! SFX 2 0 ziness [^aeio][aeiou]z
+! SFX 2 0 iness [^aeio]e[nrt]
+! SFX 2 0 iness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^ebcdfgklmnprstvz]
+ SFX z Y 24
+! SFX z e ily [^aeiouy]e
+! SFX z 0 ily [aeiouy]e
+! SFX z 0 ily [aiou]y
+! SFX z ey ily ey
+! SFX z y ily [^aeiou]y
+! SFX z 0 bily [^aeio][aeiou]b
+! SFX z 0 kily [^aeio][aeiou]c
+! SFX z 0 dily [^aeio][aeiou]d
+! SFX z 0 fily [^aeio][aeiou]f
+! SFX z 0 gily [^aeio][aeiou]g
+! SFX z 0 kily [^aeio][aeiou]k
+! SFX z 0 lily [^aeio][aeiou]l
+! SFX z 0 mily [^aeio][aeiou]m
+! SFX z 0 nily [^aeio][aiou]n
+! SFX z 0 pily [^aeio][aeiou]p
+! SFX z 0 rily [^aeio][aiou]r
+! SFX z 0 sily [^aeio][aeiou]s
+! SFX z 0 tily [^aeio][aiou]t
+! SFX z 0 vily [^aeio][aeiou]v
+! SFX z 0 zily [^aeio][aeiou]z
+! SFX z 0 ily [^aeio]e[nrt]
+! SFX z 0 ily [aeio][aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^ebcdfgklmnprstvyz]
+ SFX y Y 15
+! SFX y e ory te
+! SFX y e atory [mr]e
+! SFX y e ary se
+! SFX y 0 ry [^mrst]e
+! SFX y 0 ory [^aeous]t
+! SFX y 0 ry [aeous]t
+! SFX y 0 ery h
+! SFX y 0 atory [^i]m
+! SFX y im matory im
+! SFX y 0 ory s
+! SFX y 0 ary ion
+! SFX y 0 ry [^i]on
+! SFX y 0 nery [aiu]n
+! SFX y 0 ry [^aiou]n
+! SFX y 0 ry [^ehmstn]
+ SFX O Y 12
+! SFX O 0 l a
+! SFX O e al [^bcgv]e
+! SFX O e ial [bcgv]e
+! SFX O 0 ial [bcrx]
+! SFX O um al um
+! SFX O 0 al [^u]m
+! SFX O y al ty
+! SFX O y ial [^t]y
+! SFX O 0 ual [px]t
+! SFX O 0 tal [iu]t
+! SFX O 0 al [^ipux]t
+! SFX O 0 al [^aebcrtxmy]
+ SFX o Y 12
+! SFZ o 0 lly a
+! SFX o e ally [^bcgv]e
+! SFX o e ially [bcgv]e
+! SFX o 0 ially [bcrx]
+! SFX o um ally um
+! SFX o 0 ally [^u]m
+! SFX o y ally ty
+! SFX o y ially [^t]y
+! SFX o 0 ually [px]t
+! SFX o 0 tally [iu]t
+! SFX o 0 ally [^ipux]t
+! SFX o 0 ally [^aebcrtxmy]
+ SFX W Y 21
+! SFX W ce tific ce
+! SFX W e atic me
+! SFX W se tic se
+! SFX W le ic ble
+! SFX W e ic [^b]le
+! SFX W e ic [^clms]e
+! SFX W 0 lic [ay]l
+! SFX W 0 ic [^ay]l
+! SFX W us ic us
+! SFX W 0 tic [^u]s
+! SFX W er ric er
+! SFX W 0 ic [^e]r
+! SFX W 0 atic [aeiou]m
+! SFX W 0 ic [^aeiou]m
+! SFX W 0 tic ma
+! SFX W a ic [^m]a
+! SFX W y etic thy
+! SFX W y ic [^t]hy
+! SFX W y tic sy
+! SFX W y ic [^hs]y
+! SFX W 0 ic [^aelmrsy]
+ SFX w Y 9
+! SFX w e ical e
+! SFX w er rical er
+! SFX w 0 ical [^e]r
+! SFX w 0 atical [aeiou]m
+! SFX w 0 ical [^aeiou]m
+! SFX w 0 tical ma
+! SFX w a ical [^m]a
+! SFX w y ical y
+! SFX w 0 ical [^aemry]
+ SFX 1 Y 9
+! SFX 1 e ically e
+! SFX 1 er rically er
+! SFX 1 0 ically [^e]r
+! SFX 1 0 atically [aeiou]m
+! SFX 1 0 ically [^aeiou]m
+! SFX 1 0 tically ma
+! SFX 1 a ically [^m]a
+! SFX 1 y ically y
+! SFX 1 0 ically [^aemry]
+ SFX 3 Y 21
+! SFX 3 e ist [^aceiou]e
+! SFX 3 ce tist ce
+! SFX 3 0 ist [aeiou]e
+! SFX 3 y ist [^aeioubp]y
+! SFX 3 0 ist [aeioubp]y
+! SFX 3 o ist o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ists [^aceiou]e
+! SFX 3 ce tists ce
+! SFX 3 0 ists [aeiou]e
+! SFX 3 y ists [^aeioubp]y
+! SFX 3 0 ists [aeioubp]y
+! SFX 3 o ists o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ist's [^aceiou]e
+! SFX 3 ce tist's ce
+! SFX 3 0 ist's [aeiou]e
+! SFX 3 y ist's [^aeioubp]y
+! SFX 3 0 ist's [aeioubp]y
+! SFX 3 o ist's o
+! SFX 3 0 ist's [^eoy]
+\ No newline at end of file
+--- 505,1190 ----
+ SFX R Y 72
+! SFX R 0 r e
+! SFX R 0 rs e
+! SFX R 0 ber [^aeio][aeiou]b
+! SFX R 0 bers [^aeio][aeiou]b
+! SFX R 0 ker [^aeio][aeiou]c
+! SFX R 0 kers [^aeio][aeiou]c
+! SFX R 0 der [^aeio][aeiou]d
+! SFX R 0 ders [^aeio][aeiou]d
+! SFX R 0 fer [^aeio][aeiou]f
+! SFX R 0 fers [^aeio][aeiou]f
+! SFX R 0 ger [^aeio][aeiou]g
+! SFX R 0 gers [^aeio][aeiou]g
+! SFX R 0 ker [^aeio][aeiou]k
+! SFX R 0 kers [^aeio][aeiou]k
+! SFX R 0 ler [^aeio][eiou]l
+! SFX R 0 er [aeio][eiou]l
+! SFX R 0 ler [^aeo]al
+! SFX R 0 er [aeo]al
+! SFX R 0 lers [^aeio][eiou]l
+! SFX R 0 ers [aeio][eiou]l
+! SFX R 0 lers [^aeo]al
+! SFX R 0 ers [aeo]al
+! SFX R 0 mer [^aeio][aeiou]m
+! SFX R 0 mers [^aeio][aeiou]m
+! SFX R 0 ner [^aeio][aeiou]n
+! SFX R 0 ners [^aeio][aeiou]n
+! SFX R 0 per [^aeio][aeiou]p
+! SFX R 0 pers [^aeio][aeiou]p
+! SFX R 0 rer [^aeio][aeiou]r
+! SFX R 0 rers [^aeio][aeiou]r
+! SFX R 0 ser [^aeio][aeiou]s
+! SFX R 0 sers [^aeio][aeiou]s
+! SFX R 0 ter [^aeio][aeiou]t
+! SFX R 0 ters [^aeio][aeiou]t
+! SFX R 0 ver [^aeio][aeiou]v
+! SFX R 0 vers [^aeio][aeiou]v
+! SFX R 0 zer [^aeio][aeiou]z
+! SFX R 0 zers [^aeio][aeiou]z
+! SFX R y ier [^aeiou]y
+! SFX R y iers [^aeiou]y
+! SFX R 0 er [aeiou]y
+! SFX R 0 ers [aeiou]y
+! SFX R 0 er [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 ers [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 ers [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er [^ebcdfgklmnprstvyz]
+! SFX R 0 ers [^ebcdfgklmnprstvyz]
+! SFX R 0 r's e
+! SFX R 0 ber's [^aeio][aeiou]b
+! SFX R 0 ker's [^aeio][aeiou]c
+! SFX R 0 der's [^aeio][aeiou]d
+! SFX R 0 fer's [^aeio][aeiou]f
+! SFX R 0 ger's [^aeio][aeiou]g
+! SFX R 0 ker's [^aeio][aeiou]k
+! SFX R 0 ler's [^aeio][eiou]l
+! SFX R 0 er's [aeio][eiou]l
+! SFX R 0 ler's [^aeo]al
+! SFX R 0 er's [aeo]al
+! SFX R 0 mer's [^aeio][aeiou]m
+! SFX R 0 ner's [^aeio][aeiou]n
+! SFX R 0 per's [^aeio][aeiou]p
+! SFX R 0 rer's [^aeio][aeiou]r
+! SFX R 0 ser's [^aeio][aeiou]s
+! SFX R 0 ter's [^aeio][aeiou]t
+! SFX R 0 ver's [^aeio][aeiou]v
+! SFX R 0 zer's [^aeio][aeiou]z
+! SFX R y ier's [^aeiou]y
+! SFX R 0 er's [aeiou]y
+! SFX R 0 er's [aeio][aeiou][bcdfgkmnprstvz]
+! SFX R 0 er's [^aeiou][bcdfgklmnprstvz]
+! SFX R 0 er's [^ebcdfgklmnprstvyz]
+ SFX r Y 24
+! SFX r 0 r e
+! SFX r 0 ler [^aeio][aeiou]l
+! SFX r 0 ker [^aeio][aeiou]c
+! SFX r y ier [^aeiou]y
+! SFX r 0 er [aeiou]y
+! SFX r 0 er [aeio][aeiou][cl]
+! SFX r 0 er [^aeiou][cl]
+! SFX r 0 er [^ecly]
+! SFX r 0 rs e
+! SFX r 0 lers [^aeio][aeiou]l
+! SFX r 0 kers [^aeio][aeiou]c
+! SFX r y iers [^aeiou]y
+! SFX r 0 ers [aeiou]y
+! SFX r 0 ers [aeio][aeiou][cl]
+! SFX r 0 ers [^aeiou][cl]
+! SFX r 0 ers [^ecly]
+! SFX r 0 r's e
+! SFX r 0 ler's [^aeio][aeiou]l
+! SFX r 0 ker's [^aeio][aeiou]c
+! SFX r y ier's [^aeiou]y
+! SFX r 0 er's [aeiou]y
+! SFX r 0 er's [aeio][aeiou][cl]
+! SFX r 0 er's [^aeiou][cl]
+! SFX r 0 er's [^ecly]
+ SFX S Y 9
+! SFX S y ies [^aeiou]y
+! SFX S 0 s [aeiou]y
+! SFX S 0 es [sxz]
+! SFX S 0 es [cs]h
+! SFX S 0 s [^cs]h
+! SFX S 0 s [ae]u
+! SFX S 0 x [ae]u
+! SFX S 0 s [^ae]u
+ SFX S 0 s [^hsuxyz]
+ SFX P Y 6
+! SFX P y iness [^aeiou]y
+! SFX P 0 ness [aeiou]y
+! SFX P 0 ness [^y]
+! SFX P y iness's [^aeiou]y
+! SFX P 0 ness's [aeiou]y
+! SFX P 0 ness's [^y]
+ SFX m Y 20
+! SFX m 0 sman [bdknmt]
+! SFX m 0 sman [aeiou][bdklmnt]e
+! SFX m 0 man [^aeiou][bdklmnt]e
+! SFX m 0 man [^bdklmnt]e
+! SFX m 0 man [^bdeknmt]
+! SFX m 0 smen [bdknmt]
+! SFX m 0 smen [aeiou][bdklmnt]e
+! SFX m 0 men [^aeiou][bdklmnt]e
+! SFX m 0 men [^bdklmnt]e
+! SFX m 0 men [^bdeknmt]
+! SFX m 0 sman's [bdknmt]
+! SFX m 0 sman's [aeiou][bdklmnt]e
+! SFX m 0 man's [^aeiou][bdklmnt]e
+! SFX m 0 man's [^bdklmnt]e
+! SFX m 0 man's [^bdeknmt]
+! SFX m 0 smen's [bdknmt]
+! SFX m 0 smen's [aeiou][bdklmnt]e
+! SFX m 0 men's [^aeiou][bdklmnt]e
+! SFX m 0 men's [^bdklmnt]e
+! SFX m 0 men's [^bdeknmt]
+ SFX 5 Y 15
+! SFX 5 0 swoman [bdknmt]
+! SFX 5 0 swoman [aeiou][bdklmnt]e
+! SFX 5 0 woman [^aeiou][bdklmnt]e
+! SFX 5 0 woman [^bdklmnt]e
+! SFX 5 0 woman [^bdeknmt]
+! SFX 5 0 swomen [bdknmt]
+! SFX 5 0 swomen [aeiou][bdklmnt]e
+! SFX 5 0 women [^aeiou][bdklmnt]e
+! SFX 5 0 women [^bdklmnt]e
+! SFX 5 0 women [^bdeknmt]
+! SFX 5 0 swoman's [bdknmt]
+! SFX 5 0 swoman's [aeiou][bdklmnt]e
+! SFX 5 0 woman's [^aeiou][bdklmnt]e
+! SFX 5 0 woman's [^bdklmnt]e
+! SFX 5 0 woman's [^bdeknmt]
+ SFX 6 Y 3
+! SFX 6 y iful [^aeiou]y
+! SFX 6 0 ful [aeiou]y
+! SFX 6 0 ful [^y]
+ SFX j Y 3
+! SFX j y ifully [^aeiou]y
+! SFX j 0 fully [aeiou]y
+! SFX j 0 fully [^y]
+ SFX p Y 5
+! SFX p y iless [^aeiou]y
+! SFX p 0 less [aeiou]y
+! SFX p 0 ess ll
+! SFX p 0 less [^l]l
+! SFX p 0 less [^ly]
+ SFX Q Y 88
+! SFX Q 0 tise a
+! SFX Q e ise [^l]e
+! SFX Q le ilise [^aeiou]le
+! SFX Q e ise [aeiou]le
+! SFX Q um ise um
+! SFX Q 0 ise [^u]m
+! SFX Q s se is
+! SFX Q 0 ise [^i]s
+! SFX Q y ise [^aeiou]y
+! SFX Q 0 ise [aeiou]y
+! SFX Q 0 ise [^aemsy]
+! SFX Q 0 tises a
+! SFX Q e ises [^l]e
+! SFX Q le ilises [^aeiou]le
+! SFX Q e ises [aeiou]le
+! SFX Q um ises um
+! SFX Q 0 ises [^u]m
+! SFX Q s ses is
+! SFX Q 0 ises [^i]s
+! SFX Q y ises [^aeiou]y
+! SFX Q 0 ises [aeiou]y
+! SFX Q 0 ises [^aemsy]
+! SFX Q 0 tised a
+! SFX Q e ised [^l]e
+! SFX Q le ilised [^aeiou]le
+! SFX Q e ised [aeiou]le
+! SFX Q um ised um
+! SFX Q 0 ised [^u]m
+! SFX Q s sed is
+! SFX Q 0 ised [^i]s
+! SFX Q y ised [^aeiou]y
+! SFX Q 0 ised [aeiou]y
+! SFX Q 0 ised [^aemsy]
+! SFX Q 0 tising a
+! SFX Q e ising [^l]e
+! SFX Q le ilising [^aeiou]le
+! SFX Q e ising [aeiou]le
+! SFX Q um ising um
+! SFX Q 0 ising [^u]m
+! SFX Q s sing is
+! SFX Q 0 ising [^i]s
+! SFX Q y ising [^aeiou]y
+! SFX Q 0 ising [aeiou]y
+! SFX Q 0 ising [^aemsy]
+! SFX Q 0 tize a
+! SFX Q e ize [^l]e
+! SFX Q le ilize [^aeiou]le
+! SFX Q e ize [aeiou]le
+! SFX Q um ize um
+! SFX Q 0 ize [^u]m
+! SFX Q s ze is
+! SFX Q 0 ize [^i]s
+! SFX Q y ize [^aeiou]y
+! SFX Q 0 ize [aeiou]y
+! SFX Q 0 ize [^aemsy]
+! SFX Q 0 tizes a
+! SFX Q e izes [^l]e
+! SFX Q le ilizes [^aeiou]le
+! SFX Q e izes [aeiou]le
+! SFX Q um izes um
+! SFX Q 0 izes [^u]m
+! SFX Q s zes is
+! SFX Q 0 izes [^i]s
+! SFX Q y izes [^aeiou]y
+! SFX Q 0 izes [aeiou]y
+! SFX Q 0 izes [^aemsy]
+! SFX Q 0 tized a
+! SFX Q e ized [^l]e
+! SFX Q le ilized [^aeiou]le
+! SFX Q e ized [aeiou]le
+! SFX Q um ized um
+! SFX Q 0 ized [^u]m
+! SFX Q s zed is
+! SFX Q 0 ized [^i]s
+! SFX Q y ized [^aeiou]y
+! SFX Q 0 ized [aeiou]y
+! SFX Q 0 ized [^aemsy]
+! SFX Q 0 tizing a
+! SFX Q e izing [^l]e
+! SFX Q le ilizing [^aeiou]le
+! SFX Q e izing [aeiou]le
+! SFX Q um izing um
+! SFX Q 0 izing [^u]m
+! SFX Q s zing is
+! SFX Q 0 izing [^i]s
+! SFX Q y izing [^aeiou]y
+! SFX Q 0 izing [aeiou]y
+! SFX Q 0 izing [^aemsy]
+ SFX q Y 44
+! SFX q 0 tisation a
+! SFX q e isation [^l]e
+! SFX q le ilisation [^aeiou]le
+! SFX q e isation [aeiou]le
+! SFX q um isation um
+! SFX q 0 isation [^u]m
+! SFX q s sation is
+! SFX q 0 isation [^i]s
+! SFX q y isation [^aeiou]y
+! SFX q 0 isation [aeiou]y
+! SFX q 0 isation [^aemsy]
+! SFX q 0 tisations a
+! SFX q e isations [^l]e
+! SFX q le ilisations [^aeiou]le
+! SFX q e isations [aeiou]le
+! SFX q um isations um
+! SFX q 0 isations [^u]m
+! SFX q s sations is
+! SFX q 0 isations [^i]s
+! SFX q y isations [^aeiou]y
+! SFX q 0 isations [aeiou]y
+! SFX q 0 isations [^aemsy]
+! SFX q 0 tization a
+! SFX q e ization [^l]e
+! SFX q le ilization [^aeiou]le
+! SFX q e ization [aeiou]le
+! SFX q um ization um
+! SFX q 0 ization [^u]m
+! SFX q s zation is
+! SFX q 0 ization [^i]s
+! SFX q y ization [^aeiou]y
+! SFX q 0 ization [aeiou]y
+! SFX q 0 ization [^aemsy]
+! SFX q 0 tizations a
+! SFX q e izations [^l]e
+! SFX q le ilizations [^aeiou]le
+! SFX q e izations [aeiou]le
+! SFX q um izations um
+! SFX q 0 izations [^u]m
+! SFX q s zations is
+! SFX q 0 izations [^i]s
+! SFX q y izations [^aeiou]y
+! SFX q 0 izations [aeiou]y
+! SFX q 0 izations [^aemsy]
+ SFX s Y 66
+! SFX s 0 tiser a
+! SFX s e iser [^l]e
+! SFX s le iliser [^aeiou]le
+! SFX s e iser [aeiou]le
+! SFX s um iser um
+! SFX s 0 iser [^u]m
+! SFX s s ser is
+! SFX s 0 iser [^i]s
+! SFX s y iser [^aeiou]y
+! SFX s 0 iser [aeiou]y
+! SFX s 0 iser [^aemsy]
+! SFX s 0 tisers a
+! SFX s e isers [^l]e
+! SFX s le ilisers [^aeiou]le
+! SFX s e isers [aeiou]le
+! SFX s um isers um
+! SFX s 0 isers [^u]m
+! SFX s s sers is
+! SFX s 0 isers [^i]s
+! SFX s y isers [^aeiou]y
+! SFX s 0 isers [aeiou]y
+! SFX s 0 isers [^aemsy]
+! SFX s 0 tiser's a
+! SFX s e iser's [^l]e
+! SFX s le iliser's [^aeiou]le
+! SFX s e iser's [aeiou]le
+! SFX s um iser's um
+! SFX s 0 iser's [^u]m
+! SFX s s ser's is
+! SFX s 0 iser's [^i]s
+! SFX s y iser's [^aeiou]y
+! SFX s 0 iser's [aeiou]y
+! SFX s 0 iser's [^aemsy]
+! SFX s 0 tizer a
+! SFX s e izer [^l]e
+! SFX s le ilizer [^aeiou]le
+! SFX s e izer [aeiou]le
+! SFX s um izer um
+! SFX s 0 izer [^u]m
+! SFX s s zer is
+! SFX s 0 izer [^i]s
+! SFX s y izer [^aeiou]y
+! SFX s 0 izer [aeiou]y
+! SFX s 0 izer [^aemsy]
+! SFX s 0 tizers a
+! SFX s e izers [^l]e
+! SFX s le ilizers [^aeiou]le
+! SFX s e izers [aeiou]le
+! SFX s um izers um
+! SFX s 0 izers [^u]m
+! SFX s s zers is
+! SFX s 0 izers [^i]s
+! SFX s y izers [^aeiou]y
+! SFX s 0 izers [aeiou]y
+! SFX s 0 izers [^aemsy]
+! SFX s 0 tizer's a
+! SFX s e izer's [^l]e
+! SFX s le ilizer's [^aeiou]le
+! SFX s e izer's [aeiou]le
+! SFX s um izer's um
+! SFX s 0 izer's [^u]m
+! SFX s s zer's is
+! SFX s 0 izer's [^i]s
+! SFX s y izer's [^aeiou]y
+! SFX s 0 izer's [aeiou]y
+! SFX s 0 izer's [^aemsy]
+ SFX t Y 44
+! SFX t 0 tisable a
+! SFX t e isable [^l]e
+! SFX t le ilisable [^aeiou]le
+! SFX t e isable [aeiou]le
+! SFX t um isable um
+! SFX t 0 isable [^u]m
+! SFX t s sable is
+! SFX t 0 isable [^i]s
+! SFX t y isable [^aeiou]y
+! SFX t 0 isable [aeiou]y
+! SFX t 0 isable [^aemsy]
+! SFX t 0 tizable a
+! SFX t e izable [^l]e
+! SFX t le ilizable [^aeiou]le
+! SFX t e izable [aeiou]le
+! SFX t um izable um
+! SFX t 0 izable [^u]m
+! SFX t s zable is
+! SFX t 0 izable [^i]s
+! SFX t y izable [^aeiou]y
+! SFX t 0 izable [aeiou]y
+! SFX t 0 izable [^aemsy]
+! SFX t 0 tisability a
+! SFX t e isability [^l]e
+! SFX t le ilisability [^aeiou]le
+! SFX t e isability [aeiou]le
+! SFX t um isability um
+! SFX t 0 isability [^u]m
+! SFX t s sability is
+! SFX t 0 isability [^i]s
+! SFX t y isability [^aeiou]y
+! SFX t 0 isability [aeiou]y
+! SFX t 0 isability [^aemsy]
+! SFX t 0 tizability a
+! SFX t e izability [^l]e
+! SFX t le ilizability [^aeiou]le
+! SFX t e izability [aeiou]le
+! SFX t um izability um
+! SFX t 0 izability [^u]m
+! SFX t s zability is
+! SFX t 0 izability [^i]s
+! SFX t y izability [^aeiou]y
+! SFX t 0 izability [aeiou]y
+! SFX t 0 izability [^aemsy]
+ SFX M Y 1
+! SFX M 0 's .
+ SFX B Y 48
+! SFX B e able [^acegilotu]e
+! SFX B 0 able [acegilou]e
+! SFX B te ble ate
+! SFX B e able [^a]te
+! SFX B 0 bable [^aeio][aeiou]b
+! SFX B 0 kable [^aeio][aeiou]c
+! SFX B 0 dable [^aeio][aeiou]d
+! SFX B 0 fable [^aeio][aeiou]f
+! SFX B 0 gable [^aeio][aeiou]g
+! SFX B 0 kable [^aeio][aeiou]k
+! SFX B 0 lable [^aeio][aeiou]l
+! SFX B 0 mable [^aeio][aeiou]m
+! SFX B 0 nable [^aeio][aeiou]n
+! SFX B 0 pable [^aeio][aeiou]p
+! SFX B 0 rable [^aeio][aeiou]r
+! SFX B 0 sable [^aeio][aeiou]s
+! SFX B 0 table [^aeio][aeiou]t
+! SFX B 0 vable [^aeio][aeiou]v
+! SFX B 0 zable [^aeio][aeiou]z
+! SFX B 0 able [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 able [^aeiou][bcdfgklmnprstvz]
+! SFX B y iable [^aeiou]y
+! SFX B 0 able [aeiou]y
+! SFX B 0 able [^ebcdfgklmnprstvzy]
+! SFX B e ability [^acegilotu]e
+! SFX B 0 ability [acegilou]e
+! SFX B te bility ate
+! SFX B e ability [^a]te
+! SFX B 0 bability [^aeio][aeiou]b
+! SFX B 0 kability [^aeio][aeiou]c
+! SFX B 0 dability [^aeio][aeiou]d
+! SFX B 0 fability [^aeio][aeiou]f
+! SFX B 0 gability [^aeio][aeiou]g
+! SFX B 0 kability [^aeio][aeiou]k
+! SFX B 0 lability [^aeio][aeiou]l
+! SFX B 0 mability [^aeio][aeiou]m
+! SFX B 0 nability [^aeio][aeiou]n
+! SFX B 0 pability [^aeio][aeiou]p
+! SFX B 0 rability [^aeio][aeiou]r
+! SFX B 0 sability [^aeio][aeiou]s
+! SFX B 0 tability [^aeio][aeiou]t
+! SFX B 0 vability [^aeio][aeiou]v
+! SFX B 0 zability [^aeio][aeiou]z
+! SFX B 0 ability [aeio][aeiou][bcdfgklmnprstvz]
+! SFX B 0 ability [^aeiou][bcdfgklmnprstvz]
+! SFX B y iability [^aeiou]y
+! SFX B 0 ability [aeiou]y
+! SFX B 0 ability [^ebcdfgklmnprstvzy]
+ SFX 7 Y 9
+! SFX 7 e able [acegilou]e
+! SFX 7 0 able [^acegilou]e
+! SFX 7 0 kable [^aeio][aeiou]c
+! SFX 7 0 lable [^aeio][aeiou]l
+! SFX 7 0 able [aeio][aeiou][cl]
+! SFX 7 0 able [^aeiou][cl]
+! SFX 7 y iable [^aeiou]y
+! SFX 7 0 able [aeiou]y
+! SFX 7 0 able [^cely]
+ SFX g Y 9
+! SFX g e ability [^acegilou]e
+! SFX g 0 ability [acegilou]e
+! SFX g 0 kability [^aeio][aeiou]c
+! SFX g 0 lability [^aeio][aeiou]l
+! SFX g 0 ability [aeio][aeiou][cl]
+! SFX g 0 ability [^aeiou][cl]
+! SFX g y iability [^aeiou]y
+! SFX g 0 ability [aeiou]y
+! SFX g 0 ability [^cely]
+ SFX l Y 9
+! SFX l e ably [^acegilou]e
+! SFX l 0 ably [acegilou]e
+! SFX l 0 kably [^aeio][aeiou]c
+! SFX l 0 lably [^aeio][aeiou]l
+! SFX l 0 ably [aeio][aeiou][cl]
+! SFX l 0 ably [^aeiou][cl]
+! SFX l y iably [^aeiou]y
+! SFX l 0 ably [aeiou]y
+! SFX l 0 ably [^cely]
+ SFX b Y 3
+! SFX b e ible [^aeiou]e
+! SFX b 0 ible [aeiou]e
+! SFX b 0 ible [^e]
+ SFX L Y 12
+! SFX L 0 ament m
+! SFX L y iment [^aeiou]y
+! SFX L 0 ment [aeiou]y
+! SFX L 0 ment [^my]
+! SFX L 0 aments m
+! SFX L y iments [^aeiou]y
+! SFX L 0 ments [aeiou]y
+! SFX L 0 ments [^my]
+! SFX L 0 ament's m
+! SFX L y iment's [^aeiou]y
+! SFX L 0 ment's [aeiou]y
+! SFX L 0 ment's [^my]
+ SFX Z Y 22
+! SFX Z e y [^aeiouy]e
+! SFX Z 0 y [aeiouy]e
+! SFX Z 0 ey [aiouy]
+! SFX Z 0 by [^aeio][aeiou]b
+! SFX Z 0 ky [^aeio][aeiou]c
+! SFX Z 0 dy [^aeio][aeiou]d
+! SFX Z 0 fy [^aeio][aeiou]f
+! SFX Z 0 gy [^aeio][aeiou]g
+! SFX Z 0 ky [^aeio][aeiou]k
+! SFX Z 0 ly [^aeio][aeiou]l
+! SFX Z 0 my [^aeio][aeiou]m
+! SFX Z 0 ny [^aeio][aiou]n
+! SFX Z 0 py [^aeio][aeiou]p
+! SFX Z 0 ry [^aeio][aiou]r
+! SFX Z 0 sy [^aeio][aeiou]s
+! SFX Z 0 ty [^aeio][aiou]t
+! SFX Z 0 vy [^aeio][aeiou]v
+! SFX Z 0 zy [^aeio][aeiou]z
+! SFX Z 0 y [^aeio]e[nrt]
+! SFX Z 0 y [aeio][aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aeiou][bcdfgklmnprstvz]
+! SFX Z 0 y [^aebcdfgiklmnoprstuvyz]
+ SFX 2 Y 21
+! SFX 2 e iness [^aeiouy]e
+! SFX 2 0 iness [aeiouy]e
+! SFX 2 0 biness [^aeio][aeiou]b
+! SFX 2 0 kiness [^aeio][aeiou]c
+! SFX 2 0 diness [^aeio][aeiou]d
+! SFX 2 0 finess [^aeio][aeiou]f
+! SFX 2 0 giness [^aeio][aeiou]g
+! SFX 2 0 kiness [^aeio][aeiou]k
+! SFX 2 0 liness [^aeio][aeiou]l
+! SFX 2 0 miness [^aeio][aeiou]m
+! SFX 2 0 niness [^aeio][aiou]n
+! SFX 2 0 piness [^aeio][aeiou]p
+! SFX 2 0 riness [^aeio][aiou]r
+! SFX 2 0 siness [^aeio][aeiou]s
+! SFX 2 0 tiness [^aeio][aiou]t
+! SFX 2 0 viness [^aeio][aeiou]v
+! SFX 2 0 ziness [^aeio][aeiou]z
+! SFX 2 0 iness [^aeio]e[nrt]
+! SFX 2 0 iness [aeio][aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^aeiou][bcdfgklmnprstvz]
+! SFX 2 0 iness [^ebcdfgklmnprstvz]
+ SFX z Y 24
+! SFX z e ily [^aeiouy]e
+! SFX z 0 ily [aeiouy]e
+! SFX z 0 ily [aiou]y
+! SFX z ey ily ey
+! SFX z y ily [^aeiou]y
+! SFX z 0 bily [^aeio][aeiou]b
+! SFX z 0 kily [^aeio][aeiou]c
+! SFX z 0 dily [^aeio][aeiou]d
+! SFX z 0 fily [^aeio][aeiou]f
+! SFX z 0 gily [^aeio][aeiou]g
+! SFX z 0 kily [^aeio][aeiou]k
+! SFX z 0 lily [^aeio][aeiou]l
+! SFX z 0 mily [^aeio][aeiou]m
+! SFX z 0 nily [^aeio][aiou]n
+! SFX z 0 pily [^aeio][aeiou]p
+! SFX z 0 rily [^aeio][aiou]r
+! SFX z 0 sily [^aeio][aeiou]s
+! SFX z 0 tily [^aeio][aiou]t
+! SFX z 0 vily [^aeio][aeiou]v
+! SFX z 0 zily [^aeio][aeiou]z
+! SFX z 0 ily [^aeio]e[nrt]
+! SFX z 0 ily [aeio][aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^aeiou][bcdfgklmnprstvyz]
+! SFX z 0 ily [^ebcdfgklmnprstvyz]
+ SFX y Y 15
+! SFX y e ory te
+! SFX y e atory [mr]e
+! SFX y e ary se
+! SFX y 0 ry [^mrst]e
+! SFX y 0 ory [^aeous]t
+! SFX y 0 ry [aeous]t
+! SFX y 0 ery h
+! SFX y 0 atory [^i]m
+! SFX y im matory im
+! SFX y 0 ory s
+! SFX y 0 ary ion
+! SFX y 0 ry [^i]on
+! SFX y 0 nery [aiu]n
+! SFX y 0 ry [^aiou]n
+! SFX y 0 ry [^ehmstn]
+ SFX O Y 12
+! SFX O 0 l a
+! SFX O e al [^bcgv]e
+! SFX O e ial [bcgv]e
+! SFX O 0 ial [bcrx]
+! SFX O um al um
+! SFX O 0 al [^u]m
+! SFX O y al ty
+! SFX O y ial [^t]y
+! SFX O 0 ual [px]t
+! SFX O 0 tal [iu]t
+! SFX O 0 al [^ipux]t
+! SFX O 0 al [^aebcrtxmy]
+ SFX o Y 12
+! SFX o 0 lly a
+! SFX o e ally [^bcgv]e
+! SFX o e ially [bcgv]e
+! SFX o 0 ially [bcrx]
+! SFX o um ally um
+! SFX o 0 ally [^u]m
+! SFX o y ally ty
+! SFX o y ially [^t]y
+! SFX o 0 ually [px]t
+! SFX o 0 tally [iu]t
+! SFX o 0 ally [^ipux]t
+! SFX o 0 ally [^aebcrtxmy]
+ SFX W Y 21
+! SFX W ce tific ce
+! SFX W e atic me
+! SFX W se tic se
+! SFX W le ic ble
+! SFX W e ic [^b]le
+! SFX W e ic [^clms]e
+! SFX W 0 lic [ay]l
+! SFX W 0 ic [^ay]l
+! SFX W us ic us
+! SFX W 0 tic [^u]s
+! SFX W er ric er
+! SFX W 0 ic [^e]r
+! SFX W 0 atic [aeiou]m
+! SFX W 0 ic [^aeiou]m
+! SFX W 0 tic ma
+! SFX W a ic [^m]a
+! SFX W y etic thy
+! SFX W y ic [^t]hy
+! SFX W y tic sy
+! SFX W y ic [^hs]y
+! SFX W 0 ic [^aelmrsy]
+ SFX w Y 9
+! SFX w e ical e
+! SFX w er rical er
+! SFX w 0 ical [^e]r
+! SFX w 0 atical [aeiou]m
+! SFX w 0 ical [^aeiou]m
+! SFX w 0 tical ma
+! SFX w a ical [^m]a
+! SFX w y ical y
+! SFX w 0 ical [^aemry]
+ SFX 1 Y 9
+! SFX 1 e ically e
+! SFX 1 er rically er
+! SFX 1 0 ically [^e]r
+! SFX 1 0 atically [aeiou]m
+! SFX 1 0 ically [^aeiou]m
+! SFX 1 0 tically ma
+! SFX 1 a ically [^m]a
+! SFX 1 y ically y
+! SFX 1 0 ically [^aemry]
+ SFX 3 Y 21
+! SFX 3 e ist [^aceiou]e
+! SFX 3 ce tist ce
+! SFX 3 0 ist [aeiou]e
+! SFX 3 y ist [^aeioubp]y
+! SFX 3 0 ist [aeioubp]y
+! SFX 3 o ist o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ists [^aceiou]e
+! SFX 3 ce tists ce
+! SFX 3 0 ists [aeiou]e
+! SFX 3 y ists [^aeioubp]y
+! SFX 3 0 ists [aeioubp]y
+! SFX 3 o ists o
+! SFX 3 0 ists [^eoy]
+! SFX 3 e ist's [^aceiou]e
+! SFX 3 ce tist's ce
+! SFX 3 0 ist's [aeiou]e
+! SFX 3 y ist's [^aeioubp]y
+! SFX 3 0 ist's [aeioubp]y
+! SFX 3 o ist's o
+! SFX 3 0 ist's [^eoy]
+*** en_NZ.orig.dic Fri Apr 15 13:20:36 2005
+--- en_NZ.dic Sun Apr 17 18:08:55 2005
+***************
+*** 2941,2944 ****
+ B.Sc.
+- bless
+- bible
+ baa/GSD
+--- 2941,2942 ----
+***************
+*** 4974,4975 ****
+--- 4972,4974 ----
+ Brampton/M
++ Bram/M
+ bran/SDGM
+***************
+*** 5707,5709 ****
+ C.Lit.
+! cation/SM
+ Ca/y
+--- 5706,5708 ----
+ C.Lit.
+! cation/MWS
+ Ca/y
+***************
+*** 6450,6452 ****
+ Cathy
+- cation/MW
+ catkin/SM
+--- 6449,6450 ----
+***************
+*** 10153,10155 ****
+ red's
+- dally
+ dab/TSGD
+--- 10151,10152 ----
+***************
+*** 12535,12536 ****
+--- 12532,12534 ----
+ Dutchwomen/M
++ Farsi
+ duteous/Y
+***************
+*** 12542,12544 ****
+ duvet/SM
+- duxes
+ DVD/MS
+--- 12540,12541 ----
+***************
+*** 14531,14534 ****
+ f-stop/S
+- fable
+- fist/MS
+ fa/M
+--- 14528,14529 ----
+***************
+*** 15323,15325 ****
+ fissure/DSMG
+! fist/6GD
+ fistfight/MS
+--- 15318,15320 ----
+ fissure/DSMG
+! fist/6GDMS
+ fistfight/MS
+***************
+*** 16606,16608 ****
+ g's
+- gable
+ gist/MS
+--- 16601,16602 ----
+***************
+*** 16797,16799 ****
+ Garvey
+- Gary/M
+ gas-permeable
+--- 16791,16792 ----
+***************
+*** 18177,18179 ****
+ gyroscope/SWM
+- dish
+ ha
+--- 18170,18171 ----
+***************
+*** 22321,22323 ****
+ K-factor
+- disk/MS
+ kabob's
+--- 22313,22314 ----
+***************
+*** 26396,26398 ****
+ Missy
+! mist/CDRGS
+ mistakable/U
+--- 26387,26389 ----
+ Missy
+! mist/CDRGSM
+ mistakable/U
+***************
+*** 26745,26746 ****
+--- 26736,26738 ----
+ Moog
++ Moolenaar/M
+ moon/MGpDS
+***************
+*** 27018,27020 ****
+ mozzarella/SM
+- MP3
+ mpg
+--- 27010,27011 ----
+***************
+*** 27365,27372 ****
+ N'Djamena
+! native
+ natively
+ nativeness
+- nation/MS
+- national
+- nationally
+ Na/M
+--- 27356,27360 ----
+ N'Djamena
+! native/SP
+ natively
+ nativeness
+ Na/M
+***************
+*** 27507,27509 ****
+ Nathaniel/M
+! nation/M
+ national/sQ3Sq
+--- 27495,27497 ----
+ Nathaniel/M
+! nation/MS
+ national/sQ3Sq
+***************
+*** 27521,27523 ****
+ nationwide
+- native/SP
+ nativity/SM
+--- 27509,27510 ----
+***************
+*** 29852,29857 ****
+ P.O.
+- ply
+- reply
+- imply
+- comply
+ pa/oM
+--- 29839,29840 ----
+***************
+*** 35619,35622 ****
+ singly
+- sable
+- sally/DSG
+ SA
+--- 35602,35603 ----
+***************
+*** 40763,40766 ****
+ T's
+- mist/MS
+- overt
+ Ta
+--- 40744,40745 ----
+***************
+*** 44334,44336 ****
+ Vilnius/M
+! vim/M
+ vinaigrette/MS
+--- 44313,44315 ----
+ Vilnius/M
+! Vim/M
+ vinaigrette/MS
+***************
+*** 45906,45908 ****
+ y'all
+- prey/M
+ yacht/M5SmGD
+--- 45885,45886 ----
+***************
+*** 46198,46200 ****
+ rata/M
+- kaka/M
+ waka/M
+--- 46176,46177 ----
+***************
+*** 46216,46218 ****
+ jandal/MS
+- Swanndri/M
+ hoon/MS
+--- 46193,46194 ----
+***************
+*** 46242,46244 ****
+ Invercargill/M
+- Te
+ Alexandra/M
+--- 46218,46219 ----
+***************
+*** 46261,46263 ****
+ Kawerau/M
+- Kerikeri/M
+ Lyttelton/M
+--- 46236,46237 ----
+***************
+*** 46491,46493 ****
+ Waianakarua
+- Hakatere
+ Swin
+--- 46465,46466 ----
+***************
+*** 46690,46692 ****
+ Omarama/M
+- Wairarapa/M
+ Kilda/M
+--- 46663,46664 ----
+***************
+*** 46711,46713 ****
+ Wellsford/M
+- Akaroa/M
+ Avonhead/M
+--- 46683,46684 ----
+***************
+*** 46920,46922 ****
+ Egmont/M
+- Waitaki/M
+ katipo/M
+--- 46891,46892 ----
+***************
+*** 46956,46958 ****
+ Sunnyside/M
+- Wairau/M
+ Waikoropupu
+--- 46926,46927 ----
+***************
+*** 47141,47142 ****
+ Burkina
+! Faso/M
+\ No newline at end of file
+--- 47110,47111 ----
+ Burkina
+! Faso/M
diff --git a/src/vim.h b/src/vim.h
index f030282..a771aba 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -410,6 +410,10 @@
#include <assert.h>
+#ifdef HAVE_WCTYPE_H
+# include <wctype.h>
+#endif
+
/* ================ end of the header file puzzle =============== */
/*