Test this program first, if you wish. Go to: http://www.plover.com/cgi-bin/mjd/mailinglists
/*
NAME
wpoison - CGI program to generate an infinitely-linked self-recursive
web page containing several randomized bogus Internet-style
E-mail addresses; useful primarily for defeating web address
culling robots
SYNOPSIS
wpoison
VERSION
1.2
DESCRIPTION
The purpose of this program it to add massive/unlimited quantities
of bogus E-mail address pollution to the E-mail address data bases
generated by address harvesting web crawlers.
Each time it is invoked, wpoison generates a single HTML `page' con-
taining (among other things) a set of between 1 and 32 bogus/artificial
E-mail addresses. The bogus E-mail addresses are presented both as
plain text in the HTML and also as mailto: links.
All output of this program is written to stdout.
In addition to the sequence of bogus E-mail addresses, random English
text is also inserted into the generated HTML page in an attempt to
throw off any possible bogosity detection on the part of address
harvesting web crawlers. (The page title is also generated as a
sequence of randomized English text for the same reason.)
Last but not least, each page generated by this program will contain
a random number (between 1 and 64) of hypertext links which will point
back to this program itself, but in a way that is certain to make
this circularity essentially impossible to detect from any form of
web client (e.g. either a browser or a robot). These links, if
followed, lead (in effect) to an infinite and inexhaustable supply
of bogus E-mail addresses, all of which are generated on-the-fly
and on-demand as the relevant hyperlinks are traversed.
The bogus E-mail addresses themselves are generated by selecting
words at random from a built in table of several thousand randomly-
selected English words. All second-level domain name components
are generated from one such randomly selected word with one random-
ly selected lower-case letter appended to it.. Third level domain
name components (when used) are just randomly selected words however.
First-level domain names components are selected at random from a
list of valid top-level domain names consisting of all known two-
letter county-code domain names together with the standard domain
names .com, .edu, .net, and .org. The selection of the top-level
domain names is weighted heavily towards the standard three-letter
top-level domain names (they will be selected 7 out of every 8 times),
so those top-level domain names will appear with far greater frequen-
cy in the output. Within the set of three-letter top-level domain
names, selction is weighted towards .com, .net, and .org (in that
order). These weightings are meant to roughly parallel the actual
frequency with which various top-level domain names are encountered
in a random sample of USENET news postings and web pages.
One quarter of the time, the generated bogus addresses will have
three-level domain names, while the other three quarters of the
time they will have just two-level domain names.
This program may be installed in, and should function correctly in
any CGI-capable directory.
NOTES
This program uses the Robots META tag as a way to attempt to shield
legitimate web crawlers from its otherwise damaging effects. Please
see:
http://info.webcrawler.com/mak/projects/robots/exclusion.html
for further details.
WARNING! Use of the Robots META tag may not be universally supported
by all legitimate web crawlers, so ideally, anyone installing this
program on a web site should also follow the Robot Exclusion Protocol,
which is also described at the above URL.
HISTORY
Version 1.2:
Added built-in words table, thus improving performance dramatically
and removing dependence on any external dictionary file.
Version 1.1:
Generate more than one hyperlink per page. (The program now generates
a random number of hyperlinks per page, between 1 and 64.) This step
should help to pollute the addresses data bases of even those address-
harvesting web crawlers which try to avoid hyperlink looping by limit-
ing the depth to which they will explore any given site.
Added code to append a random letter to the tail ends of the words
used in forming the second-level component of all generated domain
names. This should allay any possible concerns about the generation
of bogus E-mail addresses whose domain name parts happen to name
actual registered domains currently in active use.
Output the Robots META tags in the HEADs of the generated HTML pages,
where they belong, rather than in the body.
Fixed a problem which seemed to cause the filenames referenced by the
hyperlinks to slowly grow longer (when the program was used with
certain versions of certain HTTP servers).
Many other small changes were made also to make the output even more
randomized. (The text associated with the generated hyperlinks is
now a random sequences of words.)
COPYRIGHT
Copyright (c) 1997; Ronald F. Guilmette; All rights Reserved.
License to use and to redistribute this software for strictly non-
commercial purposes is hereby granted (and encouraged) provided that
the full verbatim text of this copyright notice, and the full verbatim
text of the containing comment block are maintained in all source
copies of this program at all times, and provided that licensee has
read, agreed to, and accepted completely and without reservation
the following LIMITATIONS OF WARRANTIES and LIMITATIONS OF LIABILITIES.
LIMITATIONS OF WARRANTIES
THE PROGRAM IS PROVIDED AS IS, AND LICENSOR DISCLAIMS ANY AND ALL
REPRESENTATIONS OR WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED
WITH RESPECT TO IT, INCLUDING (WITHOUT LIMITATION) ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
OR NON-INFRINGEMENT.
LIMITATIONS OF LIABILITIES
LICENSOR SHALL HAVE NO LIABILITY TO LICENSEE OR TO ANY OTHER INDI-
VIDUAL OR ENTITY CONNECTED WITH LICENSEE FOR ANY CLAIM, LOSS, OR
DAMAGE OF ANY KIND OR NATURE WHATSOEVER ARISING OUT OF OR IN CON-
NECTION WITH THE PERFORMANCE OF THIS AGREEMENT OR ARISING OUT OF
OR IN CONNECTION WITH (I) THE DEFICIENCY OR INADEQUACY OF THE
SOFTWARE FOR ANY PURPOSE, WHETHER KNOWN OR NOT KNOWN OR DISCLOSED
TO LICENSEE; (II) THE USE OR PERFORMANCE OF THE SOFTWARE OR ANY
FILES, OR COMPUTER SYSTEMS RELATED THERETO OR USED IN CONJUNCTION
THEREWITH; (III) ANY INTERRUPTION OR LOSS OF SERVICE OR USE OF THE
SOFTWARE, OR ANY FILES, DATA, OR OTHER COMPUTER SYSTEMS; (IV) ANY
SOFTWARE OR SYSTEM FAILURE; OR (V) ANY LOSS OF PROFITS, SALES,
BUSINESS, OR OTHER DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, OR
SPECIAL LOSS OR DAMAGE OF ANY KIND OR NATURE RESULTING FROM THE
FORGOING.
*/
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h>
extern long lrand48 (void); extern void srand48 (long);
static char const *pname;
static const char *const tl_domains_1[] = {
"com", "com", "com", "com",
"net", "net", "net",
"org", "org",
"edu", "edu",
"gov",
"mil",
"int",
0
};
enum { num_tl_domains_1 = (sizeof (tl_domains_1) / sizeof (char const *)) - 1 };
static const char *const tl_domains_2[] = {
"uk", /* Non-standard but frequently used. */
"su", /* Non-standard but frequently used. */
"af", "al", "dz", "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "au",
"at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm", "bt", "bo",
"ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi", "kh", "cm", "ca", "cv",
"ky", "cf", "td", "cl", "cn", "cx", "cc", "co", "km", "cg", "ck", "cr", "ci",
"hr", "cu", "cy", "cz", "dk", "dj", "dm", "do", "tp", "ec", "eg", "sv", "gq",
"er", "ee", "et", "fk", "fo", "fj", "fi", "fr", "fx", "gf", "pf", "tf", "ga",
"gm", "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gn", "gw",
"gy", "ht", "hm", "hn", "hk", "hu", "is", "in", "id", "ir", "iq", "ie", "il",
"it", "jm", "jp", "jo", "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv",
"lb", "ls", "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv",
"ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc", "mn", "ms",
"ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc", "nz", "ni", "ne", "ng",
"nu", "nf", "mp", "no", "om", "pk", "pw", "pa", "pg", "py", "pe", "ph", "pn",
"pl", "pt", "pr", "qa", "re", "ro", "ru", "rw", "kn", "lc", "vc", "ws", "sm",
"st", "sa", "sn", "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gs", "es",
"lk", "sh", "pm", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj", "tz",
"th", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv", "ug", "ua", "ae",
"gb", "us", "um", "uy", "uz", "vu", "va", "ve", "vn", "vg", "vi", "wf", "eh",
"ye", "yu", "zr", "zm", "zw",
0
};
enum { num_tl_domains_2 = (sizeof (tl_domains_2) / sizeof (char const *)) - 1 };
static char const *const word_table[] = {
"Aarhus", "abased", "abatement", "Abbott", "abduct", "Abelson",
"abeyance", "Abidjan", "abjured", "abler", "abodes", "abolitionists",
"abortive", "aboveground", "abrasions", "abrogate", "abscissas",
"absentees", "absolution", "absorbs", "abstinence", "abstractors",
"abundantly", "abutters", "academic", "accelerated", "accenting",
"acceptably", "accessed", "accident", "acclimated", "accommodation",
"accomplices", "accorded", "accosts", "Accra", "acculturate",
"accumulator", "accusative", "ace", "achieve", "acidic",
"acknowledgement", "acolytes", "acquainted", "acquired", "acquitter",
"acrobats", "actinium", "activator", "actors", "actuarially",
"acuteness", "adamantly", "adapting", "adder", "addition",
"addressee", "adducible", "Aden", "adherer", "Adirondack",
"adjourned", "adjudicating", "adjustably", "adjutants",
"administration", "admiration", "admission", "admixed", "ado",
"adopters", "adorn", "adroit", "adult", "adults", "advancing",
"adventured", "adverse", "advertising", "advisements", "advocates",
"aeration", "aeronautic", "aesthetics", "affection", "affiliated",
"affirmatively", "affliction", "affricate", "afield", "afresh",
"Afrikaner", "afternoons", "agar", "agendas", "agglomeration",
"aggravation", "aggressively", "agility", "aglow", "agonizing",
"agreer", "Ahmedabad", "aileron", "aimlessly", "airdrops",
"airfoils", "airlines", "airs", "aisle", "alabaster", "alarmingly",
"Albanians", "albumin", "alcoholism", "ale", "alertness", "Alexis",
"algebraic", "Algonquian", "aliasing", "aliens", "alimony", "Allah",
"alleges", "Allegra", "allergy", "alliances", "allocate", "allot",
"allowances", "allure", "Almaden", "aloe", "Alpert", "alphabets",
"Altair", "alterers", "alternatives", "altruism", "Alva",
"amalgamate", "amasses", "amazement", "ambiance", "ambitiously",
"ambulances", "amen", "Amerada", "Americans", "amidst", "ammunition",
"amorality", "amounted", "Ampex", "amplification", "ampoules",
"amusedly", "Anabaptists", "Anaheim", "analyses", "analyzed",
"anarchist", "anatomic", "anchored", "and", "Andover", "anecdotes",
"anesthetics", "angelic", "angiography", "Anglicans", "angst",
"animal", "animator", "anisotropy", "Annapolis", "annihilates",
"announce", "annoyed", "annular", "annunciates", "anointing",
"anonymously", "answering", "antagonized", "antedate", "anthology",
"antibacterial", "anticipations", "antigen", "antiphonal",
"antiredeposition", "antisymmetric", "Antoinette", "anxiety",
"anyway", "ape", "aphid", "apish", "Apollonian", "apology",
"Appalachian", "apparent", "appear", "appeases", "appendices",
"appetizing", "apples", "applicatively", "appointed", "apportion",
"appraisers", "appreciations", "apprentice", "approached",
"appropriates", "approvers", "appurtenance", "apt", "aqueducts",
"Arabianizes", "Aramco", "arbitration", "Arcadian", "archbishop",
"arches", "architects", "archiving", "Arden", "arenas", "Argos",
"argumentation", "aright", "aristocrats", "ark", "armament",
"armful", "Armour", "around", "arrack", "arrangements", "arrested",
"arrive", "arrogation", "arsine", "artery", "articles",
"articulatory", "artificialness", "arts", "ascendency",
"ascertained", "ascribes", "Ashland", "Asiaticization", "asker",
"aspen", "aspirating", "ass", "assassinates", "assaying", "assent",
"assertions", "assessments", "assignee", "assimilating", "assisting",
"associativity", "assuaged", "assured", "Assyriology", "asters",
"astound", "astronauts", "Asuncion", "asynchronism", "atheist",
"athleticism", "atmospheric", "atomizing", "atrociously", "attached",
"attackers", "attainments", "attendant", "attentionality",
"attenuators", "attiring", "attractions", "attributing", "Atwood",
"audaciously", "audiologist", "auditioned", "Augean", "august",
"aurally", "auscultating", "Australia", "authenticate", "authoring",
"authorizer", "autobiographies", "autodecrement", "autoincrements",
"automaton", "autopilots", "auxiliaries", "avails", "avenger",
"averaging", "averting", "avidity", "Avogadro", "avouch",
"awakening", "awareness", "awkwardly", "axers", "axiomatize",
"axons", "Aztec", "Babelize", "babying", "Bach", "backboard",
"backgrounds", "backplanes", "backspaced", "backtracked",
"backwater", "Baden", "Baffin", "baggage", "Bagrodias", "bailing",
"baked", "Baku", "balcony", "Bali", "balked", "ballasts",
"ballistics", "ballplayer", "Baltic", "Banach", "bandaging",
"bandwagon", "Bangladesh", "banister", "bankruptcy", "banquetings",
"Bantus", "baptized", "barbarity", "barbiturate", "barefooted",
"bargains", "barker", "Barnett", "barometer", "Barr", "barrenness",
"Barry", "barters", "baseballs", "basement", "BASIC", "bask",
"Bassett", "bat", "bather", "bathtubs", "batten", "battlefield",
"battleship", "Bavaria", "Bayes", "bays", "bead", "beaker", "beaner",
"Beardsley", "beatable", "beatitudes", "beauteous", "beautifying",
"Bechtel", "becoming", "bedder", "bedposts", "bedspring", "beef",
"beep", "beets", "befogged", "befriends", "beggarly", "begot",
"beguiling", "behavioristic", "beholder", "Bela", "belch", "belie",
"believes", "bellboy", "belligerent", "bellows", "belong", "Belton",
"Benares", "bending", "beneficence", "benefitting", "Bennington",
"Beograd", "berates", "Beresford", "beriberi", "Berlinizes", "berne",
"berry", "beryllium", "besieger", "bespeak", "bested", "bestselling",
"betrayed", "better", "bevel", "bewails", "bewitches", "biasing",
"bibliography", "bickers", "biddable", "Bien", "bigger", "bijection",
"bilaterally", "bilks", "billiard", "billowed", "bin", "binge",
"biochemical", "biological", "biopsy", "biplane", "birdied",
"birthday", "bisect", "Bismark", "bitches", "bitter", "bitwise",
"blabbermouth", "Blackburn", "blacking", "blackmailers",
"Blackstone", "blamable", "Blanchard", "blankest", "Blanton",
"blasphemous", "blatantly", "bleachers", "bleats", "blended",
"blimp", "blindingly", "blip", "blitz", "blobs", "blocker", "blond",
"bloodless", "bloomers", "blotting", "blubber", "bluebonnets",
"bluffs", "blunt", "blurring", "bluster", "boarders", "boastfully",
"boatloads", "bobbed", "bobwhite", "body", "Boers", "bogs",
"boilers", "boldly", "Bolshoi", "bomb", "bombers", "bonded", "bones",
"Bonneville", "book", "bookkeeper", "bookstores", "Boonton",
"bootable", "bootlegging", "borax", "borderline", "boring",
"borrower", "bosses", "botanists", "bothering", "bottling", "boughs",
"bouncy", "bounteously", "boustrophedonic", "bowdlerizes", "bowl",
"bowstrings", "boxtops", "boyish", "bracing", "brae", "braid",
"brains", "braked", "branching", "brandishing", "brashness", "brave",
"brawl", "brazen", "breached", "breading", "breakdowns",
"breakpoints", "breastwork", "breathlessly", "breeds", "Brent",
"brevets", "Brian", "brick", "brides", "Bridget", "briefcase",
"brier", "brighten", "brigs", "Brindisi", "brinkmanship", "Bristol",
"Britten", "broadcaster", "broadens", "brochures", "brokenly",
"bronchial", "brooches", "Brookline", "brother", "brown",
"brownness", "bruising", "brushes", "brutality", "Bryant",
"Buchwald", "buckles", "bud", "budge", "buds", "buffering",
"bugaboo", "bugler", "buildup", "bulged", "bulldoze", "bullied",
"bum", "bumming", "bun", "Bundy", "bunk", "buns", "buoyant",
"bureaucracies", "burgher", "burglarproofs", "burl", "burner",
"burnishing", "Burr", "burstiness", "busboy", "bushwhack",
"businesslike", "busted", "butchery", "butterers", "butting",
"buttresses", "buyers", "buzzwords", "bypasses", "bystander",
"Byzantium", "cabins", "cackle", "Cadillacs", "cager", "cajoled",
"calamitous", "calculating", "Caldwell", "calibrated", "caliphs",
"calliope", "calmest", "calorimetry", "cam", "cameraman",
"camouflages", "camped", "Canaan", "canary", "cancers", "candle",
"Canfield", "cannery", "cannonball", "canonicalize", "Cantabrigian",
"cantor", "canyon", "capacitances", "Capetown", "capitalized",
"capped", "capsule", "captivation", "capturing", "Carboloy",
"carbonized", "carcinogenic", "cardinals", "careful", "caressing",
"caring", "Carlson", "carnivals", "Carolyn", "carport", "Carroll",
"carted", "cartography", "carve", "cascading", "cashes", "caskets",
"cassock", "castles", "cat", "catalysts", "catchers", "categorizes",
"cathedrals", "Cathy", "Caucasian", "causality", "caustic",
"cautiously", "cavemen", "caw", "Cecil", "celebrates", "Celia",
"Celsius", "Cenozoic", "censuses", "centigrade", "centralizing",
"century", "ceremonies", "certification", "cessations", "chafer",
"chair", "chalice", "challenging", "champion", "chancery", "changed",
"channellers", "chants", "chaplains", "characterizable",
"charcoaled", "charismatic", "Charlotte", "chart", "chartreuse",
"chassis", "chat", "chatters", "cheapening", "cheats", "checking",
"cheek", "cheeriness", "cheesy", "chemistries", "Cherokee", "chest",
"chewer", "Chicana", "chicks", "child", "chili", "chime",
"Chinatown", "chins", "chirping", "chivalry", "Choctaw", "chokes",
"chopped", "chords", "chosen", "Christenson", "Christians",
"Christy", "chroniclers", "chubbiest", "chunks", "churchwoman",
"Cicero", "cinder", "ciphertexts", "circuitry", "circumcise",
"circumscription", "circumvents", "cites", "civet", "civilizes",
"claims", "clamoring", "clanged", "Clare", "clarity", "clasps",
"classified", "clatter", "claustrophobia", "cleaner", "cleansers",
"clearings", "cleaving", "clergyman", "cleverly", "cliff",
"climaxes", "clincher", "clinked", "clippings", "clobbers", "clod",
"cloning", "closeted", "clotheshorse", "cloudiness", "clowns",
"clue", "cluster", "cluttering", "coagulate", "coarsened", "coasts",
"coaxer", "Cobol", "cocking", "cocoon", "codfish", "codings",
"coerces", "coffee", "cogent", "cognizant", "cohering", "coin",
"coiner", "coldness", "collaborated", "collapses", "colleagues",
"collectors", "Collier", "Colombia", "colonist", "color",
"Colosseum", "columns", "comber", "combine", "comedian", "comet",
"comforting", "command", "commando", "commencement", "comment",
"commercialness", "commits", "commodore", "commonplaces",
"communicate", "communists", "compact", "companies", "comparatives",
"compartmentalized", "compatible", "compensates", "competing",
"compiler", "complaints", "completeness", "compliance", "complied",
"componentry", "composites", "comprehended", "compressible",
"compromiser", "compulsory", "computerize", "con", "concealed",
"conceited", "concentrating", "conceptualization", "concerns",
"conciseness", "concomitant", "concubine", "condemn", "condenser",
"conditioners", "conducting", "confectionery", "conferrer",
"confessors", "confidently", "confine", "confirmed", "conflicting",
"confound", "confronts", "confusion", "Congolese", "congregations",
"conic", "conjuncted", "Conklin", "connective", "connoisseur",
"conquerable", "Conrail", "consecration", "consequences",
"conservatism", "considerate", "consist", "consoled", "consonant",
"conspirator", "Constantine", "constitute", "constrained",
"construction", "consular", "consulting", "consummately",
"contagious", "contaminate", "contemplative", "contenders",
"contest", "contextually", "contingents", "continuities",
"contraception", "contractually", "contrapositives", "contrasts",
"contrite", "controllable", "conundrum", "conveniently",
"convergent", "conversely", "converting", "conveys", "convinces",
"convulse", "cookie", "Coolidge", "cooper", "cooperators", "Coors",
"copiers", "coppers", "copywriter", "core", "Corinthianizes", "corn",
"cornet", "corny", "coroutines", "corpus", "correctives",
"correlative", "corridors", "corrode", "corrupts", "Cosgrove",
"cost", "costuming", "cottons", "cough", "councilmen", "counselor",
"counteracting", "counterfeiter", "counterpoint", "counting",
"couple", "courageously", "courteously", "courtly", "covariant",
"coverings", "covetousness", "cowered", "cowling", "cozy",
"crackles", "crafting", "cram", "Cranford", "crankshaft", "crate",
"Crawford", "crazed", "creaks", "creased", "creativeness", "credit",
"Cree", "Creighton", "crept", "Crete", "cricket", "criminally",
"crippling", "critical", "critiquing", "crockery", "crooks",
"crossbars", "crossroad", "crowd", "crowns", "crucifying", "cruelly",
"crumbles", "crunches", "crushable", "crusts", "cryptanalyst",
"crystalline", "Cubans", "cuddle", "cuisine", "culminating",
"cultivating", "culturing", "Cunningham", "curable", "curfews",
"curlers", "currently", "curse", "curtailed", "curvaceous",
"cushions", "customarily", "customizes", "cutout", "Cuzco",
"cycling", "cylinders", "Cyprus", "Czechizations", "dactylic",
"daemons", "daintily", "Daley", "damagers", "damns", "damsels",
"dandelions", "dangling", "Danube", "daresay", "darling", "Darry",
"Darwinize", "database", "dating", "Dave", "dawning", "daytime",
"deacon", "deadly", "dealing", "Deanna", "deathbed", "debating",
"debited", "debuggers", "decades", "deceases", "deceives",
"decennial", "decidability", "decimated", "decisive", "declarative",
"declassify", "decoded", "decompose", "decorating", "decrease",
"decrementing", "dedicated", "deducted", "deem", "deepening",
"defaulter", "defection", "defends", "defer", "defiant", "definable",
"definitions", "deformations", "degeneracy", "degraded", "deigns",
"Delaney", "delegation", "Delhi", "deliberator", "delightedly",
"delimiting", "delirium", "delivery", "deltas", "delve", "demarcate",
"democratically", "demonic", "demonstrator", "demultiplexed",
"deniable", "Denmark", "denotationally", "dens", "dented", "Denver",
"departs", "dependent", "depletes", "deployment", "depositary",
"deprave", "depression", "deputy", "dereference", "derive",
"descendant", "describe", "descriptors", "deserts", "designated",
"designs", "desks", "despatch", "despite", "destinations",
"destroying", "destuffs", "detailed", "detecting", "detergent",
"determinately", "deterministic", "detractors", "devastating",
"deviant", "devilish", "Devon", "devour", "Dewitt", "diagnosable",
"diagonals", "dialect", "dials", "Diane", "dice", "dictating",
"dictums", "dielectrics", "dietitians", "differentials", "differing",
"diffusers", "digesting", "digitally", "dignity", "Dijkstra",
"dilemma", "diluting", "dimensions", "dimmers", "diners",
"dinnerware", "diopter", "diplomats", "directed", "director", "dirt",
"disabled", "disagreement", "disambiguation", "disappointment",
"disassemble", "disbanding", "discarding", "discharge", "disclaim",
"disconcert", "discontinue", "discourage", "discoveries",
"discretely", "discs", "disease", "disfigured", "disguise",
"dishearten", "dishonors", "disinterestedness", "disk",
"dislocating", "dismembers", "dismounting", "disorderly", "dispatch",
"dispensary", "disperses", "displayable", "disposal", "disproves",
"disqualify", "disrupting", "disseminated", "dissents", "dissipates",
"dissolved", "distantly", "distillery", "distinguish", "distract",
"distribute", "district", "disturbs", "dive", "diverse", "diversity",
"divide", "diving", "divorce", "dizziness", "docked", "doctrinaire",
"documenters", "dodging", "doggedness", "doings", "dollies", "domes",
"dominant", "Dominicans", "donates", "Donovan", "doorbell", "doper",
"Doric", "dosage", "doting", "doubles", "doubters", "doughnuts",
"downcast", "download", "downside", "Doyle", "draft", "dragged",
"drain", "dramatic", "drapery", "drawbridges", "drawnness",
"dreamed", "dredge", "dressing", "driest", "drills", "drips",
"drizzly", "drop", "droughts", "drowsy", "drummed", "drunker",
"duality", "duchess", "Dudley", "dukes", "duly", "dumped", "Dunedin",
"Dunne", "duplicators", "Durango", "Durward", "dusters", "duties",
"dwell", "dwindling", "Dyke", "dynastic", "eagerness", "early",
"earnestly", "earth", "earths", "easiest", "Easthampton", "eater",
"eavesdropping", "Eccles", "eclipsing", "economist", "ecstatic",
"Edgar", "edifice", "editorial", "Eduard", "educator", "eerie",
"effectually", "effortless", "eggs", "Egyptianize", "eigenvalue",
"eightieth", "ejaculated", "eked", "elaborations", "elbow",
"elected", "electrical", "electrocute", "electrolysis",
"electrophoresis", "elements", "elevens", "eligible", "Eliot",
"Elkhart", "ellipsoidal", "Elmhurst", "Elsevier", "eluded",
"Elysium", "embargoes", "embed", "embezzle", "embracing", "emerge",
"emigrant", "eminence", "Emmanuel", "emphasis", "empiricist",
"employments", "emptily", "emulators", "enacts", "encapsulates",
"encipher", "enclosure", "encompasses", "encourages", "encumber",
"endangers", "enders", "endorses", "endurably", "energetic",
"enforcer", "engaging", "engineering", "Englishman", "engulf",
"enjoined", "enlarged", "enlist", "ennobled", "enqueue", "enraging",
"enrollments", "ensnared", "ensurers", "enterprise",
"entertainments", "enticers", "entitling", "entrench", "entrusting",
"enumerators", "envious", "envisages", "epaulets", "Epicurus",
"Episcopalianizes", "epithet", "equal", "equalizing", "equators",
"equipoise", "equivalents", "eraser", "erected", "Erich", "Erne",
"errand", "erroneousness", "escalate", "escapees", "escorts",
"espionage", "essayed", "establish", "esteems", "Estonia",
"ethereal", "ethnic", "Euler", "Eurasia", "Europeanizes", "evades",
"Evangeline", "Eve", "evens", "Eveready", "everybody", "evidence",
"evinced", "evolve", "exacerbating", "exactness", "exalting",
"example", "excavating", "excellences", "exceptionally",
"exchangeable", "excitable", "exclaim", "excludes", "excommunicates",
"excursion", "executed", "exemplary", "exemption", "exertion",
"exhausting", "exhibitors", "exist", "exit", "expand",
"expansionism", "expecting", "expeditious", "expenditures",
"experimental", "expertly", "explained", "explicitness",
"exploiters", "exploring", "exponentiated", "exports", "exposures",
"expressibly", "expunges", "extending", "extenuated", "externally",
"extract", "extraneously", "extras", "extremists", "eyeball",
"eyepiece", "Faber", "fabrics", "facets", "facings", "factoring",
"faded", "Fahrenheit", "faint", "fairer", "Fairview", "fake", "fall",
"falls", "falsifying", "familiarities", "family", "fanciers", "fang",
"fantasy", "farewell", "farmers", "farsighted", "fascist",
"fastener", "fat", "fathered", "fatiguing", "fattest", "faulty",
"favorer", "Fayetteville", "fearsome", "feathered", "features",
"Fedora", "feeding", "fees", "feline", "felonious", "femurs",
"Ferber", "Fermi", "ferried", "fertilizers", "festively", "fetter",
"feverish", "fibbing", "fiction", "fiddlesticks", "fielders",
"fiery", "fight", "figuring", "filer", "filled", "films", "final",
"finances", "finds", "finger", "finish", "Finley", "firearm",
"fireman", "firewall", "firmly", "Fischer", "fishmonger", "fists",
"fitters", "fixate", "fixes", "flag", "flair", "flamer", "flanks",
"flashed", "flatly", "flattest", "flavorings", "fled", "fleet",
"Flemished", "Fletcherizes", "flicking", "flinching", "flirtatious",
"floats", "floodlit", "floppy", "florist", "flour", "flower", "flu",
"fluffier", "fluorescent", "fluttered", "foam", "focused",
"foggiest", "foist", "folklore", "follows", "fondness", "fooled",
"footballs", "footnote", "foraging", "forbids", "ford",
"forecasting", "foreground", "forerunners", "forestallment",
"forever", "forged", "forgetting", "forgotten", "formalisms",
"formants", "formed", "formulae", "Forrest", "forthright",
"fortiori", "fortunate", "forwardness", "foulest", "foundered",
"four", "fowl", "fractured", "fragrances", "frameworks", "Francie",
"francs", "Franklinizations", "fraternities", "frays", "Freddy",
"freed", "freeness", "freezes", "Frenchizes", "frequenter",
"fresheners", "Fresno", "Freya", "fried", "friendships",
"frightening", "fringed", "Fritz", "from", "frost", "frown",
"fruitful", "frustration", "fugitive", "fulfillment", "fumble",
"functionality", "fundamentally", "fungi", "funnily", "furnace",
"furrows", "furtively", "futile", "gabbing", "gadfly", "gagging",
"Gaines", "Galahad", "Galen", "galleried", "galloping", "Galway",
"gamed", "gangland", "gape", "garbed", "Garfield", "garment",
"garter", "gashes", "Gasset", "Gates", "Gatlinburg", "Gaulle",
"gawk", "gaze", "gears", "gelatinous", "genders", "generalized",
"generation", "generousness", "genius", "gentlemen", "geocentric",
"geological", "George", "Gerber", "Germantown", "Gerry", "getaway",
"Ghent", "Gibbs", "gifts", "giggle", "Gilead", "gimmick", "gins",
"girder", "Giuseppe", "glad", "glamorous", "glares", "glazed",
"gleaning", "Glenn", "glimmers", "glistens", "globular", "glorify",
"glossy", "glower", "Glynn", "Goa", "gobbler", "goddesses",
"godsend", "Golda", "goldsmith", "Gomez", "Goode", "goof",
"gorgeous", "gospel", "Gothicism", "Goucher", "governance", "gown",
"graced", "gradation", "gradual", "grafted", "grains", "grand",
"grandma", "grandstand", "grants", "graph", "grappling", "grassier",
"gratification", "gratuitousness", "gravestone", "graying", "great",
"greediness", "Greene", "Greenland", "greet", "grenade", "greyest",
"grieve", "grilled", "grimness", "grins", "grisly", "groaning",
"grooms", "grosser", "grotesques", "group", "Grover", "grown",
"grudgingly", "grunting", "guaranteers", "guarding", "guesses",
"guidebooks", "guilt", "guises", "gulled", "gums", "gunning",
"gushed", "gusty", "guy", "gymnast", "Haas", "habitually", "had",
"haggard", "hailstone", "hairy", "hall", "hallways", "halts",
"hamburgers", "hammers", "hams", "handcuffing", "handiest",
"handles", "handsomest", "hangers", "Hanna", "Hansel", "haplessness",
"happy", "harboring", "hardiness", "hare", "harm", "harmonics",
"harness", "Harriet", "harry", "Harvardizes", "hash", "hastened",
"hatchets", "Hathaway", "haughtiness", "haunter", "Havilland",
"Hawley", "Haywood", "headaches", "headlined", "heal", "healthier",
"heard", "heartbreak", "heated", "heave", "heaviness", "Hecate",
"hedges", "heelers", "heifer", "Heinrich", "Helena", "Hellenization",
"hells", "helpful", "hem", "hempen", "Hendrickson", "Hepburn",
"herbivorous", "hereabouts", "heretic", "Hermes", "heroes", "Herr",
"Hertzog", "Hess", "Hetman", "hewer", "hey", "Hickok", "hides",
"higher", "highness", "hikes", "Hillel", "hilts", "Hindi", "hinges",
"Hippocratic", "hirings", "hisses", "hit", "hitching", "hitting",
"hoary", "hobbyist", "Hoffman", "hold", "holidays", "Holloway",
"Holman", "Holzman", "homeomorphism", "homestead", "homogeneities",
"Honduras", "honeycombed", "Honolulu", "honors", "hoofs", "hoops",
"Hooverizes", "hopelessness", "Horatio", "horned", "horrid",
"horsefly", "hoses", "hostage", "hot", "hound", "housed", "housetop",
"hovered", "howling", "Huck", "hugely", "human", "humbled",
"humidification", "humiliates", "humorer", "Humpty", "Hungarian",
"hunks", "Huntsville", "hurricane", "hurtling", "husked", "Huston",
"Hyannis", "hyena", "hyphens", "hypothesize", "Iberia", "icebergs",
"iconoclasm", "idealism", "idem", "identifiers", "idiosyncrasies",
"idles", "ignoble", "Ike", "illicitly", "illuminates", "illustrates",
"Ilona", "imaginative", "imbibe", "immaterial", "immerse",
"imminent", "immunities", "impacts", "impasse", "impeded",
"impenetrable", "imperial", "impermissible", "impervious", "implant",
"implementing", "implications", "impolite", "impose", "impostors",
"imprecise", "impression", "imprinted", "improper", "improvisations",
"impugn", "inability", "inadequate", "inanimate", "inaugurated",
"incapable", "incenses", "inching", "incited", "inclosed",
"inclusiveness", "incompatibilities", "incomprehensible",
"inconsiderable", "incontrovertibly", "incorporating", "incredible",
"increments", "incur", "indecisive", "indentations", "indeterminacy",
"Indianapolis", "indices", "indigestible", "indirecting",
"indispensably", "individualizing", "indoctrinating", "induce",
"inductee", "indulgence", "industrially", "ineffectual", "inequity",
"inevitability", "inexperience", "infantile", "infection",
"inferiority", "infested", "infinitive", "inflammable",
"inflexibility", "influential", "informational", "infrequent",
"infuriating", "ingenuity", "ingredient", "inhale", "inheritance",
"inhibit", "inhomogeneous", "initialization", "initiated",
"injecting", "injured", "inkers", "inline", "innings", "innovative",
"inordinately", "inquiry", "insatiable", "insecure", "insertion",
"insight", "insinuation", "insolence", "inspection", "inspiring",
"installments", "instantiating", "instigators", "institutes",
"instructed", "instrumental", "insufficient", "insult", "insures",
"integers", "integrative", "intelligentsia", "intensely",
"intensively", "interact", "intercepting", "interchanging",
"interconnected", "interdependent", "interfaces", "interferometry",
"interleave", "interminable", "internal", "INTERNET", "interpolates",
"interpretations", "interrelates", "interrogations", "intersected",
"interstate", "intervention", "intestinal", "intimidated", "intone",
"intramural", "intricacy", "introduces", "intrude", "intubates",
"invaders", "invalidity", "invasions", "inventors", "invertebrates",
"investigates", "investor", "invited", "invoked", "involving",
"Ionicize", "Iranize", "ires", "irksome", "irony", "irrefutable",
"irrepressible", "irreversible", "irritate", "Isaacs", "Islamic",
"isles", "isomorphic", "Israelitize", "Istvan", "italicized",
"itemized", "iteratively", "Ivanhoe", "jabs", "Jackson", "Jacobs",
"jail", "Jamaica", "Janet", "Japan", "jarring", "Java", "jazzy",
"jeeps", "jelly", "jeopardizing", "jerks", "Jessy", "Jesuitizing",
"jeweler", "jig", "jitter", "jockstrap", "Johannes", "Johnstown",
"joked", "jolting", "Jordan", "Joshua", "journal", "journeying",
"jovial", "joystick", "Juddering", "judiciary", "juggles", "Julian",
"jump", "June", "junker", "juries", "justification", "justness",
"Kabuki", "Kamikazes", "Kantian", "Kaskaskia", "Kaufman", "keener",
"Kelley", "Kennedy", "Kentucky", "Kernighan", "Kewaunee", "keypad",
"kick", "kiddie", "Kieffer", "killer", "kilobytes", "kiloword",
"kindle", "kingdoms", "Kinney", "Kirchoff", "kissing", "kitten",
"kludge", "knead", "knell", "knighted", "knobs", "Knossos",
"knowingly", "knuckles", "Kodak", "Koreans", "Krause", "Kuala",
"lab", "laboratories", "labs", "lacerations", "lacks", "lady",
"lags", "Lakehurst", "lamed", "laminar", "lance", "landings",
"landscape", "Langford", "languishing", "lapel", "lard", "larks",
"lash", "lastly", "latent", "Latinity", "latrine", "Laue", "launch",
"launders", "Laurie", "law", "Lawrenceville", "layered", "Layton",
"leaded", "leafiest", "leak", "leanest", "learn", "leashes",
"leavened", "lectured", "leeches", "leftists", "legalize", "legged",
"legislation", "Lehigh", "Lemke", "lend", "lengths", "Lenny",
"Leonard", "Lesbian", "lessons", "letterer", "leveled", "leverage",
"levy", "lexicographically", "liars", "liberate", "libido",
"licensed", "licks", "lies", "lifelong", "lifting", "lighters",
"lights", "likened", "Lilian", "limb", "limitably", "limped",
"linden", "linearizable", "lines", "linguistically", "linking",
"lioness", "liquidation", "lisping", "listens", "liter", "lithe",
"littered", "live", "livery", "Lloyd", "loan", "lobbied",
"localization", "location", "lockers", "lockup", "lodger",
"logarithm", "logician", "loins", "Lombard", "lonelier", "longevity",
"lookahead", "looming", "loosed", "loosing", "lordship", "lose",
"lot", "loudest", "lounge", "love", "lover", "lowers", "loyally",
"Lucia", "luckily", "Ludlow", "lulled", "lumps", "Lund", "lure",
"lusciousness", "lutes", "luxuriantly", "lymph", "Lyons", "Macassar",
"mace", "machination", "MacKenzie", "macro", "Madames", "Madhya",
"Mae", "Maggie", "magna", "magnificence", "magnum", "Mahoney",
"mailer", "Maine", "maintainable", "majesty", "makers", "Malamud",
"Maldive", "malfunctions", "mallet", "Maltese", "mammoth", "manages",
"mandatory", "mangers", "mania", "manifested", "manipulated",
"mankind", "manometer", "mantels", "manufacture", "Mao", "marathon",
"marches", "Margaret", "Marietta", "Marino", "markedly", "markets",
"Marlene", "marries", "marshaling", "Martian", "martyrs", "Marxian",
"Maseru", "masks", "masquerading", "Massey", "masterly",
"masturbating", "matchless", "materials", "mathematics",
"matriarchal", "Matson", "mattresses", "maul", "Max", "maximizing",
"maybe", "mayors", "McCallum", "McCormick", "McElroy", "McGuire",
"McKinney", "McNaughton", "meals", "meaningful", "meantime",
"measures", "mechanisms", "meddle", "mediate", "Medici", "meditated",
"medium", "meeting", "megalomania", "Mekong", "Melissa", "melodrama",
"melts", "memoirs", "memorize", "menaced", "Mendelize", "Mennonite",
"mentality", "menu", "merchandiser", "mercy", "meridian", "mermaid",
"Merrymake", "messed", "messy", "metallizations", "metaphysics",
"meter", "methodists", "meting", "mettlesome", "Meyers", "Michelson",
"microbicidal", "microeconomics", "Micronesia", "microprocessors",
"microscopy", "microwords", "Middletown", "midsection",
"Midwesterner", "mighty", "Mikhail", "mileage", "milked", "milled",
"millinery", "milliseconds", "Miltonian", "mimic", "Mindanao",
"minefield", "mingling", "minima", "minimizing", "mink", "minority",
"minting", "minuter", "mire", "misbehaving", "misconception",
"misers", "mislead", "misplaces", "missing", "Missouri",
"mistakenly", "mistrusted", "misunderstandings", "mitigates",
"mixers", "moaned", "moccasins", "modality", "moderated",
"modernizing", "modifiable", "Modula-3", "modulates", "modus",
"Mohammedanize", "molar", "molecules", "mollify", "momentarily",
"monadic", "Monet", "Monica", "monks", "monograms", "monopoly",
"monotonousness", "Mont", "Montgomery", "monumental", "mooning",
"mooring", "morale", "Moravianizeds", "Moriarty", "morphine",
"Morse", "mortem", "mosaic", "mosquito", "mothball", "motif",
"motivates", "motorcycles", "mottoes", "mountaineering", "mourned",
"mousetrap", "movable", "movings", "mucus", "muddling", "muffling",
"mule", "multicasts", "multiple", "multiplicands", "multiplying",
"multiuser", "mummies", "municipal", "murder", "murmured",
"muscling", "mushroom", "musicians", "muskrats", "mustache",
"mutandis", "muted", "mutter", "muzzle", "Mysore", "mythical",
"Nagasaki", "Nairobi", "name", "naming", "nanoseconds",
"Napoleonize", "narrow", "nasally", "Nat", "nationalities",
"nationwide", "naturally", "nausea", "navigated", "Nazi", "nearest",
"Nebraska", "necessitates", "necktie", "needled", "Neff", "negators",
"negotiated", "Negroizes", "Nell", "Nepali", "nest", "nether",
"Neumann", "neutral", "Nevada", "newcomer", "newness", "newsstand",
"nibbled", "nicer", "nicker", "nieces", "nightclub", "nihilism",
"nimbly", "ninety", "nitrogen", "nobles", "nodes", "noisily",
"nomination", "nonconsecutively", "nondeterminism", "nonidempotent",
"nonlocal", "nonpersistent", "nonspecialist", "nontrivial",
"noontime", "normal", "Normandy", "Norse", "northernly", "Norway",
"nostril", "notation", "notes", "notification", "notoriety",
"nourishes", "Novembers", "nuances", "nude", "nullifiers",
"numberless", "numeric", "nursed", "nutria", "nymphomaniac", "oars",
"obedient", "obfuscatory", "objector", "obligingly", "obliviously",
"obscuring", "observe", "obsolete", "obstructing", "obviated",
"occasionally", "Occidentalizes", "occupancy", "occupying", "oceans",
"Octavia", "oddity", "odiously", "Oedipus", "offensive", "office",
"officious", "oft", "oilers", "Oklahoma", "Olduvai", "Olivers",
"Olympic", "ominously", "omnipresent", "ones", "onset", "oozed",
"opened", "operandi", "operative", "opossum", "oppose", "oppresses",
"optical", "optimization", "optional", "oral", "orb", "orchestra",
"order", "ordinariness", "Orestes", "organizations", "orgy",
"orientations", "originate", "Orion", "ornamenting", "Orphically",
"Orville", "oscillating", "Oslo", "Ostrander", "Ottawa", "ought",
"outbreaks", "outdoor", "outgrown", "outlay", "outliving", "outputs",
"outset", "outstrips", "outwit", "overall", "overcrowding",
"overestimating", "overhead", "overlapped", "overlooked",
"overprint", "overruled", "overshadow", "oversimplifying",
"overtake", "overtone", "overviews", "overwrites", "owl", "Oxford",
"Ozarks", "pacific", "packaged", "packet", "paddock", "paged",
"paid", "paint", "pairs", "palates", "palest", "pallid", "pals",
"Panamanian", "pane", "panic", "pansy", "pantries", "paperer", "par",
"paradigm", "paragraph", "parallelism", "paralyzes", "parameters",
"parapets", "parasol", "pardonable", "parental", "pares",
"Parisianization", "Parkhouse", "parliamentarian", "paroling",
"parsed", "Parsons", "partial", "particle", "partition",
"partridges", "Passaic", "passionately", "passwords", "pastness",
"patch", "patenter", "pathname", "patient", "patrician",
"patrolling", "pats", "patters", "Pauline", "pause", "paving",
"payable", "Paynize", "peaceable", "peaked", "pearl", "pebble",
"peculiarity", "peddle", "peek", "peephole", "Peggy", "pelts",
"penalty", "Pendleton", "penetration", "penitent", "Pensacola",
"penthouse", "peppering", "perceivable", "percentile", "perch",
"perennially", "perfects", "perfumed", "perilous", "peripherally",
"perishes", "permeable", "permissions", "permutes", "perpetrating",
"perpetuation", "persecution", "Pershing", "persistent",
"personalize", "persons", "persuaders", "pertains", "peruser",
"pervading", "pesticide", "Peterson", "petter", "pews", "phase",
"phenomenally", "philharmonic", "Phillip", "philosophizer",
"phoneme", "phosphate", "photocopy", "photographs", "phrasing",
"physicians", "pianist", "picked", "Pickford", "picky", "picture",
"piecemeal", "Pierre", "piggy", "pigskin", "pilferage", "pillared",
"pimple", "pineapples", "pinkest", "pinochle", "pion", "pipeline",
"Piraeus", "pistols", "piteous", "pithy", "pits", "Pius", "place",
"placidly", "plainer", "plaintively", "planeload", "planing",
"plans", "plasma", "plateaus", "platitude", "plausible",
"playground", "playtime", "pleas", "pleat", "plenipotentiary",
"pliers", "plotters", "pluck", "plumage", "plumped", "plunger",
"Plutarch", "Pocahontas", "podia", "poetics", "pointedly",
"poisoned", "pokes", "polemic", "poling", "politeness", "polka",
"pollutes", "Polynesia", "Pompeii", "pondered", "pony", "poorly",
"popping", "popularizes", "porcelain", "porker", "portal",
"porterhouse", "portmanteau", "Portugal", "posited", "positron",
"possessive", "post", "posters", "postorder", "postulates",
"potatoes", "potentiating", "potted", "pounce", "poured", "poverty",
"powerfully", "practical", "pragmatic", "praises", "Pratt",
"preachers", "preassigns", "precedent", "precious", "precipitation",
"precluding", "precondition", "predecessors", "predicament",
"predicted", "predominantly", "preemption", "prefer", "prefixed",
"prejudice", "premeditated", "preoccupation", "prepared",
"preprocessed", "Presbyterianism", "preselected", "presently",
"preset", "pressed", "prestidigitate", "presumptive", "pretenders",
"pretexts", "prevailingly", "preventive", "preying", "pricked",
"prim", "primer", "princely", "principle", "prints", "prisoners",
"privilege", "pro", "probation", "problematically", "proceeds",
"proclaimers", "procrastinating", "procurements", "produce",
"productively", "professionalism", "proficient", "profiteer",
"progenitor", "programs", "prohibiting", "projections",
"proliferate", "prolonged", "promise", "promotion", "prompts",
"pronoun", "proof", "propagation", "proper", "prophesy",
"proportioned", "proposing", "proprietary", "proscenium",
"proselytize", "prospections", "prosperity", "protect", "protects",
"protestations", "Protophyta", "protrude", "Proust", "proverbial",
"providing", "proviso", "prowlers", "prudently", "Prussianizations",
"pseudoinstruction", "psycho", "psychopathic", "Ptolemaists",
"publicizing", "puckered", "puffin", "pulleys", "pulping", "puma",
"punched", "pundit", "Punjab", "pupils", "purchasers", "purges",
"purist", "purport", "purposely", "pursue", "Pusan", "pussy",
"puzzle", "Pyle", "Pythagoreanizes", "quadrangular", "quadrillion",
"quails", "Quakerizes", "qualifying", "quantification", "quantities",
"quark", "quartered", "quasar", "quavers", "queerly", "querying",
"questioners", "queuer", "quickens", "quieted", "quilting", "quirky",
"quivers", "quorum", "quoting", "race", "racing", "radars",
"radiating", "radioactive", "radix", "raged", "raider", "railroader",
"raincoats", "raise", "Raleigh", "rambler", "rampant", "ranches",
"randomly", "Rangoon", "rankings", "ransoming", "rape", "rapport",
"rareness", "rashness", "rated", "rating", "rationalize", "rattled",
"ravager", "raves", "rawly", "razor", "reacher", "reactivate",
"read", "reading", "realign", "realizable", "realms", "reaping",
"rearrange", "reasonable", "reassembling", "reassured", "rebelled",
"reboot", "rebuff", "rebutted", "recalibrates", "recapture",
"receipt", "recentness", "recessed", "reciprocate", "recitals",
"reckon", "reclaiming", "recode", "recognizer", "recollection",
"recommender", "recomputing", "reconfigured", "reconsidered",
"record", "recourse", "recreating", "rectangle", "recurrent",
"recursively", "redder", "redeemers", "redesigned", "redirections",
"redneck", "redressing", "reducing", "Reedville", "reeling",
"reenters", "reevaluation", "referees", "referentiality",
"refilling", "reflected", "reflexes", "reformats", "reformulating",
"refresh", "refrigerators", "refuses", "regaining", "regenerate",
"regimen", "regions", "regressed", "regrettably", "regulate",
"rehabilitate", "Reid", "rein", "reinforces", "reinserting",
"reintroduce", "reiterating", "rejoiced", "relabeling", "relational",
"relativistically", "relaying", "relented", "reliable", "reliever",
"relinquished", "reloaded", "reluctance", "remark", "remedying",
"reminding", "remnants", "remorse", "remover", "renamed",
"rendezvous", "renewer", "Rensselaer", "Renville", "reorganizations",
"repairman", "repeal", "repeating", "repercussion", "rephrased",
"replacing", "repletion", "reply", "reposes", "representably",
"represents", "reprieving", "reproaching", "reproduction",
"reptilian", "repugnant", "reputations", "require", "requisitions",
"rescue", "researching", "resembles", "reservations", "resettings",
"residual", "resins", "resistivity", "resolved", "resorting",
"respectability", "respects", "responder", "responsively",
"restating", "restless", "restrain", "restriction", "result",
"resuming", "resurrects", "retained", "retarder", "reticulate",
"retired", "retraces", "retrains", "retreating", "retrieved",
"retrospection", "retyped", "reuse", "revealed", "revenge",
"reverent", "reverse", "reverts", "revise", "revival", "revoker",
"revolutionary", "revulsion", "reworked", "rhapsody", "rhino",
"rhyme", "ribbing", "rich", "Richmond", "ricochet", "riders",
"ridiculous", "rifles", "righteously", "rightward", "rill",
"ringing", "Rio", "ripely", "rips", "risking", "rival", "riverside",
"roadbed", "roams", "rob", "robed", "Robinson", "Rochester",
"rocketed", "rod", "Roger", "rollers", "Romanesque", "Romeldale",
"roof", "roomers", "roosters", "roping", "Roseland", "Rosie",
"rotary", "rotor", "roughen", "rounder", "roundworm", "router",
"roves", "Rowley", "Royce", "rubble", "ruby", "Rudolf", "ruffles",
"ruining", "rum", "rummage", "run", "runoff", "rural", "Russia",
"rusticates", "rut", "Ryan", "Sabine", "sacred", "sacrilege",
"saddled", "safari", "safest", "sages", "sailboat", "saintly",
"salaried", "salesmen", "Salle", "salted", "salutation", "salvages",
"sameness", "Sampson", "Sancho", "sanctuary", "Sandia", "sane",
"sanity", "sapiens", "Saran", "Sartre", "sated", "satisfactorily",
"saturating", "saucer", "sausage", "save", "savor", "sawfish",
"Saxonizes", "scab", "scalars", "scallops", "Scandinavia",
"scantily", "scarcity", "scarves", "scenes", "Schantz", "schema",
"scheming", "Schoenberg", "schoolboy", "schoolrooms", "Schuman",
"scientifically", "scoffer", "scoot", "scoreboard", "scornful",
"Scotia", "scoundrels", "scowl", "scrap", "scratched", "scream",
"screened", "scribble", "scripts", "scruple", "scuffles", "scurry",
"seaboard", "sealed", "seamy", "searching", "seaside", "seasons",
"seceded", "seconded", "secretaries", "secrets", "secular", "sedge",
"seduces", "seedling", "seem", "seeps", "segmentations", "Seidel",
"select", "selectors", "Selkirk", "semantic", "semi", "seminary",
"Semitize", "sends", "sense", "sensitive", "sentence", "sentries",
"separations", "sequels", "sequentialized", "serendipitous",
"serializability", "serif", "serum", "serviceable", "servomechanism",
"setting", "setups", "sever", "severities", "sewing", "sextuplet",
"shackled", "shading", "shafts", "Shakespearean", "shallowly",
"shaming", "Shantung", "shaping", "sharer", "sharpened",
"shattering", "shawl", "sheath", "sheep", "Shelby", "sheltering",
"shepherds", "Sherwin", "shifter", "shill", "shiner", "shiny",
"shipping", "shirks", "Shmuel", "shod", "shone", "shopped", "short",
"shortens", "shortsighted", "shoulders", "shovels", "showers",
"shredder", "shrieked", "shrink", "shrubs", "shuffleboard",
"shutoff", "shuttling", "Sibley", "sickle", "sidecar", "sidewalk",
"Sieglinda", "sifting", "sights", "signals", "signification",
"Sikkimese", "silhouette", "silkily", "silted", "silvery", "simmers",
"simplest", "simplify", "simulating", "Sinbad", "sinewy", "singers",
"singling", "sinker", "sinuous", "sir", "sisters", "sitters",
"situations", "sixties", "skated", "skepticism", "skewed", "skiing",
"skimp", "skinning", "skirmished", "Skopje", "skunks", "skyrockets",
"slain", "slanted", "slashing", "slaughters", "Slavizations",
"slays", "sleepily", "sleeves", "slice", "slide", "slightness",
"slip", "slits", "sloped", "sloth", "Slovenia", "slug", "slumped",
"smack", "smalltime", "smashers", "smelling", "smirk", "smock",
"smokestack", "smoothed", "smothers", "smutty", "snakes",
"snapshots", "snatches", "sneakiness", "sneezes", "snipe", "snoopy",
"snout", "snowing", "snuffer", "soak", "soaring", "sobs",
"socializes", "sociology", "Soddy", "softening", "soiling", "solder",
"solemnness", "solid", "soliloquy", "solstice", "solvers", "someday",
"somewhat", "songs", "soonest", "Sophie", "sordid", "sorghum",
"sort", "sound", "souped", "sourness", "southernmost", "sovereigns",
"spacer", "spades", "Spaniardize", "spanned", "sparer", "sparring",
"Spartanizes", "Spaulding", "Speakerphones", "specialists", "specie",
"specifiers", "specks", "spectra", "spectroscopic", "speculators",
"speedily", "spellers", "Spenglerian", "Spica", "spigot", "spinach",
"spinoff", "spirited", "spiteful", "splashed", "splicer",
"splintery", "spoilers", "sponged", "spontaneity", "spools",
"sporting", "spot", "spouses", "sprawls", "spreads", "springier",
"sprinkling", "sprouted", "spurned", "spyglass", "squall",
"squaring", "squawks", "squeeze", "squire", "squishy", "stabilizers",
"stacked", "Stafford", "stagger", "stain", "stairwell", "stalk",
"stamen", "stampede", "stanchion", "standing", "Stans", "starboard",
"stark", "start", "startups", "Staten", "stationed", "statistics",
"statute", "staved", "steadier", "stealing", "steaming", "steeling",
"steeples", "Steinbeck", "stencil", "Stephen", "stereo",
"sterilizer", "Stetson", "stewardess", "stickiness", "stiffness",
"still", "stilts", "stimuli", "stint", "stirred", "stitching",
"stockholders", "stoke", "stomp", "stooped", "stopper",
"storekeeper", "storm", "Stouffer", "straddle", "straightened",
"strainer", "strange", "strangling", "strategist", "stratum",
"streaked", "streamlining", "strengthening", "stretch", "strict",
"strike", "stringently", "striped", "striving", "strokes",
"strongest", "structurer", "strychnine", "stubs", "studious",
"stuffy", "stunning", "stupidity", "Stygian", "stylistic",
"subclass", "subcycle", "subdue", "subgoals", "subjective",
"sublimed", "submission", "submultiplexed", "subphases", "subranges",
"subscribing", "subsequence", "subsidiary", "subsistent",
"substantiate", "substitutability", "substrings", "subterfuge",
"subtly", "subtree", "subverted", "successes", "succinctness",
"sucking", "suds", "suffering", "suffixed", "suffragette",
"suggestions", "suitable", "suitors", "sulks", "sultans",
"summarily", "Summer", "summoning", "sunburn", "sunglass", "suns",
"supercomputer", "supergroups", "superiority", "superposes",
"superset", "supervisor", "supplement", "supplies", "supportively",
"suppresses", "surely", "surged", "surmised", "surpassing",
"surrendering", "surtax", "survives", "suspecting", "suspensions",
"sustenance", "swab", "swallows", "swanky", "swarming", "swaying",
"sweats", "sweepers", "sweetenings", "swelled", "swift", "swimsuit",
"swirl", "switcher", "swoon", "swung", "syllogistic", "symbolically",
"symmetrical", "sympathizing", "symptoms", "synchronizes",
"syndrome", "synopses", "synthesizers", "syringe", "systemic",
"tablecloths", "taboos", "tachometer", "tact", "tailed", "Taiwanese",
"talents", "talks", "tallow", "tamer", "tampers", "tangle",
"tantalizingly", "taped", "tapper", "target", "tartness", "taste",
"Tate", "taunting", "taverns", "taxied", "Taylorizes", "team",
"tease", "technically", "technology", "teen", "Teflon", "telegraph",
"teleology", "telescoped", "television", "Telnet", "tempered",
"Templeton", "tempters", "tendencies", "Tenex", "tensely",
"tentacles", "terminal", "terming", "terraces", "terrific",
"terroristic", "testability", "testifiers", "Tex", "Textron", "than",
"thanksgiving", "the", "theirs", "Theodosian", "theorist",
"therapeutic", "thereof", "thermometers", "thick", "thieve", "think",
"third", "thirtieth", "thorn", "Thorstein", "thousand", "threaded",
"three", "thriller", "throats", "throttled", "thrush", "Thule",
"thundered", "thus", "tick", "ticks", "tidy", "tigers", "tightly",
"tilled", "Tim", "timeout", "timetables", "Tims", "tinily",
"tinniest", "Tioga", "tire", "tissue", "Tito", "toasts", "toggle",
"toils", "tolerances", "tolls", "Tommie", "tongue", "tonsil",
"toothbrush", "topmost", "torch", "tornadoes", "tortoises",
"Toryizes", "totalities", "tottering", "touchingly", "touring",
"toweling", "Townsend", "traceable", "tracking", "trade",
"tradition", "tragedy", "trained", "trajectories", "trance",
"transceivers", "transcribes", "transference", "transformations",
"transiency", "transition", "translate", "transmissions",
"transparencies", "transplants", "transpose", "trapezoids",
"travail", "traversed", "treachery", "treasuring", "treaty",
"trembling", "Trenton", "triangle", "tribunals", "trickier", "trier",
"trigonometric", "trim", "trinket", "Tristan", "trivially", "troops",
"troubled", "troubling", "truce", "Trudy", "truly", "truncating",
"trustfulness", "truths", "tubs", "tufts", "tumblers", "tuner",
"tunnels", "Turing", "turned", "turret", "Tutankhamen", "twain",
"twig", "twinkler", "twister", "twofold", "typeout", "typify",
"tyrant", "ugliest", "ultimate", "unabbreviated", "unaffectedly",
"unanimous", "unattractive", "unbearable", "unbreakable",
"unchangeable", "uncles", "unconditional", "unconventional",
"uncovered", "undefined", "underflow", "underground", "underlying",
"underplays", "understands", "underway", "undetectable", "undo",
"undue", "unending", "unevenly", "unfairly", "unfit", "unfortunate",
"ungrounded", "Unibus", "unifiers", "unimpeded", "uninterestingly",
"unionizing", "Unitarian", "Univac", "UNIX", "unknown", "unlikely",
"unlock", "unmatched", "unnaturalness", "unobtainable",
"unparalleled", "unpredictably", "unqualified", "unrealistic",
"unreported", "unrolling", "unscrupulous", "unshared",
"unsteadiness", "unsynchronized", "until", "untried", "unveiled",
"unwind", "unworthiness", "updater", "upholders", "uplift",
"uprisings", "upstairs", "urban", "urgings", "Urquhart", "usages",
"user", "usurped", "utilized", "utterances", "vacate", "vacuous",
"vaginas", "valence", "valiantly", "Valletta", "value", "Vancement",
"vanes", "vanquish", "variableness", "varied", "varying", "vastness",
"Vaughn", "vector", "Vegas", "vehemence", "veined", "venerable",
"venomously", "Ventura", "Vera", "verbose", "verifiability",
"veritable", "versa", "versus", "vest", "veterinary", "viability",
"vice", "Vicksburg", "Victoria", "victual", "Vienna", "viewer",
"vignette", "vilification", "villain", "vindictively", "violates",
"violin", "virginity", "virus", "visibly", "visitor", "visualizes",
"Vivaldi", "vocally", "voicers", "volcanic", "voltage",
"volunteering", "voters", "vowed", "voyaging", "vultures", "wafer",
"waging", "wailed", "waiter", "waiving", "Walcott", "walker",
"walling", "walruses", "Walworth", "waned", "wantonly", "Warburton",
"warehousing", "warmers", "warnings", "warrants", "wartime",
"washing", "wastefulness", "watchfulness", "Watergate", "waterways",
"Wausau", "wavelengths", "waxing", "weakening", "wean", "wearily",
"weathercock", "Webb", "wedging", "Weeks", "weigh", "Weinstein",
"welcomed", "well", "welsh", "Werther", "Westfield", "wet",
"whacking", "whatever", "wheelers", "where", "whim", "whined",
"whips", "whisked", "whistle", "Whitehorse", "whiter", "Whitmanize",
"whizzes", "wholesalers", "whores", "wicks", "widest", "wielder",
"Wilbur", "wiles", "Willa", "Williamson", "willows", "wilting",
"wind", "windy", "wings", "Winnetka", "Winsett", "wiper", "wiretaps",
"wiser", "wistful", "withdrawal", "withholder", "witness", "woe",
"woman", "wondering", "Woodard", "woodland", "woodworking", "wool",
"worded", "workbench", "workings", "worldliness", "worriers",
"worshiping", "worthwhile", "wrangle", "wrath", "wrecking",
"wrestles", "wriggling", "wristwatches", "writing", "wrought",
"Xanthus", "Xhosa", "yanking", "yarns", "yearned", "yelling", "yelp",
"yesterdays", "Yokohama", "Yosemite", "yours", "Yugoslav", "Zagreb",
"zebras", "zeros", "zinc", "zone", "Zoroaster",
0
};
enum { num_words = (sizeof (word_table) / sizeof (char const *)) - 1 };
static void usage (void)
{
fprintf (stderr, "%s: usage `%s'\n", pname, pname); exit (1);
}
static char const * random_word (void)
{
register unsigned rnd = (unsigned) lrand48 ();
/* The following computation will not yield a perfectly random distribution
(except in cases where the value RAND_MAX+1 is evenly divisible by the
current value of 'num_words') but as long as 'num_words' remains small
(relative to RAND_MAX+1) the distribution is close enough to being per-
fectly random for our purposes. */
register unsigned selection = rnd % num_words;
return word_table[selection];
}
static char const * random_letter (void)
{
static char buf[2]; register unsigned rnd = (unsigned) lrand48 ();
/* The following computation will not yield a perfectly random distribution
(except in cases where the value RAND_MAX+1 is evenly divisible by the
current value of 'num_words') but as long as 'num_words' remains small
(relative to RAND_MAX+1) the distribution is close enough to being per-
fectly random for our purposes. */
register unsigned selection = rnd % 26;
buf[0] = 'a' + selection; return buf;
}
static char const * random_domain (void)
{
register unsigned rnd1 = (unsigned) lrand48 (); register unsigned rnd2 = (unsigned) lrand48 ();
/* The following computation will not yield a perfectly random distribution
(except in cases where the value RAND_MAX+1 is evenly divisible by the
current value of 'num_words') but as long as 'num_words' remains small
(relative to RAND_MAX+1) the distribution is close enough to being per-
fectly random for our purposes. */
return (rnd1 & 7)
? tl_domains_1[rnd2 % num_tl_domains_1]
: tl_domains_2[rnd2 % num_tl_domains_2];
}
static void gen_random_words (register unsigned min_words, register unsigned max_words)
{
register unsigned num_words; register unsigned i;
num_words = min_words + (((unsigned) lrand48 ()) % (max_words - min_words));
for (i = 0; i < num_words; i++)
{
fputs (random_word (), stdout);
if ((i + 1) < num_words)
putchar (' ');
}
}
int
main (int argc, char *argv[])
{
register unsigned i; register unsigned num_addresses; register unsigned num_links;
pname = strrchr (argv[0], '/'); pname = pname ? pname+1 : argv[0];
if (argc != 1)
usage ();
srand48 ((unsigned) time ((time_t *) 0));
fputs ("Content-Type: text/html\n"
"\n"
"<html>\n"
"<head>\n"
"<title>", stdout);
gen_random_words (2, 6);
puts ("</title>\n"
"<meta name=\"ROBOTS\" content=\"NOINDEX, NOFOLLOW\">\n"
"</head>\n"
"<body bgcolor=white>\n"
"<big>");
gen_random_words (10, 30);
puts ("<p>");
num_addresses = 1 + (((unsigned) lrand48 ()) & 0x1f);
for (i = 0; i < num_addresses; i++)
{
char addr_buf[1024];
strcpy (addr_buf, random_word ());
strcat (addr_buf, "@");
if ((((unsigned) lrand48 ()) % 4) == 0)
{
strcat (addr_buf, random_word ());
strcat (addr_buf, ".");
}
strcat (addr_buf, random_word ());
strcat (addr_buf, random_letter ());
strcat (addr_buf, ".");
strcat (addr_buf, random_domain ());
printf ("<a href=\"mailto:%s\">%s</a><br>\n", addr_buf, addr_buf);
}
puts ("<p>");
gen_random_words (2, 20);
puts ("<p>");
num_links = 1 + (((unsigned) lrand48 ()) & 0x3f);
for (i = 0; i < num_links; i++)
{
fputs ("<a href=\"", stdout);
fputs (pname, stdout);
putchar ('/');
fputs (random_word (), stdout);
puts ("\">");
gen_random_words (1, 9);
puts ("</a><br>\n");
}
puts ("<p>");
gen_random_words (2, 20);
puts ("</big>\n"
"</body>\n"
"</html>");
return 0;
}