MikkelHJuul/profaneword

View on GitHub
profanities/database.go

Summary

Maintainability
D
2 days
Test Coverage
package profanities

var edEndings = []*radixWordNode{
    {val: `ed`, word: DEFAULT},
    {val: `'d`, word: DEFAULT | MISSPELL},
    {val: `d`, word: DEFAULT | WEIRD},
}

var ingEndings = []*radixWordNode{
    {val: `ing`, word: DEFAULT},
    {val: `in'`, word: DEFAULT | MISSPELL},
    {val: `'n`, word: DEFAULT | MISSPELL},
    {val: `n`, word: DEFAULT | WEIRD},
    {val: `en`, word: DEFAULT | WEIRD},
}

var ingEdEndings = append(ingEndings, edEndings...)

var erEndings = []*radixWordNode{
    {val: `er`, word: END | EXCL, branches: pluralRelate},
    {val: `'r`, word: END | MISSPELL | EXCL, branches: pluralRelate},
    {val: `r`, word: END | WEIRD | EXCL, branches: pluralRelate},
}

var ingEdNode = &radixWordNode{branches: ingEdEndings}

var ingEdErEndings = append(ingEdEndings, erEndings...)

var ingNode = &radixWordNode{branches: ingEndings}
var erNode = &radixWordNode{branches: erEndings}
var edNode = &radixWordNode{branches: edEndings}
var lyEndings = []*radixWordNode{
    {val: `ly`, word: DEFAULT},
    {val: `li`, word: DEFAULT | WEIRD},
    {val: `lee`, word: DEFAULT | WEIRD},
    {val: `le`, word: DEFAULT | WEIRD},
}
var lyEndingsNode = &radixWordNode{branches: lyEndings}

var pluralNode = &radixWordNode{val: `s`, word: END}
var plural = []*radixWordNode{pluralNode}
var relateNode = &radixWordNode{branches: []*radixWordNode{{val: `'s`, word: START}}}
var relate = []*radixWordNode{relateNode}
var pluralRelate = []*radixWordNode{pluralNode, relateNode, {val: `s'`, word: START}}
var pluralRelateNode = &radixWordNode{branches: pluralRelate}

var fetishNode = &radixWordNode{val: `fetish`, word: DEFAULT | END, branches: []*radixWordNode{
    {val: `ist`, word: END},
    {val: `istic`, word: DEFAULT},
}}

var icallyEndingNode = &radixWordNode{
    val: `ic`, word: DEFAULT, branches: []*radixWordNode{
        {val: `al`, word: DEFAULT, branches: lyEndings},
    }}
var icallyEnding = []*radixWordNode{icallyEndingNode}

// wordData is a non-compacted radix-tree, containing all words
var wordData = [...]*radixWordNode{
    {val: `Christ`, word: END},
    {val: `Good lord`, word: END},
    {val: `Jesus`, word: END, branches: []*radixWordNode{
        {val: ` Christ`, word: END},
    }},
    {val: `Sir Wank-a-Lot`, word: END},
    {val: `ad`, word: END},
    {val: `addict`, word: END, branches: []*radixWordNode{
        {val: `ive`, word: DEFAULT},
    }},
    {val: `adulter`, branches: []*radixWordNode{
        erNode,
        {val: `at`, branches: edEndings}, // adulteration is an impurity in chemical compounds -- not really profane -- too obscure
    }},
    {val: `aggress`, branches: []*radixWordNode{
        {val: `ive`, word: DEFAULT, branches: lyEndings},
        {val: `or`, word: END},
    }},
    {val: `alleged`, word: DEFAULT, branches: lyEndings},
    {val: `anal`, word: DEFAULT | END, branches: []*radixWordNode{
        {val: `-`, branches: []*radixWordNode{
            lyEndingsNode,
            {val: `secret`, word: END, branches: []*radixWordNode{
                {val: `e`, word: END},
                ingEdNode,
            }},
        }},
    }},
    {val: `anus`, word: END},
    {val: `armpit`, word: END, branches: pluralRelate},
    {val: `arrogant`, word: DEFAULT, branches: lyEndings},
    {val: `arse`, word: END, branches: []*radixWordNode{
        {val: `hole`, word: DEFAULT | END | EXCL},
    }},
    {val: `ass`, word: DEFAULT | END, branches: []*radixWordNode{
        {val: `-hat`, word: END},
        {val: `hat`, word: END},
        {val: `hole`, word: DEFAULT | END | EXCL},
        {val: `bang`, word: DEFAULT, branches: ingEdEndings},
    }},
    {val: `assassin`, word: END, branches: []*radixWordNode{
        pluralNode,
        {val: `at`, branches: []*radixWordNode{
            {val: `e`, word: EXCLS},
            ingEdNode,
        }},
    }},
    {val: `auto`, branches: []*radixWordNode{
        {val: `-erotic`, word: DEFAULT},
        {val: `erotic`, word: DEFAULT},
    }},

    {val: `bait`, word: END, branches: ingEdEndings},
    {val: `balls`, word: END | EXCLS, branches: []*radixWordNode{
        {val: `ack`, word: END},
    }},

    {val: `bad`, word: DEFAULT},
    {val: `bad-breath`, word: END, branches: ingEdEndings},
    {val: `badmouth`, word: END, branches: ingEdEndings},
    {val: `ban`, word: END | EXCL, branches: []*radixWordNode{
        {val: `n`, branches: ingEdEndings},
    }},
    {val: `bane`, word: END},
    {val: `banana`, word: END, branches: []*radixWordNode{
        {val: `s`, word: END | EXCL},
    }},
    {val: `bandit`, word: END, branches: pluralRelate},
    {val: `banshee`, word: END, branches: pluralRelate},
    {val: `barf`, word: END, branches: []*radixWordNode{ingNode, erNode}},
    {val: `bastard`, word: END, branches: lyEndings},
    {val: `beater`, word: END, branches: pluralRelate},
    {val: `belittl`, branches: []*radixWordNode{
        {val: `e`, word: DEFAULT},
        ingEdNode,
    }},
    {val: `bellend`, word: END},
    {val: `benign`, word: DEFAULT},
    {val: `benign`, word: DEFAULT},
    {val: `beast`, word: END, branches: []*radixWordNode{
        pluralNode,
        lyEndingsNode,
        {val: `ial`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `big`, word: DEFAULT, branches: lyEndings},
    {val: `bing`, word: DEFAULT, branches: []*radixWordNode{
        {val: `e`, word: DEFAULT},
        ingNode,
    }},
    {val: `bitch`, word: END, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `es`, word: END},
        {val: `-slap`, word: EXCLS | END},
    }},
    {val: `bit`, branches: []*radixWordNode{
        erNode,
        {val: `t`, branches: ingEndings},
        {val: `ten`, word: DEFAULT},
        {val: `e`, word: EXCLS | END, branches: []*radixWordNode{
            {val: `mark`, word: END},
        }},
    }},
    {val: `bland`, word: DEFAULT},
    {val: `blunder`, word: END, branches: ingEdErEndings},
    {val: `blood`, word: END, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT | END, branches: []*radixWordNode{
            {val: ` hell`, word: DEFAULT | EXCL},
        }},
        {val: `i`, branches: edEndings},
    }},
    {val: `bollox`, word: DEFAULT | END},
    {val: `boner`, word: END | EXCL, branches: pluralRelate},
    {val: `boob`, word: END, branches: plural},
    {val: `bor`, branches: []*radixWordNode{
        ingEdNode,
        {val: `e`, word: END},
        {val: `esome`, word: DEFAULT},
        {val: `edom`, word: END},
    }},
    {val: `boss`, word: END, branches: ingEdEndings},
    {val: `breast`, word: END, branches: plural},
    {val: `breast-hugg`, branches: []*radixWordNode{
        ingNode, erNode,
    }},
    {val: `brutal`, word: DEFAULT | EXCL, branches: []*radixWordNode{
        lyEndingsNode,
    }},
    {val: `bugger`, word: END | EXCL},
    {val: `bumpkin`, word: END, branches: plural},
    {val: `butt`, word: END, branches: []*radixWordNode{
        {val: `hole`, word: END | EXCL},
        {val: `ock`, word: END, branches: plural},
        {val: `crack`, word: END, branches: plural},
        {val: `-sex`, word: DEFAULT},
    }},

    {val: `cacophon`, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `etically`, word: DEFAULT},
    }},
    {val: `cake`, word: END},
    {val: `callus`, word: END, branches: ingEdEndings},
    {val: `cancer`, word: END | EXCL, branches: []*radixWordNode{
        {val: `ous`, word: DEFAULT},
    }},
    {val: `catkiller`, word: END, branches: plural},
    {val: `cat-killer`, word: END, branches: plural},
    {val: `cheese-eat`, branches: []*radixWordNode{
        ingNode, erNode,
    }},
    {val: `child`, word: END, branches: []*radixWordNode{
        {val: `ish`, word: DEFAULT},
    }},
    {val: `chipmunk`, word: END},
    {val: `choad`, word: END | EXCL},
    {val: `clamm`, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `i`, branches: lyEndings},
    }},
    {val: `clown`, word: END},
    {val: `clownhugg`, branches: []*radixWordNode{
        ingNode, erNode,
    }},
    {val: `cock`, word: END | EXCLS, branches: []*radixWordNode{
        {val: `old`, word: DEFAULT | END | EXCL},
    }},
    {val: `cuck`, word: END | EXCLS | MISSPELL, branches: pluralRelate},
    {val: `cux`, word: END | EXCLS | MISSPELL},
    {val: `cold`, word: DEFAULT, branches: lyEndings},
    {val: `cold-heart`, branches: edEndings},
    {val: `colicky`, word: DEFAULT},
    {val: `colorless`, word: DEFAULT},
    {val: `colourless`, word: DEFAULT},
    {val: `con`, word: END, branches: []*radixWordNode{
        {val: `-artist`, word: END, branches: pluralRelate},
    }},
    {val: `contriv`, branches: edEndings},
    {val: `copulat`, branches: []*radixWordNode{
        {val: `e`, word: DEFAULT | EXCL},
        ingEdNode,
    }},
    {val: `covetous`, word: DEFAULT, branches: lyEndings},
    {val: `crack`, word: END, branches: []*radixWordNode{
        ingEdNode,
        {val: `er`, word: END},
    }},
    {val: `crikey`, word: EXCLS},
    {val: `crook`, word: END, branches: []*radixWordNode{
        edNode, pluralRelateNode,
    }},
    {val: `cross`, word: DEFAULT},
    {val: `cunning`, word: DEFAULT, branches: lyEndings},
    {val: `cunt`, word: END | EXCL},

    {val: `damn`, word: EXCLS, branches: ingEdEndings},
    {val: `dark`, word: DEFAULT},
    {val: `dastard`, branches: lyEndings},
    {val: `dead`, word: DEFAULT, branches: lyEndings},
    {val: `death`, word: END, branches: lyEndings},
    {val: `debacle`, word: END},
    {val: `decay`, word: END, branches: ingEdEndings},
    {val: `defect`, word: END | EXCL, branches: []*radixWordNode{
        ingEdNode,
        {val: `or`, word: END, branches: pluralRelate},
    }},
    {val: `demon`, word: END, branches: []*radixWordNode{
        icallyEndingNode,
        {val: `iz`, branches: []*radixWordNode{
            {val: `ation`, word: DEFAULT},
            ingEdNode,
        }},
    }},
    {val: `den`, branches: []*radixWordNode{
        {val: `i`, branches: []*radixWordNode{erNode, edNode}},
        {val: `y`, word: DEFAULT | EXCL},
    }},
    {val: `despicable`, word: DEFAULT},
    {val: `despis`, branches: ingEdEndings},
    {val: `destroy`, word: DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `dick`, word: END, branches: []*radixWordNode{
        {val: `head`, word: END, branches: pluralRelate},
        pluralRelateNode,
    }},
    {val: `dix`, word: END | MISSPELL},
    {val: `dildo`, word: END, branches: plural},
    {val: `dim`, word: DEFAULT, branches: []*radixWordNode{
        {val: `wit`, word: END, branches: []*radixWordNode{
            pluralRelateNode,
            {val: `t`, branches: edEndings},
        }},
    }},
    {val: `dip-shit`, word: END | DEFAULT | EXCL},
    {val: `dirty`, word: DEFAULT}, // branching
    {val: `disregard`, word: EXCL, branches: ingEdEndings},
    {val: `dissonan`, branches: []*radixWordNode{
        {val: `t`, word: DEFAULT},
        {val: `ce`, word: DEFAULT},
    }},
    {val: `dog`, word: END, branches: pluralRelate},
    {val: `dominat`, branches: ingEdEndings},
    {val: `dong`, word: END, branches: plural},
    {val: `dung`, word: END},
    {val: `donkey`, word: END, branches: plural},
    {val: `dork`, word: END, branches: []*radixWordNode{
        pluralNode,
        {val: `y`, word: DEFAULT},
    }},
    {val: `douche`, word: END, branches: []*radixWordNode{
        pluralRelateNode,
        {val: `-bag`, word: END, branches: pluralRelate},
    }},
    {val: `dread`, word: END | DEFAULT, branches: ingEdEndings},
    {val: `drug-dealer`, word: END},
    {val: `drug`, branches: []*radixWordNode{
        pluralNode,
        {val: `g`, branches: ingEdEndings},
    }},
    {val: `drunk`, word: DEFAULT, branches: []*radixWordNode{
        {val: `en`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `dull`, word: DEFAULT},
    {val: `dwar`, branches: []*radixWordNode{
        {val: `f`, word: END, branches: ingEdEndings},
        {val: `ves`, word: END, branches: relate},
    }},

    {val: `eat`, branches: []*radixWordNode{
        {val: `en`, word: DEFAULT}, // more...
    }},
    {val: `ecstatic`, word: DEFAULT, branches: []*radixWordNode{
        {val: `al`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `eel`, word: END},
    {val: `ejaculat`, branches: []*radixWordNode{
        {val: `e`, word: END},
        ingEdNode, erNode,
        {val: `ion`, word: END},
    }},
    {val: `elderly`, word: END},
    {val: `elitist`, word: DEFAULT, branches: pluralRelate},
    {val: `enlarg`, branches: edEndings},
    {val: `enormous`, word: DEFAULT, branches: lyEndings},
    {val: `envious`, word: DEFAULT, branches: lyEndings},
    {val: `excellent`, word: DEFAULT | POSITIVE},
    {val: `exacerbate`, word: END | EXCLS},
    {val: `exacerbat`, branches: ingEdErEndings},
    {val: `extreme`, word: DEFAULT, branches: lyEndings},

    {val: `fad`, word: END, branches: []*radixWordNode{
        {val: `ed`, word: DEFAULT},
        {val: `'d`, word: DEFAULT | MISSPELL},
    }},
    {val: `fail`, word: DEFAULT | EXCL, branches: ingEdEndings},
    {val: `fallacy`, word: END},
    {val: `fallen`, word: DEFAULT},
    {val: `false`, word: DEFAULT},

    {val: `fanatic`, word: DEFAULT | END, branches: []*radixWordNode{
        {val: `al`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `fart`, word: END, branches: ingEndings},

    {val: `fat`, word: DEFAULT | END, branches: lyEndings},
    {val: `fatty`, word: END},
    {val: `phat`, word: DEFAULT | END | MISSPELL | EXCL},
    {val: `fee`, word: END, branches: plural},
    {val: `feet`, word: END},
    {val: `feet-`, branches: []*radixWordNode{fetishNode}},

    {val: `feral`, word: DEFAULT},
    {val: `fester`, word: DEFAULT | EXCL, branches: ingEdEndings},
    fetishNode,
    {val: `feist`, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `i`, branches: lyEndings},
    }},
    {val: `fisting`, word: DEFAULT},
    {val: `flaccid`, word: DEFAULT},
    {val: `flail`, word: END, branches: ingEdEndings},
    {val: `flamboyant`, word: DEFAULT, branches: lyEndings},
    {val: `flaming`, word: DEFAULT, branches: lyEndings},
    {val: `flamingo`, word: END},
    {val: `flan`, word: END},
    {val: `flashy`, word: DEFAULT},
    {val: `flat`, word: DEFAULT, branches: lyEndings},
    {val: `flat-earther`, word: END, branches: pluralRelate},
    {val: `flatten`, word: DEFAULT, branches: ingEdEndings},
    {val: `flatulen`, branches: []*radixWordNode{
        {val: `t`, word: DEFAULT},
        {val: `ce`, word: DEFAULT},
    }},
    {val: `fly`, word: END},
    {val: `forbid`, word: DEFAULT},
    {val: `forbidden`, word: DEFAULT},
    {val: `forbod`, branches: ingEdEndings},
    {val: `forebod`, branches: ingEdEndings},
    {val: `frothing`, word: DEFAULT},
    {val: `f`, word: END | DEFAULT | MISSPELL | EXCL, branches: ingEdErEndings},
    {val: `f'`, word: END | DEFAULT | MISSPELL | EXCL, branches: ingEdErEndings},
    {val: `f***`, word: END | DEFAULT | MISSPELL | EXCL, branches: ingEdErEndings},
    {val: `f*ck`, word: END | DEFAULT | MISSPELL | EXCL, branches: ingEdErEndings},
    {val: `frick`, word: END | DEFAULT | MISSPELL | EXCL, branches: ingEdErEndings},
    {val: `fuck`, word: END | DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `fuck-up`, word: DEFAULT | EXCL},
    {val: `fugly`, word: DEFAULT},
    {val: `funeral`, word: END},
    {val: `fungi`, word: END},
    {val: `fungus`, word: END},
    {val: `furious`, word: DEFAULT, branches: lyEndings},

    {val: `gaucherie`, word: DEFAULT},
    {val: `generic`, word: DEFAULT, branches: icallyEnding},
    {val: `ginormous`, word: DEFAULT},
    {val: `glutton`, word: END},
    {val: `gluttonous`, word: DEFAULT, branches: lyEndings},
    {val: `goblin`, word: END},
    {val: `god-fearing`, word: DEFAULT},
    {val: `golly`, word: DEFAULT | EXCL},
    {val: `gonorrhea`, word: END},
    {val: `gonorrheal`, word: DEFAULT},
    {val: `grim`, word: DEFAULT, branches: lyEndings},

    {val: `hag`, word: END, branches: pluralRelate},
    {val: `hail`, word: END, branches: ingEndings},
    {val: `hairy`, word: DEFAULT},
    {val: `halal`, word: DEFAULT | POSITIVE},
    {val: `half-ars`, branches: ingEdEndings},
    {val: `haram`, word: DEFAULT | POSITIVE},
    {val: `hard-on`, word: END | EXCL},
    {val: `hard`, word: DEFAULT, branches: lyEndings},
    {val: `hardcore`, word: DEFAULT},
    {val: `harem`, word: END},
    {val: `hat`, word: DEFAULT, branches: ingEdEndings},
    {val: `hate`, word: DEFAULT},
    {val: `hazard`, word: DEFAULT | EXCL, branches: []*radixWordNode{
        {val: `ous`, word: DEFAULT | EXCL},
    }},
    {val: `hazy`, word: DEFAULT},
    {val: `hazi`, branches: lyEndings},
    {val: `heartbroken`, word: DEFAULT},
    {val: `heart-broken`, word: DEFAULT},
    {val: `hell`, word: DEFAULT | END},
    {val: `hellhole`, word: END},
    {val: `henchman`, word: END, branches: pluralRelate},
    {val: `henchmen`, word: END, branches: relate},
    {val: `hentai-addict`, word: END, branches: relate},
    {val: `hick`, word: END | EXCL},
    {val: `hijack`, word: DEFAULT, branches: ingEdErEndings},
    {val: `hillbilly`, word: END},
    {val: `hillbillies`, word: END},
    {val: `ho`, word: END, branches: pluralRelate},
    {val: `hoe`, word: END, branches: pluralRelate},
    {val: `homicide`, word: END},
    {val: `homicidal`, word: DEFAULT, branches: lyEndings},
    {val: `honey-pot`, word: END},
    {val: `horny`, word: DEFAULT},
    {val: `horrid`, word: DEFAULT},
    {val: `horrible`, word: DEFAULT},
    {val: `horrib`, branches: lyEndings},
    {val: `hot`, word: DEFAULT, branches: lyEndings},
    {val: `hot-headed`, word: DEFAULT, branches: lyEndings},
    {val: `huge`, word: DEFAULT, branches: lyEndings},

    {val: `idiot`, word: END, branches: icallyEnding},
    {val: `ignoramus`, word: END},
    {val: `ignorant`, word: DEFAULT, branches: lyEndings},
    {val: `illegitimate`, word: DEFAULT},
    {val: `imbecile`, word: END},
    {val: `imp`, word: END},
    {val: `impure`, word: DEFAULT},
    {val: `impurity`, word: DEFAULT},
    {val: `inanimate`, word: DEFAULT},
    {val: `incessant`, word: DEFAULT, branches: lyEndings},
    {val: `incestuous`, word: DEFAULT},
    {val: `incorrect`, word: DEFAULT},
    {val: `indifferent`, word: DEFAULT, branches: lyEndings},

    {val: `infest`, word: DEFAULT, branches: []*radixWordNode{
        ingEdNode,
        {val: `ation`, word: DEFAULT},
    }},
    {val: `injury`, word: END},
    {val: `injur`, branches: ingEdEndings},
    {val: `injure`, word: START | EXCL},
    {val: `invertebrate`, word: END, branches: plural},

    {val: `jail bait`, word: END},
    {val: `jerk`, word: END, branches: pluralRelate},
    {val: `jerkass`, word: END},
    {val: `jihad`, word: DEFAULT | EXCL},
    {val: `jihadist`, word: END},
    {val: `jockey`, word: END},
    {val: `jockstrap`, word: END},
    {val: `john`, word: END},

    {val: `kill`, word: DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `k'll`, word: DEFAULT | EXCL | MISSPELL, branches: ingEdErEndings},
    {val: `kitten`, word: END | POSITIVE},
    {val: `knocked-up`, word: DEFAULT},
    {val: `kosher`, word: DEFAULT | POSITIVE},

    {val: `lame`, word: DEFAULT},
    {val: `lam`, branches: erEndings},
    {val: `landlord`, word: END},
    {val: `lard-eat`, word: DEFAULT, branches: ingEdErEndings},
    {val: `lard`, word: END | EXCL},
    {val: `lazy`, word: DEFAULT},
    {val: `lazi`, branches: lyEndings},
    {val: `libido`, word: END},
    {val: `limp`, word: DEFAULT, branches: ingEndings},
    {val: `liquidator`, word: END},
    {val: `lizard`, word: END, branches: plural},
    {val: `loud`, word: DEFAULT, branches: lyEndings},
    {val: `low-life`, word: END},
    {val: `lowly`, word: END},
    {val: `low`, word: DEFAULT, branches: lyEndings},
    {val: `lowsy`, word: DEFAULT},
    {val: `lowsi`, branches: lyEndings},
    {val: `lust`, word: END | EXCL, branches: []*radixWordNode{
        {val: `il`, branches: lyEndings},
        {val: `y`, word: DEFAULT},
        {val: `ful`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `magnificent`, word: DEFAULT | POSITIVE},
    {val: `malform`, word: EXCL, branches: []*radixWordNode{
        edNode,
        {val: `ation`, word: DEFAULT},
    }},
    {val: `malfunction`, word: DEFAULT | END, branches: ingEdEndings},
    {val: `malic`, branches: []*radixWordNode{
        {val: `e`, word: DEFAULT | EXCL},
        ingNode,
        {val: `ious`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `malplace`, word: EXCLS},
    {val: `malplac`, branches: ingEdEndings},
    {val: `manure`, word: END},
    {val: `master`, word: DEFAULT, branches: lyEndings},
    {val: `menac`, branches: []*radixWordNode{
        {val: `e`, word: DEFAULT | EXCL},
        ingNode,
    }},
    {val: `mess`, word: END, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
    }},
    {val: `mischief`, word: DEFAULT},
    {val: `mischiev`, branches: ingEdEndings},
    {val: `mislead`, word: DEFAULT, branches: ingEndings},
    {val: `misspell`, branches: ingEdErEndings},
    {val: `moan`, word: END | EXCLS, branches: ingEdErEndings},
    {val: `molest`, word: EXCLS, branches: ingEdErEndings},
    {val: `monkey`, word: END, branches: pluralRelate},
    {val: `moot`, word: DEFAULT, branches: lyEndings},
    {val: `moron`, word: DEFAULT, branches: icallyEnding},
    {val: `motherfuck`, branches: ingEndings},
    {val: `mouse`, word: END},
    {val: `muff`, word: END},
    {val: `muff-div`, branches: []*radixWordNode{ingNode, erNode}},
    {val: `munch`, word: DEFAULT, branches: ingEndings},
    {val: `my-lord`, word: DEFAULT},

    {val: `naked`, word: DEFAULT, branches: lyEndings},
    {val: `nazi`, word: END, branches: pluralRelate},
    {val: `necrophile`, word: END},
    {val: `necrophil`, branches: icallyEnding},
    {val: `ninja`, word: END, branches: pluralRelate},
    {val: `no-brain`, word: END},
    {val: `no-brainer`, word: DEFAULT},
    {val: `no-good`, word: DEFAULT},
    {val: `nobody`, word: END},
    {val: `non-cohesive`, word: DEFAULT},
    {val: `non-person`, word: END},
    {val: `nonsense`, word: EXCLS | END},
    {val: `nonsensical`, word: DEFAULT, branches: lyEndings},
    {val: `nude`, word: DEFAULT | END},
    {val: `nudist`, word: DEFAULT | END},
    {val: `nut`, word: END},
    {val: `nut-sack`, word: END},

    {val: `obnoxious`, word: DEFAULT, branches: lyEndings},
    {val: `obstacle`, word: END, branches: plural},
    {val: `ogre`, word: END},
    {val: `old`, word: DEFAULT},
    {val: `one-sided`, word: DEFAULT, branches: lyEndings},
    {val: `orgasm`, word: END, branches: icallyEnding},
    {val: `overlook`, branches: edEndings},

    {val: `pain`, word: END, branches: []*radixWordNode{
        {val: `ful`, word: DEFAULT, branches: lyEndings},
        edNode,
    }},
    {val: `particular`, word: DEFAULT, branches: lyEndings},
    {val: `pecker`, word: END},
    {val: `peepee`, word: END},
    {val: `pee-pee`, word: END},
    {val: `peep`, word: DEFAULT | EXCL, branches: []*radixWordNode{ingNode, erNode}},
    {val: `penis`, word: END, branches: []*radixWordNode{
        {val: `'`, word: END},
    }},
    {val: `peter`, word: END},
    {val: `phallus`, word: END},
    {val: `pig`, word: END, branches: plural},
    {val: `pious`, word: DEFAULT},
    {val: `pirate`, word: END, branches: plural},
    {val: `pissed-off`, word: DEFAULT},
    {val: `pit`, word: END, branches: []*radixWordNode{
        {val: `iful`, word: DEFAULT, branches: lyEndings},
        {val: `y`, word: DEFAULT, branches: ingEndings},
        {val: `y`, word: EXCLS},
    }},
    {val: `plump`, word: DEFAULT},
    {val: `poach`, word: DEFAULT, branches: []*radixWordNode{
        erNode, ingNode,
    }},
    {val: `poignant`, word: DEFAULT, branches: lyEndings},
    {val: `point`, branches: []*radixWordNode{
        {val: `y`, word: END | DEFAULT},
        {val: `less`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `poison`, word: DEFAULT | END | EXCL, branches: []*radixWordNode{
        {val: `ous`, word: DEFAULT},
    }},
    {val: `prick`, word: END},
    {val: `psychic`, word: DEFAULT},
    {val: `punch`, word: END, branches: edEndings},
    {val: `pungent`, word: DEFAULT, branches: lyEndings},
    {val: `punk`, word: END | EXCL, branches: plural},
    {val: `puppy`, word: END | POSITIVE},
    {val: `pussy`, word: END},
    {val: `puto`, word: END},
    {val: `puta`, word: END},
    {val: `putrid`, word: DEFAULT},

    {val: `ragg`, branches: edEndings},
    {val: `rap`, word: END, branches: []*radixWordNode{
        ingEdNode, erNode,
        {val: `e`, word: END | EXCL},
        {val: `ist`, word: END},
        {val: `p`, branches: ingEndings},
    }},
    {val: `rat`, word: END, branches: plural},
    {val: `rectal`, word: DEFAULT | END, branches: lyEndings},
    {val: `rectum`, word: END},
    {val: `recti`, word: END | MISSPELL},
    {val: `redneck`, word: END, branches: plural},
    {val: `retard`, word: END, branches: plural},
    {val: `rim-job`, word: END, branches: []*radixWordNode{
        {val: `b`, word: MISSPELL, branches: ingEdEndings},
    }},
    {val: `rodent`, word: END},
    {val: `rubber-duck`, word: END},
    {val: `rubbish`, word: DEFAULT, branches: lyEndings},
    {val: `rush`, word: DEFAULT | EXCL, branches: ingEdEndings},

    {val: `salty`, word: DEFAULT | EXCL},
    {val: `salti`, word: MISSPELL, branches: lyEndings},
    {val: `satan`, word: END | EXCL, branches: icallyEnding},
    {val: `sausage`, word: END},
    {val: `scrotum`, word: END},
    {val: `scumbag`, word: END | EXCL, branches: pluralRelate},
    {val: `second-best`, word: DEFAULT},
    {val: `sensual`, word: DEFAULT, branches: lyEndings},
    {val: `serial`, word: DEFAULT, branches: lyEndings},
    {val: `serial-killer`, word: END},
    {val: `sexophone`, word: END | MISSPELL},
    {val: `sexual`, word: DEFAULT, branches: lyEndings},
    {val: `shite`, word: DEFAULT | END | MISSPELL | EXCL},
    {val: `shit`, word: DEFAULT | END},
    {val: `shitt`, branches: []*radixWordNode{ingNode, erNode}},
    {val: `short`, word: DEFAULT},
    {val: `shriek`, word: DEFAULT, branches: ingEndings},
    {val: `shrivell`, branches: edEndings},
    {val: `shrunken`, word: DEFAULT},
    {val: `shrink`, word: END},
    {val: `sick`, word: DEFAULT | EXCL},
    {val: `single-mind`, branches: edEndings},
    {val: `sink`, branches: ingEndings},
    {val: `sir`, word: SPLIT | POSITIVE},
    {val: `sissy`, word: END | DEFAULT},
    {val: `skank`, word: END, branches: pluralRelate},
    {val: `skanky`, word: DEFAULT},
    {val: `skanki`, word: DEFAULT, branches: lyEndings},
    {val: `skunk`, word: END, branches: plural},
    {val: `slimy`, word: DEFAULT},
    {val: `slimi`, branches: lyEndings},
    {val: `slut`, word: DEFAULT | END, branches: []*radixWordNode{
        {val: `ty`, word: DEFAULT},
        {val: `ti`, branches: lyEndings},
    }},
    {val: `smell`, word: DEFAULT},
    {val: `smelly`, word: DEFAULT},
    {val: `snail`, word: END},
    {val: `snake`, word: END},
    {val: `snak`, branches: ingEndings},
    {val: `sod-off`, word: EXCLS},
    {val: `sodom`, word: END, branches: []*radixWordNode{
        {val: `ite`, word: END, branches: pluralRelate},
        {val: `iz`, branches: []*radixWordNode{
            {val: `e`, word: EXCLS},
            {val: `ation`, word: DEFAULT},
            ingEdNode,
        }},
    }},
    {val: `soft`, word: DEFAULT, branches: lyEndings},
    {val: `soggy`, word: DEFAULT},
    {val: `soggi`, word: MISSPELL, branches: lyEndings},
    {val: `son-of-a`, word: DEFAULT | SPLIT},
    {val: `son-of-a-bitch`, word: END},
    {val: `son-of-a-whore`, word: END},
    {val: `sorrow`, word: DEFAULT | END, branches: []*radixWordNode{
        {val: `ful`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `sour`, word: DEFAULT},
    {val: `spectacle`, word: END},
    {val: `spectacl`, branches: ingEdEndings},
    {val: `spineless`, word: DEFAULT},
    {val: `spinster`, word: END, branches: pluralRelate},
    {val: `spooky`, word: DEFAULT},
    {val: `spunk`, word: END},
    {val: `square`, word: DEFAULT},
    {val: `ston`, branches: []*radixWordNode{erNode, edNode}},
    {val: `stop`, word: END | EXCL},
    {val: `stupid`, word: DEFAULT, branches: lyEndings},
    {val: `succubus`, word: END},
    {val: `suck`, word: DEFAULT, branches: ingEdErEndings},
    {val: `suicid`, branches: []*radixWordNode{
        {val: `e`, word: END},
        {val: `al`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `swallow`, word: DEFAULT, branches: ingEndings},
    {val: `swing`, branches: erEndings},
    {val: `synthet`, branches: icallyEnding},

    {val: `taker-of`, word: SPLIT | EXCL},
    {val: `tard`, word: END},
    {val: `tea-bagg`, branches: ingEdEndings},

    {val: `tedious`, word: END, branches: []*radixWordNode{
        {val: `ness`, word: DEFAULT},
    }},
    {val: `temptress`, word: END},
    {val: `terminator`, word: END},
    {val: `terror`, word: DEFAULT | END, branches: []*radixWordNode{
        ingEdNode,
        {val: `ist`, word: END, branches: pluralRelate},
    }},
    {val: `testicle`, word: END},
    {val: `testicular`, word: DEFAULT},
    {val: `testifying`, word: DEFAULT},
    {val: `thin-skinn`, branches: edEndings},
    {val: `thundercunt`, word: END, branches: pluralRelate},
    {val: `tir`, branches: ingEdEndings},
    {val: `tiresome`, word: DEFAULT},
    {val: `tireless`, word: DEFAULT, branches: lyEndings},
    {val: `tit`, word: END | EXCL, branches: pluralRelate},
    {val: `titty`, word: END | EXCL},
    {val: `towelhead`, word: END},
    {val: `toxic`, word: END},
    {val: `tox`, word: END, branches: icallyEnding},
    {val: `trash`, word: END, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `i`, branches: lyEndings},
    }},
    {val: `trojan`, word: END | DEFAULT},
    {val: `twat`, word: END},

    {val: `ugly`, word: DEFAULT | EXCL},
    {val: `un-hung`, word: DEFAULT},
    {val: `uncalled-for`, word: DEFAULT},
    {val: `uncann`, branches: []*radixWordNode{
        {val: `y`, word: DEFAULT},
        {val: `i`, branches: lyEndings},
    }},
    {val: `uncharismatic`, word: DEFAULT},
    {val: `uncharitable`, word: DEFAULT},
    {val: `unemployable`, word: DEFAULT},
    {val: `unfinish`, branches: edEndings},
    {val: `unidentifiable`, word: DEFAULT},
    {val: `uninterest`, branches: ingEdEndings},
    {val: `unqualify`, branches: ingEndings},
    {val: `unqualifi`, branches: edEndings},
    {val: `unqualifiable`, word: DEFAULT},
    {val: `unqualitative`, word: DEFAULT, branches: lyEndings},
    {val: `unwed`, word: DEFAULT},
    {val: `useless`, word: DEFAULT},

    {val: `vampire`, word: END},
    {val: `vermin`, word: END},
    {val: `vomit`, word: END},
    {val: `vomitt`, branches: ingEndings},

    {val: `waffle`, word: END},
    {val: `wail`, word: DEFAULT, branches: ingEndings},
    {val: `wannabe`, word: END},
    {val: `weak`, word: DEFAULT},
    {val: `weaken`, word: DEFAULT, branches: edEndings},
    {val: `weakish`, word: DEFAULT | MISSPELL},
    {val: `weasel`, word: END},
    {val: `weapon`, word: END, branches: []*radixWordNode{
        {val: `iz`, branches: []*radixWordNode{
            {val: `ation`, word: DEFAULT},
            ingEdNode,
        }},
    }},
    {val: `weed`, word: END},
    {val: `weirdo`, word: END, branches: pluralRelate},
    {val: `whale`, word: END},
    {val: `wiener`, word: END, branches: pluralRelate},
    {val: `willy`, word: END | EXCL},
    {val: `witch`, word: END | EXCL},
    {val: `witche`, branches: pluralRelate},
    {val: `would-be`, word: DEFAULT},
    {val: `wrathful`, word: DEFAULT, branches: lyEndings},
    {val: `wrong`, word: DEFAULT, branches: lyEndings},
    {val: `wrongful`, word: DEFAULT, branches: lyEndings},

    {val: `x-rat`, branches: edEndings},
    {val: `xxx`, word: DEFAULT | END},

    {val: `yeasty`, word: DEFAULT},
    {val: `yeast`, word: END},
    {val: `yokel`, word: END, branches: pluralRelate},

    {val: `zoophil`, branches: []*radixWordNode{
        icallyEndingNode,
        {val: `e`, word: END},
    }},

    {val: `murder`, word: END | EXCL, branches: ingEdErEndings},
    {val: `offend`, word: EXCLS, branches: ingEdErEndings},
    {val: `piss`, word: DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `wank`, word: EXCLS, branches: []*radixWordNode{ingNode, erNode}},
    {val: `wither`, word: DEFAULT, branches: ingEdEndings},
    {val: `titty-fuck`, word: DEFAULT, branches: ingEdEndings},
    {val: `confus`, branches: ingEdEndings},
    {val: `confuse`, word: EXCLS},
    {val: `defecate`, word: END | EXCL},
    {val: `defecat`, branches: ingEdEndings},
    {val: `eradicate`, word: EXCLS},
    {val: `eradicat`, branches: ingEdEndings},

    {val: `execute`, word: EXCLS},
    {val: `execut`, branches: ingEdEndings},
    {val: `executor`, word: END},

    {val: `masturbate`, word: EXCLS},
    {val: `masturbat`, branches: ingEdErEndings},

    {val: `misbehave`, word: EXCLS},
    {val: `mibehav`, branches: ingEdEndings},

    {val: `grabb`, branches: ingEdEndings},

    {val: `regret`, word: END},
    {val: `regretful`, word: DEFAULT},
    {val: `regrett`, branches: ingEdEndings},

    {val: `shag`, word: EXCLS},
    {val: `shagg`, branches: ingEdEndings},

    {val: `slap`, word: END | EXCL},
    {val: `slapp`, branches: ingEdEndings},

    {val: `jizz`, word: END, branches: ingEndings},

    {val: `lick`, word: END, branches: ingEndings},

    {val: `poop`, word: END, branches: ingEndings},

    {val: `poop-monger`, word: END, branches: ingEndings},

    {val: `pretend`, word: DEFAULT, branches: ingEndings},

    {val: `naive`, word: DEFAULT, branches: lyEndings},
    {val: `naivety`, word: END},
    {val: `nefarious`, word: DEFAULT},
    {val: `negative`, word: DEFAULT, branches: lyEndings},
    {val: `mandatory`, word: DEFAULT},
    {val: `hazy`, word: DEFAULT},
    {val: `hazi`, branches: lyEndings},

    {val: `smel`, branches: lyEndings},
    {val: `smells`, word: END},
    {val: `goose`, word: END},
    {val: `geese`, word: END},
    {val: `cumbersome`, word: DEFAULT},
    {val: `killjoy`, word: END, branches: plural},
    {val: `pester`, word: DEFAULT, branches: ingEdEndings},
    {val: `pesky`, word: DEFAULT},
    {val: `incriminate`, word: EXCLS},
    {val: `incriminat`, branches: ingEdEndings},

    {val: `nuclear`, word: DEFAULT},
    {val: `radioactive`, word: DEFAULT, branches: lyEndings},

    {val: `spider`, word: DEFAULT, branches: plural},

    {val: `unsettl`, branches: ingEdEndings},

    {val: `usurp`, word: EXCLS, branches: ingEdErEndings},
    {val: `usurps`, word: SPLIT},

    {val: `slain`, word: DEFAULT},
    {val: `slayer`, word: DEFAULT, branches: pluralRelate},

    {val: `hoax`, word: END},
    {val: `howl`, word: EXCLS, branches: ingEdErEndings},

    {val: `unwant`, branches: ingEdEndings},
    {val: `sedentary`, word: DEFAULT},
    {val: `loner`, word: END},
    {val: `superficial`, word: DEFAULT},
    {val: `arrest`, word: EXCLS, branches: ingEdEndings},
    {val: `tripp`, branches: ingEndings},
    {val: `demand`, word: EXCLS, branches: ingEdEndings},
    {val: `total`, branches: edEndings},
    {val: `asphyxiation`, word: DEFAULT},
    {val: `sticky`, word: DEFAULT},
    {val: `nauseat`, branches: ingEdEndings},
    {val: `devil`, word: END, branches: []*radixWordNode{
        {val: `ish`, word: DEFAULT, branches: lyEndings},
        {val: `'sh`, word: DEFAULT | MISSPELL, branches: lyEndings},
    }},
    {val: `daredevil`, word: END, branches: plural},
    {val: `dar`, branches: ingEndings},
    {val: `grinch`, word: END},
    {val: `chill`, word: EXCLS, branches: ingEdErEndings},
    {val: `chil`, branches: lyEndings},
    {val: `starv`, branches: ingEdEndings},
    {val: `arythm`, branches: icallyEnding},
    {val: `tonedeaf`, word: DEFAULT},
    {val: `gangster`, word: END, branches: pluralRelate},
    {val: `mobster`, word: END, branches: pluralRelate},
    {val: `mob`, word: END, branches: plural},
    {val: `swine`, word: END},
    {val: `monotonous`, word: DEFAULT, branches: lyEndings},
    {val: `draconian`, word: DEFAULT},
    {val: `thrill-seek`, branches: []*radixWordNode{ingNode, erNode}},
    {val: `jay-walk`, branches: []*radixWordNode{ingNode, erNode}},
    {val: `worm`, word: END | EXCL, branches: plural},
    {val: `flesh-eat`, branches: []*radixWordNode{erNode, ingNode}},
    {val: `pollut`, branches: []*radixWordNode{
        ingNode, erNode, edNode,
    }},
    {val: `pollutant`, word: END, branches: plural},
    {val: `alpha-male`, word: END},
    {val: `awkward`, word: DEFAULT, branches: lyEndings},
    {val: `louse`, word: END | EXCL},
    {val: `lice`, word: END | EXCL},
    {val: `squander`, word: DEFAULT, branches: ingEdEndings},
    {val: `scapegoat`, word: END, branches: []*radixWordNode{ingNode, pluralNode}},
    {val: `fell`, word: DEFAULT},
    {val: `nuisance`, word: DEFAULT},
    {val: `overt`, word: DEFAULT, branches: lyEndings},
    {val: `scrumptious`, word: DEFAULT, branches: lyEndings},
    {val: `scruffy`, word: END},
    {val: `scruffi`, branches: lyEndings},
    {val: `scold`, word: EXCL, branches: ingEdErEndings},
    {val: `heartache`, word: END},
    {val: `ego`, word: END | EXCL},
    {val: `ego-centered`, word: DEFAULT},
    {val: `egoist`, word: END, branches: []*radixWordNode{icallyEndingNode, pluralRelateNode}},
    {val: `mold`, word: END},
    {val: `moldy`, word: DEFAULT},
    {val: `double-down`, word: END | EXCL},
    {val: `tasteless`, word: DEFAULT, branches: lyEndings},
    {val: `crime`, word: END},
    {val: `frankenstein`, word: END},
    {val: `criminal`, word: END, branches: []*radixWordNode{lyEndingsNode, pluralRelateNode}},
    {val: `crummy`, word: DEFAULT},
    {val: `crummi`, branches: lyEndings},
    {val: `unfortunate`, word: DEFAULT, branches: lyEndings},
    {val: `unforgiv`, branches: ingEndings},
    {val: `misfit`, word: DEFAULT | END},
    {val: `misfitt`, branches: ingEdEndings},
    {val: `monster`, word: END, branches: pluralRelate},
    {val: `monstrosity`, word: END | EXCL},
    {val: `monstrosities`, word: END | EXCL},
    {val: `monstrous`, word: EXCL | DEFAULT, branches: lyEndings},
    {val: `disrespect`, word: END, branches: ingEdEndings},
    {val: `disrespectful`, word: DEFAULT, branches: lyEndings},
    {val: `compromised`, word: DEFAULT}, // ing is positive!
    {val: `overgrown`, word: DEFAULT},
    {val: `overgrowth`, word: END},
    {val: `unkempt`, word: DEFAULT},
    {val: `widow`, word: DEFAULT, branches: ingEdErEndings},
    {val: `ulcer`, word: END},
    {val: `limbless`, word: DEFAULT},
    {val: `liable`, word: DEFAULT},
    {val: `liability`, word: END},
    {val: `unend`, branches: ingEdEndings},
    {val: `uneven`, word: DEFAULT},
    {val: `uneventful`, word: DEFAULT, branches: lyEndings},
    {val: `ballistic`, word: DEFAULT}, // ically?
    {val: `snarky`, word: DEFAULT},
    {val: `schmartenheimer`, word: END},
    {val: `schmartenpants`, word: END},
    {val: `mugshot`, word: END, branches: plural},
    {val: `mugg`, branches: ingEdErEndings},
    {val: `mean`, word: DEFAULT},
    {val: `meanie`, word: EXCL | END},
    {val: `baddie`, word: EXCL | END},
    {val: `bad`, word: DEFAULT, branches: lyEndings},
    {val: `bankrupt`, word: DEFAULT},
    {val: `bankruptcy`, word: END},
    {val: `tarnish`, word: DEFAULT, branches: ingEdErEndings},
    {val: `darn`, word: DEFAULT | EXCL},
    {val: `distress`, word: END, branches: ingEdEndings},
    {val: `petrifi`, branches: []*radixWordNode{edNode, erNode}},
    {val: `petrify`, word: EXCL, branches: ingEndings},
    {val: `harrow`, word: EXCL | END, branches: ingEdEndings},
    {val: `quit`, word: EXCL},
    {val: `quitt`, branches: []*radixWordNode{ingNode, erNode}},
    {val: `parasite`, word: END | EXCL, branches: pluralRelate},
    {val: `parasit`, branches: icallyEnding},
    {val: `mistake`, word: END},
    {val: `mistak`, branches: ingEndings},
    {val: `mistaken`, word: END | EXCL, branches: lyEndings},
    {val: `removal`, word: DEFAULT},
    {val: `unruly`, word: DEFAULT},
    {val: `odd-ball`, word: END, branches: ingEndings},
    {val: `flee`, word: EXCL | END, branches: ingEndings},
    {val: `angry`, word: DEFAULT},
    {val: `angri`, branches: lyEndings},
    {val: `anger`, word: END, branches: ingEdEndings},
    {val: `smurf`, word: END},
    {val: `homicide`, word: END},
    {val: `homicidal`, word: DEFAULT, branches: lyEndings},
    {val: `genocide`, word: END},
    {val: `genocidal`, word: DEFAULT, branches: lyEndings},
    {val: `oppression`, word: DEFAULT},
    {val: `oppressor`, word: END},
    {val: `oppress`, branches: ingEdEndings},
    {val: `massacre`, word: END},
    {val: `massacr`, branches: ingEdEndings},
    {val: `disposable`, word: DEFAULT},
    {val: `freak`, word: END | DEFAULT, branches: edEndings},
    {val: `freakish`, word: DEFAULT, branches: lyEndings},
    {val: `legless`, word: DEFAULT, branches: lyEndings},
    {val: `complacent`, word: DEFAULT},
    {val: `complacency`, word: DEFAULT},
    {val: `chipmunk`, word: END, branches: plural},
    {val: `inconsistent`, word: DEFAULT, branches: lyEndings},
    {val: `mocking`, branches: lyEndings},
    {val: `mock`, word: EXCL | END, branches: ingEdEndings},
    {val: `reek`, word: EXCL | END, branches: ingEdEndings},
    {val: `reeks`, word: END},
    {val: `wreck`, word: EXCL | END, branches: ingEdEndings},
    {val: `subpar`, word: DEFAULT},
    {val: `insist`, word: EXCL, branches: ingEndings},
    {val: `docile`, word: DEFAULT},
    {val: `intolerable`, word: DEFAULT},
    {val: `unclear`, word: DEFAULT},
    {val: `unclean`, word: DEFAULT, branches: lyEndings},
    {val: `uncleanness`, word: DEFAULT},
    {val: `ghetto`, word: END | DEFAULT},
    {val: `excommunicate`, word: EXCL},
    {val: `excommunication`, word: END},
    {val: `excommunicat`, branches: ingEdEndings},
    {val: `infertile`, word: DEFAULT},
    {val: `infertility`, word: END},
    {val: `unaware`, word: DEFAULT},
    {val: `pamper`, word: END, branches: ingEdEndings},
    {val: `intoxicate`, word: EXCL},
    {val: `intoxicat`, branches: ingEdEndings},
    {val: `strangl`, branches: ingEdErEndings},
    {val: `pamper`, word: DEFAULT, branches: ingEdEndings},
    {val: `brat`, word: END | EXCL},
    {val: `drunk-driv`, branches: []*radixWordNode{erNode, ingNode}},
    {val: `dui`, word: END},
    {val: `drunkard`, word: END},
    {val: `recluse`, word: END},
    {val: `interimist`, branches: icallyEnding},
    {val: `pitiful`, word: DEFAULT, branches: lyEndings},
    {val: `pity-fuck`, word: END, branches: ingEdErEndings},
    {val: `unjust`, word: DEFAULT, branches: lyEndings},
    {val: `unjustifi`, branches: edEndings},
    {val: `seclud`, branches: edEndings},
    {val: `seclusion`, word: END},
    {val: `exhaust`, word: END, branches: ingEdEndings},
    {val: `exhaustion`, word: END | EXCL},
    {val: `lost`, word: DEFAULT | EXCL},
    {val: `loos`, branches: []*radixWordNode{erNode, ingNode}},
    {val: `conced`, branches: ingEdEndings},
    {val: `concede`, word: EXCL},
    {val: `surrender`, word: END | EXCL, branches: ingEdErEndings},
    {val: `disease`, word: END},
    {val: `diseas`, branches: ingEdEndings},
    {val: `capitulat`, word: END | EXCL, branches: ingEdErEndings},
    {val: `succumb`, word: END | EXCL, branches: ingEndings},
    {val: `capitulation`, word: END | EXCL},
    {val: `passive`, word: DEFAULT},
    {val: `passive-aggressive`, word: DEFAULT},
    {val: `passivation`, word: END},
    {val: `passivat`, branches: ingEdEndings},
    {val: `unimpressive`, word: DEFAULT},
    {val: `unimpressed`, word: DEFAULT},
    {val: `unintelligent`, word: DEFAULT, branches: lyEndings},
    {val: `fuckface`, word: DEFAULT | END},
    {val: `FU`, word: EXCL | MISSPELL},
    {val: `enslav`, branches: ingEdErEndings},
    {val: `enslave`, word: EXCL},

    {val: `spawn`, word: END, branches: ingEndings},
    {val: `villain`, word: END | EXCL, branches: []*radixWordNode{
        {val: `y`, word: END},
        {val: `ous`, word: FILLER},
    }},
    {val: `sin`, word: END, branches: []*radixWordNode{
        {val: `ful`, word: DEFAULT, branches: lyEndings},
    }},
    {val: `sinn`, branches: ingEdErEndings},
    {val: `vandal`, word: END, branches: ingEndings},
    {val: `tacky`, word: DEFAULT},
    {val: `immoral`, word: DEFAULT, branches: lyEndings},
    {val: `deprav`, branches: ingEdEndings},
    {val: `depravity`, word: END | EXCL},
    {val: `corrupt`, word: DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `corruptness`, word: END},
    {val: `corruption`, word: END | EXCL},
    {val: `degeneration`, word: END | EXCL},
    {val: `degenerat`, branches: ingEdEndings},
    {val: `degenerate`, word: END | EXCLS},
    {val: `unchaste`, word: DEFAULT | EXCL},
    {val: `unchasten`, branches: edEndings},
    {val: `iniquity`, word: END},
    {val: `iniquitous`, word: DEFAULT},
    {val: `wick`, branches: edEndings},
    {val: `wickedness`, word: DEFAULT},
    {val: `vile`, word: END | EXCL, branches: lyEndings},
    {val: `vileness`, word: END | EXCL},
    {val: `rot`, word: END},
    {val: `rotten`, word: DEFAULT | EXCL},
    {val: `rott`, branches: ingEdEndings},
    {val: `vicious`, word: DEFAULT | EXCL, branches: lyEndings},
    {val: `viciousness`, word: END},
    {val: `noxious`, word: DEFAULT, branches: lyEndings},
    {val: `spite`, word: END | EXCL},
    {val: `spiteful`, word: DEFAULT, branches: lyEndings},
    {val: `nasty`, word: DEFAULT},
    {val: `nasti`, branches: lyEndings},
    {val: `exasperate`, word: DEFAULT},
    {val: `exasperat`, branches: ingEdErEndings},
    {val: `exasperation`, word: DEFAULT},
    {val: `rile`, word: DEFAULT},
    {val: `ril`, branches: edEndings},
    {val: `ferocious`, word: DEFAULT, branches: lyEndings},
    {val: `ferociousness`, word: END},
    {val: `itch`, word: END, branches: ingEdEndings},
    {val: `itchy`, word: DEFAULT},
    {val: `vex`, word: DEFAULT | EXCL, branches: ingEdEndings},
    {val: `vexation`, word: END},
    {val: `afflict`, word: EXCL, branches: ingEdEndings},
    {val: `affliction`, word: END | EXCL},
    {val: `suffer`, word: DEFAULT | EXCL, branches: ingEdEndings},
    {val: `bleak`, word: DEFAULT, branches: lyEndings},
    {val: `bleakness`, word: END},
    {val: `foulness`, word: END},
    {val: `foul`, word: DEFAULT, branches: lyEndings},
    {val: `distressful`, word: DEFAULT, branches: lyEndings},
    {val: `agony`, word: END | EXCL},
    {val: `agonie`, branches: plural},
    {val: `torture`, word: END | EXCL},
    {val: `tortur`, branches: ingEdErEndings},
    {val: `anguish`, word: END | EXCL, branches: ingEdErEndings},
    {val: `agony-aunt`, word: END},
    {val: `grief`, word: END | EXCL, branches: plural},
    {val: `griefful`, word: DEFAULT},
    {val: `good grief`, word: EXCL},
    {val: `sorry`, word: DEFAULT},
    {val: `doleful`, word: DEFAULT, branches: lyEndings},
    {val: `dolefulness`, word: END},
    {val: `cheerless`, word: DEFAULT, branches: lyEndings},
    {val: `cheerlessness`, word: END},
    {val: `dolor`, word: END},
    {val: `conspiracy`, word: END},
    {val: `conspiration`, word: END},
    {val: `conspire`, word: END},
    {val: `conspir`, branches: ingEdErEndings},
    {val: `scorn`, word: END | EXCL, branches: edEndings},
    {val: `scornful`, word: DEFAULT, branches: lyEndings},
    {val: `resignation`, word: END},
    {val: `resign`, word: END, branches: ingEdEndings},
    {val: `privates`, word: END},
    {val: `weary`, word: DEFAULT},
    {val: `weari`, branches: ingEdEndings},
    {val: `drowsy`, word: DEFAULT},
    {val: `drowsiness`, word: END},
    {val: `chimp`, word: END, branches: pluralRelate},
    {val: `monkey`, branches: ingEndings},
    {val: `ape`, word: END, branches: pluralRelate},
    {val: `gorilla`, word: END, branches: pluralRelate},
    {val: `angst`, word: END | EXCL},
    {val: `angsty`, word: DEFAULT},
    {val: `angstful`, word: DEFAULT, branches: lyEndings},
    {val: `angsti`, branches: lyEndings},
    {val: `sheep`, word: END},
    {val: `sheeple`, word: END | MISSPELL},
    {val: `sheepish`, word: DEFAULT, branches: lyEndings},
    {val: `abomination`, word: END, branches: pluralRelate},
    {val: `abominable`, word: DEFAULT | EXCL},
    {val: `abominab`, branches: lyEndings},
    {val: `malpractic`, branches: ingEndings},
    {val: `malpractice`, word: END, branches: plural},
    {val: `malpractition`, word: END, branches: []*radixWordNode{ingNode, erNode}},
    {val: `studder`, word: END, branches: ingEdErEndings},
    {val: `rave`, word: END},
    {val: `rav`, branches: ingEndings},
    {val: `lynch`, word: END, branches: ingEdErEndings},
    {val: `tiny`, word: DEFAULT},
    {val: `puny`, word: DEFAULT},
    {val: `itsy-bitsy`, word: DEFAULT},
    {val: `teensy-weensy`, word: DEFAULT},
    {val: `itsy`, word: DEFAULT},
    {val: `bitsy`, word: DEFAULT},
    {val: `itty-bitty`, word: DEFAULT},
    {val: `bitty`, word: DEFAULT},
    {val: `miniscule`, word: DEFAULT},
    {val: `infinitesimal`, word: DEFAULT, branches: lyEndings},
    {val: `arcane`, word: DEFAULT},
    {val: `archaic`, word: DEFAULT},
    {val: `old-fashion`, word: START, branches: edEndings},
    {val: `lengthy`, word: DEFAULT},
    {val: `quirk`, word: END, branches: plural},
    {val: `quirky`, word: DEFAULT},
    {val: `vagary`, word: DEFAULT},
    {val: `baby`, word: END, branches: ingEndings},
    {val: `kink`, word: END},
    {val: `kinky`, word: DEFAULT},
    {val: `megrim`, word: END},
    {val: `migraine`, word: END},
    {val: `migraine-induc`, branches: ingEndings},
    {val: `whimsy`, word: DEFAULT},
    {val: `whims`, branches: icallyEnding},
    {val: `maggot`, word: END, branches: pluralRelate},
    {val: `spasm`, word: END, branches: icallyEnding},
    {val: `blind`, word: DEFAULT, branches: lyEndings},
    {val: `blind`, branches: ingEdEndings},
    {val: `banter`, word: END},

    {val: `taunt`, word: DEFAULT | EXCL, branches: ingEdErEndings},
    {val: `envy`, word: DEFAULT},
    {val: `env`, branches: ingEdEndings},
    {val: `revenge`, word: EXCL | END},
    {val: `revengeful`, word: DEFAULT, branches: lyEndings},
    {val: `avenge`, word: EXCL | END},
    {val: `vengeful`, word: DEFAULT, branches: lyEndings},
    {val: `spout`, word: END, branches: ingEndings},
    {val: `immature`, word: DEFAULT, branches: lyEndings},
    {val: `feint`, word: END, branches: ingEdEndings},
    {val: `lethargy`, word: END},
    {val: `letharg`, branches: icallyEnding},
    {val: `feckless`, word: DEFAULT, branches: lyEndings},
    {val: `fecklessness`, word: END},
    {val: `inert`, word: DEFAULT},
    {val: `worthless`, word: DEFAULT, branches: lyEndings},
    {val: `worthlessness`, word: END},
    {val: `hamstrung`, word: DEFAULT},
    {val: `prostrate`, word: DEFAULT},
    {val: `prostrat`, branches: ingEdEndings},
    {val: `logy`, word: DEFAULT},
    {val: `sluggish`, word: DEFAULT},
    {val: `groggy`, word: DEFAULT},
    {val: `jad`, branches: edEndings},
    {val: `knacker`, branches: ingEdEndings},
    {val: `hell-bent`, word: DEFAULT},
    {val: `hesitant`, word: DEFAULT, branches: lyEndings},
    {val: `hesitate`, word: DEFAULT},
    {val: `hesitation`, word: DEFAULT},
    {val: `vacillate`, word: DEFAULT},
    {val: `vacillation`, word: DEFAULT},
    {val: `vacillat`, branches: ingEdEndings},
    {val: `vacillator`, word: END},
    {val: `dethrone`, word: EXCLS},
    {val: `dethronement`, word: END},
    {val: `dethron`, branches: ingEdEndings},
    {val: `ridiculous`, word: DEFAULT, branches: lyEndings},
    {val: `ridicule`, word: EXCL | END},
    {val: `gullible`, word: DEFAULT},
    {val: `uncomfortable`, word: DEFAULT},
    {val: `uncomfortab`, branches: lyEndings},
    {val: `treasonous`, word: DEFAULT},
    {val: `treason`, word: END | EXCL},
    {val: `high-treason`, word: END | EXCL},
    {val: `high-treason`, word: END | EXCL},
    {val: `distraction`, word: DEFAULT},
    {val: `distract`, word: DEFAULT, branches: ingEdEndings},
    {val: `distraught`, word: DEFAULT},
    {val: `onerous`, word: DEFAULT},
    {val: `orthodox`, word: DEFAULT},
    {val: `unorthodox`, word: DEFAULT},
    {val: `mosquito`, word: END},
    {val: `mosquitoe`, branches: pluralRelate},
    {val: `viper`, word: END, branches: plural},
    {val: `serpent`, word: END, branches: plural},
    {val: `zero`, word: END},
    {val: `shill`, word: END},
    {val: `zeroe`, branches: plural},
    {val: `zeroed`, word: DEFAULT},
    {val: `shabby`, word: DEFAULT},
    {val: `moody`, word: DEFAULT},
    {val: `ill-temper`, branches: edEndings},
    {val: `ill-faith`, branches: edEndings},
    {val: `ill-fat`, branches: edEndings},
    {val: `bad-faith`, branches: edEndings},
    {val: `stress`, branches: edEndings},
    {val: `stress`, word: END},
    {val: `pressur`, branches: ingEdEndings},
    {val: `pressure`, word: END},
    {val: `self-proclaim`, word: END, branches: ingEdEndings},
    {val: `self-proclaim`, word: END, branches: ingEdEndings},
    {val: `shy`, word: DEFAULT, branches: lyEndings},
    {val: `loin`, word: END, branches: plural},
    {val: `loincloth`, word: END},
    {val: `groin`, word: END},
    {val: `strawman`, word: END, branches: relate},
    {val: `strawmen`, word: END, branches: relate},
    {val: `bizarre`, word: DEFAULT, branches: lyEndings},
    {val: `kafkaesque`, word: DEFAULT},
    {val: `grizz`, branches: lyEndings},
    {val: `grizzl`, branches: edEndings},
    {val: `overcomplicat`, branches: edEndings},
    {val: `abhorrent`, word: DEFAULT | EXCL},
    {val: `abhorr`, branches: ingEdEndings},
    {val: `repugn`, branches: ingEdEndings},
    {val: `abhorrence`, word: END},
    {val: `repugnant`, word: DEFAULT},
    {val: `repugnance`, word: END},
    {val: `loathing`, word: END, branches: lyEndings},
    {val: `loathful`, word: DEFAULT},
    {val: `loathe`, word: EXCL},
    {val: `unsatisfactory`, word: DEFAULT},
    {val: `unsentimental`, word: DEFAULT},
    {val: `uncensor`, branches: edEndings},
    {val: `censor`, word: END, branches: edEndings},
    {val: `contest`, branches: edEndings},
    {val: `asinine`, word: DEFAULT},
    {val: `acid`, word: END},
    {val: `cult`, word: END, branches: plural},
    {val: `cultist`, word: END, branches: pluralRelate},
    {val: `trainwreck`, word: END, branches: edEndings},
    {val: `futile`, word: DEFAULT | EXCL},
    {val: `futility`, word: END | EXCL},
    {val: `apologet`, branches: icallyEnding},

    {val: `flippant`, word: DEFAULT, branches: lyEndings},
    {val: `facetious`, word: DEFAULT, branches: lyEndings},
    {val: `facetiousness`, word: END},
}