summaryrefslogtreecommitdiffstats
path: root/testing/condprofile/condprof/scenarii
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:44:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:44:51 +0000
commit9e3c08db40b8916968b9f30096c7be3f00ce9647 (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /testing/condprofile/condprof/scenarii
parentInitial commit. (diff)
downloadthunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.tar.xz
thunderbird-9e3c08db40b8916968b9f30096c7be3f00ce9647.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/condprofile/condprof/scenarii')
-rw-r--r--testing/condprofile/condprof/scenarii/__init__.py15
-rw-r--r--testing/condprofile/condprof/scenarii/bookmark.js52
-rw-r--r--testing/condprofile/condprof/scenarii/full.py138
-rw-r--r--testing/condprofile/condprof/scenarii/settled.py11
-rw-r--r--testing/condprofile/condprof/scenarii/settled2.py19
-rw-r--r--testing/condprofile/condprof/scenarii/settled_youtube.py20
-rw-r--r--testing/condprofile/condprof/scenarii/sync.js21
-rw-r--r--testing/condprofile/condprof/scenarii/urls.txt7
-rw-r--r--testing/condprofile/condprof/scenarii/words.txt4555
9 files changed, 4838 insertions, 0 deletions
diff --git a/testing/condprofile/condprof/scenarii/__init__.py b/testing/condprofile/condprof/scenarii/__init__.py
new file mode 100644
index 0000000000..b665843b2b
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/__init__.py
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from condprof.scenarii.full import full
+from condprof.scenarii.settled import settled
+from condprof.scenarii.settled2 import settled2
+from condprof.scenarii.settled_youtube import settled_youtube
+
+scenarii = {
+ "full": full,
+ "settled": settled,
+ "settled-youtube": settled_youtube,
+ "settled2": settled2,
+}
diff --git a/testing/condprofile/condprof/scenarii/bookmark.js b/testing/condprofile/condprof/scenarii/bookmark.js
new file mode 100644
index 0000000000..70ef028320
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/bookmark.js
@@ -0,0 +1,52 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+// 'arguments' is defined by the marionette harness.
+/* global arguments */
+
+const { PlacesUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/PlacesUtils.sys.mjs"
+);
+
+let resolve = arguments[3];
+
+try {
+ // Get the number of current bookmarks
+ PlacesUtils.promiseBookmarksTree(PlacesUtils.bookmarks.unfiledGuid, {
+ includeItemIds: true,
+ }).then(root => {
+ let count = root.itemsCount;
+ let maxBookmarks = arguments[2];
+ // making sure we don't exceed the maximum number of bookmarks
+ if (count >= maxBookmarks) {
+ let toRemove = count - maxBookmarks + 1;
+ console.log("We've reached the maximum number of bookmarks");
+ console.log("Removing " + toRemove);
+ let children = root.children;
+ for (let i = 0, p = Promise.resolve(); i < toRemove; i++) {
+ p = p.then(
+ _ =>
+ new Promise(resolve =>
+ PlacesUtils.bookmarks.remove(children[i].guid).then(res => {
+ console.log("removed one bookmark");
+ resolve(res);
+ })
+ )
+ );
+ }
+ }
+ // now adding the bookmark
+ PlacesUtils.bookmarks
+ .insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: arguments[0],
+ title: arguments[1],
+ })
+ .then(res => {
+ resolve(res);
+ });
+ });
+} catch (error) {
+ let res = { logs: {}, result: 1, result_message: error.toString() };
+ resolve(res);
+}
diff --git a/testing/condprofile/condprof/scenarii/full.py b/testing/condprofile/condprof/scenarii/full.py
new file mode 100644
index 0000000000..ec93b48b46
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/full.py
@@ -0,0 +1,138 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import asyncio
+import os
+import random
+
+from arsenic.errors import UnknownArsenicError, UnknownError
+
+from condprof.helpers import TabSwitcher, execute_async_script, is_mobile
+from condprof.util import get_credentials, logger
+
+BOOKMARK_FREQUENCY = 5
+MAX_URLS = 150
+MAX_BOOKMARKS = 250
+CallErrors = asyncio.TimeoutError, UnknownError, UnknownArsenicError
+
+
+class Builder:
+ def __init__(self, options):
+ self.options = options
+ self.words = self._read_lines("words.txt")
+ self.urls = self._build_url_list(self._read_lines("urls.txt"))
+ self.sync_js = self._load_script("sync")
+ self.max_bookmarks = options.get("max_bookmarks", MAX_BOOKMARKS)
+ self.bookmark_js = self._load_script("bookmark")
+ self.platform = options.get("platform", "")
+ self.mobile = is_mobile(self.platform)
+ self.max_urls = options.get("max_urls", MAX_URLS)
+
+ # see Bug 1608604 & see Bug 1619107 - we have stability issues @ bitbar
+ if self.mobile:
+ self.max_urls = min(self.max_urls, 20)
+
+ logger.info("platform: %s" % self.platform)
+ logger.info("max_urls: %s" % self.max_urls)
+ self.bookmark_frequency = options.get("bookmark_frequency", BOOKMARK_FREQUENCY)
+
+ # we're syncing only on desktop for now
+ self.syncing = not self.mobile
+ if self.syncing:
+ self.username, self.password = get_credentials()
+ if self.username is None:
+ raise ValueError("Sync operations need an FxA username and password")
+ else:
+ self.username, self.password = None, None
+
+ def _load_script(self, name):
+ return "\n".join(self._read_lines("%s.js" % name))
+
+ def _read_lines(self, filename):
+ path = os.path.join(os.path.dirname(__file__), filename)
+ with open(path) as f:
+ return f.readlines()
+
+ def _build_url_list(self, urls):
+ url_list = []
+ for url in urls:
+ url = url.strip()
+ if url.startswith("#"):
+ continue
+ for word in self.words:
+ word = word.strip()
+ if word.startswith("#"):
+ continue
+ url_list.append((url.format(word), word))
+ random.shuffle(url_list)
+ return url_list
+
+ async def add_bookmark(self, session, url, title):
+ logger.info("Adding bookmark to %s" % url)
+ return await execute_async_script(
+ session, self.bookmark_js, url, title, self.max_bookmarks
+ )
+
+ async def sync(self, session, metadata):
+ if not self.syncing:
+ return
+ # now that we've visited all pages, we want to upload to FXSync
+ logger.info("Syncing profile to FxSync")
+ logger.info("Username is %s, password is %s" % (self.username, self.password))
+ script_res = await execute_async_script(
+ session,
+ self.sync_js,
+ self.username,
+ self.password,
+ "https://accounts.stage.mozaws.net",
+ )
+ if script_res is None:
+ script_res = {}
+ metadata["logs"] = script_res.get("logs", {})
+ metadata["result"] = script_res.get("result", 0)
+ metadata["result_message"] = script_res.get("result_message", "SUCCESS")
+ return metadata
+
+ async def _visit_url(self, current, session, url, word):
+ await asyncio.wait_for(session.get(url), 5)
+ if current % self.bookmark_frequency == 0 and not self.mobile:
+ await asyncio.wait_for(self.add_bookmark(session, url, word), 5)
+
+ async def __call__(self, session):
+ metadata = {}
+
+ tabs = TabSwitcher(session, self.options)
+ await tabs.create_windows()
+ visited = 0
+
+ for current, (url, word) in enumerate(self.urls):
+ logger.info("%d/%d %s" % (current + 1, self.max_urls, url))
+ retries = 0
+ while retries < 3:
+ try:
+ await self._visit_url(current, session, url, word)
+ visited += 1
+ break
+ except CallErrors:
+ await asyncio.sleep(1.0)
+ retries += 1
+
+ if current == self.max_urls - 1:
+ break
+
+ # switch to the next tab
+ try:
+ await asyncio.wait_for(tabs.switch(), 5)
+ except CallErrors:
+ # if we can't switch, it's ok
+ pass
+
+ metadata["visited_url"] = visited
+ await self.sync(session, metadata)
+ return metadata
+
+
+async def full(session, options):
+ builder = Builder(options)
+ return await builder(session)
diff --git a/testing/condprofile/condprof/scenarii/settled.py b/testing/condprofile/condprof/scenarii/settled.py
new file mode 100644
index 0000000000..eb54f4638b
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/settled.py
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import asyncio
+
+
+async def settled(session, options):
+ # nothing is done, we just settle here for 30 seconds
+ await asyncio.sleep(options.get("sleep", 30))
+ return {}
diff --git a/testing/condprofile/condprof/scenarii/settled2.py b/testing/condprofile/condprof/scenarii/settled2.py
new file mode 100644
index 0000000000..0bc828c4c3
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/settled2.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import asyncio
+
+
+async def settled2(session, options):
+ retries = 0
+ while retries < 3:
+ try:
+ await asyncio.wait_for(session.get("https://www.mozilla.org/en-US/"), 5)
+ break
+ except asyncio.TimeoutError:
+ retries += 1
+
+ # we just settle here for 5 minutes
+ await asyncio.sleep(options.get("sleep", 5 * 60))
+ return {}
diff --git a/testing/condprofile/condprof/scenarii/settled_youtube.py b/testing/condprofile/condprof/scenarii/settled_youtube.py
new file mode 100644
index 0000000000..b39c0874a9
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/settled_youtube.py
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import asyncio
+
+
+async def settled_youtube(session, options):
+ # nothing is done, we just settle here for 30 seconds
+ await asyncio.sleep(options.get("sleep", 5))
+ await asyncio.wait_for(
+ session.get(
+ "https://yttest.prod.mozaws.net/2020/main.html?"
+ "test_type=playbackperf-widevine-sfr-h264-test&"
+ "raptor=true&exclude=1,2&muted=true&command=run"
+ ),
+ timeout=120,
+ )
+ await asyncio.sleep(options.get("sleep", 30))
+ return {}
diff --git a/testing/condprofile/condprof/scenarii/sync.js b/testing/condprofile/condprof/scenarii/sync.js
new file mode 100644
index 0000000000..0f7b7bb90d
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/sync.js
@@ -0,0 +1,21 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const { triggerSync } = ChromeUtils.importESModule(
+ "resource://gre/modules/services-automation/ServicesAutomation.sys.mjs"
+);
+
+// Arguments is expected to be provided in the scope that this file is loaded
+// into.
+/* global arguments */
+
+let resolve = arguments[3];
+try {
+ triggerSync(arguments[0], arguments[1], arguments[2]).then(res => {
+ resolve(res);
+ });
+} catch (error) {
+ let res = { logs: {}, result: 1, result_message: error.toString() };
+ resolve(res);
+}
diff --git a/testing/condprofile/condprof/scenarii/urls.txt b/testing/condprofile/condprof/scenarii/urls.txt
new file mode 100644
index 0000000000..5dd86b024a
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/urls.txt
@@ -0,0 +1,7 @@
+# urls combined with the words list
+https://www.google.com/search?q={0}
+https://search.yahoo.com/yhs/search?p={0}
+https://www.bing.com/search?q=create+list+of+nouns{0}
+https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords={0}
+https://www.youtube.com/results?search_query={0}
+https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313.TR0.TRC0.H0.Xbottle.TRS0&_nkw={0}
diff --git a/testing/condprofile/condprof/scenarii/words.txt b/testing/condprofile/condprof/scenarii/words.txt
new file mode 100644
index 0000000000..107f65180e
--- /dev/null
+++ b/testing/condprofile/condprof/scenarii/words.txt
@@ -0,0 +1,4555 @@
+# word list from http://www.worldclasslearning.com/english/4000-most-common-english-words.html
+aardvark
+abacus
+abbey
+abdomen
+ability
+abolishment
+abroad
+abuse
+accelerant
+accelerator
+access
+accident
+accommodation
+accompanist
+accordion
+account
+accountant
+achiever
+acid
+acknowledgment
+acoustic
+acoustics
+acrylic
+act
+action
+activity
+actor
+actress
+acupuncture
+ad
+adapter
+addiction
+addition
+address
+adjustment
+administration
+adrenalin
+adult
+adulthood
+advance
+advancement
+advantage
+advertisement
+advertising
+advice
+affair
+affect
+aftermath
+afternoon
+aftershave
+aftershock
+afterthought
+age
+agency
+agenda
+agent
+aggression
+aglet
+agreement
+aid
+air
+airbag
+airbus
+airfare
+airforce
+airline
+airmail
+airplane
+airport
+airship
+alarm
+alb
+albatross
+alcohol
+alcove
+alder
+algebra
+alibi
+allergist
+alley
+alligator
+alloy
+almanac
+almond
+alpaca
+alpenglow
+alpenhorn
+alpha
+alphabet
+alternative
+altitude
+alto
+aluminium
+aluminum
+ambassador
+ambition
+ambulance
+amendment
+amount
+amusement
+anagram
+analgesia
+analog
+analogue
+analogy
+analysis
+analyst
+anatomy
+anesthesiology
+anethesiologist
+anger
+angiosperm
+angle
+angora
+angstrom
+anguish
+animal
+anime
+ankle
+anklet
+annual
+anorak
+answer
+ant
+anteater
+antechamber
+antelope
+anthony
+anthropology
+antler
+anxiety
+anybody
+anything
+anywhere
+apartment
+ape
+aperitif
+apology
+apparatus
+apparel
+appeal
+appearance
+appendix
+applause
+apple
+applewood
+appliance
+application
+appointment
+approval
+apron
+apse
+aquifer
+arch
+archaeology
+archeology
+archer
+architect
+architecture
+arch-rival
+area
+argument
+arithmetic
+arm
+armadillo
+armament
+armchair
+armoire
+armor
+arm-rest
+army
+arrival
+arrow
+art
+artichoke
+article
+artificer
+ascot
+ash
+ashram
+ashtray
+aside
+ask
+asparagus
+aspect
+asphalt
+assignment
+assist
+assistance
+assistant
+associate
+association
+assumption
+asterisk
+astrakhan
+astrolabe
+astrologer
+astrology
+astronomy
+atelier
+athlete
+athletics
+atmosphere
+atom
+atrium
+attachment
+attack
+attempt
+attendant
+attention
+attenuation
+attic
+attitude
+attorney
+attraction
+audience
+auditorium
+aunt
+author
+authorisation
+authority
+authorization
+automaton
+avalanche
+avenue
+average
+award
+awareness
+azimuth
+babe
+baboon
+babushka
+baby
+back
+backbone
+backdrop
+background
+backpack
+bacon
+bad
+badge
+badger
+bafflement
+bag
+bagel
+baggage
+bagpipe
+bail
+bait
+bake
+baker
+bakery
+bakeware
+balaclava
+balalaika
+balance
+balcony
+ball
+ballet
+balloon
+ballpark
+bamboo
+banana
+band
+bandana
+bandanna
+bandolier
+bangle
+banjo
+bank
+bankbook
+banker
+banquette
+baobab
+bar
+barbeque
+barber
+barbiturate
+barge
+baritone
+barium
+barn
+barometer
+barracks
+barstool
+base
+baseball
+basement
+basin
+basis
+basket
+basketball
+bass
+bassinet
+bassoon
+bat
+bath
+bather
+bathhouse
+bathrobe
+bathroom
+bathtub
+batter
+battery
+batting
+battle
+battleship
+bay
+bayou
+beach
+bead
+beak
+beam
+bean
+beanie
+beanstalk
+bear
+beard
+beast
+beat
+beautiful
+beauty
+beaver
+bed
+bedroom
+bee
+beech
+beef
+beer
+beet
+beetle
+beggar
+beginner
+beginning
+begonia
+behavior
+beheading
+behest
+being
+belfry
+belief
+believe
+bell
+belligerency
+bellows
+belly
+belt
+bench
+bend
+beneficiary
+benefit
+bengal
+beret
+berry
+bestseller
+best-seller
+bet
+beverage
+beyond
+bibliography
+bicycle
+bid
+bidet
+bifocals
+big
+big-rig
+bijou
+bike
+bikini
+bill
+billboard
+bin
+biology
+biplane
+birch
+bird
+birdbath
+birdcage
+birdhouse
+bird-watcher
+birth
+birthday
+bit
+bite
+bitter
+black
+blackberry
+blackboard
+blackfish
+bladder
+blade
+blame
+blank
+blanket
+blazer
+blight
+blind
+blinker
+blister
+blizzard
+block
+blocker
+blood
+bloodflow
+bloom
+bloomers
+blossom
+blouse
+blow
+blowgun
+blowhole
+blue
+blueberry
+boar
+board
+boat
+boat-building
+boatload
+boatyard
+bobcat
+body
+bog
+bolero
+bolt
+bomb
+bomber
+bondsman
+bone
+bongo
+bonnet
+bonsai
+bonus
+boogeyman
+book
+bookcase
+bookend
+booklet
+booster
+boot
+bootee
+bootie
+boots
+booty
+border
+bore
+bosom
+boss
+botany
+bother
+bottle
+bottling
+bottom
+bottom-line
+boudoir
+bough
+boundary
+bow
+bower
+bowl
+bowler
+bowling
+bowtie
+box
+boxer
+boxspring
+boy
+boyfriend
+bra
+brace
+bracelet
+bracket
+brain
+brake
+branch
+brand
+brandy
+brass
+brassiere
+bratwurst
+brave
+bread
+breadcrumb
+break
+breakfast
+breakpoint
+breast
+breastplate
+breath
+breeze
+bribery
+brick
+bricklaying
+bridge
+brief
+briefs
+brilliant
+british
+broad
+broccoli
+brochure
+broiler
+broker
+brome
+bronchitis
+bronco
+bronze
+brooch
+brood
+brook
+broom
+brother
+brother-in-law
+brow
+brown
+brush
+brushfire
+brushing
+bubble
+bucket
+buckle
+bud
+buddy
+budget
+buffer
+buffet
+bug
+buggy
+bugle
+building
+bulb
+bull
+bulldozer
+bullet
+bull-fighter
+bumper
+bun
+bunch
+bungalow
+bunghole
+bunkhouse
+burglar
+burlesque
+burn
+burn-out
+burst
+bus
+bush
+business
+bust
+bustle
+butane
+butcher
+butter
+button
+buy
+buyer
+buzzard
+cabana
+cabbage
+cabin
+cabinet
+cable
+caboose
+cacao
+cactus
+caddy
+cadet
+cafe
+caftan
+cake
+calcification
+calculation
+calculator
+calculus
+calendar
+calf
+calico
+call
+calm
+camel
+cameo
+camera
+camp
+campaign
+campanile
+can
+canal
+cancel
+cancer
+candelabra
+candidate
+candle
+candy
+cane
+cannon
+canoe
+canon
+canopy
+canteen
+canvas
+cap
+cape
+capital
+capitulation
+capon
+cappelletti
+cappuccino
+captain
+caption
+car
+caravan
+carbon
+card
+cardboard
+cardigan
+care
+career
+cargo
+carload
+carnation
+carol
+carotene
+carp
+carpenter
+carpet
+carport
+carriage
+carrier
+carrot
+carry
+cart
+cartilage
+cartload
+cartoon
+cartridge
+cascade
+case
+casement
+cash
+cashier
+casino
+casserole
+cassock
+cast
+castanet
+castanets
+castle
+cat
+catacomb
+catamaran
+catch
+category
+caterpillar
+cathedral
+catsup
+cattle
+cauliflower
+cause
+caution
+cave
+c-clamp
+cd
+ceiling
+celebration
+celeriac
+celery
+celeste
+cell
+cellar
+cello
+celsius
+cement
+cemetery
+cenotaph
+census
+cent
+center
+centimeter
+centurion
+century
+cephalopod
+ceramic
+cereal
+certification
+cesspool
+chafe
+chain
+chainstay
+chair
+chairlift
+chairman
+chairperson
+chaise
+chalet
+chalice
+chalk
+challenge
+champion
+championship
+chance
+chandelier
+change
+channel
+chaos
+chap
+chapel
+chapter
+character
+chard
+charge
+charity
+charlatan
+charles
+charm
+chart
+chastity
+chasuble
+chateau
+chauffeur
+chauvinist
+check
+checkroom
+cheek
+cheetah
+chef
+chemical
+chemistry
+cheque
+cherries
+cherry
+chess
+chest
+chick
+chicken
+chicory
+chief
+chiffonier
+child
+childhood
+children
+chill
+chime
+chimpanzee
+chin
+chino
+chip
+chipmunk
+chit-chat
+chivalry
+chive
+chocolate
+choice
+choker
+chop
+chopstick
+chord
+chowder
+chrome
+chromolithograph
+chronograph
+chronometer
+chub
+chug
+church
+churn
+cicada
+cigarette
+cinema
+circle
+circulation
+circumference
+cirrus
+citizenship
+city
+civilisation
+claim
+clam
+clank
+clapboard
+clarinet
+clasp
+class
+classic
+classroom
+clause
+clave
+clavicle
+clavier
+cleaner
+cleat
+cleavage
+clef
+cleric
+clerk
+click
+client
+cliff
+climate
+climb
+clip
+clipper
+cloak
+cloakroom
+clock
+clockwork
+clogs
+cloister
+close
+closet
+cloth
+clothes
+clothing
+cloud
+cloudburst
+cloudy
+clove
+clover
+club
+clue
+clutch
+coach
+coal
+coast
+coat
+cob
+cobweb
+cockpit
+cockroach
+cocktail
+cocoa
+cod
+code
+codon
+codpiece
+coevolution
+coffee
+coffin
+coil
+coin
+coinsurance
+coke
+cold
+coliseum
+collar
+collection
+college
+collision
+colloquia
+colon
+colonisation
+colony
+color
+colt
+column
+columnist
+comb
+combat
+combination
+combine
+comfort
+comfortable
+comic
+comma
+command
+comment
+commerce
+commercial
+commission
+committee
+common
+communicant
+communication
+community
+company
+comparison
+compassion
+competition
+competitor
+complaint
+complement
+complex
+component
+comportment
+composer
+composition
+compost
+comprehension
+compulsion
+computer
+comradeship
+concentrate
+concept
+concern
+concert
+conclusion
+concrete
+condition
+condominium
+condor
+conductor
+cone
+confectionery
+conference
+confidence
+confirmation
+conflict
+confusion
+conga
+congo
+congress
+congressman
+congressperson
+conifer
+connection
+consent
+consequence
+consideration
+consist
+console
+consonant
+conspirator
+constant
+constellation
+construction
+consul
+consulate
+contact
+contact lens
+contagion
+content
+contest
+context
+continent
+contract
+contrail
+contrary
+contribution
+control
+convection
+conversation
+convert
+convertible
+cook
+cookie
+cooking
+coonskin
+cope
+cop-out
+copper
+co-producer
+copy
+copyright
+copywriter
+cord
+corduroy
+cork
+cormorant
+corn
+corner
+cornerstone
+cornet
+corral
+correspondent
+corridor
+corruption
+corsage
+cost
+costume
+cot
+cottage
+cotton
+couch
+cougar
+cough
+council
+councilman
+councilor
+councilperson
+count
+counter
+counter-force
+countess
+country
+county
+couple
+courage
+course
+court
+cousin
+covariate
+cover
+coverall
+cow
+cowbell
+cowboy
+crab
+crack
+cracker
+crackers
+cradle
+craft
+craftsman
+crash
+crate
+cravat
+craw
+crawdad
+crayfish
+crayon
+crazy
+cream
+creative
+creator
+creature
+creche
+credenza
+credit
+creditor
+creek
+creme brulee
+crest
+crew
+crib
+cribbage
+cricket
+cricketer
+crime
+criminal
+crinoline
+criteria
+criterion
+criticism
+crocodile
+crocus
+croissant
+crook
+crop
+cross
+cross-contamination
+cross-stitch
+crotch
+croup
+crow
+crowd
+crown
+crude
+crush
+cry
+crystallography
+cub
+cuckoo
+cucumber
+cuff-links
+cultivar
+cultivator
+culture
+culvert
+cummerbund
+cup
+cupboard
+cupcake
+cupola
+curio
+curl
+curler
+currency
+current
+cursor
+curtain
+curve
+cushion
+custard
+customer
+cut
+cuticle
+cutlet
+cutover
+cutting
+cyclamen
+cycle
+cyclone
+cylinder
+cymbal
+cymbals
+cynic
+cyst
+cytoplasm
+dad
+daffodil
+dagger
+dahlia
+daisy
+damage
+dame
+dance
+dancer
+dancing
+danger
+daniel
+dare
+dark
+dart
+dash
+dashboard
+data
+database
+date
+daughter
+david
+day
+daybed
+dead
+deadline
+deal
+dealer
+dear
+death
+deathwatch
+debate
+debt
+debtor
+decade
+decimal
+decision
+deck
+declination
+decongestant
+decrease
+decryption
+dedication
+deep
+deer
+defense
+deficit
+definition
+deformation
+degree
+delay
+delete
+delight
+delivery
+demand
+demur
+den
+denim
+dentist
+deodorant
+department
+departure
+dependent
+deployment
+deposit
+depression
+depressive
+depth
+deputy
+derby
+derrick
+description
+desert
+design
+designer
+desire
+desk
+dessert
+destiny
+destroyer
+destruction
+detail
+detainment
+detective
+detention
+determination
+development
+deviance
+device
+devil
+dew
+dhow
+diadem
+diamond
+diaphragm
+diarist
+dibble
+dickey
+dictaphone
+diction
+dictionary
+diet
+difference
+differential
+difficulty
+dig
+digestion
+digger
+digital
+dignity
+dilapidation
+dill
+dime
+dimension
+dimple
+diner
+dinghy
+dinner
+dinosaur
+diploma
+dipstick
+direction
+director
+dirndl
+dirt
+disadvantage
+disarmament
+disaster
+discipline
+disco
+disconnection
+discount
+discovery
+discrepancy
+discussion
+disease
+disembodiment
+disengagement
+disguise
+disgust
+dish
+dishes
+dishwasher
+disk
+display
+disposer
+distance
+distribution
+distributor
+district
+divan
+diver
+divide
+divider
+diving
+division
+dock
+doctor
+document
+doe
+dog
+dogsled
+dogwood
+doll
+dollar
+dolman
+dolphin
+domain
+donkey
+door
+doorknob
+doorpost
+dory
+dot
+double
+doubling
+doubt
+doubter
+downforce
+downgrade
+downtown
+draft
+drag
+dragon
+dragonfly
+dragster
+drain
+drake
+drama
+dramaturge
+draw
+drawbridge
+drawer
+drawing
+dream
+dredger
+dress
+dresser
+dressing
+drill
+drink
+drive
+driver
+driveway
+driving
+drizzle
+dromedary
+drop
+drug
+drum
+drummer
+drunk
+dry
+dryer
+duck
+duckling
+dud
+due
+duffel
+dugout
+dulcimer
+dumbwaiter
+dump
+dump truck
+dune buggy
+dungarees
+dungeon
+duplexer
+dust
+dust storm
+duster
+duty
+dwarf
+dwelling
+dynamo
+eagle
+ear
+eardrum
+earmuffs
+earplug
+earrings
+earth
+earthquake
+earthworm
+ease
+easel
+east
+eat
+eave
+eavesdropper
+e-book
+ecclesia
+eclipse
+ecliptic
+economics
+economy
+ecumenist
+eddy
+edge
+edger
+editor
+editorial
+education
+edward
+eel
+effacement
+effect
+effective
+efficacy
+efficiency
+effort
+egg
+egghead
+eggnog
+eggplant
+eight
+ejector
+elbow
+election
+electricity
+electrocardiogram
+element
+elephant
+elevator
+elixir
+elk
+ellipse
+elm
+elongation
+embossing
+emergence
+emergency
+emergent
+emery
+emotion
+emphasis
+employ
+employee
+employer
+employment
+empowerment
+emu
+encirclement
+encyclopedia
+end
+endothelium
+enemy
+energy
+engine
+engineer
+engineering
+enigma
+enjoyment
+enquiry
+entertainment
+enthusiasm
+entrance
+entry
+environment
+envy
+epauliere
+epee
+ephemera
+ephemeris
+epoch
+eponym
+epoxy
+equal
+equinox
+equipment
+equivalent
+era
+e-reader
+error
+escape
+ese
+espadrille
+espalier
+essay
+establishment
+estate
+estimate
+estrogen
+estuary
+ethernet
+ethics
+euphonium
+eurocentrism
+europe
+evaluator
+evening
+evening-wear
+event
+eviction
+evidence
+evocation
+evolution
+exam
+examination
+examiner
+example
+exchange
+excitement
+exclamation
+excuse
+executor
+exercise
+exhaust
+ex-husband
+exile
+existence
+exit
+expansion
+expansionism
+experience
+expert
+explanation
+exposition
+expression
+extension
+extent
+external
+extreme
+ex-wife
+eye
+eyeball
+eyebrow
+eyebrows
+eyeglasses
+eyelash
+eyelashes
+eyelid
+eyelids
+eyeliner
+eyestrain
+face
+facelift
+facet
+facilities
+facsimile
+fact
+factor
+factory
+faculty
+fahrenheit
+fail
+failure
+fairies
+fairy
+faith
+fall
+falling-out
+fame
+familiar
+family
+fan
+fang
+fanlight
+fanny
+fanny-pack
+farm
+farmer
+fascia
+fat
+father
+father-in-law
+fatigues
+faucet
+fault
+fawn
+fax
+fear
+feast
+feather
+feature
+fedelini
+fedora
+fee
+feed
+feedback
+feel
+feeling
+feet
+felony
+female
+fen
+fence
+fencing
+fender
+ferry
+ferryboat
+fertilizer
+few
+fiber
+fiberglass
+fibre
+fiction
+fiddle
+field
+fifth
+fight
+fighter
+figure
+figurine
+file
+fill
+filly
+film
+filth
+final
+finance
+find
+finding
+fine
+finger
+fingernail
+finish
+finisher
+fir
+fire
+fireman
+fireplace
+firewall
+fish
+fishbone
+fisherman
+fishery
+fishing
+fishmonger
+fishnet
+fisting
+fix
+fixture
+flag
+flame
+flanker
+flare
+flash
+flat
+flatboat
+flavor
+flax
+fleck
+fleece
+flesh
+flight
+flintlock
+flip-flops
+flock
+flood
+floor
+floozie
+flour
+flow
+flower
+flu
+flugelhorn
+fluke
+flute
+fly
+flytrap
+foam
+fob
+focus
+fog
+fold
+folder
+following
+fondue
+font
+food
+foot
+football
+footnote
+footrest
+foot-rest
+footstool
+foray
+force
+forearm
+forebear
+forecast
+forehead
+forest
+forestry
+forever
+forgery
+fork
+form
+formal
+format
+former
+fort
+fortnight
+fortress
+fortune
+forum
+foundation
+fountain
+fowl
+fox
+foxglove
+fragrance
+frame
+fratricide
+fraudster
+frazzle
+freckle
+freedom
+freeplay
+freeze
+freezer
+freight
+freighter
+freon
+fresco
+friction
+fridge
+friend
+friendship
+frigate
+fringe
+frock
+frog
+front
+frost
+frown
+fruit
+frustration
+fuel
+fulfillment
+full
+fun
+function
+fundraising
+funeral
+funny
+fur
+furnace
+furniture
+fusarium
+futon
+future
+gaffer
+gain
+gaiters
+gale
+gall-bladder
+gallery
+galley
+gallon
+galn
+galoshes
+game
+gamebird
+gamma-ray
+gander
+gap
+garage
+garb
+garbage
+garden
+garlic
+garment
+garter
+gas
+gasoline
+gastropod
+gate
+gateway
+gather
+gauge
+gauntlet
+gazebo
+gazelle
+gear
+gearshift
+geese
+gelding
+gem
+gemsbok
+gender
+gene
+general
+genetics
+geography
+geology
+geometry
+george
+geranium
+gerbil
+geyser
+gherkin
+ghost
+giant
+gift
+gigantism
+ginseng
+giraffe
+girdle
+girl
+girlfriend
+git
+give
+glad
+gladiolus
+gland
+glass
+glasses
+glen
+glider
+gliding
+glockenspiel
+glove
+gloves
+glue
+glut
+go
+goal
+goat
+gobbler
+god
+godmother
+goggles
+go-kart
+gold
+goldfish
+golf
+gondola
+gong
+good
+goodbye
+good-bye
+goodie
+goose
+gopher
+gore-tex
+gorilla
+gosling
+gossip
+governance
+government
+governor
+gown
+grab
+grab-bag
+grade
+grain
+gram
+grammar
+grand
+granddaughter
+grandfather
+grandmom
+grandmother
+grandson
+granny
+grape
+grapefruit
+graph
+graphic
+grass
+grasshopper
+grassland
+gratitude
+gray
+grease
+great
+great-grandfather
+great-grandmother
+greek
+green
+greenhouse
+grenade
+grey
+grief
+grill
+grip
+grit
+grocery
+ground
+group
+grouper
+grouse
+growth
+guarantee
+guard
+guess
+guest
+guestbook
+guidance
+guide
+guilt
+guilty
+guitar
+guitarist
+gum
+gumshoes
+gun
+gutter
+guy
+gym
+gymnast
+gymnastics
+gynaecology
+gyro
+habit
+hacienda
+hacksaw
+hackwork
+hail
+hair
+haircut
+half
+half-brother
+half-sister
+halibut
+hall
+hallway
+hamaki
+hamburger
+hammer
+hammock
+hamster
+hand
+handball
+hand-holding
+handicap
+handle
+handlebar
+handmaiden
+handsaw
+hang
+happiness
+harbor
+harbour
+hardboard
+hardcover
+hardening
+hardhat
+hard-hat
+hardware
+harm
+harmonica
+harmony
+harp
+harpooner
+harpsichord
+hassock
+hat
+hatbox
+hatchet
+hate
+hatred
+haunt
+haversack
+hawk
+hay
+head
+headlight
+headline
+headrest
+health
+hearing
+heart
+heartache
+hearth
+hearthside
+heart-throb
+heartwood
+heat
+heater
+heaven
+heavy
+hedge
+hedgehog
+heel
+height
+heirloom
+helen
+helicopter
+helium
+hell
+hellcat
+hello
+helmet
+helo
+help
+hemp
+hen
+herb
+heron
+herring
+hexagon
+heyday
+hide
+high
+highlight
+high-rise
+highway
+hill
+hip
+hippodrome
+hippopotamus
+hire
+history
+hit
+hive
+hobbies
+hobbit
+hobby
+hockey
+hoe
+hog
+hold
+hole
+holiday
+home
+homework
+homogenate
+homonym
+honesty
+honey
+honeybee
+honoree
+hood
+hoof
+hook
+hope
+hops
+horn
+hornet
+horror
+horse
+hose
+hosiery
+hospice
+hospital
+hospitality
+host
+hostel
+hostess
+hot
+hot-dog
+hotel
+hour
+hourglass
+house
+houseboat
+housework
+housing
+hovel
+hovercraft
+howitzer
+hub
+hubcap
+hugger
+human
+humidity
+humor
+humour
+hunger
+hunt
+hurdler
+hurricane
+hurry
+hurt
+husband
+hut
+hutch
+hyacinth
+hybridisation
+hydrant
+hydraulics
+hydrofoil
+hydrogen
+hyena
+hygienic
+hyphenation
+hypochondria
+hypothermia
+ice
+icebreaker
+icecream
+ice-cream
+icicle
+icon
+idea
+ideal
+if
+igloo
+ikebana
+illegal
+image
+imagination
+impact
+implement
+importance
+impress
+impression
+imprisonment
+improvement
+impudence
+impulse
+inbox
+incandescence
+inch
+incident
+income
+increase
+independence
+independent
+index
+indication
+indigence
+individual
+industry
+inevitable
+infancy
+inflammation
+inflation
+influence
+information
+infusion
+inglenook
+ingrate
+initial
+initiative
+in-joke
+injury
+injustice
+ink
+in-laws
+inlay
+inn
+innervation
+innocence
+innocent
+input
+inquiry
+inscription
+insect
+inside
+insolence
+inspection
+inspector
+instance
+instruction
+instrument
+instrumentalist
+instrumentation
+insulation
+insurance
+insurgence
+intelligence
+intention
+interaction
+interactive
+interest
+interferometer
+interior
+interloper
+internal
+international
+internet
+interpreter
+intervenor
+interview
+interviewer
+intestine
+intestines
+introduction
+invention
+inventor
+inventory
+investment
+invite
+invoice
+iridescence
+iris
+iron
+ironclad
+irony
+island
+issue
+it
+item
+jackal
+jacket
+jaguar
+jail
+jailhouse
+jam
+james
+jar
+jasmine
+jaw
+jealousy
+jeans
+jeep
+jeff
+jelly
+jellyfish
+jet
+jewel
+jewelry
+jiffy
+job
+jockey
+jodhpurs
+joey
+jogging
+join
+joint
+joke
+jot
+journey
+joy
+judge
+judgment
+judo
+juggernaut
+juice
+jumbo
+jump
+jumper
+jumpsuit
+junior
+junk
+junker
+junket
+jury
+justice
+jute
+kale
+kamikaze
+kangaroo
+karate
+karen
+kayak
+kazoo
+keep
+kendo
+ketch
+ketchup
+kettle
+kettledrum
+key
+keyboard
+keyboarding
+keystone
+kick
+kick-off
+kid
+kidney
+kidneys
+kielbasa
+kill
+kilogram
+kilometer
+kilt
+kimono
+kind
+kindness
+king
+kingfish
+kiosk
+kiss
+kitchen
+kite
+kitten
+kitty
+kleenex
+klomps
+knee
+kneejerk
+knickers
+knife
+knife-edge
+knight
+knitting
+knot
+knowledge
+knuckle
+koala
+kohlrabi
+lab
+laborer
+labour
+lace
+lack
+lacquerware
+ladder
+lady
+ladybug
+lake
+lamb
+lamp
+lan
+lanai
+land
+landform
+landmine
+landscape
+language
+lantern
+lap
+laparoscope
+lapdog
+laptop
+larch
+larder
+lark
+laryngitis
+lasagna
+latency
+latex
+lathe
+latte
+laugh
+laughter
+laundry
+lava
+law
+lawn
+lawsuit
+lawyer
+lay
+layer
+lead
+leader
+leadership
+leading
+leaf
+league
+leaker
+learning
+leash
+leather
+leave
+leaver
+lecture
+leek
+leg
+legal
+legging
+legume
+lei
+leisure
+lemon
+lemonade
+lemur
+length
+lentil
+leprosy
+lesson
+let
+letter
+lettuce
+level
+lever
+leverage
+license
+lie
+lier
+life
+lift
+light
+lighting
+lightning
+lilac
+lily
+limit
+limo
+line
+linen
+liner
+linguistics
+link
+linseed
+lion
+lip
+lipstick
+liquid
+liquor
+lisa
+list
+listen
+literature
+litigation
+litter
+liver
+livestock
+living
+lizard
+llama
+load
+loaf
+loafer
+loan
+lobotomy
+lobster
+local
+location
+lock
+locker
+locket
+locomotive
+locust
+loft
+log
+loggia
+logic
+loincloth
+loneliness
+long
+look
+loss
+lot
+lotion
+lounge
+lout
+love
+low
+loyalty
+luck
+luggage
+lumber
+lumberman
+lunch
+luncheonette
+lunchroom
+lung
+lunge
+lute
+luttuce
+lycra
+lye
+lymphocyte
+lynx
+lyocell
+lyre
+lyric
+macadamia
+macaroni
+machine
+machinery
+macrame
+macrofauna
+maelstrom
+maestro
+magazine
+magic
+maid
+maiden
+mail
+mailbox
+mailman
+main
+maintenance
+major
+major-league
+make
+makeup
+male
+mall
+mallet
+mambo
+mammoth
+man
+management
+manager
+mandarin
+mandolin
+mangrove
+manhunt
+maniac
+manicure
+mankind
+manner
+manor
+mansard
+manservant
+mansion
+mantel
+mantle
+mantua
+manufacturer
+manx
+many
+map
+maple
+maraca
+maracas
+marble
+mare
+margin
+mariachi
+marimba
+mark
+market
+marketing
+marksman
+marriage
+marsh
+marshland
+marxism
+mascara
+mask
+mass
+massage
+master
+mastication
+mastoid
+mat
+match
+mate
+material
+math
+mathematics
+matter
+mattock
+mattress
+maximum
+maybe
+mayonnaise
+mayor
+meal
+meaning
+measles
+measure
+measurement
+meat
+mechanic
+media
+medicine
+medium
+meet
+meeting
+megaliac
+melody
+member
+membership
+memory
+men
+menorah
+mention
+menu
+mercury
+mess
+message
+metal
+metallurgist
+meteor
+meteorology
+meter
+methane
+method
+methodology
+metro
+metronome
+mezzanine
+mice
+microlending
+microwave
+mid-course
+middle
+middleman
+midi
+midline
+midnight
+midwife
+might
+migrant
+mile
+milk
+milkshake
+millennium
+millimeter
+millisecond
+mime
+mimosa
+mind
+mine
+mini
+minibus
+minimum
+minion
+mini-skirt
+minister
+minor
+minor-league
+mint
+minute
+mirror
+miscarriage
+miscommunication
+misfit
+misogyny
+misplacement
+misreading
+miss
+missile
+mission
+mist
+mistake
+mister
+miter
+mitten
+mix
+mixer
+mixture
+moat
+mobile
+moccasins
+mocha
+mode
+model
+modem
+mole
+mom
+moment
+monastery
+monasticism
+money
+monger
+monitor
+monkey
+monocle
+monotheism
+monsoon
+monster
+month
+mood
+moon
+moonscape
+moonshine
+mop
+morning
+morsel
+mortgage
+mortise
+mosque
+mosquito
+most
+motel
+moth
+mother
+mother-in-law
+motion
+motor
+motorboat
+motorcar
+motorcycle
+mound
+mountain
+mouse
+mouser
+mousse
+moustache
+mouth
+mouton
+move
+mover
+movie
+mower
+mud
+mug
+mukluk
+mule
+multimedia
+muscle
+musculature
+museum
+music
+music-box
+music-making
+mustache
+mustard
+mutt
+mycoplasma
+n
+nail
+name
+naming
+nanoparticle
+napkin
+nasty
+nation
+national
+native
+natural
+naturalisation
+nature
+neat
+necessary
+neck
+necklace
+necktie
+need
+needle
+negative
+negligee
+negotiation
+neologism
+neon
+nephew
+nerve
+nest
+net
+netball
+netbook
+netsuke
+network
+neurobiologist
+neuropathologist
+neuropsychiatry
+news
+newspaper
+newsprint
+newsstand
+nexus
+nicety
+niche
+nickel
+niece
+night
+nightclub
+nightgown
+nightingale
+nightlight
+nitrogen
+nobody
+node
+noise
+nonbeliever
+nonconformist
+nondisclosure
+nonsense
+noodle
+normal
+norse
+north
+nose
+note
+notebook
+nothing
+notice
+notify
+notoriety
+nougat
+novel
+nudge
+number
+numeracy
+numeric
+numismatist
+nurse
+nursery
+nurture
+nut
+nutrition
+nylon
+oak
+oar
+oasis
+oatmeal
+obedience
+obesity
+obi
+object
+objective
+obligation
+oboe
+observation
+observatory
+occasion
+occupation
+ocean
+ocelot
+octagon
+octave
+octavo
+octet
+octopus
+odometer
+oeuvre
+offence
+offer
+office
+officer
+official
+off-ramp
+oil
+okra
+oldie
+olive
+omega
+omelet
+oncology
+one
+onion
+open
+opening
+opera
+operation
+ophthalmologist
+opinion
+opium
+opossum
+opportunist
+opportunity
+opposite
+option
+orange
+orangutan
+orator
+orchard
+orchestra
+orchid
+order
+ordinary
+ordination
+organ
+organisation
+organization
+original
+ornament
+osmosis
+osprey
+ostrich
+other
+others
+ott
+otter
+ounce
+outback
+outcome
+outfit
+outhouse
+outlay
+output
+outrigger
+outset
+outside
+oval
+ovary
+oven
+overcharge
+overclocking
+overcoat
+overexertion
+overflight
+overnighter
+overshoot
+owl
+owner
+ox
+oxen
+oxford
+oxygen
+oyster
+pace
+pacemaker
+pack
+package
+packet
+pad
+paddle
+paddock
+page
+pagoda
+pail
+pain
+paint
+painter
+painting
+paintwork
+pair
+pajama
+pajamas
+palm
+pamphlet
+pan
+pancake
+pancreas
+panda
+panic
+pannier
+panpipe
+pansy
+panther
+panties
+pantologist
+pantology
+pantry
+pants
+pantsuit
+panty
+pantyhose
+paper
+paperback
+parable
+parachute
+parade
+parallelogram
+paramedic
+parcel
+parchment
+pard
+parent
+parentheses
+park
+parka
+parking
+parrot
+parsnip
+part
+participant
+particle
+particular
+partner
+partridge
+party
+pass
+passage
+passbook
+passenger
+passion
+passive
+past
+pasta
+paste
+pastor
+pastoralist
+pastry
+patch
+path
+patience
+patient
+patina
+patio
+patriarch
+patricia
+patrimony
+patriot
+patrol
+pattern
+pause
+pavement
+pavilion
+paw
+pawnshop
+pay
+payee
+payment
+pea
+peace
+peach
+peacoat
+peacock
+peak
+peanut
+pear
+pearl
+pedal
+peen
+peer
+peer-to-peer
+pegboard
+pelican
+pelt
+pen
+penalty
+pencil
+pendant
+pendulum
+penicillin
+pension
+pentagon
+peony
+people
+pepper
+percentage
+perception
+perch
+performance
+perfume
+period
+periodical
+peripheral
+permafrost
+permission
+permit
+perp
+person
+personal
+personality
+perspective
+pest
+pet
+petal
+petticoat
+pew
+pha
+pharmacist
+pharmacopoeia
+phase
+pheasant
+philosopher
+philosophy
+phone
+photo
+photographer
+phrase
+physical
+physics
+pianist
+piano
+piccolo
+pick
+pickax
+picket
+pickle
+picture
+pie
+piece
+pier
+piety
+pig
+pigeon
+pike
+pile
+pilgrimage
+pillbox
+pillow
+pilot
+pimp
+pimple
+pin
+pinafore
+pince-nez
+pine
+pineapple
+pinecone
+ping
+pink
+pinkie
+pinstripe
+pint
+pinto
+pinworm
+pioneer
+pipe
+piracy
+piss
+pitch
+pitching
+pith
+pizza
+place
+plain
+plan
+plane
+planet
+plant
+plantation
+planter
+plaster
+plasterboard
+plastic
+plate
+platform
+platinum
+platypus
+play
+player
+playground
+playroom
+pleasure
+pleated
+plenty
+plier
+plot
+plough
+plover
+plow
+plowman
+plume
+plunger
+plywood
+pneumonia
+pocket
+pocketbook
+pocket-watch
+poem
+poet
+poetry
+poignance
+point
+poison
+poisoning
+pole
+polenta
+police
+policeman
+policy
+polish
+politics
+pollution
+polo
+polyester
+pompom
+poncho
+pond
+pony
+poof
+pool
+pop
+popcorn
+poppy
+popsicle
+population
+populist
+porch
+porcupine
+port
+porter
+portfolio
+porthole
+position
+positive
+possession
+possibility
+possible
+post
+postage
+postbox
+poster
+pot
+potato
+potential
+potty
+pouch
+poultry
+pound
+pounding
+poverty
+powder
+power
+practice
+precedent
+precipitation
+preface
+preference
+prelude
+premeditation
+premier
+preoccupation
+preparation
+presence
+present
+presentation
+president
+press
+pressroom
+pressure
+pressurisation
+price
+pride
+priest
+priesthood
+primary
+primate
+prince
+princess
+principal
+principle
+print
+printer
+prior
+priority
+prison
+private
+prize
+prizefight
+probation
+problem
+procedure
+process
+processing
+produce
+producer
+product
+production
+profession
+professional
+professor
+profile
+profit
+program
+progress
+project
+promise
+promotion
+prompt
+pronunciation
+proof
+proof-reader
+propane
+property
+proposal
+prose
+prosecution
+protection
+protest
+protocol
+prow
+pruner
+pseudoscience
+psychiatrist
+psychoanalyst
+psychologist
+psychology
+ptarmigan
+public
+publicity
+publisher
+pudding
+puddle
+puffin
+pull
+pulley
+puma
+pump
+pumpkin
+pumpkinseed
+punch
+punctuation
+punishment
+pupa
+pupil
+puppy
+purchase
+puritan
+purple
+purpose
+purse
+push
+pusher
+put
+pvc
+pyjama
+pyramid
+quadrant
+quail
+quality
+quantity
+quart
+quarter
+quartz
+queen
+question
+quicksand
+quiet
+quill
+quilt
+quince
+quit
+quiver
+quotation
+quote
+rabbi
+rabbit
+raccoon
+race
+racer
+racing
+racism
+racist
+rack
+radar
+radiator
+radio
+radiosonde
+radish
+raffle
+raft
+rag
+rage
+rail
+railway
+raiment
+rain
+rainbow
+raincoat
+rainmaker
+rainstorm
+raise
+rake
+ram
+rambler
+ramie
+ranch
+random
+randomisation
+range
+rank
+raspberry
+rat
+rate
+ratio
+raven
+ravioli
+raw
+rawhide
+ray
+rayon
+reach
+reactant
+reaction
+read
+reading
+reality
+reamer
+rear
+reason
+receipt
+reception
+recess
+recipe
+recliner
+recognition
+recommendation
+record
+recorder
+recording
+recover
+recreation
+recruit
+rectangle
+red
+redesign
+rediscovery
+reduction
+reef
+refectory
+reference
+reflection
+refrigerator
+refund
+refuse
+region
+register
+regret
+regular
+regulation
+reindeer
+reinscription
+reject
+relation
+relationship
+relative
+relaxation
+release
+reliability
+relief
+religion
+relish
+reminder
+remote
+remove
+rent
+repair
+reparation
+repeat
+replace
+replacement
+replication
+reply
+report
+representative
+reprocessing
+republic
+reputation
+request
+requirement
+resale
+research
+reserve
+resident
+resist
+resolution
+resolve
+resort
+resource
+respect
+respite
+respond
+response
+responsibility
+rest
+restaurant
+result
+retailer
+rethinking
+retina
+retouch
+return
+reveal
+revenant
+revenge
+revenue
+review
+revolution
+revolve
+revolver
+reward
+rheumatism
+rhinoceros
+rhyme
+rhythm
+rice
+rich
+riddle
+ride
+rider
+ridge
+rifle
+right
+rim
+ring
+ringworm
+rip
+ripple
+rise
+riser
+risk
+river
+riverbed
+rivulet
+road
+roadway
+roast
+robe
+robin
+rock
+rocker
+rocket
+rocket-ship
+rod
+role
+roll
+roller
+roof
+room
+rooster
+root
+rope
+rose
+rostrum
+rotate
+rough
+round
+roundabout
+route
+router
+routine
+row
+rowboat
+royal
+rub
+rubber
+rubbish
+rubric
+ruckus
+ruffle
+rugby
+ruin
+rule
+rum
+run
+runaway
+runner
+rush
+rutabaga
+ruth
+ry
+sabre
+sack
+sad
+saddle
+safe
+safety
+sage
+sail
+sailboat
+sailor
+salad
+salary
+sale
+salesman
+salmon
+salon
+saloon
+salt
+samovar
+sampan
+sample
+samurai
+sand
+sandals
+sandbar
+sandwich
+sardine
+sari
+sarong
+sash
+satellite
+satin
+satire
+satisfaction
+sauce
+sausage
+save
+saving
+savings
+savior
+saviour
+saw
+saxophone
+scale
+scallion
+scanner
+scarecrow
+scarf
+scarification
+scene
+scenery
+scent
+schedule
+scheme
+schizophrenic
+schnitzel
+school
+schoolhouse
+schooner
+science
+scimitar
+scissors
+scooter
+score
+scorn
+scow
+scraper
+scratch
+screamer
+screen
+screenwriting
+screw
+screwdriver
+screw-up
+scrim
+scrip
+script
+sculpting
+sculpture
+sea
+seafood
+seagull
+seal
+seaplane
+search
+seashore
+seaside
+season
+seat
+second
+secret
+secretariat
+secretary
+section
+sectional
+sector
+secure
+security
+seed
+seeder
+segment
+select
+selection
+self
+sell
+semicircle
+semicolon
+senator
+senior
+sense
+sensitive
+sentence
+sepal
+septicaemia
+series
+servant
+serve
+server
+service
+session
+set
+setting
+settler
+sewer
+sex
+shack
+shade
+shadow
+shadowbox
+shake
+shakedown
+shaker
+shallot
+shame
+shampoo
+shanty
+shape
+share
+shark
+sharon
+shawl
+she
+shearling
+shears
+sheath
+shed
+sheep
+sheet
+shelf
+shell
+shelter
+sherry
+shield
+shift
+shin
+shine
+shingle
+ship
+shirt
+shirtdress
+shoat
+shock
+shoe
+shoehorn
+shoe-horn
+shoelace
+shoemaker
+shoes
+shoestring
+shofar
+shoot
+shootdown
+shop
+shopper
+shopping
+shore
+shortage
+shorts
+shortwave
+shot
+shoulder
+shovel
+show
+shower
+show-stopper
+shred
+shrimp
+shrine
+sibling
+sick
+side
+sideboard
+sideburns
+sidecar
+sidestream
+sidewalk
+siding
+sign
+signal
+signature
+signet
+significance
+signup
+silence
+silica
+silk
+silkworm
+sill
+silly
+silo
+silver
+simple
+sing
+singer
+single
+sink
+sir
+sister
+sister-in-law
+sitar
+site
+situation
+size
+skate
+skiing
+skill
+skin
+skirt
+skull
+skullcap
+skullduggery
+skunk
+sky
+skylight
+skyscraper
+skywalk
+slapstick
+slash
+slave
+sled
+sledge
+sleep
+sleet
+sleuth
+slice
+slide
+slider
+slime
+slip
+slipper
+slippers
+slope
+sloth
+smash
+smell
+smelting
+smile
+smock
+smog
+smoke
+smoking
+smuggling
+snail
+snake
+snakebite
+sneakers
+sneeze
+snob
+snorer
+snow
+snowboarding
+snowflake
+snowman
+snowmobiling
+snowplow
+snowstorm
+snowsuit
+snuggle
+soap
+soccer
+society
+sociology
+sock
+socks
+soda
+sofa
+soft
+softball
+softdrink
+softening
+software
+soil
+soldier
+solid
+solitaire
+solution
+sombrero
+somersault
+somewhere
+son
+song
+songbird
+sonnet
+soot
+soprano
+sorbet
+sorrow
+sort
+soulmate
+sound
+soup
+source
+sourwood
+sousaphone
+south
+south america
+south korea
+sow
+soy
+soybean
+space
+spacing
+spade
+spaghetti
+spandex
+spank
+spare
+spark
+sparrow
+spasm
+speaker
+speakerphone
+spear
+special
+specialist
+specific
+spectacle
+spectacles
+spectrograph
+speech
+speed
+speedboat
+spell
+spelling
+spend
+sphere
+sphynx
+spider
+spike
+spinach
+spine
+spiral
+spirit
+spiritual
+spite
+spleen
+split
+sponge
+spoon
+sport
+spot
+spotlight
+spray
+spread
+spring
+sprinter
+sprout
+spruce
+spume
+spur
+spy
+square
+squash
+squatter
+squeegee
+squid
+squirrel
+stable
+stack
+stacking
+stadium
+staff
+stag
+stage
+stain
+stair
+staircase
+stallion
+stamen
+stamina
+stamp
+stance
+stand
+standard
+standoff
+star
+start
+starter
+state
+statement
+station
+station-wagon
+statistic
+status
+stay
+steak
+steal
+steam
+steamroller
+steel
+steeple
+stem
+stencil
+step
+step-aunt
+step-brother
+stepdaughter
+step-daughter
+step-father
+step-grandfather
+step-grandmother
+stepmother
+step-mother
+stepping-stone
+steps
+step-sister
+stepson
+step-son
+step-uncle
+stew
+stick
+stiletto
+still
+stinger
+stitch
+stock
+stocking
+stockings
+stock-in-trade
+stole
+stomach
+stone
+stonework
+stool
+stop
+stopsign
+stopwatch
+storage
+store
+storey
+storm
+story
+storyboard
+story-telling
+stove
+strain
+strait
+stranger
+strap
+strategy
+straw
+strawberry
+stream
+street
+streetcar
+strength
+stress
+stretch
+strike
+string
+strip
+stroke
+structure
+struggle
+stud
+student
+studio
+study
+stuff
+stumbling
+stupid
+stupidity
+sturgeon
+style
+styling
+stylus
+subcomponent
+subconscious
+subject
+submarine
+subroutine
+subsidence
+substance
+suburb
+subway
+success
+suck
+suede
+suffocation
+sugar
+suggestion
+suit
+suitcase
+sultan
+summer
+sun
+sunbeam
+sunbonnet
+sunday
+sundial
+sunflower
+sunglasses
+sunlamp
+sunroom
+sunshine
+supermarket
+supply
+support
+supporter
+suppression
+surface
+surfboard
+surgeon
+surgery
+surname
+surprise
+surround
+survey
+sushi
+suspect
+suspenders
+sustainment
+SUV
+swallow
+swamp
+swan
+swath
+sweat
+sweater
+sweats
+sweatshirt
+sweatshop
+sweatsuit
+swedish
+sweet
+sweets
+swell
+swim
+swimming
+swimsuit
+swing
+swiss
+switch
+switchboard
+swivel
+sword
+swordfish
+sycamore
+symmetry
+sympathy
+syndicate
+synergy
+synod
+syrup
+system
+tabby
+tabernacle
+table
+tablecloth
+tabletop
+tachometer
+tackle
+tadpole
+tail
+tailor
+tailspin
+tale
+talk
+tam
+tambour
+tambourine
+tam-o'-shanter
+tandem
+tangerine
+tank
+tanker
+tankful
+tank-top
+tap
+tard
+target
+task
+tassel
+taste
+tatami
+tattler
+tattoo
+tavern
+tax
+taxi
+taxicab
+tea
+teach
+teacher
+teaching
+team
+tear
+technologist
+technology
+teen
+teeth
+telephone
+telescreen
+teletype
+television
+tell
+teller
+temp
+temper
+temperature
+temple
+tempo
+temporariness
+temporary
+temptress
+tendency
+tenement
+tennis
+tenor
+tension
+tent
+tepee
+term
+terracotta
+terrapin
+territory
+test
+text
+textbook
+texture
+thanks
+thaw
+theater
+theism
+theme
+theory
+therapist
+thermals
+thermometer
+thigh
+thing
+thinking
+thirst
+thistle
+thomas
+thong
+thongs
+thorn
+thought
+thread
+thrill
+throat
+throne
+thrush
+thumb
+thunder
+thunderbolt
+thunderhead
+thunderstorm
+tiara
+tic
+ticket
+tie
+tiger
+tight
+tights
+tile
+till
+timbale
+timber
+time
+timeline
+timeout
+timer
+timpani
+tin
+tinderbox
+tinkle
+tintype
+tip
+tire
+tissue
+titanium
+title
+toad
+toast
+today
+toe
+toenail
+toga
+togs
+toilet
+tolerance
+tom
+tomato
+tomography
+tomorrow
+tom-tom
+ton
+tone
+tongue
+tonight
+tool
+toot
+tooth
+toothbrush
+toothpaste
+toothpick
+top
+top-hat
+topic
+topsail
+toque
+torchiere
+toreador
+tornado
+torso
+tortellini
+tortoise
+tosser
+total
+tote
+touch
+tough
+tough-guy
+tour
+tourist
+towel
+tower
+town
+townhouse
+tow-truck
+toy
+trachoma
+track
+tracksuit
+tractor
+trade
+tradition
+traditionalism
+traffic
+trail
+trailer
+train
+trainer
+training
+tram
+tramp
+transaction
+transition
+translation
+transmission
+transom
+transport
+transportation
+trapdoor
+trapezium
+trapezoid
+trash
+travel
+tray
+treat
+treatment
+tree
+trellis
+tremor
+trench
+trial
+triangle
+tribe
+trick
+trigonometry
+trim
+trinket
+trip
+tripod
+trolley
+trombone
+trooper
+trouble
+trousers
+trout
+trove
+trowel
+truck
+truckit
+trumpet
+trunk
+trust
+truth
+try
+t-shirt
+tsunami
+tub
+tuba
+tube
+tugboat
+tulip
+tummy
+tuna
+tune
+tune-up
+tunic
+tunnel
+turban
+turkish
+turn
+turnip
+turnover
+turnstile
+turret
+turtle
+tussle
+tutu
+tuxedo
+tv
+twig
+twilight
+twine
+twist
+twister
+two
+type
+typewriter
+typhoon
+tyvek
+ukulele
+umbrella
+unblinking
+uncle
+underclothes
+underground
+underneath
+underpants
+underpass
+undershirt
+understanding
+underwear
+underwire
+unemployment
+unibody
+uniform
+union
+unique
+unit
+unity
+university
+upper
+upstairs
+urn
+usage
+use
+user
+usher
+usual
+utensil
+vacation
+vacuum
+vagrant
+valance
+validity
+valley
+valuable
+value
+van
+vane
+vanity
+variation
+variety
+vase
+vast
+vault
+vaulting
+veal
+vegetable
+vegetarianism
+vegetation
+vehicle
+veil
+vein
+veldt
+vellum
+velodrome
+velvet
+vengeance
+venom
+veranda
+verdict
+vermicelli
+verse
+version
+vertigo
+verve
+vessel
+vest
+vestment
+vibe
+vibraphone
+vibration
+video
+view
+villa
+village
+vineyard
+vinyl
+viola
+violence
+violet
+violin
+virginal
+virtue
+virus
+viscose
+vise
+vision
+visit
+visitor
+visor
+visual
+vitality
+vixen
+voice
+volcano
+volleyball
+volume
+voyage
+vulture
+wad
+wafer
+waffle
+waist
+waistband
+wait
+waiter
+waitress
+wake
+walk
+walker
+walkway
+wall
+wallaby
+wallet
+walnut
+walrus
+wampum
+wannabe
+war
+warden
+warlock
+warmth
+warm-up
+warning
+wash
+washbasin
+washcloth
+washer
+washtub
+wasp
+waste
+wastebasket
+watch
+watchmaker
+water
+waterbed
+waterfall
+waterskiing
+waterspout
+wave
+wax
+way
+weakness
+wealth
+weapon
+wear
+weasel
+weather
+web
+wedding
+wedge
+weed
+weeder
+weedkiller
+week
+weekend
+weekender
+weight
+weird
+welcome
+welfare
+well
+west
+western
+wet-bar
+wetsuit
+whale
+wharf
+wheat
+wheel
+whereas
+while
+whip
+whirlpool
+whirlwind
+whisker
+whiskey
+whistle
+white
+whole
+wholesale
+wholesaler
+whorl
+width
+wife
+wilderness
+wildlife
+will
+willow
+win
+wind
+windage
+wind-chime
+window
+windscreen
+windshield
+wine
+wing
+wingman
+wingtip
+winner
+winter
+wire
+wisdom
+wiseguy
+wish
+wisteria
+witch
+witch-hunt
+withdrawal
+witness
+wolf
+wombat
+women
+wonder
+wood
+woodland
+woodshed
+woodwind
+wool
+woolen
+word
+work
+workbench
+worker
+workhorse
+working
+worklife
+workshop
+world
+worm
+worry
+worth
+worthy
+wound
+wrap
+wraparound
+wrecker
+wren
+wrench
+wrestler
+wrinkle
+wrist
+writer
+writing
+wrong
+xylophone
+yacht
+yak
+yam
+yard
+yarmulke
+yarn
+yawl
+year
+yeast
+yellow
+yesterday
+yew
+yin
+yoga
+yogurt
+yoke
+you
+young
+youth
+yurt
+zampone
+zebra
+zebrafish
+zephyr
+ziggurat
+zinc
+zipper
+zither
+zone
+zoo
+zoologist
+zoology
+zoot-suit
+zucchini \ No newline at end of file