
    =wgT              	          d Z ddlZddlmZmZ g dZi ZeD ]  Zej                  d      D ]  Z	eee	<   	  dZ
dZg de
d	ed
dfde
z  dfdede
ddfde
z  dfde
z  dfde
z  dfde
z  dfde
z  dfdde
z  dfde
z  dfd e
z  d!fde
d	ed"d#fde
d	ed$d#fd%e
z  d!fd&e
z  d'fd(d)d*d+e
z  d,fde
d	ed-d.fd/e
z  d.fd0e
z  d.fde
d	ede
d1d.fde
ded1d.fd2e
z  d.fd3e
z  d.fd4de
d	ed5d.fded	e
d6d7fd8ded	ed9d:fd;d<de
d	ed=d>fd?d@dAe
z  dBfdCde
d	edDdEfde
d	edFdGfde
d	edHdIfdJdKdLez  dMfde
d	edNdOfdPe
z  dQfdRe
z  dSfdTde
d	edUdVfde
d	edUdWfdXe
z  dYfdZd[d\de
d	ed]d^fd_e
z  d`fdae
z  dbfdede
dcddfde
d	ededffde
d	edgdhfdie
z  djfdkez  dlfdme
z  dnfdoe
z  dpfdede
dqdrfdse
z  dtfdudve
z  dwfdxde
d	edydzfd{e
z  d|fd}e
z  d~fde
z  dfdez  dfde
z  dfde
z  dfdede
ddfdde
z  dfde
z  dfde
d	eddfdede
ddfde
d	eddfde
d	eddfde
z  dfdez  dfde
z  dfde
d	eddfde
z  dfdddde
z  dfde
d	eddfde
d	edd.fde
z  dfde
z  dfde
z  dfde
z  dfde
d	eddfde
z  d.fde
z  dfde
z  dfde
z  dfdez  dfde
z  dfde
z  dfde
d	ede
ddfdede
ddfde
d	ede
ddfde
z  dfde
d	eddfde
z  dfdőZdZg Z ed ee      ez  dz         D ]Q  Zeez  Zedz   ez  Zdj'                  dɄ  eeee       D              Zej-                   ej.                  e             S dʄ Zy)a   
Contains the variations() function for expanding an English word into multiple
variations by programatically adding and removing suffixes.

Translated to Python from the ``com.sun.labs.minion.lexmorph.LiteMorph_en``
class of Sun's `Minion search engine <https://minion.dev.java.net/>`_.
    N)xrange	iteritems(F  azFabandoner abandon abandons abandoned abandoning abandonings abandonerszabdomen abdomensaboutabovez#acid acids acidic acidity aciditiesacrossz"act acts acted acting actor actorszad adsz=add adds added adding addings addition additions adder adderszladvertise advertises advertised advertising advertiser advertisers advertisement advertisements advertisingsafteragainagainstagoallalmostalongalreadyalsoalthoughzalumna alumnae alumnus alumnialwaysz
amen amens	amidshipszamid amidstzamong amongstanzanalysis analysesandzanother other otherszantenna antennas antennaezantitheses antithesisanyzanyone anybodyanythingzappendix appendixes appendicesaproposzaquarium aquariums aquariazFargument arguments argue argues argued arguing arguings arguer arguersz9arise arises arose arisen ariser arisers arising arisingsaroundasasbestosatzatlas atlasesz8auger augers augered augering augerings augerer augererszaaugment augments augmented augmenting augmentings augmentation augmentations augmenter augmenterszautomata automaton automatonsz<automation automating automate automates automated automaticavoirdupoiszUawake awakes awoke awaked awoken awaker awakers awaking awakings awakening awakeningsawayzawful awfully awfulnesszaxis axes axiseszbacillus bacillizbacterium bacteriazbad worse worst badly badnessbaszbases basiszcbases base based basing basings basely baseness basenesses basement basements baseless basic basicsz be am are is was were been beingz5bear bears bore borne bearing bearings bearer bearersz1beat beats beaten beating beatings beater beatersbecausezbecome becomes became becomingz beef beefs beeves beefed beefingz
beer beersbeforez@begin begins began begun beginning beginnings beginner beginnerszbehalf behalveszbeing beingsz/bend bends bent bending bendings bender benderszNbereave bereaves bereaved bereft bereaving bereavings bereavement bereavementszbeside besideszbest bests bested bestingzbet bets betting bettor bettorsbetimesbetweenbeyondz4bid bids bade bidden bidding biddings bidder biddersz
bier biersz0bind binds bound binding bindings binder binderszbit bitsz1bite bites bit bitten biting bitings biter biterszblackfoot blackfeetz5bleed bleeds bled bleeding bleedings bleeder bleedersz5blow blows blew blown blowing blowings blower blowerszbookshelf bookshelvesbothzBbound bounds bounded bounding boundings bounder bounders boundlesszbourgeois bourgeoisiezbra braszbrahman brahmansz=break breaks broke broken breaking breakings breaker breakersz5breed breeds bred breeding breedings breeder breedersz8bring brings brought bringing bringings bringer bringersz6build builds built building buildings builder builderszRbus buses bused bussed busing bussing busings bussings buser busers busser bussersz2buss busses bussed bussing bussings busser bussersbutz+buy buys bought buying buyings buyer buyersbyz2calf calves calved calving calvings calver calversz/can cans canned canning cannings canner cannerszcan could cannotz5canoes canoe canoed canoeing canoeings canoer canoersz8catch catches caught catching catchings catcher catchersz?cement cements cemented cementing cementings cementer cementersz
cent centsz7center centers centered centering centerings centerlessz,child children childless childish childishlyz?choose chooses chose chosen choosing choosings chooser choosersz6cling clings clung clinging clingings clinger clingersz colloquium colloquia colloquiumsz+come comes came coming comings comer comerszFcomment comments commented commenting commentings commenter commentersz compendium compendia compendiumszicomplement complements complemented complementing complementings complementer complementers complementaryzicompliment compliments complimented complimenting complimentings complimenter complimenters complimentaryzconcerto concertos concertizcondiment condimentscorpsz!cortex cortices cortexes corticalcouscousz=creep creeps crept creeping creepings creeper creepers creepyzcrisis criseszcriterion criteria criterialzcryptanalysis cryptanalysesz+curriculum curricula curriculums curricularz
datum datazday days dailyz0deal deals dealt dealing dealings dealer dealersz`decrement decrements decremented decrementing decrementings decrementer decrementers decrementalz
deer deerszdemented dementiazdesideratum desiderataz<diagnosis diagnoses diagnose diagnosed diagnosing diagnosticzdialysis dialysesz,dice dices diced dicing dicings dicer dicerszdie dicezdie dies died dying dyingsz,dig digs dug digging diggings digger diggersz1dive dives diver divers dove dived diving divingszVdivest divests divester divesters divested divesting divestings divestment divestmentsz(do does did done doing doings doer doerszvdocument documents documented documenting documentings documenter documenters documentation documentations documentaryzdoe doesz
dove doves
downstairsdozenz5draw draws drew drawn drawing drawings drawer drawersz<drink drinks drank drunk drinking drinkings drinker drinkerszDdrive drives drove driven driving drivings driver drivers driverlesszdue dues dulyduringeeachz4eager eagerer eagerest eagerly eagerness eagernesseszearly earlier earliestzeasement easementsz.eat eats ate eaten eating eatings eater eaterszeffluvium effluviaeitherzelement elements elementaryzelf elves elfenz1ellipse ellipses elliptic elliptical ellipticallyz2ellipsis ellipses elliptic elliptical ellipticallyelsezembolus emboli embolic embolismzemolument emolumentszemphasis emphasesziemploy employs employed employing employer employers employee employees employment employments employableenoughz#equilibrium equilibria equilibriumszerratum errataeverevery
everythingz$exotic exotically exoticness exoticazxexperiment experiments experimented experimenting experimentings experimenter experimenters experimentation experimentalzextra extrasz6fall falls fell fallen falling fallings faller fallerszfar farther farthestzfee fees feelessz.feed feeds fed feeding feedings feeder feedersz/feel feels felt feeling feelings feeler feelerszaferment ferments fermented fermenting fermentings fermentation fermentations fermenter fermenterszfew fewer fewestz7fight fights fought fighting fightings fighter fighterszfigment figmentszfilament filamentsz0find finds found finding findings finder finderszfirmament firmamentsz flee flees fled fleeing fleeingsz6fling flings flung flinging flingings flinger flingersz
floe floesz=fly flies flew flown flying flyings flier fliers flyer flyerszMfocus foci focuses focused focusing focusses focussed focussing focuser focalz?foment foments fomented fomenting fomentings fomenter fomentersz	foot feetz(foot foots footed footing footer footerszfooting footings footer footersforzLforbid forbids forbade forbidden forbidding forbiddings forbidder forbidderszBforesee foresaw foreseen foreseeing foreseeings foreseer foreseersz:forest forests forester foresting forestation forestationszUforget forgets forgot forgotten forgetting forgettings forgetter forgetters forgetfulzIforsake forsakes forsook forsaken forsaking forsakings forsaker forsakersz8found founds founded founding foundings founder founderszjfragment fragments fragmented fragmenting fragmentings fragmentation fragmentations fragmenter fragmentersz@free frees freer freest freed freeing freely freeness freenessesz?freeze freezes froze frozen freezing freezings freezer freezersfromzfull fully fuller fullestz1fuller fullers full fulls fulled fulling fullingszfungus fungi funguses fungalgallowsz%ganglion ganglia ganglions ganglioniczgarment garmentsz1gas gasses gassed gassing gassings gasser gassersz gas gases gasses gaseous gaslessz/gel gels gelled gelling gellings geller gellersz?german germans germanic germany German Germans Germanic Germanyz3get gets got gotten getting gettings getter gettersz1give gives gave given giving givings giver giversz;gladiolus gladioli gladioluses gladiola gladiolas gladiolaezglans glandesz;gluiness gluey glue glues glued gluing gluings gluer gluersz)go goes went gone going goings goer goerszgodchild godchildrenz+good better best goodly goodness goodnessesgoodszgoose geesez3goose gooses goosed goosing goosings gooser gooserszgrandchild grandchildrenz7grind grinds ground grinding grindings grinder grinderszJground grounds grounded grounding groundings grounder grounders groundlessz<grow grows grew grown growing growings grower growers growthz/gum gums gummed gumming gummings gummer gummerszhalf halvesz3halve halves halved halving halvings halver halversz6hang hangs hung hanged hanging hangings hanger hangersz(have has had having havings haver haverszhe him his himselfz0hear hears heard hearing hearings hearer hearersherez1hide hides hid hidden hiding hidings hider hidersz'hippopotamus hippopotami hippopotamusesz/hold holds held holding holdings holder holdersz honorarium honoraria honorariumsz/hoof hoofs hooves hoofed hoofing hoofer hoofershowz/hum hums hummed humming hummings hummer hummerszhymen hymens hymenalzrhypotheses hypothesis hypothesize hypothesizes hypothesized hypothesizer hypothesizing hypothetical hypotheticallyizif iffyzimpediment impedimentszsimplement implements implemented implementing implementings implementation implementations implementer implementersz9imply implies implied implying implyings implier implierszin inner	inclementznincrement increments incremented incrementing incrementings incrementer incrementers incremental incrementallyz9index indexes indexed indexing indexings indexer indexersz*index indexes indices indexical indexicalszindoor indoorszinstrument instruments instrumented instrumenting instrumentings instrumenter instrumenters instrumentation instrumentations instrumentalzintegument integumentaryintozit its itselfjavaz
july julysz/keep keeps kept keeping keepings keeper keepersz3knife knifes knifed knifing knifings knifer kniferszknife knivesz?know knows knew known knowing knowings knower knowers knowledgeznlament laments lamented lamenting lamentings lamentation lamentations lamenter lamenters lamentable lamentablyzlarva larvae larvas larvalz!late later latest lately latenesszlatter latterlyz!lay lays laid laying layer layersz'layer layers layered layering layeringsz9lead leads led leading leadings leader leaders leaderlessz1leaf leafs leafed leafing leafings leafer leaferszleaf leaves leaflessz1leave leaves left leaving leavings leaver leaversz/lend lends lent lending lendings lender lenderszless lesser leastzlet lets letting lettingsz"lie lies lay lain lying lier lierszlie lies lied lying liar liarszlife lives lifelesszdlight lights lit lighted lighting lightings lightly lighter lighters lightness lightnesses lightlesszlikely likelier likeliestzlimen limenszlineament lineamentszliniment linimentszlive alive livingzlive lives lived living livingszliver liversz1loaf loafs loafed loafing loafings loafer loaferszloaf loaveszlogic logics logical logicallyz/lose loses lost losing loser losers loss lossesz
louse licezlumen lumensz+make makes made making makings maker makersz man mans manned manning manningszman menz:manly manlier manliest manliness manful manfulness manhoodzmanic manicallyz5manner manners mannered mannerly mannerless mannerfulmanyzmatrix matrices matrixesz	may mightzGmaximum maxima maximums maximal maximize maximizes maximized maximizingz8mean means meant meaning meanings meaningless meaningfulz.mean meaner meanest meanly meanness meannesseszmedian medians medianly medialzmedium media mediumszmeet meets met meeting meetingsz memorandum memoranda memorandumszmere merelyzmetal metals metalliczmight mighty mightilyz)millenium millennia milleniums millennialz,mine mines mined mining minings miner minerszmine my our ourszminimum minima minimums minimalzminus minuseszFmiscellaneous miscellanea miscellaneously miscellaneousness miscellanyz?molest molests molested molesting molestings molester molesterszmoment momentszmonument monuments monumentalz	more mostzmouse mice mouselessmuchzumultiply multiplies multiplier multipliers multiple multiples multiplying multiplyings multiplication multiplicationsz/mum mums mummed mumming mummings mummer mummersz
must mustsneitherznemeses nemesisz$neurosis neuroses neurotic neuroticsnomennoneznos no noesnotznothing nothings nothingnessnownowadaysz nucleus nuclei nucleuses nuclearz7number numbers numbered numbering numberings numberlessz<nutriment nutriments nutrient nutrients nutrition nutritionszoasis oaseszoctopus octopi octopusesofoffzIoffer offers offered offering offerings offerer offerers offeror offerorsoften
oftentimeszointment ointmentsz
omen omensononceonlyzfornament ornaments ornamented ornamenting ornamentings ornamentation ornamenter ornamenters ornamentalzoutdoor outdoorszoutlay outlaysz?outlie outlies outlay outlied outlain outlying outlier outlierszovum ovazox oxenzparentheses parenthesisz$parliament parliaments parliamentaryz'passerby passer-by passersby passers-byz
past pastszGpay pays paid paying payings payer payers payee payees payment paymentsperperhapszperson persons peoplezphenomenon phenomena phenomenalpizDpicnic picnics picnicker picnickers picnicked picnicking picnickingszapigment pigments pigmented pigmenting pigmentings pigmenter pigmenters pigmentation pigmentationszplease pleases pleased pleasing pleasings pleaser pleasers pleasure pleasures pleasuring pleasurings pleasant pleasantly pleasureless pleasurefulzplus pluses plusseszpolyhedra polyhedron polyhedralzFpriest priests priestly priestlier priestliest priestliness priestlesszprognosis prognoseszprostheses prosthesiszIprove proves proved proving provings proofs proof prover provers provablez(psychosis psychoses psychotic psychoticsqedz8quiz quizzes quizzed quizzing quizzings quizzer quizzersraimentratherrezreal reallyz8redo redoes redid redone redoing redoings redoer redoerszYregiment regiments regimented regimenting regimenter regimenters regimentation regimental
rendezvouszFrequiz requizzes requizzed requizzing requizzings requizzer requizzersz;ride rides rode ridden riding ridings rider riders ridelessz=ring rings rang rung ringing ringings ringer ringers ringlessz1rise rises rose risen rising risings riser risersz
rose roseszrudiment rudiments rudimentaryz/rum rums rummed rumming rummings rummer rummersz,run runs ran running runnings runner runnersz sacrament sacraments sacramentalzsame samenesssansz1saw saws sawed sawn sawing sawings sawyer sawyersz)say says said saying sayings sayer sayerszscarf scarfs scarves scarflesszschema schemata schemasz;sediment sediments sedimentary sedimentation sedimentationsz+see sees saw seen seeing seeings seer seersz1seek seeks sought seeking seekings seeker seekerszasegment segments segmented segmenting segmentings segmenter segmenters segmentation segmentationszself selves selflessz/sell sells sold selling sellings seller sellerssemenz/send sends sent sending sendings sender sendersz sentiment sentiments sentimentalserieszset sets setting settingszseveral severallyz/sew sews sewed sewn sewing sewings sewer sewerszsewer sewers sewerlessz9shake shakes shook shaken shaking shakings shaker shakerszshall shouldzshaman shamanszDshave shaves shaved shaven shaving shavings shaver shavers shavelesszshe her hers herselfzsheaf sheaves sheaflesssheepzCshelf shelves shelved shelfing shelvings shelver shelvers shelflesszCshine shines shined shone shining shinings shiner shiners shinelessz<shoe shoes shoed shod shoeing shoeings shoer shoers shoelessz5shoot shoots shot shooting shootings shooter shootersz
shot shotsz7show shows showed shown showing showings shower showersz!shower showers showery showerlesszOshrink shrinks shrank shrunk shrinking shrinkings shrinker shrinkers shrinkablesidewayszsimply simple simpler simplestsincez=sing sings sang sung singing singings singer singers singablez=sink sinks sank sunk sinking sinkings sinker sinkers sinkablez,sit sits sat sitting sittings sitter sittersz:ski skis skied skiing skiings skier skiers skiless skiablez	sky skiesz5slay slays slew slain slaying slayings slayer slayersz@sleep sleeps slept sleeping sleepings sleeper sleepers sleeplesssosome	somethingzsometime sometimessoonzspa spasz=speak speaks spoke spoken speaking speakings speaker speakerszspecies speciezspectrum spectra spectrumsz=speed speeds sped speeded speeding speedings speeder speedersz@spend spends spent spending spendings spender spenders spendablez3spin spins spun spinning spinnings spinner spinnerszspoke spokeszXspring springs sprang sprung springing springings springer springers springy springinessz?staff staffs staves staffed staffing staffings staffer staffersz%stand stands stood standing standingszstasis stasesz=steal steals stole stolen stealing stealings stealer stealersz6stick sticks stuck sticking stickings sticker stickerszGstigma stigmata stigmas stigmatize stigmatizes stigmatized stigmatizingzstimulus stimuliz6sting stings stung stinging stingings stinger stingersz<stink stinks stank stunk stinking stinkings stinker stinkerszstomach stomachszstratum strata stratumszBstride strides strode stridden striding stridings strider striderszHstring strings strung stringing stringings stringer stringers stringlesszAstrive strives strove striven striving strivings striver striverszHstrum strums strummed strumming strummings strummer strummers strummablesuchzJsuffer suffers suffered suffering sufferings sufferer sufferers sufferablezsuggest suggests suggested suggesting suggestings suggester suggesters suggestor suggestors suggestive suggestion suggestions suggestible suggestablez/sum sums summed summing summings summer summersz,summer summers summered summering summeringszsupplement supplements supplemented supplementing supplementings supplementation supplementer supplementers supplementary supplementalz@supply supplies supplied supplying supplyings supplier suppliersz<swear swears swore sworn swearing swearings swearer swearersz6sweep sweeps swept sweeping sweepings sweeper sweepersz/swell swells swelled swollen swelling swellingszAswim swims swam swum swimming swimmings swimmer swimmers swimableswinez6swing swings swung swinging swingings swinger swingerszsyllabus syllabi syllabuseszsymposium symposia symposiumszsynapse synapseszsynapsis synapseszsynopsis synopseszsynthesis synthesesztableau tableaux tableausz9take takes took taken taking takings taker takers takablezBteach teaches taught teaching teachings teacher teachers teachablez=tear tears tore torn tearing tearings tearer tearers tearableztegument tegumentsz8tell tells told telling tellings teller tellers tellablez6temperament temperaments temperamental temperamentallyztenement tenementsthezthere theresztheses thesisz!they them their theirs themselvesz thief thieves thieving thievingsz8think thinks thought thinking thinker thinkers thinkablezthis that these thosez&thought thoughts thougtful thoughtlesszGthrow throws threw thrown throwing throwings thrower throwers throwableztic ticsz5tie ties tied tying tyings tier tiers tieable tielessz1tier tiers tiered tiering tierings tierer tiererstoz/toe toes toed toeing toeings toer toers toelessztogether togethernesstooztooth teeth toothlessztopaz topazeszRtorment torments tormented tormenting tormentings tormenter tormenters tormentableztoward towardsz=tread treads trod trodden treading treadings treader treadersz'tread treads treadless retread retreadsztrue truly truenessztwo twosuunderzLunderlay underlays underlaid underlaying underlayings underlayer underlayerszEunderlie underlies underlay underlain underlying underlier underlierszAundo undoes undid undone undoing undoings undoer undoers undoablezunrest unrestfuluntiluntoupuponupstairsz-use uses user users used using useful uselesszvarious variouslyzvehement vehemently vehemenceversusveryz8visit visits visited visiting visitings visitor visitorszvortex vortexes vorticeszbwake wakes woke waked woken waking wakings waker wakers wakeful wakefulness wakefulnesses wakeablez=wear wears wore worn wearing wearings wearer wearers wearablez/weather weathers weathered weathering weatherlyzAweave weaves wove woven weaving weavings weaver weavers weaveablez/weep weeps wept weeping weepings weeper weeperszwharf wharfs wharveszwhere whereszwhereas whereaseszwhether whethersz"while whiles whilst whiled whilingz8whiz whizzes whizzed whizzing whizzings whizzer whizzerszwho whom whos whose whoseszwhy whyszwife wives wifelessz*will wills willed willing willings willfulz
will wouldz5win wins won winning winnings winner winners winnablez9wind winds wound winding windings winder winders windablezwind winds windy windlesswithwithinwithoutzwolf wolveszwoman women womanless womanlyz'wound wounds wounded wounding woundingszDwrite writes wrote written writing writings writer writers writeablez	yeses yeszyet yetszyou your yours yourself aeiouybcdfghjklmnpqrstvwxyz[z].*[z](iness)zFy,ies,ier,iers,iest,ied,ying,yings,ily,inesses,iment,iments,iless,ifulz[%s].*(eless)zXe,es,er,ers,est,ed,ing,ings,eing,eings,ely,eness,enesses,ement,ements,eness,enesses,efulz][z][bdgklmnprt]?(less)z=,s,&er,&ers,&est,&ed,&ing,&ings,ly,ness,nesses,ment,ments,fulz[%s].*?(less)z7,s,er,ers,est,ed,ing,ings,ly,ness,nesses,ment,ments,fulz[%s].*(eness)zJe,es,er,ers,est,ed,ing,ings,eing,eings,ely,enesses,ement,ements,eless,efulz[%s].*(ness)z7,s,er,ers,est,ed,ing,ings,ly,nesses,ment,ments,less,fulz[%s]ssz<es,er,ers,est,ed,ing,ings,ly,ness,nesses,ment,ments,less,fulz[%s].*(ous)zly,ness)z(ies)zy,ie,yer,yers,ier,iers,iest,ied,ying,yings,yness,iness,ieness,ynesses,inesses,ienesses,iment,iement,iments,iements,yless,iless,ieless,yful,iful,iefulz[%s].*(sis)z1ses,sises,sisness,sisment,sisments,sisless,sisfulz
[%s].*(is)zes,ness,ment,ments,less,fulz[%s].*[cs]h(es)zf,e,er,ers,est,ed,ing,ings,ly,ely,ness,eness,nesses,enesses,ment,ement,ments,ements,less,eless,ful,efulz](izes)zhize,izes,izer,izers,ized,izing,izings,ization,izations,ise,iser,isers,ised,ising,isings,isation,isationsz](ises)z[%s].*[jsxz](es)z[%s].*dg(es)zMe,er,ers,est,ed,ing,ings,ely,eness,enesses,ment,ments,ement,ements,eless,eful)ze(s),*)z
segment(s)rv   )z
pigment(s)rv   z[%s].*dg(ments)zment,*mentsz	]iment(s)rv   z[%s].*ment(s)z[%s].*er(s)z][bdglmnprt](s)z[%s].*ing(s)z[%s].*ll(s))za(s):,er,ers,est,ed,ing,ings,ly,ness,nesses,ment,ments,less,fulz].*(s)z](s)rw   )zss() z1234567890](s)rx   )zappl(e)Ces,er,ers,est,ed,ing,ings,ely,eness,enesses,ement,ements,eless,eful)zsuppl(e)ry   z]l(e)zEes,er,ers,est,ed,ing,ings,y,ely,eness,enesses,ement,ements,eless,eful)z(ie)zQies,ier,iers,iest,ied,ying,yings,iely,ieness,ienesses,iement,iements,ieless,ieful)zye()z7s,r,rs,st,d,ing,ings,ly,ness,nesses,ment,ments,less,fulz[%s].*dg(e)zWes,er,ers,est,ed,ing,ings,ely,eness,enesses,ment,ments,less,ful,ement,ements,eless,eful)zu(e)zees,er,ers,est,ed,ing,ings,eing,eings,ly,ely,eness,enesses,ment,ments,less,ful,ement,ements,eless,efulz](ize)ziizes,izer,izers,ized,izing,izings,ization,izations,ise,ises,iser,isers,ised,ising,isings,isation,isationsz](ise)ziize,izes,izer,izers,ized,izing,izings,ization,izations,ises,iser,isers,ised,ising,isings,isation,isationsz](e)zNes,er,ers,est,ed,ing,ings,eing,eings,ely,eness,enesses,ement,ements,eless,eful)zree(d)zGds,der,ders,ded,ding,dings,dly,dness,dnesses,dment,dments,dless,dful,,*)zee(d)zDds,der,ders,ded,ding,dings,dly,dness,dnesses,dment,dments,dless,dfulz	[%s](ied)zuy,ie,ies,ier,iers,iest,ying,yings,ily,yly,iness,yness,inesses,ynesses,iment,iments,iless,iful,yment,yments,yless,yfulz	].*l(led)zz,s,er,ers,est,ing,ings,ly,ness,nesses,ment,ments,less,ful,&,&s,&er,&ers,&est,&ing,&ings,&y,&ness,&nesses,&ment,&ments,&fulz[%s].*l(led)z@&,&s,&er,&ers,&est,&ing,&ings,&y,&ness,&nesses,&ment,&ments,&fulz[%s].*s(sed)zH&,&es,&er,&ers,&est,&ing,&ings,&ly,&ness,&nesses,&ment,&ments,&less,&ful)z)[%s][%s](?P<ed1>[bdgklmnprt])((?P=ed1)ed)z>,s,&er,&ers,&est,&ing,&ings,ly,ness,nesses,ment,ments,less,fulz](ized)zhizes,izer,izers,ize,izing,izings,ization,izations,ise,ises,iser,isers,ised,ising,isings,isation,isationszhize,izes,izer,izers,ized,izing,izings,ization,izations,ises,iser,isers,ise,ising,isings,isation,isationsz
[%s].*(ed)zh,e,s,es,er,ers,est,ing,ings,ly,ely,ness,eness,nesses,enesses,ment,ement,ments,ements,less,eless,ful,eful)zed()As,&er,&ers,&est,&ed,&ing,&ings,ly,ness,nesses,ment,ments,less,ful)zmeter()7s,er,ers,ed,ing,ings,ly,ness,nesses,ment,ments,less,ful)zeer()zeers,eered,eering,eerings,eerly,eerness,eernesses,eerment,eerments,eerless,eerful,ee,ees,eest,eed,eeing,eeings,eely,eeness,eenesses,eement,eements,eeless,eeful,eerer,eerers,eerestz](ier)zy,ie,ies,iest,ied,ying,yings,ily,yly,iness,yness,inesses,ynesses,yment,yments,yless,yful,iment,iments,iless,iful,iers,iered,iering,ierings,ierly,ierness,iernesses,ierment,ierments,ierless,ierful,ierer,ierers,ierestz[%s].*l(ler)z&,&s,&est,&ed,&ing,&ings,ly,lely,&ness,&nesses,&ment,&ments,&ful,&ers,&ered,&ering,&erings,&erly,&erness,&ernesses,&erments,&erless,&erfulz[%s].*s(ser)z&,&es,&est,&ed,&ing,&ings,&ly,&ness,&nesses,&ment,&ments,&less,&ful,&ers,&ered,&ering,&erings,&erly,&erness,&ernesses,&erment,&erments,&erless,&erfulz!](?P<er1>[bdgkmnprt])((?P=er1)er)zs,&est,&ed,&ing,&ings,ly,ness,nesses,ment,ments,less,ful,&ers,&ered,&ering,&erings,&erly,&erness,&ernesses,&erments,&erless,&erfulz](izer)zhizes,ize,izers,ized,izing,izings,ization,izations,ise,ises,iser,isers,ised,ising,isings,isation,isationsz](iser)zhize,izes,izer,izers,ized,izing,izings,ization,izations,ises,ise,isers,ised,ising,isings,isation,isationsz
[%s].*(er)z,e,s,es,est,ed,ing,ings,ly,ely,ness,eness,nesses,enesses,ment,ments,less,ful,ement,ements,eless,eful,ers,ered,erred,ering,erring,erings,errings,erly,erness,ernesses,erment,erments,erless,erful,erer,erers,erest,errer,errers,errestz
[%s](iest)zYy,ies,ier,iers,ied,ying,yings,ily,yly,iness,yness,inesses,ynesses,iment,iments,iless,ifulz[%s].*l(lest)z?&,&s,&er,&ers,&ed,&ing,&ings,ly,&ness,&nesses,&ment,&ments,&fulz[%s].*s(sest)zG&,&es,&er,&ers,&ed,&ing,&ings,&ly,&ness,&nesses,&ment,&ments,&less,&fulz%](?P<est1>[bdglmnprst])((?P=est1)est)z=,s,&er,&ers,&ed,&ing,&ings,ly,ness,nesses,ment,ments,less,fulz[%s].*([cs]h|[jsxz])(est)ze,es,er,ers,ed,ing,ings,ly,ely,ness,eness,nesses,enesses,ment,ments,less,ful,ement,ements,eless,eful,ests,ester,esters,ested,esting,estings,estly,estness,estnesses,estment,estments,estless,estful)zer(est)ze,es,er,ers,ed,eing,eings,ely,eness,enesses,ement,ements,eless,eful,ests,ester,esters,ested,esting,estings,estly,estness,estnesses,estment,estments,estless,estfulz[%s].*(est)z,e,s,es,er,ers,ed,ing,ings,ly,ely,ness,eness,nesses,enesses,ment,ments,less,ful,ement,ements,eless,eful,ests,ester,esters,ested,esting,estings,estly,estness,estnesses,estment,estments,estless,estful)estr{   z](iful)zifully,ifulness,*yz[%s].*(ful)zfully,fulness,,*z[%s].*(ical)zic,ics,icallyz
[%s].*(ic)zics,ical,icallyz
[%s](ying)z_yings,ie,y,ies,ier,iers,iest,ied,iely,yly,ieness,yness,ienesses,ynesses,iment,iments,iless,ifulz[%s].*l(ling)z?,*,&,&s,&er,&ers,&est,&ed,&ings,&ness,&nesses,&ment,&ments,&fulz[%s].*s(sing)zF&,&s,&er,&ers,&est,&ed,&ings,&ly,&ness,&nesses,&ment,&ments,&less,&fulz%](?P<ing1>[bdgklmnprt])((?P=ing1)ing)z=,s,&er,&ers,&est,&ed,&ings,ly,ness,nesses,ment,ments,less,ful)zeeing()zPee,ees,eer,eers,eest,eed,eeings,eely,eeness,eenesses,eement,eements,eeless,eefulz[%s].*(eing)zBe,es,er,ers,est,ed,eings,ely,eness,enesses,ement,ements,eless,efulz[%s].*y(ing)z>,s,er,ers,est,ed,ings,ly,ingly,ness,nesses,ment,ments,less,fulz][eio]t(ing)zk,*,*e,ings,inger,ingers,ingest,inged,inging,ingings,ingly,ingness,ingnesses,ingment,ingments,ingless,ingfulz][bdgklmt](ing)zY*e,ings,inger,ingers,ingest,inged,ingly,ingness,ingnesses,ingment,ingments,ingless,ingfulz](izing)zgizes,izer,izers,ized,ize,izings,ization,izations,ise,ises,iser,isers,ised,ising,isings,isation,isationsz](ising)zgize,izes,izer,izers,ized,izing,izings,ization,izations,ises,iser,isers,ised,ise,isings,isation,isationsz[%s][cgsvz](ing)zh*e,ings,inger,ingers,ingest,inged,inging,ingings,ingly,ingness,ingnesses,ingment,ingments,ingless,ingfulz[%s][clsuv](ing)z[%s].*[lr]g(ing)z][bdfjkmnpqrtwxz](ing)zh,*,ings,inger,ingers,ingest,inged,inging,ingings,ingly,ingness,ingnesses,ingment,ingments,ingless,ingfulz[%s].*(ing))z(ing)zeings,inger,ingers,ingest,inged,inging,ingings,ingly,ingness,ingnesses,ingment,ingments,ingless,ingful)z(man)zXman,mens,mener,meners,menest,mened,mening,menings,menly,menness,mennesses,menless,menful)zsegment|pigmentz,s,ed,ing,ings,er,ers,ly,ness,nesses,less,fulz[%s].*dg(ment)z*ez](iment)z*yz](ment)z[%s]o();s,er,ers,est,ed,ing,ings,ly,ness,nesses,ment,ments,less,fulz	[%s].*o()z>s,es,er,ers,est,ed,ing,ings,ly,ness,nesses,ment,ments,less,fulz
[%s].*(um)z`a,ums,umer,ummer,umers,ummers,umed,ummed,uming,umming,umings,ummings,umness,umments,umless,umfulz[%s].*b(ly)zOle,les,ler,lers,lest,led,ling,lings,leness,lenesses,lement,lements,leless,lefulz](ily)zVy,ies,ier,iers,iest,ied,ying,yings,yness,iness,ynesses,inesses,iment,iments,iless,ifulz[%s].*ful(ly)z[%s].*l(ly)zY,*,lies,lier,liers,liest,lied,lying,lyings,liness,linesses,liment,liments,liless,liful,*lz[%s](ly)zSlies,lier,liers,liest,lied,lying,lyings,liness,linesses,liment,liments,liless,lifulz
[%s].*(ly)zG,*,lies,lier,liers,liest,lied,lying,lyings,liness,linesses,lyless,lyfulz[%s](y)zpies,ier,iers,iest,ied,ying,yings,ily,yness,iness,ynesses,inesses,iment,iments,iless,iful,yment,yments,yless,yfulz[%s]y()z[%s].*(ch|sh|[jxz])()z][bdglmnprt]()zXs,er,ers,est,ed,ing,ings,&er,&ers,&est,&ed,&ing,&ings,ly,ness,nesses,ment,ments,less,fulrz   z]ma(ta)z",s,tas,tum,tums,ton,tons,tic,ticalz
[%s].*t(a)zas,ae,um,ums,on,ons,ic,icalz](a)z/as,aed,aing,ae,ata,um,ums,on,ons,al,atic,aticalz
[%s].*ll()z;s,er,ers,est,ed,ing,ings,y,ness,nesses,ment,ments,-less,ful)z[%s].*()r}         |c              #   :   K   | ]  \  }}d |d|d   d  yw)z(?P<_g>r   z)$N ).0r<   rs      K/var/www/horilla/myenv/lib/python3.12/site-packages/whoosh/lang/morph_en.py	<genexpr>r   }  s'      @1a +,QqT2 @s   c           
      8   | t         v rt         |    j                  d      S t        t              D ]Z  \  }}|j	                  |       }|st        t        |j                               D cg c]  \  }}||j                  d      r| c}}d   dd       }|j                         D cg c]  }||	 }}|d   }	|	r| ddt        |	      z
   n| }
t        | f      }t        |t        z  |z      d   }|j                  d      D ]w  }|j                  d	      r|j                  |
|
d   z   |dd z          2|j                  d
      r!|j                  t!        |
|dd z                d|j                  |
|z          y t        |      c S  | gS c c}}w c c}w )aF  Given an English word, returns a collection of morphological variations
    on the word by algorithmically adding and removing suffixes. The variation
    list may contain non-words (e.g. render -> renderment).

    >>> variations("pull")
    set(['pull', 'pullings', 'pullnesses', 'pullful', 'pullment', 'puller', ... ])
    rr   N_gr      r   ,&*)_exdictsplit	enumerate_partitionssearchintr   	groupdict
startswithgroupslensetrules_partition_sizeaddunion
variations)wordr<   pmatchkvnumgr   endingrootoutresultsresults                 r   r   r     s    wt}""3''+& 1Yu/@%A @TQ-ALL,>  @@ACCD2G HC "'AA1=aAFABZF-34(S[)Dtg,CA/#56q9G!--, +$$S)GGD48OfQRj89&&s+IIjqr
):;<GGD6M*+ s8O+. 6M'@ Bs   ,F+F3F)__doc__rU   whoosh.compatr   r   
exceptionsr   exlistr   exvowelsconsr   r   r   r   r   startendjoinr   patternappendcompiler   r       r   <module>r      s   
 +G	

R  Fll3  
Q	 #)$
/1y	z	Q	 V
#%  
AQ	 -1&
9;z	{Q	 V
#%^	_Q	 V
#%q	rQ	 F
"$]	^Q	  f
\	]!Q	$ 6
!9	-%Q	( 
m)Q	, 6
!#V	W-Q	0 &
 "?	@1Q	2 v
%  (P  
Q3Q	6 "(
.  1[  
\7Q	: "(
.  1[  
\;Q	> 
&  )Q  
R?Q	B F
"$s	tCQ	F 
GQ	J 
KQ	N 
OQ	R v
%}	5SQ	V $*4
0$	7WQ	Z V
#T	*[Q	^ 6
!4	(_Q	b .4T6
BD	IcQ	f (.t
4d	;gQ	j F
"D	)kQ	n 6
!4	(oQ	r 
QsQ	v !'
-t	4wQ	z #F
+-i	j{Q	~ 
Q	B )-d
3R	8CQ	L 
]MQ	P 
^QQ	T  &t
,.u	vUQ	X 
hYQ	\ 
N]Q	` 6
!#|	}aQ	d 
|eQ	h !'
-  0[  
\iQ	l !'
-  0[  
\mQ	p %d
+-}	~qQ	z 
`{Q	~ 
\Q	B 
   W  
XCQ	F $*4
0  3o  
pGQ	J F
"$f	gKQ	N F
"$n	oOQ	R 
zSQ	V "(
.  1[  
\WQ	Z "(
.  1[  
\[Q	^ &
   #M  
N_Q	b 
XcQ	l 
QmQ	p 
KqQ	t !'
-  0H  
IuQ	x F
"  %q  
ryQ	| F
"  %|  
}}Q	@ :>v
F  IM  
NAQ	D "(
.  1[  
\EQ	H "(
.  1[  
\IQ	L &
   #J  
KMQ	V $
 {	|WQ	Z V
#%f	g[Q	^ V
#%n	o_Q	b >B6
J  ML  
McQ	f '
/  2w  
xgQ	j 
|kQ	n 6
!  $l  
moQ	r 
MsQ	| "(
.0D	E}Q	@ 6
!#5	6AQ	H F
"O	4IQ	P &
 "3	4QQ	Z $
  !B  
C[Q	^ V
#%f	g_Q	b V
#%m	ncQ	f >B6
J  ML  
MgQ	j 
jkQ	n F
"$h	ioQ	r F
"$d	esQ	v '-d
3  6c  
dwQ	z (,V
4  7R  
S{Q	~ #)$
/  2[  
\Q	B #)$
/  2[  
\CQ	F 
&  )S  
TGQ	J 
$  'Q  
RKQ	N 
&  )S  
TOQ	R 17
=  @j  
kSQ	V 6
!  $Q  
RWQ	Z 
}[Q	f 
pgQ	p 
NqQ	t f
$d	+uQ	x #)$
/	6yQ	| "(
.	5}Q	F v
\	]GQ	J 
!a	bKQ	T &
   #E  
FUQ	^ 6
!#t	u_Q	b !'
-  0H  
IcQ	f V
#T	*gQ	j 6
!#~	kQ	n 
 u	voQ	r &
 "k	lsQ	v t
  P  
QwQ	z v
\	]{Q	D #V
+-k	lEQ	H -3D&
A  D^  
_IQ	L '+F
35x	yMQ	P &,T6
:<`	aQQ	T &
 "?	@UQ	X %d
+-^	_YQ	\ &
 "_	`]Q	` 
VaQ	n 	3u:014	5 ,AEq5O
#Chh @#,U5-=#>@ @Gzrzz'*+,#r   